mirror of
https://github.com/postgres/postgres.git
synced 2025-04-22 23:02:54 +03:00
Clean up usage of some deprecated APIs, particularly schema-unsafe
usage of RelationNameGetTupleDesc().
This commit is contained in:
parent
08fc73c4c3
commit
0effa088f5
@ -2,15 +2,17 @@ SET search_path = public;
|
|||||||
|
|
||||||
BEGIN;
|
BEGIN;
|
||||||
|
|
||||||
|
CREATE TYPE hstore;
|
||||||
|
|
||||||
CREATE FUNCTION hstore_in(cstring)
|
CREATE FUNCTION hstore_in(cstring)
|
||||||
RETURNS hstore
|
RETURNS hstore
|
||||||
AS 'MODULE_PATHNAME'
|
AS 'MODULE_PATHNAME'
|
||||||
LANGUAGE 'C' with (isstrict);
|
LANGUAGE C STRICT;
|
||||||
|
|
||||||
CREATE FUNCTION hstore_out(hstore)
|
CREATE FUNCTION hstore_out(hstore)
|
||||||
RETURNS cstring
|
RETURNS cstring
|
||||||
AS 'MODULE_PATHNAME'
|
AS 'MODULE_PATHNAME'
|
||||||
LANGUAGE 'C' with (isstrict);
|
LANGUAGE C STRICT;
|
||||||
|
|
||||||
CREATE TYPE hstore (
|
CREATE TYPE hstore (
|
||||||
INTERNALLENGTH = -1,
|
INTERNALLENGTH = -1,
|
||||||
@ -22,7 +24,7 @@ CREATE TYPE hstore (
|
|||||||
CREATE FUNCTION fetchval(hstore,text)
|
CREATE FUNCTION fetchval(hstore,text)
|
||||||
RETURNS text
|
RETURNS text
|
||||||
AS 'MODULE_PATHNAME'
|
AS 'MODULE_PATHNAME'
|
||||||
LANGUAGE 'C' with (isstrict,iscachable);
|
LANGUAGE C STRICT IMMUTABLE;
|
||||||
|
|
||||||
CREATE OPERATOR -> (
|
CREATE OPERATOR -> (
|
||||||
LEFTARG = hstore,
|
LEFTARG = hstore,
|
||||||
@ -33,12 +35,12 @@ CREATE OPERATOR -> (
|
|||||||
CREATE FUNCTION isexists(hstore,text)
|
CREATE FUNCTION isexists(hstore,text)
|
||||||
RETURNS bool
|
RETURNS bool
|
||||||
AS 'MODULE_PATHNAME','exists'
|
AS 'MODULE_PATHNAME','exists'
|
||||||
LANGUAGE 'C' with (isstrict,iscachable);
|
LANGUAGE C STRICT IMMUTABLE;
|
||||||
|
|
||||||
CREATE FUNCTION exist(hstore,text)
|
CREATE FUNCTION exist(hstore,text)
|
||||||
RETURNS bool
|
RETURNS bool
|
||||||
AS 'MODULE_PATHNAME','exists'
|
AS 'MODULE_PATHNAME','exists'
|
||||||
LANGUAGE 'C' with (isstrict,iscachable);
|
LANGUAGE C STRICT IMMUTABLE;
|
||||||
|
|
||||||
CREATE OPERATOR ? (
|
CREATE OPERATOR ? (
|
||||||
LEFTARG = hstore,
|
LEFTARG = hstore,
|
||||||
@ -51,22 +53,22 @@ CREATE OPERATOR ? (
|
|||||||
CREATE FUNCTION isdefined(hstore,text)
|
CREATE FUNCTION isdefined(hstore,text)
|
||||||
RETURNS bool
|
RETURNS bool
|
||||||
AS 'MODULE_PATHNAME','defined'
|
AS 'MODULE_PATHNAME','defined'
|
||||||
LANGUAGE 'C' with (isstrict,iscachable);
|
LANGUAGE C STRICT IMMUTABLE;
|
||||||
|
|
||||||
CREATE FUNCTION defined(hstore,text)
|
CREATE FUNCTION defined(hstore,text)
|
||||||
RETURNS bool
|
RETURNS bool
|
||||||
AS 'MODULE_PATHNAME','defined'
|
AS 'MODULE_PATHNAME','defined'
|
||||||
LANGUAGE 'C' with (isstrict,iscachable);
|
LANGUAGE C STRICT IMMUTABLE;
|
||||||
|
|
||||||
CREATE FUNCTION delete(hstore,text)
|
CREATE FUNCTION delete(hstore,text)
|
||||||
RETURNS hstore
|
RETURNS hstore
|
||||||
AS 'MODULE_PATHNAME','delete'
|
AS 'MODULE_PATHNAME','delete'
|
||||||
LANGUAGE 'C' with (isstrict,iscachable);
|
LANGUAGE C STRICT IMMUTABLE;
|
||||||
|
|
||||||
CREATE FUNCTION hs_concat(hstore,hstore)
|
CREATE FUNCTION hs_concat(hstore,hstore)
|
||||||
RETURNS hstore
|
RETURNS hstore
|
||||||
AS 'MODULE_PATHNAME'
|
AS 'MODULE_PATHNAME'
|
||||||
LANGUAGE 'C' with (isstrict,iscachable);
|
LANGUAGE C STRICT IMMUTABLE;
|
||||||
|
|
||||||
CREATE OPERATOR || (
|
CREATE OPERATOR || (
|
||||||
LEFTARG = hstore,
|
LEFTARG = hstore,
|
||||||
@ -77,12 +79,12 @@ CREATE OPERATOR || (
|
|||||||
CREATE FUNCTION hs_contains(hstore,hstore)
|
CREATE FUNCTION hs_contains(hstore,hstore)
|
||||||
RETURNS bool
|
RETURNS bool
|
||||||
AS 'MODULE_PATHNAME'
|
AS 'MODULE_PATHNAME'
|
||||||
LANGUAGE 'C' with (isstrict,iscachable);
|
LANGUAGE C STRICT IMMUTABLE;
|
||||||
|
|
||||||
CREATE FUNCTION hs_contained(hstore,hstore)
|
CREATE FUNCTION hs_contained(hstore,hstore)
|
||||||
RETURNS bool
|
RETURNS bool
|
||||||
AS 'MODULE_PATHNAME'
|
AS 'MODULE_PATHNAME'
|
||||||
LANGUAGE 'C' with (isstrict,iscachable);
|
LANGUAGE C STRICT IMMUTABLE;
|
||||||
|
|
||||||
CREATE OPERATOR @> (
|
CREATE OPERATOR @> (
|
||||||
LEFTARG = hstore,
|
LEFTARG = hstore,
|
||||||
@ -124,7 +126,7 @@ CREATE OPERATOR ~ (
|
|||||||
CREATE FUNCTION tconvert(text,text)
|
CREATE FUNCTION tconvert(text,text)
|
||||||
RETURNS hstore
|
RETURNS hstore
|
||||||
AS 'MODULE_PATHNAME'
|
AS 'MODULE_PATHNAME'
|
||||||
LANGUAGE 'C' with (iscachable);
|
LANGUAGE C IMMUTABLE;
|
||||||
|
|
||||||
CREATE OPERATOR => (
|
CREATE OPERATOR => (
|
||||||
LEFTARG = text,
|
LEFTARG = text,
|
||||||
@ -135,43 +137,45 @@ CREATE OPERATOR => (
|
|||||||
CREATE FUNCTION akeys(hstore)
|
CREATE FUNCTION akeys(hstore)
|
||||||
RETURNS _text
|
RETURNS _text
|
||||||
AS 'MODULE_PATHNAME'
|
AS 'MODULE_PATHNAME'
|
||||||
LANGUAGE 'C' with (isstrict,iscachable);
|
LANGUAGE C STRICT IMMUTABLE;
|
||||||
|
|
||||||
CREATE FUNCTION avals(hstore)
|
CREATE FUNCTION avals(hstore)
|
||||||
RETURNS _text
|
RETURNS _text
|
||||||
AS 'MODULE_PATHNAME'
|
AS 'MODULE_PATHNAME'
|
||||||
LANGUAGE 'C' with (isstrict,iscachable);
|
LANGUAGE C STRICT IMMUTABLE;
|
||||||
|
|
||||||
CREATE FUNCTION skeys(hstore)
|
CREATE FUNCTION skeys(hstore)
|
||||||
RETURNS setof text
|
RETURNS setof text
|
||||||
AS 'MODULE_PATHNAME'
|
AS 'MODULE_PATHNAME'
|
||||||
LANGUAGE 'C' with (isstrict,iscachable);
|
LANGUAGE C STRICT IMMUTABLE;
|
||||||
|
|
||||||
CREATE FUNCTION svals(hstore)
|
CREATE FUNCTION svals(hstore)
|
||||||
RETURNS setof text
|
RETURNS setof text
|
||||||
AS 'MODULE_PATHNAME'
|
AS 'MODULE_PATHNAME'
|
||||||
LANGUAGE 'C' with (isstrict,iscachable);
|
LANGUAGE C STRICT IMMUTABLE;
|
||||||
|
|
||||||
create type hs_each as (key text, value text);
|
CREATE FUNCTION each(IN hs hstore,
|
||||||
|
OUT key text,
|
||||||
CREATE FUNCTION each(hstore)
|
OUT value text)
|
||||||
RETURNS setof hs_each
|
RETURNS SETOF record
|
||||||
AS 'MODULE_PATHNAME'
|
AS 'MODULE_PATHNAME'
|
||||||
LANGUAGE 'C' with (isstrict,iscachable);
|
LANGUAGE C STRICT IMMUTABLE;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- define the GiST support methods
|
-- define the GiST support methods
|
||||||
|
|
||||||
|
CREATE TYPE ghstore;
|
||||||
|
|
||||||
CREATE FUNCTION ghstore_in(cstring)
|
CREATE FUNCTION ghstore_in(cstring)
|
||||||
RETURNS ghstore
|
RETURNS ghstore
|
||||||
AS 'MODULE_PATHNAME'
|
AS 'MODULE_PATHNAME'
|
||||||
LANGUAGE 'C' with (isstrict);
|
LANGUAGE C STRICT;
|
||||||
|
|
||||||
CREATE FUNCTION ghstore_out(ghstore)
|
CREATE FUNCTION ghstore_out(ghstore)
|
||||||
RETURNS cstring
|
RETURNS cstring
|
||||||
AS 'MODULE_PATHNAME'
|
AS 'MODULE_PATHNAME'
|
||||||
LANGUAGE 'C' with (isstrict);
|
LANGUAGE C STRICT;
|
||||||
|
|
||||||
CREATE TYPE ghstore (
|
CREATE TYPE ghstore (
|
||||||
INTERNALLENGTH = -1,
|
INTERNALLENGTH = -1,
|
||||||
@ -182,37 +186,37 @@ CREATE TYPE ghstore (
|
|||||||
CREATE FUNCTION ghstore_compress(internal)
|
CREATE FUNCTION ghstore_compress(internal)
|
||||||
RETURNS internal
|
RETURNS internal
|
||||||
AS 'MODULE_PATHNAME'
|
AS 'MODULE_PATHNAME'
|
||||||
LANGUAGE 'C';
|
LANGUAGE C;
|
||||||
|
|
||||||
CREATE FUNCTION ghstore_decompress(internal)
|
CREATE FUNCTION ghstore_decompress(internal)
|
||||||
RETURNS internal
|
RETURNS internal
|
||||||
AS 'MODULE_PATHNAME'
|
AS 'MODULE_PATHNAME'
|
||||||
LANGUAGE 'C';
|
LANGUAGE C;
|
||||||
|
|
||||||
CREATE FUNCTION ghstore_penalty(internal,internal,internal)
|
CREATE FUNCTION ghstore_penalty(internal,internal,internal)
|
||||||
RETURNS internal
|
RETURNS internal
|
||||||
AS 'MODULE_PATHNAME'
|
AS 'MODULE_PATHNAME'
|
||||||
LANGUAGE 'C' WITH (isstrict);
|
LANGUAGE C STRICT;
|
||||||
|
|
||||||
CREATE FUNCTION ghstore_picksplit(internal, internal)
|
CREATE FUNCTION ghstore_picksplit(internal, internal)
|
||||||
RETURNS internal
|
RETURNS internal
|
||||||
AS 'MODULE_PATHNAME'
|
AS 'MODULE_PATHNAME'
|
||||||
LANGUAGE 'C';
|
LANGUAGE C;
|
||||||
|
|
||||||
CREATE FUNCTION ghstore_union(internal, internal)
|
CREATE FUNCTION ghstore_union(internal, internal)
|
||||||
RETURNS internal
|
RETURNS internal
|
||||||
AS 'MODULE_PATHNAME'
|
AS 'MODULE_PATHNAME'
|
||||||
LANGUAGE 'C';
|
LANGUAGE C;
|
||||||
|
|
||||||
CREATE FUNCTION ghstore_same(internal, internal, internal)
|
CREATE FUNCTION ghstore_same(internal, internal, internal)
|
||||||
RETURNS internal
|
RETURNS internal
|
||||||
AS 'MODULE_PATHNAME'
|
AS 'MODULE_PATHNAME'
|
||||||
LANGUAGE 'C';
|
LANGUAGE C;
|
||||||
|
|
||||||
CREATE FUNCTION ghstore_consistent(internal,internal,int4)
|
CREATE FUNCTION ghstore_consistent(internal,internal,int4)
|
||||||
RETURNS bool
|
RETURNS bool
|
||||||
AS 'MODULE_PATHNAME'
|
AS 'MODULE_PATHNAME'
|
||||||
LANGUAGE 'C';
|
LANGUAGE C;
|
||||||
|
|
||||||
-- register the opclass for indexing (not as default)
|
-- register the opclass for indexing (not as default)
|
||||||
CREATE OPERATOR CLASS gist_hstore_ops
|
CREATE OPERATOR CLASS gist_hstore_ops
|
||||||
|
@ -595,8 +595,10 @@ each(PG_FUNCTION_ARGS)
|
|||||||
memcpy(st->hs, hs, VARSIZE(hs));
|
memcpy(st->hs, hs, VARSIZE(hs));
|
||||||
funcctx->user_fctx = (void *) st;
|
funcctx->user_fctx = (void *) st;
|
||||||
|
|
||||||
tupdesc = RelationNameGetTupleDesc("hs_each");
|
/* Build a tuple descriptor for our result type */
|
||||||
funcctx->slot = TupleDescGetSlot(tupdesc);
|
if (get_call_result_type(fcinfo, NULL, &tupdesc) != TYPEFUNC_COMPOSITE)
|
||||||
|
elog(ERROR, "return type must be a row type");
|
||||||
|
|
||||||
funcctx->attinmeta = TupleDescGetAttInMetadata(tupdesc);
|
funcctx->attinmeta = TupleDescGetAttInMetadata(tupdesc);
|
||||||
|
|
||||||
MemoryContextSwitchTo(oldcontext);
|
MemoryContextSwitchTo(oldcontext);
|
||||||
@ -637,7 +639,7 @@ each(PG_FUNCTION_ARGS)
|
|||||||
st->i++;
|
st->i++;
|
||||||
|
|
||||||
tuple = heap_formtuple(funcctx->attinmeta->tupdesc, dvalues, nulls);
|
tuple = heap_formtuple(funcctx->attinmeta->tupdesc, dvalues, nulls);
|
||||||
res = TupleGetDatum(funcctx->slot, tuple);
|
res = HeapTupleGetDatum(tuple);
|
||||||
|
|
||||||
pfree(DatumGetPointer(dvalues[0]));
|
pfree(DatumGetPointer(dvalues[0]));
|
||||||
if (nulls[1] != 'n')
|
if (nulls[1] != 'n')
|
||||||
|
@ -40,7 +40,6 @@ DROP FUNCTION gin_extract_hstore(internal, internal);
|
|||||||
DROP FUNCTION gin_extract_hstore_query(internal, internal, smallint);
|
DROP FUNCTION gin_extract_hstore_query(internal, internal, smallint);
|
||||||
|
|
||||||
DROP TYPE hstore CASCADE;
|
DROP TYPE hstore CASCADE;
|
||||||
DROP TYPE hs_each CASCADE;
|
|
||||||
DROP TYPE ghstore CASCADE;
|
DROP TYPE ghstore CASCADE;
|
||||||
|
|
||||||
COMMIT;
|
COMMIT;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user