Thread
-
newoid in invapi.c
Maurice Gittens <mgittens@gits.nl> — 1998-03-06T15:30:56Z
Hi, In the file large_object/inv_api.c there is a statement in the function inv_create which goes: file_oid=newoid() + 1; later on a heap_create_with_catalog call is performed to create a heap for the large object called xinv<file_oid>. According to code (and the comments in the code) the assumption is that the oid of the heap_relation will be equal to the value of the variable file_oid. This of course will only be the case if nobody else called newoid() before the heap relation is created. This might lead the large object implementation to confuse large object relations with other relations. According to me this is a bug. I'm I right? Thanks, Maurice -
Re: [HACKERS] newoid in invapi.c
Peter T Mount <psqlhack@maidast.demon.co.uk> — 1998-03-08T19:43:25Z
On Fri, 6 Mar 1998, Maurice Gittens wrote: > Hi, > > In the file large_object/inv_api.c there is a statement in the function > inv_create > which goes: > > file_oid=newoid() + 1; > > later on a heap_create_with_catalog call is performed to create a heap > for the large object called xinv<file_oid>. > > According to code (and the comments in the code) the assumption is that the > oid > of the heap_relation will be equal to the value of the variable file_oid. > > This of course will only be the case if nobody else called newoid() > before the heap relation is created. > > This might lead the large object implementation to confuse > large object relations with other relations. > > According to me this is a bug. I'm I right? Yes, and no. LargeObjects are supposed to run within a transaction (if you don't then some fun things happen), and (someone correct me if I'm wrong) if newoid() is called from within the transaction, it is safe? -- Peter T Mount petermount@earthling.net or pmount@maidast.demon.co.uk Main Homepage: http://www.demon.co.uk/finder Work Homepage: http://www.maidstone.gov.uk Work EMail: peter@maidstone.gov.uk