> If table_info doesn't return the string you need to use, then you do
> need a method to convert what table_info does supply into a format that
> you can use.
table_info, like most (if not all) meta-fata methods returns returls as a
recordset, with the seperate portions of the identifier represneted as
distinct columns, hence no need to delimit the identifier.  This is standard
across every DBMS and API I have come across.

Providing the quote_identifiers functionality (and other features such as
quote, tables and chopblanks) makes DBI what it is, a more useful and more
platform independant than any other DB API I know.  You don't need to use this
extra functionality if you don't want to.  

> If
> DBD::Informix is told to quote one of those names, however it was
> obtained, and the DELIMIDENT variable is not set (was not set when the
> connection was created), then blindly quoting the name can lead to the
> wrong results:
> 
>         WHERE "column name with blanks" > 'abc'
But the quote_identifiers method should not blindly quote the name.  The DBD
should take account of the current state for the underlying DBMS's DELIMITED
variabel (or equivalent) and take appropriate action.

> I'm still not sure that if table_info and/or tables does not return the
> correct syntax (and pointedly ignore anything that cannot be handled
> correctly), then you will run into trouble.
table_info() works correctly: there is no need to quote distinct identifiers.

Currently, tables() does not work correctly as it returns a hacked complex
identifier.  The proposed method, if implented properly, at the DBD level
would fix things for tables() and any other method that needs to build complex
identifiers.


>  Another nasty - what about
> a regular table name that has column names that must be quoted.  A
> simple perusal of the tables part of the system catalog is not
> sufficient.
I don't understand this.  How can a table name have column names?

--
  Simon Oliver

Reply via email to