1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-27 12:41:57 +03:00

Add libpq new API lo_import_with_oid() which is similar to lo_import()

except that lob's oid can be specified.
This commit is contained in:
Tatsuo Ishii
2008-03-19 00:39:33 +00:00
parent f755f2fef3
commit 8436f9a036
4 changed files with 57 additions and 6 deletions

View File

@ -1,4 +1,4 @@
# $PostgreSQL: pgsql/src/interfaces/libpq/exports.txt,v 1.18 2007/12/09 19:01:40 tgl Exp $
# $PostgreSQL: pgsql/src/interfaces/libpq/exports.txt,v 1.19 2008/03/19 00:39:33 ishii Exp $
# Functions to be exported by libpq DLLs
PQconnectdb 1
PQsetdbLogin 2
@ -140,3 +140,4 @@ lo_truncate 137
PQconnectionUsedPassword 138
pg_valid_server_encoding_id 139
PQconnectionNeedsPassword 140
lo_import_with_oid 141

View File

@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/interfaces/libpq/fe-lobj.c,v 1.64 2008/01/01 19:46:00 momjian Exp $
* $PostgreSQL: pgsql/src/interfaces/libpq/fe-lobj.c,v 1.65 2008/03/19 00:39:33 ishii Exp $
*
*-------------------------------------------------------------------------
*/
@ -41,6 +41,8 @@
static int lo_initialize(PGconn *conn);
static Oid
lo_import_internal(PGconn *conn, const char *filename, const Oid oid);
/*
* lo_open
@ -483,6 +485,27 @@ lo_unlink(PGconn *conn, Oid lobjId)
Oid
lo_import(PGconn *conn, const char *filename)
{
return lo_import_internal(conn, filename, InvalidOid);
}
/*
* lo_import_with_oid -
* imports a file as an (inversion) large object.
* large object id can be specified.
*
* returns the oid of that object upon success,
* returns InvalidOid upon failure
*/
Oid
lo_import_with_oid(PGconn *conn, const char *filename, Oid lobjId)
{
return lo_import_internal(conn, filename, lobjId);
}
static Oid
lo_import_internal(PGconn *conn, const char *filename, Oid oid)
{
int fd;
int nbytes,
@ -507,10 +530,14 @@ lo_import(PGconn *conn, const char *filename)
/*
* create an inversion object
*/
lobjOid = lo_creat(conn, INV_READ | INV_WRITE);
if (oid == InvalidOid)
lobjOid = lo_creat(conn, INV_READ | INV_WRITE);
else
lobjOid = lo_create(conn, oid);
if (lobjOid == InvalidOid)
{
/* we assume lo_creat() already set a suitable error message */
/* we assume lo_create() already set a suitable error message */
(void) close(fd);
return InvalidOid;
}

View File

@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $PostgreSQL: pgsql/src/interfaces/libpq/libpq-fe.h,v 1.141 2008/01/01 19:46:00 momjian Exp $
* $PostgreSQL: pgsql/src/interfaces/libpq/libpq-fe.h,v 1.142 2008/03/19 00:39:33 ishii Exp $
*
*-------------------------------------------------------------------------
*/
@ -495,6 +495,7 @@ extern int lo_tell(PGconn *conn, int fd);
extern int lo_truncate(PGconn *conn, int fd, size_t len);
extern int lo_unlink(PGconn *conn, Oid lobjId);
extern Oid lo_import(PGconn *conn, const char *filename);
extern Oid lo_import_with_oid(PGconn *conn, const char *filename, Oid lobjId);
extern int lo_export(PGconn *conn, Oid lobjId, const char *filename);
/* === in fe-misc.c === */