Thread: DataType OID for PQexecParams-call in libpq
Hello all! I would be very thankful, if you could help me out! To call the PQexecParams() function I need to provide a field with the data types of the parameters as type OID. OID is a number, but which numbers correspond to with datatype ? Where are they documented? Or how can I find out about this data type codes? I scanned trough almost the whole documentation but could not find anything. The examples just skip the problem by using simple strings and auto-detection. Any help would be very appreciated! Thanks in advance. Jan Klostermann
hello please take a look at the documentation at http://www.postgresql.org/docs/7.4/static/libpq-exec.html at the point "PQftype", where it's said: " The OIDs of the built-in data types are defined in the file src/include/catalog/pg_type.h in the source tree." Bye, Gergely Czuczy mailto: phoemix@harmless.hu PGP: http://phoemix.harmless.hu/phoemix.pgp The point is, that geeks are not necessarily the outcasts society often believes they are. The fact is that society isn't cool enough to be included in our activities. On Tue, 16 Mar 2004, Jan Klostermann wrote: > Hello all! > > I would be very thankful, if you could help me out! > > To call the PQexecParams() function I need to provide a field with the > data types of the parameters as type OID. OID is a number, but which > numbers correspond to with datatype ? > Where are they documented? Or how can I find out about this data type > codes? > > I scanned trough almost the whole documentation but could not find > anything. The examples just skip the problem by using simple strings and > auto-detection. > > Any help would be very appreciated! Thanks in advance. > > Jan Klostermann > > > ---------------------------(end of broadcast)--------------------------- > TIP 9: the planner will ignore your desire to choose an index scan if your > joining column's datatypes do not match >
Gergely Czuczy <phoemix@harmless.hu> writes: > please take a look at the documentation at > http://www.postgresql.org/docs/7.4/static/libpq-exec.html > at the point "PQftype", where it's said: > " The OIDs of the built-in data types are defined in the file > src/include/catalog/pg_type.h in the source tree." Also, you can get the OID on the fly, eg withSELECT oid FROM pg_type WHERE typname = ... For standard built-in types it's okay to hard-wire OID values into your code, but if you want to be able to deal with user-defined types you shouldn't rely on the OID being constant. regards, tom lane
Tom Lane writes:
>>
Gergely Czuczy <phoemix ( at ) harmless ( dot ) hu> writes:>> please take a look at the documentation at
>> <http://www.postgresql.org/docs/7.4/static/libpq-exec.html>
>> at the point "PQftype", where it's said:
>> " The OIDs of the built-in data types are defined in the file
>> src/include/catalog/pg_type.h in the source tree."
>Also, you can get the OID on the fly, eg with
> SELECT oid FROM pg_type WHERE typname = ...
> For standard built-in types it's >okay to hard-wire OID values into your
> code, but if you want to be able to deal with user-defined types you
> shouldn't rely on the OID being constant.
> regards, tom lane The pg_type.h file has all sorts of other stuff in it - so including it while coding a client I makes a mess - I would like to have access to the "standard" values (especially since OID's are used in the libpq C interface for select). So, the select statement "select oid from pg_type where typename=.." can't be processed because you need to know the oid of the value coming back from that select statement (never ending loop!). I would love to see something like pg_oid_type.h that is something like this.. enum OID_TYPES { BOOLOID=16, BYTEAOID=17, CHAROID=18, ... } so that its easy to get the value of a specific oid, but you can also type cast easily (or have an array of the OID_TYPES). I know this doesn't handle the user defined types, but I think it would be very helpfull (or some defines for the pg_type.h file so that we can get just the oids, and not everything else for a client). My 2 cents
Do you Yahoo!?
New and Improved Yahoo! Mail - 100MB free storage!
<p><font face="Arial" size="2">Tom Lane writes:</font><br /><font face="Arial" size="2">>></font><font face="TimesNew Roman">Gergely Czuczy <phoemix ( at ) harmless ( dot ) hu> writes:</font><br /><font face="Times NewRoman">>> please take a look at the documentation at </font><br /><font face="Times New Roman">>><u> </u></font><u><fontcolor="#0000FF" face="Times New Roman"><<a href="http://www.postgresql.org/docs/7.4/static/libpq-exec.html">http://www.postgresql.org/docs/7.4/static/libpq-exec.html</a>></font></u><font face="TimesNew Roman"> </font><br /><font face="Times New Roman">>> at the point "PQftype", where it's said: </font><br/><font face="Times New Roman">>> " The OIDs of the built-in data types are defined in the file </font><br/><font face="Times New Roman">>> src/include/catalog/pg_type.h in the source tree." </font><p><font face="TimesNew Roman">>Also, you can get the OID on the fly, eg with</font><br /><font face="Times New Roman">> SELECToid FROM pg_type WHERE typname = ...</font><br /><font face="Times New Roman">> For standard built-in types it's>okay to hard-wire OID values into your </font><br /><font face="Times New Roman">> code, but if you want to beable to deal with user-defined types you</font><br /><font face="Times New Roman">> shouldn't rely on the OID beingconstant.</font><br /><font face="Times New Roman">> regards, tom lane </font><p><font face="Arial" size="2">Thepg_type.h file has all sorts of other stuff in it - so including it while coding a client I makes a mess - Iwould like to have access to the "standard" values (especially since OID's are used in the libpq C interface for select). So, the select statement "select oid from pg_type where typename=.." can't be processed because you need to knowthe oid of the value coming back from that select statement (never ending loop!). I would love to see something likepg_oid_type.h that is something like this..</font><p><font face="Arial" size="2">enum OID_TYPES</font><br /><font face="Arial"size="2">{</font><br /><font face="Arial" size="2"> BOOLOID=16,</font><br /><font face="Arial" size="2"> BYTEAOID=17,</font><br/><font face="Arial" size="2"> CHAROID=18,</font><br /><font face="Arial" size="2">...</font><br /><fontface="Arial" size="2">}</font><br /><font face="Arial" size="2">so that its easy to get the value of a specific oid,but you can also type cast easily (or have an array of the OID_TYPES). I know this doesn't handle the user defined types,but I think it would be very helpfull (or some defines for the pg_type.h file so that we can get just the oids, andnot everything else for a client).</font><p><font face="Arial" size="2">My 2 cents</font><br /><font face="Arial" size="2">Mark</font><fontsize="3"><br /><br /> ********************************************************************************<br/> This message is intended only for theuse of the Addressee and may<br /> contain information that is PRIVILEGED and CONFIDENTIAL.<br /><br /> If you are notthe intended recipient, you are hereby notified that any<br /> dissemination of this communication is strictly prohibited.If you have<br /> received this communication in error, please erase all copies of the<br /> message and its attachmentsand notify Space Imaging immediately.<br /> ********************************************************************************<br/></font>