Getting table name/tuple from OID

Started by Paresh Bafnaabout 20 years ago8 messages
#1Paresh Bafna
paresh@it.iitb.ac.in

Is there any way to retrieve table name and/or tuple values from OID of
table/tuple?

#2Tino Wildenhain
tino@wildenhain.de
In reply to: Paresh Bafna (#1)
Re: Getting table name/tuple from OID

Paresh Bafna schrieb:

Is there any way to retrieve table name and/or tuple values from OID of
table/tuple?

Yes.

#3Christopher Kings-Lynne
chriskl@familyhealth.com.au
In reply to: Paresh Bafna (#1)
Re: Getting table name/tuple from OID

Try

SELECT 12341234::regclass;

Where 12341234 is the OID of a table.

Otherwise try:

SELECT tableoid, * FROM table;

To get the tableoid on each row.

Chris

Paresh Bafna wrote:

Show quoted text

Is there any way to retrieve table name and/or tuple values from OID of
table/tuple?

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

#4Paresh Bafna
paresh@it.iitb.ac.in
In reply to: Christopher Kings-Lynne (#3)
Re: Getting table name/tuple from OID

Actually I want to do this from inside the postgres code i.e. I want to
get table name and tuple values from OID of corresponding table OID and
tuple OID.
Is there any built in function in postgres code to do this?

Paresh

Christopher Kings-Lynne wrote:

Show quoted text

Try

SELECT 12341234::regclass;

Where 12341234 is the OID of a table.

Otherwise try:

SELECT tableoid, * FROM table;

To get the tableoid on each row.

Chris

Paresh Bafna wrote:

Is there any way to retrieve table name and/or tuple values from OID of
table/tuple?

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

#5huaxin zhang
uwcssa@gmail.com
In reply to: Paresh Bafna (#4)
Re: Getting table name/tuple from OID

Hi all,

I am interested in the answer as well -- how to get a table name (or
an operator name)
from an OID. the parser must know how to do this, but the segment
of code is hard
to locate.

thanks a lot,
Huaxin

Show quoted text

On 11/7/05, Paresh Bafna <paresh@it.iitb.ac.in> wrote:

Actually I want to do this from inside the postgres code i.e. I want to
get table name and tuple values from OID of corresponding table OID and
tuple OID.
Is there any built in function in postgres code to do this?

Paresh

Christopher Kings-Lynne wrote:

Try

SELECT 12341234::regclass;

Where 12341234 is the OID of a table.

Otherwise try:

SELECT tableoid, * FROM table;

To get the tableoid on each row.

Chris

Paresh Bafna wrote:

Is there any way to retrieve table name and/or tuple values from OID of
table/tuple?

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

#6Martijn van Oosterhout
kleptog@svana.org
In reply to: huaxin zhang (#5)
Re: Getting table name/tuple from OID

On Fri, Nov 11, 2005 at 08:37:07AM -0500, huaxin zhang wrote:

Hi all,

I am interested in the answer as well -- how to get a table name (or
an operator name) from an OID. the parser must know how to do this,
but the segment of code is hard to locate.

For the purposes of error messages, RelationGetRelationName() does what
you want. Otherwise maybe RelationIdGetRelation(Oid relationId). Check
out utils/cache/relcache.c for a variety of functions to extract basic
data like this.

Hope this helps,
--
Martijn van Oosterhout <kleptog@svana.org> http://svana.org/kleptog/

Show quoted text

Patent. n. Genius is 5% inspiration and 95% perspiration. A patent is a
tool for doing 5% of the work and then sitting around waiting for someone
else to do the other 95% so you can sue them.

#7Marek Lewczuk
newsy@lewczuk.com
In reply to: huaxin zhang (#5)
Re: Getting table name/tuple from OID

huaxin zhang napisał(a):

Hi all,

I am interested in the answer as well -- how to get a table name (or
an operator name)
from an OID. the parser must know how to do this, but the segment
of code is hard
to locate.

CREATE OR REPLACE FUNCTION gettablename(__oid oid)
RETURNS "varchar" AS
$BODY$
SELECT (_sna.nspname || '.' || _tna.relname) AS tableQualifiedName FROM
pg_class _tna, pg_namespace _sna WHERE _tna.oid = $1 AND _sna.oid =
_tna.relnamespace;
$BODY$
LANGUAGE 'sql' IMMUTABLE;
ALTER FUNCTION gettablename(__oid oid) OWNER TO root;

#8uwcssa
uwcssa@gmail.com
In reply to: Marek Lewczuk (#7)
Re: Getting table name/tuple from OID

Thanks for the quick reply. I made a mistake last time by asking the
question:
actually, i would like to know how to get the OID from a table name or
operator name.
For example, ">" is 512 while "=" is 96. and some table has the magic relid
of 20078, say.
How could I find out the OID by giving the (full qualified) name of a table
or an operator?
I need this since I want to build a query plan from external and I need to
know the OID
in order to manually create the query plan. Thanks.

Show quoted text

I am interested in the answer as well -- how to get a table name (or

an operator name)
from an OID. the parser must know how to do this, but the segment
of code is hard
to locate.

CREATE OR REPLACE FUNCTION gettablename(__oid oid)
RETURNS "varchar" AS
$BODY$
SELECT (_sna.nspname || '.' || _tna.relname) AS tableQualifiedName FROM
pg_class _tna, pg_namespace _sna WHERE _tna.oid = $1 AND _sna.oid =
_tna.relnamespace;
$BODY$
LANGUAGE 'sql' IMMUTABLE;
ALTER FUNCTION gettablename(__oid oid) OWNER TO root;