[fpc-pascal] Re: SQLDB GetSchemaInfoSQL for indexes etc?

michael.vancanneyt at wisa.be michael.vancanneyt at wisa.be
Tue Apr 17 11:36:33 CEST 2012



On Tue, 17 Apr 2012, Reinier Olislagers wrote:

> On 17-4-2012 10:36, Reinier Olislagers wrote:
>> In sqldb, this:
>>
>> type TSchemaType = (stNoSchema, stTables, stSysTables, stProcedures,
>> stColumns, stProcedureParams, stIndexes, stPackages);
>> is used in the GetSchemaInfoSQL function:
>>
>> I noticed stIndexes, stProcedureParams and stPackages do not seem to be
>> used in the current sqldb connectors in packages\fcl-db\src\sqldb\ and
>> below.
>>
>> The others are used in GetSchemaInfoSQL to get an SQL command that
>> returns the names of the objects (tables etc): e.g. tables:
>> Firebird:
>> s := 'select '+
>>                           'rdb$relation_id          as recno, '+
>>                           '''' + DatabaseName + ''' as catalog_name, '+
>>                           '''''                     as schema_name, '+
>>                           'rdb$relation_name        as table_name, '+
>>                           '0                        as table_type '+
>>                         'from '+
>>                           'rdb$relations '+
>>                         'where '+
>>                           '(rdb$system_flag = 0 or rdb$system_flag is
>> null) ' + // and rdb$view_blr is null
>>                         'order by rdb$relation_name';
>> MS SQL Server:
> const SCHEMA_QUERY='select name as %s from sysobjects where type=''%s''
> order by 1';
>> Result := format(SCHEMA_QUERY, ['table_name','U']);
> PostgreSQL:
>    stTables     : s := 'select '+
>                          'relfilenode              as recno, '+
>                          '''' + DatabaseName + ''' as catalog_name, '+
>                          '''''                     as schema_name, '+
>                          'relname                  as table_name, '+
>                          '0                        as table_type '+
>                        'from '+
>                          'pg_class '+
>                        'where '+
>                          '(relowner > 1) and relkind=''r''' +
>                        'order by relname';
>
>
> Ooops, comparing these, it seems there is some kind of standard result
> set that the MSSQL Connector does not follow as it returns only a single
> name column.
> I'll update the mssqlconn connector when I get to it.
>
> Is there any further documentation on the required output, e.g. the
> table_type? recno presumably is unique id, catalog_name, schema_name are
> presumably ISO catalog/schema, table_name is the name of the table.

Presumably, yes.

Joost should be able to answer these questions in more detail.

Michael.



More information about the fpc-pascal mailing list