Thread

  1. 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