Thread: BUG #2395: Can't get right type oid by PQftype.
The following bug has been logged online: Bug reference: 2395 Logged by: wangshj Email address: wangshj@sduept.com PostgreSQL version: 8.1.3 Operating system: CentOS release 4.3 (Final) Description: Can't get right type oid by PQftype. Details: I create a domain type testdomainoid. CREATE DOMAIN testdomainoid int CHECK(value >20); In my database,the type oid of testdomainoid is 16385.But PQftype return 23 for testdomainoid's type oid.How could I get the testdomainoid's type oid. --Creating a table use domain type. CREATE TABLE test_domain_oid ( col testdomainoid ); --Insert a value. INSERT INTO test_domain_oid VALUES (30); //following is my test code. #include <iostream> #include "libpq-fe.h" #include <sstream> int main(int argc, char ** argv){ PGconn * conn = PQconnectdb(""); if( CONNECTION_OK != PQstatus(conn ) ) { std::cout << "\nCan't connecte to db\n"; return 0; } PGresult * r = PQexec( conn, "SELECT col FROM test_domain_oid " ); if( PGRES_TUPLES_OK == PQresultStatus(r) ) { Oid id = PQftype( r, 0 ); int mod = PQfmod( r, 0 ); std::cout<<"\noid: " << id<<"\nmod:" << mod <<std::endl; } else { std::cout << "\nQuery failed..\n"; return 0; } PQclear( r ); PQfinish( conn ); };
On Apr 14 06:30, wangshj wrote: > In my database,the type oid of testdomainoid is 16385. But PQftype return 23 > for testdomainoid's type oid. PQftype() returns the OID of the actual _type_ used in the domain. Therefore, you get 23, OID of the int4/int type, in the above query. > How could I get the testdomainoid's type oid. Simply by querying pg_type catalog: SELECT oid FROM pg_catalog.pg_type WHERE typname = 'testdomainoid'; Regards.
Volkan YAZICI <yazicivo@ttnet.net.tr> writes: > On Apr 14 06:30, wangshj wrote: >> In my database,the type oid of testdomainoid is 16385. But PQftype return 23 >> for testdomainoid's type oid. > PQftype() returns the OID of the actual _type_ used in the domain. > Therefore, you get 23, OID of the int4/int type, in the above query. Yeah, this is considered a feature not a bug. In fact the original implementation just returned the domain's OID, and that was objected to because most client programs wouldn't recognize it. regards, tom lane
Tom Lane 写道: > > Yeah, this is considered a feature not a bug. In fact the original > > implementation just returned the domain's OID, and that was objected > > to because most client programs wouldn't recognize it. > > > > > How to disable this feature ?