Re: OID's

From: Mihail Nasedkin <m(dot)nasedkin(dot)perm(at)mail(dot)ru>
To: pgsql-sql(at)postgresql(dot)org
Subject: Re: OID's
Date: 2005-01-24 03:57:43
Message-ID: 214299421.20050124085743@mail.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Hello, pgsql-sql and Michael.

MF> On Fri, Jan 21, 2005 at 11:17:34AM +0500, Mihail Nasedkin wrote:

>> I have already read about "System Columns" of the PostgreSQL documentation.
>> In the table "pg_catalog.pg_attribute" column "attrelid" contain
>> only "system OID's" but not OID's from records of the user tables.
>>
>> But I would like to use OID's of all records of the all my tables.
>> ^^^ ^^^

MF> If you want to do that then you'll need to know which tables have
MF> OIDs. If you just want rows then you could query pg_class and
MF> filter on the relhasoids column, but if you also want things like
MF> large objects then you might need to query pg_attribute and look
MF> for all columns having an "oid" type. It sounds like you're not
MF> interested in the latter, however.
I don't need to know which tables have OIDS. I want know which system
table contain column OID with all OID's inserted into my tables. Or is
there system function that return last insert oid like
$sth->{'pg_oid_status'} in the DBD::Pg?

>> I try to use rules on INSERT action of my tables to store last insert
>> oid, but at the moment of the INSERT row into table OID value
>> inaccessible (unknown).

MF> A row's OID should be visible in an AFTER trigger.

OK.

>> >> I would like use some SQL queries with the all OID's.
>>
>> MF> To what end? Are you aware that PostgreSQL allows tables to be
>> MF> created without OIDs?
>>
>> Yes, of course, but in my case I create tables with OID and then want use
>> OID of all records of the all tables as one column in some query.

MF> Are you aware that OIDs aren't guaranteed to be unique due to
MF> wraparound? If you have a UNIQUE constraint on each table's oid
MF> column then the combination of (tableoid, oid) might serve your
MF> needs.
I think that OIDs are guaranteed to be unique according to FAQ 4.16) What is an OID? What is a TID?

>> I think what system of OID's is very useful for application!

MF> Assigning row IDs from a common sequence could serve the same
MF> purpose, and since sequences are 64 bits you wouldn't be as subject
MF> to a wraparound problem (OIDs are 32 bits).
OIDs are stored as 4-byte integers (see FAQ)

>> MF> What problem are you trying to solve?
>>
>> For example, I want to fetching all rows of the several tables in one
>> query by means of LEFT JOIN, but not use UNION operator.

MF> Again, what problem are you trying to solve? Using OIDs might not
MF> be the best solution, and if we knew what you're trying to do then
MF> we might be able to suggest alternatives.
Why alternatives if already exists system of the identification of all
rows from all tables.

--
Regards,
Mihail Nasedkin mailto:m(dot)nasedkin(dot)perm(at)mail(dot)ru

In response to

  • Re: OID's at 2005-01-21 17:04:38 from Michael Fuhr

Responses

  • Re: OID's at 2005-01-24 04:58:35 from Michael Fuhr

Browse pgsql-sql by date

  From Date Subject
Next Message Michael Fuhr 2005-01-24 04:10:06 Re: Invalid Input syntax for type bigint
Previous Message Duffy House 2005-01-24 03:22:23 Moving from Transact SQL to PL/pgsql