Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit8436f9a

Browse files
committed
Add libpq new API lo_import_with_oid() which is similar to lo_import()
except that lob's oid can be specified.
1 parentf755f2f commit8436f9a

File tree

4 files changed

+57
-6
lines changed

4 files changed

+57
-6
lines changed

‎doc/src/sgml/lobj.sgml

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<!-- $PostgreSQL: pgsql/doc/src/sgml/lobj.sgml,v 1.46 2007/03/14 00:15:26 tgl Exp $ -->
1+
<!-- $PostgreSQL: pgsql/doc/src/sgml/lobj.sgml,v 1.47 2008/03/19 00:39:33 ishii Exp $ -->
22

33
<chapter id="largeObjects">
44
<title id="largeObjects-title">Large Objects</title>
@@ -161,6 +161,28 @@ Oid lo_import(PGconn *conn, const char *filename);
161161
the server; so it must exist in the client file system and be readable
162162
by the client application.
163163
</para>
164+
165+
<para>
166+
The function
167+
<synopsis>
168+
Oid lo_import_with_oid(PGconn *conn, const char *filename, Oid lobjId);
169+
</synopsis>
170+
<indexterm><primary>lo_import_with_oid</></>
171+
also imports a new large object. The OID to be assigned can be
172+
specified by <replaceable class="parameter">lobjId</replaceable>;
173+
if so, failure occurs if that OID is already in use for some large
174+
object. If <replaceable class="parameter">lobjId</replaceable>
175+
is <symbol>InvalidOid</symbol> (zero) then <function>lo_import_with_oid</> assigns an unused
176+
OID (this is the same behavior as <function>lo_import</>).
177+
The return value is the OID that was assigned to the new large object,
178+
or <symbol>InvalidOid</symbol> (zero) on failure.
179+
</para>
180+
181+
<para>
182+
<function>lo_import_with_oid</> is new as of <productname>PostgreSQL</productname>
183+
8.4 and uses <function>lo_create</function> internally which is new in 8.1; if this function is run against 8.0 or before, it will
184+
fail and return <symbol>InvalidOid</symbol>.
185+
</para>
164186
</sect2>
165187

166188
<sect2>

‎src/interfaces/libpq/exports.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# $PostgreSQL: pgsql/src/interfaces/libpq/exports.txt,v 1.18 2007/12/09 19:01:40 tgl Exp $
1+
# $PostgreSQL: pgsql/src/interfaces/libpq/exports.txt,v 1.19 2008/03/19 00:39:33 ishii Exp $
22
# Functions to be exported by libpq DLLs
33
PQconnectdb 1
44
PQsetdbLogin 2
@@ -140,3 +140,4 @@ lo_truncate 137
140140
PQconnectionUsedPassword 138
141141
pg_valid_server_encoding_id 139
142142
PQconnectionNeedsPassword 140
143+
lo_import_with_oid 141

‎src/interfaces/libpq/fe-lobj.c

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $PostgreSQL: pgsql/src/interfaces/libpq/fe-lobj.c,v 1.64 2008/01/01 19:46:00 momjian Exp $
11+
* $PostgreSQL: pgsql/src/interfaces/libpq/fe-lobj.c,v 1.65 2008/03/19 00:39:33 ishii Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -41,6 +41,8 @@
4141

4242
staticintlo_initialize(PGconn*conn);
4343

44+
staticOid
45+
lo_import_internal(PGconn*conn,constchar*filename,constOidoid);
4446

4547
/*
4648
* lo_open
@@ -483,6 +485,27 @@ lo_unlink(PGconn *conn, Oid lobjId)
483485

484486
Oid
485487
lo_import(PGconn*conn,constchar*filename)
488+
{
489+
returnlo_import_internal(conn,filename,InvalidOid);
490+
}
491+
492+
/*
493+
* lo_import_with_oid -
494+
* imports a file as an (inversion) large object.
495+
* large object id can be specified.
496+
*
497+
* returns the oid of that object upon success,
498+
* returns InvalidOid upon failure
499+
*/
500+
501+
Oid
502+
lo_import_with_oid(PGconn*conn,constchar*filename,OidlobjId)
503+
{
504+
returnlo_import_internal(conn,filename,lobjId);
505+
}
506+
507+
staticOid
508+
lo_import_internal(PGconn*conn,constchar*filename,Oidoid)
486509
{
487510
intfd;
488511
intnbytes,
@@ -507,10 +530,14 @@ lo_import(PGconn *conn, const char *filename)
507530
/*
508531
* create an inversion object
509532
*/
510-
lobjOid=lo_creat(conn,INV_READ |INV_WRITE);
533+
if (oid==InvalidOid)
534+
lobjOid=lo_creat(conn,INV_READ |INV_WRITE);
535+
else
536+
lobjOid=lo_create(conn,oid);
537+
511538
if (lobjOid==InvalidOid)
512539
{
513-
/* we assumelo_creat() already set a suitable error message */
540+
/* we assumelo_create() already set a suitable error message */
514541
(void)close(fd);
515542
returnInvalidOid;
516543
}

‎src/interfaces/libpq/libpq-fe.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
88
* Portions Copyright (c) 1994, Regents of the University of California
99
*
10-
* $PostgreSQL: pgsql/src/interfaces/libpq/libpq-fe.h,v 1.141 2008/01/01 19:46:00 momjian Exp $
10+
* $PostgreSQL: pgsql/src/interfaces/libpq/libpq-fe.h,v 1.142 2008/03/19 00:39:33 ishii Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -495,6 +495,7 @@ extern intlo_tell(PGconn *conn, int fd);
495495
externintlo_truncate(PGconn*conn,intfd,size_tlen);
496496
externintlo_unlink(PGconn*conn,OidlobjId);
497497
externOidlo_import(PGconn*conn,constchar*filename);
498+
externOidlo_import_with_oid(PGconn*conn,constchar*filename,OidlobjId);
498499
externintlo_export(PGconn*conn,OidlobjId,constchar*filename);
499500

500501
/* === in fe-misc.c === */

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp