OK well your argument basically appears to be "table reflection is  
dumb, nobody should ever use it" and therefore "information_schema  
shouldnt care about supporting it".

regarding reflection, as it turns out i am not a huge fan of it  
either, as its true constraints can be turned off in databases, an  
application should have its own concept of the "logical" schema of  
data, etc., but I can certainly understand the overwhelming desire  
for this feature, particularly when scripting up (python *IS* a  
scripting language, after all) something for testing or one-off  
purposes.

anyway, this would support the notion that information_schema is just  
a broken concept for the purposes of table reflection.

On Jun 6, 2006, at 2:15 PM, William K. Volkman wrote:

> On Tue, 2006-06-06 at 10:43, Michael Bayer wrote:
>> On Jun 5, 2006, at 11:50 PM, William K. Volkman wrote:
>>
>>> Users of the tables, particularly web applications, are
>>> only granted the minimum SQL privileges necessary for their
>>> tasks.  The capability to execute DDL operations would
>>> specifically be prohibited.  It is only in small personal
>>> type projects or, at most, initial development that that type
>>> of interaction would occur.  For most deployed applications
>>> the "db.create(table)" would/should never (for security
>>> reasons) be possible.
>>
>> you understand that the issue is not involving DDL operations at all,
>> it merely involves that a user, who has select access to a particular
>> table, should be able to view information about the columns and
>> constraints that comprise that table, right ?
>
> Actually, from a security stand point, possibly/probably not.
>> From the deployed application stand point, being able to
> query table attributes also doesn't make much sense.
> Only from the generic database interface application does
> it make sense, and those types of applications tend to
> be niche ones.  Once an application is designed, the tables
> and columns don't change much, why do they need to be able
> to queried?  If suddenly the arglbargle column is added
> to a table would the deployed application really be able
> to do something meaningful with it?
>
>>   it makes no sense that
>> information_schema will reveal the names and datatypes of a
>> particular table's columns to a user, but not its primary key
>> constraints.  are you saying this is by design ?
>
> In theory the primary key and other constraints should be of
> no interest to most application programs.  The fact that
> the database engine can change them at any time, even during
> the duration of a long running application, applications
> are required to not depend on that information.
> The fact that they've gone to the trouble to constrain certain
> fields to only be visible to the table owner
> indicates that they've done it on purpose.  I.E. As Owner:
>
> sat=# select column_name, column_default
> from information_schema.columns
> where table_name = 'departments';
>    column_name   |                    column_default
> ----------------- 
> +-------------------------------------------------------
>  department_id   | nextval 
> ('public.departments_department_id_seq'::text)
>  department_name |
>
> As a non-owner:
>    column_name   | column_default
> -----------------+----------------
>  department_id   |
>  department_name |
>
> One reasoning probably lies in commercial deployment of the
> database.  Don't permit the users to reverse engineer the
> database or give out information that could be used to break
> it.
>
> btw.  I'm playing devil's advocate here, from a agile programming
> perspective we're interested in these things.  However stepping
> back from a incremental development perspective to the finished
> application one, there is no longer the need to dynamically
> query this information.  Plus we have the problem of when
> to query and how often to update it.
>
> Consider this, if my application at start up retrieves the
> default values for a column and then explicitly executes
> those defaults instead of letting the DB backend do it,
> then in a long running application the DBA has lost capability.
> Perhaps the default value for a column changes based on
> time of day.
>
> Web applications exacerbate the problem, something that
> starts up, does something, then shuts down.  Do we really
> want/need the overhead of fetching table and column
> information each time?
>
> Cheers,
> William.
>
>



_______________________________________________
Sqlalchemy-users mailing list
Sqlalchemy-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users

Reply via email to