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  <br...@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 +

Reply via email to