lo_import() of an empty file - Mailing list pgsql-hackers

From Bruce Momjian
Subject lo_import() of an empty file
Date
Msg-id 20180330181341.GQ8476@momjian.us
Whole thread Raw
Responses Re: lo_import() of an empty file  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
I have just discovered if you try to lo_import() an empty file, and oid
is returned, but nothing is added to pg_largeobject:

    $ > /rtmp/a
    $ psql test

    SELECT lo_import('/rtmp/a');
     lo_import
    -----------
         16385
    
    SELECT * from pg_largeobject;
     loid | pageno | data
    ------+--------+------

However, the oid is incremented for each call:

    SELECT lo_import('/rtmp/a');
     lo_import
    -----------
         16386
    
    SELECT lo_import('/rtmp/a');
     lo_import
    -----------
         16387
    
    SELECT lo_import('/rtmp/a');
     lo_import
    -----------
         16388

An lo_export() of a non-existant oid does create an empty file.  I guess
this is an optimization of allowing empty file imports to consume no
space in pg_largeobject, but it does seem odd.

I am asking hackers in case someone can see an error here, or something
that should be documented.

-- 
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

+ As you are, so once was I.  As I am, so you will be. +
+                      Ancient Roman grave inscription +


pgsql-hackers by date:

Previous
From: Jerry Sievers
Date:
Subject: Re: Speedup of relation deletes during recovery
Next
From: Tom Lane
Date:
Subject: Re: [HACKERS] AdvanceXLInsertBuffer vs. WAL segment compressibility