Commit 154146d2 authored by Tom Lane's avatar Tom Lane

Rename lo_create(oid, bytea) to lo_from_bytea().

The previous naming broke the query that libpq's lo_initialize() uses
to collect the OIDs of the server-side functions it requires, because
that query effectively assumes that there is only one function named
lo_create in the pg_catalog schema (and likewise only one lo_open, etc).

While we should certainly make libpq more robust about this, the naive
query will remain in use in the field for the foreseeable future, so it
seems the only workable choice is to use a different name for the new
function.  lo_from_bytea() won a small straw poll.

Back-patch into 9.4 where the new function was introduced.
parent 79379107
......@@ -547,16 +547,16 @@ int lo_unlink(PGconn *conn, Oid lobjId);
<row>
<entry>
<indexterm>
<primary>lo_create</primary>
<primary>lo_from_bytea</primary>
</indexterm>
<literal><function>lo_create(<parameter>loid</parameter> <type>oid</type>, <parameter>string</parameter> <type>bytea</type>)</function></literal>
<literal><function>lo_from_bytea(<parameter>loid</parameter> <type>oid</type>, <parameter>string</parameter> <type>bytea</type>)</function></literal>
</entry>
<entry><type>oid</type></entry>
<entry>
Create a large object and store data there, returning its OID.
Pass <literal>0</> to have the system choose an OID.
</entry>
<entry><literal>lo_create(0, E'\\xffffff00')</literal></entry>
<entry><literal>lo_from_bytea(0, E'\\xffffff00')</literal></entry>
<entry><literal>24528</literal></entry>
</row>
......
......@@ -862,10 +862,10 @@ lo_get_fragment(PG_FUNCTION_ARGS)
}
/*
* Create LO with initial contents
* Create LO with initial contents given by a bytea argument
*/
Datum
lo_create_bytea(PG_FUNCTION_ARGS)
lo_from_bytea(PG_FUNCTION_ARGS)
{
Oid loOid = PG_GETARG_OID(0);
bytea *str = PG_GETARG_BYTEA_PP(1);
......
......@@ -53,6 +53,6 @@
*/
/* yyyymmddN */
#define CATALOG_VERSION_NO 201406051
#define CATALOG_VERSION_NO 201406121
#endif
......@@ -1061,8 +1061,8 @@ DESCR("truncate large object");
DATA(insert OID = 3172 ( lo_truncate64 PGNSP PGUID 12 1 0 0 0 f f f f t f v 2 0 23 "23 20" _null_ _null_ _null_ _null_ lo_truncate64 _null_ _null_ _null_ ));
DESCR("truncate large object (64 bit)");
DATA(insert OID = 3457 ( lo_create PGNSP PGUID 12 1 0 0 0 f f f f t f v 2 0 26 "26 17" _null_ _null_ _null_ _null_ lo_create_bytea _null_ _null_ _null_ ));
DESCR("create new large object with content");
DATA(insert OID = 3457 ( lo_from_bytea PGNSP PGUID 12 1 0 0 0 f f f f t f v 2 0 26 "26 17" _null_ _null_ _null_ _null_ lo_from_bytea _null_ _null_ _null_ ));
DESCR("create new large object with given content");
DATA(insert OID = 3458 ( lo_get PGNSP PGUID 12 1 0 0 0 f f f f t f v 1 0 17 "26" _null_ _null_ _null_ _null_ lo_get _null_ _null_ _null_ ));
DESCR("read entire large object");
DATA(insert OID = 3459 ( lo_get PGNSP PGUID 12 1 0 0 0 f f f f t f v 3 0 17 "26 20 23" _null_ _null_ _null_ _null_ lo_get_fragment _null_ _null_ _null_ ));
......
......@@ -25,7 +25,7 @@ extern Datum lo_export(PG_FUNCTION_ARGS);
extern Datum lo_creat(PG_FUNCTION_ARGS);
extern Datum lo_create(PG_FUNCTION_ARGS);
extern Datum lo_create_bytea(PG_FUNCTION_ARGS);
extern Datum lo_from_bytea(PG_FUNCTION_ARGS);
extern Datum lo_open(PG_FUNCTION_ARGS);
extern Datum lo_close(PG_FUNCTION_ARGS);
......
......@@ -207,7 +207,7 @@ SELECT lo_unlink(loid) FROM lotest_stash_values;
\set newloid_1 :LASTOID
SELECT lo_create(0, lo_get(:newloid_1)) AS newloid_2
SELECT lo_from_bytea(0, lo_get(:newloid_1)) AS newloid_2
\gset
SELECT md5(lo_get(:newloid_1)) = md5(lo_get(:newloid_2));
......
......@@ -393,7 +393,7 @@ SELECT lo_unlink(loid) FROM lotest_stash_values;
\lo_unlink :newloid
\lo_import 'results/lotest.txt'
\set newloid_1 :LASTOID
SELECT lo_create(0, lo_get(:newloid_1)) AS newloid_2
SELECT lo_from_bytea(0, lo_get(:newloid_1)) AS newloid_2
\gset
SELECT md5(lo_get(:newloid_1)) = md5(lo_get(:newloid_2));
?column?
......
......@@ -393,7 +393,7 @@ SELECT lo_unlink(loid) FROM lotest_stash_values;
\lo_unlink :newloid
\lo_import 'results/lotest.txt'
\set newloid_1 :LASTOID
SELECT lo_create(0, lo_get(:newloid_1)) AS newloid_2
SELECT lo_from_bytea(0, lo_get(:newloid_1)) AS newloid_2
\gset
SELECT md5(lo_get(:newloid_1)) = md5(lo_get(:newloid_2));
?column?
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment