@ -41,7 +41,6 @@
# include "catalog/indexing.h"
# include "catalog/indexing.h"
# include "catalog/objectaccess.h"
# include "catalog/objectaccess.h"
# include "catalog/pg_largeobject.h"
# include "catalog/pg_largeobject.h"
# include "catalog/pg_largeobject_metadata.h"
# include "libpq/libpq-fs.h"
# include "libpq/libpq-fs.h"
# include "miscadmin.h"
# include "miscadmin.h"
# include "storage/large_object.h"
# include "storage/large_object.h"
@ -123,43 +122,6 @@ close_lo_relation(bool isCommit)
}
}
/*
* Same as pg_largeobject . c ' s LargeObjectExists ( ) , except snapshot to
* read with can be specified .
*/
static bool
myLargeObjectExists ( Oid loid , Snapshot snapshot )
{
Relation pg_lo_meta ;
ScanKeyData skey [ 1 ] ;
SysScanDesc sd ;
HeapTuple tuple ;
bool retval = false ;
ScanKeyInit ( & skey [ 0 ] ,
Anum_pg_largeobject_metadata_oid ,
BTEqualStrategyNumber , F_OIDEQ ,
ObjectIdGetDatum ( loid ) ) ;
pg_lo_meta = table_open ( LargeObjectMetadataRelationId ,
AccessShareLock ) ;
sd = systable_beginscan ( pg_lo_meta ,
LargeObjectMetadataOidIndexId , true ,
snapshot , 1 , skey ) ;
tuple = systable_getnext ( sd ) ;
if ( HeapTupleIsValid ( tuple ) )
retval = true ;
systable_endscan ( sd ) ;
table_close ( pg_lo_meta , AccessShareLock ) ;
return retval ;
}
/*
/*
* Extract data field from a pg_largeobject tuple , detoasting if needed
* Extract data field from a pg_largeobject tuple , detoasting if needed
* and verifying that the length is sane . Returns data pointer ( a bytea * ) ,
* and verifying that the length is sane . Returns data pointer ( a bytea * ) ,
@ -279,7 +241,7 @@ inv_open(Oid lobjId, int flags, MemoryContext mcxt)
snapshot = GetActiveSnapshot ( ) ;
snapshot = GetActiveSnapshot ( ) ;
/* Can't use LargeObjectExists here because we need to specify snapshot */
/* Can't use LargeObjectExists here because we need to specify snapshot */
if ( ! my LargeObjectExists( lobjId , snapshot ) )
if ( ! LargeObjectExistsWithSnapshot ( lobjId , snapshot ) )
ereport ( ERROR ,
ereport ( ERROR ,
( errcode ( ERRCODE_UNDEFINED_OBJECT ) ,
( errcode ( ERRCODE_UNDEFINED_OBJECT ) ,
errmsg ( " large object %u does not exist " , lobjId ) ) ) ;
errmsg ( " large object %u does not exist " , lobjId ) ) ) ;