Commit 7f4f42fa authored by Peter Eisentraut's avatar Peter Eisentraut

Clean up CREATE FUNCTION syntax usage in contrib and elsewhere, in

particular get rid of single quotes around language names and old WITH ()
construct.
parent fe83b3eb
This diff is collapsed.
...@@ -7,12 +7,12 @@ SET search_path = public; ...@@ -7,12 +7,12 @@ SET search_path = public;
CREATE OR REPLACE FUNCTION cube_in(cstring) CREATE OR REPLACE FUNCTION cube_in(cstring)
RETURNS cube RETURNS cube
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION cube_out(cube) CREATE OR REPLACE FUNCTION cube_out(cube)
RETURNS cstring RETURNS cstring
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
CREATE TYPE cube ( CREATE TYPE cube (
INTERNALLENGTH = variable, INTERNALLENGTH = variable,
...@@ -27,7 +27,7 @@ COMMENT ON TYPE cube IS 'multi-dimensional cube ''(FLOAT-1, FLOAT-2, ..., FLOAT- ...@@ -27,7 +27,7 @@ COMMENT ON TYPE cube IS 'multi-dimensional cube ''(FLOAT-1, FLOAT-2, ..., FLOAT-
CREATE OR REPLACE FUNCTION cube(text) RETURNS cube CREATE OR REPLACE FUNCTION cube(text) RETURNS cube
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
COMMENT ON FUNCTION cube(text) IS 'convert text to cube'; COMMENT ON FUNCTION cube(text) IS 'convert text to cube';
...@@ -42,70 +42,70 @@ CREATE CAST (text AS cube) WITH FUNCTION cube(text) AS ASSIGNMENT; ...@@ -42,70 +42,70 @@ CREATE CAST (text AS cube) WITH FUNCTION cube(text) AS ASSIGNMENT;
CREATE OR REPLACE FUNCTION cube_eq(cube, cube) CREATE OR REPLACE FUNCTION cube_eq(cube, cube)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
COMMENT ON FUNCTION cube_eq(cube, cube) IS 'same as'; COMMENT ON FUNCTION cube_eq(cube, cube) IS 'same as';
CREATE OR REPLACE FUNCTION cube_ne(cube, cube) CREATE OR REPLACE FUNCTION cube_ne(cube, cube)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
COMMENT ON FUNCTION cube_ne(cube, cube) IS 'different'; COMMENT ON FUNCTION cube_ne(cube, cube) IS 'different';
CREATE OR REPLACE FUNCTION cube_lt(cube, cube) CREATE OR REPLACE FUNCTION cube_lt(cube, cube)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
COMMENT ON FUNCTION cube_lt(cube, cube) IS 'lower than'; COMMENT ON FUNCTION cube_lt(cube, cube) IS 'lower than';
CREATE OR REPLACE FUNCTION cube_gt(cube, cube) CREATE OR REPLACE FUNCTION cube_gt(cube, cube)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
COMMENT ON FUNCTION cube_gt(cube, cube) IS 'greater than'; COMMENT ON FUNCTION cube_gt(cube, cube) IS 'greater than';
CREATE OR REPLACE FUNCTION cube_le(cube, cube) CREATE OR REPLACE FUNCTION cube_le(cube, cube)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
COMMENT ON FUNCTION cube_le(cube, cube) IS 'lower than or equal to'; COMMENT ON FUNCTION cube_le(cube, cube) IS 'lower than or equal to';
CREATE OR REPLACE FUNCTION cube_ge(cube, cube) CREATE OR REPLACE FUNCTION cube_ge(cube, cube)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
COMMENT ON FUNCTION cube_ge(cube, cube) IS 'greater than or equal to'; COMMENT ON FUNCTION cube_ge(cube, cube) IS 'greater than or equal to';
CREATE OR REPLACE FUNCTION cube_cmp(cube, cube) CREATE OR REPLACE FUNCTION cube_cmp(cube, cube)
RETURNS int4 RETURNS int4
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
COMMENT ON FUNCTION cube_cmp(cube, cube) IS 'btree comparison function'; COMMENT ON FUNCTION cube_cmp(cube, cube) IS 'btree comparison function';
CREATE OR REPLACE FUNCTION cube_contains(cube, cube) CREATE OR REPLACE FUNCTION cube_contains(cube, cube)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
COMMENT ON FUNCTION cube_contains(cube, cube) IS 'contains'; COMMENT ON FUNCTION cube_contains(cube, cube) IS 'contains';
CREATE OR REPLACE FUNCTION cube_contained(cube, cube) CREATE OR REPLACE FUNCTION cube_contained(cube, cube)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
COMMENT ON FUNCTION cube_contained(cube, cube) IS 'contained in'; COMMENT ON FUNCTION cube_contained(cube, cube) IS 'contained in';
CREATE OR REPLACE FUNCTION cube_overlap(cube, cube) CREATE OR REPLACE FUNCTION cube_overlap(cube, cube)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
COMMENT ON FUNCTION cube_overlap(cube, cube) IS 'overlaps'; COMMENT ON FUNCTION cube_overlap(cube, cube) IS 'overlaps';
...@@ -114,17 +114,17 @@ COMMENT ON FUNCTION cube_overlap(cube, cube) IS 'overlaps'; ...@@ -114,17 +114,17 @@ COMMENT ON FUNCTION cube_overlap(cube, cube) IS 'overlaps';
CREATE OR REPLACE FUNCTION cube_union(cube, cube) CREATE OR REPLACE FUNCTION cube_union(cube, cube)
RETURNS cube RETURNS cube
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION cube_inter(cube, cube) CREATE OR REPLACE FUNCTION cube_inter(cube, cube)
RETURNS cube RETURNS cube
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION cube_size(cube) CREATE OR REPLACE FUNCTION cube_size(cube)
RETURNS float8 RETURNS float8
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
-- Misc N-dimensional functions -- Misc N-dimensional functions
...@@ -134,54 +134,54 @@ LANGUAGE 'C' IMMUTABLE STRICT; ...@@ -134,54 +134,54 @@ LANGUAGE 'C' IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION cube_distance(cube, cube) CREATE OR REPLACE FUNCTION cube_distance(cube, cube)
RETURNS float8 RETURNS float8
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
-- Extracting elements functions -- Extracting elements functions
CREATE OR REPLACE FUNCTION cube_dim(cube) CREATE OR REPLACE FUNCTION cube_dim(cube)
RETURNS int4 RETURNS int4
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION cube_ll_coord(cube, int4) CREATE OR REPLACE FUNCTION cube_ll_coord(cube, int4)
RETURNS float8 RETURNS float8
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION cube_ur_coord(cube, int4) CREATE OR REPLACE FUNCTION cube_ur_coord(cube, int4)
RETURNS float8 RETURNS float8
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION cube(float8) RETURNS cube CREATE OR REPLACE FUNCTION cube(float8) RETURNS cube
AS 'MODULE_PATHNAME', 'cube_f8' AS 'MODULE_PATHNAME', 'cube_f8'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION cube(float8, float8) RETURNS cube CREATE OR REPLACE FUNCTION cube(float8, float8) RETURNS cube
AS 'MODULE_PATHNAME', 'cube_f8_f8' AS 'MODULE_PATHNAME', 'cube_f8_f8'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION cube(cube, float8) RETURNS cube CREATE OR REPLACE FUNCTION cube(cube, float8) RETURNS cube
AS 'MODULE_PATHNAME', 'cube_c_f8' AS 'MODULE_PATHNAME', 'cube_c_f8'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION cube(cube, float8, float8) RETURNS cube CREATE OR REPLACE FUNCTION cube(cube, float8, float8) RETURNS cube
AS 'MODULE_PATHNAME', 'cube_c_f8_f8' AS 'MODULE_PATHNAME', 'cube_c_f8_f8'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
-- Test if cube is also a point -- Test if cube is also a point
CREATE OR REPLACE FUNCTION cube_is_point(cube) CREATE OR REPLACE FUNCTION cube_is_point(cube)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
-- Increasing the size of a cube by a radius in at least n dimensions -- Increasing the size of a cube by a radius in at least n dimensions
CREATE OR REPLACE FUNCTION cube_enlarge(cube, float8, int4) CREATE OR REPLACE FUNCTION cube_enlarge(cube, float8, int4)
RETURNS cube RETURNS cube
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
-- --
-- OPERATORS -- OPERATORS
...@@ -247,37 +247,37 @@ CREATE OPERATOR ~ ( ...@@ -247,37 +247,37 @@ CREATE OPERATOR ~ (
CREATE OR REPLACE FUNCTION g_cube_consistent(internal,cube,int4) CREATE OR REPLACE FUNCTION g_cube_consistent(internal,cube,int4)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
CREATE OR REPLACE FUNCTION g_cube_compress(internal) CREATE OR REPLACE FUNCTION g_cube_compress(internal)
RETURNS internal RETURNS internal
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
CREATE OR REPLACE FUNCTION g_cube_decompress(internal) CREATE OR REPLACE FUNCTION g_cube_decompress(internal)
RETURNS internal RETURNS internal
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
CREATE OR REPLACE FUNCTION g_cube_penalty(internal,internal,internal) CREATE OR REPLACE FUNCTION g_cube_penalty(internal,internal,internal)
RETURNS internal RETURNS internal
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION g_cube_picksplit(internal, internal) CREATE OR REPLACE FUNCTION g_cube_picksplit(internal, internal)
RETURNS internal RETURNS internal
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
CREATE OR REPLACE FUNCTION g_cube_union(internal, internal) CREATE OR REPLACE FUNCTION g_cube_union(internal, internal)
RETURNS cube RETURNS cube
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
CREATE OR REPLACE FUNCTION g_cube_same(cube, cube, internal) CREATE OR REPLACE FUNCTION g_cube_same(cube, cube, internal)
RETURNS internal RETURNS internal
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
-- Create the operator classes for indexing -- Create the operator classes for indexing
......
CREATE OR REPLACE FUNCTION dblink_connect (text) CREATE OR REPLACE FUNCTION dblink_connect (text)
RETURNS text RETURNS text
AS 'MODULE_PATHNAME','dblink_connect' AS 'MODULE_PATHNAME','dblink_connect'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION dblink_connect (text, text) CREATE OR REPLACE FUNCTION dblink_connect (text, text)
RETURNS text RETURNS text
AS 'MODULE_PATHNAME','dblink_connect' AS 'MODULE_PATHNAME','dblink_connect'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION dblink_disconnect () CREATE OR REPLACE FUNCTION dblink_disconnect ()
RETURNS text RETURNS text
AS 'MODULE_PATHNAME','dblink_disconnect' AS 'MODULE_PATHNAME','dblink_disconnect'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION dblink_disconnect (text) CREATE OR REPLACE FUNCTION dblink_disconnect (text)
RETURNS text RETURNS text
AS 'MODULE_PATHNAME','dblink_disconnect' AS 'MODULE_PATHNAME','dblink_disconnect'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION dblink_open (text,text) CREATE OR REPLACE FUNCTION dblink_open (text, text)
RETURNS text RETURNS text
AS 'MODULE_PATHNAME','dblink_open' AS 'MODULE_PATHNAME','dblink_open'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION dblink_open (text,text,bool) CREATE OR REPLACE FUNCTION dblink_open (text, text, boolean)
RETURNS text RETURNS text
AS 'MODULE_PATHNAME','dblink_open' AS 'MODULE_PATHNAME','dblink_open'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION dblink_open (text,text,text) CREATE OR REPLACE FUNCTION dblink_open (text, text, text)
RETURNS text RETURNS text
AS 'MODULE_PATHNAME','dblink_open' AS 'MODULE_PATHNAME','dblink_open'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION dblink_open (text,text,text,bool) CREATE OR REPLACE FUNCTION dblink_open (text, text, text, boolean)
RETURNS text RETURNS text
AS 'MODULE_PATHNAME','dblink_open' AS 'MODULE_PATHNAME','dblink_open'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION dblink_fetch (text,int) CREATE OR REPLACE FUNCTION dblink_fetch (text, int)
RETURNS setof record RETURNS setof record
AS 'MODULE_PATHNAME','dblink_fetch' AS 'MODULE_PATHNAME','dblink_fetch'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION dblink_fetch (text,int,bool) CREATE OR REPLACE FUNCTION dblink_fetch (text, int, boolean)
RETURNS setof record RETURNS setof record
AS 'MODULE_PATHNAME','dblink_fetch' AS 'MODULE_PATHNAME','dblink_fetch'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION dblink_fetch (text,text,int) CREATE OR REPLACE FUNCTION dblink_fetch (text, text, int)
RETURNS setof record RETURNS setof record
AS 'MODULE_PATHNAME','dblink_fetch' AS 'MODULE_PATHNAME','dblink_fetch'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION dblink_fetch (text,text,int,bool) CREATE OR REPLACE FUNCTION dblink_fetch (text, text, int, boolean)
RETURNS setof record RETURNS setof record
AS 'MODULE_PATHNAME','dblink_fetch' AS 'MODULE_PATHNAME','dblink_fetch'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION dblink_close (text) CREATE OR REPLACE FUNCTION dblink_close (text)
RETURNS text RETURNS text
AS 'MODULE_PATHNAME','dblink_close' AS 'MODULE_PATHNAME','dblink_close'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION dblink_close (text,bool) CREATE OR REPLACE FUNCTION dblink_close (text, boolean)
RETURNS text RETURNS text
AS 'MODULE_PATHNAME','dblink_close' AS 'MODULE_PATHNAME','dblink_close'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION dblink_close (text,text) CREATE OR REPLACE FUNCTION dblink_close (text, text)
RETURNS text RETURNS text
AS 'MODULE_PATHNAME','dblink_close' AS 'MODULE_PATHNAME','dblink_close'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION dblink_close (text,text,bool) CREATE OR REPLACE FUNCTION dblink_close (text, text, boolean)
RETURNS text RETURNS text
AS 'MODULE_PATHNAME','dblink_close' AS 'MODULE_PATHNAME','dblink_close'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION dblink (text,text) CREATE OR REPLACE FUNCTION dblink (text, text)
RETURNS setof record RETURNS setof record
AS 'MODULE_PATHNAME','dblink_record' AS 'MODULE_PATHNAME','dblink_record'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION dblink (text,text,bool) CREATE OR REPLACE FUNCTION dblink (text, text, boolean)
RETURNS setof record RETURNS setof record
AS 'MODULE_PATHNAME','dblink_record' AS 'MODULE_PATHNAME','dblink_record'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION dblink (text) CREATE OR REPLACE FUNCTION dblink (text)
RETURNS setof record RETURNS setof record
AS 'MODULE_PATHNAME','dblink_record' AS 'MODULE_PATHNAME','dblink_record'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION dblink (text,bool) CREATE OR REPLACE FUNCTION dblink (text, boolean)
RETURNS setof record RETURNS setof record
AS 'MODULE_PATHNAME','dblink_record' AS 'MODULE_PATHNAME','dblink_record'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION dblink_exec (text,text) CREATE OR REPLACE FUNCTION dblink_exec (text, text)
RETURNS text RETURNS text
AS 'MODULE_PATHNAME','dblink_exec' AS 'MODULE_PATHNAME','dblink_exec'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION dblink_exec (text,text,bool) CREATE OR REPLACE FUNCTION dblink_exec (text, text, boolean)
RETURNS text RETURNS text
AS 'MODULE_PATHNAME','dblink_exec' AS 'MODULE_PATHNAME','dblink_exec'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION dblink_exec (text) CREATE OR REPLACE FUNCTION dblink_exec (text)
RETURNS text RETURNS text
AS 'MODULE_PATHNAME','dblink_exec' AS 'MODULE_PATHNAME','dblink_exec'
LANGUAGE 'c' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION dblink_exec (text,bool) CREATE OR REPLACE FUNCTION dblink_exec (text,boolean)
RETURNS text RETURNS text
AS 'MODULE_PATHNAME','dblink_exec' AS 'MODULE_PATHNAME','dblink_exec'
LANGUAGE 'c' STRICT; LANGUAGE C STRICT;
CREATE TYPE dblink_pkey_results AS (position int4, colname text); CREATE TYPE dblink_pkey_results AS (position int, colname text);
CREATE OR REPLACE FUNCTION dblink_get_pkey (text) CREATE OR REPLACE FUNCTION dblink_get_pkey (text)
RETURNS setof dblink_pkey_results RETURNS setof dblink_pkey_results
AS 'MODULE_PATHNAME','dblink_get_pkey' AS 'MODULE_PATHNAME','dblink_get_pkey'
LANGUAGE 'c' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION dblink_build_sql_insert (text, int2vector, int4, _text, _text) CREATE OR REPLACE FUNCTION dblink_build_sql_insert (text, int2vector, int, _text, _text)
RETURNS text RETURNS text
AS 'MODULE_PATHNAME','dblink_build_sql_insert' AS 'MODULE_PATHNAME','dblink_build_sql_insert'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION dblink_build_sql_delete (text, int2vector, int4, _text) CREATE OR REPLACE FUNCTION dblink_build_sql_delete (text, int2vector, int, _text)
RETURNS text RETURNS text
AS 'MODULE_PATHNAME','dblink_build_sql_delete' AS 'MODULE_PATHNAME','dblink_build_sql_delete'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION dblink_build_sql_update (text, int2vector, int4, _text, _text) CREATE OR REPLACE FUNCTION dblink_build_sql_update (text, int2vector, int, _text, _text)
RETURNS text RETURNS text
AS 'MODULE_PATHNAME','dblink_build_sql_update' AS 'MODULE_PATHNAME','dblink_build_sql_update'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION dblink_current_query () CREATE OR REPLACE FUNCTION dblink_current_query ()
RETURNS text RETURNS text
AS 'MODULE_PATHNAME','dblink_current_query' AS 'MODULE_PATHNAME','dblink_current_query'
LANGUAGE 'C'; LANGUAGE C;
BEGIN; BEGIN;
CREATE FUNCTION "recordchange" () RETURNS trigger
CREATE FUNCTION "recordchange" () RETURNS trigger AS AS '$libdir/pending', 'recordchange'
'$libdir/pending', 'recordchange' LANGUAGE 'C'; LANGUAGE C;
CREATE TABLE dbmirror_MirrorHost ( CREATE TABLE dbmirror_MirrorHost (
MirrorHostId serial not null, MirrorHostId serial PRIMARY KEY,
SlaveName varchar NOT NULL, SlaveName varchar NOT NULL
PRIMARY KEY(MirrorHostId)
); );
CREATE TABLE dbmirror_Pending ( CREATE TABLE dbmirror_Pending (
SeqId serial, SeqId serial PRIMARY KEY,
TableName Name NOT NULL, TableName name NOT NULL,
Op character, Op character,
XID int4 NOT NULL, XID integer NOT NULL
PRIMARY KEY (SeqId)
); );
CREATE INDEX dbmirror_Pending_XID_Index ON dbmirror_Pending (XID); CREATE INDEX dbmirror_Pending_XID_Index ON dbmirror_Pending (XID);
CREATE TABLE dbmirror_PendingData ( CREATE TABLE dbmirror_PendingData (
SeqId int4 NOT NULL, SeqId integer NOT NULL,
IsKey bool NOT NULL, IsKey boolean NOT NULL,
Data varchar, Data varchar,
PRIMARY KEY (SeqId, IsKey) , PRIMARY KEY (SeqId, IsKey) ,
FOREIGN KEY (SeqId) REFERENCES dbmirror_Pending (SeqId) ON UPDATE CASCADE ON DELETE CASCADE FOREIGN KEY (SeqId) REFERENCES dbmirror_Pending (SeqId) ON UPDATE CASCADE ON DELETE CASCADE
); );
CREATE TABLE dbmirror_MirroredTransaction ( CREATE TABLE dbmirror_MirroredTransaction (
XID int4 NOT NULL, XID integer NOT NULL,
LastSeqId int4 NOT NULL, LastSeqId integer NOT NULL,
MirrorHostId int4 NOT NULL, MirrorHostId integer NOT NULL,
PRIMARY KEY (XID,MirrorHostId), PRIMARY KEY (XID, MirrorHostId),
FOREIGN KEY (MirrorHostId) REFERENCES dbmirror_MirrorHost (MirrorHostId) ON UPDATE CASCADE ON DELETE CASCADE, FOREIGN KEY (MirrorHostId) REFERENCES dbmirror_MirrorHost (MirrorHostId) ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY (LastSeqId) REFERENCES dbmirror_Pending (SeqId) ON UPDATE FOREIGN KEY (LastSeqId) REFERENCES dbmirror_Pending (SeqId) ON UPDATE CASCADE ON DELETE CASCADE
CASCADE ON DELETE CASCADE
); );
UPDATE pg_proc SET proname='nextval_pg' WHERE proname='nextval'; UPDATE pg_proc SET proname='nextval_pg' WHERE proname='nextval';
CREATE FUNCTION pg_catalog.nextval(regclass) RETURNS int8 AS CREATE FUNCTION pg_catalog.nextval(regclass) RETURNS bigint
'$libdir/pending', 'nextval_mirror' LANGUAGE 'C' STRICT; AS '$libdir/pending', 'nextval_mirror'
LANGUAGE C STRICT;
UPDATE pg_proc set proname='setval_pg' WHERE proname='setval'; UPDATE pg_proc set proname='setval_pg' WHERE proname='setval';
CREATE FUNCTION pg_catalog.setval(regclass, int8, boolean) RETURNS int8 AS CREATE FUNCTION pg_catalog.setval(regclass, bigint, boolean) RETURNS bigint
'$libdir/pending', 'setval3_mirror' LANGUAGE 'C' STRICT; AS '$libdir/pending', 'setval3_mirror'
CREATE FUNCTION pg_catalog.setval(regclass, int8) RETURNS int8 AS LANGUAGE C STRICT;
'$libdir/pending', 'setval_mirror' LANGUAGE 'C' STRICT;
CREATE FUNCTION pg_catalog.setval(regclass, bigint) RETURNS bigint
AS '$libdir/pending', 'setval_mirror'
LANGUAGE C STRICT;
COMMIT; COMMIT;
...@@ -8,7 +8,7 @@ SET search_path = public; ...@@ -8,7 +8,7 @@ SET search_path = public;
-- in order to use different units (or a better value for the Earth's radius). -- in order to use different units (or a better value for the Earth's radius).
CREATE OR REPLACE FUNCTION earth() RETURNS float8 CREATE OR REPLACE FUNCTION earth() RETURNS float8
LANGUAGE 'sql' IMMUTABLE LANGUAGE SQL IMMUTABLE
AS 'SELECT \'6378168\'::float8'; AS 'SELECT \'6378168\'::float8';
-- Astromers may want to change the earth function so that distances will be -- Astromers may want to change the earth function so that distances will be
...@@ -17,7 +17,7 @@ AS 'SELECT \'6378168\'::float8'; ...@@ -17,7 +17,7 @@ AS 'SELECT \'6378168\'::float8';
-- tests. -- tests.
-- --
-- CREATE OR REPLACE FUNCTION earth() RETURNS float8 -- CREATE OR REPLACE FUNCTION earth() RETURNS float8
-- LANGUAGE 'sql' IMMUTABLE -- LANGUAGE SQL IMMUTABLE
-- AS 'SELECT 180/pi()'; -- AS 'SELECT 180/pi()';
-- Define domain for locations on the surface of the earth using a cube -- Define domain for locations on the surface of the earth using a cube
...@@ -35,43 +35,43 @@ CREATE DOMAIN earth AS cube ...@@ -35,43 +35,43 @@ CREATE DOMAIN earth AS cube
CREATE OR REPLACE FUNCTION sec_to_gc(float8) CREATE OR REPLACE FUNCTION sec_to_gc(float8)
RETURNS float8 RETURNS float8
LANGUAGE 'sql' LANGUAGE SQL
IMMUTABLE STRICT IMMUTABLE STRICT
AS 'SELECT CASE WHEN $1 < 0 THEN 0::float8 WHEN $1/(2*earth()) > 1 THEN pi()*earth() ELSE 2*earth()*asin($1/(2*earth())) END'; AS 'SELECT CASE WHEN $1 < 0 THEN 0::float8 WHEN $1/(2*earth()) > 1 THEN pi()*earth() ELSE 2*earth()*asin($1/(2*earth())) END';
CREATE OR REPLACE FUNCTION gc_to_sec(float8) CREATE OR REPLACE FUNCTION gc_to_sec(float8)
RETURNS float8 RETURNS float8
LANGUAGE 'sql' LANGUAGE SQL
IMMUTABLE STRICT IMMUTABLE STRICT
AS 'SELECT CASE WHEN $1 < 0 THEN 0::float8 WHEN $1/earth() > pi() THEN 2*earth() ELSE 2*earth()*sin($1/(2*earth())) END'; AS 'SELECT CASE WHEN $1 < 0 THEN 0::float8 WHEN $1/earth() > pi() THEN 2*earth() ELSE 2*earth()*sin($1/(2*earth())) END';
CREATE OR REPLACE FUNCTION ll_to_earth(float8, float8) CREATE OR REPLACE FUNCTION ll_to_earth(float8, float8)
RETURNS earth RETURNS earth
LANGUAGE 'sql' LANGUAGE SQL
IMMUTABLE STRICT IMMUTABLE STRICT
AS 'SELECT cube(cube(cube(earth()*cos(radians($1))*cos(radians($2))),earth()*cos(radians($1))*sin(radians($2))),earth()*sin(radians($1)))::earth'; AS 'SELECT cube(cube(cube(earth()*cos(radians($1))*cos(radians($2))),earth()*cos(radians($1))*sin(radians($2))),earth()*sin(radians($1)))::earth';
CREATE OR REPLACE FUNCTION latitude(earth) CREATE OR REPLACE FUNCTION latitude(earth)
RETURNS float8 RETURNS float8
LANGUAGE 'sql' LANGUAGE SQL
IMMUTABLE STRICT IMMUTABLE STRICT
AS 'SELECT CASE WHEN cube_ll_coord($1, 3)/earth() < -1 THEN -90::float8 WHEN cube_ll_coord($1, 3)/earth() > 1 THEN 90::float8 ELSE degrees(asin(cube_ll_coord($1, 3)/earth())) END'; AS 'SELECT CASE WHEN cube_ll_coord($1, 3)/earth() < -1 THEN -90::float8 WHEN cube_ll_coord($1, 3)/earth() > 1 THEN 90::float8 ELSE degrees(asin(cube_ll_coord($1, 3)/earth())) END';
CREATE OR REPLACE FUNCTION longitude(earth) CREATE OR REPLACE FUNCTION longitude(earth)
RETURNS float8 RETURNS float8
LANGUAGE 'sql' LANGUAGE SQL
IMMUTABLE STRICT IMMUTABLE STRICT
AS 'SELECT degrees(atan2(cube_ll_coord($1, 2), cube_ll_coord($1, 1)))'; AS 'SELECT degrees(atan2(cube_ll_coord($1, 2), cube_ll_coord($1, 1)))';
CREATE OR REPLACE FUNCTION earth_distance(earth, earth) CREATE OR REPLACE FUNCTION earth_distance(earth, earth)
RETURNS float8 RETURNS float8
LANGUAGE 'sql' LANGUAGE SQL
IMMUTABLE STRICT IMMUTABLE STRICT
AS 'SELECT sec_to_gc(cube_distance($1, $2))'; AS 'SELECT sec_to_gc(cube_distance($1, $2))';
CREATE OR REPLACE FUNCTION earth_box(earth, float8) CREATE OR REPLACE FUNCTION earth_box(earth, float8)
RETURNS cube RETURNS cube
LANGUAGE 'sql' LANGUAGE SQL
IMMUTABLE STRICT IMMUTABLE STRICT
AS 'SELECT cube_enlarge($1, gc_to_sec($2), 3)'; AS 'SELECT cube_enlarge($1, gc_to_sec($2), 3)';
...@@ -79,7 +79,7 @@ AS 'SELECT cube_enlarge($1, gc_to_sec($2), 3)'; ...@@ -79,7 +79,7 @@ AS 'SELECT cube_enlarge($1, gc_to_sec($2), 3)';
CREATE OR REPLACE FUNCTION geo_distance (point, point) CREATE OR REPLACE FUNCTION geo_distance (point, point)
RETURNS float8 RETURNS float8
LANGUAGE 'C' IMMUTABLE STRICT AS 'MODULE_PATHNAME'; LANGUAGE C IMMUTABLE STRICT AS 'MODULE_PATHNAME';
--------------- geo_distance as operator <@> --------------- geo_distance as operator <@>
......
...@@ -58,7 +58,7 @@ sub-string will fit. ...@@ -58,7 +58,7 @@ sub-string will fit.
The create the function that contains the trigger:: The create the function that contains the trigger::
create function fti() returns trigger as create function fti() returns trigger as
'/path/to/fti.so' language 'C'; '/path/to/fti.so' language C;
And finally define the trigger on the 'cds' table: And finally define the trigger on the 'cds' table:
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
* *
* -- Create the SQL function based on the compiled shared object * -- Create the SQL function based on the compiled shared object
* create function fti() returns trigger as * create function fti() returns trigger as
* '/usr/local/pgsql/lib/contrib/fti.so' language 'C'; * '/usr/local/pgsql/lib/contrib/fti.so' language C;
* *
* -- Create the FTI table * -- Create the FTI table
* create table product_fti (string varchar(255), id oid) without oids; * create table product_fti (string varchar(255), id oid) without oids;
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
# #
# create function fti() returns trigger as # create function fti() returns trigger as
# '/path/to/fti/file/fti.so' # '/path/to/fti/file/fti.so'
# language 'C'; # language C;
# #
# create trigger my_fti_trigger after update or insert or delete # create trigger my_fti_trigger after update or insert or delete
# on mytable # on mytable
......
...@@ -3,4 +3,4 @@ SET search_path = public; ...@@ -3,4 +3,4 @@ SET search_path = public;
CREATE OR REPLACE FUNCTION fti() RETURNS trigger AS CREATE OR REPLACE FUNCTION fti() RETURNS trigger AS
'MODULE_PATHNAME', 'fti' 'MODULE_PATHNAME', 'fti'
LANGUAGE 'C' VOLATILE CALLED ON NULL INPUT; LANGUAGE C VOLATILE CALLED ON NULL INPUT;
...@@ -20,58 +20,47 @@ SELECT soundex('Anne'), soundex('Ann'), difference('Anne', 'Ann'); ...@@ -20,58 +20,47 @@ SELECT soundex('Anne'), soundex('Ann'), difference('Anne', 'Ann');
SELECT soundex('Anne'), soundex('Andrew'), difference('Anne', 'Andrew'); SELECT soundex('Anne'), soundex('Andrew'), difference('Anne', 'Andrew');
SELECT soundex('Anne'), soundex('Margaret'), difference('Anne', 'Margaret'); SELECT soundex('Anne'), soundex('Margaret'), difference('Anne', 'Margaret');
CREATE TABLE s (nm text)\g CREATE TABLE s (nm text);
insert into s values ('john')\g INSERT INTO s VALUES ('john');
insert into s values ('joan')\g INSERT INTO s VALUES ('joan');
insert into s values ('wobbly')\g INSERT INTO s VALUES ('wobbly');
insert into s values ('jack')\g INSERT INTO s VALUES ('jack');
select * from s SELECT * FROM s WHERE soundex(nm) = soundex('john');
where soundex(nm) = soundex('john')\g
select a.nm, b.nm from s a, s b SELECT a.nm, b.nm FROM s a, s b WHERE soundex(a.nm) = soundex(b.nm) AND a.oid <> b.oid;
where soundex(a.nm) = soundex(b.nm)
and a.oid <> b.oid\g
CREATE FUNCTION text_sx_eq(text, text) RETURNS bool AS CREATE FUNCTION text_sx_eq(text, text) RETURNS boolean AS
'select soundex($1) = soundex($2)' 'select soundex($1) = soundex($2)'
LANGUAGE 'sql'\g LANGUAGE SQL;
CREATE FUNCTION text_sx_lt(text,text) RETURNS bool AS CREATE FUNCTION text_sx_lt(text, text) RETURNS boolean AS
'select soundex($1) < soundex($2)' 'select soundex($1) < soundex($2)'
LANGUAGE 'sql'\g LANGUAGE SQL;
CREATE FUNCTION text_sx_gt(text,text) RETURNS bool AS CREATE FUNCTION text_sx_gt(text, text) RETURNS boolean AS
'select soundex($1) > soundex($2)' 'select soundex($1) > soundex($2)'
LANGUAGE 'sql'; LANGUAGE SQL;
CREATE FUNCTION text_sx_le(text,text) RETURNS bool AS CREATE FUNCTION text_sx_le(text, text) RETURNS boolean AS
'select soundex($1) <= soundex($2)' 'select soundex($1) <= soundex($2)'
LANGUAGE 'sql'; LANGUAGE SQL;
CREATE FUNCTION text_sx_ge(text,text) RETURNS bool AS CREATE FUNCTION text_sx_ge(text, text) RETURNS boolean AS
'select soundex($1) >= soundex($2)' 'select soundex($1) >= soundex($2)'
LANGUAGE 'sql'; LANGUAGE SQL;
CREATE FUNCTION text_sx_ne(text,text) RETURNS bool AS CREATE FUNCTION text_sx_ne(text, text) RETURNS boolean AS
'select soundex($1) <> soundex($2)' 'select soundex($1) <> soundex($2)'
LANGUAGE 'sql'; LANGUAGE SQL;
DROP OPERATOR #= (text,text)\g DROP OPERATOR #= (text, text);
CREATE OPERATOR #= (leftarg=text, rightarg=text, procedure=text_sx_eq, CREATE OPERATOR #= (leftarg=text, rightarg=text, procedure=text_sx_eq, commutator = #=);
commutator = #=)\g
SELECT * SELECT * FROM s WHERE text_sx_eq(nm, 'john');
FROM s
WHERE text_sx_eq(nm,'john')\g
SELECT * SELECT * FROM s WHERE s.nm #= 'john';
FROM s
WHERE s.nm #= 'john';
SELECT *
FROM s
WHERE difference(s.nm, 'john') > 2;
SELECT * FROM s WHERE difference(s.nm, 'john') > 2;
...@@ -10,12 +10,12 @@ SET search_path = public; ...@@ -10,12 +10,12 @@ SET search_path = public;
CREATE FUNCTION bqarr_in(cstring) CREATE FUNCTION bqarr_in(cstring)
RETURNS query_int RETURNS query_int
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' WITH (isstrict); LANGUAGE C RETURNS NULL ON NULL INPUT;
CREATE FUNCTION bqarr_out(query_int) CREATE FUNCTION bqarr_out(query_int)
RETURNS cstring RETURNS cstring
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' WITH (isstrict); LANGUAGE C RETURNS NULL ON NULL INPUT;
CREATE TYPE query_int ( CREATE TYPE query_int (
INTERNALLENGTH = -1, INTERNALLENGTH = -1,
...@@ -27,20 +27,20 @@ CREATE TYPE query_int ( ...@@ -27,20 +27,20 @@ CREATE TYPE query_int (
CREATE FUNCTION querytree(query_int) CREATE FUNCTION querytree(query_int)
RETURNS text RETURNS text
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' WITH (isstrict); LANGUAGE C RETURNS NULL ON NULL INPUT;
CREATE FUNCTION boolop(_int4, query_int) CREATE FUNCTION boolop(_int4, query_int)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' WITH (isstrict); LANGUAGE C RETURNS NULL ON NULL INPUT;
COMMENT ON FUNCTION boolop(_int4, query_int) IS 'boolean operation with array'; COMMENT ON FUNCTION boolop(_int4, query_int) IS 'boolean operation with array';
CREATE FUNCTION rboolop(query_int, _int4) CREATE FUNCTION rboolop(query_int, _int4)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' WITH (isstrict); LANGUAGE C RETURNS NULL ON NULL INPUT;
COMMENT ON FUNCTION rboolop(query_int, _int4) IS 'boolean operation with array'; COMMENT ON FUNCTION rboolop(query_int, _int4) IS 'boolean operation with array';
...@@ -72,35 +72,35 @@ CREATE OPERATOR ~~ ( ...@@ -72,35 +72,35 @@ CREATE OPERATOR ~~ (
CREATE FUNCTION _int_contains(_int4, _int4) CREATE FUNCTION _int_contains(_int4, _int4)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' WITH (isstrict); LANGUAGE C RETURNS NULL ON NULL INPUT;
COMMENT ON FUNCTION _int_contains(_int4, _int4) IS 'contains'; COMMENT ON FUNCTION _int_contains(_int4, _int4) IS 'contains';
CREATE FUNCTION _int_contained(_int4, _int4) CREATE FUNCTION _int_contained(_int4, _int4)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' WITH (isstrict); LANGUAGE C RETURNS NULL ON NULL INPUT;
COMMENT ON FUNCTION _int_contained(_int4, _int4) IS 'contained in'; COMMENT ON FUNCTION _int_contained(_int4, _int4) IS 'contained in';
CREATE FUNCTION _int_overlap(_int4, _int4) CREATE FUNCTION _int_overlap(_int4, _int4)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' WITH (isstrict); LANGUAGE C RETURNS NULL ON NULL INPUT;
COMMENT ON FUNCTION _int_overlap(_int4, _int4) IS 'overlaps'; COMMENT ON FUNCTION _int_overlap(_int4, _int4) IS 'overlaps';
CREATE FUNCTION _int_same(_int4, _int4) CREATE FUNCTION _int_same(_int4, _int4)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' WITH (isstrict); LANGUAGE C RETURNS NULL ON NULL INPUT;
COMMENT ON FUNCTION _int_same(_int4, _int4) IS 'same as'; COMMENT ON FUNCTION _int_same(_int4, _int4) IS 'same as';
CREATE FUNCTION _int_different(_int4, _int4) CREATE FUNCTION _int_different(_int4, _int4)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' WITH (isstrict); LANGUAGE C RETURNS NULL ON NULL INPUT;
COMMENT ON FUNCTION _int_different(_int4, _int4) IS 'different'; COMMENT ON FUNCTION _int_different(_int4, _int4) IS 'different';
...@@ -108,12 +108,13 @@ COMMENT ON FUNCTION _int_different(_int4, _int4) IS 'different'; ...@@ -108,12 +108,13 @@ COMMENT ON FUNCTION _int_different(_int4, _int4) IS 'different';
CREATE FUNCTION _int_union(_int4, _int4) CREATE FUNCTION _int_union(_int4, _int4)
RETURNS _int4 RETURNS _int4
AS 'MODULE_PATHNAME' LANGUAGE 'C' WITH (isstrict); AS 'MODULE_PATHNAME'
LANGUAGE C RETURNS NULL ON NULL INPUT;
CREATE FUNCTION _int_inter(_int4, _int4) CREATE FUNCTION _int_inter(_int4, _int4)
RETURNS _int4 RETURNS _int4
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' WITH (isstrict); LANGUAGE C RETURNS NULL ON NULL INPUT;
-- --
-- OPERATORS -- OPERATORS
...@@ -172,12 +173,12 @@ CREATE OPERATOR ~ ( ...@@ -172,12 +173,12 @@ CREATE OPERATOR ~ (
CREATE FUNCTION intset(int4) CREATE FUNCTION intset(int4)
RETURNS _int4 RETURNS _int4
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' WITH (isStrict, isCachable); LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
CREATE FUNCTION icount(_int4) CREATE FUNCTION icount(_int4)
RETURNS int4 RETURNS int4
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' WITH (isStrict, isCachable); LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
CREATE OPERATOR # ( CREATE OPERATOR # (
RIGHTARG = _int4, RIGHTARG = _int4,
...@@ -187,32 +188,32 @@ CREATE OPERATOR # ( ...@@ -187,32 +188,32 @@ CREATE OPERATOR # (
CREATE FUNCTION sort(_int4, text) CREATE FUNCTION sort(_int4, text)
RETURNS _int4 RETURNS _int4
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' WITH (isStrict, isCachable); LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
CREATE FUNCTION sort(_int4) CREATE FUNCTION sort(_int4)
RETURNS _int4 RETURNS _int4
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' WITH (isStrict, isCachable); LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
CREATE FUNCTION sort_asc(_int4) CREATE FUNCTION sort_asc(_int4)
RETURNS _int4 RETURNS _int4
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' WITH (isStrict, isCachable); LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
CREATE FUNCTION sort_desc(_int4) CREATE FUNCTION sort_desc(_int4)
RETURNS _int4 RETURNS _int4
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' WITH (isStrict, isCachable); LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
CREATE FUNCTION uniq(_int4) CREATE FUNCTION uniq(_int4)
RETURNS _int4 RETURNS _int4
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' WITH (isStrict, isCachable); LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
CREATE FUNCTION idx(_int4, int4) CREATE FUNCTION idx(_int4, int4)
RETURNS int4 RETURNS int4
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' WITH (isStrict, isCachable); LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
CREATE OPERATOR # ( CREATE OPERATOR # (
LEFTARG = _int4, LEFTARG = _int4,
...@@ -223,17 +224,17 @@ CREATE OPERATOR # ( ...@@ -223,17 +224,17 @@ CREATE OPERATOR # (
CREATE FUNCTION subarray(_int4, int4, int4) CREATE FUNCTION subarray(_int4, int4, int4)
RETURNS _int4 RETURNS _int4
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' WITH (isStrict, isCachable); LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
CREATE FUNCTION subarray(_int4, int4) CREATE FUNCTION subarray(_int4, int4)
RETURNS _int4 RETURNS _int4
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' WITH (isStrict, isCachable); LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
CREATE FUNCTION intarray_push_elem(_int4, int4) CREATE FUNCTION intarray_push_elem(_int4, int4)
RETURNS _int4 RETURNS _int4
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' WITH (isStrict, isCachable); LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
CREATE OPERATOR + ( CREATE OPERATOR + (
LEFTARG = _int4, LEFTARG = _int4,
...@@ -244,7 +245,7 @@ CREATE OPERATOR + ( ...@@ -244,7 +245,7 @@ CREATE OPERATOR + (
CREATE FUNCTION intarray_push_array(_int4, _int4) CREATE FUNCTION intarray_push_array(_int4, _int4)
RETURNS _int4 RETURNS _int4
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' WITH (isStrict, isCachable); LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
CREATE OPERATOR + ( CREATE OPERATOR + (
LEFTARG = _int4, LEFTARG = _int4,
...@@ -256,7 +257,7 @@ CREATE OPERATOR + ( ...@@ -256,7 +257,7 @@ CREATE OPERATOR + (
CREATE FUNCTION intarray_del_elem(_int4, int4) CREATE FUNCTION intarray_del_elem(_int4, int4)
RETURNS _int4 RETURNS _int4
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' WITH (isStrict, isCachable); LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
CREATE OPERATOR - ( CREATE OPERATOR - (
LEFTARG = _int4, LEFTARG = _int4,
...@@ -267,7 +268,7 @@ CREATE OPERATOR - ( ...@@ -267,7 +268,7 @@ CREATE OPERATOR - (
CREATE FUNCTION intset_union_elem(_int4, int4) CREATE FUNCTION intset_union_elem(_int4, int4)
RETURNS _int4 RETURNS _int4
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' WITH (isStrict, isCachable); LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
CREATE OPERATOR | ( CREATE OPERATOR | (
LEFTARG = _int4, LEFTARG = _int4,
...@@ -285,7 +286,7 @@ CREATE OPERATOR | ( ...@@ -285,7 +286,7 @@ CREATE OPERATOR | (
CREATE FUNCTION intset_subtract(_int4, _int4) CREATE FUNCTION intset_subtract(_int4, _int4)
RETURNS _int4 RETURNS _int4
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' WITH (isStrict, isCachable); LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
CREATE OPERATOR - ( CREATE OPERATOR - (
LEFTARG = _int4, LEFTARG = _int4,
...@@ -305,37 +306,37 @@ CREATE OPERATOR & ( ...@@ -305,37 +306,37 @@ CREATE OPERATOR & (
CREATE FUNCTION g_int_consistent(internal,_int4,int4) CREATE FUNCTION g_int_consistent(internal,_int4,int4)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION g_int_compress(internal) CREATE FUNCTION g_int_compress(internal)
RETURNS internal RETURNS internal
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION g_int_decompress(internal) CREATE FUNCTION g_int_decompress(internal)
RETURNS internal RETURNS internal
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION g_int_penalty(internal,internal,internal) CREATE FUNCTION g_int_penalty(internal,internal,internal)
RETURNS internal RETURNS internal
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' WITH (isstrict); LANGUAGE C RETURNS NULL ON NULL INPUT;
CREATE FUNCTION g_int_picksplit(internal, internal) CREATE FUNCTION g_int_picksplit(internal, internal)
RETURNS internal RETURNS internal
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION g_int_union(internal, internal) CREATE FUNCTION g_int_union(internal, internal)
RETURNS _int4 RETURNS _int4
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION g_int_same(_int4, _int4, internal) CREATE FUNCTION g_int_same(_int4, _int4, internal)
RETURNS internal RETURNS internal
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
-- Create the operator class for indexing -- Create the operator class for indexing
...@@ -364,12 +365,12 @@ DEFAULT FOR TYPE _int4 USING gist AS ...@@ -364,12 +365,12 @@ DEFAULT FOR TYPE _int4 USING gist AS
CREATE FUNCTION _intbig_in(cstring) CREATE FUNCTION _intbig_in(cstring)
RETURNS intbig_gkey RETURNS intbig_gkey
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' with (isstrict); LANGUAGE C RETURNS NULL ON NULL INPUT;
CREATE FUNCTION _intbig_out(intbig_gkey) CREATE FUNCTION _intbig_out(intbig_gkey)
RETURNS cstring RETURNS cstring
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' with (isstrict); LANGUAGE C RETURNS NULL ON NULL INPUT;
CREATE TYPE intbig_gkey ( CREATE TYPE intbig_gkey (
INTERNALLENGTH = -1, INTERNALLENGTH = -1,
...@@ -380,37 +381,37 @@ CREATE TYPE intbig_gkey ( ...@@ -380,37 +381,37 @@ CREATE TYPE intbig_gkey (
CREATE FUNCTION g_intbig_consistent(internal,internal,int4) CREATE FUNCTION g_intbig_consistent(internal,internal,int4)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION g_intbig_compress(internal) CREATE FUNCTION g_intbig_compress(internal)
RETURNS internal RETURNS internal
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION g_intbig_decompress(internal) CREATE FUNCTION g_intbig_decompress(internal)
RETURNS internal RETURNS internal
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION g_intbig_penalty(internal,internal,internal) CREATE FUNCTION g_intbig_penalty(internal,internal,internal)
RETURNS internal RETURNS internal
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' WITH (isstrict); LANGUAGE C RETURNS NULL ON NULL INPUT;
CREATE FUNCTION g_intbig_picksplit(internal, internal) CREATE FUNCTION g_intbig_picksplit(internal, internal)
RETURNS internal RETURNS internal
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION g_intbig_union(internal, internal) CREATE FUNCTION g_intbig_union(internal, internal)
RETURNS _int4 RETURNS _int4
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION g_intbig_same(internal, internal, internal) CREATE FUNCTION g_intbig_same(internal, internal, internal)
RETURNS internal RETURNS internal
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)
......
...@@ -6,9 +6,9 @@ ...@@ -6,9 +6,9 @@
psql:_int.sql:13: NOTICE: type "query_int" is not yet defined psql:_int.sql:13: NOTICE: type "query_int" is not yet defined
DETAIL: Creating a shell type definition. DETAIL: Creating a shell type definition.
psql:_int.sql:18: NOTICE: argument type query_int is only a shell psql:_int.sql:18: NOTICE: argument type query_int is only a shell
psql:_int.sql:367: NOTICE: type "intbig_gkey" is not yet defined psql:_int.sql:368: NOTICE: type "intbig_gkey" is not yet defined
DETAIL: Creating a shell type definition. DETAIL: Creating a shell type definition.
psql:_int.sql:372: NOTICE: argument type intbig_gkey is only a shell psql:_int.sql:373: NOTICE: argument type intbig_gkey is only a shell
SELECT intset(1234); SELECT intset(1234);
intset intset
-------- --------
......
-- --
-- PostgreSQL code for ISSNs. -- PostgreSQL code for ISSNs.
-- --
-- $PostgreSQL: pgsql/contrib/isbn_issn/isbn_issn.sql.in,v 1.11 2005/01/29 22:35:02 tgl Exp $ -- $PostgreSQL: pgsql/contrib/isbn_issn/isbn_issn.sql.in,v 1.12 2006/02/27 16:09:48 petere Exp $
-- --
-- Adjust this setting to control where the objects get created. -- Adjust this setting to control where the objects get created.
...@@ -120,7 +120,7 @@ CREATE OPERATOR <> ( ...@@ -120,7 +120,7 @@ CREATE OPERATOR <> (
CREATE FUNCTION issn_cmp(issn, issn) CREATE FUNCTION issn_cmp(issn, issn)
RETURNS integer RETURNS integer
AS '$libdir/isbn_issn' AS '$libdir/isbn_issn'
LANGUAGE c STRICT; LANGUAGE C STRICT;
-- Create default operator class for 'issn' -- -- Create default operator class for 'issn' --
-- Needed to create index or primary key -- -- Needed to create index or primary key --
...@@ -253,7 +253,7 @@ CREATE OPERATOR <> ( ...@@ -253,7 +253,7 @@ CREATE OPERATOR <> (
CREATE FUNCTION isbn_cmp(isbn, isbn) CREATE FUNCTION isbn_cmp(isbn, isbn)
RETURNS integer RETURNS integer
AS '$libdir/isbn_issn' AS '$libdir/isbn_issn'
LANGUAGE c STRICT; LANGUAGE C STRICT;
-- Create default operator class for 'isbn' -- -- Create default operator class for 'isbn' --
-- Needed to create index or primary key -- -- Needed to create index or primary key --
......
...@@ -313,7 +313,7 @@ ltreetest=# select subpath(path,0,2)||'Space'||subpath(path,2) from test where p ...@@ -313,7 +313,7 @@ ltreetest=# select subpath(path,0,2)||'Space'||subpath(path,2) from test where p
We could create SQL-function: We could create SQL-function:
CREATE FUNCTION ins_label(ltree, int4, text) RETURNS ltree CREATE FUNCTION ins_label(ltree, int4, text) RETURNS ltree
AS 'select subpath($1,0,$2) || $3 || subpath($1,$2);' AS 'select subpath($1,0,$2) || $3 || subpath($1,$2);'
LANGUAGE SQL WITH (ISCACHABLE); LANGUAGE SQL IMMUTABLE;
and previous select could be rewritten as: and previous select could be rewritten as:
...@@ -329,7 +329,7 @@ Or with another arguments: ...@@ -329,7 +329,7 @@ Or with another arguments:
CREATE FUNCTION ins_label(ltree, ltree, text) RETURNS ltree CREATE FUNCTION ins_label(ltree, ltree, text) RETURNS ltree
AS 'select subpath($1,0,nlevel($2)) || $3 || subpath($1,nlevel($2));' AS 'select subpath($1,0,nlevel($2)) || $3 || subpath($1,nlevel($2));'
LANGUAGE SQL WITH (ISCACHABLE); LANGUAGE SQL IMMUTABLE;
ltreetest=# select ins_label(path,'Top.Science'::ltree,'Space') from test where path <@ 'Top.Science.Astronomy'; ltreetest=# select ins_label(path,'Top.Science'::ltree,'Space') from test where path <@ 'Top.Science.Astronomy';
ins_label ins_label
......
This diff is collapsed.
...@@ -42,7 +42,7 @@ create index macoui_idx on macoui (addr); ...@@ -42,7 +42,7 @@ create index macoui_idx on macoui (addr);
create function manuf (macaddr) create function manuf (macaddr)
returns text as ' returns text as '
select name from macoui m where trunc(\$1) = m.addr; select name from macoui m where trunc(\$1) = m.addr;
' language 'SQL'; ' language SQL;
EOF EOF
if [ $update -gt 0 ]; then if [ $update -gt 0 ]; then
......
...@@ -5,7 +5,7 @@ SET search_path = public; ...@@ -5,7 +5,7 @@ SET search_path = public;
CREATE OR REPLACE FUNCTION pg_buffercache_pages() CREATE OR REPLACE FUNCTION pg_buffercache_pages()
RETURNS SETOF RECORD RETURNS SETOF RECORD
AS 'MODULE_PATHNAME', 'pg_buffercache_pages' AS 'MODULE_PATHNAME', 'pg_buffercache_pages'
LANGUAGE 'C'; LANGUAGE C;
-- Create a view for convenient access. -- Create a view for convenient access.
CREATE VIEW pg_buffercache AS CREATE VIEW pg_buffercache AS
......
...@@ -6,7 +6,7 @@ SET search_path = public; ...@@ -6,7 +6,7 @@ SET search_path = public;
CREATE OR REPLACE FUNCTION pg_freespacemap() CREATE OR REPLACE FUNCTION pg_freespacemap()
RETURNS SETOF RECORD RETURNS SETOF RECORD
AS 'MODULE_PATHNAME', 'pg_freespacemap' AS 'MODULE_PATHNAME', 'pg_freespacemap'
LANGUAGE 'C'; LANGUAGE C;
-- Create a view for convenient access. -- Create a view for convenient access.
CREATE VIEW pg_freespacemap AS CREATE VIEW pg_freespacemap AS
......
...@@ -5,27 +5,27 @@ BEGIN; ...@@ -5,27 +5,27 @@ BEGIN;
create function set_limit(float4) create function set_limit(float4)
returns float4 returns float4
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' with (isstrict,iscachable); LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
create function show_limit() create function show_limit()
returns float4 returns float4
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' with (isstrict,iscachable); LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
create function show_trgm(text) create function show_trgm(text)
returns _text returns _text
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' with (isstrict,iscachable); LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
create function similarity(text,text) create function similarity(text,text)
returns float4 returns float4
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' with (isstrict,iscachable); LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
create function similarity_op(text,text) create function similarity_op(text,text)
returns bool returns bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' with (isstrict,iscachable); LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
CREATE OPERATOR % ( CREATE OPERATOR % (
LEFTARG = text, LEFTARG = text,
...@@ -40,12 +40,12 @@ CREATE OPERATOR % ( ...@@ -40,12 +40,12 @@ CREATE OPERATOR % (
CREATE FUNCTION gtrgm_in(cstring) CREATE FUNCTION gtrgm_in(cstring)
RETURNS gtrgm RETURNS gtrgm
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' with (isstrict); LANGUAGE C RETURNS NULL ON NULL INPUT;
CREATE FUNCTION gtrgm_out(gtrgm) CREATE FUNCTION gtrgm_out(gtrgm)
RETURNS cstring RETURNS cstring
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' with (isstrict); LANGUAGE C RETURNS NULL ON NULL INPUT;
CREATE TYPE gtrgm ( CREATE TYPE gtrgm (
INTERNALLENGTH = -1, INTERNALLENGTH = -1,
...@@ -57,37 +57,37 @@ CREATE TYPE gtrgm ( ...@@ -57,37 +57,37 @@ CREATE TYPE gtrgm (
CREATE FUNCTION gtrgm_consistent(gtrgm,internal,int4) CREATE FUNCTION gtrgm_consistent(gtrgm,internal,int4)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION gtrgm_compress(internal) CREATE FUNCTION gtrgm_compress(internal)
RETURNS internal RETURNS internal
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION gtrgm_decompress(internal) CREATE FUNCTION gtrgm_decompress(internal)
RETURNS internal RETURNS internal
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION gtrgm_penalty(internal,internal,internal) CREATE FUNCTION gtrgm_penalty(internal,internal,internal)
RETURNS internal RETURNS internal
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' with (isstrict); LANGUAGE C RETURNS NULL ON NULL INPUT;
CREATE FUNCTION gtrgm_picksplit(internal, internal) CREATE FUNCTION gtrgm_picksplit(internal, internal)
RETURNS internal RETURNS internal
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION gtrgm_union(bytea, internal) CREATE FUNCTION gtrgm_union(bytea, internal)
RETURNS _int4 RETURNS _int4
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION gtrgm_same(gtrgm, gtrgm, internal) CREATE FUNCTION gtrgm_same(gtrgm, gtrgm, internal)
RETURNS internal RETURNS internal
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
-- create the operator class -- create the operator class
CREATE OPERATOR CLASS gist_trgm_ops CREATE OPERATOR CLASS gist_trgm_ops
......
...@@ -4,72 +4,72 @@ SET search_path = public; ...@@ -4,72 +4,72 @@ SET search_path = public;
CREATE OR REPLACE FUNCTION digest(text, text) CREATE OR REPLACE FUNCTION digest(text, text)
RETURNS bytea RETURNS bytea
AS 'MODULE_PATHNAME', 'pg_digest' AS 'MODULE_PATHNAME', 'pg_digest'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION digest(bytea, text) CREATE OR REPLACE FUNCTION digest(bytea, text)
RETURNS bytea RETURNS bytea
AS 'MODULE_PATHNAME', 'pg_digest' AS 'MODULE_PATHNAME', 'pg_digest'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION digest_exists(text) CREATE OR REPLACE FUNCTION digest_exists(text)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME', 'pg_digest_exists' AS 'MODULE_PATHNAME', 'pg_digest_exists'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION hmac(text, text, text) CREATE OR REPLACE FUNCTION hmac(text, text, text)
RETURNS bytea RETURNS bytea
AS 'MODULE_PATHNAME', 'pg_hmac' AS 'MODULE_PATHNAME', 'pg_hmac'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION hmac(bytea, bytea, text) CREATE OR REPLACE FUNCTION hmac(bytea, bytea, text)
RETURNS bytea RETURNS bytea
AS 'MODULE_PATHNAME', 'pg_hmac' AS 'MODULE_PATHNAME', 'pg_hmac'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION hmac_exists(text) CREATE OR REPLACE FUNCTION hmac_exists(text)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME', 'pg_hmac_exists' AS 'MODULE_PATHNAME', 'pg_hmac_exists'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION crypt(text, text) CREATE OR REPLACE FUNCTION crypt(text, text)
RETURNS text RETURNS text
AS 'MODULE_PATHNAME', 'pg_crypt' AS 'MODULE_PATHNAME', 'pg_crypt'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION gen_salt(text) CREATE OR REPLACE FUNCTION gen_salt(text)
RETURNS text RETURNS text
AS 'MODULE_PATHNAME', 'pg_gen_salt' AS 'MODULE_PATHNAME', 'pg_gen_salt'
LANGUAGE 'C' VOLATILE STRICT; LANGUAGE C VOLATILE STRICT;
CREATE OR REPLACE FUNCTION gen_salt(text, int4) CREATE OR REPLACE FUNCTION gen_salt(text, int4)
RETURNS text RETURNS text
AS 'MODULE_PATHNAME', 'pg_gen_salt_rounds' AS 'MODULE_PATHNAME', 'pg_gen_salt_rounds'
LANGUAGE 'C' VOLATILE STRICT; LANGUAGE C VOLATILE STRICT;
CREATE OR REPLACE FUNCTION encrypt(bytea, bytea, text) CREATE OR REPLACE FUNCTION encrypt(bytea, bytea, text)
RETURNS bytea RETURNS bytea
AS 'MODULE_PATHNAME', 'pg_encrypt' AS 'MODULE_PATHNAME', 'pg_encrypt'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION decrypt(bytea, bytea, text) CREATE OR REPLACE FUNCTION decrypt(bytea, bytea, text)
RETURNS bytea RETURNS bytea
AS 'MODULE_PATHNAME', 'pg_decrypt' AS 'MODULE_PATHNAME', 'pg_decrypt'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION encrypt_iv(bytea, bytea, bytea, text) CREATE OR REPLACE FUNCTION encrypt_iv(bytea, bytea, bytea, text)
RETURNS bytea RETURNS bytea
AS 'MODULE_PATHNAME', 'pg_encrypt_iv' AS 'MODULE_PATHNAME', 'pg_encrypt_iv'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION decrypt_iv(bytea, bytea, bytea, text) CREATE OR REPLACE FUNCTION decrypt_iv(bytea, bytea, bytea, text)
RETURNS bytea RETURNS bytea
AS 'MODULE_PATHNAME', 'pg_decrypt_iv' AS 'MODULE_PATHNAME', 'pg_decrypt_iv'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION cipher_exists(text) CREATE OR REPLACE FUNCTION cipher_exists(text)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME', 'pg_cipher_exists' AS 'MODULE_PATHNAME', 'pg_cipher_exists'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
-- --
-- pgp_sym_encrypt(data, key) -- pgp_sym_encrypt(data, key)
...@@ -77,12 +77,12 @@ LANGUAGE 'C' IMMUTABLE STRICT; ...@@ -77,12 +77,12 @@ LANGUAGE 'C' IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION pgp_sym_encrypt(text, text) CREATE OR REPLACE FUNCTION pgp_sym_encrypt(text, text)
RETURNS bytea RETURNS bytea
AS 'MODULE_PATHNAME', 'pgp_sym_encrypt_text' AS 'MODULE_PATHNAME', 'pgp_sym_encrypt_text'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION pgp_sym_encrypt_bytea(bytea, text) CREATE OR REPLACE FUNCTION pgp_sym_encrypt_bytea(bytea, text)
RETURNS bytea RETURNS bytea
AS 'MODULE_PATHNAME', 'pgp_sym_encrypt_bytea' AS 'MODULE_PATHNAME', 'pgp_sym_encrypt_bytea'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
-- --
-- pgp_sym_encrypt(data, key, args) -- pgp_sym_encrypt(data, key, args)
...@@ -90,12 +90,12 @@ LANGUAGE 'C' STRICT; ...@@ -90,12 +90,12 @@ LANGUAGE 'C' STRICT;
CREATE OR REPLACE FUNCTION pgp_sym_encrypt(text, text, text) CREATE OR REPLACE FUNCTION pgp_sym_encrypt(text, text, text)
RETURNS bytea RETURNS bytea
AS 'MODULE_PATHNAME', 'pgp_sym_encrypt_text' AS 'MODULE_PATHNAME', 'pgp_sym_encrypt_text'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION pgp_sym_encrypt_bytea(bytea, text, text) CREATE OR REPLACE FUNCTION pgp_sym_encrypt_bytea(bytea, text, text)
RETURNS bytea RETURNS bytea
AS 'MODULE_PATHNAME', 'pgp_sym_encrypt_bytea' AS 'MODULE_PATHNAME', 'pgp_sym_encrypt_bytea'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
-- --
-- pgp_sym_decrypt(data, key) -- pgp_sym_decrypt(data, key)
...@@ -103,12 +103,12 @@ LANGUAGE 'C' STRICT; ...@@ -103,12 +103,12 @@ LANGUAGE 'C' STRICT;
CREATE OR REPLACE FUNCTION pgp_sym_decrypt(bytea, text) CREATE OR REPLACE FUNCTION pgp_sym_decrypt(bytea, text)
RETURNS text RETURNS text
AS 'MODULE_PATHNAME', 'pgp_sym_decrypt_text' AS 'MODULE_PATHNAME', 'pgp_sym_decrypt_text'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION pgp_sym_decrypt_bytea(bytea, text) CREATE OR REPLACE FUNCTION pgp_sym_decrypt_bytea(bytea, text)
RETURNS bytea RETURNS bytea
AS 'MODULE_PATHNAME', 'pgp_sym_decrypt_bytea' AS 'MODULE_PATHNAME', 'pgp_sym_decrypt_bytea'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
-- --
-- pgp_sym_decrypt(data, key, args) -- pgp_sym_decrypt(data, key, args)
...@@ -116,12 +116,12 @@ LANGUAGE 'C' IMMUTABLE STRICT; ...@@ -116,12 +116,12 @@ LANGUAGE 'C' IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION pgp_sym_decrypt(bytea, text, text) CREATE OR REPLACE FUNCTION pgp_sym_decrypt(bytea, text, text)
RETURNS text RETURNS text
AS 'MODULE_PATHNAME', 'pgp_sym_decrypt_text' AS 'MODULE_PATHNAME', 'pgp_sym_decrypt_text'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION pgp_sym_decrypt_bytea(bytea, text, text) CREATE OR REPLACE FUNCTION pgp_sym_decrypt_bytea(bytea, text, text)
RETURNS bytea RETURNS bytea
AS 'MODULE_PATHNAME', 'pgp_sym_decrypt_bytea' AS 'MODULE_PATHNAME', 'pgp_sym_decrypt_bytea'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
-- --
-- pgp_pub_encrypt(data, key) -- pgp_pub_encrypt(data, key)
...@@ -129,12 +129,12 @@ LANGUAGE 'C' IMMUTABLE STRICT; ...@@ -129,12 +129,12 @@ LANGUAGE 'C' IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION pgp_pub_encrypt(text, bytea) CREATE OR REPLACE FUNCTION pgp_pub_encrypt(text, bytea)
RETURNS bytea RETURNS bytea
AS 'MODULE_PATHNAME', 'pgp_pub_encrypt_text' AS 'MODULE_PATHNAME', 'pgp_pub_encrypt_text'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION pgp_pub_encrypt_bytea(bytea, bytea) CREATE OR REPLACE FUNCTION pgp_pub_encrypt_bytea(bytea, bytea)
RETURNS bytea RETURNS bytea
AS 'MODULE_PATHNAME', 'pgp_pub_encrypt_bytea' AS 'MODULE_PATHNAME', 'pgp_pub_encrypt_bytea'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
-- --
-- pgp_pub_encrypt(data, key, args) -- pgp_pub_encrypt(data, key, args)
...@@ -142,12 +142,12 @@ LANGUAGE 'C' STRICT; ...@@ -142,12 +142,12 @@ LANGUAGE 'C' STRICT;
CREATE OR REPLACE FUNCTION pgp_pub_encrypt(text, bytea, text) CREATE OR REPLACE FUNCTION pgp_pub_encrypt(text, bytea, text)
RETURNS bytea RETURNS bytea
AS 'MODULE_PATHNAME', 'pgp_pub_encrypt_text' AS 'MODULE_PATHNAME', 'pgp_pub_encrypt_text'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION pgp_pub_encrypt_bytea(bytea, bytea, text) CREATE OR REPLACE FUNCTION pgp_pub_encrypt_bytea(bytea, bytea, text)
RETURNS bytea RETURNS bytea
AS 'MODULE_PATHNAME', 'pgp_pub_encrypt_bytea' AS 'MODULE_PATHNAME', 'pgp_pub_encrypt_bytea'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
-- --
-- pgp_pub_decrypt(data, key) -- pgp_pub_decrypt(data, key)
...@@ -155,12 +155,12 @@ LANGUAGE 'C' STRICT; ...@@ -155,12 +155,12 @@ LANGUAGE 'C' STRICT;
CREATE OR REPLACE FUNCTION pgp_pub_decrypt(bytea, bytea) CREATE OR REPLACE FUNCTION pgp_pub_decrypt(bytea, bytea)
RETURNS text RETURNS text
AS 'MODULE_PATHNAME', 'pgp_pub_decrypt_text' AS 'MODULE_PATHNAME', 'pgp_pub_decrypt_text'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION pgp_pub_decrypt_bytea(bytea, bytea) CREATE OR REPLACE FUNCTION pgp_pub_decrypt_bytea(bytea, bytea)
RETURNS bytea RETURNS bytea
AS 'MODULE_PATHNAME', 'pgp_pub_decrypt_bytea' AS 'MODULE_PATHNAME', 'pgp_pub_decrypt_bytea'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
-- --
-- pgp_pub_decrypt(data, key, psw) -- pgp_pub_decrypt(data, key, psw)
...@@ -168,12 +168,12 @@ LANGUAGE 'C' IMMUTABLE STRICT; ...@@ -168,12 +168,12 @@ LANGUAGE 'C' IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION pgp_pub_decrypt(bytea, bytea, text) CREATE OR REPLACE FUNCTION pgp_pub_decrypt(bytea, bytea, text)
RETURNS text RETURNS text
AS 'MODULE_PATHNAME', 'pgp_pub_decrypt_text' AS 'MODULE_PATHNAME', 'pgp_pub_decrypt_text'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION pgp_pub_decrypt_bytea(bytea, bytea, text) CREATE OR REPLACE FUNCTION pgp_pub_decrypt_bytea(bytea, bytea, text)
RETURNS bytea RETURNS bytea
AS 'MODULE_PATHNAME', 'pgp_pub_decrypt_bytea' AS 'MODULE_PATHNAME', 'pgp_pub_decrypt_bytea'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
-- --
-- pgp_pub_decrypt(data, key, psw, arg) -- pgp_pub_decrypt(data, key, psw, arg)
...@@ -181,12 +181,12 @@ LANGUAGE 'C' IMMUTABLE STRICT; ...@@ -181,12 +181,12 @@ LANGUAGE 'C' IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION pgp_pub_decrypt(bytea, bytea, text, text) CREATE OR REPLACE FUNCTION pgp_pub_decrypt(bytea, bytea, text, text)
RETURNS text RETURNS text
AS 'MODULE_PATHNAME', 'pgp_pub_decrypt_text' AS 'MODULE_PATHNAME', 'pgp_pub_decrypt_text'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION pgp_pub_decrypt_bytea(bytea, bytea, text, text) CREATE OR REPLACE FUNCTION pgp_pub_decrypt_bytea(bytea, bytea, text, text)
RETURNS bytea RETURNS bytea
AS 'MODULE_PATHNAME', 'pgp_pub_decrypt_bytea' AS 'MODULE_PATHNAME', 'pgp_pub_decrypt_bytea'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
-- --
-- PGP key ID -- PGP key ID
...@@ -194,7 +194,7 @@ LANGUAGE 'C' IMMUTABLE STRICT; ...@@ -194,7 +194,7 @@ LANGUAGE 'C' IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION pgp_key_id(bytea) CREATE OR REPLACE FUNCTION pgp_key_id(bytea)
RETURNS text RETURNS text
AS 'MODULE_PATHNAME', 'pgp_key_id_w' AS 'MODULE_PATHNAME', 'pgp_key_id_w'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
-- --
-- pgp armor -- pgp armor
...@@ -202,10 +202,10 @@ LANGUAGE 'C' IMMUTABLE STRICT; ...@@ -202,10 +202,10 @@ LANGUAGE 'C' IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION armor(bytea) CREATE OR REPLACE FUNCTION armor(bytea)
RETURNS text RETURNS text
AS 'MODULE_PATHNAME', 'pg_armor' AS 'MODULE_PATHNAME', 'pg_armor'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION dearmor(text) CREATE OR REPLACE FUNCTION dearmor(text)
RETURNS bytea RETURNS bytea
AS 'MODULE_PATHNAME', 'pg_dearmor' AS 'MODULE_PATHNAME', 'pg_dearmor'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C IMMUTABLE STRICT;
...@@ -45,11 +45,11 @@ free_percent -- free space in % ...@@ -45,11 +45,11 @@ free_percent -- free space in %
CREATE OR REPLACE FUNCTION pgstattuple(text) RETURNS pgstattuple_type CREATE OR REPLACE FUNCTION pgstattuple(text) RETURNS pgstattuple_type
AS 'MODULE_PATHNAME', 'pgstattuple' AS 'MODULE_PATHNAME', 'pgstattuple'
LANGUAGE 'c' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION pgstattuple(oid) RETURNS pgstattuple_type CREATE OR REPLACE FUNCTION pgstattuple(oid) RETURNS pgstattuple_type
AS 'MODULE_PATHNAME', 'pgstattuplebyid' AS 'MODULE_PATHNAME', 'pgstattuplebyid'
LANGUAGE 'c' STRICT; LANGUAGE C STRICT;
The argument is the table name (optionally it may be qualified) The argument is the table name (optionally it may be qualified)
or the OID of the table. Note that pgstattuple only returns or the OID of the table. Note that pgstattuple only returns
......
$PostgreSQL: pgsql/contrib/pgstattuple/README.pgstattuple.euc_jp,v 1.5 2003/11/29 22:39:29 pgsql Exp $ $PostgreSQL: pgsql/contrib/pgstattuple/README.pgstattuple.euc_jp,v 1.6 2006/02/27 16:09:49 petere Exp $
pgstattuple README 2002/08/22 石井達夫 pgstattuple README 2002/08/22 石井達夫
...@@ -54,7 +54,7 @@ free_percent -- ...@@ -54,7 +54,7 @@ free_percent --
CREATE OR REPLACE FUNCTION pgstattuple(text) RETURNS pgstattuple_type CREATE OR REPLACE FUNCTION pgstattuple(text) RETURNS pgstattuple_type
AS 'MODULE_PATHNAME', 'pgstattuple' AS 'MODULE_PATHNAME', 'pgstattuple'
LANGUAGE 'c' WITH (isstrict); LANGUAGE C STRICT;
第一引数: テーブル名 第一引数: テーブル名
......
...@@ -16,9 +16,9 @@ CREATE TYPE pgstattuple_type AS ( ...@@ -16,9 +16,9 @@ CREATE TYPE pgstattuple_type AS (
CREATE OR REPLACE FUNCTION pgstattuple(text) CREATE OR REPLACE FUNCTION pgstattuple(text)
RETURNS pgstattuple_type RETURNS pgstattuple_type
AS 'MODULE_PATHNAME', 'pgstattuple' AS 'MODULE_PATHNAME', 'pgstattuple'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE OR REPLACE FUNCTION pgstattuple(oid) CREATE OR REPLACE FUNCTION pgstattuple(oid)
RETURNS pgstattuple_type RETURNS pgstattuple_type
AS 'MODULE_PATHNAME', 'pgstattuplebyid' AS 'MODULE_PATHNAME', 'pgstattuplebyid'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
...@@ -7,12 +7,12 @@ SET search_path = public; ...@@ -7,12 +7,12 @@ SET search_path = public;
CREATE FUNCTION seg_in(cstring) CREATE FUNCTION seg_in(cstring)
RETURNS seg RETURNS seg
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C STRICT IMMUTABLE;
CREATE FUNCTION seg_out(seg) CREATE FUNCTION seg_out(seg)
RETURNS cstring RETURNS cstring
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' IMMUTABLE STRICT; LANGUAGE C STRICT IMMUTABLE;
CREATE TYPE seg ( CREATE TYPE seg (
INTERNALLENGTH = 12, INTERNALLENGTH = 12,
...@@ -32,7 +32,7 @@ COMMENT ON TYPE seg IS ...@@ -32,7 +32,7 @@ COMMENT ON TYPE seg IS
CREATE FUNCTION seg_over_left(seg, seg) CREATE FUNCTION seg_over_left(seg, seg)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' STRICT IMMUTABLE; LANGUAGE C STRICT IMMUTABLE;
COMMENT ON FUNCTION seg_over_left(seg, seg) IS COMMENT ON FUNCTION seg_over_left(seg, seg) IS
'overlaps or is left of'; 'overlaps or is left of';
...@@ -40,7 +40,7 @@ COMMENT ON FUNCTION seg_over_left(seg, seg) IS ...@@ -40,7 +40,7 @@ COMMENT ON FUNCTION seg_over_left(seg, seg) IS
CREATE FUNCTION seg_over_right(seg, seg) CREATE FUNCTION seg_over_right(seg, seg)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' STRICT IMMUTABLE; LANGUAGE C STRICT IMMUTABLE;
COMMENT ON FUNCTION seg_over_right(seg, seg) IS COMMENT ON FUNCTION seg_over_right(seg, seg) IS
'overlaps or is right of'; 'overlaps or is right of';
...@@ -48,7 +48,7 @@ COMMENT ON FUNCTION seg_over_right(seg, seg) IS ...@@ -48,7 +48,7 @@ COMMENT ON FUNCTION seg_over_right(seg, seg) IS
CREATE FUNCTION seg_left(seg, seg) CREATE FUNCTION seg_left(seg, seg)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' STRICT IMMUTABLE; LANGUAGE C STRICT IMMUTABLE;
COMMENT ON FUNCTION seg_left(seg, seg) IS COMMENT ON FUNCTION seg_left(seg, seg) IS
'is left of'; 'is left of';
...@@ -56,7 +56,7 @@ COMMENT ON FUNCTION seg_left(seg, seg) IS ...@@ -56,7 +56,7 @@ COMMENT ON FUNCTION seg_left(seg, seg) IS
CREATE FUNCTION seg_right(seg, seg) CREATE FUNCTION seg_right(seg, seg)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' STRICT IMMUTABLE; LANGUAGE C STRICT IMMUTABLE;
COMMENT ON FUNCTION seg_right(seg, seg) IS COMMENT ON FUNCTION seg_right(seg, seg) IS
'is right of'; 'is right of';
...@@ -67,7 +67,7 @@ COMMENT ON FUNCTION seg_right(seg, seg) IS ...@@ -67,7 +67,7 @@ COMMENT ON FUNCTION seg_right(seg, seg) IS
CREATE FUNCTION seg_lt(seg, seg) CREATE FUNCTION seg_lt(seg, seg)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' STRICT IMMUTABLE; LANGUAGE C STRICT IMMUTABLE;
COMMENT ON FUNCTION seg_lt(seg, seg) IS COMMENT ON FUNCTION seg_lt(seg, seg) IS
'less than'; 'less than';
...@@ -75,7 +75,7 @@ COMMENT ON FUNCTION seg_lt(seg, seg) IS ...@@ -75,7 +75,7 @@ COMMENT ON FUNCTION seg_lt(seg, seg) IS
CREATE FUNCTION seg_le(seg, seg) CREATE FUNCTION seg_le(seg, seg)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' STRICT IMMUTABLE; LANGUAGE C STRICT IMMUTABLE;
COMMENT ON FUNCTION seg_le(seg, seg) IS COMMENT ON FUNCTION seg_le(seg, seg) IS
'less than or equal'; 'less than or equal';
...@@ -83,7 +83,7 @@ COMMENT ON FUNCTION seg_le(seg, seg) IS ...@@ -83,7 +83,7 @@ COMMENT ON FUNCTION seg_le(seg, seg) IS
CREATE FUNCTION seg_gt(seg, seg) CREATE FUNCTION seg_gt(seg, seg)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' STRICT IMMUTABLE; LANGUAGE C STRICT IMMUTABLE;
COMMENT ON FUNCTION seg_gt(seg, seg) IS COMMENT ON FUNCTION seg_gt(seg, seg) IS
'greater than'; 'greater than';
...@@ -91,7 +91,7 @@ COMMENT ON FUNCTION seg_gt(seg, seg) IS ...@@ -91,7 +91,7 @@ COMMENT ON FUNCTION seg_gt(seg, seg) IS
CREATE FUNCTION seg_ge(seg, seg) CREATE FUNCTION seg_ge(seg, seg)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' STRICT IMMUTABLE; LANGUAGE C STRICT IMMUTABLE;
COMMENT ON FUNCTION seg_ge(seg, seg) IS COMMENT ON FUNCTION seg_ge(seg, seg) IS
'greater than or equal'; 'greater than or equal';
...@@ -99,7 +99,7 @@ COMMENT ON FUNCTION seg_ge(seg, seg) IS ...@@ -99,7 +99,7 @@ COMMENT ON FUNCTION seg_ge(seg, seg) IS
CREATE FUNCTION seg_contains(seg, seg) CREATE FUNCTION seg_contains(seg, seg)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' STRICT IMMUTABLE; LANGUAGE C STRICT IMMUTABLE;
COMMENT ON FUNCTION seg_contains(seg, seg) IS COMMENT ON FUNCTION seg_contains(seg, seg) IS
'contains'; 'contains';
...@@ -107,7 +107,7 @@ COMMENT ON FUNCTION seg_contains(seg, seg) IS ...@@ -107,7 +107,7 @@ COMMENT ON FUNCTION seg_contains(seg, seg) IS
CREATE FUNCTION seg_contained(seg, seg) CREATE FUNCTION seg_contained(seg, seg)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' STRICT IMMUTABLE; LANGUAGE C STRICT IMMUTABLE;
COMMENT ON FUNCTION seg_contained(seg, seg) IS COMMENT ON FUNCTION seg_contained(seg, seg) IS
'contained in'; 'contained in';
...@@ -115,7 +115,7 @@ COMMENT ON FUNCTION seg_contained(seg, seg) IS ...@@ -115,7 +115,7 @@ COMMENT ON FUNCTION seg_contained(seg, seg) IS
CREATE FUNCTION seg_overlap(seg, seg) CREATE FUNCTION seg_overlap(seg, seg)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' STRICT IMMUTABLE; LANGUAGE C STRICT IMMUTABLE;
COMMENT ON FUNCTION seg_overlap(seg, seg) IS COMMENT ON FUNCTION seg_overlap(seg, seg) IS
'overlaps'; 'overlaps';
...@@ -123,7 +123,7 @@ COMMENT ON FUNCTION seg_overlap(seg, seg) IS ...@@ -123,7 +123,7 @@ COMMENT ON FUNCTION seg_overlap(seg, seg) IS
CREATE FUNCTION seg_same(seg, seg) CREATE FUNCTION seg_same(seg, seg)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' STRICT IMMUTABLE; LANGUAGE C STRICT IMMUTABLE;
COMMENT ON FUNCTION seg_same(seg, seg) IS COMMENT ON FUNCTION seg_same(seg, seg) IS
'same as'; 'same as';
...@@ -131,7 +131,7 @@ COMMENT ON FUNCTION seg_same(seg, seg) IS ...@@ -131,7 +131,7 @@ COMMENT ON FUNCTION seg_same(seg, seg) IS
CREATE FUNCTION seg_different(seg, seg) CREATE FUNCTION seg_different(seg, seg)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' STRICT IMMUTABLE; LANGUAGE C STRICT IMMUTABLE;
COMMENT ON FUNCTION seg_different(seg, seg) IS COMMENT ON FUNCTION seg_different(seg, seg) IS
'different'; 'different';
...@@ -141,36 +141,36 @@ COMMENT ON FUNCTION seg_different(seg, seg) IS ...@@ -141,36 +141,36 @@ COMMENT ON FUNCTION seg_different(seg, seg) IS
CREATE OR REPLACE FUNCTION seg_cmp(seg, seg) CREATE OR REPLACE FUNCTION seg_cmp(seg, seg)
RETURNS int4 RETURNS int4
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' STRICT IMMUTABLE; LANGUAGE C STRICT IMMUTABLE;
COMMENT ON FUNCTION seg_cmp(seg, seg) IS 'btree comparison function'; COMMENT ON FUNCTION seg_cmp(seg, seg) IS 'btree comparison function';
CREATE FUNCTION seg_union(seg, seg) CREATE FUNCTION seg_union(seg, seg)
RETURNS seg RETURNS seg
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' STRICT IMMUTABLE; LANGUAGE C STRICT IMMUTABLE;
CREATE FUNCTION seg_inter(seg, seg) CREATE FUNCTION seg_inter(seg, seg)
RETURNS seg RETURNS seg
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' STRICT IMMUTABLE; LANGUAGE C STRICT IMMUTABLE;
CREATE FUNCTION seg_size(seg) CREATE FUNCTION seg_size(seg)
RETURNS float4 RETURNS float4
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' STRICT IMMUTABLE; LANGUAGE C STRICT IMMUTABLE;
-- miscellaneous -- miscellaneous
CREATE FUNCTION seg_upper(seg) CREATE FUNCTION seg_upper(seg)
RETURNS float4 RETURNS float4
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' STRICT IMMUTABLE; LANGUAGE C STRICT IMMUTABLE;
CREATE FUNCTION seg_lower(seg) CREATE FUNCTION seg_lower(seg)
RETURNS float4 RETURNS float4
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' STRICT IMMUTABLE; LANGUAGE C STRICT IMMUTABLE;
-- --
...@@ -304,37 +304,37 @@ CREATE OPERATOR ~ ( ...@@ -304,37 +304,37 @@ CREATE OPERATOR ~ (
CREATE FUNCTION gseg_consistent(internal,seg,int4) CREATE FUNCTION gseg_consistent(internal,seg,int4)
RETURNS bool RETURNS bool
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION gseg_compress(internal) CREATE FUNCTION gseg_compress(internal)
RETURNS internal RETURNS internal
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION gseg_decompress(internal) CREATE FUNCTION gseg_decompress(internal)
RETURNS internal RETURNS internal
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION gseg_penalty(internal,internal,internal) CREATE FUNCTION gseg_penalty(internal,internal,internal)
RETURNS internal RETURNS internal
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE FUNCTION gseg_picksplit(internal, internal) CREATE FUNCTION gseg_picksplit(internal, internal)
RETURNS internal RETURNS internal
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION gseg_union(internal, internal) CREATE FUNCTION gseg_union(internal, internal)
RETURNS seg RETURNS seg
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION gseg_same(seg, seg, internal) CREATE FUNCTION gseg_same(seg, seg, internal)
RETURNS internal RETURNS internal
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
-- Create the operator classes for indexing -- Create the operator classes for indexing
......
...@@ -4,4 +4,4 @@ SET search_path = public; ...@@ -4,4 +4,4 @@ SET search_path = public;
CREATE OR REPLACE FUNCTION autoinc() CREATE OR REPLACE FUNCTION autoinc()
RETURNS trigger RETURNS trigger
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
...@@ -4,4 +4,4 @@ SET search_path = public; ...@@ -4,4 +4,4 @@ SET search_path = public;
CREATE OR REPLACE FUNCTION insert_username() CREATE OR REPLACE FUNCTION insert_username()
RETURNS trigger RETURNS trigger
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
...@@ -4,4 +4,4 @@ SET search_path = public; ...@@ -4,4 +4,4 @@ SET search_path = public;
CREATE OR REPLACE FUNCTION moddatetime() CREATE OR REPLACE FUNCTION moddatetime()
RETURNS trigger RETURNS trigger
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
...@@ -4,9 +4,9 @@ SET search_path = public; ...@@ -4,9 +4,9 @@ SET search_path = public;
CREATE OR REPLACE FUNCTION check_primary_key() CREATE OR REPLACE FUNCTION check_primary_key()
RETURNS trigger RETURNS trigger
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
CREATE OR REPLACE FUNCTION check_foreign_key() CREATE OR REPLACE FUNCTION check_foreign_key()
RETURNS trigger RETURNS trigger
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
-- Adjust this setting to control where the objects get created. -- Adjust this setting to control where the objects get created.
SET search_path = public; SET search_path = public;
SET autocommit TO 'on';
CREATE OR REPLACE FUNCTION timetravel() CREATE OR REPLACE FUNCTION timetravel()
RETURNS trigger RETURNS trigger
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C'; LANGUAGE C;
CREATE OR REPLACE FUNCTION set_timetravel(name, int4) CREATE OR REPLACE FUNCTION set_timetravel(name, int4)
RETURNS int4 RETURNS int4
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' WITH (isStrict); LANGUAGE C RETURNS NULL ON NULL INPUT;
CREATE OR REPLACE FUNCTION get_timetravel(name) CREATE OR REPLACE FUNCTION get_timetravel(name)
RETURNS int4 RETURNS int4
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'C' WITH (isStrict); LANGUAGE C RETURNS NULL ON NULL INPUT;
...@@ -315,7 +315,7 @@ Notes ...@@ -315,7 +315,7 @@ Notes
CREATE OR REPLACE FUNCTION crosstab_float8_5_cols(text) CREATE OR REPLACE FUNCTION crosstab_float8_5_cols(text)
RETURNS setof my_crosstab_float8_5_cols RETURNS setof my_crosstab_float8_5_cols
AS '$libdir/tablefunc','crosstab' LANGUAGE 'c' STABLE STRICT; AS '$libdir/tablefunc','crosstab' LANGUAGE C STABLE STRICT;
B. Use OUT parameters to define the return type implicitly. B. Use OUT parameters to define the return type implicitly.
The same example could also be done this way: The same example could also be done this way:
...@@ -328,7 +328,7 @@ Notes ...@@ -328,7 +328,7 @@ Notes
OUT category_4 FLOAT8, OUT category_4 FLOAT8,
OUT category_5 FLOAT8) OUT category_5 FLOAT8)
RETURNS setof record RETURNS setof record
AS '$libdir/tablefunc','crosstab' LANGUAGE 'c' STABLE STRICT; AS '$libdir/tablefunc','crosstab' LANGUAGE C STABLE STRICT;
Example usage Example usage
......
...@@ -128,7 +128,7 @@ CREATE FUNCTION crosstab_out(text, ...@@ -128,7 +128,7 @@ CREATE FUNCTION crosstab_out(text,
OUT rowid text, OUT att1 text, OUT att2 text, OUT att3 text) OUT rowid text, OUT att1 text, OUT att2 text, OUT att3 text)
RETURNS setof record RETURNS setof record
AS '$libdir/tablefunc','crosstab' AS '$libdir/tablefunc','crosstab'
LANGUAGE 'C' STABLE STRICT; LANGUAGE C STABLE STRICT;
SELECT * FROM crosstab_out('SELECT rowid, attribute, val FROM ct where rowclass = ''group1'' ORDER BY 1,2;'); SELECT * FROM crosstab_out('SELECT rowid, attribute, val FROM ct where rowclass = ''group1'' ORDER BY 1,2;');
rowid | att1 | att2 | att3 rowid | att1 | att2 | att3
-------+------+------+------ -------+------+------+------
...@@ -231,7 +231,7 @@ create type my_crosstab_result as ( ...@@ -231,7 +231,7 @@ create type my_crosstab_result as (
CREATE FUNCTION crosstab_named(text, text) CREATE FUNCTION crosstab_named(text, text)
RETURNS setof my_crosstab_result RETURNS setof my_crosstab_result
AS '$libdir/tablefunc','crosstab_hash' AS '$libdir/tablefunc','crosstab_hash'
LANGUAGE 'C' STABLE STRICT; LANGUAGE C STABLE STRICT;
SELECT * FROM crosstab_named( SELECT * FROM crosstab_named(
'SELECT rowid, rowdt, attribute, val FROM cth ORDER BY 1', 'SELECT rowid, rowdt, attribute, val FROM cth ORDER BY 1',
'SELECT DISTINCT attribute FROM cth ORDER BY 1'); 'SELECT DISTINCT attribute FROM cth ORDER BY 1');
...@@ -248,7 +248,7 @@ CREATE FUNCTION crosstab_out(text, text, ...@@ -248,7 +248,7 @@ CREATE FUNCTION crosstab_out(text, text,
OUT test_startdate timestamp, OUT volts float8) OUT test_startdate timestamp, OUT volts float8)
RETURNS setof record RETURNS setof record
AS '$libdir/tablefunc','crosstab_hash' AS '$libdir/tablefunc','crosstab_hash'
LANGUAGE 'C' STABLE STRICT; LANGUAGE C STABLE STRICT;
SELECT * FROM crosstab_out( SELECT * FROM crosstab_out(
'SELECT rowid, rowdt, attribute, val FROM cth ORDER BY 1', 'SELECT rowid, rowdt, attribute, val FROM cth ORDER BY 1',
'SELECT DISTINCT attribute FROM cth ORDER BY 1'); 'SELECT DISTINCT attribute FROM cth ORDER BY 1');
......
...@@ -44,7 +44,7 @@ CREATE FUNCTION crosstab_out(text, ...@@ -44,7 +44,7 @@ CREATE FUNCTION crosstab_out(text,
OUT rowid text, OUT att1 text, OUT att2 text, OUT att3 text) OUT rowid text, OUT att1 text, OUT att2 text, OUT att3 text)
RETURNS setof record RETURNS setof record
AS '$libdir/tablefunc','crosstab' AS '$libdir/tablefunc','crosstab'
LANGUAGE 'C' STABLE STRICT; LANGUAGE C STABLE STRICT;
SELECT * FROM crosstab_out('SELECT rowid, attribute, val FROM ct where rowclass = ''group1'' ORDER BY 1,2;'); SELECT * FROM crosstab_out('SELECT rowid, attribute, val FROM ct where rowclass = ''group1'' ORDER BY 1,2;');
...@@ -119,7 +119,7 @@ create type my_crosstab_result as ( ...@@ -119,7 +119,7 @@ create type my_crosstab_result as (
CREATE FUNCTION crosstab_named(text, text) CREATE FUNCTION crosstab_named(text, text)
RETURNS setof my_crosstab_result RETURNS setof my_crosstab_result
AS '$libdir/tablefunc','crosstab_hash' AS '$libdir/tablefunc','crosstab_hash'
LANGUAGE 'C' STABLE STRICT; LANGUAGE C STABLE STRICT;
SELECT * FROM crosstab_named( SELECT * FROM crosstab_named(
'SELECT rowid, rowdt, attribute, val FROM cth ORDER BY 1', 'SELECT rowid, rowdt, attribute, val FROM cth ORDER BY 1',
...@@ -133,7 +133,7 @@ CREATE FUNCTION crosstab_out(text, text, ...@@ -133,7 +133,7 @@ CREATE FUNCTION crosstab_out(text, text,
OUT test_startdate timestamp, OUT volts float8) OUT test_startdate timestamp, OUT volts float8)
RETURNS setof record RETURNS setof record
AS '$libdir/tablefunc','crosstab_hash' AS '$libdir/tablefunc','crosstab_hash'
LANGUAGE 'C' STABLE STRICT; LANGUAGE C STABLE STRICT;
SELECT * FROM crosstab_out( SELECT * FROM crosstab_out(
'SELECT rowid, rowdt, attribute, val FROM cth ORDER BY 1', 'SELECT rowid, rowdt, attribute, val FROM cth ORDER BY 1',
......
...@@ -4,13 +4,13 @@ SET search_path = public; ...@@ -4,13 +4,13 @@ SET search_path = public;
CREATE OR REPLACE FUNCTION normal_rand(int4, float8, float8) CREATE OR REPLACE FUNCTION normal_rand(int4, float8, float8)
RETURNS setof float8 RETURNS setof float8
AS 'MODULE_PATHNAME','normal_rand' AS 'MODULE_PATHNAME','normal_rand'
LANGUAGE 'C' VOLATILE STRICT; LANGUAGE C VOLATILE STRICT;
-- the generic crosstab function: -- the generic crosstab function:
CREATE OR REPLACE FUNCTION crosstab(text) CREATE OR REPLACE FUNCTION crosstab(text)
RETURNS setof record RETURNS setof record
AS 'MODULE_PATHNAME','crosstab' AS 'MODULE_PATHNAME','crosstab'
LANGUAGE 'C' STABLE STRICT; LANGUAGE C STABLE STRICT;
-- examples of building custom type-specific crosstab functions: -- examples of building custom type-specific crosstab functions:
CREATE TYPE tablefunc_crosstab_2 AS CREATE TYPE tablefunc_crosstab_2 AS
...@@ -40,47 +40,47 @@ CREATE TYPE tablefunc_crosstab_4 AS ...@@ -40,47 +40,47 @@ CREATE TYPE tablefunc_crosstab_4 AS
CREATE OR REPLACE FUNCTION crosstab2(text) CREATE OR REPLACE FUNCTION crosstab2(text)
RETURNS setof tablefunc_crosstab_2 RETURNS setof tablefunc_crosstab_2
AS 'MODULE_PATHNAME','crosstab' AS 'MODULE_PATHNAME','crosstab'
LANGUAGE 'C' STABLE STRICT; LANGUAGE C STABLE STRICT;
CREATE OR REPLACE FUNCTION crosstab3(text) CREATE OR REPLACE FUNCTION crosstab3(text)
RETURNS setof tablefunc_crosstab_3 RETURNS setof tablefunc_crosstab_3
AS 'MODULE_PATHNAME','crosstab' AS 'MODULE_PATHNAME','crosstab'
LANGUAGE 'C' STABLE STRICT; LANGUAGE C STABLE STRICT;
CREATE OR REPLACE FUNCTION crosstab4(text) CREATE OR REPLACE FUNCTION crosstab4(text)
RETURNS setof tablefunc_crosstab_4 RETURNS setof tablefunc_crosstab_4
AS 'MODULE_PATHNAME','crosstab' AS 'MODULE_PATHNAME','crosstab'
LANGUAGE 'C' STABLE STRICT; LANGUAGE C STABLE STRICT;
-- obsolete: -- obsolete:
CREATE OR REPLACE FUNCTION crosstab(text,int) CREATE OR REPLACE FUNCTION crosstab(text,int)
RETURNS setof record RETURNS setof record
AS 'MODULE_PATHNAME','crosstab' AS 'MODULE_PATHNAME','crosstab'
LANGUAGE 'C' STABLE STRICT; LANGUAGE C STABLE STRICT;
CREATE OR REPLACE FUNCTION crosstab(text,text) CREATE OR REPLACE FUNCTION crosstab(text,text)
RETURNS setof record RETURNS setof record
AS 'MODULE_PATHNAME','crosstab_hash' AS 'MODULE_PATHNAME','crosstab_hash'
LANGUAGE 'C' STABLE STRICT; LANGUAGE C STABLE STRICT;
CREATE OR REPLACE FUNCTION connectby(text,text,text,text,int,text) CREATE OR REPLACE FUNCTION connectby(text,text,text,text,int,text)
RETURNS setof record RETURNS setof record
AS 'MODULE_PATHNAME','connectby_text' AS 'MODULE_PATHNAME','connectby_text'
LANGUAGE 'C' STABLE STRICT; LANGUAGE C STABLE STRICT;
CREATE OR REPLACE FUNCTION connectby(text,text,text,text,int) CREATE OR REPLACE FUNCTION connectby(text,text,text,text,int)
RETURNS setof record RETURNS setof record
AS 'MODULE_PATHNAME','connectby_text' AS 'MODULE_PATHNAME','connectby_text'
LANGUAGE 'C' STABLE STRICT; LANGUAGE C STABLE STRICT;
-- These 2 take the name of a field to ORDER BY as 4th arg (for sorting siblings) -- These 2 take the name of a field to ORDER BY as 4th arg (for sorting siblings)
CREATE OR REPLACE FUNCTION connectby(text,text,text,text,text,int,text) CREATE OR REPLACE FUNCTION connectby(text,text,text,text,text,int,text)
RETURNS setof record RETURNS setof record
AS 'MODULE_PATHNAME','connectby_text_serial' AS 'MODULE_PATHNAME','connectby_text_serial'
LANGUAGE 'C' STABLE STRICT; LANGUAGE C STABLE STRICT;
CREATE OR REPLACE FUNCTION connectby(text,text,text,text,text,int) CREATE OR REPLACE FUNCTION connectby(text,text,text,text,text,int)
RETURNS setof record RETURNS setof record
AS 'MODULE_PATHNAME','connectby_text_serial' AS 'MODULE_PATHNAME','connectby_text_serial'
LANGUAGE 'C' STABLE STRICT; LANGUAGE C STABLE STRICT;
...@@ -4,13 +4,13 @@ BEGIN; ...@@ -4,13 +4,13 @@ BEGIN;
HASINIT create function dinit_CFG_MODNAME(internal) HASINIT create function dinit_CFG_MODNAME(internal)
HASINIT returns internal HASINIT returns internal
HASINIT as 'MODULE_PATHNAME' HASINIT as 'MODULE_PATHNAME'
HASINIT language 'C'; HASINIT language C;
NOSNOWBALL create function dlexize_CFG_MODNAME(internal,internal,int4) NOSNOWBALL create function dlexize_CFG_MODNAME(internal,internal,int4)
NOSNOWBALL returns internal NOSNOWBALL returns internal
NOSNOWBALL as 'MODULE_PATHNAME' NOSNOWBALL as 'MODULE_PATHNAME'
NOSNOWBALL language 'C' NOSNOWBALL language C
NOSNOWBALL with (isstrict); NOSNOWBALL returns null on null input;
insert into pg_ts_dict select insert into pg_ts_dict select
'CFG_MODNAME', 'CFG_MODNAME',
......
This diff is collapsed.
--SQL for XML parser --SQL for XML parser
CREATE OR REPLACE FUNCTION xml_valid(text) RETURNS bool CREATE OR REPLACE FUNCTION xml_valid(text) RETURNS bool
AS 'MODULE_PATHNAME' LANGUAGE 'c' STRICT IMMUTABLE; AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE;
CREATE OR REPLACE FUNCTION xml_encode_special_chars(text) RETURNS text CREATE OR REPLACE FUNCTION xml_encode_special_chars(text) RETURNS text
AS 'MODULE_PATHNAME' LANGUAGE 'c' STRICT IMMUTABLE; AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE;
CREATE OR REPLACE FUNCTION xpath_string(text,text) RETURNS text CREATE OR REPLACE FUNCTION xpath_string(text,text) RETURNS text
AS 'MODULE_PATHNAME' LANGUAGE 'c' STRICT IMMUTABLE; AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE;
CREATE OR REPLACE FUNCTION xpath_nodeset(text,text,text,text) RETURNS text CREATE OR REPLACE FUNCTION xpath_nodeset(text,text,text,text) RETURNS text
AS 'MODULE_PATHNAME' LANGUAGE 'c' STRICT IMMUTABLE; AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE;
CREATE OR REPLACE FUNCTION xpath_number(text,text) RETURNS float4 CREATE OR REPLACE FUNCTION xpath_number(text,text) RETURNS float4
AS 'MODULE_PATHNAME' LANGUAGE 'c' STRICT IMMUTABLE; AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE;
CREATE OR REPLACE FUNCTION xpath_bool(text,text) RETURNS boolean CREATE OR REPLACE FUNCTION xpath_bool(text,text) RETURNS boolean
AS 'MODULE_PATHNAME' LANGUAGE 'c' STRICT IMMUTABLE; AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE;
-- List function -- List function
CREATE OR REPLACE FUNCTION xpath_list(text,text,text) RETURNS text CREATE OR REPLACE FUNCTION xpath_list(text,text,text) RETURNS text
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'c' STRICT IMMUTABLE; LANGUAGE C STRICT IMMUTABLE;
CREATE OR REPLACE FUNCTION xpath_list(text,text) RETURNS text CREATE OR REPLACE FUNCTION xpath_list(text,text) RETURNS text
AS 'SELECT xpath_list($1,$2,'','')' language 'SQL' STRICT IMMUTABLE; AS 'SELECT xpath_list($1,$2,'','')' LANGUAGE SQL STRICT IMMUTABLE;
...@@ -34,17 +34,17 @@ AS 'SELECT xpath_list($1,$2,'','')' language 'SQL' STRICT IMMUTABLE; ...@@ -34,17 +34,17 @@ AS 'SELECT xpath_list($1,$2,'','')' language 'SQL' STRICT IMMUTABLE;
CREATE OR REPLACE FUNCTION xpath_nodeset(text,text) RETURNS text AS CREATE OR REPLACE FUNCTION xpath_nodeset(text,text) RETURNS text AS
'SELECT xpath_nodeset($1,$2,'''','''')' language 'SQL' STRICT IMMUTABLE; 'SELECT xpath_nodeset($1,$2,'''','''')' LANGUAGE SQL STRICT IMMUTABLE;
CREATE OR REPLACE FUNCTION xpath_nodeset(text,text,text) RETURNS text AS CREATE OR REPLACE FUNCTION xpath_nodeset(text,text,text) RETURNS text AS
'SELECT xpath_nodeset($1,$2,'''',$3)' language 'SQL' STRICT IMMUTABLE; 'SELECT xpath_nodeset($1,$2,'''',$3)' LANGUAGE SQL STRICT IMMUTABLE;
-- Table function -- Table function
CREATE OR REPLACE FUNCTION xpath_table(text,text,text,text,text) RETURNS setof record CREATE OR REPLACE FUNCTION xpath_table(text,text,text,text,text) RETURNS setof record
AS 'MODULE_PATHNAME' AS 'MODULE_PATHNAME'
LANGUAGE 'c' STRICT STABLE; LANGUAGE C STRICT STABLE;
-- XSLT functions -- XSLT functions
-- Delete from here to the end of the file if you are not compiling with -- Delete from here to the end of the file if you are not compiling with
...@@ -52,9 +52,9 @@ CREATE OR REPLACE FUNCTION xpath_table(text,text,text,text,text) RETURNS setof r ...@@ -52,9 +52,9 @@ CREATE OR REPLACE FUNCTION xpath_table(text,text,text,text,text) RETURNS setof r
CREATE OR REPLACE FUNCTION xslt_process(text,text,text) RETURNS text CREATE OR REPLACE FUNCTION xslt_process(text,text,text) RETURNS text
AS 'MODULE_PATHNAME' LANGUAGE 'c' STRICT VOLATILE; AS 'MODULE_PATHNAME' LANGUAGE C STRICT VOLATILE;
-- the function checks for the correct argument count -- the function checks for the correct argument count
CREATE OR REPLACE FUNCTION xslt_process(text,text) RETURNS text CREATE OR REPLACE FUNCTION xslt_process(text,text) RETURNS text
AS 'MODULE_PATHNAME' LANGUAGE 'c' STRICT IMMUTABLE; AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE;
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/commands/functioncmds.c,v 1.70 2005/11/21 12:49:31 alvherre Exp $ * $PostgreSQL: pgsql/src/backend/commands/functioncmds.c,v 1.71 2006/02/27 16:09:49 petere Exp $
* *
* DESCRIPTION * DESCRIPTION
* These routines take the parse tree and pick out the * These routines take the parse tree and pick out the
...@@ -632,7 +632,7 @@ CreateFunction(CreateFunctionStmt *stmt) ...@@ -632,7 +632,7 @@ CreateFunction(CreateFunctionStmt *stmt)
* In PostgreSQL versions before 6.5, the SQL name of the created * In PostgreSQL versions before 6.5, the SQL name of the created
* function could not be different from the internal name, and * function could not be different from the internal name, and
* "prosrc" wasn't used. So there is code out there that does CREATE * "prosrc" wasn't used. So there is code out there that does CREATE
* FUNCTION xyz AS '' LANGUAGE 'internal'. To preserve some modicum of * FUNCTION xyz AS '' LANGUAGE internal. To preserve some modicum of
* backwards compatibility, accept an empty "prosrc" value as meaning * backwards compatibility, accept an empty "prosrc" value as meaning
* the supplied SQL function name. * the supplied SQL function name.
*/ */
......
...@@ -524,7 +524,7 @@ library, depending on whether or not you write a PG_FUNCTION_INFO_V1() for ...@@ -524,7 +524,7 @@ library, depending on whether or not you write a PG_FUNCTION_INFO_V1() for
each one. each one.
The SQL declaration for a dynamically-loaded function is CREATE FUNCTION The SQL declaration for a dynamically-loaded function is CREATE FUNCTION
foo ... LANGUAGE 'C' regardless of whether it is old- or new-style. foo ... LANGUAGE C regardless of whether it is old- or new-style.
New-style dynamic functions will be invoked directly by fmgr, and will New-style dynamic functions will be invoked directly by fmgr, and will
therefore have the same performance as internal functions after the initial therefore have the same performance as internal functions after the initial
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
# Makefile for utils/mb/conversion_procs # Makefile for utils/mb/conversion_procs
# #
# IDENTIFICATION # IDENTIFICATION
# $PostgreSQL: pgsql/src/backend/utils/mb/conversion_procs/Makefile,v 1.16 2006/02/18 16:15:22 petere Exp $ # $PostgreSQL: pgsql/src/backend/utils/mb/conversion_procs/Makefile,v 1.17 2006/02/27 16:09:49 petere Exp $
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
...@@ -167,7 +167,7 @@ ifeq ($(enable_shared), yes) ...@@ -167,7 +167,7 @@ ifeq ($(enable_shared), yes)
func=$$1; shift; \ func=$$1; shift; \
obj=$$1; shift; \ obj=$$1; shift; \
echo "-- $$se --> $$de"; \ echo "-- $$se --> $$de"; \
echo "CREATE OR REPLACE FUNCTION $$func (INTEGER, INTEGER, CSTRING, INTERNAL, INTEGER) RETURNS VOID AS '$$"libdir"/$$obj', '$$func' LANGUAGE 'c' STRICT;"; \ echo "CREATE OR REPLACE FUNCTION $$func (INTEGER, INTEGER, CSTRING, INTERNAL, INTEGER) RETURNS VOID AS '$$"libdir"/$$obj', '$$func' LANGUAGE C STRICT;"; \
echo "DROP CONVERSION pg_catalog.$$name;"; \ echo "DROP CONVERSION pg_catalog.$$name;"; \
echo "CREATE DEFAULT CONVERSION pg_catalog.$$name FOR '$$se' TO '$$de' FROM $$func;"; \ echo "CREATE DEFAULT CONVERSION pg_catalog.$$name FOR '$$se' TO '$$de' FROM $$func;"; \
done > $@ done > $@
......
...@@ -21,7 +21,7 @@ int main(int argc, char* argv[]) { ...@@ -21,7 +21,7 @@ int main(int argc, char* argv[]) {
RAISE NOTICE 'TG_NAME=%, TG WHEN=%', TG_NAME, TG_WHEN; RAISE NOTICE 'TG_NAME=%, TG WHEN=%', TG_NAME, TG_WHEN;
RETURN NEW; RETURN NEW;
END; $test$ END; $test$
LANGUAGE 'plpgsql'; LANGUAGE plpgsql;
EXEC SQL CREATE TRIGGER My_Table_Check_Trigger EXEC SQL CREATE TRIGGER My_Table_Check_Trigger
BEFORE INSERT BEFORE INSERT
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* procedural language * procedural language
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/pl/plpgsql/src/scan.l,v 1.42 2005/06/26 19:16:07 tgl Exp $ * $PostgreSQL: pgsql/src/pl/plpgsql/src/scan.l,v 1.43 2006/02/27 16:09:50 petere Exp $
* *
* This software is copyrighted by Jan Wieck - Hamburg. * This software is copyrighted by Jan Wieck - Hamburg.
* *
...@@ -522,7 +522,7 @@ plpgsql_scanner_init(const char *str, int functype) ...@@ -522,7 +522,7 @@ plpgsql_scanner_init(const char *str, int functype)
* Hack: skip any initial newline, so that in the common coding layout * Hack: skip any initial newline, so that in the common coding layout
* CREATE FUNCTION ... AS ' * CREATE FUNCTION ... AS '
* code body * code body
* ' LANGUAGE 'plpgsql'; * ' LANGUAGE plpgsql;
* we will think "line 1" is what the programmer thinks of as line 1. * we will think "line 1" is what the programmer thinks of as line 1.
*---------- *----------
*/ */
......
...@@ -52,7 +52,7 @@ create function check_pkey1_exists(int4, bpchar) returns bool as ' ...@@ -52,7 +52,7 @@ create function check_pkey1_exists(int4, bpchar) returns bool as '
return "t" return "t"
} }
return "f" return "f"
' language 'pltcl'; ' language pltcl;
-- --
-- Trigger function on every change to T_pkey1 -- Trigger function on every change to T_pkey1
-- --
...@@ -138,7 +138,7 @@ create function trig_pkey1_before() returns trigger as ' ...@@ -138,7 +138,7 @@ create function trig_pkey1_before() returns trigger as '
# Anything is fine - let operation pass through # Anything is fine - let operation pass through
# #
return OK return OK
' language 'pltcl'; ' language pltcl;
create trigger pkey1_before before insert or update or delete on T_pkey1 create trigger pkey1_before before insert or update or delete on T_pkey1
for each row execute procedure for each row execute procedure
trig_pkey1_before(); trig_pkey1_before();
...@@ -175,7 +175,7 @@ create function trig_pkey2_before() returns trigger as ' ...@@ -175,7 +175,7 @@ create function trig_pkey2_before() returns trigger as '
# Return modified tuple in NEW # Return modified tuple in NEW
# #
return [array get NEW] return [array get NEW]
' language 'pltcl'; ' language pltcl;
create trigger pkey2_before before insert or update on T_pkey2 create trigger pkey2_before before insert or update on T_pkey2
for each row execute procedure for each row execute procedure
trig_pkey2_before(); trig_pkey2_before();
...@@ -261,7 +261,7 @@ create function trig_pkey2_after() returns trigger as ' ...@@ -261,7 +261,7 @@ create function trig_pkey2_after() returns trigger as '
} }
return OK return OK
' language 'pltcl'; ' language pltcl;
create trigger pkey2_after after update or delete on T_pkey2 create trigger pkey2_after after update or delete on T_pkey2
for each row execute procedure for each row execute procedure
trig_pkey2_after(); trig_pkey2_after();
...@@ -355,7 +355,7 @@ create function check_primkey() returns trigger as ' ...@@ -355,7 +355,7 @@ create function check_primkey() returns trigger as '
# Anything is fine # Anything is fine
# #
return OK return OK
' language 'pltcl'; ' language pltcl;
create trigger dta1_before before insert or update on T_dta1 create trigger dta1_before before insert or update on T_dta1
for each row execute procedure for each row execute procedure
check_primkey('ref1', 'ref2', 'T_pkey1', 'key1', 'key2'); check_primkey('ref1', 'ref2', 'T_pkey1', 'key1', 'key2');
...@@ -364,7 +364,7 @@ create trigger dta2_before before insert or update on T_dta2 ...@@ -364,7 +364,7 @@ create trigger dta2_before before insert or update on T_dta2
check_primkey('ref1', 'ref2', 'T_pkey2', 'key1', 'key2'); check_primkey('ref1', 'ref2', 'T_pkey2', 'key1', 'key2');
create function tcl_int4add(int4,int4) returns int4 as ' create function tcl_int4add(int4,int4) returns int4 as '
return [expr $1 + $2] return [expr $1 + $2]
' language 'pltcl'; ' language pltcl;
-- We use split(n) as a quick-and-dirty way of parsing the input array -- We use split(n) as a quick-and-dirty way of parsing the input array
-- value, which comes in as a string like '{1,2}'. There are better ways... -- value, which comes in as a string like '{1,2}'. There are better ways...
create function tcl_int4_accum(int4[], int4) returns int4[] as ' create function tcl_int4_accum(int4[], int4) returns int4[] as '
...@@ -372,12 +372,12 @@ create function tcl_int4_accum(int4[], int4) returns int4[] as ' ...@@ -372,12 +372,12 @@ create function tcl_int4_accum(int4[], int4) returns int4[] as '
set newsum [expr {[lindex $state 1] + $2}] set newsum [expr {[lindex $state 1] + $2}]
set newcnt [expr {[lindex $state 2] + 1}] set newcnt [expr {[lindex $state 2] + 1}]
return "{$newsum,$newcnt}" return "{$newsum,$newcnt}"
' language 'pltcl'; ' language pltcl;
create function tcl_int4_avg(int4[]) returns int4 as ' create function tcl_int4_avg(int4[]) returns int4 as '
set state [split $1 "{,}"] set state [split $1 "{,}"]
if {[lindex $state 2] == 0} { return_null } if {[lindex $state 2] == 0} { return_null }
return [expr {[lindex $state 1] / [lindex $state 2]}] return [expr {[lindex $state 1] / [lindex $state 2]}]
' language 'pltcl'; ' language pltcl;
create aggregate tcl_avg ( create aggregate tcl_avg (
sfunc = tcl_int4_accum, sfunc = tcl_int4_accum,
basetype = int4, basetype = int4,
...@@ -396,7 +396,7 @@ create function tcl_int4lt(int4,int4) returns bool as ' ...@@ -396,7 +396,7 @@ create function tcl_int4lt(int4,int4) returns bool as '
return t return t
} }
return f return f
' language 'pltcl'; ' language pltcl;
create operator @< ( create operator @< (
leftarg = int4, leftarg = int4,
rightarg = int4, rightarg = int4,
......
...@@ -58,7 +58,7 @@ create function check_pkey1_exists(int4, bpchar) returns bool as ' ...@@ -58,7 +58,7 @@ create function check_pkey1_exists(int4, bpchar) returns bool as '
return "t" return "t"
} }
return "f" return "f"
' language 'pltcl'; ' language pltcl;
-- --
...@@ -146,7 +146,7 @@ create function trig_pkey1_before() returns trigger as ' ...@@ -146,7 +146,7 @@ create function trig_pkey1_before() returns trigger as '
# Anything is fine - let operation pass through # Anything is fine - let operation pass through
# #
return OK return OK
' language 'pltcl'; ' language pltcl;
create trigger pkey1_before before insert or update or delete on T_pkey1 create trigger pkey1_before before insert or update or delete on T_pkey1
...@@ -187,7 +187,7 @@ create function trig_pkey2_before() returns trigger as ' ...@@ -187,7 +187,7 @@ create function trig_pkey2_before() returns trigger as '
# Return modified tuple in NEW # Return modified tuple in NEW
# #
return [array get NEW] return [array get NEW]
' language 'pltcl'; ' language pltcl;
create trigger pkey2_before before insert or update on T_pkey2 create trigger pkey2_before before insert or update on T_pkey2
...@@ -277,7 +277,7 @@ create function trig_pkey2_after() returns trigger as ' ...@@ -277,7 +277,7 @@ create function trig_pkey2_after() returns trigger as '
} }
return OK return OK
' language 'pltcl'; ' language pltcl;
create trigger pkey2_after after update or delete on T_pkey2 create trigger pkey2_after after update or delete on T_pkey2
...@@ -375,7 +375,7 @@ create function check_primkey() returns trigger as ' ...@@ -375,7 +375,7 @@ create function check_primkey() returns trigger as '
# Anything is fine # Anything is fine
# #
return OK return OK
' language 'pltcl'; ' language pltcl;
create trigger dta1_before before insert or update on T_dta1 create trigger dta1_before before insert or update on T_dta1
...@@ -390,7 +390,7 @@ create trigger dta2_before before insert or update on T_dta2 ...@@ -390,7 +390,7 @@ create trigger dta2_before before insert or update on T_dta2
create function tcl_int4add(int4,int4) returns int4 as ' create function tcl_int4add(int4,int4) returns int4 as '
return [expr $1 + $2] return [expr $1 + $2]
' language 'pltcl'; ' language pltcl;
-- We use split(n) as a quick-and-dirty way of parsing the input array -- We use split(n) as a quick-and-dirty way of parsing the input array
-- value, which comes in as a string like '{1,2}'. There are better ways... -- value, which comes in as a string like '{1,2}'. There are better ways...
...@@ -400,13 +400,13 @@ create function tcl_int4_accum(int4[], int4) returns int4[] as ' ...@@ -400,13 +400,13 @@ create function tcl_int4_accum(int4[], int4) returns int4[] as '
set newsum [expr {[lindex $state 1] + $2}] set newsum [expr {[lindex $state 1] + $2}]
set newcnt [expr {[lindex $state 2] + 1}] set newcnt [expr {[lindex $state 2] + 1}]
return "{$newsum,$newcnt}" return "{$newsum,$newcnt}"
' language 'pltcl'; ' language pltcl;
create function tcl_int4_avg(int4[]) returns int4 as ' create function tcl_int4_avg(int4[]) returns int4 as '
set state [split $1 "{,}"] set state [split $1 "{,}"]
if {[lindex $state 2] == 0} { return_null } if {[lindex $state 2] == 0} { return_null }
return [expr {[lindex $state 1] / [lindex $state 2]}] return [expr {[lindex $state 1] / [lindex $state 2]}]
' language 'pltcl'; ' language pltcl;
create aggregate tcl_avg ( create aggregate tcl_avg (
sfunc = tcl_int4_accum, sfunc = tcl_int4_accum,
...@@ -428,7 +428,7 @@ create function tcl_int4lt(int4,int4) returns bool as ' ...@@ -428,7 +428,7 @@ create function tcl_int4lt(int4,int4) returns bool as '
return t return t
} }
return f return f
' language 'pltcl'; ' language pltcl;
create operator @< ( create operator @< (
leftarg = int4, leftarg = int4,
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
# Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group # Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
# Portions Copyright (c) 1994, Regents of the University of California # Portions Copyright (c) 1994, Regents of the University of California
# #
# $PostgreSQL: pgsql/src/test/regress/GNUmakefile,v 1.55 2005/12/09 21:19:36 petere Exp $ # $PostgreSQL: pgsql/src/test/regress/GNUmakefile,v 1.56 2006/02/27 16:09:50 petere Exp $
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
...@@ -62,7 +62,7 @@ uninstall: ...@@ -62,7 +62,7 @@ uninstall:
rm -f '$(DESTDIR)$(pgxsdir)/$(subdir)/pg_regress' rm -f '$(DESTDIR)$(pgxsdir)/$(subdir)/pg_regress'
# Build dynamically-loaded object file for CREATE FUNCTION ... LANGUAGE 'C'. # Build dynamically-loaded object file for CREATE FUNCTION ... LANGUAGE C.
NAME = regress NAME = regress
SO_MAJOR_VERSION= 0 SO_MAJOR_VERSION= 0
......
...@@ -11,13 +11,13 @@ CREATE FUNCTION fn_x_before () RETURNS TRIGGER AS ' ...@@ -11,13 +11,13 @@ CREATE FUNCTION fn_x_before () RETURNS TRIGGER AS '
NEW.e := ''before trigger fired''::text; NEW.e := ''before trigger fired''::text;
return NEW; return NEW;
END; END;
' language 'plpgsql'; ' LANGUAGE plpgsql;
CREATE FUNCTION fn_x_after () RETURNS TRIGGER AS ' CREATE FUNCTION fn_x_after () RETURNS TRIGGER AS '
BEGIN BEGIN
UPDATE x set e=''after trigger fired'' where c=''stuff''; UPDATE x set e=''after trigger fired'' where c=''stuff'';
return NULL; return NULL;
END; END;
' language 'plpgsql'; ' LANGUAGE plpgsql;
CREATE TRIGGER trg_x_after AFTER INSERT ON x CREATE TRIGGER trg_x_after AFTER INSERT ON x
FOR EACH ROW EXECUTE PROCEDURE fn_x_after(); FOR EACH ROW EXECUTE PROCEDURE fn_x_after();
CREATE TRIGGER trg_x_before BEFORE INSERT ON x CREATE TRIGGER trg_x_before BEFORE INSERT ON x
......
...@@ -18,24 +18,24 @@ CREATE TYPE city_budget ( ...@@ -18,24 +18,24 @@ CREATE TYPE city_budget (
CREATE FUNCTION int42_in(cstring) CREATE FUNCTION int42_in(cstring)
RETURNS int42 RETURNS int42
AS 'int4in' AS 'int4in'
LANGUAGE 'internal' WITH (isStrict); LANGUAGE internal STRICT;
NOTICE: type "int42" is not yet defined NOTICE: type "int42" is not yet defined
DETAIL: Creating a shell type definition. DETAIL: Creating a shell type definition.
CREATE FUNCTION int42_out(int42) CREATE FUNCTION int42_out(int42)
RETURNS cstring RETURNS cstring
AS 'int4out' AS 'int4out'
LANGUAGE 'internal' WITH (isStrict); LANGUAGE internal STRICT;
NOTICE: argument type int42 is only a shell NOTICE: argument type int42 is only a shell
CREATE FUNCTION text_w_default_in(cstring) CREATE FUNCTION text_w_default_in(cstring)
RETURNS text_w_default RETURNS text_w_default
AS 'textin' AS 'textin'
LANGUAGE 'internal' WITH (isStrict); LANGUAGE internal STRICT;
NOTICE: type "text_w_default" is not yet defined NOTICE: type "text_w_default" is not yet defined
DETAIL: Creating a shell type definition. DETAIL: Creating a shell type definition.
CREATE FUNCTION text_w_default_out(text_w_default) CREATE FUNCTION text_w_default_out(text_w_default)
RETURNS cstring RETURNS cstring
AS 'textout' AS 'textout'
LANGUAGE 'internal' WITH (isStrict); LANGUAGE internal STRICT;
NOTICE: argument type text_w_default is only a shell NOTICE: argument type text_w_default is only a shell
CREATE TYPE int42 ( CREATE TYPE int42 (
internallength = 4, internallength = 4,
......
...@@ -100,7 +100,7 @@ begin ...@@ -100,7 +100,7 @@ begin
end if; end if;
return new; return new;
end; end;
' language 'plpgsql'; ' language plpgsql;
create trigger tg_room_au after update create trigger tg_room_au after update
on Room for each row execute procedure tg_room_au(); on Room for each row execute procedure tg_room_au();
-- ************************************************************ -- ************************************************************
...@@ -112,7 +112,7 @@ begin ...@@ -112,7 +112,7 @@ begin
delete from WSlot where roomno = old.roomno; delete from WSlot where roomno = old.roomno;
return old; return old;
end; end;
' language 'plpgsql'; ' language plpgsql;
create trigger tg_room_ad after delete create trigger tg_room_ad after delete
on Room for each row execute procedure tg_room_ad(); on Room for each row execute procedure tg_room_ad();
-- ************************************************************ -- ************************************************************
...@@ -140,7 +140,7 @@ begin ...@@ -140,7 +140,7 @@ begin
end if; end if;
return new; return new;
end; end;
' language 'plpgsql'; ' language plpgsql;
create trigger tg_pfield_au after update create trigger tg_pfield_au after update
on PField for each row execute procedure tg_pfield_au(); on PField for each row execute procedure tg_pfield_au();
-- ************************************************************ -- ************************************************************
...@@ -152,7 +152,7 @@ begin ...@@ -152,7 +152,7 @@ begin
delete from PSlot where pfname = old.name; delete from PSlot where pfname = old.name;
return old; return old;
end; end;
' language 'plpgsql'; ' language plpgsql;
create trigger tg_pfield_ad after delete create trigger tg_pfield_ad after delete
on PField for each row execute procedure tg_pfield_ad(); on PField for each row execute procedure tg_pfield_ad();
-- ************************************************************ -- ************************************************************
...@@ -184,7 +184,7 @@ begin ...@@ -184,7 +184,7 @@ begin
end if; end if;
return new; return new;
end; end;
' language 'plpgsql'; ' language plpgsql;
create trigger tg_system_au after update create trigger tg_system_au after update
on System for each row execute procedure tg_system_au(); on System for each row execute procedure tg_system_au();
-- ************************************************************ -- ************************************************************
...@@ -237,7 +237,7 @@ begin ...@@ -237,7 +237,7 @@ begin
return old; return old;
end if; end if;
end; end;
' language 'plpgsql'; ' language plpgsql;
create trigger tg_hub_a after insert or update or delete create trigger tg_hub_a after insert or update or delete
on Hub for each row execute procedure tg_hub_a(); on Hub for each row execute procedure tg_hub_a();
-- ************************************************************ -- ************************************************************
...@@ -261,7 +261,7 @@ begin ...@@ -261,7 +261,7 @@ begin
end loop; end loop;
return 0; return 0;
end end
' language 'plpgsql'; ' language plpgsql;
-- Test comments -- Test comments
COMMENT ON FUNCTION tg_hub_adjustslots_wrong(bpchar, integer, integer) IS 'function with args'; COMMENT ON FUNCTION tg_hub_adjustslots_wrong(bpchar, integer, integer) IS 'function with args';
ERROR: function tg_hub_adjustslots_wrong(character, integer, integer) does not exist ERROR: function tg_hub_adjustslots_wrong(character, integer, integer) does not exist
...@@ -301,7 +301,7 @@ begin ...@@ -301,7 +301,7 @@ begin
new.slotname := sname; new.slotname := sname;
return new; return new;
end; end;
' language 'plpgsql'; ' language plpgsql;
create trigger tg_hslot_biu before insert or update create trigger tg_hslot_biu before insert or update
on HSlot for each row execute procedure tg_hslot_biu(); on HSlot for each row execute procedure tg_hslot_biu();
-- ************************************************************ -- ************************************************************
...@@ -321,7 +321,7 @@ begin ...@@ -321,7 +321,7 @@ begin
end if; end if;
raise exception ''no manual manipulation of HSlot''; raise exception ''no manual manipulation of HSlot'';
end; end;
' language 'plpgsql'; ' language plpgsql;
create trigger tg_hslot_bd before delete create trigger tg_hslot_bd before delete
on HSlot for each row execute procedure tg_hslot_bd(); on HSlot for each row execute procedure tg_hslot_bd();
-- ************************************************************ -- ************************************************************
...@@ -335,7 +335,7 @@ begin ...@@ -335,7 +335,7 @@ begin
end if; end if;
return new; return new;
end; end;
' language 'plpgsql'; ' language plpgsql;
create trigger tg_chkslotname before insert create trigger tg_chkslotname before insert
on PSlot for each row execute procedure tg_chkslotname('PS'); on PSlot for each row execute procedure tg_chkslotname('PS');
create trigger tg_chkslotname before insert create trigger tg_chkslotname before insert
...@@ -357,7 +357,7 @@ begin ...@@ -357,7 +357,7 @@ begin
end if; end if;
return new; return new;
end; end;
' language 'plpgsql'; ' language plpgsql;
create trigger tg_chkslotlink before insert or update create trigger tg_chkslotlink before insert or update
on PSlot for each row execute procedure tg_chkslotlink(); on PSlot for each row execute procedure tg_chkslotlink();
create trigger tg_chkslotlink before insert or update create trigger tg_chkslotlink before insert or update
...@@ -379,7 +379,7 @@ begin ...@@ -379,7 +379,7 @@ begin
end if; end if;
return new; return new;
end; end;
' language 'plpgsql'; ' language plpgsql;
create trigger tg_chkbacklink before insert or update create trigger tg_chkbacklink before insert or update
on PSlot for each row execute procedure tg_chkbacklink(); on PSlot for each row execute procedure tg_chkbacklink();
create trigger tg_chkbacklink before insert or update create trigger tg_chkbacklink before insert or update
...@@ -409,7 +409,7 @@ begin ...@@ -409,7 +409,7 @@ begin
end if; end if;
return new; return new;
end; end;
' language 'plpgsql'; ' language plpgsql;
create trigger tg_pslot_bu before update create trigger tg_pslot_bu before update
on PSlot for each row execute procedure tg_pslot_bu(); on PSlot for each row execute procedure tg_pslot_bu();
-- ************************************************************ -- ************************************************************
...@@ -435,7 +435,7 @@ begin ...@@ -435,7 +435,7 @@ begin
end if; end if;
return new; return new;
end; end;
' language 'plpgsql'; ' language plpgsql;
create trigger tg_wslot_bu before update create trigger tg_wslot_bu before update
on WSlot for each row execute procedure tg_Wslot_bu(); on WSlot for each row execute procedure tg_Wslot_bu();
-- ************************************************************ -- ************************************************************
...@@ -461,7 +461,7 @@ begin ...@@ -461,7 +461,7 @@ begin
end if; end if;
return new; return new;
end; end;
' language 'plpgsql'; ' language plpgsql;
create trigger tg_pline_bu before update create trigger tg_pline_bu before update
on PLine for each row execute procedure tg_pline_bu(); on PLine for each row execute procedure tg_pline_bu();
-- ************************************************************ -- ************************************************************
...@@ -487,7 +487,7 @@ begin ...@@ -487,7 +487,7 @@ begin
end if; end if;
return new; return new;
end; end;
' language 'plpgsql'; ' language plpgsql;
create trigger tg_iface_bu before update create trigger tg_iface_bu before update
on IFace for each row execute procedure tg_iface_bu(); on IFace for each row execute procedure tg_iface_bu();
-- ************************************************************ -- ************************************************************
...@@ -513,7 +513,7 @@ begin ...@@ -513,7 +513,7 @@ begin
end if; end if;
return new; return new;
end; end;
' language 'plpgsql'; ' language plpgsql;
create trigger tg_hslot_bu before update create trigger tg_hslot_bu before update
on HSlot for each row execute procedure tg_hslot_bu(); on HSlot for each row execute procedure tg_hslot_bu();
-- ************************************************************ -- ************************************************************
...@@ -537,7 +537,7 @@ begin ...@@ -537,7 +537,7 @@ begin
end if; end if;
return new; return new;
end; end;
' language 'plpgsql'; ' language plpgsql;
create trigger tg_phone_bu before update create trigger tg_phone_bu before update
on PHone for each row execute procedure tg_phone_bu(); on PHone for each row execute procedure tg_phone_bu();
-- ************************************************************ -- ************************************************************
...@@ -576,7 +576,7 @@ begin ...@@ -576,7 +576,7 @@ begin
return old; return old;
end if; end if;
end; end;
' language 'plpgsql'; ' language plpgsql;
create trigger tg_backlink_a after insert or update or delete create trigger tg_backlink_a after insert or update or delete
on PSlot for each row execute procedure tg_backlink_a('PS'); on PSlot for each row execute procedure tg_backlink_a('PS');
create trigger tg_backlink_a after insert or update or delete create trigger tg_backlink_a after insert or update or delete
...@@ -636,7 +636,7 @@ begin ...@@ -636,7 +636,7 @@ begin
end if; end if;
raise exception ''illegal backlink beginning with %'', mytype; raise exception ''illegal backlink beginning with %'', mytype;
end; end;
' language 'plpgsql'; ' language plpgsql;
-- ************************************************************ -- ************************************************************
-- * Support function to clear out the backlink field if -- * Support function to clear out the backlink field if
-- * it still points to specific slot -- * it still points to specific slot
...@@ -718,7 +718,7 @@ begin ...@@ -718,7 +718,7 @@ begin
return old; return old;
end if; end if;
end; end;
' language 'plpgsql'; ' language plpgsql;
create trigger tg_slotlink_a after insert or update or delete create trigger tg_slotlink_a after insert or update or delete
on PSlot for each row execute procedure tg_slotlink_a('PS'); on PSlot for each row execute procedure tg_slotlink_a('PS');
create trigger tg_slotlink_a after insert or update or delete create trigger tg_slotlink_a after insert or update or delete
...@@ -812,7 +812,7 @@ begin ...@@ -812,7 +812,7 @@ begin
end if; end if;
raise exception ''illegal slotlink beginning with %'', mytype; raise exception ''illegal slotlink beginning with %'', mytype;
end; end;
' language 'plpgsql'; ' language plpgsql;
-- ************************************************************ -- ************************************************************
-- * Support function to clear out the slotlink field if -- * Support function to clear out the slotlink field if
-- * it still points to specific slot -- * it still points to specific slot
...@@ -877,7 +877,7 @@ begin ...@@ -877,7 +877,7 @@ begin
return 0; return 0;
end if; end if;
end; end;
' language 'plpgsql'; ' language plpgsql;
-- ************************************************************ -- ************************************************************
-- * Describe the backside of a patchfield slot -- * Describe the backside of a patchfield slot
-- ************************************************************ -- ************************************************************
...@@ -920,7 +920,7 @@ begin ...@@ -920,7 +920,7 @@ begin
end if; end if;
return rec.backlink; return rec.backlink;
end; end;
' language 'plpgsql'; ' language plpgsql;
-- ************************************************************ -- ************************************************************
-- * Describe the front of a patchfield slot -- * Describe the front of a patchfield slot
-- ************************************************************ -- ************************************************************
...@@ -954,7 +954,7 @@ begin ...@@ -954,7 +954,7 @@ begin
end if; end if;
return psrec.slotlink; return psrec.slotlink;
end; end;
' language 'plpgsql'; ' language plpgsql;
-- ************************************************************ -- ************************************************************
-- * Describe the front of a wall connector slot -- * Describe the front of a wall connector slot
-- ************************************************************ -- ************************************************************
...@@ -1002,7 +1002,7 @@ begin ...@@ -1002,7 +1002,7 @@ begin
end if; end if;
return rec.slotlink; return rec.slotlink;
end; end;
' language 'plpgsql'; ' language plpgsql;
-- ************************************************************ -- ************************************************************
-- * View of a patchfield describing backside and patches -- * View of a patchfield describing backside and patches
-- ************************************************************ -- ************************************************************
...@@ -1555,7 +1555,7 @@ BEGIN ...@@ -1555,7 +1555,7 @@ BEGIN
rslt = CAST($1 AS TEXT) || '','' || recursion_test($1 - 1, $2); rslt = CAST($1 AS TEXT) || '','' || recursion_test($1 - 1, $2);
END IF; END IF;
RETURN rslt; RETURN rslt;
END;' LANGUAGE 'plpgsql'; END;' LANGUAGE plpgsql;
SELECT recursion_test(4,3); SELECT recursion_test(4,3);
recursion_test recursion_test
---------------- ----------------
...@@ -1600,7 +1600,7 @@ create function test_found() ...@@ -1600,7 +1600,7 @@ create function test_found()
insert into found_test_tbl values (6); insert into found_test_tbl values (6);
end if; end if;
return true; return true;
end;' language 'plpgsql'; end;' language plpgsql;
select test_found(); select test_found();
test_found test_found
------------ ------------
...@@ -1629,7 +1629,7 @@ BEGIN ...@@ -1629,7 +1629,7 @@ BEGIN
RETURN NEXT rec; RETURN NEXT rec;
END LOOP; END LOOP;
RETURN; RETURN;
END;' language 'plpgsql'; END;' language plpgsql;
select * from test_table_func_rec(); select * from test_table_func_rec();
a a
----- -----
...@@ -1649,7 +1649,7 @@ BEGIN ...@@ -1649,7 +1649,7 @@ BEGIN
RETURN NEXT row; RETURN NEXT row;
END LOOP; END LOOP;
RETURN; RETURN;
END;' language 'plpgsql'; END;' language plpgsql;
select * from test_table_func_row(); select * from test_table_func_row();
a a
----- -----
...@@ -1669,7 +1669,7 @@ BEGIN ...@@ -1669,7 +1669,7 @@ BEGIN
RETURN NEXT i + 1; RETURN NEXT i + 1;
END LOOP; END LOOP;
RETURN; RETURN;
END;' language 'plpgsql'; END;' language plpgsql;
select * from test_ret_set_scalar(1,10); select * from test_ret_set_scalar(1,10);
test_ret_set_scalar test_ret_set_scalar
--------------------- ---------------------
...@@ -1699,7 +1699,7 @@ BEGIN ...@@ -1699,7 +1699,7 @@ BEGIN
RETURN NEXT retval; RETURN NEXT retval;
END IF; END IF;
RETURN; RETURN;
END;' language 'plpgsql'; END;' language plpgsql;
SELECT * FROM test_ret_set_rec_dyn(1500) AS (a int, b int, c int); SELECT * FROM test_ret_set_rec_dyn(1500) AS (a int, b int, c int);
a | b | c a | b | c
---+----+---- ---+----+----
...@@ -1725,7 +1725,7 @@ BEGIN ...@@ -1725,7 +1725,7 @@ BEGIN
SELECT INTO retval 50, 5::numeric, ''xxx''::text; SELECT INTO retval 50, 5::numeric, ''xxx''::text;
RETURN retval; RETURN retval;
END IF; END IF;
END;' language 'plpgsql'; END;' language plpgsql;
SELECT * FROM test_ret_rec_dyn(1500) AS (a int, b int, c int); SELECT * FROM test_ret_rec_dyn(1500) AS (a int, b int, c int);
a | b | c a | b | c
---+----+---- ---+----+----
...@@ -1870,7 +1870,7 @@ BEGIN ...@@ -1870,7 +1870,7 @@ BEGIN
ELSE ELSE
RETURN FALSE; RETURN FALSE;
END IF; END IF;
END;' language 'plpgsql'; END;' language plpgsql;
create function perform_test_func() returns void as ' create function perform_test_func() returns void as '
BEGIN BEGIN
IF FOUND then IF FOUND then
...@@ -1890,7 +1890,7 @@ BEGIN ...@@ -1890,7 +1890,7 @@ BEGIN
END IF; END IF;
RETURN; RETURN;
END;' language 'plpgsql'; END;' language plpgsql;
SELECT perform_test_func(); SELECT perform_test_func();
perform_test_func perform_test_func
------------------- -------------------
...@@ -2230,13 +2230,13 @@ begin ...@@ -2230,13 +2230,13 @@ begin
open rc for select a from rc_test; open rc for select a from rc_test;
return rc; return rc;
end end
$$ language 'plpgsql'; $$ language plpgsql;
create function refcursor_test1(refcursor) returns refcursor as $$ create function refcursor_test1(refcursor) returns refcursor as $$
begin begin
perform return_refcursor($1); perform return_refcursor($1);
return $1; return $1;
end end
$$ language 'plpgsql'; $$ language plpgsql;
begin; begin;
select refcursor_test1('test1'); select refcursor_test1('test1');
refcursor_test1 refcursor_test1
...@@ -2282,7 +2282,7 @@ begin ...@@ -2282,7 +2282,7 @@ begin
return false; return false;
end if; end if;
end end
$$ language 'plpgsql'; $$ language plpgsql;
select refcursor_test2(20000, 20000) as "Should be false", select refcursor_test2(20000, 20000) as "Should be false",
refcursor_test2(20, 20) as "Should be true"; refcursor_test2(20, 20) as "Should be true";
Should be false | Should be true Should be false | Should be true
......
...@@ -33,29 +33,29 @@ ...@@ -33,29 +33,29 @@
-- argument polymorphism, but within the constraints of valid aggregate -- argument polymorphism, but within the constraints of valid aggregate
-- functions, i.e. tf arg1 and tf return type must match -- functions, i.e. tf arg1 and tf return type must match
-- polymorphic single arg transfn -- polymorphic single arg transfn
CREATE FUNCTION stfp(anyarray) returns anyarray as CREATE FUNCTION stfp(anyarray) RETURNS anyarray AS
'select $1' language 'sql'; 'select $1' LANGUAGE SQL;
-- non-polymorphic single arg transfn -- non-polymorphic single arg transfn
CREATE FUNCTION stfnp(int[]) returns int[] as CREATE FUNCTION stfnp(int[]) RETURNS int[] AS
'select $1' language 'sql'; 'select $1' LANGUAGE SQL;
-- dual polymorphic transfn -- dual polymorphic transfn
CREATE FUNCTION tfp(anyarray,anyelement) returns anyarray as CREATE FUNCTION tfp(anyarray,anyelement) RETURNS anyarray AS
'select $1 || $2' language 'sql'; 'select $1 || $2' LANGUAGE SQL;
-- dual non-polymorphic transfn -- dual non-polymorphic transfn
CREATE FUNCTION tfnp(int[],int) returns int[] as CREATE FUNCTION tfnp(int[],int) RETURNS int[] AS
'select $1 || $2' language 'sql'; 'select $1 || $2' LANGUAGE SQL;
-- arg1 only polymorphic transfn -- arg1 only polymorphic transfn
CREATE FUNCTION tf1p(anyarray,int) returns anyarray as CREATE FUNCTION tf1p(anyarray,int) RETURNS anyarray AS
'select $1' language 'sql'; 'select $1' LANGUAGE SQL;
-- arg2 only polymorphic transfn -- arg2 only polymorphic transfn
CREATE FUNCTION tf2p(int[],anyelement) returns int[] as CREATE FUNCTION tf2p(int[],anyelement) RETURNS int[] AS
'select $1' language 'sql'; 'select $1' LANGUAGE SQL;
-- finalfn polymorphic -- finalfn polymorphic
CREATE FUNCTION ffp(anyarray) returns anyarray as CREATE FUNCTION ffp(anyarray) RETURNS anyarray AS
'select $1' language 'sql'; 'select $1' LANGUAGE SQL;
-- finalfn non-polymorphic -- finalfn non-polymorphic
CREATE FUNCTION ffnp(int[]) returns int[] as CREATE FUNCTION ffnp(int[]) returns int[] as
'select $1' language 'sql'; 'select $1' LANGUAGE SQL;
-- Try to cover all the possible states: -- Try to cover all the possible states:
-- --
-- Note: in Cases 1 & 2, we are trying to return P. Therefore, if the transfn -- Note: in Cases 1 & 2, we are trying to return P. Therefore, if the transfn
......
...@@ -779,7 +779,7 @@ BEGIN; ...@@ -779,7 +779,7 @@ BEGIN;
CREATE FUNCTION declares_cursor(text) CREATE FUNCTION declares_cursor(text)
RETURNS void RETURNS void
AS 'DECLARE c CURSOR FOR SELECT stringu1 FROM tenk1 WHERE stringu1 LIKE $1;' AS 'DECLARE c CURSOR FOR SELECT stringu1 FROM tenk1 WHERE stringu1 LIKE $1;'
LANGUAGE 'sql'; LANGUAGE SQL;
SELECT declares_cursor('AB%'); SELECT declares_cursor('AB%');
declares_cursor declares_cursor
----------------- -----------------
......
...@@ -188,7 +188,7 @@ SELECT * FROM vw_getfoo; ...@@ -188,7 +188,7 @@ SELECT * FROM vw_getfoo;
-- plpgsql, proretset = f, prorettype = b -- plpgsql, proretset = f, prorettype = b
DROP VIEW vw_getfoo; DROP VIEW vw_getfoo;
DROP FUNCTION getfoo(int); DROP FUNCTION getfoo(int);
CREATE FUNCTION getfoo(int) RETURNS int AS 'DECLARE fooint int; BEGIN SELECT fooid into fooint FROM foo WHERE fooid = $1; RETURN fooint; END;' LANGUAGE 'plpgsql'; CREATE FUNCTION getfoo(int) RETURNS int AS 'DECLARE fooint int; BEGIN SELECT fooid into fooint FROM foo WHERE fooid = $1; RETURN fooint; END;' LANGUAGE plpgsql;
SELECT * FROM getfoo(1) AS t1; SELECT * FROM getfoo(1) AS t1;
t1 t1
---- ----
...@@ -205,7 +205,7 @@ SELECT * FROM vw_getfoo; ...@@ -205,7 +205,7 @@ SELECT * FROM vw_getfoo;
-- plpgsql, proretset = f, prorettype = c -- plpgsql, proretset = f, prorettype = c
DROP VIEW vw_getfoo; DROP VIEW vw_getfoo;
DROP FUNCTION getfoo(int); DROP FUNCTION getfoo(int);
CREATE FUNCTION getfoo(int) RETURNS foo AS 'DECLARE footup foo%ROWTYPE; BEGIN SELECT * into footup FROM foo WHERE fooid = $1; RETURN footup; END;' LANGUAGE 'plpgsql'; CREATE FUNCTION getfoo(int) RETURNS foo AS 'DECLARE footup foo%ROWTYPE; BEGIN SELECT * into footup FROM foo WHERE fooid = $1; RETURN footup; END;' LANGUAGE plpgsql;
SELECT * FROM getfoo(1) AS t1; SELECT * FROM getfoo(1) AS t1;
fooid | foosubid | fooname fooid | foosubid | fooname
-------+----------+--------- -------+----------+---------
......
...@@ -764,7 +764,7 @@ create view rtest_vview4 as select X.a, X.b, count(Y.a) as refcount ...@@ -764,7 +764,7 @@ create view rtest_vview4 as select X.a, X.b, count(Y.a) as refcount
group by X.a, X.b; group by X.a, X.b;
create function rtest_viewfunc1(int4) returns int4 as create function rtest_viewfunc1(int4) returns int4 as
'select count(*)::int4 from rtest_view2 where a = $1' 'select count(*)::int4 from rtest_view2 where a = $1'
language 'sql'; language sql;
create view rtest_vview5 as select a, b, rtest_viewfunc1(a) as refcount create view rtest_vview5 as select a, b, rtest_viewfunc1(a) as refcount
from rtest_view1; from rtest_view1;
insert into rtest_view1 values (1, 'item 1', 't'); insert into rtest_view1 values (1, 'item 1', 't');
......
...@@ -276,7 +276,7 @@ drop sequence ttdummy_seq; ...@@ -276,7 +276,7 @@ drop sequence ttdummy_seq;
CREATE TABLE log_table (tstamp timestamp default timeofday()::timestamp); CREATE TABLE log_table (tstamp timestamp default timeofday()::timestamp);
CREATE TABLE main_table (a int, b int); CREATE TABLE main_table (a int, b int);
COPY main_table (a,b) FROM stdin; COPY main_table (a,b) FROM stdin;
CREATE FUNCTION trigger_func() RETURNS trigger LANGUAGE 'plpgsql' AS ' CREATE FUNCTION trigger_func() RETURNS trigger LANGUAGE plpgsql AS '
BEGIN BEGIN
RAISE NOTICE ''trigger_func() called: action = %, when = %, level = %'', TG_OP, TG_WHEN, TG_LEVEL; RAISE NOTICE ''trigger_func() called: action = %, when = %, level = %'', TG_OP, TG_WHEN, TG_LEVEL;
RETURN NULL; RETURN NULL;
......
...@@ -5,74 +5,74 @@ ...@@ -5,74 +5,74 @@
CREATE FUNCTION widget_in(cstring) CREATE FUNCTION widget_in(cstring)
RETURNS widget RETURNS widget
AS '@abs_builddir@/regress@DLSUFFIX@' AS '@abs_builddir@/regress@DLSUFFIX@'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE FUNCTION widget_out(widget) CREATE FUNCTION widget_out(widget)
RETURNS cstring RETURNS cstring
AS '@abs_builddir@/regress@DLSUFFIX@' AS '@abs_builddir@/regress@DLSUFFIX@'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE FUNCTION int44in(cstring) CREATE FUNCTION int44in(cstring)
RETURNS city_budget RETURNS city_budget
AS '@abs_builddir@/regress@DLSUFFIX@' AS '@abs_builddir@/regress@DLSUFFIX@'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE FUNCTION int44out(city_budget) CREATE FUNCTION int44out(city_budget)
RETURNS cstring RETURNS cstring
AS '@abs_builddir@/regress@DLSUFFIX@' AS '@abs_builddir@/regress@DLSUFFIX@'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
CREATE FUNCTION check_primary_key () CREATE FUNCTION check_primary_key ()
RETURNS trigger RETURNS trigger
AS '@abs_builddir@/../../../contrib/spi/refint@DLSUFFIX@' AS '@abs_builddir@/../../../contrib/spi/refint@DLSUFFIX@'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION check_foreign_key () CREATE FUNCTION check_foreign_key ()
RETURNS trigger RETURNS trigger
AS '@abs_builddir@/../../../contrib/spi/refint@DLSUFFIX@' AS '@abs_builddir@/../../../contrib/spi/refint@DLSUFFIX@'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION autoinc () CREATE FUNCTION autoinc ()
RETURNS trigger RETURNS trigger
AS '@abs_builddir@/../../../contrib/spi/autoinc@DLSUFFIX@' AS '@abs_builddir@/../../../contrib/spi/autoinc@DLSUFFIX@'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION funny_dup17 () CREATE FUNCTION funny_dup17 ()
RETURNS trigger RETURNS trigger
AS '@abs_builddir@/regress@DLSUFFIX@' AS '@abs_builddir@/regress@DLSUFFIX@'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION ttdummy () CREATE FUNCTION ttdummy ()
RETURNS trigger RETURNS trigger
AS '@abs_builddir@/regress@DLSUFFIX@' AS '@abs_builddir@/regress@DLSUFFIX@'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION set_ttdummy (int4) CREATE FUNCTION set_ttdummy (int4)
RETURNS int4 RETURNS int4
AS '@abs_builddir@/regress@DLSUFFIX@' AS '@abs_builddir@/regress@DLSUFFIX@'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
-- Things that shouldn't work: -- Things that shouldn't work:
CREATE FUNCTION test1 (int) RETURNS int LANGUAGE sql CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL
AS 'SELECT ''not an integer'';'; AS 'SELECT ''not an integer'';';
CREATE FUNCTION test1 (int) RETURNS int LANGUAGE sql CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL
AS 'not even SQL'; AS 'not even SQL';
CREATE FUNCTION test1 (int) RETURNS int LANGUAGE sql CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL
AS 'SELECT 1, 2, 3;'; AS 'SELECT 1, 2, 3;';
CREATE FUNCTION test1 (int) RETURNS int LANGUAGE sql CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL
AS 'SELECT $2;'; AS 'SELECT $2;';
CREATE FUNCTION test1 (int) RETURNS int LANGUAGE sql CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL
AS 'a', 'b'; AS 'a', 'b';
CREATE FUNCTION test1 (int) RETURNS int LANGUAGE c CREATE FUNCTION test1 (int) RETURNS int LANGUAGE C
AS 'nosuchfile'; AS 'nosuchfile';
CREATE FUNCTION test1 (int) RETURNS int LANGUAGE c CREATE FUNCTION test1 (int) RETURNS int LANGUAGE C
AS '@abs_builddir@/regress@DLSUFFIX@', 'nosuchsymbol'; AS '@abs_builddir@/regress@DLSUFFIX@', 'nosuchsymbol';
CREATE FUNCTION test1 (int) RETURNS int LANGUAGE internal CREATE FUNCTION test1 (int) RETURNS int LANGUAGE internal
......
...@@ -4,25 +4,25 @@ ...@@ -4,25 +4,25 @@
CREATE FUNCTION hobbies(person) CREATE FUNCTION hobbies(person)
RETURNS setof hobbies_r RETURNS setof hobbies_r
AS 'select * from hobbies_r where person = $1.name' AS 'select * from hobbies_r where person = $1.name'
LANGUAGE 'sql'; LANGUAGE SQL;
CREATE FUNCTION hobby_construct(text, text) CREATE FUNCTION hobby_construct(text, text)
RETURNS hobbies_r RETURNS hobbies_r
AS 'select $1 as name, $2 as hobby' AS 'select $1 as name, $2 as hobby'
LANGUAGE 'sql'; LANGUAGE SQL;
CREATE FUNCTION hobbies_by_name(hobbies_r.name%TYPE) CREATE FUNCTION hobbies_by_name(hobbies_r.name%TYPE)
RETURNS hobbies_r.person%TYPE RETURNS hobbies_r.person%TYPE
AS 'select person from hobbies_r where name = $1' AS 'select person from hobbies_r where name = $1'
LANGUAGE 'sql'; LANGUAGE SQL;
CREATE FUNCTION equipment(hobbies_r) CREATE FUNCTION equipment(hobbies_r)
RETURNS setof equipment_r RETURNS setof equipment_r
AS 'select * from equipment_r where hobby = $1.name' AS 'select * from equipment_r where hobby = $1.name'
LANGUAGE 'sql'; LANGUAGE SQL;
CREATE FUNCTION user_relns() CREATE FUNCTION user_relns()
...@@ -32,37 +32,37 @@ CREATE FUNCTION user_relns() ...@@ -32,37 +32,37 @@ CREATE FUNCTION user_relns()
where relnamespace = n.oid and where relnamespace = n.oid and
(nspname !~ ''pg_.*'' and nspname <> ''information_schema'') and (nspname !~ ''pg_.*'' and nspname <> ''information_schema'') and
relkind <> ''i'' ' relkind <> ''i'' '
LANGUAGE 'sql'; LANGUAGE SQL;
CREATE FUNCTION pt_in_widget(point, widget) CREATE FUNCTION pt_in_widget(point, widget)
RETURNS bool RETURNS bool
AS '@abs_builddir@/regress@DLSUFFIX@' AS '@abs_builddir@/regress@DLSUFFIX@'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION overpaid(emp) CREATE FUNCTION overpaid(emp)
RETURNS bool RETURNS bool
AS '@abs_builddir@/regress@DLSUFFIX@' AS '@abs_builddir@/regress@DLSUFFIX@'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION boxarea(box) CREATE FUNCTION boxarea(box)
RETURNS float8 RETURNS float8
AS '@abs_builddir@/regress@DLSUFFIX@' AS '@abs_builddir@/regress@DLSUFFIX@'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION interpt_pp(path, path) CREATE FUNCTION interpt_pp(path, path)
RETURNS point RETURNS point
AS '@abs_builddir@/regress@DLSUFFIX@' AS '@abs_builddir@/regress@DLSUFFIX@'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION reverse_name(name) CREATE FUNCTION reverse_name(name)
RETURNS name RETURNS name
AS '@abs_builddir@/regress@DLSUFFIX@' AS '@abs_builddir@/regress@DLSUFFIX@'
LANGUAGE 'c'; LANGUAGE C;
CREATE FUNCTION oldstyle_length(int4, text) CREATE FUNCTION oldstyle_length(int4, text)
RETURNS int4 RETURNS int4
AS '@abs_builddir@/regress@DLSUFFIX@' AS '@abs_builddir@/regress@DLSUFFIX@'
LANGUAGE 'c'; LANGUAGE C;
-- --
-- Function dynamic loading -- Function dynamic loading
......
...@@ -4,76 +4,76 @@ ...@@ -4,76 +4,76 @@
CREATE FUNCTION widget_in(cstring) CREATE FUNCTION widget_in(cstring)
RETURNS widget RETURNS widget
AS '@abs_builddir@/regress@DLSUFFIX@' AS '@abs_builddir@/regress@DLSUFFIX@'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
NOTICE: type "widget" is not yet defined NOTICE: type "widget" is not yet defined
DETAIL: Creating a shell type definition. DETAIL: Creating a shell type definition.
CREATE FUNCTION widget_out(widget) CREATE FUNCTION widget_out(widget)
RETURNS cstring RETURNS cstring
AS '@abs_builddir@/regress@DLSUFFIX@' AS '@abs_builddir@/regress@DLSUFFIX@'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
NOTICE: argument type widget is only a shell NOTICE: argument type widget is only a shell
CREATE FUNCTION int44in(cstring) CREATE FUNCTION int44in(cstring)
RETURNS city_budget RETURNS city_budget
AS '@abs_builddir@/regress@DLSUFFIX@' AS '@abs_builddir@/regress@DLSUFFIX@'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
NOTICE: type "city_budget" is not yet defined NOTICE: type "city_budget" is not yet defined
DETAIL: Creating a shell type definition. DETAIL: Creating a shell type definition.
CREATE FUNCTION int44out(city_budget) CREATE FUNCTION int44out(city_budget)
RETURNS cstring RETURNS cstring
AS '@abs_builddir@/regress@DLSUFFIX@' AS '@abs_builddir@/regress@DLSUFFIX@'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
NOTICE: argument type city_budget is only a shell NOTICE: argument type city_budget is only a shell
CREATE FUNCTION check_primary_key () CREATE FUNCTION check_primary_key ()
RETURNS trigger RETURNS trigger
AS '@abs_builddir@/../../../contrib/spi/refint@DLSUFFIX@' AS '@abs_builddir@/../../../contrib/spi/refint@DLSUFFIX@'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION check_foreign_key () CREATE FUNCTION check_foreign_key ()
RETURNS trigger RETURNS trigger
AS '@abs_builddir@/../../../contrib/spi/refint@DLSUFFIX@' AS '@abs_builddir@/../../../contrib/spi/refint@DLSUFFIX@'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION autoinc () CREATE FUNCTION autoinc ()
RETURNS trigger RETURNS trigger
AS '@abs_builddir@/../../../contrib/spi/autoinc@DLSUFFIX@' AS '@abs_builddir@/../../../contrib/spi/autoinc@DLSUFFIX@'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION funny_dup17 () CREATE FUNCTION funny_dup17 ()
RETURNS trigger RETURNS trigger
AS '@abs_builddir@/regress@DLSUFFIX@' AS '@abs_builddir@/regress@DLSUFFIX@'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION ttdummy () CREATE FUNCTION ttdummy ()
RETURNS trigger RETURNS trigger
AS '@abs_builddir@/regress@DLSUFFIX@' AS '@abs_builddir@/regress@DLSUFFIX@'
LANGUAGE 'C'; LANGUAGE C;
CREATE FUNCTION set_ttdummy (int4) CREATE FUNCTION set_ttdummy (int4)
RETURNS int4 RETURNS int4
AS '@abs_builddir@/regress@DLSUFFIX@' AS '@abs_builddir@/regress@DLSUFFIX@'
LANGUAGE 'C' STRICT; LANGUAGE C STRICT;
-- Things that shouldn't work: -- Things that shouldn't work:
CREATE FUNCTION test1 (int) RETURNS int LANGUAGE sql CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL
AS 'SELECT ''not an integer'';'; AS 'SELECT ''not an integer'';';
ERROR: return type mismatch in function declared to return integer ERROR: return type mismatch in function declared to return integer
DETAIL: Actual return type is "unknown". DETAIL: Actual return type is "unknown".
CONTEXT: SQL function "test1" CONTEXT: SQL function "test1"
CREATE FUNCTION test1 (int) RETURNS int LANGUAGE sql CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL
AS 'not even SQL'; AS 'not even SQL';
ERROR: syntax error at or near "not" at character 62 ERROR: syntax error at or near "not" at character 62
LINE 2: AS 'not even SQL'; LINE 2: AS 'not even SQL';
^ ^
CREATE FUNCTION test1 (int) RETURNS int LANGUAGE sql CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL
AS 'SELECT 1, 2, 3;'; AS 'SELECT 1, 2, 3;';
ERROR: return type mismatch in function declared to return integer ERROR: return type mismatch in function declared to return integer
DETAIL: Final SELECT must return exactly one column. DETAIL: Final SELECT must return exactly one column.
CONTEXT: SQL function "test1" CONTEXT: SQL function "test1"
CREATE FUNCTION test1 (int) RETURNS int LANGUAGE sql CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL
AS 'SELECT $2;'; AS 'SELECT $2;';
ERROR: there is no parameter $2 ERROR: there is no parameter $2
CONTEXT: SQL function "test1" CONTEXT: SQL function "test1"
CREATE FUNCTION test1 (int) RETURNS int LANGUAGE sql CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL
AS 'a', 'b'; AS 'a', 'b';
ERROR: only one AS item needed for language "sql" ERROR: only one AS item needed for language "sql"
CREATE FUNCTION test1 (int) RETURNS int LANGUAGE c CREATE FUNCTION test1 (int) RETURNS int LANGUAGE C
AS 'nosuchfile'; AS 'nosuchfile';
ERROR: could not access file "nosuchfile": No such file or directory ERROR: could not access file "nosuchfile": No such file or directory
CREATE FUNCTION test1 (int) RETURNS int LANGUAGE c CREATE FUNCTION test1 (int) RETURNS int LANGUAGE C
AS '@abs_builddir@/regress@DLSUFFIX@', 'nosuchsymbol'; AS '@abs_builddir@/regress@DLSUFFIX@', 'nosuchsymbol';
ERROR: could not find function "nosuchsymbol" in file "@abs_builddir@/regress@DLSUFFIX@" ERROR: could not find function "nosuchsymbol" in file "@abs_builddir@/regress@DLSUFFIX@"
CREATE FUNCTION test1 (int) RETURNS int LANGUAGE internal CREATE FUNCTION test1 (int) RETURNS int LANGUAGE internal
......
...@@ -11,14 +11,14 @@ CREATE FUNCTION fn_x_before () RETURNS TRIGGER AS ' ...@@ -11,14 +11,14 @@ CREATE FUNCTION fn_x_before () RETURNS TRIGGER AS '
NEW.e := ''before trigger fired''::text; NEW.e := ''before trigger fired''::text;
return NEW; return NEW;
END; END;
' language 'plpgsql'; ' LANGUAGE plpgsql;
CREATE FUNCTION fn_x_after () RETURNS TRIGGER AS ' CREATE FUNCTION fn_x_after () RETURNS TRIGGER AS '
BEGIN BEGIN
UPDATE x set e=''after trigger fired'' where c=''stuff''; UPDATE x set e=''after trigger fired'' where c=''stuff'';
return NULL; return NULL;
END; END;
' language 'plpgsql'; ' LANGUAGE plpgsql;
CREATE TRIGGER trg_x_after AFTER INSERT ON x CREATE TRIGGER trg_x_after AFTER INSERT ON x
FOR EACH ROW EXECUTE PROCEDURE fn_x_after(); FOR EACH ROW EXECUTE PROCEDURE fn_x_after();
......
...@@ -22,19 +22,19 @@ CREATE TYPE city_budget ( ...@@ -22,19 +22,19 @@ CREATE TYPE city_budget (
CREATE FUNCTION int42_in(cstring) CREATE FUNCTION int42_in(cstring)
RETURNS int42 RETURNS int42
AS 'int4in' AS 'int4in'
LANGUAGE 'internal' WITH (isStrict); LANGUAGE internal STRICT;
CREATE FUNCTION int42_out(int42) CREATE FUNCTION int42_out(int42)
RETURNS cstring RETURNS cstring
AS 'int4out' AS 'int4out'
LANGUAGE 'internal' WITH (isStrict); LANGUAGE internal STRICT;
CREATE FUNCTION text_w_default_in(cstring) CREATE FUNCTION text_w_default_in(cstring)
RETURNS text_w_default RETURNS text_w_default
AS 'textin' AS 'textin'
LANGUAGE 'internal' WITH (isStrict); LANGUAGE internal STRICT;
CREATE FUNCTION text_w_default_out(text_w_default) CREATE FUNCTION text_w_default_out(text_w_default)
RETURNS cstring RETURNS cstring
AS 'textout' AS 'textout'
LANGUAGE 'internal' WITH (isStrict); LANGUAGE internal STRICT;
CREATE TYPE int42 ( CREATE TYPE int42 (
internallength = 4, internallength = 4,
......
This diff is collapsed.
This diff is collapsed.
...@@ -239,7 +239,7 @@ BEGIN; ...@@ -239,7 +239,7 @@ BEGIN;
CREATE FUNCTION declares_cursor(text) CREATE FUNCTION declares_cursor(text)
RETURNS void RETURNS void
AS 'DECLARE c CURSOR FOR SELECT stringu1 FROM tenk1 WHERE stringu1 LIKE $1;' AS 'DECLARE c CURSOR FOR SELECT stringu1 FROM tenk1 WHERE stringu1 LIKE $1;'
LANGUAGE 'sql'; LANGUAGE SQL;
SELECT declares_cursor('AB%'); SELECT declares_cursor('AB%');
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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