pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Mihail Nasedkin <m.nasedkin.perm@mail.ru>
To: pgsql-sql@postgresql.org
Subject: Re: OID's
Date: Mon, 24 Jan 2005 08:57:43 +0500
Message-ID: <214299421.20050124085743@mail.ru> (raw)
In-Reply-To: <20050121170438.GA56550@winnie.fuhr.org>
References: <3628044953.20050120154558@mail.ru>
	<20050120164830.GB41081@winnie.fuhr.org>
	<8411982406.20050121111734@mail.ru>
	<20050121170438.GA56550@winnie.fuhr.org>

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.nasedkin.perm@mail.ru




view thread (8+ messages)  latest in thread

Message-ID: <214299421.20050124085743@mail.ru>
Permalink:  ../214299421.20050124085743@mail.ru/
Also on:    postgresql.org/message-id/214299421.20050124085743@mail.ru

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: m.nasedkin.perm@mail.ru
  Subject: Re: OID's
  In-Reply-To: <214299421.20050124085743@mail.ru>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox