On Mon, 17 Dec 2012, LacaK wrote:

But original question AFAIU was about: what should GetTableNames return (schema query can return multiple columns, but what column use when fill list of table names)?
GetTableNames return list of table names into TStrings.
Now only TABLE_NAME is returned. John requested, that also schema name should be prefixed (if there is any)

Ah, that was not clear to me :-)

But why the SCHEMA_TABLE_NAME ? It's redundant information, as the
information is present in SCHEMA_NAME and TABLE_NAME anyway ?
*Yes is redundant

Redundancy is bad in data :)

A different story is the GetTableNames call, which will - presumably - use
the above information.

*Yes it is point of story ... GetTableNames call GetDBInfo which calls SetSchemaInfo and in loop fills TStrings with provided AReturnField Field.

*
There I think some extra options are needed:

TSchemaOption = (soPrependSchemaName,soIncludeSystemObjects);
TSchemaOptions = set of TSchemaOption;

Procedure GetTableNames(List : TStrings; Options : TSchemaOptions = []);

*possible, but introduces incompatibility with Delphi, where GetTableNames is declared like now in FPC (GetTableNames(List: TStrings; SystemTables: Boolean) + other overloads)
So SystemTables is there already ...

There is no need for incompatibility ?

We keep the call as it exists now, and redirect it to the new call with the extended options. We do this in several places in the RTL/FCL already.

The idea is to offer more options, this way there is no need for custom
solutions. Everyone benefits.

Michael.
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to