mirror of
https://github.com/postgres/postgres.git
synced 2025-07-31 22:04:40 +03:00
Add a bunch of pseudo-types to replace the behavior formerly associated
with OPAQUE, as per recent pghackers discussion. I still want to do some more work on the 'cstring' pseudo-type, but I'm going to commit the bulk of the changes now before the tree starts shifting under me ...
This commit is contained in:
@ -4,13 +4,13 @@ begin transaction;
|
||||
SET search_path = public;
|
||||
|
||||
-- create type of int4 key
|
||||
CREATE FUNCTION int4key_in(opaque)
|
||||
RETURNS opaque
|
||||
CREATE FUNCTION int4key_in(cstring)
|
||||
RETURNS int4key
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
|
||||
CREATE FUNCTION int4key_out(opaque)
|
||||
RETURNS opaque
|
||||
CREATE FUNCTION int4key_out(int4key)
|
||||
RETURNS cstring
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
|
||||
@ -29,19 +29,19 @@ output = int4key_out
|
||||
--
|
||||
--
|
||||
-- define the GiST support methods
|
||||
create function gint4_consistent(opaque,int4,int2) returns bool as 'MODULE_PATHNAME' language 'C';
|
||||
create function gint4_consistent(internal,int4,int2) returns bool as 'MODULE_PATHNAME' language 'C';
|
||||
|
||||
create function gint4_compress(opaque) returns opaque as 'MODULE_PATHNAME' language 'C';
|
||||
create function gint4_compress(internal) returns internal as 'MODULE_PATHNAME' language 'C';
|
||||
|
||||
create function btree_decompress(opaque) returns opaque as 'MODULE_PATHNAME' language 'C';
|
||||
create function btree_decompress(internal) returns internal as 'MODULE_PATHNAME' language 'C';
|
||||
|
||||
create function gint4_penalty(opaque,opaque,opaque) returns opaque as 'MODULE_PATHNAME' language 'C' with(isstrict);
|
||||
create function gint4_penalty(internal,internal,internal) returns internal as 'MODULE_PATHNAME' language 'C' with(isstrict);
|
||||
|
||||
create function gint4_picksplit(opaque, opaque) returns opaque as 'MODULE_PATHNAME' language 'C';
|
||||
create function gint4_picksplit(internal, internal) returns internal as 'MODULE_PATHNAME' language 'C';
|
||||
|
||||
create function gint4_union(bytea, opaque) returns int4 as 'MODULE_PATHNAME' language 'C';
|
||||
create function gint4_union(bytea, internal) returns int4 as 'MODULE_PATHNAME' language 'C';
|
||||
|
||||
create function gint4_same(opaque, opaque, opaque) returns opaque as 'MODULE_PATHNAME' language 'C';
|
||||
create function gint4_same(internal, internal, internal) returns internal as 'MODULE_PATHNAME' language 'C';
|
||||
|
||||
-- Create the operator class
|
||||
CREATE OPERATOR CLASS gist_int4_ops
|
||||
@ -51,13 +51,13 @@ CREATE OPERATOR CLASS gist_int4_ops
|
||||
OPERATOR 3 = ,
|
||||
OPERATOR 4 >= ,
|
||||
OPERATOR 5 > ,
|
||||
FUNCTION 1 gint4_consistent (opaque, int4, int2),
|
||||
FUNCTION 2 gint4_union (bytea, opaque),
|
||||
FUNCTION 3 gint4_compress (opaque),
|
||||
FUNCTION 4 btree_decompress (opaque),
|
||||
FUNCTION 5 gint4_penalty (opaque, opaque, opaque),
|
||||
FUNCTION 6 gint4_picksplit (opaque, opaque),
|
||||
FUNCTION 7 gint4_same (opaque, opaque, opaque),
|
||||
FUNCTION 1 gint4_consistent (internal, int4, int2),
|
||||
FUNCTION 2 gint4_union (bytea, internal),
|
||||
FUNCTION 3 gint4_compress (internal),
|
||||
FUNCTION 4 btree_decompress (internal),
|
||||
FUNCTION 5 gint4_penalty (internal, internal, internal),
|
||||
FUNCTION 6 gint4_picksplit (internal, internal),
|
||||
FUNCTION 7 gint4_same (internal, internal, internal),
|
||||
STORAGE int4key;
|
||||
|
||||
|
||||
@ -70,13 +70,13 @@ CREATE OPERATOR CLASS gist_int4_ops
|
||||
--
|
||||
-- create type of timestamp key
|
||||
|
||||
CREATE FUNCTION tskey_in(opaque)
|
||||
RETURNS opaque
|
||||
CREATE FUNCTION tskey_in(cstring)
|
||||
RETURNS tskey
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
|
||||
CREATE FUNCTION tskey_out(opaque)
|
||||
RETURNS opaque
|
||||
CREATE FUNCTION tskey_out(tskey)
|
||||
RETURNS cstring
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
|
||||
@ -86,17 +86,17 @@ input = tskey_in,
|
||||
output = tskey_out
|
||||
);
|
||||
|
||||
create function gts_consistent(opaque,timestamp,int2) returns bool as 'MODULE_PATHNAME' language 'C';
|
||||
create function gts_consistent(internal,timestamp,int2) returns bool as 'MODULE_PATHNAME' language 'C';
|
||||
|
||||
create function gts_compress(opaque) returns opaque as 'MODULE_PATHNAME' language 'C';
|
||||
create function gts_compress(internal) returns internal as 'MODULE_PATHNAME' language 'C';
|
||||
|
||||
create function gts_penalty(opaque,opaque,opaque) returns opaque as 'MODULE_PATHNAME' language 'C' with(isstrict);
|
||||
create function gts_penalty(internal,internal,internal) returns internal as 'MODULE_PATHNAME' language 'C' with(isstrict);
|
||||
|
||||
create function gts_picksplit(opaque, opaque) returns opaque as 'MODULE_PATHNAME' language 'C';
|
||||
create function gts_picksplit(internal, internal) returns internal as 'MODULE_PATHNAME' language 'C';
|
||||
|
||||
create function gts_union(bytea, opaque) returns int4 as 'MODULE_PATHNAME' language 'C';
|
||||
create function gts_union(bytea, internal) returns int4 as 'MODULE_PATHNAME' language 'C';
|
||||
|
||||
create function gts_same(opaque, opaque, opaque) returns opaque as 'MODULE_PATHNAME' language 'C';
|
||||
create function gts_same(internal, internal, internal) returns internal as 'MODULE_PATHNAME' language 'C';
|
||||
|
||||
-- Create the operator class
|
||||
CREATE OPERATOR CLASS gist_timestamp_ops
|
||||
@ -106,13 +106,13 @@ CREATE OPERATOR CLASS gist_timestamp_ops
|
||||
OPERATOR 3 = ,
|
||||
OPERATOR 4 >= ,
|
||||
OPERATOR 5 > ,
|
||||
FUNCTION 1 gts_consistent (opaque, timestamp, int2),
|
||||
FUNCTION 2 gts_union (bytea, opaque),
|
||||
FUNCTION 3 gts_compress (opaque),
|
||||
FUNCTION 4 btree_decompress (opaque),
|
||||
FUNCTION 5 gts_penalty (opaque, opaque, opaque),
|
||||
FUNCTION 6 gts_picksplit (opaque, opaque),
|
||||
FUNCTION 7 gts_same (opaque, opaque, opaque),
|
||||
FUNCTION 1 gts_consistent (internal, timestamp, int2),
|
||||
FUNCTION 2 gts_union (bytea, internal),
|
||||
FUNCTION 3 gts_compress (internal),
|
||||
FUNCTION 4 btree_decompress (internal),
|
||||
FUNCTION 5 gts_penalty (internal, internal, internal),
|
||||
FUNCTION 6 gts_picksplit (internal, internal),
|
||||
FUNCTION 7 gts_same (internal, internal, internal),
|
||||
STORAGE tskey;
|
||||
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
-- darcy@druid.net
|
||||
-- http://www.druid.net/darcy/
|
||||
--
|
||||
-- $Header: /cvsroot/pgsql/contrib/chkpass/chkpass.sql.in,v 1.1 2001/08/23 16:50:33 tgl Exp $
|
||||
-- $Header: /cvsroot/pgsql/contrib/chkpass/chkpass.sql.in,v 1.2 2002/08/22 00:01:38 tgl Exp $
|
||||
--
|
||||
-- best viewed with tabs set to 4
|
||||
--
|
||||
@ -13,13 +13,13 @@
|
||||
-- Input and output functions and the type itself:
|
||||
--
|
||||
|
||||
create function chkpass_in(opaque)
|
||||
returns opaque
|
||||
create function chkpass_in(cstring)
|
||||
returns chkpass
|
||||
as 'MODULE_PATHNAME'
|
||||
language 'c';
|
||||
|
||||
create function chkpass_out(opaque)
|
||||
returns opaque
|
||||
create function chkpass_out(chkpass)
|
||||
returns cstring
|
||||
as 'MODULE_PATHNAME'
|
||||
language 'c';
|
||||
|
||||
|
@ -99,14 +99,6 @@ cube_in(char *str)
|
||||
return ((NDBOX *) result);
|
||||
}
|
||||
|
||||
/*
|
||||
* You might have noticed a slight inconsistency between the following
|
||||
* declaration and the SQL definition:
|
||||
* CREATE FUNCTION cube_out(opaque) RETURNS opaque ...
|
||||
* The reason is that the argument pass into cube_out is really just a
|
||||
* pointer. POSTGRES thinks all output functions are:
|
||||
* char *out_func(char *);
|
||||
*/
|
||||
char *
|
||||
cube_out(NDBOX *cube)
|
||||
{
|
||||
|
@ -5,13 +5,13 @@ BEGIN TRANSACTION;
|
||||
-- Adjust this setting to control where the objects get created.
|
||||
SET search_path = public;
|
||||
|
||||
CREATE FUNCTION cube_in(opaque)
|
||||
RETURNS opaque
|
||||
CREATE FUNCTION cube_in(cstring)
|
||||
RETURNS cube
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' WITH (isStrict);
|
||||
|
||||
CREATE FUNCTION cube_out(opaque)
|
||||
RETURNS opaque
|
||||
CREATE FUNCTION cube_out(cube)
|
||||
RETURNS cstring
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' WITH (isStrict);
|
||||
|
||||
@ -192,25 +192,25 @@ CREATE OPERATOR ~ (
|
||||
|
||||
|
||||
-- define the GiST support methods
|
||||
CREATE FUNCTION g_cube_consistent(opaque,cube,int4) RETURNS bool
|
||||
CREATE FUNCTION g_cube_consistent(internal,cube,int4) RETURNS bool
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
|
||||
CREATE FUNCTION g_cube_compress(opaque) RETURNS opaque
|
||||
CREATE FUNCTION g_cube_compress(internal) RETURNS internal
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
|
||||
CREATE FUNCTION g_cube_decompress(opaque) RETURNS opaque
|
||||
CREATE FUNCTION g_cube_decompress(internal) RETURNS internal
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
|
||||
CREATE FUNCTION g_cube_penalty(opaque,opaque,opaque) RETURNS opaque
|
||||
CREATE FUNCTION g_cube_penalty(internal,internal,internal) RETURNS internal
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
|
||||
|
||||
CREATE FUNCTION g_cube_picksplit(opaque, opaque) RETURNS opaque
|
||||
CREATE FUNCTION g_cube_picksplit(internal, internal) RETURNS internal
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
|
||||
CREATE FUNCTION g_cube_union(bytea, opaque) RETURNS cube
|
||||
CREATE FUNCTION g_cube_union(bytea, internal) RETURNS cube
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
|
||||
CREATE FUNCTION g_cube_same(cube, cube, opaque) RETURNS opaque
|
||||
CREATE FUNCTION g_cube_same(cube, cube, internal) RETURNS internal
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
|
||||
|
||||
@ -226,13 +226,13 @@ CREATE OPERATOR CLASS gist_cube_ops
|
||||
OPERATOR 6 = ,
|
||||
OPERATOR 7 @ ,
|
||||
OPERATOR 8 ~ ,
|
||||
FUNCTION 1 g_cube_consistent (opaque, cube, int4),
|
||||
FUNCTION 2 g_cube_union (bytea, opaque),
|
||||
FUNCTION 3 g_cube_compress (opaque),
|
||||
FUNCTION 4 g_cube_decompress (opaque),
|
||||
FUNCTION 5 g_cube_penalty (opaque, opaque, opaque),
|
||||
FUNCTION 6 g_cube_picksplit (opaque, opaque),
|
||||
FUNCTION 7 g_cube_same (cube, cube, opaque);
|
||||
FUNCTION 1 g_cube_consistent (internal, cube, int4),
|
||||
FUNCTION 2 g_cube_union (bytea, internal),
|
||||
FUNCTION 3 g_cube_compress (internal),
|
||||
FUNCTION 4 g_cube_decompress (internal),
|
||||
FUNCTION 5 g_cube_penalty (internal, internal, internal),
|
||||
FUNCTION 6 g_cube_picksplit (internal, internal),
|
||||
FUNCTION 7 g_cube_same (cube, cube, internal);
|
||||
|
||||
|
||||
END TRANSACTION;
|
||||
|
@ -1,5 +1,5 @@
|
||||
|
||||
CREATE FUNCTION "recordchange" () RETURNS opaque AS
|
||||
CREATE FUNCTION "recordchange" () RETURNS trigger AS
|
||||
'/usr/local/pgsql/lib/pending.so', 'recordchange' LANGUAGE 'C';
|
||||
|
||||
CREATE TABLE "MirrorHost" (
|
||||
|
@ -58,7 +58,7 @@ sub-string will fit.
|
||||
|
||||
The create the function that contains the trigger::
|
||||
|
||||
create function fti() returns opaque as
|
||||
create function fti() returns trigger as
|
||||
'/path/to/fti.so' language 'C';
|
||||
|
||||
And finally define the trigger on the 'cds' table:
|
||||
|
@ -21,7 +21,7 @@
|
||||
* Example:
|
||||
*
|
||||
* -- Create the SQL function based on the compiled shared object
|
||||
* create function fti() returns opaque as
|
||||
* create function fti() returns trigger as
|
||||
* '/usr/local/pgsql/lib/contrib/fti.so' language 'C';
|
||||
*
|
||||
* -- Create the FTI table
|
||||
|
@ -27,7 +27,7 @@
|
||||
#
|
||||
# create index fti_idx on my_fti_table (string,id);
|
||||
#
|
||||
# create function fti() returns opaque as
|
||||
# create function fti() returns trigger as
|
||||
# '/path/to/fti/file/fti.so'
|
||||
# language 'C';
|
||||
#
|
||||
|
@ -1,3 +1,3 @@
|
||||
create function fti() returns opaque as
|
||||
create function fti() returns trigger as
|
||||
'MODULE_PATHNAME'
|
||||
language 'C';
|
@ -7,13 +7,13 @@ BEGIN TRANSACTION;
|
||||
SET search_path = public;
|
||||
|
||||
-- Query type
|
||||
CREATE FUNCTION bqarr_in(opaque)
|
||||
RETURNS opaque
|
||||
CREATE FUNCTION bqarr_in(cstring)
|
||||
RETURNS query_int
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
|
||||
CREATE FUNCTION bqarr_out(opaque)
|
||||
RETURNS opaque
|
||||
CREATE FUNCTION bqarr_out(query_int)
|
||||
RETURNS cstring
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
|
||||
@ -200,25 +200,25 @@ CREATE OPERATOR & (
|
||||
--------------
|
||||
|
||||
-- define the GiST support methods
|
||||
CREATE FUNCTION g_int_consistent(opaque,_int4,int4) RETURNS bool
|
||||
CREATE FUNCTION g_int_consistent(internal,_int4,int4) RETURNS bool
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
|
||||
CREATE FUNCTION g_int_compress(opaque) RETURNS opaque
|
||||
CREATE FUNCTION g_int_compress(internal) RETURNS internal
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
|
||||
CREATE FUNCTION g_int_decompress(opaque) RETURNS opaque
|
||||
CREATE FUNCTION g_int_decompress(internal) RETURNS internal
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
|
||||
CREATE FUNCTION g_int_penalty(opaque,opaque,opaque) RETURNS opaque
|
||||
CREATE FUNCTION g_int_penalty(internal,internal,internal) RETURNS internal
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
|
||||
|
||||
CREATE FUNCTION g_int_picksplit(opaque, opaque) RETURNS opaque
|
||||
CREATE FUNCTION g_int_picksplit(internal, internal) RETURNS internal
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
|
||||
CREATE FUNCTION g_int_union(bytea, opaque) RETURNS _int4
|
||||
CREATE FUNCTION g_int_union(bytea, internal) RETURNS _int4
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
|
||||
CREATE FUNCTION g_int_same(_int4, _int4, opaque) RETURNS opaque
|
||||
CREATE FUNCTION g_int_same(_int4, _int4, internal) RETURNS internal
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
|
||||
|
||||
@ -231,38 +231,38 @@ CREATE OPERATOR CLASS gist__int_ops
|
||||
OPERATOR 7 @,
|
||||
OPERATOR 8 ~,
|
||||
OPERATOR 20 @@ (_int4, query_int),
|
||||
FUNCTION 1 g_int_consistent (opaque, _int4, int4),
|
||||
FUNCTION 2 g_int_union (bytea, opaque),
|
||||
FUNCTION 3 g_int_compress (opaque),
|
||||
FUNCTION 4 g_int_decompress (opaque),
|
||||
FUNCTION 5 g_int_penalty (opaque, opaque, opaque),
|
||||
FUNCTION 6 g_int_picksplit (opaque, opaque),
|
||||
FUNCTION 7 g_int_same (_int4, _int4, opaque);
|
||||
FUNCTION 1 g_int_consistent (internal, _int4, int4),
|
||||
FUNCTION 2 g_int_union (bytea, internal),
|
||||
FUNCTION 3 g_int_compress (internal),
|
||||
FUNCTION 4 g_int_decompress (internal),
|
||||
FUNCTION 5 g_int_penalty (internal, internal, internal),
|
||||
FUNCTION 6 g_int_picksplit (internal, internal),
|
||||
FUNCTION 7 g_int_same (_int4, _int4, internal);
|
||||
|
||||
|
||||
---------------------------------------------
|
||||
-- intbig
|
||||
---------------------------------------------
|
||||
-- define the GiST support methods
|
||||
CREATE FUNCTION g_intbig_consistent(opaque,_int4,int4) RETURNS bool
|
||||
CREATE FUNCTION g_intbig_consistent(internal,_int4,int4) RETURNS bool
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
|
||||
CREATE FUNCTION g_intbig_compress(opaque) RETURNS opaque
|
||||
CREATE FUNCTION g_intbig_compress(internal) RETURNS internal
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
|
||||
CREATE FUNCTION g_intbig_decompress(opaque) RETURNS opaque
|
||||
CREATE FUNCTION g_intbig_decompress(internal) RETURNS internal
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
|
||||
CREATE FUNCTION g_intbig_penalty(opaque,opaque,opaque) RETURNS opaque
|
||||
CREATE FUNCTION g_intbig_penalty(internal,internal,internal) RETURNS internal
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
|
||||
|
||||
CREATE FUNCTION g_intbig_picksplit(opaque, opaque) RETURNS opaque
|
||||
CREATE FUNCTION g_intbig_picksplit(internal, internal) RETURNS internal
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
|
||||
CREATE FUNCTION g_intbig_union(bytea, opaque) RETURNS _int4
|
||||
CREATE FUNCTION g_intbig_union(bytea, internal) RETURNS _int4
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
|
||||
CREATE FUNCTION g_intbig_same(_int4, _int4, opaque) RETURNS opaque
|
||||
CREATE FUNCTION g_intbig_same(_int4, _int4, internal) RETURNS internal
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
|
||||
-- register the opclass for indexing (not as default)
|
||||
@ -274,12 +274,12 @@ CREATE OPERATOR CLASS gist__intbig_ops
|
||||
OPERATOR 7 @ RECHECK,
|
||||
OPERATOR 8 ~ RECHECK,
|
||||
OPERATOR 20 @@ (_int4, query_int) RECHECK,
|
||||
FUNCTION 1 g_intbig_consistent (opaque, _int4, int4),
|
||||
FUNCTION 2 g_intbig_union (bytea, opaque),
|
||||
FUNCTION 3 g_intbig_compress (opaque),
|
||||
FUNCTION 4 g_intbig_decompress (opaque),
|
||||
FUNCTION 5 g_intbig_penalty (opaque, opaque, opaque),
|
||||
FUNCTION 6 g_intbig_picksplit (opaque, opaque),
|
||||
FUNCTION 7 g_intbig_same (_int4, _int4, opaque);
|
||||
FUNCTION 1 g_intbig_consistent (internal, _int4, int4),
|
||||
FUNCTION 2 g_intbig_union (bytea, internal),
|
||||
FUNCTION 3 g_intbig_compress (internal),
|
||||
FUNCTION 4 g_intbig_decompress (internal),
|
||||
FUNCTION 5 g_intbig_penalty (internal, internal, internal),
|
||||
FUNCTION 6 g_intbig_picksplit (internal, internal),
|
||||
FUNCTION 7 g_intbig_same (_int4, _int4, internal);
|
||||
|
||||
END TRANSACTION;
|
||||
|
@ -1,7 +1,7 @@
|
||||
--
|
||||
-- PostgreSQL code for ISSNs.
|
||||
--
|
||||
-- $Id: isbn_issn.sql.in,v 1.5 2002/07/30 17:34:37 tgl Exp $
|
||||
-- $Id: isbn_issn.sql.in,v 1.6 2002/08/22 00:01:39 tgl Exp $
|
||||
--
|
||||
|
||||
-- Adjust this setting to control where the objects get created.
|
||||
@ -12,13 +12,13 @@ SET search_path = public;
|
||||
-- Input and output functions and the type itself:
|
||||
--
|
||||
|
||||
create function issn_in(opaque)
|
||||
returns opaque
|
||||
create function issn_in(cstring)
|
||||
returns issn
|
||||
as 'MODULE_PATHNAME'
|
||||
language 'c';
|
||||
|
||||
create function issn_out(opaque)
|
||||
returns opaque
|
||||
create function issn_out(issn)
|
||||
returns cstring
|
||||
as 'MODULE_PATHNAME'
|
||||
language 'c';
|
||||
|
||||
@ -123,19 +123,19 @@ create operator <> (
|
||||
--
|
||||
-- PostgreSQL code for ISBNs.
|
||||
--
|
||||
-- $Id: isbn_issn.sql.in,v 1.5 2002/07/30 17:34:37 tgl Exp $
|
||||
-- $Id: isbn_issn.sql.in,v 1.6 2002/08/22 00:01:39 tgl Exp $
|
||||
--
|
||||
--
|
||||
-- Input and output functions and the type itself:
|
||||
--
|
||||
|
||||
create function isbn_in(opaque)
|
||||
returns opaque
|
||||
create function isbn_in(cstring)
|
||||
returns isbn
|
||||
as 'MODULE_PATHNAME'
|
||||
language 'c';
|
||||
|
||||
create function isbn_out(opaque)
|
||||
returns opaque
|
||||
create function isbn_out(isbn)
|
||||
returns cstring
|
||||
as 'MODULE_PATHNAME'
|
||||
language 'c';
|
||||
|
||||
|
@ -1,21 +1,21 @@
|
||||
--
|
||||
-- PostgreSQL code for LargeObjects
|
||||
--
|
||||
-- $Id: lo.sql.in,v 1.6 2000/11/21 21:51:58 tgl Exp $
|
||||
-- $Id: lo.sql.in,v 1.7 2002/08/22 00:01:39 tgl Exp $
|
||||
--
|
||||
--
|
||||
-- Create the data type
|
||||
--
|
||||
|
||||
-- used by the lo type, it takes an oid and returns an lo object
|
||||
create function lo_in(opaque)
|
||||
returns opaque
|
||||
create function lo_in(cstring)
|
||||
returns lo
|
||||
as 'MODULE_PATHNAME'
|
||||
language 'c';
|
||||
|
||||
-- used by the lo type, it returns the oid of the object
|
||||
create function lo_out(opaque)
|
||||
returns opaque
|
||||
create function lo_out(lo)
|
||||
returns cstring
|
||||
as 'MODULE_PATHNAME'
|
||||
language 'c';
|
||||
|
||||
@ -51,6 +51,6 @@ create function lo(oid)
|
||||
|
||||
-- This is used in triggers
|
||||
create function lo_manage()
|
||||
returns opaque
|
||||
returns trigger
|
||||
as 'MODULE_PATHNAME'
|
||||
language 'c';
|
||||
|
@ -6,16 +6,10 @@
|
||||
-- remove our test table
|
||||
drop table a;
|
||||
|
||||
-- now drop any sql based functions associated with the lo type
|
||||
drop function oid(lo);
|
||||
-- now drop the type and associated C functions
|
||||
drop type lo CASCADE;
|
||||
|
||||
-- now drop the type
|
||||
drop type lo;
|
||||
|
||||
-- as the type is gone, remove the C based functions
|
||||
drop function lo_in(opaque);
|
||||
drop function lo_out(opaque);
|
||||
drop function lo(oid);
|
||||
-- the trigger function has no dependency on the type, so drop separately
|
||||
drop function lo_manage();
|
||||
|
||||
-- the lo stuff is now removed from the system
|
||||
|
@ -3,13 +3,13 @@ BEGIN;
|
||||
-- Adjust this setting to control where the objects get created.
|
||||
SET search_path = public;
|
||||
|
||||
CREATE FUNCTION ltree_in(opaque)
|
||||
RETURNS opaque
|
||||
CREATE FUNCTION ltree_in(cstring)
|
||||
RETURNS ltree
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
|
||||
CREATE FUNCTION ltree_out(opaque)
|
||||
RETURNS opaque
|
||||
CREATE FUNCTION ltree_out(ltree)
|
||||
RETURNS cstring
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
|
||||
@ -232,13 +232,13 @@ CREATE OPERATOR CLASS ltree_ops
|
||||
|
||||
|
||||
--lquery type
|
||||
CREATE FUNCTION lquery_in(opaque)
|
||||
RETURNS opaque
|
||||
CREATE FUNCTION lquery_in(cstring)
|
||||
RETURNS lquery
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
|
||||
CREATE FUNCTION lquery_out(opaque)
|
||||
RETURNS opaque
|
||||
CREATE FUNCTION lquery_out(lquery)
|
||||
RETURNS cstring
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
|
||||
@ -284,13 +284,13 @@ CREATE OPERATOR ^~ (
|
||||
RESTRICT = contsel, JOIN = contjoinsel
|
||||
);
|
||||
|
||||
CREATE FUNCTION ltxtq_in(opaque)
|
||||
RETURNS opaque
|
||||
CREATE FUNCTION ltxtq_in(cstring)
|
||||
RETURNS ltxtquery
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
|
||||
CREATE FUNCTION ltxtq_out(opaque)
|
||||
RETURNS opaque
|
||||
CREATE FUNCTION ltxtq_out(ltxtquery)
|
||||
RETURNS cstring
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
|
||||
@ -339,13 +339,13 @@ CREATE OPERATOR ^@ (
|
||||
);
|
||||
|
||||
--GiST support for ltree
|
||||
CREATE FUNCTION ltree_gist_in(opaque)
|
||||
RETURNS opaque
|
||||
CREATE FUNCTION ltree_gist_in(cstring)
|
||||
RETURNS ltree_gist
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
|
||||
CREATE FUNCTION ltree_gist_out(opaque)
|
||||
RETURNS opaque
|
||||
CREATE FUNCTION ltree_gist_out(ltree_gist)
|
||||
RETURNS cstring
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
|
||||
@ -357,13 +357,13 @@ CREATE TYPE ltree_gist (
|
||||
);
|
||||
|
||||
|
||||
create function ltree_consistent(opaque,opaque,int2) returns bool as 'MODULE_PATHNAME' language 'C';
|
||||
create function ltree_compress(opaque) returns opaque as 'MODULE_PATHNAME' language 'C';
|
||||
create function ltree_decompress(opaque) returns opaque as 'MODULE_PATHNAME' language 'C';
|
||||
create function ltree_penalty(opaque,opaque,opaque) returns opaque as 'MODULE_PATHNAME' language 'C' with(isstrict);
|
||||
create function ltree_picksplit(opaque, opaque) returns opaque as 'MODULE_PATHNAME' language 'C';
|
||||
create function ltree_union(bytea, opaque) returns int4 as 'MODULE_PATHNAME' language 'C';
|
||||
create function ltree_same(opaque, opaque, opaque) returns opaque as 'MODULE_PATHNAME' language 'C';
|
||||
create function ltree_consistent(internal,internal,int2) returns bool as 'MODULE_PATHNAME' language 'C';
|
||||
create function ltree_compress(internal) returns internal as 'MODULE_PATHNAME' language 'C';
|
||||
create function ltree_decompress(internal) returns internal as 'MODULE_PATHNAME' language 'C';
|
||||
create function ltree_penalty(internal,internal,internal) returns internal as 'MODULE_PATHNAME' language 'C' with(isstrict);
|
||||
create function ltree_picksplit(internal, internal) returns internal as 'MODULE_PATHNAME' language 'C';
|
||||
create function ltree_union(bytea, internal) returns int4 as 'MODULE_PATHNAME' language 'C';
|
||||
create function ltree_same(internal, internal, internal) returns internal as 'MODULE_PATHNAME' language 'C';
|
||||
|
||||
CREATE OPERATOR CLASS gist_ltree_ops
|
||||
DEFAULT FOR TYPE ltree USING gist AS
|
||||
@ -378,13 +378,13 @@ CREATE OPERATOR CLASS gist_ltree_ops
|
||||
OPERATOR 13 ~ (lquery, ltree) ,
|
||||
OPERATOR 14 @ (ltree, ltxtquery) ,
|
||||
OPERATOR 15 @ (ltxtquery, ltree) ,
|
||||
FUNCTION 1 ltree_consistent (opaque, opaque, int2),
|
||||
FUNCTION 2 ltree_union (bytea, opaque),
|
||||
FUNCTION 3 ltree_compress (opaque),
|
||||
FUNCTION 4 ltree_decompress (opaque),
|
||||
FUNCTION 5 ltree_penalty (opaque, opaque, opaque),
|
||||
FUNCTION 6 ltree_picksplit (opaque, opaque),
|
||||
FUNCTION 7 ltree_same (opaque, opaque, opaque),
|
||||
FUNCTION 1 ltree_consistent (internal, internal, int2),
|
||||
FUNCTION 2 ltree_union (bytea, internal),
|
||||
FUNCTION 3 ltree_compress (internal),
|
||||
FUNCTION 4 ltree_decompress (internal),
|
||||
FUNCTION 5 ltree_penalty (internal, internal, internal),
|
||||
FUNCTION 6 ltree_picksplit (internal, internal),
|
||||
FUNCTION 7 ltree_same (internal, internal, internal),
|
||||
STORAGE ltree_gist;
|
||||
|
||||
|
||||
@ -566,12 +566,12 @@ CREATE OPERATOR ?@ (
|
||||
);
|
||||
|
||||
--GiST support for ltree[]
|
||||
create function _ltree_consistent(opaque,opaque,int2) returns bool as 'MODULE_PATHNAME' language 'C';
|
||||
create function _ltree_compress(opaque) returns opaque as 'MODULE_PATHNAME' language 'C';
|
||||
create function _ltree_penalty(opaque,opaque,opaque) returns opaque as 'MODULE_PATHNAME' language 'C' with(isstrict);
|
||||
create function _ltree_picksplit(opaque, opaque) returns opaque as 'MODULE_PATHNAME' language 'C';
|
||||
create function _ltree_union(bytea, opaque) returns int4 as 'MODULE_PATHNAME' language 'C';
|
||||
create function _ltree_same(opaque, opaque, opaque) returns opaque as 'MODULE_PATHNAME' language 'C';
|
||||
create function _ltree_consistent(internal,internal,int2) returns bool as 'MODULE_PATHNAME' language 'C';
|
||||
create function _ltree_compress(internal) returns internal as 'MODULE_PATHNAME' language 'C';
|
||||
create function _ltree_penalty(internal,internal,internal) returns internal as 'MODULE_PATHNAME' language 'C' with(isstrict);
|
||||
create function _ltree_picksplit(internal, internal) returns internal as 'MODULE_PATHNAME' language 'C';
|
||||
create function _ltree_union(bytea, internal) returns int4 as 'MODULE_PATHNAME' language 'C';
|
||||
create function _ltree_same(internal, internal, internal) returns internal as 'MODULE_PATHNAME' language 'C';
|
||||
|
||||
CREATE OPERATOR CLASS gist__ltree_ops
|
||||
DEFAULT FOR TYPE _ltree USING gist AS
|
||||
@ -581,13 +581,13 @@ CREATE OPERATOR CLASS gist__ltree_ops
|
||||
OPERATOR 13 ~ (lquery, _ltree) RECHECK ,
|
||||
OPERATOR 14 @ (_ltree, ltxtquery) RECHECK ,
|
||||
OPERATOR 15 @ (ltxtquery, _ltree) RECHECK ,
|
||||
FUNCTION 1 _ltree_consistent (opaque, opaque, int2),
|
||||
FUNCTION 2 _ltree_union (bytea, opaque),
|
||||
FUNCTION 3 _ltree_compress (opaque),
|
||||
FUNCTION 4 ltree_decompress (opaque),
|
||||
FUNCTION 5 _ltree_penalty (opaque, opaque, opaque),
|
||||
FUNCTION 6 _ltree_picksplit (opaque, opaque),
|
||||
FUNCTION 7 _ltree_same (opaque, opaque, opaque),
|
||||
FUNCTION 1 _ltree_consistent (internal, internal, int2),
|
||||
FUNCTION 2 _ltree_union (bytea, internal),
|
||||
FUNCTION 3 _ltree_compress (internal),
|
||||
FUNCTION 4 ltree_decompress (internal),
|
||||
FUNCTION 5 _ltree_penalty (internal, internal, internal),
|
||||
FUNCTION 6 _ltree_picksplit (internal, internal),
|
||||
FUNCTION 7 _ltree_same (internal, internal, internal),
|
||||
STORAGE ltree_gist;
|
||||
|
||||
|
||||
|
@ -36,7 +36,7 @@
|
||||
# SUCH DAMAGE.
|
||||
#
|
||||
# $My2pg: my2pg.pl,v 1.24 2001/12/06 19:32:20 fonin Exp $
|
||||
# $Id: my2pg.pl,v 1.8 2002/04/24 01:42:29 momjian Exp $
|
||||
# $Id: my2pg.pl,v 1.9 2002/08/22 00:01:39 tgl Exp $
|
||||
|
||||
# TODO:
|
||||
# + Handle SETs
|
||||
@ -47,6 +47,12 @@
|
||||
|
||||
#
|
||||
# $Log: my2pg.pl,v $
|
||||
# Revision 1.9 2002/08/22 00:01:39 tgl
|
||||
# Add a bunch of pseudo-types to replace the behavior formerly associated
|
||||
# with OPAQUE, as per recent pghackers discussion. I still want to do some
|
||||
# more work on the 'cstring' pseudo-type, but I'm going to commit the bulk
|
||||
# of the changes now before the tree starts shifting under me ...
|
||||
#
|
||||
# Revision 1.8 2002/04/24 01:42:29 momjian
|
||||
# Update to my2pg 1.24.
|
||||
#
|
||||
@ -193,7 +199,7 @@ $libtypename.='/libtypes.so';
|
||||
# push header to libtypes.c
|
||||
open(LIBTYPES,">$libtypesource");
|
||||
print LIBTYPES "/******************************************************";
|
||||
print LIBTYPES "\n * My2Pg \$Revision: 1.8 $ \translated dump";
|
||||
print LIBTYPES "\n * My2Pg \$Revision: 1.9 $ \translated dump";
|
||||
print LIBTYPES "\n * User types definitions";
|
||||
print LIBTYPES "\n ******************************************************/";
|
||||
print LIBTYPES "\n\n#include <postgres.h>\n";
|
||||
@ -308,11 +314,11 @@ int2* $typename"."_in (char *str) {
|
||||
print LIBTYPES "\n * Types for table ".uc($table_name);
|
||||
print LIBTYPES "\n */\n";
|
||||
|
||||
$types.="\nCREATE FUNCTION $typename"."_in (opaque)
|
||||
$types.="\nCREATE FUNCTION $typename"."_in (cstring)
|
||||
RETURNS $typename
|
||||
AS '$libtypename'
|
||||
LANGUAGE 'c'
|
||||
WITH (ISCACHABLE);\n";
|
||||
WITH (ISSTRICT, ISCACHABLE);\n";
|
||||
|
||||
# creating output function
|
||||
my $func_out="
|
||||
@ -362,11 +368,11 @@ bool $typename"."_ge(int2* a, int2* b) {
|
||||
return (*a>=*b);
|
||||
}\n";
|
||||
|
||||
$types.="\nCREATE FUNCTION $typename"."_out (opaque)
|
||||
RETURNS opaque
|
||||
$types.="\nCREATE FUNCTION $typename"."_out ($typename)
|
||||
RETURNS cstring
|
||||
AS '$libtypename'
|
||||
LANGUAGE 'c'
|
||||
WITH (ISCACHABLE);\n";
|
||||
WITH (ISSTRICT, ISCACHABLE);\n";
|
||||
|
||||
$types.="\nCREATE TYPE $typename (
|
||||
internallength = 2,
|
||||
@ -509,7 +515,7 @@ $typesize* $typename"."_in (char *str) {
|
||||
print LIBTYPES "\n * Types for table ".uc($table_name);
|
||||
print LIBTYPES "\n */\n";
|
||||
|
||||
$types.="\nCREATE FUNCTION $typename"."_in (opaque)
|
||||
$types.="\nCREATE FUNCTION $typename"."_in (cstring)
|
||||
RETURNS $typename
|
||||
AS '$libtypename'
|
||||
LANGUAGE 'c';\n";
|
||||
@ -561,8 +567,8 @@ $typesize find_in_set($typesize *a, $typesize *b) {
|
||||
|
||||
\n";
|
||||
|
||||
$types.="\nCREATE FUNCTION $typename"."_out (opaque)
|
||||
RETURNS opaque
|
||||
$types.="\nCREATE FUNCTION $typename"."_out ($typename)
|
||||
RETURNS cstring
|
||||
AS '$libtypename'
|
||||
LANGUAGE 'c';\n";
|
||||
|
||||
@ -725,7 +731,7 @@ close(LIBTYPES);
|
||||
|
||||
open(MAKE,">Makefile");
|
||||
print MAKE "#
|
||||
# My2Pg \$Revision: 1.8 $ \translated dump
|
||||
# My2Pg \$Revision: 1.9 $ \translated dump
|
||||
# Makefile
|
||||
#
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
DROP FUNCTION noup ();
|
||||
|
||||
CREATE FUNCTION noup ()
|
||||
RETURNS opaque
|
||||
RETURNS trigger
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'C';
|
||||
|
@ -854,7 +854,7 @@ print STDERR "Add triggers definition...\n" if ($self->{debug});
|
||||
# Escaping Single Quotes
|
||||
#$trig->[4] =~ s/'/''/sg;
|
||||
|
||||
$sql_output .= "CREATE FUNCTION pg_fct_\L$trig->[0]\E () RETURNS OPAQUE AS '\n$trig->[4]\n' LANGUAGE 'plpgsql'\n\n";
|
||||
$sql_output .= "CREATE FUNCTION pg_fct_\L$trig->[0]\E () RETURNS TRIGGER AS '\n$trig->[4]\n' LANGUAGE 'plpgsql'\n\n";
|
||||
$sql_output .= "CREATE TRIGGER \L$trig->[0]\E\n\t$trig->[1] $trig->[2] ON \L$trig->[3]\E FOR EACH ROW\n\tEXECUTE PROCEDURE pg_fct_\L$trig->[0]\E();\n\n";
|
||||
}
|
||||
}
|
||||
|
@ -89,7 +89,7 @@ RollbackAndQuit($conn) if ($result->resultStatus ne PGRES_COMMAND_OK);
|
||||
$result = $conn->exec("create sequence _rserv_sync_seq_");
|
||||
RollbackAndQuit($conn) if ($result->resultStatus ne PGRES_COMMAND_OK);
|
||||
|
||||
$result = $conn->exec("CREATE FUNCTION _rserv_log_() RETURNS opaque" .
|
||||
$result = $conn->exec("CREATE FUNCTION _rserv_log_() RETURNS trigger" .
|
||||
" AS '@MODULE_FILENAME@' LANGUAGE 'c'");
|
||||
RollbackAndQuit($conn) if ($result->resultStatus ne PGRES_COMMAND_OK);
|
||||
|
||||
|
@ -79,7 +79,7 @@ create sequence _rserv_sync_seq_;
|
||||
drop function _rserv_log_();
|
||||
|
||||
CREATE FUNCTION _rserv_log_()
|
||||
RETURNS opaque
|
||||
RETURNS trigger
|
||||
AS '@MODULE_FILENAME@'
|
||||
LANGUAGE 'c'
|
||||
;
|
||||
|
@ -11,19 +11,19 @@ SET search_path = public;
|
||||
--
|
||||
--
|
||||
-- define the GiST support methods
|
||||
create function gbox_consistent(opaque,box,int4) returns bool as 'MODULE_PATHNAME' language 'C';
|
||||
create function gbox_consistent(internal,box,int4) returns bool as 'MODULE_PATHNAME' language 'C';
|
||||
|
||||
create function gbox_compress(opaque) returns opaque as 'MODULE_PATHNAME' language 'C';
|
||||
create function gbox_compress(internal) returns internal as 'MODULE_PATHNAME' language 'C';
|
||||
|
||||
create function rtree_decompress(opaque) returns opaque as 'MODULE_PATHNAME' language 'C';
|
||||
create function rtree_decompress(internal) returns internal as 'MODULE_PATHNAME' language 'C';
|
||||
|
||||
create function gbox_penalty(opaque,opaque,opaque) returns opaque as 'MODULE_PATHNAME' language 'C' with (isstrict);
|
||||
create function gbox_penalty(internal,internal,internal) returns internal as 'MODULE_PATHNAME' language 'C' with (isstrict);
|
||||
|
||||
create function gbox_picksplit(opaque, opaque) returns opaque as 'MODULE_PATHNAME' language 'C';
|
||||
create function gbox_picksplit(internal, internal) returns internal as 'MODULE_PATHNAME' language 'C';
|
||||
|
||||
create function gbox_union(bytea, opaque) returns box as 'MODULE_PATHNAME' language 'C';
|
||||
create function gbox_union(bytea, internal) returns box as 'MODULE_PATHNAME' language 'C';
|
||||
|
||||
create function gbox_same(box, box, opaque) returns opaque as 'MODULE_PATHNAME' language 'C';
|
||||
create function gbox_same(box, box, internal) returns internal as 'MODULE_PATHNAME' language 'C';
|
||||
|
||||
-- create the operator class
|
||||
CREATE OPERATOR CLASS gist_box_ops
|
||||
@ -36,13 +36,13 @@ CREATE OPERATOR CLASS gist_box_ops
|
||||
OPERATOR 6 ~= ,
|
||||
OPERATOR 7 ~ ,
|
||||
OPERATOR 8 @ ,
|
||||
FUNCTION 1 gbox_consistent (opaque, box, int4),
|
||||
FUNCTION 2 gbox_union (bytea, opaque),
|
||||
FUNCTION 3 gbox_compress (opaque),
|
||||
FUNCTION 4 rtree_decompress (opaque),
|
||||
FUNCTION 5 gbox_penalty (opaque, opaque, opaque),
|
||||
FUNCTION 6 gbox_picksplit (opaque, opaque),
|
||||
FUNCTION 7 gbox_same (box, box, opaque);
|
||||
FUNCTION 1 gbox_consistent (internal, box, int4),
|
||||
FUNCTION 2 gbox_union (bytea, internal),
|
||||
FUNCTION 3 gbox_compress (internal),
|
||||
FUNCTION 4 rtree_decompress (internal),
|
||||
FUNCTION 5 gbox_penalty (internal, internal, internal),
|
||||
FUNCTION 6 gbox_picksplit (internal, internal),
|
||||
FUNCTION 7 gbox_same (box, box, internal);
|
||||
|
||||
|
||||
--
|
||||
@ -53,9 +53,9 @@ CREATE OPERATOR CLASS gist_box_ops
|
||||
--
|
||||
--
|
||||
-- define the GiST support methods
|
||||
create function gpoly_consistent(opaque,polygon,int4) returns bool as 'MODULE_PATHNAME' language 'C';
|
||||
create function gpoly_consistent(internal,polygon,int4) returns bool as 'MODULE_PATHNAME' language 'C';
|
||||
|
||||
create function gpoly_compress(opaque) returns opaque as 'MODULE_PATHNAME' language 'C';
|
||||
create function gpoly_compress(internal) returns internal as 'MODULE_PATHNAME' language 'C';
|
||||
|
||||
-- create the operator class
|
||||
CREATE OPERATOR CLASS gist_poly_ops
|
||||
@ -68,13 +68,13 @@ CREATE OPERATOR CLASS gist_poly_ops
|
||||
OPERATOR 6 ~= RECHECK ,
|
||||
OPERATOR 7 ~ RECHECK ,
|
||||
OPERATOR 8 @ RECHECK ,
|
||||
FUNCTION 1 gpoly_consistent (opaque, polygon, int4),
|
||||
FUNCTION 2 gbox_union (bytea, opaque),
|
||||
FUNCTION 3 gpoly_compress (opaque),
|
||||
FUNCTION 4 rtree_decompress (opaque),
|
||||
FUNCTION 5 gbox_penalty (opaque, opaque, opaque),
|
||||
FUNCTION 6 gbox_picksplit (opaque, opaque),
|
||||
FUNCTION 7 gbox_same (box, box, opaque),
|
||||
FUNCTION 1 gpoly_consistent (internal, polygon, int4),
|
||||
FUNCTION 2 gbox_union (bytea, internal),
|
||||
FUNCTION 3 gpoly_compress (internal),
|
||||
FUNCTION 4 rtree_decompress (internal),
|
||||
FUNCTION 5 gbox_penalty (internal, internal, internal),
|
||||
FUNCTION 6 gbox_picksplit (internal, internal),
|
||||
FUNCTION 7 gbox_same (box, box, internal),
|
||||
STORAGE box;
|
||||
|
||||
|
||||
|
@ -114,14 +114,6 @@ seg_in(char *str)
|
||||
return (result);
|
||||
}
|
||||
|
||||
/*
|
||||
* You might have noticed a slight inconsistency between the following
|
||||
* declaration and the SQL definition:
|
||||
* CREATE FUNCTION seg_out(opaque) RETURNS opaque ...
|
||||
* The reason is that the argument passed into seg_out is really just a
|
||||
* pointer. POSTGRES thinks all output functions are:
|
||||
* char *out_func(char *);
|
||||
*/
|
||||
char *
|
||||
seg_out(SEG * seg)
|
||||
{
|
||||
|
@ -5,13 +5,13 @@ BEGIN TRANSACTION;
|
||||
-- Adjust this setting to control where the objects get created.
|
||||
SET search_path = public;
|
||||
|
||||
CREATE FUNCTION seg_in(opaque)
|
||||
RETURNS opaque
|
||||
CREATE FUNCTION seg_in(cstring)
|
||||
RETURNS seg
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c';
|
||||
|
||||
CREATE FUNCTION seg_out(opaque)
|
||||
RETURNS opaque
|
||||
CREATE FUNCTION seg_out(seg)
|
||||
RETURNS cstring
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c';
|
||||
|
||||
@ -216,25 +216,25 @@ CREATE OPERATOR ~ (
|
||||
|
||||
|
||||
-- define the GiST support methods
|
||||
CREATE FUNCTION gseg_consistent(opaque,seg,int4) RETURNS bool
|
||||
CREATE FUNCTION gseg_consistent(internal,seg,int4) RETURNS bool
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
|
||||
CREATE FUNCTION gseg_compress(opaque) RETURNS opaque
|
||||
CREATE FUNCTION gseg_compress(internal) RETURNS internal
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
|
||||
CREATE FUNCTION gseg_decompress(opaque) RETURNS opaque
|
||||
CREATE FUNCTION gseg_decompress(internal) RETURNS internal
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
|
||||
CREATE FUNCTION gseg_penalty(opaque,opaque,opaque) RETURNS opaque
|
||||
CREATE FUNCTION gseg_penalty(internal,internal,internal) RETURNS internal
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
|
||||
|
||||
CREATE FUNCTION gseg_picksplit(opaque, opaque) RETURNS opaque
|
||||
CREATE FUNCTION gseg_picksplit(internal, internal) RETURNS internal
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
|
||||
CREATE FUNCTION gseg_union(bytea, opaque) RETURNS seg
|
||||
CREATE FUNCTION gseg_union(bytea, internal) RETURNS seg
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
|
||||
CREATE FUNCTION gseg_same(seg, seg, opaque) RETURNS opaque
|
||||
CREATE FUNCTION gseg_same(seg, seg, internal) RETURNS internal
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
|
||||
|
||||
@ -250,13 +250,13 @@ CREATE OPERATOR CLASS gist_seg_ops
|
||||
OPERATOR 6 = ,
|
||||
OPERATOR 7 @ ,
|
||||
OPERATOR 8 ~ ,
|
||||
FUNCTION 1 gseg_consistent (opaque, seg, int4),
|
||||
FUNCTION 2 gseg_union (bytea, opaque),
|
||||
FUNCTION 3 gseg_compress (opaque),
|
||||
FUNCTION 4 gseg_decompress (opaque),
|
||||
FUNCTION 5 gseg_penalty (opaque, opaque, opaque),
|
||||
FUNCTION 6 gseg_picksplit (opaque, opaque),
|
||||
FUNCTION 7 gseg_same (seg, seg, opaque);
|
||||
FUNCTION 1 gseg_consistent (internal, seg, int4),
|
||||
FUNCTION 2 gseg_union (bytea, internal),
|
||||
FUNCTION 3 gseg_compress (internal),
|
||||
FUNCTION 4 gseg_decompress (internal),
|
||||
FUNCTION 5 gseg_penalty (internal, internal, internal),
|
||||
FUNCTION 6 gseg_picksplit (internal, internal),
|
||||
FUNCTION 7 gseg_same (seg, seg, internal);
|
||||
|
||||
|
||||
END TRANSACTION;
|
||||
|
@ -1,6 +1,6 @@
|
||||
DROP FUNCTION autoinc();
|
||||
|
||||
CREATE FUNCTION autoinc()
|
||||
RETURNS opaque
|
||||
RETURNS trigger
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'C';
|
||||
|
@ -1,6 +1,6 @@
|
||||
DROP FUNCTION insert_username();
|
||||
|
||||
CREATE FUNCTION insert_username()
|
||||
RETURNS opaque
|
||||
RETURNS trigger
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'C';
|
||||
|
@ -1,6 +1,6 @@
|
||||
DROP FUNCTION moddatetime();
|
||||
|
||||
CREATE FUNCTION moddatetime()
|
||||
RETURNS opaque
|
||||
RETURNS trigger
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'C';
|
||||
|
@ -2,11 +2,11 @@ DROP FUNCTION check_primary_key ();
|
||||
DROP FUNCTION check_foreign_key ();
|
||||
|
||||
CREATE FUNCTION check_primary_key ()
|
||||
RETURNS opaque
|
||||
RETURNS trigger
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'C';
|
||||
|
||||
CREATE FUNCTION check_foreign_key ()
|
||||
RETURNS opaque
|
||||
RETURNS trigger
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'C';
|
||||
|
@ -2,7 +2,7 @@ DROP FUNCTION timetravel();
|
||||
DROP FUNCTION set_timetravel(name, int4);
|
||||
|
||||
CREATE FUNCTION timetravel()
|
||||
RETURNS opaque
|
||||
RETURNS trigger
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'C';
|
||||
|
||||
|
@ -9,21 +9,21 @@
|
||||
|
||||
-- Define the new output functions.
|
||||
--
|
||||
create function c_charout(opaque) returns int4
|
||||
create function c_charout(bpchar) returns cstring
|
||||
as 'MODULE_PATHNAME'
|
||||
language 'c';
|
||||
|
||||
create function c_textout(opaque) returns int4
|
||||
create function c_textout(text) returns cstring
|
||||
as 'MODULE_PATHNAME'
|
||||
language 'c';
|
||||
|
||||
create function c_varcharout(opaque) returns int4
|
||||
create function c_varcharout(varchar) returns cstring
|
||||
as 'MODULE_PATHNAME'
|
||||
language 'c';
|
||||
|
||||
-- This is not needed because escapes are handled by the parser
|
||||
--
|
||||
-- create function c_textin(opaque)
|
||||
-- create function c_textin(cstring)
|
||||
-- returns text
|
||||
-- as 'MODULE_PATHNAME'
|
||||
-- language 'c';
|
||||
|
@ -5,13 +5,13 @@ SET search_path = public;
|
||||
|
||||
-- TXTIDX type
|
||||
|
||||
CREATE FUNCTION txtidx_in(opaque)
|
||||
RETURNS opaque
|
||||
CREATE FUNCTION txtidx_in(cstring)
|
||||
RETURNS txtidx
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
|
||||
CREATE FUNCTION txtidx_out(opaque)
|
||||
RETURNS opaque
|
||||
CREATE FUNCTION txtidx_out(txtidx)
|
||||
RETURNS cstring
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
|
||||
@ -34,13 +34,13 @@ LANGUAGE 'c' with (isstrict);
|
||||
|
||||
--QUERYTYPES
|
||||
--without morphology
|
||||
CREATE FUNCTION qtxt_in(opaque)
|
||||
RETURNS opaque
|
||||
CREATE FUNCTION qtxt_in(cstring)
|
||||
RETURNS query_txt
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
|
||||
CREATE FUNCTION qtxt_out(opaque)
|
||||
RETURNS opaque
|
||||
CREATE FUNCTION qtxt_out(query_txt)
|
||||
RETURNS cstring
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
|
||||
@ -51,15 +51,21 @@ output = qtxt_out
|
||||
);
|
||||
|
||||
--with morphology
|
||||
CREATE FUNCTION mqtxt_in(opaque)
|
||||
RETURNS opaque
|
||||
CREATE FUNCTION mqtxt_in(cstring)
|
||||
RETURNS mquery_txt
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
|
||||
--same C output function as for query_txt
|
||||
CREATE FUNCTION mqtxt_out(mquery_txt)
|
||||
RETURNS cstring
|
||||
AS 'MODULE_PATHNAME', 'qtxt_out'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
|
||||
CREATE TYPE mquery_txt (
|
||||
internallength = -1,
|
||||
input = mqtxt_in,
|
||||
output = qtxt_out
|
||||
output = mqtxt_out
|
||||
);
|
||||
|
||||
--only for debug
|
||||
@ -115,19 +121,19 @@ CREATE OPERATOR ~# (
|
||||
);
|
||||
|
||||
--Trigger
|
||||
create function tsearch() returns opaque as
|
||||
create function tsearch() returns trigger as
|
||||
'MODULE_PATHNAME'
|
||||
language 'C';
|
||||
|
||||
--GiST
|
||||
--GiST key type
|
||||
CREATE FUNCTION gtxtidx_in(opaque)
|
||||
RETURNS opaque
|
||||
CREATE FUNCTION gtxtidx_in(cstring)
|
||||
RETURNS gtxtidx
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
|
||||
CREATE FUNCTION gtxtidx_out(opaque)
|
||||
RETURNS opaque
|
||||
CREATE FUNCTION gtxtidx_out(gtxtidx)
|
||||
RETURNS cstring
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE 'c' with (isstrict);
|
||||
|
||||
@ -138,25 +144,25 @@ output = gtxtidx_out
|
||||
);
|
||||
|
||||
-- support functions
|
||||
CREATE FUNCTION gtxtidx_consistent(gtxtidx,opaque,int4) RETURNS bool
|
||||
CREATE FUNCTION gtxtidx_consistent(gtxtidx,internal,int4) RETURNS bool
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
|
||||
CREATE FUNCTION gtxtidx_compress(opaque) RETURNS opaque
|
||||
CREATE FUNCTION gtxtidx_compress(internal) RETURNS internal
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
|
||||
CREATE FUNCTION gtxtidx_decompress(opaque) RETURNS opaque
|
||||
CREATE FUNCTION gtxtidx_decompress(internal) RETURNS internal
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
|
||||
CREATE FUNCTION gtxtidx_penalty(opaque,opaque,opaque) RETURNS opaque
|
||||
CREATE FUNCTION gtxtidx_penalty(internal,internal,internal) RETURNS internal
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
|
||||
|
||||
CREATE FUNCTION gtxtidx_picksplit(opaque, opaque) RETURNS opaque
|
||||
CREATE FUNCTION gtxtidx_picksplit(internal, internal) RETURNS internal
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
|
||||
CREATE FUNCTION gtxtidx_union(bytea, opaque) RETURNS _int4
|
||||
CREATE FUNCTION gtxtidx_union(bytea, internal) RETURNS _int4
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
|
||||
CREATE FUNCTION gtxtidx_same(gtxtidx, gtxtidx, opaque) RETURNS opaque
|
||||
CREATE FUNCTION gtxtidx_same(gtxtidx, gtxtidx, internal) RETURNS internal
|
||||
AS 'MODULE_PATHNAME' LANGUAGE 'c';
|
||||
|
||||
-- create the operator class
|
||||
@ -164,13 +170,13 @@ CREATE OPERATOR CLASS gist_txtidx_ops
|
||||
DEFAULT FOR TYPE txtidx USING gist AS
|
||||
OPERATOR 1 @@ (txtidx, query_txt) RECHECK ,
|
||||
OPERATOR 2 ## (txtidx, mquery_txt) RECHECK ,
|
||||
FUNCTION 1 gtxtidx_consistent (gtxtidx, opaque, int4),
|
||||
FUNCTION 2 gtxtidx_union (bytea, opaque),
|
||||
FUNCTION 3 gtxtidx_compress (opaque),
|
||||
FUNCTION 4 gtxtidx_decompress (opaque),
|
||||
FUNCTION 5 gtxtidx_penalty (opaque, opaque, opaque),
|
||||
FUNCTION 6 gtxtidx_picksplit (opaque, opaque),
|
||||
FUNCTION 7 gtxtidx_same (gtxtidx, gtxtidx, opaque),
|
||||
FUNCTION 1 gtxtidx_consistent (gtxtidx, internal, int4),
|
||||
FUNCTION 2 gtxtidx_union (bytea, internal),
|
||||
FUNCTION 3 gtxtidx_compress (internal),
|
||||
FUNCTION 4 gtxtidx_decompress (internal),
|
||||
FUNCTION 5 gtxtidx_penalty (internal, internal, internal),
|
||||
FUNCTION 6 gtxtidx_picksplit (internal, internal),
|
||||
FUNCTION 7 gtxtidx_same (gtxtidx, gtxtidx, internal),
|
||||
STORAGE gtxtidx;
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user