|
Say I'm writing an extension X, and I want to process data values from
another extension that creates type Y (e.g. an hstore), what's the best way to determine the Oid of type Y in my module X code? SPI code that runs "select 'something'::Y" and then examines the oid in SPI_tuptable? Or do we have a utility function I have missed that, given a type name and the current search path will give me back the type Oid? cheers andrew -- Sent via pgsql-hackers mailing list ([hidden email]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers |
|
On 22 February 2012 18:00, Andrew Dunstan <[hidden email]> wrote:
> Say I'm writing an extension X, and I want to process data values from > another extension that creates type Y (e.g. an hstore), what's the best way > to determine the Oid of type Y in my module X code? SPI code that runs > "select 'something'::Y" and then examines the oid in SPI_tuptable? Or do we > have a utility function I have missed that, given a type name and the > current search path will give me back the type Oid? Does this help? test=# SELECT pg_typeof('4834.34'::numeric)::oid; pg_typeof ----------- 1700 (1 row) -- Thom -- Sent via pgsql-hackers mailing list ([hidden email]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers |
|
Thom Brown <[hidden email]> wrote:
> Does this help? > > test=# SELECT pg_typeof('4834.34'::numeric)::oid; > pg_typeof > ----------- > 1700 > (1 row) Wouldn't it be easier to do this instead? test=# SELECT 'numeric'::regtype::oid; oid ------ 1700 (1 row) -Kevin -- Sent via pgsql-hackers mailing list ([hidden email]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers |
|
On 22 February 2012 18:34, Kevin Grittner <[hidden email]> wrote:
> Thom Brown <[hidden email]> wrote: >> Does this help? >> >> test=# SELECT pg_typeof('4834.34'::numeric)::oid; >> pg_typeof >> ----------- >> 1700 >> (1 row) > > Wouldn't it be easier to do this instead? > > test=# SELECT 'numeric'::regtype::oid; > oid > ------ > 1700 > (1 row) Well I may have misread the problem. I thought it was that for a particular data value, the oid of the type of that value was needed. -- Thom -- Sent via pgsql-hackers mailing list ([hidden email]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers |
|
On 02/22/2012 01:36 PM, Thom Brown wrote: > On 22 February 2012 18:34, Kevin Grittner<[hidden email]> wrote: >> Thom Brown<[hidden email]> wrote: >>> Does this help? >>> >>> test=# SELECT pg_typeof('4834.34'::numeric)::oid; >>> pg_typeof >>> ----------- >>> 1700 >>> (1 row) >> Wouldn't it be easier to do this instead? >> >> test=# SELECT 'numeric'::regtype::oid; >> oid >> ------ >> 1700 >> (1 row) > Well I may have misread the problem. I thought it was that for a > particular data value, the oid of the type of that value was needed. Maybe I need to be more clear. The C code I'm writing will process composites. I want to cache the Oids of certain non-builtin types in the function info's fn_extra, and then be able to test whether or not the fields in the composites are of those types. cheers andrew -- Sent via pgsql-hackers mailing list ([hidden email]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers |
|
Andrew Dunstan <[hidden email]> writes:
> Maybe I need to be more clear. The C code I'm writing will process > composites. I want to cache the Oids of certain non-builtin types in the > function info's fn_extra, and then be able to test whether or not the > fields in the composites are of those types. What's your basis for identifying those types in the first place? Name? Doesn't seem terribly robust if the other extension can be installed in some random schema. But anyway, something in parser/parse_type.c ought to help you with that --- maybe parseTypeString? regards, tom lane -- Sent via pgsql-hackers mailing list ([hidden email]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers |
|
On 02/22/2012 03:20 PM, Tom Lane wrote: > Andrew Dunstan<[hidden email]> writes: >> Maybe I need to be more clear. The C code I'm writing will process >> composites. I want to cache the Oids of certain non-builtin types in the >> function info's fn_extra, and then be able to test whether or not the >> fields in the composites are of those types. > What's your basis for identifying those types in the first place? > Name? Doesn't seem terribly robust if the other extension can be > installed in some random schema. But anyway, something in > parser/parse_type.c ought to help you with that --- maybe > parseTypeString? > > Thanks, that might do the trick. I fully agree it's not bulletproof, but I'm not sure what alternative there is. cheers andrew -- Sent via pgsql-hackers mailing list ([hidden email]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers |
|
Andrew Dunstan <[hidden email]> writes:
> I fully agree it's not bulletproof, but I'm not sure what alternative there > is. If you know the type has been installed as an extension you can look at the extension's content in pg_depend, much like \dx+ does, limiting to only types whose name matches. Regards, -- Dimitri Fontaine http://2ndQuadrant.fr PostgreSQL : Expertise, Formation et Support -- Sent via pgsql-hackers mailing list ([hidden email]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers |
| Powered by Nabble | See how NAML generates this page |
