Index: src/include/catalog/pg_proc.h
===================================================================
RCS file: /cvsroot/pgsql/src/include/catalog/pg_proc.h,v
retrieving revision 1.482
diff -c -r1.482 pg_proc.h
*** src/include/catalog/pg_proc.h 1 Jan 2008 19:45:57 -0000 1.482
--- src/include/catalog/pg_proc.h 20 Mar 2008 05:58:38 -0000
***************
*** 1027,1032 ****
--- 1027,1034 ----
DATA(insert OID = 764 ( lo_import PGNSP PGUID 12 1 0 f f t f v 1 26 "25" _null_ _null_ _null_ lo_import - _null_ _null_ ));
DESCR("large object import");
+ DATA(insert OID = 767 ( lo_import PGNSP PGUID 12 1 0 f f t f v 2 26 "25 26" _null_ _null_ _null_ lo_import - _null_ _null_ ));
+ DESCR("large object import");
DATA(insert OID = 765 ( lo_export PGNSP PGUID 12 1 0 f f t f v 2 23 "26 25" _null_ _null_ _null_ lo_export - _null_ _null_ ));
DESCR("large object export");
Index: src/backend/libpq/be-fsstubs.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/libpq/be-fsstubs.c,v
retrieving revision 1.87
diff -c -r1.87 be-fsstubs.c
*** src/backend/libpq/be-fsstubs.c 1 Jan 2008 19:45:49 -0000 1.87
--- src/backend/libpq/be-fsstubs.c 20 Mar 2008 05:58:38 -0000
***************
*** 327,333 ****
char fnamebuf[MAXPGPATH];
LargeObjectDesc *lobj;
Oid lobjOid;
!
#ifndef ALLOW_DANGEROUS_LO_FUNCTIONS
if (!superuser())
ereport(ERROR,
--- 327,333 ----
char fnamebuf[MAXPGPATH];
LargeObjectDesc *lobj;
Oid lobjOid;
!
#ifndef ALLOW_DANGEROUS_LO_FUNCTIONS
if (!superuser())
ereport(ERROR,
***************
*** 336,341 ****
--- 336,346 ----
errhint("Anyone can use the client-side lo_import() provided by libpq.")));
#endif
+ if (PG_NARGS() > 1)
+ lobjOid = PG_GETARG_OID(1);
+ else
+ lobjOid = InvalidOid;
+
CreateFSContext();
/*
***************
*** 356,362 ****
/*
* create an inversion object
*/
! lobjOid = inv_create(InvalidOid);
/*
* read in from the filesystem and write to the inversion object
--- 361,367 ----
/*
* create an inversion object
*/
! lobjOid = inv_create(lobjOid);
/*
* read in from the filesystem and write to the inversion object
Index: doc/src/sgml/lobj.sgml
===================================================================
RCS file: /cvsroot/pgsql/doc/src/sgml/lobj.sgml,v
retrieving revision 1.47
diff -c -r1.47 lobj.sgml
*** doc/src/sgml/lobj.sgml 19 Mar 2008 00:39:33 -0000 1.47
--- doc/src/sgml/lobj.sgml 20 Mar 2008 05:58:38 -0000
***************
*** 438,443 ****
--- 438,450 ----
The client-side functions can be used by any
PostgreSQL user.
+
+
+ As of 8.4, a different form of the server-side
+ lo_import added, which accepts the large
+ object id as the second argument. The usage of this form is same as the client
+ side function lo_import_with_oid.
+
Index: src/test/regress/expected/opr_sanity.out
===================================================================
RCS file: /cvsroot/pgsql/src/test/regress/expected/opr_sanity.out,v
retrieving revision 1.79
diff -c -r1.79 opr_sanity.out
*** src/test/regress/expected/opr_sanity.out 27 Nov 2007 12:21:05 -0000 1.79
--- src/test/regress/expected/opr_sanity.out 20 Mar 2008 05:58:39 -0000
***************
*** 86,94 ****
p1.proretset != p2.proretset OR
p1.provolatile != p2.provolatile OR
p1.pronargs != p2.pronargs);
! oid | proname | oid | proname
! -----+---------+-----+---------
! (0 rows)
-- Look for uses of different type OIDs in the argument/result type fields
-- for different aliases of the same built-in function.
--- 86,95 ----
p1.proretset != p2.proretset OR
p1.provolatile != p2.provolatile OR
p1.pronargs != p2.pronargs);
! oid | proname | oid | proname
! -----+-----------+-----+-----------
! 764 | lo_import | 767 | lo_import
! (1 row)
-- Look for uses of different type OIDs in the argument/result type fields
-- for different aliases of the same built-in function.