diff --git a/fcl/db/sqldb/postgres/pqconnection.pp b/fcl/db/sqldb/postgres/pqconnection.pp index 193672e44b..0d049e63b4 100644 --- a/fcl/db/sqldb/postgres/pqconnection.pp +++ b/fcl/db/sqldb/postgres/pqconnection.pp @@ -30,6 +30,8 @@ type Nr : string; end; + { TPQConnection } + TPQConnection = class (TSQLConnection) private FCursorCount : word; @@ -59,6 +61,7 @@ type function StartdbTransaction(trans : TSQLHandle; AParams : string) : boolean; override; procedure RollBackRetaining(trans : TSQLHandle); override; procedure UpdateIndexDefs(var IndexDefs : TIndexDefs;TableName : string); override; + function GetSchemaInfoSQL(SchemaType : TSchemaType; SchemaObjectName, SchemaPattern : string) : string; override; public constructor Create(AOwner : TComponent); override; published @@ -85,12 +88,14 @@ ResourceString const Oid_Bool = 16; Oid_Text = 25; + Oid_Oid = 26; Oid_Name = 19; Oid_Int8 = 20; Oid_int2 = 21; Oid_Int4 = 23; Oid_Float4 = 700; Oid_Float8 = 701; + Oid_Unknown = 705; Oid_bpchar = 1042; Oid_varchar = 1043; Oid_timestamp = 1114; @@ -300,6 +305,7 @@ begin Oid_varchar,Oid_bpchar, Oid_name : Result := ftstring; Oid_text : REsult := ftmemo; + Oid_oid : Result := ftInteger; Oid_int8 : Result := ftLargeInt; Oid_int4 : Result := ftInteger; Oid_int2 : Result := ftSmallInt; @@ -310,6 +316,9 @@ begin Oid_Time : Result := ftTime; Oid_Bool : Result := ftBoolean; Oid_Numeric : Result := ftBCD; + Oid_Unknown : Result := ftUnknown; + else + Result := ftUnknown; end; end; @@ -689,5 +698,41 @@ begin qry.free; end; +function TPQConnection.GetSchemaInfoSQL(SchemaType: TSchemaType; + SchemaObjectName, SchemaPattern: string): string; + +var s : string; + +begin + case SchemaType of + 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'; + + stSysTables : s := 'select '+ + 'relfilenode as recno, '+ + '''' + DatabaseName + ''' as catalog_name, '+ + ''''' as schema_name, '+ + 'relname as table_name, '+ + '0 as table_type '+ + 'from '+ + 'pg_class '+ + 'where '+ + 'relkind=''r''' + + 'order by relname'; + else + DatabaseError(SMetadataUnavailable) + end; {case} + result := s; +end; + end.