Thread: DataType OID for PQexecParams-call in libpq

DataType OID for PQexecParams-call in libpq

From
"Jan Klostermann"
Date:
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



Re: DataType OID for PQexecParams-call in libpq

From
Gergely Czuczy
Date:
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
>



Re: DataType OID for PQexecParams-call in libpq

From
Tom Lane
Date:
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


Re: DataType OID for PQexecParams-call in libpq

From
Mark Richardson
Date:

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!

Re: DataType OID for PQexecParams-call in libpq

From
"Richardson Mark"
Date:
<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>