]> granicus.if.org Git - postgresql/commitdiff
Update /contrib for "autocommit TO 'on'".
authorBruce Momjian <bruce@momjian.us>
Fri, 18 Oct 2002 18:41:22 +0000 (18:41 +0000)
committerBruce Momjian <bruce@momjian.us>
Fri, 18 Oct 2002 18:41:22 +0000 (18:41 +0000)
Create objects in public schema.

Make spacing/capitalization consistent.

Remove transaction block use for object creation.

Remove unneeded function GRANTs.

91 files changed:
contrib/adddepend/adddepend
contrib/array/array_iterator.sql.in
contrib/btree_gist/btree_gist.sql.in
contrib/btree_gist/expected/btree_gist.out
contrib/btree_gist/sql/btree_gist.sql
contrib/chkpass/chkpass.sql.in
contrib/cube/cube.sql.in
contrib/cube/expected/cube.out
contrib/cube/sql/cube.sql
contrib/dbase/dbf2pg.c
contrib/dblink/dblink.sql.in
contrib/dblink/expected/dblink.out
contrib/dblink/sql/dblink.sql
contrib/dbmirror/AddTrigger.sql
contrib/dbmirror/DBMirror.pl
contrib/dbmirror/MirrorSetup.sql
contrib/dbmirror/clean_pending.pl
contrib/earthdistance/earthdistance.sql.in
contrib/earthdistance/expected/earthdistance.out
contrib/earthdistance/sql/earthdistance.sql
contrib/findoidjoins/findoidjoins.c
contrib/fulltextindex/fti.pl
contrib/fulltextindex/fti.sql.in
contrib/fulltextindex/uninstall.sql
contrib/fuzzystrmatch/fuzzystrmatch.sql.in
contrib/intagg/int_aggregate.sql.in
contrib/intarray/_int.sql.in
contrib/intarray/expected/_int.out
contrib/intarray/sql/_int.sql
contrib/isbn_issn/isbn_issn.sql.in
contrib/lo/lo.sql.in
contrib/lo/lo_drop.sql
contrib/lo/lo_test.sql
contrib/ltree/expected/ltree.out
contrib/ltree/ltree.sql.in
contrib/ltree/ltreetest.sql
contrib/ltree/sql/ltree.sql
contrib/miscutil/misc_utils.sql.in
contrib/noupdate/noup.sql.in
contrib/oid2name/oid2name.c
contrib/pg_dumplo/main.c
contrib/pgbench/pgbench.c
contrib/pgcrypto/expected/blowfish.out
contrib/pgcrypto/expected/crypt-blowfish.out
contrib/pgcrypto/expected/crypt-des.out
contrib/pgcrypto/expected/crypt-md5.out
contrib/pgcrypto/expected/crypt-xdes.out
contrib/pgcrypto/expected/hmac-md5.out
contrib/pgcrypto/expected/hmac-sha1.out
contrib/pgcrypto/expected/init.out
contrib/pgcrypto/expected/md5.out
contrib/pgcrypto/expected/rijndael.out
contrib/pgcrypto/expected/sha1.out
contrib/pgcrypto/pgcrypto.sql.in
contrib/pgcrypto/sql/blowfish.sql
contrib/pgcrypto/sql/crypt-blowfish.sql
contrib/pgcrypto/sql/crypt-des.sql
contrib/pgcrypto/sql/crypt-md5.sql
contrib/pgcrypto/sql/crypt-xdes.sql
contrib/pgcrypto/sql/hmac-md5.sql
contrib/pgcrypto/sql/hmac-sha1.sql
contrib/pgcrypto/sql/init.sql
contrib/pgcrypto/sql/md5.sql
contrib/pgcrypto/sql/rijndael.sql
contrib/pgcrypto/sql/sha1.sql
contrib/pgstattuple/pgstattuple.sql.in
contrib/reindexdb/reindexdb
contrib/rtree_gist/bench/bench.pl
contrib/rtree_gist/bench/create_test.pl
contrib/rtree_gist/expected/rtree_gist.out
contrib/rtree_gist/rtree_gist.sql.in
contrib/rtree_gist/sql/rtree_gist.sql
contrib/seg/expected/seg.out
contrib/seg/seg.sql.in
contrib/seg/sql/seg.sql
contrib/spi/autoinc.sql.in
contrib/spi/insert_username.sql.in
contrib/spi/moddatetime.sql.in
contrib/spi/refint.sql.in
contrib/spi/timetravel.sql.in
contrib/string/string_io.sql.in
contrib/tablefunc/expected/tablefunc.out
contrib/tablefunc/sql/tablefunc.sql
contrib/tablefunc/tablefunc.sql.in
contrib/tsearch/expected/tsearch.out
contrib/tsearch/sql/tsearch.sql
contrib/tsearch/tsearch.sql.in
contrib/userlock/user_locks.sql.in
contrib/vacuumlo/vacuumlo.c
contrib/xml/pgxml_dom.source
src/bin/scripts/Makefile

index 15e87acc202518b8f5170584beec00e46c63e221..68bea7a6b2d6f834b99c24936d2cde7ff60de710 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/perl
-# $Id: adddepend,v 1.1 2002/09/18 20:38:59 momjian Exp $
+# $Id: adddepend,v 1.2 2002/10/18 18:41:19 momjian Exp $
 
 # Project exists to assist PostgreSQL users with their structural upgrade 
 # from 7.2 (or prior) to 7.3 (possibly later).  Must be run against a 7.3
@@ -125,6 +125,20 @@ my $dbh = DBI->connect($dsn, $dbuser, $dbpass);
 # We want to control commits
 $dbh->{'AutoCommit'} = 0;
 
+# turn on autocommit
+my $sql = qq{
+    SET search_path = public;
+};
+my $sth = $dbh->prepare($sql);
+$sth->execute();
+
+# turn on autocommit
+my $sql2 = qq{
+    SET autocommit TO 'on';
+};
+my $sth2 = $dbh->prepare($sql2);
+$sth2->execute();
+
 END {
        $dbh->disconnect() if $dbh;
 }
index 342d728f9a27433dec3690a0f718284f83910691..3a5cf079cd1f4758728ed6733b85544835150e5e 100644 (file)
 
 -- define the array operators *=, **=, *~ and **~ for type _text
 --
-create or replace function array_texteq(_text, text) returns bool
-  as 'MODULE_PATHNAME' 
-  language C with (isStrict);
 
-create or replace function array_all_texteq(_text, text) returns bool
-  as 'MODULE_PATHNAME' 
-  language C with (isStrict);
+-- Adjust this setting to control where the objects get created.
+SET search_path = public;
 
-create or replace function array_textregexeq(_text, text) returns bool
-  as 'MODULE_PATHNAME' 
-  language C with (isStrict);
+SET autocommit TO 'on';
 
-create or replace function array_all_textregexeq(_text, text) returns bool
-  as 'MODULE_PATHNAME' 
-  language C with (isStrict);
+CREATE OR REPLACE FUNCTION array_texteq(_text, text)
+RETURNS bool
+AS 'MODULE_PATHNAME' 
+LANGUAGE 'C' WITH (isStrict);
 
-create operator *= (
-  leftarg=_text, 
-  rightarg=text, 
-  procedure=array_texteq);
+CREATE OR REPLACE FUNCTION array_all_texteq(_text, text)
+RETURNS bool
+AS 'MODULE_PATHNAME' 
+LANGUAGE 'C' WITH (isStrict);
 
-create operator **= (
-  leftarg=_text,
-  rightarg=text,
-  procedure=array_all_texteq);
+CREATE OR REPLACE FUNCTION array_textregexeq(_text, text)
+RETURNS bool
+AS 'MODULE_PATHNAME' 
+LANGUAGE 'C' WITH (isStrict);
 
-create operator *~ (
-  leftarg=_text,
-  rightarg=text,
-  procedure=array_textregexeq);
+CREATE OR REPLACE FUNCTION array_all_textregexeq(_text, text)
+RETURNS bool
+AS 'MODULE_PATHNAME' 
+LANGUAGE 'C' WITH (isStrict);
 
-create operator **~ (
-  leftarg=_text,
-  rightarg=text,
-  procedure=array_all_textregexeq);
+CREATE OPERATOR *= (
+       LEFTARG=_text, 
+       RIGHTARG=text, 
+       PROCEDURE=array_texteq
+);
+
+CREATE OPERATOR **= (
+       LEFTARG=_text,
+       RIGHTARG=text,
+       PROCEDURE=array_all_texteq
+);
+
+CREATE OPERATOR *~ (
+       LEFTARG=_text,
+       RIGHTARG=text,
+       PROCEDURE=array_textregexeq
+);
+
+CREATE OPERATOR **~ (
+       LEFTARG=_text,
+       RIGHTARG=text,
+       PROCEDURE=array_all_textregexeq
+);
 
 
 -- define the array operators *=, **=, *~ and **~ for type _varchar
 --
 -- NOTE: "varchar" is also a reserved word and must be quoted.
 --
-create or replace function array_varchareq(_varchar, varchar) returns bool
-  as 'MODULE_PATHNAME' 
-  language C with (isStrict);
-
-create or replace function array_all_varchareq(_varchar, varchar) returns bool
-  as 'MODULE_PATHNAME' 
-  language C with (isStrict);
-
-create or replace function array_varcharregexeq(_varchar, varchar) returns bool
-  as 'MODULE_PATHNAME' 
-  language C with (isStrict);
-
-create or replace function array_all_varcharregexeq(_varchar, varchar) returns bool
-  as 'MODULE_PATHNAME' 
-  language C with (isStrict);
-
-create operator *= (
-  leftarg=_varchar, 
-  rightarg="varchar", 
-  procedure=array_varchareq);
-
-create operator **= (
-  leftarg=_varchar,
-  rightarg="varchar",
-  procedure=array_all_varchareq);
-
-create operator *~ (
-  leftarg=_varchar,
-  rightarg="varchar",
-  procedure=array_varcharregexeq);
-
-create operator **~ (
-  leftarg=_varchar,
-  rightarg="varchar",
-  procedure=array_all_varcharregexeq);
+CREATE OR REPLACE FUNCTION array_varchareq(_varchar, varchar)
+RETURNS bool
+AS 'MODULE_PATHNAME' 
+LANGUAGE 'C' WITH (isStrict);
+
+CREATE OR REPLACE FUNCTION array_all_varchareq(_varchar, varchar)
+RETURNS bool
+AS 'MODULE_PATHNAME' 
+LANGUAGE 'C' WITH (isStrict);
+
+CREATE OR REPLACE FUNCTION array_varcharregexeq(_varchar, varchar)
+RETURNS bool
+AS 'MODULE_PATHNAME' 
+LANGUAGE 'C' WITH (isStrict);
+
+CREATE OR REPLACE FUNCTION array_all_varcharregexeq(_varchar, varchar)
+RETURNS bool
+AS 'MODULE_PATHNAME' 
+LANGUAGE 'C' WITH (isStrict);
+
+CREATE OPERATOR *= (
+       LEFTARG=_varchar, 
+       RIGHTARG="varchar", 
+       PROCEDURE=array_varchareq
+);
+
+CREATE OPERATOR **= (
+       LEFTARG=_varchar,
+       RIGHTARG="varchar",
+       PROCEDURE=array_all_varchareq
+);
+
+CREATE OPERATOR *~ (
+       LEFTARG=_varchar,
+       RIGHTARG="varchar",
+       PROCEDURE=array_varcharregexeq
+);
+
+CREATE OPERATOR **~ (
+       LEFTARG=_varchar,
+       RIGHTARG="varchar",
+       PROCEDURE=array_all_varcharregexeq
+);
 
 
 -- define the array operators *=, **=, *~ and **~ for type _bpchar
 --
-create or replace function array_bpchareq(_bpchar, bpchar) returns bool
-  as 'MODULE_PATHNAME' 
-  language C with (isStrict);
-
-create or replace function array_all_bpchareq(_bpchar, bpchar) returns bool
-  as 'MODULE_PATHNAME' 
-  language C with (isStrict);
-
-create or replace function array_bpcharregexeq(_bpchar, bpchar) returns bool
-  as 'MODULE_PATHNAME' 
-  language C with (isStrict);
-
-create or replace function array_all_bpcharregexeq(_bpchar, bpchar) returns bool
-  as 'MODULE_PATHNAME' 
-  language C with (isStrict);
-
-create operator *= (
-  leftarg=_bpchar, 
-  rightarg=bpchar, 
-  procedure=array_bpchareq);
-
-create operator **= (
-  leftarg=_bpchar,
-  rightarg=bpchar,
-  procedure=array_all_bpchareq);
-
-create operator *~ (
-  leftarg=_bpchar,
-  rightarg=bpchar,
-  procedure=array_bpcharregexeq);
-
-create operator **~ (
-  leftarg=_bpchar,
-  rightarg=bpchar,
-  procedure=array_all_bpcharregexeq);
+CREATE OR REPLACE FUNCTION array_bpchareq(_bpchar, bpchar)
+RETURNS bool
+AS 'MODULE_PATHNAME' 
+LANGUAGE 'C' WITH (isStrict);
+
+CREATE OR REPLACE FUNCTION array_all_bpchareq(_bpchar, bpchar)
+RETURNS bool
+AS 'MODULE_PATHNAME' 
+LANGUAGE 'C' WITH (isStrict);
+
+CREATE OR REPLACE FUNCTION array_bpcharregexeq(_bpchar, bpchar)
+RETURNS bool
+AS 'MODULE_PATHNAME' 
+LANGUAGE 'C' WITH (isStrict);
+
+CREATE OR REPLACE FUNCTION array_all_bpcharregexeq(_bpchar, bpchar)
+RETURNS bool
+AS 'MODULE_PATHNAME' 
+LANGUAGE 'C' WITH (isStrict);
+
+CREATE OPERATOR *= (
+       LEFTARG=_bpchar, 
+       RIGHTARG=bpchar, 
+       PROCEDURE=array_bpchareq
+);
+
+CREATE OPERATOR **= (
+       LEFTARG=_bpchar,
+       RIGHTARG=bpchar,
+       PROCEDURE=array_all_bpchareq
+);
+
+CREATE OPERATOR *~ (
+       LEFTARG=_bpchar,
+       RIGHTARG=bpchar,
+       PROCEDURE=array_bpcharregexeq
+);
+
+CREATE OPERATOR **~ (
+       LEFTARG=_bpchar,
+       RIGHTARG=bpchar,
+       PROCEDURE=array_all_bpcharregexeq
+);
 
 
 -- define the array operators *=, **=, *> and **> for type _int4
 --
-create or replace function array_int4eq(_int4, int4) returns bool
-  as 'MODULE_PATHNAME' 
-  language C with (isStrict);
-
-create or replace function array_all_int4eq(_int4, int4) returns bool
-  as 'MODULE_PATHNAME' 
-  language C with (isStrict);
-
-create or replace function array_int4ne(_int4, int4) returns bool
-  as 'MODULE_PATHNAME' 
-  language C with (isStrict);
-
-create or replace function array_all_int4ne(_int4, int4) returns bool
-  as 'MODULE_PATHNAME' 
-  language C with (isStrict);
-
-create or replace function array_int4gt(_int4, int4) returns bool
-  as 'MODULE_PATHNAME' 
-  language C with (isStrict);
-
-create or replace function array_all_int4gt(_int4, int4) returns bool
-  as 'MODULE_PATHNAME' 
-  language C with (isStrict);
-
-create or replace function array_int4ge(_int4, int4) returns bool
-  as 'MODULE_PATHNAME' 
-  language C with (isStrict);
-
-create or replace function array_all_int4ge(_int4, int4) returns bool
-  as 'MODULE_PATHNAME' 
-  language C with (isStrict);
-
-create or replace function array_int4lt(_int4, int4) returns bool
-  as 'MODULE_PATHNAME' 
-  language C with (isStrict);
-
-create or replace function array_all_int4lt(_int4, int4) returns bool
-  as 'MODULE_PATHNAME' 
-  language C with (isStrict);
-
-create or replace function array_int4le(_int4, int4) returns bool
-  as 'MODULE_PATHNAME' 
-  language C with (isStrict);
-
-create or replace function array_all_int4le(_int4, int4) returns bool
-  as 'MODULE_PATHNAME' 
-  language C with (isStrict);
-
-create operator *= (
-  leftarg=_int4,
-  rightarg=int4,
-  procedure=array_int4eq);
-
-create operator **= (
-  leftarg=_int4,
-  rightarg=int4,
-  procedure=array_all_int4eq);
-
-create operator *<> (
-  leftarg=_int4,
-  rightarg=int4,
-  procedure=array_int4ne);
-
-create operator **<> (
-  leftarg=_int4,
-  rightarg=int4,
-  procedure=array_all_int4ne);
-
-create operator *> (
-  leftarg=_int4,
-  rightarg=int4,
-  procedure=array_int4gt);
-
-create operator **> (
-  leftarg=_int4,
-  rightarg=int4,
-  procedure=array_all_int4gt);
-
-create operator *>= (
-  leftarg=_int4,
-  rightarg=int4,
-  procedure=array_int4ge);
-
-create operator **>= (
-  leftarg=_int4,
-  rightarg=int4,
-  procedure=array_all_int4ge);
-
-create operator *< (
-  leftarg=_int4,
-  rightarg=int4,
-  procedure=array_int4lt);
-
-create operator **< (
-  leftarg=_int4,
-  rightarg=int4,
-  procedure=array_all_int4lt);
-
-create operator *<= (
-  leftarg=_int4,
-  rightarg=int4,
-  procedure=array_int4le);
-
-create operator **<= (
-  leftarg=_int4,
-  rightarg=int4,
-  procedure=array_all_int4le);
+CREATE OR REPLACE FUNCTION array_int4eq(_int4, int4)
+RETURNS bool
+AS 'MODULE_PATHNAME' 
+LANGUAGE 'C' WITH (isStrict);
+
+CREATE OR REPLACE FUNCTION array_all_int4eq(_int4, int4)
+RETURNS bool
+AS 'MODULE_PATHNAME' 
+LANGUAGE 'C' WITH (isStrict);
+
+CREATE OR REPLACE FUNCTION array_int4ne(_int4, int4)
+RETURNS bool
+AS 'MODULE_PATHNAME' 
+LANGUAGE 'C' WITH (isStrict);
+
+CREATE OR REPLACE FUNCTION array_all_int4ne(_int4, int4)
+RETURNS bool
+AS 'MODULE_PATHNAME' 
+LANGUAGE 'C' WITH (isStrict);
+
+CREATE OR REPLACE FUNCTION array_int4gt(_int4, int4)
+RETURNS bool
+AS 'MODULE_PATHNAME' 
+LANGUAGE 'C' WITH (isStrict);
+
+CREATE OR REPLACE FUNCTION array_all_int4gt(_int4, int4)
+RETURNS bool
+AS 'MODULE_PATHNAME' 
+LANGUAGE 'C' WITH (isStrict);
+
+CREATE OR REPLACE FUNCTION array_int4ge(_int4, int4)
+RETURNS bool
+AS 'MODULE_PATHNAME' 
+LANGUAGE 'C' WITH (isStrict);
+
+CREATE OR REPLACE FUNCTION array_all_int4ge(_int4, int4)
+RETURNS bool
+AS 'MODULE_PATHNAME' 
+LANGUAGE 'C' WITH (isStrict);
+
+CREATE OR REPLACE FUNCTION array_int4lt(_int4, int4)
+RETURNS bool
+AS 'MODULE_PATHNAME' 
+LANGUAGE 'C' WITH (isStrict);
+
+CREATE OR REPLACE FUNCTION array_all_int4lt(_int4, int4)
+RETURNS bool
+AS 'MODULE_PATHNAME' 
+LANGUAGE 'C' WITH (isStrict);
+
+CREATE OR REPLACE FUNCTION array_int4le(_int4, int4)
+RETURNS bool
+AS 'MODULE_PATHNAME' 
+LANGUAGE 'C' WITH (isStrict);
+
+CREATE OR REPLACE FUNCTION array_all_int4le(_int4, int4)
+RETURNS bool
+AS 'MODULE_PATHNAME' 
+LANGUAGE 'C' WITH (isStrict);
+
+CREATE OPERATOR *= (
+       LEFTARG=_int4,
+       RIGHTARG=int4,
+       PROCEDURE=array_int4eq
+);
+
+CREATE OPERATOR **= (
+       LEFTARG=_int4,
+       RIGHTARG=int4,
+       PROCEDURE=array_all_int4eq
+);
+
+CREATE OPERATOR *<> (
+       LEFTARG=_int4,
+       RIGHTARG=int4,
+       PROCEDURE=array_int4ne
+);
+
+CREATE OPERATOR **<> (
+       LEFTARG=_int4,
+       RIGHTARG=int4,
+       PROCEDURE=array_all_int4ne
+);
+
+CREATE OPERATOR *> (
+       LEFTARG=_int4,
+       RIGHTARG=int4,
+       PROCEDURE=array_int4gt
+);
+
+CREATE OPERATOR **> (
+       LEFTARG=_int4,
+       RIGHTARG=int4,
+       PROCEDURE=array_all_int4gt
+);
+
+CREATE OPERATOR *>= (
+       LEFTARG=_int4,
+       RIGHTARG=int4,
+       PROCEDURE=array_int4ge
+);
+
+CREATE OPERATOR **>= (
+       LEFTARG=_int4,
+       RIGHTARG=int4,
+       PROCEDURE=array_all_int4ge
+);
+
+CREATE OPERATOR *< (
+       LEFTARG=_int4,
+       RIGHTARG=int4,
+       PROCEDURE=array_int4lt
+);
+
+CREATE OPERATOR **< (
+       LEFTARG=_int4,
+       RIGHTARG=int4,
+       PROCEDURE=array_all_int4lt
+);
+
+CREATE OPERATOR *<= (
+       LEFTARG=_int4,
+       RIGHTARG=int4,
+       PROCEDURE=array_int4le
+);
+
+CREATE OPERATOR **<= (
+       LEFTARG=_int4,
+       RIGHTARG=int4,
+       PROCEDURE=array_all_int4le
+);
 
 -- define the array operators *=, **<>  for type _oid  (added tobias 1. 1999)
 --
-create or replace function array_oideq(_oid, oid) returns bool
-  as 'MODULE_PATHNAME' 
-  language C with (isStrict);
-
-create or replace function array_all_oidne(_oid, oid) returns bool
-  as 'MODULE_PATHNAME' 
-  language C with (isStrict);
-
-create operator *= (
-  leftarg=_oid, 
-  rightarg=oid, 
-  procedure=array_oideq);
-
-create operator **<> (
-  leftarg=_oid,
-  rightarg=oid,
-  procedure=array_all_oidne);
+CREATE OR REPLACE FUNCTION array_oideq(_oid, oid)
+RETURNS bool
+AS 'MODULE_PATHNAME' 
+LANGUAGE 'C' WITH (isStrict);
+
+CREATE OR REPLACE FUNCTION array_all_oidne(_oid, oid)
+RETURNS bool
+AS 'MODULE_PATHNAME' 
+LANGUAGE 'C' WITH (isStrict);
+
+CREATE OPERATOR *= (
+       LEFTARG=_oid, 
+       RIGHTARG=oid, 
+       PROCEDURE=array_oideq
+);
+
+CREATE OPERATOR **<> (
+       LEFTARG=_oid,
+       RIGHTARG=oid,
+       PROCEDURE=array_all_oidne
+);
 
 -- define the array operators *=, **=, *<>, **<> for type _inet
 
-create or replace function array_ineteq(_inet, inet) returns bool
-  as 'MODULE_PATHNAME'
-  language C with (isStrict);
-
-create or replace function array_all_ineteq(_inet, inet) returns bool
-  as 'MODULE_PATHNAME'
-  language C with (isStrict);
-
-create or replace function array_inetne(_inet, inet) returns bool
-  as 'MODULE_PATHNAME'
-  language C with (isStrict);
-
-create or replace function array_all_inetne(_inet, inet) returns bool
-  as 'MODULE_PATHNAME'
-  language C with (isStrict);
-
-create operator *= (
-  leftarg=_inet,
-  rightarg=inet,
-  procedure=array_ineteq);
-
-create operator **= (
-  leftarg=_inet,
-  rightarg=inet,
-  procedure=array_all_ineteq);
-
-create operator *<> (
-  leftarg=_inet,
-  rightarg=inet,
-  procedure=array_inetne);
-
-create operator **<> (
-  leftarg=_inet,
-  rightarg=inet,
-  procedure=array_all_inetne);
+CREATE OR REPLACE FUNCTION array_ineteq(_inet, inet)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isStrict);
+
+CREATE OR REPLACE FUNCTION array_all_ineteq(_inet, inet)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isStrict);
+
+CREATE OR REPLACE FUNCTION array_inetne(_inet, inet)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isStrict);
+
+CREATE OR REPLACE FUNCTION array_all_inetne(_inet, inet)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isStrict);
+
+CREATE OPERATOR *= (
+       LEFTARG=_inet,
+       RIGHTARG=inet,
+       PROCEDURE=array_ineteq
+);
+
+CREATE OPERATOR **= (
+       LEFTARG=_inet,
+       RIGHTARG=inet,
+       PROCEDURE=array_all_ineteq
+);
+
+CREATE OPERATOR *<> (
+       LEFTARG=_inet,
+       RIGHTARG=inet,
+       PROCEDURE=array_inetne
+);
+
+CREATE OPERATOR **<> (
+       LEFTARG=_inet,
+       RIGHTARG=inet,
+       PROCEDURE=array_all_inetne
+);
index a60a7c2706f0f38c832164e1f9907659511a32d8..be3c979a6c37da6bc34772af0aec8ee8d838016f 100644 (file)
@@ -1,23 +1,23 @@
-begin transaction;
-
 -- Adjust this setting to control where the objects get created.
 SET search_path = public;
 
+SET autocommit TO 'on';
+
 -- create type of int4 key
 CREATE FUNCTION int4key_in(cstring)
 RETURNS int4key
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
+LANGUAGE 'c' WITH (isstrict);
 
 CREATE FUNCTION int4key_out(int4key)
 RETURNS cstring
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
+LANGUAGE 'c' WITH (isstrict);
 
 CREATE TYPE int4key (
-internallength = 8,
-input = int4key_in,
-output = int4key_out
+INTERNALLENGTH = 8,
+INPUT = int4key_in,
+OUTPUT = int4key_out
 );
 
 
@@ -29,23 +29,45 @@ output = int4key_out
 --
 --
 -- define the GiST support methods
-create function gint4_consistent(internal,int4,int2) returns bool as 'MODULE_PATHNAME' language 'C';
+CREATE FUNCTION gint4_consistent(internal,int4,int2)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-create function gint4_compress(internal) returns internal as 'MODULE_PATHNAME' language 'C';
+CREATE FUNCTION gint4_compress(internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-create function btree_decompress(internal) returns internal as 'MODULE_PATHNAME' language 'C';
+CREATE FUNCTION btree_decompress(internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-create function gint4_penalty(internal,internal,internal) returns internal as 'MODULE_PATHNAME' language 'C' with(isstrict);
+CREATE FUNCTION gint4_penalty(internal,internal,internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isstrict);
 
-create function gint4_picksplit(internal, internal) returns internal as 'MODULE_PATHNAME' language 'C';
+CREATE FUNCTION gint4_picksplit(internal, internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-create function gint4_union(bytea, internal) returns int4 as 'MODULE_PATHNAME' language 'C';
+CREATE FUNCTION gint4_union(bytea, internal)
+RETURNS int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-create function gint4_same(internal, internal, internal) returns internal as 'MODULE_PATHNAME' language 'C';
+CREATE FUNCTION gint4_same(internal, internal, internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
 -- Create the operator class
 CREATE OPERATOR CLASS gist_int4_ops
-    DEFAULT FOR TYPE int4 USING gist AS
+DEFAULT FOR TYPE int4 USING gist 
+AS
        OPERATOR        1       < ,
        OPERATOR        2       <= ,
        OPERATOR        3       = ,
@@ -73,34 +95,53 @@ CREATE OPERATOR CLASS gist_int4_ops
 CREATE FUNCTION tskey_in(cstring)
 RETURNS tskey
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
+LANGUAGE 'c' WITH (isstrict);
 
 CREATE FUNCTION tskey_out(tskey)
 RETURNS cstring
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
+LANGUAGE 'c' WITH (isstrict);
 
 CREATE TYPE tskey (
-internallength = 16,
-input = tskey_in,
-output = tskey_out
+INTERNALLENGTH = 16,
+INPUT = tskey_in,
+OUTPUT = tskey_out
 );
 
-create function gts_consistent(internal,timestamp,int2) returns bool as 'MODULE_PATHNAME' language 'C';
+CREATE FUNCTION gts_consistent(internal,timestamp,int2)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
       
-create function gts_compress(internal) returns internal as 'MODULE_PATHNAME' language 'C';
+CREATE FUNCTION gts_compress(internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-create function gts_penalty(internal,internal,internal) returns internal as 'MODULE_PATHNAME' language 'C' with(isstrict);
+CREATE FUNCTION gts_penalty(internal,internal,internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isstrict);
    
-create function gts_picksplit(internal, internal) returns internal as 'MODULE_PATHNAME' language 'C';
+CREATE FUNCTION gts_picksplit(internal, internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
       
-create function gts_union(bytea, internal) returns int4 as 'MODULE_PATHNAME' language 'C';
+CREATE FUNCTION gts_union(bytea, internal)
+RETURNS int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-create function gts_same(internal, internal, internal) returns internal as 'MODULE_PATHNAME' language 'C';
+CREATE FUNCTION gts_same(internal, internal, internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
 -- Create the operator class
 CREATE OPERATOR CLASS gist_timestamp_ops
-    DEFAULT FOR TYPE timestamp USING gist AS
+DEFAULT FOR TYPE timestamp USING gist 
+AS
        OPERATOR        1       < ,
        OPERATOR        2       <= ,
        OPERATOR        3       = ,
@@ -114,6 +155,3 @@ CREATE OPERATOR CLASS gist_timestamp_ops
        FUNCTION        6       gts_picksplit (internal, internal),
        FUNCTION        7       gts_same (internal, internal, internal),
        STORAGE         tskey;
-
-
-end transaction;
index ab6a789f615abe45d47d3f533e4857d20c736f00..eb67c2e7f73dfd08221a0547f712beb12f932d6c 100644 (file)
@@ -7,35 +7,35 @@ psql:btree_gist.sql:10: WARNING:  ProcedureCreate: type int4key is not yet defin
 psql:btree_gist.sql:15: WARNING:  Argument type "int4key" is only a shell
 psql:btree_gist.sql:76: WARNING:  ProcedureCreate: type tskey is not yet defined
 psql:btree_gist.sql:81: WARNING:  Argument type "tskey" is only a shell
-create table inttmp (b int4);
+CREATE TABLE inttmp (b int4);
 \copy inttmp from 'data/test_btree.data'
-create table tstmp ( t timestamp without time zone );
+CREATE TABLE tstmp ( t timestamp without time zone );
 \copy tstmp from 'data/test_btree_ts.data'
 -- without idx
-select count(*) from inttmp where b <=10;
+SELECT count(*) FROM inttmp WHERE b <=10;
  count 
 -------
     11
 (1 row)
 
-select count(*) from tstmp where t < '2001-05-29 08:33:09';
+SELECT count(*) FROM tstmp WHERE t < '2001-05-29 08:33:09';
  count 
 -------
     66
 (1 row)
 
 -- create idx
-create index aaaidx on inttmp using gist ( b );
-create index tsidx on tstmp using gist ( t );
+CREATE INDEX aaaidx ON inttmp USING gist ( b );
+CREATE INDEX tsidx ON tstmp USING gist ( t );
 --with idx
-set enable_seqscan=off;
-select count(*) from inttmp where b <=10;
+SET enable_seqscan=off;
+SELECT count(*) FROM inttmp WHERE b <=10;
  count 
 -------
     11
 (1 row)
 
-select count(*) from tstmp where t < '2001-05-29 08:33:09';
+SELECT count(*) FROM tstmp WHERE t < '2001-05-29 08:33:09';
  count 
 -------
     66
index 31c778b74712beb6452533510a47a6d33a6b034a..d6e564dda36b65e749ca83e42ffb1ebf85004a95 100644 (file)
@@ -3,34 +3,35 @@
 -- does not depend on contents of seg.sql.
 --
 \set ECHO none
+SET autocommit TO 'on';
 \i btree_gist.sql
 \set ECHO all
 
-create table inttmp (b int4);
+CREATE TABLE inttmp (b int4);
 
 \copy inttmp from 'data/test_btree.data'
 
-create table tstmp ( t timestamp without time zone );
+CREATE TABLE tstmp ( t timestamp without time zone );
 
 \copy tstmp from 'data/test_btree_ts.data'
 
 -- without idx
 
-select count(*) from inttmp where b <=10;
+SELECT count(*) FROM inttmp WHERE b <=10;
 
-select count(*) from tstmp where t < '2001-05-29 08:33:09';
+SELECT count(*) FROM tstmp WHERE t < '2001-05-29 08:33:09';
 
 -- create idx
 
-create index aaaidx on inttmp using gist ( b );
+CREATE INDEX aaaidx ON inttmp USING gist ( b );
 
-create index tsidx on tstmp using gist ( t );
+CREATE INDEX tsidx ON tstmp USING gist ( t );
 
 --with idx
 
-set enable_seqscan=off;
+SET enable_seqscan=off;
 
-select count(*) from inttmp where b <=10;
+SELECT count(*) FROM inttmp WHERE b <=10;
 
-select count(*) from tstmp where t < '2001-05-29 08:33:09';
+SELECT count(*) FROM tstmp WHERE t < '2001-05-29 08:33:09';
 
index 3e331509d7c5d8ba76eeea0a516e585b23552062..231cf99a12c4fbdca95c47ed7ee3d3d653375848 100644 (file)
@@ -4,7 +4,7 @@
 --  darcy@druid.net
 --  http://www.druid.net/darcy/
 -- 
---  $Header: /cvsroot/pgsql/contrib/chkpass/chkpass.sql.in,v 1.2 2002/08/22 00:01:38 tgl Exp $
+--  $Header: /cvsroot/pgsql/contrib/chkpass/chkpass.sql.in,v 1.3 2002/10/18 18:41:19 momjian Exp $
 --
 --  best viewed with tabs set to 4
 --
 --     Input and output functions and the type itself:
 --
 
-create function chkpass_in(cstring)
-       returns chkpass
-       as 'MODULE_PATHNAME'
-       language 'c';
+-- Adjust this setting to control where the objects get created.
+SET search_path = public;
 
-create function chkpass_out(chkpass)
-       returns cstring
-       as 'MODULE_PATHNAME'
-       language 'c';
+SET autocommit TO 'on';
 
-create type chkpass (
+CREATE FUNCTION chkpass_in(cstring)
+       RETURNS chkpass
+       AS 'MODULE_PATHNAME'
+       LANGUAGE 'c';
+
+CREATE FUNCTION chkpass_out(chkpass)
+       RETURNS cstring
+       AS 'MODULE_PATHNAME'
+       LANGUAGE 'c';
+
+CREATE TYPE chkpass (
        internallength = 16,
        externallength = 13,
        input = chkpass_in,
        output = chkpass_out
 );
 
-create function raw(chkpass)
-       returns text
-       as 'MODULE_PATHNAME', 'chkpass_rout'
-       language 'c';
+CREATE FUNCTION raw(chkpass)
+       RETURNS text
+       AS 'MODULE_PATHNAME', 'chkpass_rout'
+       LANGUAGE 'c';
 
 --
 --     The various boolean tests:
 --
 
-create function eq(chkpass, text)
-       returns bool
-       as 'MODULE_PATHNAME', 'chkpass_eq'
-       language 'c';
+CREATE FUNCTION eq(chkpass, text)
+       RETURNS bool
+       AS 'MODULE_PATHNAME', 'chkpass_eq'
+       LANGUAGE 'c';
 
-create function ne(chkpass, text)
-       returns bool
-       as 'MODULE_PATHNAME', 'chkpass_ne'
-       language 'c';
+CREATE FUNCTION ne(chkpass, text)
+       RETURNS bool
+       AS 'MODULE_PATHNAME', 'chkpass_ne'
+       LANGUAGE 'c';
 
 --
 --     Now the operators.  Note how some of the parameters to some
@@ -56,7 +61,7 @@ create function ne(chkpass, text)
 --     will be implicitly defined when those are, further down.
 --
 
-create operator = (
+CREATE OPERATOR = (
        leftarg = chkpass,
        rightarg = text,
        commutator = =,
@@ -64,7 +69,7 @@ create operator = (
        procedure = eq
 );
 
-create operator <> (
+CREATE OPERATOR <> (
        leftarg = chkpass,
        rightarg = text,
        negator = =,
index e54f10c0462a3fbdcf8dd68d08f0403a2b507e2c..5aadf7ba1bbb9900d4fc45334b88c15c29317abd 100644 (file)
@@ -1,14 +1,15 @@
 -- Create the user-defined type for N-dimensional boxes
 -- 
-BEGIN;
 
 -- Adjust this setting to control where the objects get created.
 SET search_path = public;
 
+SET autocommit TO 'on';
+
 CREATE OR REPLACE FUNCTION cube_in(cstring)
 RETURNS cube
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c'IMMUTABLE STRICT;
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 CREATE OR REPLACE FUNCTION cube_out(cube)
 RETURNS cstring
@@ -16,22 +17,20 @@ AS 'MODULE_PATHNAME'
 LANGUAGE 'c'IMMUTABLE STRICT;
 
 CREATE TYPE cube (
-internallength = variable,
-input = cube_in,
-output = cube_out
+       INTERNALLENGTH = variable,
+       INPUT = cube_in,
+       OUTPUT = cube_out
 );
 
-COMMENT ON TYPE cube IS
-'multi-dimensional cube ''(FLOAT-1, FLOAT-2, ..., FLOAT-N), (FLOAT-1, FLOAT-2, ..., FLOAT-N)''';
+COMMENT ON TYPE cube IS 'multi-dimensional cube ''(FLOAT-1, FLOAT-2, ..., FLOAT-N), (FLOAT-1, FLOAT-2, ..., FLOAT-N)''';
 
 -- Convert from text to cube
 
 CREATE OR REPLACE FUNCTION cube(text) RETURNS cube
 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';
 
 --
 -- External C-functions for R-tree methods
@@ -39,208 +38,252 @@ COMMENT ON FUNCTION cube(text) IS
 
 -- Left/Right methods
 
-CREATE OR REPLACE FUNCTION cube_over_left(cube, cube) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT;
+CREATE OR REPLACE FUNCTION cube_over_left(cube, cube)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' IMMUTABLE STRICT;
 
-COMMENT ON FUNCTION cube_over_left(cube, cube) IS
-'is over and left of (NOT IMPLEMENTED)';
+COMMENT ON FUNCTION cube_over_left(cube, cube) IS 'is over and left of (NOT IMPLEMENTED)';
 
-CREATE OR REPLACE FUNCTION cube_over_right(cube, cube) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT;
+CREATE OR REPLACE FUNCTION cube_over_right(cube, cube)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' IMMUTABLE STRICT;
 
-COMMENT ON FUNCTION cube_over_right(cube, cube) IS
-'is over and right of (NOT IMPLEMENTED)';
+COMMENT ON FUNCTION cube_over_right(cube, cube) IS 'is over and right of (NOT IMPLEMENTED)';
 
-CREATE OR REPLACE FUNCTION cube_left(cube, cube) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT;
+CREATE OR REPLACE FUNCTION cube_left(cube, cube)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 COMMENT ON FUNCTION cube_left(cube, cube) IS
 'is left of (NOT IMPLEMENTED)';
 
-CREATE OR REPLACE FUNCTION cube_right(cube, cube) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT;
+CREATE OR REPLACE FUNCTION cube_right(cube, cube)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' IMMUTABLE STRICT;
 
-COMMENT ON FUNCTION cube_right(cube, cube) IS
-'is right of (NOT IMPLEMENTED)';
+COMMENT ON FUNCTION cube_right(cube, cube) IS 'is right of (NOT IMPLEMENTED)';
 
 
 -- Comparison methods
 
-CREATE OR REPLACE FUNCTION cube_lt(cube, cube) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT;
+CREATE OR REPLACE FUNCTION cube_lt(cube, cube)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+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) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT;
+CREATE OR REPLACE FUNCTION cube_gt(cube, cube)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+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_contains(cube, cube) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT;
+CREATE OR REPLACE FUNCTION cube_contains(cube, cube)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+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) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT;
+CREATE OR REPLACE FUNCTION cube_contained(cube, cube)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+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) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT;
+CREATE OR REPLACE FUNCTION cube_overlap(cube, cube)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' IMMUTABLE STRICT;
 
-COMMENT ON FUNCTION cube_overlap(cube, cube) IS
-'overlaps';
+COMMENT ON FUNCTION cube_overlap(cube, cube) IS 'overlaps';
 
-CREATE OR REPLACE FUNCTION cube_same(cube, cube) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT;
+CREATE OR REPLACE FUNCTION cube_same(cube, cube)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' IMMUTABLE STRICT;
 
-COMMENT ON FUNCTION cube_same(cube, cube) IS
-'same as';
+COMMENT ON FUNCTION cube_same(cube, cube) IS 'same as';
 
-CREATE OR REPLACE FUNCTION cube_different(cube, cube) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT;
+CREATE OR REPLACE FUNCTION cube_different(cube, cube)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' IMMUTABLE STRICT;
 
-COMMENT ON FUNCTION cube_different(cube, cube) IS
-'different';
+COMMENT ON FUNCTION cube_different(cube, cube) IS 'different';
 
 -- support routines for indexing
 
-CREATE OR REPLACE FUNCTION cube_union(cube, cube) RETURNS cube
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT;
+CREATE OR REPLACE FUNCTION cube_union(cube, cube)
+RETURNS cube
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' IMMUTABLE STRICT;
 
-CREATE OR REPLACE FUNCTION cube_inter(cube, cube) RETURNS cube
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT;
+CREATE OR REPLACE FUNCTION cube_inter(cube, cube)
+RETURNS cube
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' IMMUTABLE STRICT;
 
-CREATE OR REPLACE FUNCTION cube_size(cube) RETURNS float8
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT;
+CREATE OR REPLACE FUNCTION cube_size(cube)
+RETURNS float8
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 
 -- Misc N-dimensional functions
 
 -- proximity routines
 
-CREATE OR REPLACE FUNCTION cube_distance(cube, cube) RETURNS float8
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT;
+CREATE OR REPLACE FUNCTION cube_distance(cube, cube)
+RETURNS float8
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 -- Extracting elements functions
 
-CREATE OR REPLACE FUNCTION cube_dim(cube) RETURNS int4
-        AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT;
+CREATE OR REPLACE FUNCTION cube_dim(cube)
+RETURNS int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' IMMUTABLE STRICT;
 
-CREATE OR REPLACE FUNCTION cube_ll_coord(cube, int4) RETURNS float8
-        AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT;
+CREATE OR REPLACE FUNCTION cube_ll_coord(cube, int4)
+RETURNS float8
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' IMMUTABLE STRICT;
 
-CREATE OR REPLACE FUNCTION cube_ur_coord(cube, int4) RETURNS float8
-        AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT;
+CREATE OR REPLACE FUNCTION cube_ur_coord(cube, int4)
+RETURNS float8
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 -- Test if cube is also a point
 
-CREATE OR REPLACE FUNCTION cube_is_point(cube) RETURNS bool
-        AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT;
+CREATE OR REPLACE FUNCTION cube_is_point(cube)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 -- Increasing the size of a cube by a radius in at least n dimensions
 
-CREATE OR REPLACE FUNCTION cube_enlarge(cube, float8, int4) RETURNS cube
-        AS 'MODULE_PATHNAME' LANGUAGE 'c' IMMUTABLE STRICT;
+CREATE OR REPLACE FUNCTION cube_enlarge(cube, float8, int4)
+RETURNS cube
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' IMMUTABLE STRICT;
 
 --
 -- OPERATORS
 --
 
 CREATE OPERATOR < (
-   LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_lt,
-   COMMUTATOR = '>',
-   RESTRICT = scalarltsel, JOIN = scalarltjoinsel
+       LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_lt,
+       COMMUTATOR = '>',
+       RESTRICT = scalarltsel, JOIN = scalarltjoinsel
 );
 
 CREATE OPERATOR > (
-   LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_gt,
-   COMMUTATOR = '<',
-   RESTRICT = scalargtsel, JOIN = scalargtjoinsel
+       LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_gt,
+       COMMUTATOR = '<',
+       RESTRICT = scalargtsel, JOIN = scalargtjoinsel
 );
 
 CREATE OPERATOR << (
-   LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_left,
-   COMMUTATOR = '>>',
-   RESTRICT = positionsel, JOIN = positionjoinsel
+       LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_left,
+       COMMUTATOR = '>>',
+       RESTRICT = positionsel, JOIN = positionjoinsel
 );
 
 CREATE OPERATOR &< (
-   LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_over_left,
-   COMMUTATOR = '&>',
-   RESTRICT = positionsel, JOIN = positionjoinsel
+       LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_over_left,
+       COMMUTATOR = '&>',
+       RESTRICT = positionsel, JOIN = positionjoinsel
 );
 
 CREATE OPERATOR && (
-   LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_overlap,
-   COMMUTATOR = '&&',
-   RESTRICT = positionsel, JOIN = positionjoinsel
+       LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_overlap,
+       COMMUTATOR = '&&',
+       RESTRICT = positionsel, JOIN = positionjoinsel
 );
 
 CREATE OPERATOR &> (
-   LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_over_right,
-   COMMUTATOR = '&<',
-   RESTRICT = positionsel, JOIN = positionjoinsel
+       LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_over_right,
+       COMMUTATOR = '&<',
+       RESTRICT = positionsel, JOIN = positionjoinsel
 );
 
 CREATE OPERATOR >> (
-   LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_right,
-   COMMUTATOR = '<<',
-   RESTRICT = positionsel, JOIN = positionjoinsel
+       LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_right,
+       COMMUTATOR = '<<',
+       RESTRICT = positionsel, JOIN = positionjoinsel
 );
 
 CREATE OPERATOR = (
-   LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_same,
-   COMMUTATOR = '=', NEGATOR = '<>',
-   RESTRICT = eqsel, JOIN = eqjoinsel,
-   SORT1 = '<', SORT2 = '<'
+       LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_same,
+       COMMUTATOR = '=', NEGATOR = '<>',
+       RESTRICT = eqsel, JOIN = eqjoinsel,
+       SORT1 = '<', SORT2 = '<'
 );
 
 CREATE OPERATOR <> (
-   LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_different,
-   COMMUTATOR = '<>', NEGATOR = '=',
-   RESTRICT = neqsel, JOIN = neqjoinsel
+       LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_different,
+       COMMUTATOR = '<>', NEGATOR = '=',
+       RESTRICT = neqsel, JOIN = neqjoinsel
 );
 
 CREATE OPERATOR @ (
-   LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_contains,
-   COMMUTATOR = '~',
-   RESTRICT = contsel, JOIN = contjoinsel
+       LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_contains,
+       COMMUTATOR = '~',
+       RESTRICT = contsel, JOIN = contjoinsel
 );
 
 CREATE OPERATOR ~ (
-   LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_contained,
-   COMMUTATOR = '@',
-   RESTRICT = contsel, JOIN = contjoinsel
+       LEFTARG = cube, RIGHTARG = cube, PROCEDURE = cube_contained,
+       COMMUTATOR = '@',
+       RESTRICT = contsel, JOIN = contjoinsel
 );
 
 
 -- define the GiST support methods
-CREATE OR REPLACE FUNCTION g_cube_consistent(internal,cube,int4) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c';
+CREATE OR REPLACE FUNCTION g_cube_consistent(internal,cube,int4)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-CREATE OR REPLACE FUNCTION g_cube_compress(internal) RETURNS internal 
-       AS 'MODULE_PATHNAME' LANGUAGE 'c';
+CREATE OR REPLACE FUNCTION g_cube_compress(internal)
+RETURNS internal 
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-CREATE OR REPLACE FUNCTION g_cube_decompress(internal) RETURNS internal 
-       AS 'MODULE_PATHNAME' LANGUAGE 'c';
+CREATE OR REPLACE FUNCTION g_cube_decompress(internal)
+RETURNS internal 
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-CREATE OR REPLACE FUNCTION g_cube_penalty(internal,internal,internal) RETURNS internal
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' STRICT;
+CREATE OR REPLACE FUNCTION g_cube_penalty(internal,internal,internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' STRICT;
 
-CREATE OR REPLACE FUNCTION g_cube_picksplit(internal, internal) RETURNS internal
-       AS 'MODULE_PATHNAME' LANGUAGE 'c';
+CREATE OR REPLACE FUNCTION g_cube_picksplit(internal, internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-CREATE OR REPLACE FUNCTION g_cube_union(bytea, internal) RETURNS cube 
-       AS 'MODULE_PATHNAME' LANGUAGE 'c';
+CREATE OR REPLACE FUNCTION g_cube_union(bytea, internal)
+RETURNS cube 
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-CREATE OR REPLACE FUNCTION g_cube_same(cube, cube, internal) RETURNS internal 
-       AS 'MODULE_PATHNAME' LANGUAGE 'c';
+CREATE OR REPLACE FUNCTION g_cube_same(cube, cube, internal)
+RETURNS internal 
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
 
 -- Create the operator class for indexing
@@ -262,32 +305,3 @@ CREATE OPERATOR CLASS gist_cube_ops
        FUNCTION        5       g_cube_penalty (internal, internal, internal),
        FUNCTION        6       g_cube_picksplit (internal, internal),
        FUNCTION        7       g_cube_same (cube, cube, internal);
-
---
--- By default the externally visible functions are made executable by
--- anyone. To restrict their access comment out the following grant commands.
---
-
-GRANT EXECUTE ON FUNCTION cube(text) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION cube_over_left(cube, cube) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION cube_over_right(cube, cube) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION cube_left(cube, cube) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION cube_right(cube, cube) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION cube_lt(cube, cube) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION cube_gt(cube, cube) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION cube_contains(cube, cube) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION cube_contained(cube, cube) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION cube_overlap(cube, cube) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION cube_same(cube, cube) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION cube_different(cube, cube) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION cube_union(cube, cube) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION cube_inter(cube, cube) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION cube_size(cube) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION cube_distance(cube, cube) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION cube_dim(cube) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION cube_ll_coord(cube, int4) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION cube_ur_coord(cube, int4) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION cube_is_point(cube) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION cube_enlarge(cube, float8, int4) TO PUBLIC;
-
-COMMIT;
index 7a9b920127409d8c127f578e5227a63db8175dad..235859f8b266460e3782ea25a5a428c9eef84ec5 100644 (file)
@@ -6,8 +6,8 @@
 -- does not depend on contents of cube.sql.
 --
 \set ECHO none
-psql:cube.sql:11: WARNING:  ProcedureCreate: type cube is not yet defined
-psql:cube.sql:16: WARNING:  Argument type "cube" is only a shell
+psql:cube.sql:12: WARNING:  ProcedureCreate: type cube is not yet defined
+psql:cube.sql:17: WARNING:  Argument type "cube" is only a shell
 --
 -- testing the input and output functions
 --
index a0712c555799f3cd23d2ecb0e664dd6a918114a8..416833bd48b2055510bb19819b9847cd470616cf 100644 (file)
@@ -7,6 +7,7 @@
 -- does not depend on contents of cube.sql.
 --
 \set ECHO none
+SET autocommit TO 'on';
 \i cube.sql
 \set ECHO all
 
index e179226cbe5755ad9250b6f0ef3228b08d75e269..f8e6bafcd1b845e61b0a1ab7a91c26c533e2c880 100644 (file)
@@ -858,6 +858,10 @@ main(int argc, char **argv)
                exit(1);
        }
 
+       PQexec(conn, "SET search_path = public");
+
+       PQexec(conn, "SET autocommit TO 'on'");
+
 /* Substitute field names */
        do_substitute(subarg, dbh);
 
index 7f76ffc5018b7734a8a4ce325ba807a9bd4495fa..42e483de34e80d70450f643cf10fffe1a4a596f7 100644 (file)
@@ -1,33 +1,43 @@
--- Uncomment the following 9 lines to use original DEPRECATED functions
---CREATE OR REPLACE FUNCTION dblink (text,text) RETURNS setof int
---  AS 'MODULE_PATHNAME','dblink' LANGUAGE 'c'
---  WITH (isstrict);
---CREATE OR REPLACE FUNCTION dblink_tok (int,int) RETURNS text
---  AS 'MODULE_PATHNAME','dblink_tok' LANGUAGE 'c'
---  WITH (isstrict);
---CREATE OR REPLACE FUNCTION dblink_last_oid (int) RETURNS oid
---  AS 'MODULE_PATHNAME','dblink_last_oid' LANGUAGE 'c'
---  WITH (isstrict);
-
-CREATE OR REPLACE FUNCTION dblink_connect (text) RETURNS text
-  AS 'MODULE_PATHNAME','dblink_connect' LANGUAGE 'c'
-  WITH (isstrict);
-
-CREATE OR REPLACE FUNCTION dblink_disconnect () RETURNS text
-  AS 'MODULE_PATHNAME','dblink_disconnect' LANGUAGE 'c'
-  WITH (isstrict);
-
-CREATE OR REPLACE FUNCTION dblink_open (text,text) RETURNS text
-  AS 'MODULE_PATHNAME','dblink_open' LANGUAGE 'c'
-  WITH (isstrict);
-
-CREATE OR REPLACE FUNCTION dblink_fetch (text,int) RETURNS setof record
-  AS 'MODULE_PATHNAME','dblink_fetch' LANGUAGE 'c'
-  WITH (isstrict);
-
-CREATE OR REPLACE FUNCTION dblink_close (text) RETURNS text
-  AS 'MODULE_PATHNAME','dblink_close' LANGUAGE 'c'
-  WITH (isstrict);
+--
+-- Uncomment the following commented lines to use original DEPRECATED functions
+--
+--CREATE OR REPLACE FUNCTION dblink (text,text)
+--RETURNS setof int
+--AS 'MODULE_PATHNAME','dblink'
+--LANGUAGE 'C' WITH (isstrict);
+--CREATE OR REPLACE FUNCTION dblink_tok (int,int)
+--RETURNS text
+--AS 'MODULE_PATHNAME','dblink_tok'
+--LANGUAGE 'C' WITH (isstrict);
+--CREATE OR REPLACE FUNCTION dblink_last_oid (int)
+--RETURNS oid
+--AS 'MODULE_PATHNAME','dblink_last_oid'
+--LANGUAGE 'C' WITH (isstrict);
+
+CREATE OR REPLACE FUNCTION dblink_connect (text)
+RETURNS text
+AS 'MODULE_PATHNAME','dblink_connect'
+LANGUAGE 'C' WITH (isstrict);
+
+CREATE OR REPLACE FUNCTION dblink_disconnect ()
+RETURNS text
+AS 'MODULE_PATHNAME','dblink_disconnect'
+LANGUAGE 'C' WITH (isstrict);
+
+CREATE OR REPLACE FUNCTION dblink_open (text,text)
+RETURNS text
+AS 'MODULE_PATHNAME','dblink_open'
+LANGUAGE 'C' WITH (isstrict);
+
+CREATE OR REPLACE FUNCTION dblink_fetch (text,int)
+RETURNS setof record
+AS 'MODULE_PATHNAME','dblink_fetch'
+LANGUAGE 'C' WITH (isstrict);
+
+CREATE OR REPLACE FUNCTION dblink_close (text)
+RETURNS text
+AS 'MODULE_PATHNAME','dblink_close'
+LANGUAGE 'C' WITH (isstrict);
 
 -- Note: if this is not a first time install of dblink, uncomment the
 -- following DROP which prepares the database for the new, non-deprecated
@@ -35,55 +45,49 @@ CREATE OR REPLACE FUNCTION dblink_close (text) RETURNS text
 --DROP FUNCTION dblink (text,text);
 
 -- Comment out the following 3 lines if the DEPRECATED functions are used.
-CREATE OR REPLACE FUNCTION dblink (text,text) RETURNS setof record
-  AS 'MODULE_PATHNAME','dblink_record' LANGUAGE 'c'
-  WITH (isstrict);
-
-CREATE OR REPLACE FUNCTION dblink (text) RETURNS setof record
-  AS 'MODULE_PATHNAME','dblink_record' LANGUAGE 'c'
-  WITH (isstrict);
-
-CREATE OR REPLACE FUNCTION dblink_exec (text,text) RETURNS text
-  AS 'MODULE_PATHNAME','dblink_exec' LANGUAGE 'c'
-  WITH (isstrict);
-
-CREATE OR REPLACE FUNCTION dblink_exec (text) RETURNS text
-  AS 'MODULE_PATHNAME','dblink_exec' LANGUAGE 'c'
-  WITH (isstrict);
+CREATE OR REPLACE FUNCTION dblink (text,text)
+RETURNS setof record
+AS 'MODULE_PATHNAME','dblink_record'
+LANGUAGE 'C' WITH (isstrict);
+
+CREATE OR REPLACE FUNCTION dblink (text)
+RETURNS setof record
+AS 'MODULE_PATHNAME','dblink_record'
+LANGUAGE 'C' WITH (isstrict);
+
+CREATE OR REPLACE FUNCTION dblink_exec (text,text)
+RETURNS text
+AS 'MODULE_PATHNAME','dblink_exec'
+LANGUAGE 'C' WITH (isstrict);
+
+CREATE OR REPLACE FUNCTION dblink_exec (text)
+RETURNS text
+AS 'MODULE_PATHNAME','dblink_exec'
+LANGUAGE 'c' WITH (isstrict);
 
 CREATE TYPE dblink_pkey_results AS (position int4, colname text);
 
-CREATE OR REPLACE FUNCTION dblink_get_pkey (text) RETURNS setof dblink_pkey_results
-  AS 'MODULE_PATHNAME','dblink_get_pkey' LANGUAGE 'c'
-  WITH (isstrict);
-
-CREATE OR REPLACE FUNCTION dblink_build_sql_insert (text, int2vector, int4, _text, _text) RETURNS text
-  AS 'MODULE_PATHNAME','dblink_build_sql_insert' LANGUAGE 'c'
-  WITH (isstrict);
-
-CREATE OR REPLACE FUNCTION dblink_build_sql_delete (text, int2vector, int4, _text) RETURNS text
-  AS 'MODULE_PATHNAME','dblink_build_sql_delete' LANGUAGE 'c'
-  WITH (isstrict);
-
-CREATE OR REPLACE FUNCTION dblink_build_sql_update (text, int2vector, int4, _text, _text) RETURNS text
-  AS 'MODULE_PATHNAME','dblink_build_sql_update' LANGUAGE 'c'
-  WITH (isstrict);
-
-CREATE OR REPLACE FUNCTION dblink_current_query () RETURNS text
-  AS 'MODULE_PATHNAME','dblink_current_query' LANGUAGE 'c';
-
-GRANT EXECUTE ON FUNCTION dblink_connect (text) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION dblink_disconnect () TO PUBLIC;
-GRANT EXECUTE ON FUNCTION dblink_open (text,text) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION dblink_fetch (text,int) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION dblink_close (text) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION dblink (text,text) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION dblink (text) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION dblink_exec (text,text) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION dblink_exec (text) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION dblink_get_pkey (text) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION dblink_build_sql_insert (text, int2vector, int4, _text, _text) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION dblink_build_sql_delete (text, int2vector, int4, _text) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION dblink_build_sql_update (text, int2vector, int4, _text, _text) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION dblink_current_query () TO PUBLIC;
-
+CREATE OR REPLACE FUNCTION dblink_get_pkey (text)
+RETURNS setof dblink_pkey_results
+AS 'MODULE_PATHNAME','dblink_get_pkey'
+LANGUAGE 'c' WITH (isstrict);
+
+CREATE OR REPLACE FUNCTION dblink_build_sql_insert (text, int2vector, int4, _text, _text)
+RETURNS text
+AS 'MODULE_PATHNAME','dblink_build_sql_insert'
+LANGUAGE 'C' WITH (isstrict);
+
+CREATE OR REPLACE FUNCTION dblink_build_sql_delete (text, int2vector, int4, _text)
+RETURNS text
+AS 'MODULE_PATHNAME','dblink_build_sql_delete'
+LANGUAGE 'C' WITH (isstrict);
+
+CREATE OR REPLACE FUNCTION dblink_build_sql_update (text, int2vector, int4, _text, _text)
+RETURNS text
+AS 'MODULE_PATHNAME','dblink_build_sql_update'
+LANGUAGE 'C' WITH (isstrict);
+
+CREATE OR REPLACE FUNCTION dblink_current_query ()
+RETURNS text
+AS 'MODULE_PATHNAME','dblink_current_query'
+LANGUAGE 'C';
index de6c7568e1d67dc29720c94a2f34feed3aa4062b..7db366900f410e4c766c89c25ad505f3d8c239c1 100644 (file)
@@ -4,7 +4,11 @@
 --
 -- This initial hackery is to allow successive runs without failures.
 --
-CREATE OR REPLACE FUNCTION conditional_drop() RETURNS text AS '
+-- Adjust this setting to control where the objects get created.
+SET search_path = public;
+SET autocommit TO 'on';
+CREATE OR REPLACE FUNCTION conditional_drop()
+RETURNS text AS '
 DECLARE
     dbname    text;
 BEGIN
@@ -26,28 +30,29 @@ CREATE DATABASE regression_slave;
 -- Turn off echoing so that expected file does not depend on
 -- contents of dblink.sql.
 \set ECHO none
-create table foo(f1 int, f2 text, f3 text[], primary key (f1,f2));
+CREATE TABLE foo(f1 int, f2 text, f3 text[], primary key (f1,f2));
 NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index 'foo_pkey' for table 'foo'
-insert into foo values(0,'a','{"a0","b0","c0"}');
-insert into foo values(1,'b','{"a1","b1","c1"}');
-insert into foo values(2,'c','{"a2","b2","c2"}');
-insert into foo values(3,'d','{"a3","b3","c3"}');
-insert into foo values(4,'e','{"a4","b4","c4"}');
-insert into foo values(5,'f','{"a5","b5","c5"}');
-insert into foo values(6,'g','{"a6","b6","c6"}');
-insert into foo values(7,'h','{"a7","b7","c7"}');
-insert into foo values(8,'i','{"a8","b8","c8"}');
-insert into foo values(9,'j','{"a9","b9","c9"}');
+INSERT INTO foo VALUES (0,'a','{"a0","b0","c0"}');
+INSERT INTO foo VALUES (1,'b','{"a1","b1","c1"}');
+INSERT INTO foo VALUES (2,'c','{"a2","b2","c2"}');
+INSERT INTO foo VALUES (3,'d','{"a3","b3","c3"}');
+INSERT INTO foo VALUES (4,'e','{"a4","b4","c4"}');
+INSERT INTO foo VALUES (5,'f','{"a5","b5","c5"}');
+INSERT INTO foo VALUES (6,'g','{"a6","b6","c6"}');
+INSERT INTO foo VALUES (7,'h','{"a7","b7","c7"}');
+INSERT INTO foo VALUES (8,'i','{"a8","b8","c8"}');
+INSERT INTO foo VALUES (9,'j','{"a9","b9","c9"}');
 -- misc utilities
 -- show the currently executing query
-select 'hello' as hello, dblink_current_query() as query;
+SELECT 'hello' AS hello, dblink_current_query() AS query;
  hello |                           query                           
 -------+-----------------------------------------------------------
- hello | select 'hello' as hello, dblink_current_query() as query;
+ hello | SELECT 'hello' AS hello, dblink_current_query() AS query;
 (1 row)
 
 -- list the primary key fields
-select * from dblink_get_pkey('foo');
+SELECT *
+FROM dblink_get_pkey('foo');
  position | colname 
 ----------+---------
         1 | f1
@@ -56,7 +61,7 @@ select * from dblink_get_pkey('foo');
 
 -- build an insert statement based on a local tuple,
 -- replacing the primary key values with new ones
-select dblink_build_sql_insert('foo','1 2',2,'{"0", "a"}','{"99", "xyz"}');
+SELECT dblink_build_sql_insert('foo','1 2',2,'{"0", "a"}','{"99", "xyz"}');
                   dblink_build_sql_insert                  
 -----------------------------------------------------------
  INSERT INTO foo(f1,f2,f3) VALUES('99','xyz','{a0,b0,c0}')
@@ -64,14 +69,14 @@ select dblink_build_sql_insert('foo','1 2',2,'{"0", "a"}','{"99", "xyz"}');
 
 -- build an update statement based on a local tuple,
 -- replacing the primary key values with new ones
-select dblink_build_sql_update('foo','1 2',2,'{"0", "a"}','{"99", "xyz"}');
+SELECT dblink_build_sql_update('foo','1 2',2,'{"0", "a"}','{"99", "xyz"}');
                                 dblink_build_sql_update                                 
 ----------------------------------------------------------------------------------------
  UPDATE foo SET f1 = '99', f2 = 'xyz', f3 = '{a0,b0,c0}' WHERE f1 = '99' AND f2 = 'xyz'
 (1 row)
 
 -- build a delete statement based on a local tuple,
-select dblink_build_sql_delete('foo','1 2',2,'{"0", "a"}');
+SELECT dblink_build_sql_delete('foo','1 2',2,'{"0", "a"}');
            dblink_build_sql_delete           
 ---------------------------------------------
  DELETE FROM foo WHERE f1 = '0' AND f2 = 'a'
@@ -85,7 +90,9 @@ select dblink_build_sql_delete('foo','1 2',2,'{"0", "a"}');
 \connect regression
 \set ECHO none
 -- regular old dblink
-select * from dblink('dbname=regression_slave','select * from foo') as t(a int, b text, c text[]) where t.a > 7;
+SELECT *
+FROM dblink('dbname=regression_slave','SELECT * FROM foo') AS t(a int, b text, c text[])
+WHERE t.a > 7;
  a | b |     c      
 ---+---+------------
  8 | i | {a8,b8,c8}
@@ -93,17 +100,21 @@ select * from dblink('dbname=regression_slave','select * from foo') as t(a int,
 (2 rows)
 
 -- should generate "no connection available" error
-select * from dblink('select * from foo') as t(a int, b text, c text[]) where t.a > 7;
+SELECT *
+FROM dblink('SELECT * FROM foo') AS t(a int, b text, c text[])
+WHERE t.a > 7;
 ERROR:  dblink: no connection available
 -- create a persistent connection
-select dblink_connect('dbname=regression_slave');
+SELECT dblink_connect('dbname=regression_slave');
  dblink_connect 
 ----------------
  OK
 (1 row)
 
 -- use the persistent connection
-select * from dblink('select * from foo') as t(a int, b text, c text[]) where t.a > 7;
+SELECT *
+FROM dblink('SELECT * FROM foo') AS t(a int, b text, c text[])
+WHERE t.a > 7;
  a | b |     c      
 ---+---+------------
  8 | i | {a8,b8,c8}
@@ -111,14 +122,15 @@ select * from dblink('select * from foo') as t(a int, b text, c text[]) where t.
 (2 rows)
 
 -- open a cursor
-select dblink_open('rmt_foo_cursor','select * from foo');
+SELECT dblink_open('rmt_foo_cursor','SELECT * FROM foo');
  dblink_open 
 -------------
  OK
 (1 row)
 
 -- fetch some data
-select * from dblink_fetch('rmt_foo_cursor',4) as t(a int, b text, c text[]);
+SELECT *
+FROM dblink_fetch('rmt_foo_cursor',4) AS t(a int, b text, c text[]);
  a | b |     c      
 ---+---+------------
  0 | a | {a0,b0,c0}
@@ -127,7 +139,8 @@ select * from dblink_fetch('rmt_foo_cursor',4) as t(a int, b text, c text[]);
  3 | d | {a3,b3,c3}
 (4 rows)
 
-select * from dblink_fetch('rmt_foo_cursor',4) as t(a int, b text, c text[]);
+SELECT *
+FROM dblink_fetch('rmt_foo_cursor',4) AS t(a int, b text, c text[]);
  a | b |     c      
 ---+---+------------
  4 | e | {a4,b4,c4}
@@ -137,7 +150,8 @@ select * from dblink_fetch('rmt_foo_cursor',4) as t(a int, b text, c text[]);
 (4 rows)
 
 -- this one only finds two rows left
-select * from dblink_fetch('rmt_foo_cursor',4) as t(a int, b text, c text[]);
+SELECT *
+FROM dblink_fetch('rmt_foo_cursor',4) AS t(a int, b text, c text[]);
  a | b |     c      
 ---+---+------------
  8 | i | {a8,b8,c8}
@@ -145,35 +159,38 @@ select * from dblink_fetch('rmt_foo_cursor',4) as t(a int, b text, c text[]);
 (2 rows)
 
 -- close the cursor
-select dblink_close('rmt_foo_cursor');
+SELECT dblink_close('rmt_foo_cursor');
  dblink_close 
 --------------
  OK
 (1 row)
 
 -- should generate "cursor rmt_foo_cursor does not exist" error
-select * from dblink_fetch('rmt_foo_cursor',4) as t(a int, b text, c text[]);
+SELECT *
+FROM dblink_fetch('rmt_foo_cursor',4) AS t(a int, b text, c text[]);
 ERROR:  dblink_fetch: cursor rmt_foo_cursor does not exist
 -- close the persistent connection
-select dblink_disconnect();
+SELECT dblink_disconnect();
  dblink_disconnect 
 -------------------
  OK
 (1 row)
 
 -- should generate "no connection available" error
-select * from dblink('select * from foo') as t(a int, b text, c text[]) where t.a > 7;
+SELECT *
+FROM dblink('SELECT * FROM foo') AS t(a int, b text, c text[])
+WHERE t.a > 7;
 ERROR:  dblink: no connection available
 -- put more data into our slave table, first using arbitrary connection syntax
 -- but truncate the actual return value so we can use diff to check for success
-select substr(dblink_exec('dbname=regression_slave','insert into foo values(10,''k'',''{"a10","b10","c10"}'')'),1,6);
+SELECT substr(dblink_exec('dbname=regression_slave','INSERT INTO foo VALUES (10,''k'',''{"a10","b10","c10"}'')'),1,6);
  substr 
 --------
  INSERT
 (1 row)
 
 -- create a persistent connection
-select dblink_connect('dbname=regression_slave');
+SELECT dblink_connect('dbname=regression_slave');
  dblink_connect 
 ----------------
  OK
@@ -181,14 +198,15 @@ select dblink_connect('dbname=regression_slave');
 
 -- put more data into our slave table, using persistent connection syntax
 -- but truncate the actual return value so we can use diff to check for success
-select substr(dblink_exec('insert into foo values(11,''l'',''{"a11","b11","c11"}'')'),1,6);
+SELECT substr(dblink_exec('INSERT INTO foo VALUES (11,''l'',''{"a11","b11","c11"}'')'),1,6);
  substr 
 --------
  INSERT
 (1 row)
 
 -- let's see it
-select * from dblink('select * from foo') as t(a int, b text, c text[]);
+SELECT *
+FROM dblink('SELECT * FROM foo') AS t(a int, b text, c text[]);
  a  | b |       c       
 ----+---+---------------
   0 | a | {a0,b0,c0}
@@ -206,34 +224,38 @@ select * from dblink('select * from foo') as t(a int, b text, c text[]);
 (12 rows)
 
 -- change some data
-select dblink_exec('update foo set f3[2] = ''b99'' where f1 = 11');
+SELECT dblink_exec('UPDATE foo SET f3[2] = ''b99'' WHERE f1 = 11');
  dblink_exec 
 -------------
  UPDATE 1
 (1 row)
 
 -- let's see it
-select * from dblink('select * from foo') as t(a int, b text, c text[]) where a = 11;
+SELECT *
+FROM dblink('SELECT * FROM foo') AS t(a int, b text, c text[])
+WHERE a = 11;
  a  | b |       c       
 ----+---+---------------
  11 | l | {a11,b99,c11}
 (1 row)
 
 -- delete some data
-select dblink_exec('delete from foo where f1 = 11');
+SELECT dblink_exec('DELETE FROM foo WHERE f1 = 11');
  dblink_exec 
 -------------
  DELETE 1
 (1 row)
 
 -- let's see it
-select * from dblink('select * from foo') as t(a int, b text, c text[]) where a = 11;
+SELECT *
+FROM dblink('SELECT * FROM foo') AS t(a int, b text, c text[])
+WHERE a = 11;
  a | b | c 
 ---+---+---
 (0 rows)
 
 -- close the persistent connection
-select dblink_disconnect();
+SELECT dblink_disconnect();
  dblink_disconnect 
 -------------------
  OK
index 2d9dae33173a3cf5b2ccb0d29f4c7c61b16a583b..7737e5d395df8a6e225859ece91d2f97e9fe9599 100644 (file)
@@ -4,7 +4,14 @@
 --
 -- This initial hackery is to allow successive runs without failures.
 --
-CREATE OR REPLACE FUNCTION conditional_drop() RETURNS text AS '
+
+-- Adjust this setting to control where the objects get created.
+SET search_path = public;
+
+SET autocommit TO 'on';
+
+CREATE OR REPLACE FUNCTION conditional_drop()
+RETURNS text AS '
 DECLARE
     dbname    text;
 BEGIN
@@ -26,36 +33,37 @@ CREATE DATABASE regression_slave;
 \i dblink.sql
 \set ECHO all
 
-create table foo(f1 int, f2 text, f3 text[], primary key (f1,f2));
-insert into foo values(0,'a','{"a0","b0","c0"}');
-insert into foo values(1,'b','{"a1","b1","c1"}');
-insert into foo values(2,'c','{"a2","b2","c2"}');
-insert into foo values(3,'d','{"a3","b3","c3"}');
-insert into foo values(4,'e','{"a4","b4","c4"}');
-insert into foo values(5,'f','{"a5","b5","c5"}');
-insert into foo values(6,'g','{"a6","b6","c6"}');
-insert into foo values(7,'h','{"a7","b7","c7"}');
-insert into foo values(8,'i','{"a8","b8","c8"}');
-insert into foo values(9,'j','{"a9","b9","c9"}');
+CREATE TABLE foo(f1 int, f2 text, f3 text[], primary key (f1,f2));
+INSERT INTO foo VALUES (0,'a','{"a0","b0","c0"}');
+INSERT INTO foo VALUES (1,'b','{"a1","b1","c1"}');
+INSERT INTO foo VALUES (2,'c','{"a2","b2","c2"}');
+INSERT INTO foo VALUES (3,'d','{"a3","b3","c3"}');
+INSERT INTO foo VALUES (4,'e','{"a4","b4","c4"}');
+INSERT INTO foo VALUES (5,'f','{"a5","b5","c5"}');
+INSERT INTO foo VALUES (6,'g','{"a6","b6","c6"}');
+INSERT INTO foo VALUES (7,'h','{"a7","b7","c7"}');
+INSERT INTO foo VALUES (8,'i','{"a8","b8","c8"}');
+INSERT INTO foo VALUES (9,'j','{"a9","b9","c9"}');
 
 -- misc utilities
 
 -- show the currently executing query
-select 'hello' as hello, dblink_current_query() as query;
+SELECT 'hello' AS hello, dblink_current_query() AS query;
 
 -- list the primary key fields
-select * from dblink_get_pkey('foo');
+SELECT *
+FROM dblink_get_pkey('foo');
 
 -- build an insert statement based on a local tuple,
 -- replacing the primary key values with new ones
-select dblink_build_sql_insert('foo','1 2',2,'{"0", "a"}','{"99", "xyz"}');
+SELECT dblink_build_sql_insert('foo','1 2',2,'{"0", "a"}','{"99", "xyz"}');
 
 -- build an update statement based on a local tuple,
 -- replacing the primary key values with new ones
-select dblink_build_sql_update('foo','1 2',2,'{"0", "a"}','{"99", "xyz"}');
+SELECT dblink_build_sql_update('foo','1 2',2,'{"0", "a"}','{"99", "xyz"}');
 
 -- build a delete statement based on a local tuple,
-select dblink_build_sql_delete('foo','1 2',2,'{"0", "a"}');
+SELECT dblink_build_sql_delete('foo','1 2',2,'{"0", "a"}');
 
 --
 -- Connect back to the regression database and define the functions.
@@ -68,64 +76,82 @@ select dblink_build_sql_delete('foo','1 2',2,'{"0", "a"}');
 \set ECHO all
 
 -- regular old dblink
-select * from dblink('dbname=regression_slave','select * from foo') as t(a int, b text, c text[]) where t.a > 7;
+SELECT *
+FROM dblink('dbname=regression_slave','SELECT * FROM foo') AS t(a int, b text, c text[])
+WHERE t.a > 7;
 
 -- should generate "no connection available" error
-select * from dblink('select * from foo') as t(a int, b text, c text[]) where t.a > 7;
+SELECT *
+FROM dblink('SELECT * FROM foo') AS t(a int, b text, c text[])
+WHERE t.a > 7;
 
 -- create a persistent connection
-select dblink_connect('dbname=regression_slave');
+SELECT dblink_connect('dbname=regression_slave');
 
 -- use the persistent connection
-select * from dblink('select * from foo') as t(a int, b text, c text[]) where t.a > 7;
+SELECT *
+FROM dblink('SELECT * FROM foo') AS t(a int, b text, c text[])
+WHERE t.a > 7;
 
 -- open a cursor
-select dblink_open('rmt_foo_cursor','select * from foo');
+SELECT dblink_open('rmt_foo_cursor','SELECT * FROM foo');
 
 -- fetch some data
-select * from dblink_fetch('rmt_foo_cursor',4) as t(a int, b text, c text[]);
-select * from dblink_fetch('rmt_foo_cursor',4) as t(a int, b text, c text[]);
+SELECT *
+FROM dblink_fetch('rmt_foo_cursor',4) AS t(a int, b text, c text[]);
+
+SELECT *
+FROM dblink_fetch('rmt_foo_cursor',4) AS t(a int, b text, c text[]);
 
 -- this one only finds two rows left
-select * from dblink_fetch('rmt_foo_cursor',4) as t(a int, b text, c text[]);
+SELECT *
+FROM dblink_fetch('rmt_foo_cursor',4) AS t(a int, b text, c text[]);
 
 -- close the cursor
-select dblink_close('rmt_foo_cursor');
+SELECT dblink_close('rmt_foo_cursor');
 
 -- should generate "cursor rmt_foo_cursor does not exist" error
-select * from dblink_fetch('rmt_foo_cursor',4) as t(a int, b text, c text[]);
+SELECT *
+FROM dblink_fetch('rmt_foo_cursor',4) AS t(a int, b text, c text[]);
 
 -- close the persistent connection
-select dblink_disconnect();
+SELECT dblink_disconnect();
 
 -- should generate "no connection available" error
-select * from dblink('select * from foo') as t(a int, b text, c text[]) where t.a > 7;
+SELECT *
+FROM dblink('SELECT * FROM foo') AS t(a int, b text, c text[])
+WHERE t.a > 7;
 
 -- put more data into our slave table, first using arbitrary connection syntax
 -- but truncate the actual return value so we can use diff to check for success
-select substr(dblink_exec('dbname=regression_slave','insert into foo values(10,''k'',''{"a10","b10","c10"}'')'),1,6);
+SELECT substr(dblink_exec('dbname=regression_slave','INSERT INTO foo VALUES(10,''k'',''{"a10","b10","c10"}'')'),1,6);
 
 -- create a persistent connection
-select dblink_connect('dbname=regression_slave');
+SELECT dblink_connect('dbname=regression_slave');
 
 -- put more data into our slave table, using persistent connection syntax
 -- but truncate the actual return value so we can use diff to check for success
-select substr(dblink_exec('insert into foo values(11,''l'',''{"a11","b11","c11"}'')'),1,6);
+SELECT substr(dblink_exec('INSERT INTO foo VALUES(11,''l'',''{"a11","b11","c11"}'')'),1,6);
 
 -- let's see it
-select * from dblink('select * from foo') as t(a int, b text, c text[]);
+SELECT *
+FROM dblink('SELECT * FROM foo') AS t(a int, b text, c text[]);
 
 -- change some data
-select dblink_exec('update foo set f3[2] = ''b99'' where f1 = 11');
+SELECT dblink_exec('UPDATE foo SET f3[2] = ''b99'' WHERE f1 = 11');
 
 -- let's see it
-select * from dblink('select * from foo') as t(a int, b text, c text[]) where a = 11;
+SELECT *
+FROM dblink('SELECT * FROM foo') AS t(a int, b text, c text[])
+WHERE a = 11;
 
 -- delete some data
-select dblink_exec('delete from foo where f1 = 11');
+SELECT dblink_exec('DELETE FROM foo WHERE f1 = 11');
 
 -- let's see it
-select * from dblink('select * from foo') as t(a int, b text, c text[]) where a = 11;
+SELECT *
+FROM dblink('SELECT * FROM foo') AS t(a int, b text, c text[])
+WHERE a = 11;
 
 -- close the persistent connection
-select dblink_disconnect();
+SELECT dblink_disconnect();
index da786ec5dd80fafc7d9c26a271b518f56a0e1068..de07c3ae00e9d1374a7e0a2f665b22abb7f39512 100644 (file)
@@ -1,5 +1,9 @@
+-- Adjust this setting to control where the objects get created.
+SET search_path = public;
 
-CREATE TRIGGER "MyTableName_Trig" AFTER INSERT OR DELETE OR UPDATE
-ON "MyTableName"  FOR EACH ROW EXECUTE PROCEDURE
-"recordchange" ();
+SET autocommit TO 'on';
+
+CREATE TRIGGER "MyTableName_Trig" 
+AFTER INSERT OR DELETE OR UPDATE ON "MyTableName"
+FOR EACH ROW EXECUTE PROCEDURE "recordchange" ();
 
index c934c869b781133bfd93e450e359c38b88887cc9..9c9f197e9196fdd0bba4de1861c2194fc8ada250 100755 (executable)
@@ -19,7 +19,7 @@
 #    GNU General Public License for more details.
 #
 ##############################################################################
-# $Id: DBMirror.pl,v 1.1 2002/06/23 21:58:07 momjian Exp $ 
+# $Id: DBMirror.pl,v 1.2 2002/10/18 18:41:19 momjian Exp $ 
 #
 ##############################################################################
 
@@ -112,6 +112,23 @@ sub Main() {
     die;
   }
     
+  my $setQuery;
+  $setQuery = "SET search_path = public";
+  $setResult = $masterConn->exec($setQuery);
+  if($setResult->resultStatus!=PGRES_COMMAND_OK) { 
+    logErrorMessage($masterConn->errorMessage . "\n" . 
+                   $setQuery);
+    die;
+  }
+    
+  my $setQuery2;
+  $setQuery2 = "SET autocommit TO 'on'";
+  $setResult2 = $masterConn->exec($setQuery2);
+  if($setResult2->resultStatus!=PGRES_COMMAND_OK) { 
+    logErrorMessage($masterConn->errorMessage . "\n" . 
+                   $setQuery2);
+    die;
+  }
     
   my $firstTime = 1;
   while(1) {
@@ -127,6 +144,7 @@ sub Main() {
     
     
    
+    sendQueryToSlaves(undef,"SET autocommit TO 'on'");
     sendQueryToSlaves(undef,"SET TRANSACTION ISOLATION LEVEL SERIALIZABLE");
     sendQueryToSlaves(undef,"SET CONSTRAINTS ALL DEFERRED");
     
@@ -703,7 +721,7 @@ sub openSlaveConnection($) {
     
     $slaveConn = Pg::connectdb($slaveConnString);
     
-    if($slaveConn->status !=PGRES_CONNECTION_OK) {
+    if($slaveConn->status != PGRES_CONNECTION_OK) {
        my $errorMessage = "Can't connect to slave database " ;
        $errorMessage .= $slavePtr->{"slaveHost"} . "\n";
        $errorMessage .= $slaveConn->errorMessage;
index 8e03264165090ad9d7806ce36e97a97d77bd45cf..7597318411bbdbbb92282cceac6f35420fb515c1 100644 (file)
@@ -1,4 +1,6 @@
 
+SET autocommit TO 'on';
+
 CREATE FUNCTION "recordchange" () RETURNS trigger AS
 '/usr/local/pgsql/lib/pending.so', 'recordchange' LANGUAGE 'C';
 
index 2729288177c6e7f5196fc82e9e72eb6db9cb9b3c..a74ea24700bec3937805af1d1f3e2204adbfa720 100755 (executable)
@@ -16,7 +16,7 @@
 #    GNU General Public License for more details.
 #
 ##############################################################################
-# $Id: clean_pending.pl,v 1.1 2002/06/23 21:58:08 momjian Exp $
+# $Id: clean_pending.pl,v 1.2 2002/10/18 18:41:19 momjian Exp $
 ##############################################################################
 
 
@@ -69,6 +69,10 @@ unless($dbConn->status == PGRES_CONNECTION_OK) {
     printf("Can't connect to database\n");
     die;
 }
+my $setresult = $dbConn->exec("SET autocommit TO 'on'");
+unless($setresult->resultStatus == PGRES_COMMAND_OK) {
+   die $dbConn->errorMessage;
+}
 my $result = $dbConn->exec("BEGIN");
 unless($result->resultStatus == PGRES_COMMAND_OK) {
    die $dbConn->errorMessage;
index 04485589c74f7041f6a3b062ef3f303fa4f0f9bf..70dc32abab64425222efbd8e9c28458efb7d1b45 100644 (file)
@@ -1,24 +1,19 @@
-begin;
+-- Adjust this setting to control where the objects get created.
+SET search_path = public;
+
+SET autocommit TO 'on';
 
 --------------- geo_distance
 
-CREATE OR REPLACE FUNCTION geo_distance (point, point) RETURNS float8
-  LANGUAGE 'c' IMMUTABLE STRICT AS 'MODULE_PATHNAME';
+CREATE OR REPLACE FUNCTION geo_distance (point, point)
+RETURNS float8
+LANGUAGE 'C' IMMUTABLE STRICT AS 'MODULE_PATHNAME';
 
 --------------- geo_distance as operator <@>
 
 CREATE OPERATOR <@> (
-  leftarg = point,
-  rightarg = point,
-  procedure = geo_distance,
-  commutator = <@>
+  LEFTARG = point,
+  RIGHTARG = point,
+  PROCEDURE = geo_distance,
+  COMMUTATOR = <@>
 );
-
---
--- By default this function is made executable by anyone. To restrict
--- access by default, comment out the following grant command.
---
-
-grant execute on function geo_distance(point, point) to public;
-
-commit;
index 722299689e461f009b5da265ba2633636e89e96b..d8b8b68a72f23504fe9581dfb35cf735de7b048e 100644 (file)
@@ -9,73 +9,73 @@
 --
 -- Test getting the distance between two points using geo_distance.
 --
-select geo_distance('(0,0)'::point,'(0,0)'::point)::numeric(20,5);
+SELECT geo_distance('(0,0)'::point,'(0,0)'::point)::numeric(20,5);
  geo_distance 
 --------------
       0.00000
 (1 row)
 
-select geo_distance('(0,0)'::point,'(180,0)'::point)::numeric(20,5);
+SELECT geo_distance('(0,0)'::point,'(180,0)'::point)::numeric(20,5);
  geo_distance 
 --------------
   12436.77274
 (1 row)
 
-select geo_distance('(0,0)'::point,'(0,90)'::point)::numeric(20,5);
+SELECT geo_distance('(0,0)'::point,'(0,90)'::point)::numeric(20,5);
  geo_distance 
 --------------
    6218.38637
 (1 row)
 
-select geo_distance('(0,0)'::point,'(90,0)'::point)::numeric(20,5);
+SELECT geo_distance('(0,0)'::point,'(90,0)'::point)::numeric(20,5);
  geo_distance 
 --------------
    6218.38637
 (1 row)
 
-select geo_distance('(0,0)'::point,'(1,0)'::point)::numeric(20,5);
+SELECT geo_distance('(0,0)'::point,'(1,0)'::point)::numeric(20,5);
  geo_distance 
 --------------
      69.09318
 (1 row)
 
-select geo_distance('(0,0)'::point,'(0,1)'::point)::numeric(20,5);
+SELECT geo_distance('(0,0)'::point,'(0,1)'::point)::numeric(20,5);
  geo_distance 
 --------------
      69.09318
 (1 row)
 
-select geo_distance('(0,30)'::point,'(1,30)'::point)::numeric(20,5);
+SELECT geo_distance('(0,30)'::point,'(1,30)'::point)::numeric(20,5);
  geo_distance 
 --------------
      59.83626
 (1 row)
 
-select geo_distance('(0,30)'::point,'(0,31)'::point)::numeric(20,5);
+SELECT geo_distance('(0,30)'::point,'(0,31)'::point)::numeric(20,5);
  geo_distance 
 --------------
      69.09318
 (1 row)
 
-select geo_distance('(0,60)'::point,'(1,60)'::point)::numeric(20,5);
+SELECT geo_distance('(0,60)'::point,'(1,60)'::point)::numeric(20,5);
  geo_distance 
 --------------
      34.54626
 (1 row)
 
-select geo_distance('(0,60)'::point,'(0,61)'::point)::numeric(20,5);
+SELECT geo_distance('(0,60)'::point,'(0,61)'::point)::numeric(20,5);
  geo_distance 
 --------------
      69.09318
 (1 row)
 
-select geo_distance('(87.6,41.8)'::point,'(106.7,35.1)'::point)::numeric(20,5);
+SELECT geo_distance('(87.6,41.8)'::point,'(106.7,35.1)'::point)::numeric(20,5);
  geo_distance 
 --------------
    1129.18983
 (1 row)
 
-select (geo_distance('(87.6,41.8)'::point,'(106.7,35.1)'::point)*5280.*12.*2.54/100.)::numeric(20,5);
+SELECT (geo_distance('(87.6,41.8)'::point,'(106.7,35.1)'::point)*5280.*12.*2.54/100.)::numeric(20,5);
     numeric    
 ---------------
  1817254.87730
@@ -84,73 +84,73 @@ select (geo_distance('(87.6,41.8)'::point,'(106.7,35.1)'::point)*5280.*12.*2.54/
 --
 -- Test getting the distance between two points using the <@> operator.
 --
-select ('(0,0)'::point <@> '(0,0)'::point)::numeric(20,5);
+SELECT ('(0,0)'::point <@> '(0,0)'::point)::numeric(20,5);
  numeric 
 ---------
  0.00000
 (1 row)
 
-select ('(0,0)'::point <@> '(180,0)'::point)::numeric(20,5);
+SELECT ('(0,0)'::point <@> '(180,0)'::point)::numeric(20,5);
    numeric   
 -------------
  12436.77274
 (1 row)
 
-select ('(0,0)'::point <@> '(0,90)'::point)::numeric(20,5);
+SELECT ('(0,0)'::point <@> '(0,90)'::point)::numeric(20,5);
   numeric   
 ------------
  6218.38637
 (1 row)
 
-select ('(0,0)'::point <@> '(90,0)'::point)::numeric(20,5);
+SELECT ('(0,0)'::point <@> '(90,0)'::point)::numeric(20,5);
   numeric   
 ------------
  6218.38637
 (1 row)
 
-select ('(0,0)'::point <@> '(1,0)'::point)::numeric(20,5);
+SELECT ('(0,0)'::point <@> '(1,0)'::point)::numeric(20,5);
  numeric  
 ----------
  69.09318
 (1 row)
 
-select ('(0,0)'::point <@> '(0,1)'::point)::numeric(20,5);
+SELECT ('(0,0)'::point <@> '(0,1)'::point)::numeric(20,5);
  numeric  
 ----------
  69.09318
 (1 row)
 
-select ('(0,30)'::point <@> '(1,30)'::point)::numeric(20,5);
+SELECT ('(0,30)'::point <@> '(1,30)'::point)::numeric(20,5);
  numeric  
 ----------
  59.83626
 (1 row)
 
-select ('(0,30)'::point <@> '(0,31)'::point)::numeric(20,5);
+SELECT ('(0,30)'::point <@> '(0,31)'::point)::numeric(20,5);
  numeric  
 ----------
  69.09318
 (1 row)
 
-select ('(0,60)'::point <@> '(1,60)'::point)::numeric(20,5);
+SELECT ('(0,60)'::point <@> '(1,60)'::point)::numeric(20,5);
  numeric  
 ----------
  34.54626
 (1 row)
 
-select ('(0,60)'::point <@> '(0,61)'::point)::numeric(20,5);
+SELECT ('(0,60)'::point <@> '(0,61)'::point)::numeric(20,5);
  numeric  
 ----------
  69.09318
 (1 row)
 
-select ('(87.6,41.8)'::point <@> '(106.7,35.1)'::point)::numeric(20,5);
+SELECT ('(87.6,41.8)'::point <@> '(106.7,35.1)'::point)::numeric(20,5);
   numeric   
 ------------
  1129.18983
 (1 row)
 
-select (('(87.6,41.8)'::point <@> '(106.7,35.1)'::point)*5280.*12.*2.54/100.)::numeric(20,5);
+SELECT (('(87.6,41.8)'::point <@> '(106.7,35.1)'::point)*5280.*12.*2.54/100.)::numeric(20,5);
     numeric    
 ---------------
  1817254.87730
index 5703ee00277b3a3be0b25d08b609111ff1b61f14..d8c481beccb466922fca5829b849a462e2958358 100644 (file)
@@ -7,6 +7,7 @@
 -- does not depend on contents of earthdistance.sql or cube.sql.
 --
 \set ECHO none
+SET autocommit TO 'on';
 \i earthdistance.sql
 \set ECHO all
 
 -- Test getting the distance between two points using geo_distance.
 --
 
-select geo_distance('(0,0)'::point,'(0,0)'::point)::numeric(20,5);
-select geo_distance('(0,0)'::point,'(180,0)'::point)::numeric(20,5);
-select geo_distance('(0,0)'::point,'(0,90)'::point)::numeric(20,5);
-select geo_distance('(0,0)'::point,'(90,0)'::point)::numeric(20,5);
-select geo_distance('(0,0)'::point,'(1,0)'::point)::numeric(20,5);
-select geo_distance('(0,0)'::point,'(0,1)'::point)::numeric(20,5);
-select geo_distance('(0,30)'::point,'(1,30)'::point)::numeric(20,5);
-select geo_distance('(0,30)'::point,'(0,31)'::point)::numeric(20,5);
-select geo_distance('(0,60)'::point,'(1,60)'::point)::numeric(20,5);
-select geo_distance('(0,60)'::point,'(0,61)'::point)::numeric(20,5);
-select geo_distance('(87.6,41.8)'::point,'(106.7,35.1)'::point)::numeric(20,5);
-select (geo_distance('(87.6,41.8)'::point,'(106.7,35.1)'::point)*5280.*12.*2.54/100.)::numeric(20,5);
+SELECT geo_distance('(0,0)'::point,'(0,0)'::point)::numeric(20,5);
+SELECT geo_distance('(0,0)'::point,'(180,0)'::point)::numeric(20,5);
+SELECT geo_distance('(0,0)'::point,'(0,90)'::point)::numeric(20,5);
+SELECT geo_distance('(0,0)'::point,'(90,0)'::point)::numeric(20,5);
+SELECT geo_distance('(0,0)'::point,'(1,0)'::point)::numeric(20,5);
+SELECT geo_distance('(0,0)'::point,'(0,1)'::point)::numeric(20,5);
+SELECT geo_distance('(0,30)'::point,'(1,30)'::point)::numeric(20,5);
+SELECT geo_distance('(0,30)'::point,'(0,31)'::point)::numeric(20,5);
+SELECT geo_distance('(0,60)'::point,'(1,60)'::point)::numeric(20,5);
+SELECT geo_distance('(0,60)'::point,'(0,61)'::point)::numeric(20,5);
+SELECT geo_distance('(87.6,41.8)'::point,'(106.7,35.1)'::point)::numeric(20,5);
+SELECT (geo_distance('(87.6,41.8)'::point,'(106.7,35.1)'::point)*5280.*12.*2.54/100.)::numeric(20,5);
 
 --
 -- Test getting the distance between two points using the <@> operator.
 --
 
-select ('(0,0)'::point <@> '(0,0)'::point)::numeric(20,5);
-select ('(0,0)'::point <@> '(180,0)'::point)::numeric(20,5);
-select ('(0,0)'::point <@> '(0,90)'::point)::numeric(20,5);
-select ('(0,0)'::point <@> '(90,0)'::point)::numeric(20,5);
-select ('(0,0)'::point <@> '(1,0)'::point)::numeric(20,5);
-select ('(0,0)'::point <@> '(0,1)'::point)::numeric(20,5);
-select ('(0,30)'::point <@> '(1,30)'::point)::numeric(20,5);
-select ('(0,30)'::point <@> '(0,31)'::point)::numeric(20,5);
-select ('(0,60)'::point <@> '(1,60)'::point)::numeric(20,5);
-select ('(0,60)'::point <@> '(0,61)'::point)::numeric(20,5);
-select ('(87.6,41.8)'::point <@> '(106.7,35.1)'::point)::numeric(20,5);
-select (('(87.6,41.8)'::point <@> '(106.7,35.1)'::point)*5280.*12.*2.54/100.)::numeric(20,5);
+SELECT ('(0,0)'::point <@> '(0,0)'::point)::numeric(20,5);
+SELECT ('(0,0)'::point <@> '(180,0)'::point)::numeric(20,5);
+SELECT ('(0,0)'::point <@> '(0,90)'::point)::numeric(20,5);
+SELECT ('(0,0)'::point <@> '(90,0)'::point)::numeric(20,5);
+SELECT ('(0,0)'::point <@> '(1,0)'::point)::numeric(20,5);
+SELECT ('(0,0)'::point <@> '(0,1)'::point)::numeric(20,5);
+SELECT ('(0,30)'::point <@> '(1,30)'::point)::numeric(20,5);
+SELECT ('(0,30)'::point <@> '(0,31)'::point)::numeric(20,5);
+SELECT ('(0,60)'::point <@> '(1,60)'::point)::numeric(20,5);
+SELECT ('(0,60)'::point <@> '(0,61)'::point)::numeric(20,5);
+SELECT ('(87.6,41.8)'::point <@> '(106.7,35.1)'::point)::numeric(20,5);
+SELECT (('(87.6,41.8)'::point <@> '(106.7,35.1)'::point)*5280.*12.*2.54/100.)::numeric(20,5);
index a829a58190af802c58cb57d4aed2d1e272d4a439..464660bd13c6b772e3ea7832e69c933b20f007f6 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright 2002 by PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/contrib/findoidjoins/Attic/findoidjoins.c,v 1.18 2002/09/05 19:57:32 tgl Exp $
+ * $Header: /cvsroot/pgsql/contrib/findoidjoins/Attic/findoidjoins.c,v 1.19 2002/10/18 18:41:20 momjian Exp $
  */
 #include "postgres_fe.h"
 
@@ -48,6 +48,8 @@ main(int argc, char **argv)
        resetPQExpBuffer(&sql);
 
        appendPQExpBuffer(&sql, "%s",
+               "SET search_path = public;"
+               "SET autocommit TO 'on';"
                "SELECT c.relname, (SELECT nspname FROM "
                "pg_catalog.pg_namespace n WHERE n.oid = c.relnamespace) AS nspname "
                "FROM pg_catalog.pg_class c "
index 5b660ed815f5568b14ca35344a625e6a6bc0620a..60c7d97c6bda20bf097d988a09a63f5ff6b3d316 100644 (file)
@@ -166,6 +166,8 @@ sub main {
                return 1;
        }
 
+       PQexec($PG_CONN, "SET search_path = public");
+       PQexec($PG_CONN, "SET autocommit TO 'on'");
        PQexec($PG_CONN, "begin");
 
        $query = "declare C cursor for select (\"";
index f52a358385ce7e9b0f94abc2b3c815a08d280410..d109aa9a107de84514d4029d6a1423edbe5c6c1c 100644 (file)
@@ -1,5 +1,8 @@
+-- Adjust this setting to control where the objects get created.
+SET search_path = public;
+
+SET autocommit TO 'on';
+
 CREATE OR REPLACE FUNCTION fti() RETURNS trigger AS
        'MODULE_PATHNAME', 'fti'
        LANGUAGE 'C' VOLATILE CALLED ON NULL INPUT;
-
-GRANT EXECUTE ON FUNCTION fti() TO PUBLIC;
index 02ad6ee602a82727ba7359949d7ed52207b86626..5a330546ab02a2b02bad6fe3bdd7049d5d46a6a4 100644 (file)
@@ -1 +1,6 @@
+-- Adjust this setting to control where the objects get created.
+SET search_path = public;
+
+SET autocommit TO 'on';
+
 DROP FUNCTION fti() CASCADE; 
index 0be715bac7e182b79b4a5e9a109c149d3fd23d58..3dc2888f40a7e5ba2f86e08577f4678d8190aa37 100644 (file)
@@ -1,16 +1,22 @@
-CREATE FUNCTION levenshtein (text,text) RETURNS int
-  AS 'MODULE_PATHNAME','levenshtein' LANGUAGE 'c' with (iscachable, isstrict);
+-- Adjust this setting to control where the objects get created.
+SET search_path = public;
 
-CREATE FUNCTION metaphone (text,int) RETURNS text
-  AS 'MODULE_PATHNAME','metaphone' LANGUAGE 'c' with (iscachable, isstrict);
+SET autocommit TO 'on';
+
+CREATE FUNCTION levenshtein (text,text)
+RETURNS int
+AS 'MODULE_PATHNAME','levenshtein'
+LANGUAGE 'C' WITH (iscachable, isstrict);
+
+CREATE FUNCTION metaphone (text,int)
+RETURNS text
+AS 'MODULE_PATHNAME','metaphone'
+LANGUAGE 'C' WITH (iscachable, isstrict);
 
 CREATE FUNCTION soundex(text) RETURNS text
-  AS 'MODULE_PATHNAME', 'soundex' LANGUAGE 'c' with (iscachable, isstrict);
+AS 'MODULE_PATHNAME', 'soundex'
+LANGUAGE 'C' WITH (iscachable, isstrict);
 
 CREATE FUNCTION text_soundex(text) RETURNS text
-  AS 'MODULE_PATHNAME', 'soundex' LANGUAGE 'c';
-
-GRANT EXECUTE ON FUNCTION levenshtein (text,text) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION metaphone (text,int) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION soundex(text) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION text_soundex(text) TO PUBLIC;
+AS 'MODULE_PATHNAME', 'soundex'
+LANGUAGE 'C';
index fcba720f32d849ab6a6c7b31c7b87111b146e939..1d5f83e682b14f0c26f55d6cf391898fd4acfafc 100644 (file)
@@ -1,28 +1,25 @@
--- Drop functions
-drop aggregate int_array_aggregate(int4);
-drop function int_agg_state (int4, int4);
-drop function int_agg_final_array (int4);
-drop function int_array_enum (int4[]);
+-- Adjust this setting to control where the objects get created.
+SET search_path = public;
 
+SET autocommit TO 'on';
 
 -- Internal function for the aggregate
 -- Is called for each item in an aggregation
-create function int_agg_state (int4, int4)
-       returns int4
-       as 'MODULE_PATHNAME','int_agg_state'
-       language 'c';
+CREATE OR REPLACE FUNCTION int_agg_state (int4, int4)
+RETURNS int4
+AS 'MODULE_PATHNAME','int_agg_state'
+LANGUAGE 'C';
 
 -- Internal function for the aggregate
 -- Is called at the end of the aggregation, and returns an array.
-create function int_agg_final_array (int4)
-       returns int4[]
-       as 'MODULE_PATHNAME','int_agg_final_array'
-       language 'c';
+CREATE OR REPLACE FUNCTION int_agg_final_array (int4)
+RETURNS int4[]
+AS 'MODULE_PATHNAME','int_agg_final_array'
+LANGUAGE 'C';
 
 -- The aggration funcion.
 -- uses the above functions to create an array of integers from an aggregation.
-create aggregate int_array_aggregate
-(
+CREATE OR REPLACE AGGREGATE int_array_aggregate (
        BASETYPE = int4,
        SFUNC = int_agg_state,
        STYPE = int4,
@@ -33,8 +30,7 @@ create aggregate int_array_aggregate
 -- The enumeration function
 -- returns each element in a one dimentional integer array
 -- as a row.
-create function int_array_enum(int4[])
-       returns setof integer
-       as 'MODULE_PATHNAME','int_enum'
-       language 'c';
-
+CREATE OR REPLACE FUNCTION int_array_enum(int4[])
+RETURNS setof integer
+AS 'MODULE_PATHNAME','int_enum'
+LANGUAGE 'C';
index 7f9a8082ca479c3de10c56fd583dde4ebb6b3cb7..c75916507f64af17b7b5aaed6db2063174c62819 100644 (file)
@@ -1,53 +1,67 @@
+--
 -- Create the user-defined type for the 1-D integer arrays (_int4)
--- 
-BEGIN TRANSACTION;
+--
 
 -- Adjust this setting to control where the operators, functions, and
 -- opclasses get created.
 SET search_path = public;
 
+SET autocommit TO 'on';
+
 -- Query type
 CREATE FUNCTION bqarr_in(cstring)
 RETURNS query_int
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
+LANGUAGE 'C' WITH (isstrict);
 
 CREATE FUNCTION bqarr_out(query_int)
 RETURNS cstring
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
+LANGUAGE 'C' WITH (isstrict);
 
 CREATE TYPE query_int (
-internallength = -1,
-input = bqarr_in,
-output = bqarr_out
+       INTERNALLENGTH = -1,
+       INPUT = bqarr_in,
+       OUTPUT = bqarr_out
 );
 
 --only for debug
 CREATE FUNCTION querytree(query_int)
 RETURNS text
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
+LANGUAGE 'C' WITH (isstrict);
 
 
-CREATE FUNCTION boolop(_int4, query_int) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION boolop(_int4, query_int)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isstrict);
 
 COMMENT ON FUNCTION boolop(_int4, query_int) IS 'boolean operation with array';
 
-CREATE FUNCTION rboolop(query_int, _int4) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION rboolop(query_int, _int4)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isstrict);
 
 COMMENT ON FUNCTION rboolop(query_int, _int4) IS 'boolean operation with array';
 
 CREATE OPERATOR @@ (
-   LEFTARG = _int4, RIGHTARG = query_int, PROCEDURE = boolop,
-   COMMUTATOR = '~~', RESTRICT = contsel, JOIN = contjoinsel
+       LEFTARG = _int4,
+       RIGHTARG = query_int,
+       PROCEDURE = boolop,
+       COMMUTATOR = '~~',
+       RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR ~~ (
-   LEFTARG = query_int, RIGHTARG = _int4, PROCEDURE = rboolop,
-   COMMUTATOR = '@@', RESTRICT = contsel, JOIN = contjoinsel
+       LEFTARG = query_int,
+       RIGHTARG = _int4,
+       PROCEDURE = rboolop,
+       COMMUTATOR = '@@',
+       RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 
@@ -57,175 +71,279 @@ CREATE OPERATOR ~~ (
 
 -- Comparison methods
 
-CREATE FUNCTION _int_contains(_int4, _int4) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION _int_contains(_int4, _int4)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isstrict);
 
 COMMENT ON FUNCTION _int_contains(_int4, _int4) IS 'contains';
 
-CREATE FUNCTION _int_contained(_int4, _int4) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION _int_contained(_int4, _int4)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isstrict);
 
 COMMENT ON FUNCTION _int_contained(_int4, _int4) IS 'contained in';
 
-CREATE FUNCTION _int_overlap(_int4, _int4) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION _int_overlap(_int4, _int4)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isstrict);
 
 COMMENT ON FUNCTION _int_overlap(_int4, _int4) IS 'overlaps';
 
-CREATE FUNCTION _int_same(_int4, _int4) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION _int_same(_int4, _int4)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isstrict);
 
 COMMENT ON FUNCTION _int_same(_int4, _int4) IS 'same as';
 
-CREATE FUNCTION _int_different(_int4, _int4) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION _int_different(_int4, _int4)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isstrict);
 
 COMMENT ON FUNCTION _int_different(_int4, _int4) IS 'different';
 
 -- support routines for indexing
 
-CREATE FUNCTION _int_union(_int4, _int4) RETURNS _int4
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION _int_union(_int4, _int4)
+RETURNS _int4
+AS 'MODULE_PATHNAME' LANGUAGE 'C' WITH (isstrict);
 
-CREATE FUNCTION _int_inter(_int4, _int4) RETURNS _int4
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION _int_inter(_int4, _int4)
+RETURNS _int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isstrict);
 
 --
 -- OPERATORS
 --
 
 CREATE OPERATOR && (
-   LEFTARG = _int4, RIGHTARG = _int4, PROCEDURE = _int_overlap,
-   COMMUTATOR = '&&',
-   RESTRICT = contsel, JOIN = contjoinsel
+       LEFTARG = _int4,
+       RIGHTARG = _int4,
+       PROCEDURE = _int_overlap,
+       COMMUTATOR = '&&',
+       RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 --CREATE OPERATOR = (
---   LEFTARG = _int4, RIGHTARG = _int4, PROCEDURE = _int_same,
---   COMMUTATOR = '=', NEGATOR = '<>',
---   RESTRICT = eqsel, JOIN = eqjoinsel,
---   SORT1 = '<', SORT2 = '<'
+--     LEFTARG = _int4,
+--     RIGHTARG = _int4,
+--     PROCEDURE = _int_same,
+--     COMMUTATOR = '=',
+--     NEGATOR = '<>',
+--     RESTRICT = eqsel,
+--     JOIN = eqjoinsel,
+--     SORT1 = '<',
+--     SORT2 = '<'
 --);
 
 CREATE OPERATOR <> (
-   LEFTARG = _int4, RIGHTARG = _int4, PROCEDURE = _int_different,
-   COMMUTATOR = '<>', NEGATOR = '=',
-   RESTRICT = neqsel, JOIN = neqjoinsel
+       LEFTARG = _int4,
+       RIGHTARG = _int4,
+       PROCEDURE = _int_different,
+       COMMUTATOR = '<>',
+       NEGATOR = '=',
+       RESTRICT = neqsel,
+       JOIN = neqjoinsel
 );
 
 CREATE OPERATOR @ (
-   LEFTARG = _int4, RIGHTARG = _int4, PROCEDURE = _int_contains,
-   COMMUTATOR = '~', RESTRICT = contsel, JOIN = contjoinsel
+       LEFTARG = _int4,
+       RIGHTARG = _int4,
+       PROCEDURE = _int_contains,
+       COMMUTATOR = '~',
+       RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR ~ (
-   LEFTARG = _int4, RIGHTARG = _int4, PROCEDURE = _int_contained,
-   COMMUTATOR = '@', RESTRICT = contsel, JOIN = contjoinsel
+       LEFTARG = _int4,
+       RIGHTARG = _int4,
+       PROCEDURE = _int_contained,
+       COMMUTATOR = '@',
+       RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 --------------
-CREATE FUNCTION intset(int4) RETURNS _int4
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' WITH (isStrict, isCachable);
+CREATE FUNCTION intset(int4)
+RETURNS _int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isStrict, isCachable);
+
+CREATE FUNCTION icount(_int4)
+RETURNS int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isStrict, isCachable);
 
-CREATE FUNCTION icount(_int4) RETURNS int4
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' WITH (isStrict, isCachable);
 CREATE OPERATOR # (
-   RIGHTARG = _int4, PROCEDURE = icount
+       RIGHTARG = _int4,
+       PROCEDURE = icount
 );
 
-CREATE FUNCTION sort(_int4, text) RETURNS _int4
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' WITH (isStrict, isCachable);
+CREATE FUNCTION sort(_int4, text)
+RETURNS _int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isStrict, isCachable);
+
+CREATE FUNCTION sort(_int4)
+RETURNS _int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isStrict, isCachable);
 
-CREATE FUNCTION sort(_int4) RETURNS _int4
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' WITH (isStrict, isCachable);
+CREATE FUNCTION sort_asc(_int4)
+RETURNS _int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isStrict, isCachable);
 
-CREATE FUNCTION sort_asc(_int4) RETURNS _int4
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' WITH (isStrict, isCachable);
+CREATE FUNCTION sort_desc(_int4)
+RETURNS _int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isStrict, isCachable);
 
-CREATE FUNCTION sort_desc(_int4) RETURNS _int4
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' WITH (isStrict, isCachable);
+CREATE FUNCTION uniq(_int4)
+RETURNS _int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isStrict, isCachable);
 
-CREATE FUNCTION uniq(_int4) RETURNS _int4
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' WITH (isStrict, isCachable);
+CREATE FUNCTION idx(_int4, int4)
+RETURNS int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isStrict, isCachable);
 
-CREATE FUNCTION idx(_int4, int4) RETURNS int4
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' WITH (isStrict, isCachable);
 CREATE OPERATOR # (
-   LEFTARG = _int4, RIGHTARG = int4, PROCEDURE = idx
+       LEFTARG = _int4,
+       RIGHTARG = int4,
+       PROCEDURE = idx
 );
 
-CREATE FUNCTION subarray(_int4, int4, int4) RETURNS _int4
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' WITH (isStrict, isCachable);
+CREATE FUNCTION subarray(_int4, int4, int4)
+RETURNS _int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isStrict, isCachable);
+
+CREATE FUNCTION subarray(_int4, int4)
+RETURNS _int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isStrict, isCachable);
 
-CREATE FUNCTION subarray(_int4, int4) RETURNS _int4
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' WITH (isStrict, isCachable);
+CREATE FUNCTION intarray_push_elem(_int4, int4)
+RETURNS _int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isStrict, isCachable);
 
-CREATE FUNCTION intarray_push_elem(_int4, int4) RETURNS _int4
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' WITH (isStrict, isCachable);
 CREATE OPERATOR + (
-   LEFTARG = _int4, RIGHTARG = int4, PROCEDURE = intarray_push_elem
+       LEFTARG = _int4,
+       RIGHTARG = int4,
+       PROCEDURE = intarray_push_elem
 );
 
-CREATE FUNCTION intarray_push_array(_int4, _int4) RETURNS _int4
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' WITH (isStrict, isCachable);
+CREATE FUNCTION intarray_push_array(_int4, _int4)
+RETURNS _int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isStrict, isCachable);
+
 CREATE OPERATOR + (
-   LEFTARG = _int4, RIGHTARG = _int4, COMMUTATOR = +, PROCEDURE = intarray_push_array
+       LEFTARG = _int4,
+       RIGHTARG = _int4,
+       COMMUTATOR = +,
+       PROCEDURE = intarray_push_array
 );
 
-CREATE FUNCTION intarray_del_elem(_int4, int4) RETURNS _int4
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' WITH (isStrict, isCachable);
+CREATE FUNCTION intarray_del_elem(_int4, int4)
+RETURNS _int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isStrict, isCachable);
+
 CREATE OPERATOR - (
-   LEFTARG = _int4, RIGHTARG = int4, PROCEDURE = intarray_del_elem
+       LEFTARG = _int4,
+       RIGHTARG = int4,
+       PROCEDURE = intarray_del_elem
 );
 
-CREATE FUNCTION intset_union_elem(_int4, int4) RETURNS _int4
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' WITH (isStrict, isCachable);
+CREATE FUNCTION intset_union_elem(_int4, int4)
+RETURNS _int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isStrict, isCachable);
+
 CREATE OPERATOR | (
-   LEFTARG = _int4, RIGHTARG = int4, PROCEDURE = intset_union_elem
+       LEFTARG = _int4,
+       RIGHTARG = int4,
+       PROCEDURE = intset_union_elem
 );
 
 CREATE OPERATOR | (
-   LEFTARG = _int4, RIGHTARG = _int4, COMMUTATOR = |, PROCEDURE = _int_union
+       LEFTARG = _int4,
+       RIGHTARG = _int4,
+       COMMUTATOR = |,
+       PROCEDURE = _int_union
 );
 
-CREATE FUNCTION intset_subtract(_int4, _int4) RETURNS _int4
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' WITH (isStrict, isCachable);
+CREATE FUNCTION intset_subtract(_int4, _int4)
+RETURNS _int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isStrict, isCachable);
+
 CREATE OPERATOR - (
-   LEFTARG = _int4, RIGHTARG = _int4, PROCEDURE = intset_subtract
+       LEFTARG = _int4,
+       RIGHTARG = _int4,
+       PROCEDURE = intset_subtract
 );
 
 CREATE OPERATOR & (
-   LEFTARG = _int4, RIGHTARG = _int4, COMMUTATOR = &, PROCEDURE = _int_inter
+       LEFTARG = _int4,
+       RIGHTARG = _int4,
+       COMMUTATOR = &,
+       PROCEDURE = _int_inter
 );
 --------------
 
 -- define the GiST support methods
-CREATE FUNCTION g_int_consistent(internal,_int4,int4) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c';
+CREATE FUNCTION g_int_consistent(internal,_int4,int4)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-CREATE FUNCTION g_int_compress(internal) RETURNS internal 
-       AS 'MODULE_PATHNAME' LANGUAGE 'c';
+CREATE FUNCTION g_int_compress(internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-CREATE FUNCTION g_int_decompress(internal) RETURNS internal 
-       AS 'MODULE_PATHNAME' LANGUAGE 'c';
+CREATE FUNCTION g_int_decompress(internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-CREATE FUNCTION g_int_penalty(internal,internal,internal) RETURNS internal
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION g_int_penalty(internal,internal,internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isstrict);
 
-CREATE FUNCTION g_int_picksplit(internal, internal) RETURNS internal
-       AS 'MODULE_PATHNAME' LANGUAGE 'c';
+CREATE FUNCTION g_int_picksplit(internal, internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-CREATE FUNCTION g_int_union(bytea, internal) RETURNS _int4 
-       AS 'MODULE_PATHNAME' LANGUAGE 'c';
+CREATE FUNCTION g_int_union(bytea, internal)
+RETURNS _int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-CREATE FUNCTION g_int_same(_int4, _int4, internal) RETURNS internal 
-       AS 'MODULE_PATHNAME' LANGUAGE 'c';
+CREATE FUNCTION g_int_same(_int4, _int4, internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
 
 -- Create the operator class for indexing
 
 CREATE OPERATOR CLASS gist__int_ops
-    DEFAULT FOR TYPE _int4 USING gist AS
+DEFAULT FOR TYPE _int4 USING gist AS
        OPERATOR        3       &&,
        OPERATOR        6       =       RECHECK,
        OPERATOR        7       @,
@@ -244,31 +362,46 @@ CREATE OPERATOR CLASS gist__int_ops
 -- intbig
 ---------------------------------------------
 -- define the GiST support methods
-CREATE FUNCTION g_intbig_consistent(internal,_int4,int4) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c';
+CREATE FUNCTION g_intbig_consistent(internal,_int4,int4)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-CREATE FUNCTION g_intbig_compress(internal) RETURNS internal 
-       AS 'MODULE_PATHNAME' LANGUAGE 'c';
+CREATE FUNCTION g_intbig_compress(internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-CREATE FUNCTION g_intbig_decompress(internal) RETURNS internal 
-       AS 'MODULE_PATHNAME' LANGUAGE 'c';
+CREATE FUNCTION g_intbig_decompress(internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-CREATE FUNCTION g_intbig_penalty(internal,internal,internal) RETURNS internal
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION g_intbig_penalty(internal,internal,internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isstrict);
 
-CREATE FUNCTION g_intbig_picksplit(internal, internal) RETURNS internal
-       AS 'MODULE_PATHNAME' LANGUAGE 'c';
+CREATE FUNCTION g_intbig_picksplit(internal, internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-CREATE FUNCTION g_intbig_union(bytea, internal) RETURNS _int4 
-       AS 'MODULE_PATHNAME' LANGUAGE 'c';
+CREATE FUNCTION g_intbig_union(bytea, internal)
+RETURNS _int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-CREATE FUNCTION g_intbig_same(_int4, _int4, internal) RETURNS internal 
-       AS 'MODULE_PATHNAME' LANGUAGE 'c';
+CREATE FUNCTION g_intbig_same(_int4, _int4, internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
 -- register the opclass for indexing (not as default)
 
 CREATE OPERATOR CLASS gist__intbig_ops
-    FOR TYPE _int4 USING gist AS
+FOR TYPE _int4 USING gist
+AS
        OPERATOR        3       &&      RECHECK,
        OPERATOR        6       =       RECHECK,
        OPERATOR        7       @       RECHECK,
@@ -281,5 +414,3 @@ CREATE OPERATOR CLASS gist__intbig_ops
        FUNCTION        5       g_intbig_penalty (internal, internal, internal),
        FUNCTION        6       g_intbig_picksplit (internal, internal),
        FUNCTION        7       g_intbig_same (_int4, _int4, internal);
-
-END TRANSACTION;
index f860608b128a52a1394b0a3ce3d754195b31493b..b86c9bca0c414c43c1fbf26ba1b12e42ec71a7b4 100644 (file)
 -- does not depend on contents of seg.sql.
 --
 \set ECHO none
-psql:_int.sql:13: WARNING:  ProcedureCreate: type query_int is not yet defined
-psql:_int.sql:18: WARNING:  Argument type "query_int" is only a shell
-select intset(1234);
+psql:_int.sql:15: WARNING:  ProcedureCreate: type query_int is not yet defined
+psql:_int.sql:20: WARNING:  Argument type "query_int" is only a shell
+SELECT intset(1234);
  intset 
 --------
  {1234}
 (1 row)
 
-select icount('{1234234,234234}');
+SELECT icount('{1234234,234234}');
  icount 
 --------
       2
 (1 row)
 
-select sort('{1234234,-30,234234}');
+SELECT sort('{1234234,-30,234234}');
          sort         
 ----------------------
  {-30,234234,1234234}
 (1 row)
 
-select sort('{1234234,-30,234234}','asc');
+SELECT sort('{1234234,-30,234234}','asc');
          sort         
 ----------------------
  {-30,234234,1234234}
 (1 row)
 
-select sort('{1234234,-30,234234}','desc');
+SELECT sort('{1234234,-30,234234}','desc');
          sort         
 ----------------------
  {1234234,234234,-30}
 (1 row)
 
-select sort_asc('{1234234,-30,234234}');
+SELECT sort_asc('{1234234,-30,234234}');
        sort_asc       
 ----------------------
  {-30,234234,1234234}
 (1 row)
 
-select sort_desc('{1234234,-30,234234}');
+SELECT sort_desc('{1234234,-30,234234}');
       sort_desc       
 ----------------------
  {1234234,234234,-30}
 (1 row)
 
-select uniq('{1234234,-30,-30,234234,-30}');
+SELECT uniq('{1234234,-30,-30,234234,-30}');
            uniq           
 --------------------------
  {1234234,-30,234234,-30}
 (1 row)
 
-select uniq(sort_asc('{1234234,-30,-30,234234,-30}'));
+SELECT uniq(sort_asc('{1234234,-30,-30,234234,-30}'));
          uniq         
 ----------------------
  {-30,234234,1234234}
 (1 row)
 
-select idx('{1234234,-30,-30,234234,-30}',-30);
+SELECT idx('{1234234,-30,-30,234234,-30}',-30);
  idx 
 -----
    2
 (1 row)
 
-select subarray('{1234234,-30,-30,234234,-30}',2,3);
+SELECT subarray('{1234234,-30,-30,234234,-30}',2,3);
      subarray     
 ------------------
  {-30,-30,234234}
 (1 row)
 
-select subarray('{1234234,-30,-30,234234,-30}',-1,1);
+SELECT subarray('{1234234,-30,-30,234234,-30}',-1,1);
  subarray 
 ----------
  {-30}
 (1 row)
 
-select subarray('{1234234,-30,-30,234234,-30}',0,-1);
+SELECT subarray('{1234234,-30,-30,234234,-30}',0,-1);
          subarray         
 --------------------------
  {1234234,-30,-30,234234}
 (1 row)
 
-select #'{1234234,234234}'::int[];
+SELECT #'{1234234,234234}'::int[];
  ?column? 
 ----------
         2
 (1 row)
 
-select '{123,623,445}'::int[] + 1245;
+SELECT '{123,623,445}'::int[] + 1245;
       ?column?      
 --------------------
  {123,623,445,1245}
 (1 row)
 
-select '{123,623,445}'::int[] + 445;
+SELECT '{123,623,445}'::int[] + 445;
      ?column?      
 -------------------
  {123,623,445,445}
 (1 row)
 
-select '{123,623,445}'::int[] + '{1245,87,445}';
+SELECT '{123,623,445}'::int[] + '{1245,87,445}';
          ?column?          
 ---------------------------
  {123,623,445,1245,87,445}
 (1 row)
 
-select '{123,623,445}'::int[] - 623;
+SELECT '{123,623,445}'::int[] - 623;
  ?column?  
 -----------
  {123,445}
 (1 row)
 
-select '{123,623,445}'::int[] - '{1623,623}';
+SELECT '{123,623,445}'::int[] - '{1623,623}';
  ?column?  
 -----------
  {123,445}
 (1 row)
 
-select '{123,623,445}'::int[] | 623;
+SELECT '{123,623,445}'::int[] | 623;
    ?column?    
 ---------------
  {123,445,623}
 (1 row)
 
-select '{123,623,445}'::int[] | 1623;
+SELECT '{123,623,445}'::int[] | 1623;
       ?column?      
 --------------------
  {123,445,623,1623}
 (1 row)
 
-select '{123,623,445}'::int[] | '{1623,623}';
+SELECT '{123,623,445}'::int[] | '{1623,623}';
       ?column?      
 --------------------
  {123,445,623,1623}
 (1 row)
 
-select '{123,623,445}'::int[] & '{1623,623}';
+SELECT '{123,623,445}'::int[] & '{1623,623}';
  ?column? 
 ----------
  {623}
 (1 row)
 
 --test query_int
-select '1'::query_int;
+SELECT '1'::query_int;
  query_int 
 -----------
  1
 (1 row)
 
-select ' 1'::query_int;
+SELECT ' 1'::query_int;
  query_int 
 -----------
  1
 (1 row)
 
-select '1 '::query_int;
+SELECT '1 '::query_int;
  query_int 
 -----------
  1
 (1 row)
 
-select ' 1 '::query_int;
+SELECT ' 1 '::query_int;
  query_int 
 -----------
  1
 (1 row)
 
-select ' ! 1 '::query_int;
+SELECT ' ! 1 '::query_int;
  query_int 
 -----------
  !1
 (1 row)
 
-select '!1'::query_int;
+SELECT '!1'::query_int;
  query_int 
 -----------
  !1
 (1 row)
 
-select '1|2'::query_int;
+SELECT '1|2'::query_int;
  query_int 
 -----------
  1 | 2
 (1 row)
 
-select '1|!2'::query_int;
+SELECT '1|!2'::query_int;
  query_int 
 -----------
  1 | !2
 (1 row)
 
-select '!1|2'::query_int;
+SELECT '!1|2'::query_int;
  query_int 
 -----------
  !1 | 2
 (1 row)
 
-select '!1|!2'::query_int;
+SELECT '!1|!2'::query_int;
  query_int 
 -----------
  !1 | !2
 (1 row)
 
-select '!(!1|!2)'::query_int;
+SELECT '!(!1|!2)'::query_int;
   query_int   
 --------------
  !( !1 | !2 )
 (1 row)
 
-select '!(!1|2)'::query_int;
+SELECT '!(!1|2)'::query_int;
   query_int  
 -------------
  !( !1 | 2 )
 (1 row)
 
-select '!(1|!2)'::query_int;
+SELECT '!(1|!2)'::query_int;
   query_int  
 -------------
  !( 1 | !2 )
 (1 row)
 
-select '!(1|2)'::query_int;
+SELECT '!(1|2)'::query_int;
  query_int  
 ------------
  !( 1 | 2 )
 (1 row)
 
-select '1&2'::query_int;
+SELECT '1&2'::query_int;
  query_int 
 -----------
  1 & 2
 (1 row)
 
-select '!1&2'::query_int;
+SELECT '!1&2'::query_int;
  query_int 
 -----------
  !1 & 2
 (1 row)
 
-select '1&!2'::query_int;
+SELECT '1&!2'::query_int;
  query_int 
 -----------
  1 & !2
 (1 row)
 
-select '!1&!2'::query_int;
+SELECT '!1&!2'::query_int;
  query_int 
 -----------
  !1 & !2
 (1 row)
 
-select '(1&2)'::query_int;
+SELECT '(1&2)'::query_int;
  query_int 
 -----------
  1 & 2
 (1 row)
 
-select '1&(2)'::query_int;
+SELECT '1&(2)'::query_int;
  query_int 
 -----------
  1 & 2
 (1 row)
 
-select '!(1)&2'::query_int;
+SELECT '!(1)&2'::query_int;
  query_int 
 -----------
  !1 & 2
 (1 row)
 
-select '!(1&2)'::query_int;
+SELECT '!(1&2)'::query_int;
  query_int  
 ------------
  !( 1 & 2 )
 (1 row)
 
-select '1|2&3'::query_int;
+SELECT '1|2&3'::query_int;
  query_int 
 -----------
  1 | 2 & 3
 (1 row)
 
-select '1|(2&3)'::query_int;
+SELECT '1|(2&3)'::query_int;
  query_int 
 -----------
  1 | 2 & 3
 (1 row)
 
-select '(1|2)&3'::query_int;
+SELECT '(1|2)&3'::query_int;
    query_int   
 ---------------
  ( 1 | 2 ) & 3
 (1 row)
 
-select '1|2&!3'::query_int;
+SELECT '1|2&!3'::query_int;
  query_int  
 ------------
  1 | 2 & !3
 (1 row)
 
-select '1|!2&3'::query_int;
+SELECT '1|!2&3'::query_int;
  query_int  
 ------------
  1 | !2 & 3
 (1 row)
 
-select '!1|2&3'::query_int;
+SELECT '!1|2&3'::query_int;
  query_int  
 ------------
  !1 | 2 & 3
 (1 row)
 
-select '!1|(2&3)'::query_int;
+SELECT '!1|(2&3)'::query_int;
  query_int  
 ------------
  !1 | 2 & 3
 (1 row)
 
-select '!(1|2)&3'::query_int;
+SELECT '!(1|2)&3'::query_int;
    query_int    
 ----------------
  !( 1 | 2 ) & 3
 (1 row)
 
-select '(!1|2)&3'::query_int;
+SELECT '(!1|2)&3'::query_int;
    query_int    
 ----------------
  ( !1 | 2 ) & 3
 (1 row)
 
-select '1|(2|(4|(5|6)))'::query_int;
+SELECT '1|(2|(4|(5|6)))'::query_int;
            query_int           
 -------------------------------
  1 | ( 2 | ( 4 | ( 5 | 6 ) ) )
 (1 row)
 
-select '1|2|4|5|6'::query_int;
+SELECT '1|2|4|5|6'::query_int;
            query_int           
 -------------------------------
  ( ( ( 1 | 2 ) | 4 ) | 5 ) | 6
 (1 row)
 
-select '1&(2&(4&(5&6)))'::query_int;
+SELECT '1&(2&(4&(5&6)))'::query_int;
      query_int     
 -------------------
  1 & 2 & 4 & 5 & 6
 (1 row)
 
-select '1&2&4&5&6'::query_int;
+SELECT '1&2&4&5&6'::query_int;
      query_int     
 -------------------
  1 & 2 & 4 & 5 & 6
 (1 row)
 
-select '1&(2&(4&(5|6)))'::query_int;
+SELECT '1&(2&(4&(5|6)))'::query_int;
        query_int       
 -----------------------
  1 & 2 & 4 & ( 5 | 6 )
 (1 row)
 
-select '1&(2&(4&(5|!6)))'::query_int;
+SELECT '1&(2&(4&(5|!6)))'::query_int;
        query_int        
 ------------------------
  1 & 2 & 4 & ( 5 | !6 )
@@ -465,7 +465,7 @@ SELECT count(*) from test__int WHERE a @@ '(20&23)|(50&68)';
     21
 (1 row)
 
-drop index text_idx;
+DROP INDEX text_idx;
 CREATE INDEX text_idx on test__int using gist ( a gist__intbig_ops );
 SELECT count(*) from test__int WHERE a && '{23,50}';
  count 
index 2b0b0d10194ff1d9f8cec9e9fb2eb1c71510b586..91db6d83447f373695cfcb59f3108b22e70d0378 100644 (file)
@@ -3,73 +3,74 @@
 -- does not depend on contents of seg.sql.
 --
 \set ECHO none
+SET autocommit TO 'on';
 \i _int.sql
 \set ECHO all
 
-select intset(1234);
-select icount('{1234234,234234}');
-select sort('{1234234,-30,234234}');
-select sort('{1234234,-30,234234}','asc');
-select sort('{1234234,-30,234234}','desc');
-select sort_asc('{1234234,-30,234234}');
-select sort_desc('{1234234,-30,234234}');
-select uniq('{1234234,-30,-30,234234,-30}');
-select uniq(sort_asc('{1234234,-30,-30,234234,-30}'));
-select idx('{1234234,-30,-30,234234,-30}',-30);
-select subarray('{1234234,-30,-30,234234,-30}',2,3);
-select subarray('{1234234,-30,-30,234234,-30}',-1,1);
-select subarray('{1234234,-30,-30,234234,-30}',0,-1);
+SELECT intset(1234);
+SELECT icount('{1234234,234234}');
+SELECT sort('{1234234,-30,234234}');
+SELECT sort('{1234234,-30,234234}','asc');
+SELECT sort('{1234234,-30,234234}','desc');
+SELECT sort_asc('{1234234,-30,234234}');
+SELECT sort_desc('{1234234,-30,234234}');
+SELECT uniq('{1234234,-30,-30,234234,-30}');
+SELECT uniq(sort_asc('{1234234,-30,-30,234234,-30}'));
+SELECT idx('{1234234,-30,-30,234234,-30}',-30);
+SELECT subarray('{1234234,-30,-30,234234,-30}',2,3);
+SELECT subarray('{1234234,-30,-30,234234,-30}',-1,1);
+SELECT subarray('{1234234,-30,-30,234234,-30}',0,-1);
 
-select #'{1234234,234234}'::int[];
-select '{123,623,445}'::int[] + 1245;
-select '{123,623,445}'::int[] + 445;
-select '{123,623,445}'::int[] + '{1245,87,445}';
-select '{123,623,445}'::int[] - 623;
-select '{123,623,445}'::int[] - '{1623,623}';
-select '{123,623,445}'::int[] | 623;
-select '{123,623,445}'::int[] | 1623;
-select '{123,623,445}'::int[] | '{1623,623}';
-select '{123,623,445}'::int[] & '{1623,623}';
+SELECT #'{1234234,234234}'::int[];
+SELECT '{123,623,445}'::int[] + 1245;
+SELECT '{123,623,445}'::int[] + 445;
+SELECT '{123,623,445}'::int[] + '{1245,87,445}';
+SELECT '{123,623,445}'::int[] - 623;
+SELECT '{123,623,445}'::int[] - '{1623,623}';
+SELECT '{123,623,445}'::int[] | 623;
+SELECT '{123,623,445}'::int[] | 1623;
+SELECT '{123,623,445}'::int[] | '{1623,623}';
+SELECT '{123,623,445}'::int[] & '{1623,623}';
 
 
 --test query_int
-select '1'::query_int;
-select ' 1'::query_int;
-select '1 '::query_int;
-select ' 1 '::query_int;
-select ' ! 1 '::query_int;
-select '!1'::query_int;
-select '1|2'::query_int;
-select '1|!2'::query_int;
-select '!1|2'::query_int;
-select '!1|!2'::query_int;
-select '!(!1|!2)'::query_int;
-select '!(!1|2)'::query_int;
-select '!(1|!2)'::query_int;
-select '!(1|2)'::query_int;
-select '1&2'::query_int;
-select '!1&2'::query_int;
-select '1&!2'::query_int;
-select '!1&!2'::query_int;
-select '(1&2)'::query_int;
-select '1&(2)'::query_int;
-select '!(1)&2'::query_int;
-select '!(1&2)'::query_int;
-select '1|2&3'::query_int;
-select '1|(2&3)'::query_int;
-select '(1|2)&3'::query_int;
-select '1|2&!3'::query_int;
-select '1|!2&3'::query_int;
-select '!1|2&3'::query_int;
-select '!1|(2&3)'::query_int;
-select '!(1|2)&3'::query_int;
-select '(!1|2)&3'::query_int;
-select '1|(2|(4|(5|6)))'::query_int;
-select '1|2|4|5|6'::query_int;
-select '1&(2&(4&(5&6)))'::query_int;
-select '1&2&4&5&6'::query_int;
-select '1&(2&(4&(5|6)))'::query_int;
-select '1&(2&(4&(5|!6)))'::query_int;
+SELECT '1'::query_int;
+SELECT ' 1'::query_int;
+SELECT '1 '::query_int;
+SELECT ' 1 '::query_int;
+SELECT ' ! 1 '::query_int;
+SELECT '!1'::query_int;
+SELECT '1|2'::query_int;
+SELECT '1|!2'::query_int;
+SELECT '!1|2'::query_int;
+SELECT '!1|!2'::query_int;
+SELECT '!(!1|!2)'::query_int;
+SELECT '!(!1|2)'::query_int;
+SELECT '!(1|!2)'::query_int;
+SELECT '!(1|2)'::query_int;
+SELECT '1&2'::query_int;
+SELECT '!1&2'::query_int;
+SELECT '1&!2'::query_int;
+SELECT '!1&!2'::query_int;
+SELECT '(1&2)'::query_int;
+SELECT '1&(2)'::query_int;
+SELECT '!(1)&2'::query_int;
+SELECT '!(1&2)'::query_int;
+SELECT '1|2&3'::query_int;
+SELECT '1|(2&3)'::query_int;
+SELECT '(1|2)&3'::query_int;
+SELECT '1|2&!3'::query_int;
+SELECT '1|!2&3'::query_int;
+SELECT '!1|2&3'::query_int;
+SELECT '!1|(2&3)'::query_int;
+SELECT '!(1|2)&3'::query_int;
+SELECT '(!1|2)&3'::query_int;
+SELECT '1|(2|(4|(5|6)))'::query_int;
+SELECT '1|2|4|5|6'::query_int;
+SELECT '1&(2&(4&(5&6)))'::query_int;
+SELECT '1&2&4&5&6'::query_int;
+SELECT '1&(2&(4&(5|6)))'::query_int;
+SELECT '1&(2&(4&(5|!6)))'::query_int;
 
 
 CREATE TABLE test__int( a int[] );
@@ -96,7 +97,7 @@ SELECT count(*) from test__int WHERE a @@ '50&68';
 SELECT count(*) from test__int WHERE a @ '{20,23}' or a @ '{50,68}';
 SELECT count(*) from test__int WHERE a @@ '(20&23)|(50&68)';
 
-drop index text_idx;
+DROP INDEX text_idx;
 CREATE INDEX text_idx on test__int using gist ( a gist__intbig_ops );
 
 SELECT count(*) from test__int WHERE a && '{23,50}';
@@ -107,4 +108,3 @@ SELECT count(*) from test__int WHERE a @ '{20,23}';
 SELECT count(*) from test__int WHERE a @@ '50&68';
 SELECT count(*) from test__int WHERE a @ '{20,23}' or a @ '{50,68}';
 SELECT count(*) from test__int WHERE a @@ '(20&23)|(50&68)';
-
index 64767f8502e2a3a89a470ce89660a84b57e7995a..fc9aef97ce8f11443efd21e75383f3f2546fa049 100644 (file)
@@ -1,35 +1,36 @@
 --
 --     PostgreSQL code for ISSNs.
 --
---     $Id: isbn_issn.sql.in,v 1.6 2002/08/22 00:01:39 tgl Exp $
+--     $Id: isbn_issn.sql.in,v 1.7 2002/10/18 18:41:20 momjian Exp $
 --
 
 -- Adjust this setting to control where the objects get created.
 SET search_path = public;
 
+SET autocommit TO 'on';
 
 --
 --     Input and output functions and the type itself:
 --
 
-create function issn_in(cstring)
-       returns issn
-       as 'MODULE_PATHNAME'
-       language 'c';
-
-create function issn_out(issn)
-       returns cstring
-       as 'MODULE_PATHNAME'
-       language 'c';
-
-create type issn (
-       internallength = 16,
-       externallength = 9,
-       input = issn_in,
-       output = issn_out
+CREATE FUNCTION issn_in(cstring)
+RETURNS issn
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
+
+CREATE FUNCTION issn_out(issn)
+RETURNS cstring
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
+
+CREATE TYPE issn (
+       INTERNALLENGTH = 16,
+       EXTERNALLENGTH = 9,
+       INPUT = issn_in,
+       OUTPUT = issn_out
 );
 
-comment on type issn
+COMMENT ON TYPE issn
   is 'International Standard Serial Number';
 
 
@@ -37,35 +38,35 @@ comment on type issn
 --     The various boolean tests:
 --
 
-create function issn_lt(issn, issn)
-       returns bool
-       as 'MODULE_PATHNAME'
-       language 'c';
+CREATE FUNCTION issn_lt(issn, issn)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-create function issn_le(issn, issn)
-       returns bool
-       as 'MODULE_PATHNAME'
-       language 'c';
+CREATE FUNCTION issn_le(issn, issn)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-create function issn_eq(issn, issn)
-       returns bool
-       as 'MODULE_PATHNAME'
-       language 'c';
+CREATE FUNCTION issn_eq(issn, issn)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-create function issn_ge(issn, issn)
-       returns bool
-       as 'MODULE_PATHNAME'
-       language 'c';
+CREATE FUNCTION issn_ge(issn, issn)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-create function issn_gt(issn, issn)
-       returns bool
-       as 'MODULE_PATHNAME'
-       language 'c';
+CREATE FUNCTION issn_gt(issn, issn)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-create function issn_ne(issn, issn)
-       returns bool
-       as 'MODULE_PATHNAME'
-       language 'c';
+CREATE FUNCTION issn_ne(issn, issn)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
 --
 --     Now the operators.  Note how some of the parameters to some
@@ -74,47 +75,47 @@ create function issn_ne(issn, issn)
 --     will be implicitly defined when those are, further down.
 --
 
-create operator < (
-       leftarg = issn,
-       rightarg = issn,
---     negator = >=,
-       procedure = issn_lt
+CREATE OPERATOR < (
+       LEFTARG = issn,
+       RIGHTARG = issn,
+--     NEGATOR = >=,
+       PROCEDURE = issn_lt
 );
 
-create operator <= (
-       leftarg = issn,
-       rightarg = issn,
---     negator = >,
-       procedure = issn_le
+CREATE OPERATOR <= (
+       LEFTARG = issn,
+       RIGHTARG = issn,
+--     NEGATOR = >,
+       PROCEDURE = issn_le
 );
 
-create operator = (
-       leftarg = issn,
-       rightarg = issn,
-       commutator = =,
---     negator = <>,
-       procedure = issn_eq
+CREATE OPERATOR = (
+       LEFTARG = issn,
+       RIGHTARG = issn,
+       COMMUTATOR = =,
+--     NEGATOR = <>,
+       PROCEDURE = issn_eq
 );
 
-create operator >= (
-       leftarg = issn,
-       rightarg = issn,
-       negator = <,
-       procedure = issn_ge
+CREATE OPERATOR >= (
+       LEFTARG = issn,
+       RIGHTARG = issn,
+       NEGATOR = <,
+       PROCEDURE = issn_ge
 );
 
-create operator > (
-       leftarg = issn,
-       rightarg = issn,
-       negator = <=,
-       procedure = issn_gt
+CREATE OPERATOR > (
+       LEFTARG = issn,
+       RIGHTARG = issn,
+       NEGATOR = <=,
+       PROCEDURE = issn_gt
 );
 
-create operator <> (
-       leftarg = issn,
-       rightarg = issn,
-       negator = =,
-       procedure = issn_ne
+CREATE OPERATOR <> (
+       LEFTARG = issn,
+       RIGHTARG = issn,
+       NEGATOR = =,
+       PROCEDURE = issn_ne
 );
 
 --
@@ -123,66 +124,65 @@ create operator <> (
 --
 --     PostgreSQL code for ISBNs.
 --
---     $Id: isbn_issn.sql.in,v 1.6 2002/08/22 00:01:39 tgl Exp $
+--     $Id: isbn_issn.sql.in,v 1.7 2002/10/18 18:41:20 momjian Exp $
 --
 --
 --     Input and output functions and the type itself:
 --
 
-create function isbn_in(cstring)
-       returns isbn
-       as 'MODULE_PATHNAME'
-       language 'c';
-
-create function isbn_out(isbn)
-       returns cstring
-       as 'MODULE_PATHNAME'
-       language 'c';
-
-create type isbn (
-       internallength = 16,
-       externallength = 13,
-       input = isbn_in,
-       output = isbn_out
+CREATE FUNCTION isbn_in(cstring)
+RETURNS isbn
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
+
+CREATE FUNCTION isbn_out(isbn)
+RETURNS cstring
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
+
+CREATE TYPE isbn (
+       INTERNALLENGTH = 16,
+       EXTERNALLENGTH = 13,
+       INPUT = isbn_in,
+       OUTPUT = isbn_out
 );
 
-comment on type isbn
-  is 'International Standard Book Number';
+COMMENT ON TYPE isbn IS 'International Standard Book Number';
 
 
 --
 --     The various boolean tests:
 --
 
-create function isbn_lt(isbn, isbn)
-       returns bool
-       as 'MODULE_PATHNAME'
-       language 'c';
+CREATE FUNCTION isbn_lt(isbn, isbn)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-create function isbn_le(isbn, isbn)
-       returns bool
-       as 'MODULE_PATHNAME'
-       language 'c';
+CREATE FUNCTION isbn_le(isbn, isbn)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-create function isbn_eq(isbn, isbn)
-       returns bool
-       as 'MODULE_PATHNAME'
-       language 'c';
+CREATE FUNCTION isbn_eq(isbn, isbn)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-create function isbn_ge(isbn, isbn)
-       returns bool
-       as 'MODULE_PATHNAME'
-       language 'c';
+CREATE FUNCTION isbn_ge(isbn, isbn)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-create function isbn_gt(isbn, isbn)
-       returns bool
-       as 'MODULE_PATHNAME'
-       language 'c';
+CREATE FUNCTION isbn_gt(isbn, isbn)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-create function isbn_ne(isbn, isbn)
-       returns bool
-       as 'MODULE_PATHNAME'
-       language 'c';
+CREATE FUNCTION isbn_ne(isbn, isbn)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
 --
 --     Now the operators.  Note how some of the parameters to some
@@ -191,61 +191,61 @@ create function isbn_ne(isbn, isbn)
 --     will be implicitly defined when those are, further down.
 --
 
-create operator < (
-       leftarg = isbn,
-       rightarg = isbn,
---     negator = >=,
-       procedure = isbn_lt
+CREATE OPERATOR < (
+       LEFTARG = isbn,
+       RIGHTARG = isbn,
+--     NEGATOR = >=,
+       PROCEDURE = isbn_lt
 );
 
-create operator <= (
-       leftarg = isbn,
-       rightarg = isbn,
---     negator = >,
-       procedure = isbn_le
+CREATE OPERATOR <= (
+       LEFTARG = isbn,
+       RIGHTARG = isbn,
+--     NEGATOR = >,
+       PROCEDURE = isbn_le
 );
 
-create operator = (
-       leftarg = isbn,
-       rightarg = isbn,
-       commutator = =,
---     negator = <>,
-       procedure = isbn_eq
+CREATE OPERATOR = (
+       LEFTARG = isbn,
+       RIGHTARG = isbn,
+       COMMUTATOR = =,
+--     NEGATOR = <>,
+       PROCEDURE = isbn_eq
 );
 
-create operator >= (
-       leftarg = isbn,
-       rightarg = isbn,
-       negator = <,
-       procedure = isbn_ge
+CREATE OPERATOR >= (
+       LEFTARG = isbn,
+       RIGHTARG = isbn,
+       NEGATOR = <,
+       PROCEDURE = isbn_ge
 );
 
-create operator > (
-       leftarg = isbn,
-       rightarg = isbn,
-       negator = <=,
-       procedure = isbn_gt
+CREATE OPERATOR > (
+       LEFTARG = isbn,
+       RIGHTARG = isbn,
+       NEGATOR = <=,
+       PROCEDURE = isbn_gt
 );
 
-create operator <> (
-       leftarg = isbn,
-       rightarg = isbn,
-       negator = =,
-       procedure = isbn_ne
+CREATE OPERATOR <> (
+       LEFTARG = isbn,
+       RIGHTARG = isbn,
+       NEGATOR = =,
+       PROCEDURE = isbn_ne
 );
 
 
 -- Register 'isbn' comparison function
-create function isbn_cmp(isbn, isbn)
-    returns integer
-    as '$libdir/isbn_issn'
-    language c;
+CREATE FUNCTION isbn_cmp(isbn, isbn)
+RETURNS integer
+AS '$libdir/isbn_issn'
+LANGUAGE c;
 
 -- Register 'issn' comparison function
-create function issn_cmp(issn, issn)
-    returns integer
-    as '$libdir/isbn_issn'
-    language c;
+CREATE FUNCTION issn_cmp(issn, issn)
+RETURNS integer
+AS '$libdir/isbn_issn'
+LANGUAGE c;
 
 -------------------------------------------------
 -- Create default operator class for 'isbn'    --
@@ -253,7 +253,8 @@ create function issn_cmp(issn, issn)
 -------------------------------------------------
 
 CREATE OPERATOR CLASS isbn_ops
-    DEFAULT FOR TYPE isbn USING btree AS
+DEFAULT FOR TYPE isbn USING btree 
+AS
         OPERATOR        1       < ,
         OPERATOR        2       <= ,
         OPERATOR        3       = ,
@@ -267,7 +268,8 @@ CREATE OPERATOR CLASS isbn_ops
 -------------------------------------------------
 
 CREATE OPERATOR CLASS issn_ops
-    DEFAULT FOR TYPE issn USING btree AS
+DEFAULT FOR TYPE issn USING btree 
+AS
         OPERATOR        1       < ,
         OPERATOR        2       <= ,
         OPERATOR        3       = ,
index e60b46ce09e3226d3cfd0aa7d14d6a315ba206d7..0d9f6c890dcea855b9166f369e7eb44ea4f9024b 100644 (file)
@@ -1,56 +1,62 @@
 --
 --     PostgreSQL code for LargeObjects
 --
---     $Id: lo.sql.in,v 1.7 2002/08/22 00:01:39 tgl Exp $
+--     $Id: lo.sql.in,v 1.8 2002/10/18 18:41:20 momjian Exp $
 --
 --
 --     Create the data type
 --
 
 -- used by the lo type, it takes an oid and returns an lo object
-create function lo_in(cstring)
-       returns lo
-       as 'MODULE_PATHNAME'
-       language 'c';
+
+-- Adjust this setting to control where the objects get created.
+SET search_path = public;
+
+SET autocommit TO 'on';
+
+CREATE FUNCTION lo_in(cstring)
+RETURNS lo
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
 -- used by the lo type, it returns the oid of the object
-create function lo_out(lo)
-       returns cstring
-       as 'MODULE_PATHNAME'
-       language 'c';
+CREATE FUNCTION lo_out(lo)
+RETURNS cstring
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
 -- finally the type itself
-create type lo (
-       internallength = 4,
-       externallength = variable,
-       input = lo_in,
-       output = lo_out
+CREATE TYPE lo (
+       INTERNALLENGTH = 4,
+       EXTERNALLENGTH = variable,
+       INPUT = lo_in,
+       OUTPUT = lo_out
 );
 
 -- this returns the oid associated with a lo object
-create function lo_oid(lo)
-       returns oid
-       as 'MODULE_PATHNAME'
-       language 'c';
+CREATE FUNCTION lo_oid(lo)
+RETURNS oid
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
 -- same function, named to allow it to be used as a type coercion, eg:
---    create table a (image lo);
---    select image::oid from a;
+--    CREATE TABLE a (image lo);
+--    SELECT image::oid FROM a;
 --
-create function oid(lo)
-       returns oid
-       as 'MODULE_PATHNAME', 'lo_oid'
-       language 'c';
+CREATE FUNCTION oid(lo)
+RETURNS oid
+AS 'MODULE_PATHNAME', 'lo_oid'
+LANGUAGE 'C';
 
 -- this allows us to convert an oid to a managed lo object
 -- ie: insert into test values (lo_import('/fullpath/file')::lo);
-create function lo(oid)
-       returns lo
-       as 'MODULE_PATHNAME'
-       language 'c';
+CREATE FUNCTION lo(oid)
+RETURNS lo
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
 -- This is used in triggers
-create function lo_manage()
-       returns trigger
-       as 'MODULE_PATHNAME'
-       language 'c';
+CREATE FUNCTION lo_manage()
+RETURNS trigger
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
index 4e4602836cef1f15305be771c05aedd2cc665f42..d7f34f8bed5e5e8f4e3a5f553e7dc3e9b070ff11 100644 (file)
@@ -3,13 +3,18 @@
 -- It's used just for development
 --
 
+-- Adjust this setting to control where the objects get created.
+SET search_path = public;
+
+SET autocommit TO 'on';
+
 -- remove our test table
-drop table a;
+DROP TABLE a;
 
 -- now drop the type and associated C functions
-drop type lo CASCADE;
+DROP TYPE lo CASCADE;
 
 -- the trigger function has no dependency on the type, so drop separately
-drop function lo_manage();
+DROP FUNCTION lo_manage();
 
 -- the lo stuff is now removed from the system
index 0c0da2cfd65fe0f0e7327004779461dfd7cea781..9acc47debda5d462bfd5b159a20814e38975b931 100644 (file)
@@ -5,53 +5,65 @@
 --
 
 -- ignore any errors here - simply drop the table if it already exists
-drop table a;
+DROP TABLE a;
 
 -- create the test table
-create table a (fname name,image lo);
+CREATE TABLE a (fname name,image lo);
 
 -- insert a null object
-insert into a values ('null');
+INSERT INTO a VALUES ('null');
 
 -- insert an empty large object
-insert into a values ('empty','');
+INSERT INTO a VALUES ('empty','');
 
 -- insert a large object based on a file
-insert into a values ('/etc/group',lo_import('/etc/group')::lo);
+INSERT INTO a VALUES ('/etc/group',lo_import('/etc/group')::lo);
 
 -- now select the table
-select * from a;
+SELECT * FROM a;
 
 -- this select also returns an oid based on the lo column
-select *,image::oid from a;
+SELECT *,image::oid from a;
 
 -- now test the trigger
-create trigger t_a before update or delete on a for each row execute procedure lo_manage(image);
+CREATE TRIGGER t_a
+BEFORE UPDATE OR DELETE ON a
+FOR EACH ROW
+EXECUTE PROCEDURE lo_manage(image);
 
 -- insert
-insert into a values ('aa','');
-select * from a where fname like 'aa%';
+INSERT INTO a VALUES ('aa','');
+SELECT * FROM a
+WHERE fname LIKE 'aa%';
 
 -- update
-update a set image=lo_import('/etc/group')::lo where fname='aa';
-select * from a where fname like 'aa%';
+UPDATE a SET image=lo_import('/etc/group')::lo
+WHERE fname='aa';
+SELECT * FROM a
+WHERE fname LIKE 'aa%';
 
 -- update the 'empty' row which should be null
-update a set image=lo_import('/etc/hosts')::lo where fname='empty';
-select * from a where fname like 'empty%';
-update a set image=null where fname='empty';
-select * from a where fname like 'empty%';
+UPDATE a SET image=lo_import('/etc/hosts')::lo
+WHERE fname='empty';
+SELECT * FROM a
+WHERE fname LIKE 'empty%';
+UPDATE a SET image=null
+WHERE fname='empty';
+SELECT * FROM a
+WHERE fname LIKE 'empty%';
 
 -- delete the entry
-delete from a where fname='aa';
-select * from a where fname like 'aa%';
+DELETE FROM a
+WHERE fname='aa';
+SELECT * FROM a
+WHERE fname LIKE 'aa%';
 
 -- This deletes the table contents. Note, if you comment this out, and
 -- expect the drop table to remove the objects, think again. The trigger
 -- doesn't get thrown by drop table.
-delete from a;
+DELETE FROM a;
 
 -- finally drop the table
-drop table a;
+DROP TABLE a;
 
 -- end of tests
index 4af0260bed3080f632f8cf1a7b9f8c01a0b526c2..7e710d33354cbe86b602078d4cef3731cdad0bd9 100644 (file)
 \set ECHO none
 psql:ltree.sql:9: WARNING:  ProcedureCreate: type ltree is not yet defined
 psql:ltree.sql:14: WARNING:  Argument type "ltree" is only a shell
-psql:ltree.sql:238: WARNING:  ProcedureCreate: type lquery is not yet defined
-psql:ltree.sql:243: WARNING:  Argument type "lquery" is only a shell
-psql:ltree.sql:290: WARNING:  ProcedureCreate: type ltxtquery is not yet defined
-psql:ltree.sql:295: WARNING:  Argument type "ltxtquery" is only a shell
-psql:ltree.sql:345: WARNING:  ProcedureCreate: type ltree_gist is not yet defined
-psql:ltree.sql:350: WARNING:  Argument type "ltree_gist" is only a shell
-select ''::ltree;
+psql:ltree.sql:281: WARNING:  ProcedureCreate: type lquery is not yet defined
+psql:ltree.sql:286: WARNING:  Argument type "lquery" is only a shell
+psql:ltree.sql:345: WARNING:  ProcedureCreate: type ltxtquery is not yet defined
+psql:ltree.sql:350: WARNING:  Argument type "ltxtquery" is only a shell
+psql:ltree.sql:412: WARNING:  ProcedureCreate: type ltree_gist is not yet defined
+psql:ltree.sql:417: WARNING:  Argument type "ltree_gist" is only a shell
+SELECT ''::ltree;
  ltree 
 -------
  
 (1 row)
 
-select '1'::ltree;
+SELECT '1'::ltree;
  ltree 
 -------
  1
 (1 row)
 
-select '1.2'::ltree;
+SELECT '1.2'::ltree;
  ltree 
 -------
  1.2
 (1 row)
 
-select '1.2._3'::ltree;
+SELECT '1.2._3'::ltree;
  ltree  
 --------
  1.2._3
 (1 row)
 
-select subltree('Top.Child1.Child2',1,2);
+SELECT subltree('Top.Child1.Child2',1,2);
  subltree 
 ----------
  Child1
 (1 row)
 
-select subpath('Top.Child1.Child2',1,2);
+SELECT subpath('Top.Child1.Child2',1,2);
     subpath    
 ---------------
  Child1.Child2
 (1 row)
 
-select subpath('Top.Child1.Child2',-1,1);
+SELECT subpath('Top.Child1.Child2',-1,1);
  subpath 
 ---------
  Child2
 (1 row)
 
-select subpath('Top.Child1.Child2',0,-2);
+SELECT subpath('Top.Child1.Child2',0,-2);
  subpath 
 ---------
  Top
 (1 row)
 
-select subpath('Top.Child1.Child2',0,-1);
+SELECT subpath('Top.Child1.Child2',0,-1);
   subpath   
 ------------
  Top.Child1
 (1 row)
 
-select subpath('Top.Child1.Child2',0,0);
+SELECT subpath('Top.Child1.Child2',0,0);
       subpath      
 -------------------
  Top.Child1.Child2
 (1 row)
 
-select subpath('Top.Child1.Child2',1,0);
+SELECT subpath('Top.Child1.Child2',1,0);
     subpath    
 ---------------
  Child1.Child2
 (1 row)
 
-select subpath('Top.Child1.Child2',0);
+SELECT subpath('Top.Child1.Child2',0);
       subpath      
 -------------------
  Top.Child1.Child2
 (1 row)
 
-select subpath('Top.Child1.Child2',1);
+SELECT subpath('Top.Child1.Child2',1);
     subpath    
 ---------------
  Child1.Child2
 (1 row)
 
-select 'Top.Child1.Child2'::ltree || 'Child3'::text;
+SELECT 'Top.Child1.Child2'::ltree || 'Child3'::text;
          ?column?         
 --------------------------
  Top.Child1.Child2.Child3
 (1 row)
 
-select 'Top.Child1.Child2'::ltree || 'Child3'::ltree;
+SELECT 'Top.Child1.Child2'::ltree || 'Child3'::ltree;
          ?column?         
 --------------------------
  Top.Child1.Child2.Child3
 (1 row)
 
-select 'Top_0'::ltree || 'Top.Child1.Child2'::ltree;
+SELECT 'Top_0'::ltree || 'Top.Child1.Child2'::ltree;
         ?column?         
 -------------------------
  Top_0.Top.Child1.Child2
 (1 row)
 
-select 'Top.Child1.Child2'::ltree || ''::ltree;
+SELECT 'Top.Child1.Child2'::ltree || ''::ltree;
      ?column?      
 -------------------
  Top.Child1.Child2
 (1 row)
 
-select ''::ltree || 'Top.Child1.Child2'::ltree;
+SELECT ''::ltree || 'Top.Child1.Child2'::ltree;
      ?column?      
 -------------------
  Top.Child1.Child2
 (1 row)
 
-select lca('{la.2.3,1.2.3.4.5.6,}') is null;
+SELECT lca('{la.2.3,1.2.3.4.5.6,}') IS NULL;
  ?column? 
 ----------
  t
 (1 row)
 
-select lca('{la.2.3,1.2.3.4.5.6}') is null;
+SELECT lca('{la.2.3,1.2.3.4.5.6}') IS NULL;
  ?column? 
 ----------
  f
 (1 row)
 
-select lca('{1.la.2.3,1.2.3.4.5.6}');
+SELECT lca('{1.la.2.3,1.2.3.4.5.6}');
  lca 
 -----
  1
 (1 row)
 
-select lca('{1.2.3,1.2.3.4.5.6}');
+SELECT lca('{1.2.3,1.2.3.4.5.6}');
  lca 
 -----
  1.2
 (1 row)
 
-select lca('1.la.2.3','1.2.3.4.5.6');
+SELECT lca('1.la.2.3','1.2.3.4.5.6');
  lca 
 -----
  1
 (1 row)
 
-select lca('1.2.3','1.2.3.4.5.6');
+SELECT lca('1.2.3','1.2.3.4.5.6');
  lca 
 -----
  1.2
 (1 row)
 
-select lca('1.2.2.3','1.2.3.4.5.6');
+SELECT lca('1.2.2.3','1.2.3.4.5.6');
  lca 
 -----
  1.2
 (1 row)
 
-select lca('1.2.2.3','1.2.3.4.5.6','');
+SELECT lca('1.2.2.3','1.2.3.4.5.6','');
  lca 
 -----
  
 (1 row)
 
-select lca('1.2.2.3','1.2.3.4.5.6','2');
+SELECT lca('1.2.2.3','1.2.3.4.5.6','2');
  lca 
 -----
  
 (1 row)
 
-select lca('1.2.2.3','1.2.3.4.5.6','1');
+SELECT lca('1.2.2.3','1.2.3.4.5.6','1');
  lca 
 -----
  
 (1 row)
 
-select '1'::lquery;
+SELECT '1'::lquery;
  lquery 
 --------
  1
 (1 row)
 
-select '4|3|2'::lquery;
+SELECT '4|3|2'::lquery;
  lquery 
 --------
  4|3|2
 (1 row)
 
-select '1.2'::lquery;
+SELECT '1.2'::lquery;
  lquery 
 --------
  1.2
 (1 row)
 
-select '1.4|3|2'::lquery;
+SELECT '1.4|3|2'::lquery;
  lquery  
 ---------
  1.4|3|2
 (1 row)
 
-select '1.0'::lquery;
+SELECT '1.0'::lquery;
  lquery 
 --------
  1.0
 (1 row)
 
-select '4|3|2.0'::lquery;
+SELECT '4|3|2.0'::lquery;
  lquery  
 ---------
  4|3|2.0
 (1 row)
 
-select '1.2.0'::lquery;
+SELECT '1.2.0'::lquery;
  lquery 
 --------
  1.2.0
 (1 row)
 
-select '1.4|3|2.0'::lquery;
+SELECT '1.4|3|2.0'::lquery;
   lquery   
 -----------
  1.4|3|2.0
 (1 row)
 
-select '1.*'::lquery;
+SELECT '1.*'::lquery;
  lquery 
 --------
  1.*
 (1 row)
 
-select '4|3|2.*'::lquery;
+SELECT '4|3|2.*'::lquery;
  lquery  
 ---------
  4|3|2.*
 (1 row)
 
-select '1.2.*'::lquery;
+SELECT '1.2.*'::lquery;
  lquery 
 --------
  1.2.*
 (1 row)
 
-select '1.4|3|2.*'::lquery;
+SELECT '1.4|3|2.*'::lquery;
   lquery   
 -----------
  1.4|3|2.*
 (1 row)
 
-select '*.1.*'::lquery;
+SELECT '*.1.*'::lquery;
  lquery 
 --------
  *.1.*
 (1 row)
 
-select '*.4|3|2.*'::lquery;
+SELECT '*.4|3|2.*'::lquery;
   lquery   
 -----------
  *.4|3|2.*
 (1 row)
 
-select '*.1.2.*'::lquery;
+SELECT '*.1.2.*'::lquery;
  lquery  
 ---------
  *.1.2.*
 (1 row)
 
-select '*.1.4|3|2.*'::lquery;
+SELECT '*.1.4|3|2.*'::lquery;
    lquery    
 -------------
  *.1.4|3|2.*
 (1 row)
 
-select '1.*.4|3|2'::lquery;
+SELECT '1.*.4|3|2'::lquery;
   lquery   
 -----------
  1.*.4|3|2
 (1 row)
 
-select '1.*.4|3|2.0'::lquery;
+SELECT '1.*.4|3|2.0'::lquery;
    lquery    
 -------------
  1.*.4|3|2.0
 (1 row)
 
-select '1.*.4|3|2.*{1,4}'::lquery;
+SELECT '1.*.4|3|2.*{1,4}'::lquery;
       lquery      
 ------------------
  1.*.4|3|2.*{1,4}
 (1 row)
 
-select '1.*.4|3|2.*{,4}'::lquery;
+SELECT '1.*.4|3|2.*{,4}'::lquery;
      lquery      
 -----------------
  1.*.4|3|2.*{,4}
 (1 row)
 
-select '1.*.4|3|2.*{1,}'::lquery;
+SELECT '1.*.4|3|2.*{1,}'::lquery;
      lquery      
 -----------------
  1.*.4|3|2.*{1,}
 (1 row)
 
-select '1.*.4|3|2.*{1}'::lquery;
+SELECT '1.*.4|3|2.*{1}'::lquery;
      lquery     
 ----------------
  1.*.4|3|2.*{1}
 (1 row)
 
-select 'qwerty%@*.tu'::lquery;
+SELECT 'qwerty%@*.tu'::lquery;
     lquery    
 --------------
  qwerty%@*.tu
 (1 row)
 
-select nlevel('1.2.3.4');
+SELECT nlevel('1.2.3.4');
  nlevel 
 --------
       4
 (1 row)
 
-select '1.2'::ltree  < '2.2'::ltree;
+SELECT '1.2'::ltree  < '2.2'::ltree;
  ?column? 
 ----------
  t
 (1 row)
 
-select '1.2'::ltree  <= '2.2'::ltree;
+SELECT '1.2'::ltree  <= '2.2'::ltree;
  ?column? 
 ----------
  t
 (1 row)
 
-select '2.2'::ltree  = '2.2'::ltree;
+SELECT '2.2'::ltree  = '2.2'::ltree;
  ?column? 
 ----------
  t
 (1 row)
 
-select '3.2'::ltree  >= '2.2'::ltree;
+SELECT '3.2'::ltree  >= '2.2'::ltree;
  ?column? 
 ----------
  t
 (1 row)
 
-select '3.2'::ltree  > '2.2'::ltree;
+SELECT '3.2'::ltree  > '2.2'::ltree;
  ?column? 
 ----------
  t
 (1 row)
 
-select '1.2.3'::ltree @> '1.2.3.4'::ltree;
+SELECT '1.2.3'::ltree @> '1.2.3.4'::ltree;
  ?column? 
 ----------
  t
 (1 row)
 
-select '1.2.3.4'::ltree @> '1.2.3.4'::ltree;
+SELECT '1.2.3.4'::ltree @> '1.2.3.4'::ltree;
  ?column? 
 ----------
  t
 (1 row)
 
-select '1.2.3.4.5'::ltree @> '1.2.3.4'::ltree;
+SELECT '1.2.3.4.5'::ltree @> '1.2.3.4'::ltree;
  ?column? 
 ----------
  f
 (1 row)
 
-select '1.3.3'::ltree @> '1.2.3.4'::ltree;
+SELECT '1.3.3'::ltree @> '1.2.3.4'::ltree;
  ?column? 
 ----------
  f
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ 'a.b.c.d.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.b.c.d.e';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ 'A.b.c.d.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'A.b.c.d.e';
  ?column? 
 ----------
  f
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ 'A@.b.c.d.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'A@.b.c.d.e';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'aa.b.c.d.e'::ltree ~ 'A@.b.c.d.e';
+SELECT 'aa.b.c.d.e'::ltree ~ 'A@.b.c.d.e';
  ?column? 
 ----------
  f
 (1 row)
 
-select 'aa.b.c.d.e'::ltree ~ 'A*.b.c.d.e';
+SELECT 'aa.b.c.d.e'::ltree ~ 'A*.b.c.d.e';
  ?column? 
 ----------
  f
 (1 row)
 
-select 'aa.b.c.d.e'::ltree ~ 'A*@.b.c.d.e';
+SELECT 'aa.b.c.d.e'::ltree ~ 'A*@.b.c.d.e';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'aa.b.c.d.e'::ltree ~ 'A*@|g.b.c.d.e';
+SELECT 'aa.b.c.d.e'::ltree ~ 'A*@|g.b.c.d.e';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'g.b.c.d.e'::ltree ~ 'A*@|g.b.c.d.e';
+SELECT 'g.b.c.d.e'::ltree ~ 'A*@|g.b.c.d.e';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ 'a.b.c.d.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.b.c.d.e';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ 'a.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*.e';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ 'a.*{3}.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{3}.e';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ 'a.*{2}.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{2}.e';
  ?column? 
 ----------
  f
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ 'a.*{4}.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{4}.e';
  ?column? 
 ----------
  f
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ 'a.*{,4}.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{,4}.e';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ 'a.*{2,}.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{2,}.e';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ 'a.*{2,4}.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{2,4}.e';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ 'a.*{2,3}.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{2,3}.e';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ 'a.*{2,3}';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{2,3}';
  ?column? 
 ----------
  f
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ 'a.*{2,4}';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{2,4}';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ 'a.*{2,5}';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{2,5}';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '*{2,3}.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*{2,3}.e';
  ?column? 
 ----------
  f
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '*{2,4}.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*{2,4}.e';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '*{2,5}.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*{2,5}.e';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*.e';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '*.e.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.e.*';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '*.d.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.d.*';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '*.a.*.d.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.a.*.d.*';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '*.!d.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!d.*';
  ?column? 
 ----------
  f
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '*.!d';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!d';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '!d.*';
+SELECT 'a.b.c.d.e'::ltree ~ '!d.*';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '!a.*';
+SELECT 'a.b.c.d.e'::ltree ~ '!a.*';
  ?column? 
 ----------
  f
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '*.!e';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!e';
  ?column? 
 ----------
  f
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '*.!e.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!e.*';
  ?column? 
 ----------
  f
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ 'a.*.!e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*.!e';
  ?column? 
 ----------
  f
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ 'a.*.!d';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*.!d';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ 'a.*.!d.*';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*.!d.*';
  ?column? 
 ----------
  f
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ 'a.*.!f.*';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*.!f.*';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '*.a.*.!f.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.a.*.!f.*';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '*.a.*.!d.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.a.*.!d.*';
  ?column? 
 ----------
  f
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '*.a.!d.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.a.!d.*';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '*.a.!d';
+SELECT 'a.b.c.d.e'::ltree ~ '*.a.!d';
  ?column? 
 ----------
  f
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ 'a.!d.*';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.!d.*';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '*.a.*.!d.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.a.*.!d.*';
  ?column? 
 ----------
  f
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '*.!b.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!b.*';
  ?column? 
 ----------
  f
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '*.!b.c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!b.c.*';
  ?column? 
 ----------
  f
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '*.!b.*.c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!b.*.c.*';
  ?column? 
 ----------
  f
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '!b.*.c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.*.c.*';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '!b.b.*';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.b.*';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '!b.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.*.e';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '!b.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.!c.*.e';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '!b.*.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.*.!c.*.e';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '*{2}.!b.*.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*{2}.!b.*.!c.*.e';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '*{1}.!b.*.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*{1}.!b.*.!c.*.e';
  ?column? 
 ----------
  f
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '*{1}.!b.*{1}.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*{1}.!b.*{1}.!c.*.e';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ 'a.!b.*{1}.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.!b.*{1}.!c.*.e';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '!b.*{1}.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.*{1}.!c.*.e';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '*.!b.*{1}.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!b.*{1}.!c.*.e';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '*.!b.*.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!b.*.!c.*.e';
  ?column? 
 ----------
  f
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '!b.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.!c.*';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '!b.*.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.*.!c.*';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '*{2}.!b.*.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*{2}.!b.*.!c.*';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '*{1}.!b.*.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*{1}.!b.*.!c.*';
  ?column? 
 ----------
  f
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '*{1}.!b.*{1}.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*{1}.!b.*{1}.!c.*';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ 'a.!b.*{1}.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.!b.*{1}.!c.*';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '!b.*{1}.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.*{1}.!c.*';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '*.!b.*{1}.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!b.*{1}.!c.*';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'a.b.c.d.e'::ltree ~ '*.!b.*.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!b.*.!c.*';
  ?column? 
 ----------
  f
 (1 row)
 
-select 'QWER_TY'::ltree ~ 'q%@*';
+SELECT 'QWER_TY'::ltree ~ 'q%@*';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'QWER_TY'::ltree ~ 'Q_t%@*';
+SELECT 'QWER_TY'::ltree ~ 'Q_t%@*';
  ?column? 
 ----------
  t
 (1 row)
 
-select 'QWER_GY'::ltree ~ 'q_t%@*';
+SELECT 'QWER_GY'::ltree ~ 'q_t%@*';
  ?column? 
 ----------
  f
 (1 row)
 
 --ltxtquery
-select '!tree & aWdf@*'::ltxtquery;
+SELECT '!tree & aWdf@*'::ltxtquery;
    ltxtquery    
 ----------------
  !tree & aWdf@*
 (1 row)
 
-select 'tree & aw_qw%*'::ltxtquery;
+SELECT 'tree & aw_qw%*'::ltxtquery;
    ltxtquery    
 ----------------
  tree & aw_qw%*
 (1 row)
 
-select 'ltree.awdfg'::ltree @ '!tree & aWdf@*'::ltxtquery;
+SELECT 'ltree.awdfg'::ltree @ '!tree & aWdf@*'::ltxtquery;
  ?column? 
 ----------
  t
 (1 row)
 
-select 'tree.awdfg'::ltree @ '!tree & aWdf@*'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ '!tree & aWdf@*'::ltxtquery;
  ?column? 
 ----------
  f
 (1 row)
 
-select 'tree.awdfg'::ltree @ '!tree | aWdf@*'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ '!tree | aWdf@*'::ltxtquery;
  ?column? 
 ----------
  t
 (1 row)
 
-select 'tree.awdfg'::ltree @ 'tree | aWdf@*'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ 'tree | aWdf@*'::ltxtquery;
  ?column? 
 ----------
  t
 (1 row)
 
-select 'tree.awdfg'::ltree @ 'tree & aWdf@*'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ 'tree & aWdf@*'::ltxtquery;
  ?column? 
 ----------
  t
 (1 row)
 
-select 'tree.awdfg'::ltree @ 'tree & aWdf@'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ 'tree & aWdf@'::ltxtquery;
  ?column? 
 ----------
  f
 (1 row)
 
-select 'tree.awdfg'::ltree @ 'tree & aWdf*'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ 'tree & aWdf*'::ltxtquery;
  ?column? 
 ----------
  f
 (1 row)
 
-select 'tree.awdfg'::ltree @ 'tree & aWdf'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ 'tree & aWdf'::ltxtquery;
  ?column? 
 ----------
  f
 (1 row)
 
-select 'tree.awdfg'::ltree @ 'tree & awdf*'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ 'tree & awdf*'::ltxtquery;
  ?column? 
 ----------
  t
 (1 row)
 
-select 'tree.awdfg'::ltree @ 'tree & aWdfg@'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ 'tree & aWdfg@'::ltxtquery;
  ?column? 
 ----------
  t
 (1 row)
 
-select 'tree.awdfg_qwerty'::ltree @ 'tree & aw_qw%*'::ltxtquery;
+SELECT 'tree.awdfg_qwerty'::ltree @ 'tree & aw_qw%*'::ltxtquery;
  ?column? 
 ----------
  t
 (1 row)
 
-select 'tree.awdfg_qwerty'::ltree @ 'tree & aw_rw%*'::ltxtquery;
+SELECT 'tree.awdfg_qwerty'::ltree @ 'tree & aw_rw%*'::ltxtquery;
  ?column? 
 ----------
  f
 (1 row)
 
 --arrays
-select '{1.2.3}'::ltree[] @> '1.2.3.4';
+SELECT '{1.2.3}'::ltree[] @> '1.2.3.4';
  ?column? 
 ----------
  t
 (1 row)
 
-select '{1.2.3.4}'::ltree[] @> '1.2.3.4';
+SELECT '{1.2.3.4}'::ltree[] @> '1.2.3.4';
  ?column? 
 ----------
  t
 (1 row)
 
-select '{1.2.3.4.5}'::ltree[] @> '1.2.3.4';
+SELECT '{1.2.3.4.5}'::ltree[] @> '1.2.3.4';
  ?column? 
 ----------
  f
 (1 row)
 
-select '{1.3.3}'::ltree[] @> '1.2.3.4';
+SELECT '{1.3.3}'::ltree[] @> '1.2.3.4';
  ?column? 
 ----------
  f
 (1 row)
 
-select '{5.67.8, 1.2.3}'::ltree[] @> '1.2.3.4';
+SELECT '{5.67.8, 1.2.3}'::ltree[] @> '1.2.3.4';
  ?column? 
 ----------
  t
 (1 row)
 
-select '{5.67.8, 1.2.3.4}'::ltree[] @> '1.2.3.4';
+SELECT '{5.67.8, 1.2.3.4}'::ltree[] @> '1.2.3.4';
  ?column? 
 ----------
  t
 (1 row)
 
-select '{5.67.8, 1.2.3.4.5}'::ltree[] @> '1.2.3.4';
+SELECT '{5.67.8, 1.2.3.4.5}'::ltree[] @> '1.2.3.4';
  ?column? 
 ----------
  f
 (1 row)
 
-select '{5.67.8, 1.3.3}'::ltree[] @> '1.2.3.4';
+SELECT '{5.67.8, 1.3.3}'::ltree[] @> '1.2.3.4';
  ?column? 
 ----------
  f
 (1 row)
 
-select '{1.2.3, 7.12.asd}'::ltree[] @> '1.2.3.4';
+SELECT '{1.2.3, 7.12.asd}'::ltree[] @> '1.2.3.4';
  ?column? 
 ----------
  t
 (1 row)
 
-select '{1.2.3.4, 7.12.asd}'::ltree[] @> '1.2.3.4';
+SELECT '{1.2.3.4, 7.12.asd}'::ltree[] @> '1.2.3.4';
  ?column? 
 ----------
  t
 (1 row)
 
-select '{1.2.3.4.5, 7.12.asd}'::ltree[] @> '1.2.3.4';
+SELECT '{1.2.3.4.5, 7.12.asd}'::ltree[] @> '1.2.3.4';
  ?column? 
 ----------
  f
 (1 row)
 
-select '{1.3.3, 7.12.asd}'::ltree[] @> '1.2.3.4';
+SELECT '{1.3.3, 7.12.asd}'::ltree[] @> '1.2.3.4';
  ?column? 
 ----------
  f
 (1 row)
 
-select '{ltree.asd, tree.awdfg}'::ltree[] @ 'tree & aWdfg@'::ltxtquery;
+SELECT '{ltree.asd, tree.awdfg}'::ltree[] @ 'tree & aWdfg@'::ltxtquery;
  ?column? 
 ----------
  t
 (1 row)
 
-select '{j.k.l.m, g.b.c.d.e}'::ltree[] ~ 'A*@|g.b.c.d.e';
+SELECT '{j.k.l.m, g.b.c.d.e}'::ltree[] ~ 'A*@|g.b.c.d.e';
  ?column? 
 ----------
  t
 (1 row)
 
 --exractors
-select ('{3456,1.2.3.34}'::ltree[] ?@> '1.2.3.4') is null;
+SELECT ('{3456,1.2.3.34}'::ltree[] ?@> '1.2.3.4') is null;
  ?column? 
 ----------
  t
 (1 row)
 
-select '{3456,1.2.3}'::ltree[] ?@> '1.2.3.4';
+SELECT '{3456,1.2.3}'::ltree[] ?@> '1.2.3.4';
  ?column? 
 ----------
  1.2.3
 (1 row)
 
-select '{3456,1.2.3.4}'::ltree[] ?<@ '1.2.3';
+SELECT '{3456,1.2.3.4}'::ltree[] ?<@ '1.2.3';
  ?column? 
 ----------
  1.2.3.4
 (1 row)
 
-select ('{3456,1.2.3.4}'::ltree[] ?<@ '1.2.5') is null;
+SELECT ('{3456,1.2.3.4}'::ltree[] ?<@ '1.2.5') is null;
  ?column? 
 ----------
  t
 (1 row)
 
-select '{ltree.asd, tree.awdfg}'::ltree[] ?@ 'tree & aWdfg@'::ltxtquery;
+SELECT '{ltree.asd, tree.awdfg}'::ltree[] ?@ 'tree & aWdfg@'::ltxtquery;
   ?column?  
 ------------
  tree.awdfg
 (1 row)
 
-select '{j.k.l.m, g.b.c.d.e}'::ltree[] ?~ 'A*@|g.b.c.d.e';
+SELECT '{j.k.l.m, g.b.c.d.e}'::ltree[] ?~ 'A*@|g.b.c.d.e';
  ?column?  
 -----------
  g.b.c.d.e
 (1 row)
 
-create table ltreetest (t ltree);
-\copy ltreetest from 'data/ltree.data'
-select * from ltreetest where t <  '12.3' order by t asc;
+CREATE TABLE ltreetest (t ltree);
+\copy ltreetest FROM 'data/ltree.data'
+SELECT * FROM ltreetest WHERE t <  '12.3' order by t asc;
                 t                 
 ----------------------------------
  
@@ -1130,7 +1130,7 @@ select * from ltreetest where t <  '12.3' order by t asc;
  12.29.26.18.4.21.28.8.13.3
 (123 rows)
 
-select * from ltreetest where t <= '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t <= '12.3' order by t asc;
                 t                 
 ----------------------------------
  
@@ -1259,13 +1259,13 @@ select * from ltreetest where t <= '12.3' order by t asc;
  12.3
 (124 rows)
 
-select * from ltreetest where t =  '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t =  '12.3' order by t asc;
   t   
 ------
  12.3
 (1 row)
 
-select * from ltreetest where t >= '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t >= '12.3' order by t asc;
                 t                 
 ----------------------------------
  12.3
@@ -2153,7 +2153,7 @@ select * from ltreetest where t >= '12.3' order by t asc;
  9.9.13.9.14.27
 (883 rows)
 
-select * from ltreetest where t >  '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t >  '12.3' order by t asc;
                 t                 
 ----------------------------------
  12.4.10.17.4.10.23.3
@@ -3040,7 +3040,7 @@ select * from ltreetest where t >  '12.3' order by t asc;
  9.9.13.9.14.27
 (882 rows)
 
-select * from ltreetest where t @> '1.1.1' order by t asc;
+SELECT * FROM ltreetest WHERE t @> '1.1.1' order by t asc;
    t   
 -------
  
@@ -3049,7 +3049,7 @@ select * from ltreetest where t @> '1.1.1' order by t asc;
  1.1.1
 (4 rows)
 
-select * from ltreetest where t <@ '1.1.1' order by t asc;
+SELECT * FROM ltreetest WHERE t <@ '1.1.1' order by t asc;
      t     
 -----------
  1.1.1
@@ -3058,7 +3058,7 @@ select * from ltreetest where t <@ '1.1.1' order by t asc;
  1.1.1.2.1
 (4 rows)
 
-select * from ltreetest where t ~ '1.1.1.*' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '1.1.1.*' order by t asc;
      t     
 -----------
  1.1.1
@@ -3067,7 +3067,7 @@ select * from ltreetest where t ~ '1.1.1.*' order by t asc;
  1.1.1.2.1
 (4 rows)
 
-select * from ltreetest where t ~ '*.1' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '*.1' order by t asc;
                t                
 --------------------------------
  1
@@ -3097,20 +3097,20 @@ select * from ltreetest where t ~ '*.1' order by t asc;
  9.21.20.29.1
 (25 rows)
 
-select * from ltreetest where t ~ '23.*.1' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '23.*.1' order by t asc;
             t            
 -------------------------
  23.28.1
  23.3.32.21.5.14.10.17.1
 (2 rows)
 
-select * from ltreetest where t ~ '23.*{1}.1' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '23.*{1}.1' order by t asc;
     t    
 ---------
  23.28.1
 (1 row)
 
-select * from ltreetest where t @ '23 & 1' order by t asc;
+SELECT * FROM ltreetest WHERE t @ '23 & 1' order by t asc;
                t                
 --------------------------------
  1.10.23.25.5.11
@@ -3156,7 +3156,7 @@ select * from ltreetest where t @ '23 & 1' order by t asc;
 
 create unique index tstidx on ltreetest (t);
 set enable_seqscan=off;
-select * from ltreetest where t <  '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t <  '12.3' order by t asc;
                 t                 
 ----------------------------------
  
@@ -3284,7 +3284,7 @@ select * from ltreetest where t <  '12.3' order by t asc;
  12.29.26.18.4.21.28.8.13.3
 (123 rows)
 
-select * from ltreetest where t <= '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t <= '12.3' order by t asc;
                 t                 
 ----------------------------------
  
@@ -3413,13 +3413,13 @@ select * from ltreetest where t <= '12.3' order by t asc;
  12.3
 (124 rows)
 
-select * from ltreetest where t =  '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t =  '12.3' order by t asc;
   t   
 ------
  12.3
 (1 row)
 
-select * from ltreetest where t >= '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t >= '12.3' order by t asc;
                 t                 
 ----------------------------------
  12.3
@@ -4307,7 +4307,7 @@ select * from ltreetest where t >= '12.3' order by t asc;
  9.9.13.9.14.27
 (883 rows)
 
-select * from ltreetest where t >  '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t >  '12.3' order by t asc;
                 t                 
 ----------------------------------
  12.4.10.17.4.10.23.3
@@ -5197,7 +5197,7 @@ select * from ltreetest where t >  '12.3' order by t asc;
 drop index tstidx;
 create index tstidx on ltreetest using gist (t);
 set enable_seqscan=off;
-select * from ltreetest where t <  '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t <  '12.3' order by t asc;
                 t                 
 ----------------------------------
  
@@ -5325,7 +5325,7 @@ select * from ltreetest where t <  '12.3' order by t asc;
  12.29.26.18.4.21.28.8.13.3
 (123 rows)
 
-select * from ltreetest where t <= '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t <= '12.3' order by t asc;
                 t                 
 ----------------------------------
  
@@ -5454,13 +5454,13 @@ select * from ltreetest where t <= '12.3' order by t asc;
  12.3
 (124 rows)
 
-select * from ltreetest where t =  '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t =  '12.3' order by t asc;
   t   
 ------
  12.3
 (1 row)
 
-select * from ltreetest where t >= '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t >= '12.3' order by t asc;
                 t                 
 ----------------------------------
  12.3
@@ -6348,7 +6348,7 @@ select * from ltreetest where t >= '12.3' order by t asc;
  9.9.13.9.14.27
 (883 rows)
 
-select * from ltreetest where t >  '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t >  '12.3' order by t asc;
                 t                 
 ----------------------------------
  12.4.10.17.4.10.23.3
@@ -7235,7 +7235,7 @@ select * from ltreetest where t >  '12.3' order by t asc;
  9.9.13.9.14.27
 (882 rows)
 
-select * from ltreetest where t @> '1.1.1' order by t asc;
+SELECT * FROM ltreetest WHERE t @> '1.1.1' order by t asc;
    t   
 -------
  
@@ -7244,7 +7244,7 @@ select * from ltreetest where t @> '1.1.1' order by t asc;
  1.1.1
 (4 rows)
 
-select * from ltreetest where t <@ '1.1.1' order by t asc;
+SELECT * FROM ltreetest WHERE t <@ '1.1.1' order by t asc;
      t     
 -----------
  1.1.1
@@ -7253,7 +7253,7 @@ select * from ltreetest where t <@ '1.1.1' order by t asc;
  1.1.1.2.1
 (4 rows)
 
-select * from ltreetest where t ~ '1.1.1.*' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '1.1.1.*' order by t asc;
      t     
 -----------
  1.1.1
@@ -7262,7 +7262,7 @@ select * from ltreetest where t ~ '1.1.1.*' order by t asc;
  1.1.1.2.1
 (4 rows)
 
-select * from ltreetest where t ~ '*.1' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '*.1' order by t asc;
                t                
 --------------------------------
  1
@@ -7292,20 +7292,20 @@ select * from ltreetest where t ~ '*.1' order by t asc;
  9.21.20.29.1
 (25 rows)
 
-select * from ltreetest where t ~ '23.*.1' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '23.*.1' order by t asc;
             t            
 -------------------------
  23.28.1
  23.3.32.21.5.14.10.17.1
 (2 rows)
 
-select * from ltreetest where t ~ '23.*{1}.1' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '23.*{1}.1' order by t asc;
     t    
 ---------
  23.28.1
 (1 row)
 
-select * from ltreetest where t @ '23 & 1' order by t asc;
+SELECT * FROM ltreetest WHERE t @ '23 & 1' order by t asc;
                t                
 --------------------------------
  1.10.23.25.5.11
@@ -7350,44 +7350,44 @@ select * from ltreetest where t @ '23 & 1' order by t asc;
 (39 rows)
 
 create table _ltreetest (t ltree[]);
-\copy _ltreetest from 'data/_ltree.data'
-select count(*) from _ltreetest where t @> '1.1.1' ;
+\copy _ltreetest FROM 'data/_ltree.data'
+SELECT count(*) FROM _ltreetest WHERE t @> '1.1.1' ;
  count 
 -------
     15
 (1 row)
 
-select count(*) from _ltreetest where t <@ '1.1.1' ;
+SELECT count(*) FROM _ltreetest WHERE t <@ '1.1.1' ;
  count 
 -------
     19
 (1 row)
 
-select count(*) from _ltreetest where t ~ '1.1.1.*' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '1.1.1.*' ;
  count 
 -------
     19
 (1 row)
 
-select count(*) from _ltreetest where t ~ '*.1' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '*.1' ;
  count 
 -------
     83
 (1 row)
 
-select count(*) from _ltreetest where t ~ '23.*.1' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '23.*.1' ;
  count 
 -------
     10
 (1 row)
 
-select count(*) from _ltreetest where t ~ '23.*{1}.1' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '23.*{1}.1' ;
  count 
 -------
      5
 (1 row)
 
-select count(*) from _ltreetest where t @ '23 & 1' ;
+SELECT count(*) FROM _ltreetest WHERE t @ '23 & 1' ;
  count 
 -------
    147
@@ -7395,43 +7395,43 @@ select count(*) from _ltreetest where t @ '23 & 1' ;
 
 create index _tstidx on _ltreetest using gist (t);
 set enable_seqscan=off;
-select count(*) from _ltreetest where t @> '1.1.1' ;
+SELECT count(*) FROM _ltreetest WHERE t @> '1.1.1' ;
  count 
 -------
     15
 (1 row)
 
-select count(*) from _ltreetest where t <@ '1.1.1' ;
+SELECT count(*) FROM _ltreetest WHERE t <@ '1.1.1' ;
  count 
 -------
     19
 (1 row)
 
-select count(*) from _ltreetest where t ~ '1.1.1.*' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '1.1.1.*' ;
  count 
 -------
     19
 (1 row)
 
-select count(*) from _ltreetest where t ~ '*.1' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '*.1' ;
  count 
 -------
     83
 (1 row)
 
-select count(*) from _ltreetest where t ~ '23.*.1' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '23.*.1' ;
  count 
 -------
     10
 (1 row)
 
-select count(*) from _ltreetest where t ~ '23.*{1}.1' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '23.*{1}.1' ;
  count 
 -------
      5
 (1 row)
 
-select count(*) from _ltreetest where t @ '23 & 1' ;
+SELECT count(*) FROM _ltreetest WHERE t @ '23 & 1' ;
  count 
 -------
    147
index ad7f61472b06a7cc747728f9e0f72628ea41be75..eae1454a9aad9b6b2541a6f4546a85605f8be8ff 100644 (file)
@@ -1,23 +1,23 @@
-BEGIN;
-
 -- Adjust this setting to control where the objects get created.
 SET search_path = public;
 
+SET autocommit TO 'on';
+
 CREATE FUNCTION ltree_in(cstring)
 RETURNS ltree
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
+LANGUAGE 'C' WITH (isstrict);
 
 CREATE FUNCTION ltree_out(ltree)
 RETURNS cstring
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
+LANGUAGE 'C' WITH (isstrict);
 
 CREATE TYPE ltree (
-internallength = -1,
-input = ltree_in,
-output = ltree_out,
-storage = extended
+       INTERNALLENGTH = -1,
+       INPUT = ltree_in,
+       OUTPUT = ltree_out,
+       STORAGE = extended
 );
 
 
@@ -25,74 +25,99 @@ storage = extended
 CREATE FUNCTION ltree_cmp(ltree,ltree)
 RETURNS int4
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE FUNCTION ltree_lt(ltree,ltree)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE FUNCTION ltree_le(ltree,ltree)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE FUNCTION ltree_eq(ltree,ltree)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE FUNCTION ltree_ge(ltree,ltree)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE FUNCTION ltree_gt(ltree,ltree)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE FUNCTION ltree_ne(ltree,ltree)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 
 CREATE OPERATOR < (
-        LEFTARG = ltree, RIGHTARG = ltree, PROCEDURE = ltree_lt,
-        COMMUTATOR = '>', NEGATOR = '>=',
-        RESTRICT = contsel, JOIN = contjoinsel
+        LEFTARG = ltree,
+       RIGHTARG = ltree,
+       PROCEDURE = ltree_lt,
+        COMMUTATOR = '>',
+       NEGATOR = '>=',
+        RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR <= (
-        LEFTARG = ltree, RIGHTARG = ltree, PROCEDURE = ltree_le,
-        COMMUTATOR = '>=', NEGATOR = '>',
-        RESTRICT = contsel, JOIN = contjoinsel
+        LEFTARG = ltree,
+       RIGHTARG = ltree,
+       PROCEDURE = ltree_le,
+        COMMUTATOR = '>=',
+       NEGATOR = '>',
+        RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR >= (
-        LEFTARG = ltree, RIGHTARG = ltree, PROCEDURE = ltree_ge,
-        COMMUTATOR = '<=', NEGATOR = '<',
-        RESTRICT = contsel, JOIN = contjoinsel
+        LEFTARG = ltree,
+       RIGHTARG = ltree,
+       PROCEDURE = ltree_ge,
+        COMMUTATOR = '<=',
+       NEGATOR = '<',
+        RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR > (
-        LEFTARG = ltree, RIGHTARG = ltree, PROCEDURE = ltree_gt,
-        COMMUTATOR = '<', NEGATOR = '<=',
-        RESTRICT = contsel, JOIN = contjoinsel
+        LEFTARG = ltree,
+       RIGHTARG = ltree,
+       PROCEDURE = ltree_gt,
+        COMMUTATOR = '<',
+       NEGATOR = '<=',
+        RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR = (
-        LEFTARG = ltree, RIGHTARG = ltree, PROCEDURE = ltree_eq,
-        COMMUTATOR = '=', NEGATOR = '<>',
-        RESTRICT = eqsel, JOIN = eqjoinsel,
-        SORT1 = '<', SORT2 = '<'
+        LEFTARG = ltree,
+       RIGHTARG = ltree,
+       PROCEDURE = ltree_eq,
+        COMMUTATOR = '=',
+       NEGATOR = '<>',
+        RESTRICT = eqsel,
+       JOIN = eqjoinsel,
+        SORT1 = '<',
+       SORT2 = '<'
 );
 
 CREATE OPERATOR <> (
-        LEFTARG = ltree, RIGHTARG = ltree, PROCEDURE = ltree_ne,
-        COMMUTATOR = '<>', NEGATOR = '=',
-        RESTRICT = neqsel, JOIN = neqjoinsel
+        LEFTARG = ltree,
+       RIGHTARG = ltree,
+       PROCEDURE = ltree_ne,
+        COMMUTATOR = '<>',
+       NEGATOR = '=',
+        RESTRICT = neqsel,
+       JOIN = neqjoinsel
 );
 
 --util functions
@@ -100,122 +125,140 @@ CREATE OPERATOR <> (
 CREATE FUNCTION subltree(ltree,int4,int4)
 RETURNS ltree
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE FUNCTION subpath(ltree,int4,int4)
 RETURNS ltree
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE FUNCTION subpath(ltree,int4)
 RETURNS ltree
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE FUNCTION nlevel(ltree)
 RETURNS int4
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE FUNCTION lca(_ltree)
 RETURNS ltree
 AS 'MODULE_PATHNAME','_lca'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE FUNCTION lca(ltree,ltree)
 RETURNS ltree
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE FUNCTION lca(ltree,ltree,ltree)
 RETURNS ltree
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE FUNCTION lca(ltree,ltree,ltree,ltree)
 RETURNS ltree
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE FUNCTION lca(ltree,ltree,ltree,ltree,ltree)
 RETURNS ltree
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE FUNCTION lca(ltree,ltree,ltree,ltree,ltree,ltree)
 RETURNS ltree
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE FUNCTION lca(ltree,ltree,ltree,ltree,ltree,ltree,ltree)
 RETURNS ltree
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE FUNCTION lca(ltree,ltree,ltree,ltree,ltree,ltree,ltree,ltree)
 RETURNS ltree
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE FUNCTION ltree_isparent(ltree,ltree)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE FUNCTION ltree_risparent(ltree,ltree)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE FUNCTION ltree_addltree(ltree,ltree)
 RETURNS ltree
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE FUNCTION ltree_addtext(ltree,text)
 RETURNS ltree
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE FUNCTION ltree_textadd(text,ltree)
 RETURNS ltree
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE OPERATOR @> (
-        LEFTARG = ltree, RIGHTARG = ltree, PROCEDURE = ltree_isparent,
+        LEFTARG = ltree,
+       RIGHTARG = ltree,
+       PROCEDURE = ltree_isparent,
         COMMUTATOR = '<@',
-        RESTRICT = contsel, JOIN = contjoinsel
+        RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR ^@> (
-        LEFTARG = ltree, RIGHTARG = ltree, PROCEDURE = ltree_isparent,
+        LEFTARG = ltree,
+       RIGHTARG = ltree,
+       PROCEDURE = ltree_isparent,
         COMMUTATOR = '^<@',
-        RESTRICT = contsel, JOIN = contjoinsel
+        RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR <@ (
-        LEFTARG = ltree, RIGHTARG = ltree, PROCEDURE = ltree_risparent,
+        LEFTARG = ltree,
+       RIGHTARG = ltree,
+       PROCEDURE = ltree_risparent,
         COMMUTATOR = '@>',
-        RESTRICT = contsel, JOIN = contjoinsel
+        RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR ^<@ (
-        LEFTARG = ltree, RIGHTARG = ltree, PROCEDURE = ltree_risparent,
+        LEFTARG = ltree,
+       RIGHTARG = ltree,
+       PROCEDURE = ltree_risparent,
         COMMUTATOR = '^@>',
-        RESTRICT = contsel, JOIN = contjoinsel
+        RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR || (
-        LEFTARG = ltree, RIGHTARG = ltree, PROCEDURE = ltree_addltree
+        LEFTARG = ltree,
+       RIGHTARG = ltree,
+       PROCEDURE = ltree_addltree
 );
 
 CREATE OPERATOR || (
-        LEFTARG = ltree, RIGHTARG = text, PROCEDURE = ltree_addtext
+        LEFTARG = ltree,
+       RIGHTARG = text,
+       PROCEDURE = ltree_addtext
 );
 
 CREATE OPERATOR || (
-        LEFTARG = text, RIGHTARG = ltree, PROCEDURE = ltree_textadd
+        LEFTARG = text,
+       RIGHTARG = ltree,
+       PROCEDURE = ltree_textadd
 );
 
 
@@ -235,135 +278,166 @@ CREATE OPERATOR CLASS ltree_ops
 CREATE FUNCTION lquery_in(cstring)
 RETURNS lquery
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
+LANGUAGE 'C' WITH (isstrict);
 
 CREATE FUNCTION lquery_out(lquery)
 RETURNS cstring
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
+LANGUAGE 'C' WITH (isstrict);
 
 CREATE TYPE lquery (
-internallength = -1,
-input = lquery_in,
-output = lquery_out,
-storage = extended
+       INTERNALLENGTH = -1,
+       INPUT = lquery_in,
+       OUTPUT = lquery_out,
+       STORAGE = extended
 );
 
 CREATE FUNCTION ltq_regex(ltree,lquery)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE FUNCTION ltq_rregex(lquery,ltree)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE OPERATOR ~ (
-        LEFTARG = ltree, RIGHTARG = lquery, PROCEDURE = ltq_regex,
+        LEFTARG = ltree,
+       RIGHTARG = lquery,
+       PROCEDURE = ltq_regex,
        COMMUTATOR = '~',
-       RESTRICT = contsel, JOIN = contjoinsel
+       RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR ~ (
-        LEFTARG = lquery, RIGHTARG = ltree, PROCEDURE = ltq_rregex,
+        LEFTARG = lquery,
+       RIGHTARG = ltree,
+       PROCEDURE = ltq_rregex,
        COMMUTATOR = '~',
-       RESTRICT = contsel, JOIN = contjoinsel
+       RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 --not-indexed
 CREATE OPERATOR ^~ (
-        LEFTARG = ltree, RIGHTARG = lquery, PROCEDURE = ltq_regex,
+        LEFTARG = ltree,
+       RIGHTARG = lquery,
+       PROCEDURE = ltq_regex,
        COMMUTATOR = '^~',
-       RESTRICT = contsel, JOIN = contjoinsel
+       RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR ^~ (
-        LEFTARG = lquery, RIGHTARG = ltree, PROCEDURE = ltq_rregex,
+        LEFTARG = lquery,
+       RIGHTARG = ltree,
+       PROCEDURE = ltq_rregex,
        COMMUTATOR = '^~',
-       RESTRICT = contsel, JOIN = contjoinsel
+       RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE FUNCTION ltxtq_in(cstring)
 RETURNS ltxtquery
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
+LANGUAGE 'C' WITH (isstrict);
 
 CREATE FUNCTION ltxtq_out(ltxtquery)
 RETURNS cstring
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
+LANGUAGE 'C' WITH (isstrict);
 
 CREATE TYPE ltxtquery (
-internallength = -1,
-input = ltxtq_in,
-output = ltxtq_out,
-storage = extended
+       INTERNALLENGTH = -1,
+       INPUT = ltxtq_in,
+       OUTPUT = ltxtq_out,
+       STORAGE = extended
 );
 
--- operations with ltxtquery
+-- operations WITH ltxtquery
 
 CREATE FUNCTION ltxtq_exec(ltree, ltxtquery)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict, iscachable);
+LANGUAGE 'C' WITH (isstrict, iscachable);
 
 CREATE FUNCTION ltxtq_rexec(ltxtquery, ltree)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict, iscachable);
+LANGUAGE 'C' WITH (isstrict, iscachable);
 
 CREATE OPERATOR @ (
-        LEFTARG = ltree, RIGHTARG = ltxtquery, PROCEDURE = ltxtq_exec,
+        LEFTARG = ltree,
+       RIGHTARG = ltxtquery,
+       PROCEDURE = ltxtq_exec,
        COMMUTATOR = '@',
-       RESTRICT = contsel, JOIN = contjoinsel
+       RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR @ (
-        LEFTARG = ltxtquery, RIGHTARG = ltree, PROCEDURE = ltxtq_rexec,
+        LEFTARG = ltxtquery,
+       RIGHTARG = ltree,
+       PROCEDURE = ltxtq_rexec,
        COMMUTATOR = '@',
-       RESTRICT = contsel, JOIN = contjoinsel
+       RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 --not-indexed
 CREATE OPERATOR ^@ (
-        LEFTARG = ltree, RIGHTARG = ltxtquery, PROCEDURE = ltxtq_exec,
+        LEFTARG = ltree,
+       RIGHTARG = ltxtquery,
+       PROCEDURE = ltxtq_exec,
        COMMUTATOR = '^@',
-       RESTRICT = contsel, JOIN = contjoinsel
+       RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR ^@ (
-        LEFTARG = ltxtquery, RIGHTARG = ltree, PROCEDURE = ltxtq_rexec,
+        LEFTARG = ltxtquery,
+       RIGHTARG = ltree,
+       PROCEDURE = ltxtq_rexec,
        COMMUTATOR = '^@',
-       RESTRICT = contsel, JOIN = contjoinsel
+       RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 --GiST support for ltree
 CREATE FUNCTION ltree_gist_in(cstring)
 RETURNS ltree_gist
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
-   
+LANGUAGE 'C' WITH (isstrict);
+  
 CREATE FUNCTION ltree_gist_out(ltree_gist)
 RETURNS cstring
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
-   
+LANGUAGE 'C' WITH (isstrict);
+  
 CREATE TYPE ltree_gist (
        internallength = -1,
        input = ltree_gist_in,
        output = ltree_gist_out,
        storage = plain
-);    
-
-
-create function ltree_consistent(internal,internal,int2) returns bool as 'MODULE_PATHNAME' language 'C';
-create function ltree_compress(internal) returns internal as 'MODULE_PATHNAME' language 'C';
-create function ltree_decompress(internal) returns internal as 'MODULE_PATHNAME' language 'C';
-create function ltree_penalty(internal,internal,internal) returns internal as 'MODULE_PATHNAME' language 'C' with(isstrict);
-create function ltree_picksplit(internal, internal) returns internal as 'MODULE_PATHNAME' language 'C';
-create function ltree_union(bytea, internal) returns int4 as 'MODULE_PATHNAME' language 'C';
-create function ltree_same(internal, internal, internal) returns internal as 'MODULE_PATHNAME' language 'C';
+);   
+
+
+CREATE FUNCTION ltree_consistent(internal,internal,int2)
+RETURNS bool as 'MODULE_PATHNAME' language 'C';
+CREATE FUNCTION ltree_compress(internal)
+RETURNS internal as 'MODULE_PATHNAME' language 'C';
+CREATE FUNCTION ltree_decompress(internal)
+RETURNS internal as 'MODULE_PATHNAME' language 'C';
+CREATE FUNCTION ltree_penalty(internal,internal,internal)
+RETURNS internal as 'MODULE_PATHNAME' language 'C' with(isstrict);
+CREATE FUNCTION ltree_picksplit(internal, internal)
+RETURNS internal as 'MODULE_PATHNAME' language 'C';
+CREATE FUNCTION ltree_union(bytea, internal)
+RETURNS int4 as 'MODULE_PATHNAME' language 'C';
+CREATE FUNCTION ltree_same(internal, internal, internal)
+RETURNS internal as 'MODULE_PATHNAME' language 'C';
 
 CREATE OPERATOR CLASS gist_ltree_ops
     DEFAULT FOR TYPE ltree USING gist AS
@@ -393,185 +467,259 @@ CREATE OPERATOR CLASS gist_ltree_ops
 CREATE FUNCTION _ltree_isparent(_ltree,ltree)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE FUNCTION _ltree_r_isparent(ltree,_ltree)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE FUNCTION _ltree_risparent(_ltree,ltree)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE FUNCTION _ltree_r_risparent(ltree,_ltree)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE FUNCTION _ltq_regex(_ltree,lquery)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE FUNCTION _ltq_rregex(lquery,_ltree)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE FUNCTION _ltxtq_exec(_ltree, ltxtquery)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict, iscachable);
+LANGUAGE 'C' WITH (isstrict, iscachable);
 
 CREATE FUNCTION _ltxtq_rexec(ltxtquery, _ltree)
 RETURNS bool
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict, iscachable);
+LANGUAGE 'C' WITH (isstrict, iscachable);
 
 CREATE OPERATOR @> (
-        LEFTARG = _ltree, RIGHTARG = ltree, PROCEDURE = _ltree_isparent,
+        LEFTARG = _ltree,
+       RIGHTARG = ltree,
+       PROCEDURE = _ltree_isparent,
         COMMUTATOR = '<@',
-        RESTRICT = contsel, JOIN = contjoinsel
+        RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR <@ (
-        LEFTARG = ltree, RIGHTARG = _ltree, PROCEDURE = _ltree_r_isparent,
+        LEFTARG = ltree,
+       RIGHTARG = _ltree,
+       PROCEDURE = _ltree_r_isparent,
         COMMUTATOR = '@>',
-        RESTRICT = contsel, JOIN = contjoinsel
+        RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR <@ (
-        LEFTARG = _ltree, RIGHTARG = ltree, PROCEDURE = _ltree_risparent,
+        LEFTARG = _ltree,
+       RIGHTARG = ltree,
+       PROCEDURE = _ltree_risparent,
         COMMUTATOR = '@>',
-        RESTRICT = contsel, JOIN = contjoinsel
+        RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR @> (
-        LEFTARG = ltree, RIGHTARG = _ltree, PROCEDURE = _ltree_r_risparent,
+        LEFTARG = ltree,
+       RIGHTARG = _ltree,
+       PROCEDURE = _ltree_r_risparent,
         COMMUTATOR = '<@',
-        RESTRICT = contsel, JOIN = contjoinsel
+        RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR ~ (
-        LEFTARG = _ltree, RIGHTARG = lquery, PROCEDURE = _ltq_regex,
+        LEFTARG = _ltree,
+       RIGHTARG = lquery,
+       PROCEDURE = _ltq_regex,
         COMMUTATOR = '~',
-        RESTRICT = contsel, JOIN = contjoinsel
+        RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR ~ (
-        LEFTARG = lquery, RIGHTARG = _ltree, PROCEDURE = _ltq_rregex,
+        LEFTARG = lquery,
+       RIGHTARG = _ltree,
+       PROCEDURE = _ltq_rregex,
         COMMUTATOR = '~',
-        RESTRICT = contsel, JOIN = contjoinsel
+        RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR @ (
-        LEFTARG = _ltree, RIGHTARG = ltxtquery, PROCEDURE = _ltxtq_exec,
+        LEFTARG = _ltree,
+       RIGHTARG = ltxtquery,
+       PROCEDURE = _ltxtq_exec,
         COMMUTATOR = '@',
-        RESTRICT = contsel, JOIN = contjoinsel
+        RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR @ (
-        LEFTARG = ltxtquery, RIGHTARG = _ltree, PROCEDURE = _ltxtq_rexec,
+        LEFTARG = ltxtquery,
+       RIGHTARG = _ltree,
+       PROCEDURE = _ltxtq_rexec,
         COMMUTATOR = '@',
-        RESTRICT = contsel, JOIN = contjoinsel
+        RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 
 --not indexed
 CREATE OPERATOR ^@> (
-        LEFTARG = _ltree, RIGHTARG = ltree, PROCEDURE = _ltree_isparent,
+        LEFTARG = _ltree,
+       RIGHTARG = ltree,
+       PROCEDURE = _ltree_isparent,
         COMMUTATOR = '^<@',
-        RESTRICT = contsel, JOIN = contjoinsel
+        RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR ^<@ (
-        LEFTARG = ltree, RIGHTARG = _ltree, PROCEDURE = _ltree_r_isparent,
+        LEFTARG = ltree,
+       RIGHTARG = _ltree,
+       PROCEDURE = _ltree_r_isparent,
         COMMUTATOR = '^@>',
-        RESTRICT = contsel, JOIN = contjoinsel
+        RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR ^<@ (
-        LEFTARG = _ltree, RIGHTARG = ltree, PROCEDURE = _ltree_risparent,
+        LEFTARG = _ltree,
+       RIGHTARG = ltree,
+       PROCEDURE = _ltree_risparent,
         COMMUTATOR = '^@>',
-        RESTRICT = contsel, JOIN = contjoinsel
+        RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR ^@> (
-        LEFTARG = ltree, RIGHTARG = _ltree, PROCEDURE = _ltree_r_risparent,
+        LEFTARG = ltree,
+       RIGHTARG = _ltree,
+       PROCEDURE = _ltree_r_risparent,
         COMMUTATOR = '^<@',
-        RESTRICT = contsel, JOIN = contjoinsel
+        RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR ^~ (
-        LEFTARG = _ltree, RIGHTARG = lquery, PROCEDURE = _ltq_regex,
+        LEFTARG = _ltree,
+       RIGHTARG = lquery,
+       PROCEDURE = _ltq_regex,
         COMMUTATOR = '^~',
-        RESTRICT = contsel, JOIN = contjoinsel
+        RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR ^~ (
-        LEFTARG = lquery, RIGHTARG = _ltree, PROCEDURE = _ltq_rregex,
+        LEFTARG = lquery,
+       RIGHTARG = _ltree,
+       PROCEDURE = _ltq_rregex,
         COMMUTATOR = '^~',
-        RESTRICT = contsel, JOIN = contjoinsel
+        RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR ^@ (
-        LEFTARG = _ltree, RIGHTARG = ltxtquery, PROCEDURE = _ltxtq_exec,
+        LEFTARG = _ltree,
+       RIGHTARG = ltxtquery,
+       PROCEDURE = _ltxtq_exec,
         COMMUTATOR = '^@',
-        RESTRICT = contsel, JOIN = contjoinsel
+        RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR ^@ (
-        LEFTARG = ltxtquery, RIGHTARG = _ltree, PROCEDURE = _ltxtq_rexec,
+        LEFTARG = ltxtquery,
+       RIGHTARG = _ltree,
+       PROCEDURE = _ltxtq_rexec,
         COMMUTATOR = '^@',
-        RESTRICT = contsel, JOIN = contjoinsel
+        RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 --extractors
 CREATE FUNCTION _ltree_extract_isparent(_ltree,ltree)
 RETURNS ltree
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE OPERATOR ?@> (
-        LEFTARG = _ltree, RIGHTARG = ltree, PROCEDURE = _ltree_extract_isparent
+        LEFTARG = _ltree,
+       RIGHTARG = ltree,
+       PROCEDURE = _ltree_extract_isparent
 );
 
 CREATE FUNCTION _ltree_extract_risparent(_ltree,ltree)
 RETURNS ltree
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE OPERATOR ?<@ (
-        LEFTARG = _ltree, RIGHTARG = ltree, PROCEDURE = _ltree_extract_risparent
+        LEFTARG = _ltree,
+       RIGHTARG = ltree,
+       PROCEDURE = _ltree_extract_risparent
 );
 
 CREATE FUNCTION _ltq_extract_regex(_ltree,lquery)
 RETURNS ltree
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE OPERATOR ?~ (
-        LEFTARG = _ltree, RIGHTARG = lquery, PROCEDURE = _ltq_extract_regex
+        LEFTARG = _ltree,
+       RIGHTARG = lquery,
+       PROCEDURE = _ltq_extract_regex
 );
 
 CREATE FUNCTION _ltxtq_extract_exec(_ltree,ltxtquery)
 RETURNS ltree
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict,iscachable);
+LANGUAGE 'C' WITH (isstrict,iscachable);
 
 CREATE OPERATOR ?@ (
-        LEFTARG = _ltree, RIGHTARG = ltxtquery, PROCEDURE = _ltxtq_extract_exec
+        LEFTARG = _ltree,
+       RIGHTARG = ltxtquery,
+       PROCEDURE = _ltxtq_extract_exec
 );
 
 --GiST support for ltree[]
-create function _ltree_consistent(internal,internal,int2) returns bool as 'MODULE_PATHNAME' language 'C';
-create function _ltree_compress(internal) returns internal as 'MODULE_PATHNAME' language 'C';
-create function _ltree_penalty(internal,internal,internal) returns internal as 'MODULE_PATHNAME' language 'C' with(isstrict);
-create function _ltree_picksplit(internal, internal) returns internal as 'MODULE_PATHNAME' language 'C';
-create function _ltree_union(bytea, internal) returns int4 as 'MODULE_PATHNAME' language 'C';
-create function _ltree_same(internal, internal, internal) returns internal as 'MODULE_PATHNAME' language 'C';
+CREATE FUNCTION _ltree_consistent(internal,internal,int2)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
+CREATE FUNCTION _ltree_compress(internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
+CREATE FUNCTION _ltree_penalty(internal,internal,internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH(isstrict);
+CREATE FUNCTION _ltree_picksplit(internal, internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
+CREATE FUNCTION _ltree_union(bytea, internal)
+RETURNS int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
+CREATE FUNCTION _ltree_same(internal, internal, internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
 CREATE OPERATOR CLASS gist__ltree_ops
     DEFAULT FOR TYPE _ltree USING gist AS
@@ -589,6 +737,3 @@ CREATE OPERATOR CLASS gist__ltree_ops
        FUNCTION        6       _ltree_picksplit (internal, internal),
        FUNCTION        7       _ltree_same (internal, internal, internal),
        STORAGE         ltree_gist;
-
-
-END;
index 0dd6eaa63d00e1184f4a75c95be200f21399e95f..eea5c475ee9a3f37301d7100fffd4cfa9e667292 100644 (file)
@@ -1,16 +1,16 @@
-create table test ( path ltree);
-insert into test values ('Top');
-insert into test values ('Top.Science');
-insert into test values ('Top.Science.Astronomy');
-insert into test values ('Top.Science.Astronomy.Astrophysics');
-insert into test values ('Top.Science.Astronomy.Cosmology');
-insert into test values ('Top.Hobbies');
-insert into test values ('Top.Hobbies.Amateurs_Astronomy');
-insert into test values ('Top.Collections');
-insert into test values ('Top.Collections.Pictures');
-insert into test values ('Top.Collections.Pictures.Astronomy');
-insert into test values ('Top.Collections.Pictures.Astronomy.Stars');
-insert into test values ('Top.Collections.Pictures.Astronomy.Galaxies');
-insert into test values ('Top.Collections.Pictures.Astronomy.Astronauts');
-create index path_gist_idx on test using gist(path);
-create index path_idx on test using btree(path);
+CREATE TABLE test ( path ltree);
+INSERT INTO test VALUES ('Top');
+INSERT INTO test VALUES ('Top.Science');
+INSERT INTO test VALUES ('Top.Science.Astronomy');
+INSERT INTO test VALUES ('Top.Science.Astronomy.Astrophysics');
+INSERT INTO test VALUES ('Top.Science.Astronomy.Cosmology');
+INSERT INTO test VALUES ('Top.Hobbies');
+INSERT INTO test VALUES ('Top.Hobbies.Amateurs_Astronomy');
+INSERT INTO test VALUES ('Top.Collections');
+INSERT INTO test VALUES ('Top.Collections.Pictures');
+INSERT INTO test VALUES ('Top.Collections.Pictures.Astronomy');
+INSERT INTO test VALUES ('Top.Collections.Pictures.Astronomy.Stars');
+INSERT INTO test VALUES ('Top.Collections.Pictures.Astronomy.Galaxies');
+INSERT INTO test VALUES ('Top.Collections.Pictures.Astronomy.Astronauts');
+CREATE INDEX path_gist_idx ON test USING gist(path);
+CREATE INDEX path_idx ON test USING btree(path);
index 8da7e2841bed3eacf6dd316b4a23a08ebe2b0693..0d9defcca49d3446c0addab1fd560aeafea14d3b 100644 (file)
 \set ECHO none
+SET autocommit TO 'on';
+
 \i ltree.sql
 \set ECHO all
 
-select ''::ltree;
-select '1'::ltree;
-select '1.2'::ltree;
-select '1.2._3'::ltree;
-
-select subltree('Top.Child1.Child2',1,2);
-select subpath('Top.Child1.Child2',1,2);
-select subpath('Top.Child1.Child2',-1,1);
-select subpath('Top.Child1.Child2',0,-2);
-select subpath('Top.Child1.Child2',0,-1);
-select subpath('Top.Child1.Child2',0,0);
-select subpath('Top.Child1.Child2',1,0);
-select subpath('Top.Child1.Child2',0);
-select subpath('Top.Child1.Child2',1);
-
-select 'Top.Child1.Child2'::ltree || 'Child3'::text;
-select 'Top.Child1.Child2'::ltree || 'Child3'::ltree;
-select 'Top_0'::ltree || 'Top.Child1.Child2'::ltree;
-select 'Top.Child1.Child2'::ltree || ''::ltree;
-select ''::ltree || 'Top.Child1.Child2'::ltree;
-
-select lca('{la.2.3,1.2.3.4.5.6,}') is null;
-select lca('{la.2.3,1.2.3.4.5.6}') is null;
-select lca('{1.la.2.3,1.2.3.4.5.6}');
-select lca('{1.2.3,1.2.3.4.5.6}');
-select lca('1.la.2.3','1.2.3.4.5.6');
-select lca('1.2.3','1.2.3.4.5.6');
-select lca('1.2.2.3','1.2.3.4.5.6');
-select lca('1.2.2.3','1.2.3.4.5.6','');
-select lca('1.2.2.3','1.2.3.4.5.6','2');
-select lca('1.2.2.3','1.2.3.4.5.6','1');
-
-
-select '1'::lquery;
-select '4|3|2'::lquery;
-select '1.2'::lquery;
-select '1.4|3|2'::lquery;
-select '1.0'::lquery;
-select '4|3|2.0'::lquery;
-select '1.2.0'::lquery;
-select '1.4|3|2.0'::lquery;
-select '1.*'::lquery;
-select '4|3|2.*'::lquery;
-select '1.2.*'::lquery;
-select '1.4|3|2.*'::lquery;
-select '*.1.*'::lquery;
-select '*.4|3|2.*'::lquery;
-select '*.1.2.*'::lquery;
-select '*.1.4|3|2.*'::lquery;
-select '1.*.4|3|2'::lquery;
-select '1.*.4|3|2.0'::lquery;
-select '1.*.4|3|2.*{1,4}'::lquery;
-select '1.*.4|3|2.*{,4}'::lquery;
-select '1.*.4|3|2.*{1,}'::lquery;
-select '1.*.4|3|2.*{1}'::lquery;
-select 'qwerty%@*.tu'::lquery;
-
-select nlevel('1.2.3.4');
-select '1.2'::ltree  < '2.2'::ltree;
-select '1.2'::ltree  <= '2.2'::ltree;
-select '2.2'::ltree  = '2.2'::ltree;
-select '3.2'::ltree  >= '2.2'::ltree;
-select '3.2'::ltree  > '2.2'::ltree;
-
-select '1.2.3'::ltree @> '1.2.3.4'::ltree;
-select '1.2.3.4'::ltree @> '1.2.3.4'::ltree;
-select '1.2.3.4.5'::ltree @> '1.2.3.4'::ltree;
-select '1.3.3'::ltree @> '1.2.3.4'::ltree;
-
-select 'a.b.c.d.e'::ltree ~ 'a.b.c.d.e';
-select 'a.b.c.d.e'::ltree ~ 'A.b.c.d.e';
-select 'a.b.c.d.e'::ltree ~ 'A@.b.c.d.e';
-select 'aa.b.c.d.e'::ltree ~ 'A@.b.c.d.e';
-select 'aa.b.c.d.e'::ltree ~ 'A*.b.c.d.e';
-select 'aa.b.c.d.e'::ltree ~ 'A*@.b.c.d.e';
-select 'aa.b.c.d.e'::ltree ~ 'A*@|g.b.c.d.e';
-select 'g.b.c.d.e'::ltree ~ 'A*@|g.b.c.d.e';
-select 'a.b.c.d.e'::ltree ~ 'a.b.c.d.e';
-select 'a.b.c.d.e'::ltree ~ 'a.*.e';
-select 'a.b.c.d.e'::ltree ~ 'a.*{3}.e';
-select 'a.b.c.d.e'::ltree ~ 'a.*{2}.e';
-select 'a.b.c.d.e'::ltree ~ 'a.*{4}.e';
-select 'a.b.c.d.e'::ltree ~ 'a.*{,4}.e';
-select 'a.b.c.d.e'::ltree ~ 'a.*{2,}.e';
-select 'a.b.c.d.e'::ltree ~ 'a.*{2,4}.e';
-select 'a.b.c.d.e'::ltree ~ 'a.*{2,3}.e';
-select 'a.b.c.d.e'::ltree ~ 'a.*{2,3}';
-select 'a.b.c.d.e'::ltree ~ 'a.*{2,4}';
-select 'a.b.c.d.e'::ltree ~ 'a.*{2,5}';
-select 'a.b.c.d.e'::ltree ~ '*{2,3}.e';
-select 'a.b.c.d.e'::ltree ~ '*{2,4}.e';
-select 'a.b.c.d.e'::ltree ~ '*{2,5}.e';
-select 'a.b.c.d.e'::ltree ~ '*.e';
-select 'a.b.c.d.e'::ltree ~ '*.e.*';
-select 'a.b.c.d.e'::ltree ~ '*.d.*';
-select 'a.b.c.d.e'::ltree ~ '*.a.*.d.*';
-select 'a.b.c.d.e'::ltree ~ '*.!d.*';
-select 'a.b.c.d.e'::ltree ~ '*.!d';
-select 'a.b.c.d.e'::ltree ~ '!d.*';
-select 'a.b.c.d.e'::ltree ~ '!a.*';
-select 'a.b.c.d.e'::ltree ~ '*.!e';
-select 'a.b.c.d.e'::ltree ~ '*.!e.*';
-select 'a.b.c.d.e'::ltree ~ 'a.*.!e';
-select 'a.b.c.d.e'::ltree ~ 'a.*.!d';
-select 'a.b.c.d.e'::ltree ~ 'a.*.!d.*';
-select 'a.b.c.d.e'::ltree ~ 'a.*.!f.*';
-select 'a.b.c.d.e'::ltree ~ '*.a.*.!f.*';
-select 'a.b.c.d.e'::ltree ~ '*.a.*.!d.*';
-select 'a.b.c.d.e'::ltree ~ '*.a.!d.*';
-select 'a.b.c.d.e'::ltree ~ '*.a.!d';
-select 'a.b.c.d.e'::ltree ~ 'a.!d.*';
-select 'a.b.c.d.e'::ltree ~ '*.a.*.!d.*';
-select 'a.b.c.d.e'::ltree ~ '*.!b.*';
-select 'a.b.c.d.e'::ltree ~ '*.!b.c.*';
-select 'a.b.c.d.e'::ltree ~ '*.!b.*.c.*';
-select 'a.b.c.d.e'::ltree ~ '!b.*.c.*';
-select 'a.b.c.d.e'::ltree ~ '!b.b.*';
-select 'a.b.c.d.e'::ltree ~ '!b.*.e';
-select 'a.b.c.d.e'::ltree ~ '!b.!c.*.e';
-select 'a.b.c.d.e'::ltree ~ '!b.*.!c.*.e';
-select 'a.b.c.d.e'::ltree ~ '*{2}.!b.*.!c.*.e';
-select 'a.b.c.d.e'::ltree ~ '*{1}.!b.*.!c.*.e';
-select 'a.b.c.d.e'::ltree ~ '*{1}.!b.*{1}.!c.*.e';
-select 'a.b.c.d.e'::ltree ~ 'a.!b.*{1}.!c.*.e';
-select 'a.b.c.d.e'::ltree ~ '!b.*{1}.!c.*.e';
-select 'a.b.c.d.e'::ltree ~ '*.!b.*{1}.!c.*.e';
-select 'a.b.c.d.e'::ltree ~ '*.!b.*.!c.*.e';
-select 'a.b.c.d.e'::ltree ~ '!b.!c.*';
-select 'a.b.c.d.e'::ltree ~ '!b.*.!c.*';
-select 'a.b.c.d.e'::ltree ~ '*{2}.!b.*.!c.*';
-select 'a.b.c.d.e'::ltree ~ '*{1}.!b.*.!c.*';
-select 'a.b.c.d.e'::ltree ~ '*{1}.!b.*{1}.!c.*';
-select 'a.b.c.d.e'::ltree ~ 'a.!b.*{1}.!c.*';
-select 'a.b.c.d.e'::ltree ~ '!b.*{1}.!c.*';
-select 'a.b.c.d.e'::ltree ~ '*.!b.*{1}.!c.*';
-select 'a.b.c.d.e'::ltree ~ '*.!b.*.!c.*';
-
-select 'QWER_TY'::ltree ~ 'q%@*';
-select 'QWER_TY'::ltree ~ 'Q_t%@*';
-select 'QWER_GY'::ltree ~ 'q_t%@*';
+SELECT ''::ltree;
+SELECT '1'::ltree;
+SELECT '1.2'::ltree;
+SELECT '1.2._3'::ltree;
+
+SELECT subltree('Top.Child1.Child2',1,2);
+SELECT subpath('Top.Child1.Child2',1,2);
+SELECT subpath('Top.Child1.Child2',-1,1);
+SELECT subpath('Top.Child1.Child2',0,-2);
+SELECT subpath('Top.Child1.Child2',0,-1);
+SELECT subpath('Top.Child1.Child2',0,0);
+SELECT subpath('Top.Child1.Child2',1,0);
+SELECT subpath('Top.Child1.Child2',0);
+SELECT subpath('Top.Child1.Child2',1);
+
+SELECT 'Top.Child1.Child2'::ltree || 'Child3'::text;
+SELECT 'Top.Child1.Child2'::ltree || 'Child3'::ltree;
+SELECT 'Top_0'::ltree || 'Top.Child1.Child2'::ltree;
+SELECT 'Top.Child1.Child2'::ltree || ''::ltree;
+SELECT ''::ltree || 'Top.Child1.Child2'::ltree;
+
+SELECT lca('{la.2.3,1.2.3.4.5.6,}') IS NULL;
+SELECT lca('{la.2.3,1.2.3.4.5.6}') IS NULL;
+SELECT lca('{1.la.2.3,1.2.3.4.5.6}');
+SELECT lca('{1.2.3,1.2.3.4.5.6}');
+SELECT lca('1.la.2.3','1.2.3.4.5.6');
+SELECT lca('1.2.3','1.2.3.4.5.6');
+SELECT lca('1.2.2.3','1.2.3.4.5.6');
+SELECT lca('1.2.2.3','1.2.3.4.5.6','');
+SELECT lca('1.2.2.3','1.2.3.4.5.6','2');
+SELECT lca('1.2.2.3','1.2.3.4.5.6','1');
+
+
+SELECT '1'::lquery;
+SELECT '4|3|2'::lquery;
+SELECT '1.2'::lquery;
+SELECT '1.4|3|2'::lquery;
+SELECT '1.0'::lquery;
+SELECT '4|3|2.0'::lquery;
+SELECT '1.2.0'::lquery;
+SELECT '1.4|3|2.0'::lquery;
+SELECT '1.*'::lquery;
+SELECT '4|3|2.*'::lquery;
+SELECT '1.2.*'::lquery;
+SELECT '1.4|3|2.*'::lquery;
+SELECT '*.1.*'::lquery;
+SELECT '*.4|3|2.*'::lquery;
+SELECT '*.1.2.*'::lquery;
+SELECT '*.1.4|3|2.*'::lquery;
+SELECT '1.*.4|3|2'::lquery;
+SELECT '1.*.4|3|2.0'::lquery;
+SELECT '1.*.4|3|2.*{1,4}'::lquery;
+SELECT '1.*.4|3|2.*{,4}'::lquery;
+SELECT '1.*.4|3|2.*{1,}'::lquery;
+SELECT '1.*.4|3|2.*{1}'::lquery;
+SELECT 'qwerty%@*.tu'::lquery;
+
+SELECT nlevel('1.2.3.4');
+SELECT '1.2'::ltree  < '2.2'::ltree;
+SELECT '1.2'::ltree  <= '2.2'::ltree;
+SELECT '2.2'::ltree  = '2.2'::ltree;
+SELECT '3.2'::ltree  >= '2.2'::ltree;
+SELECT '3.2'::ltree  > '2.2'::ltree;
+
+SELECT '1.2.3'::ltree @> '1.2.3.4'::ltree;
+SELECT '1.2.3.4'::ltree @> '1.2.3.4'::ltree;
+SELECT '1.2.3.4.5'::ltree @> '1.2.3.4'::ltree;
+SELECT '1.3.3'::ltree @> '1.2.3.4'::ltree;
+
+SELECT 'a.b.c.d.e'::ltree ~ 'a.b.c.d.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'A.b.c.d.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'A@.b.c.d.e';
+SELECT 'aa.b.c.d.e'::ltree ~ 'A@.b.c.d.e';
+SELECT 'aa.b.c.d.e'::ltree ~ 'A*.b.c.d.e';
+SELECT 'aa.b.c.d.e'::ltree ~ 'A*@.b.c.d.e';
+SELECT 'aa.b.c.d.e'::ltree ~ 'A*@|g.b.c.d.e';
+SELECT 'g.b.c.d.e'::ltree ~ 'A*@|g.b.c.d.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.b.c.d.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{3}.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{2}.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{4}.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{,4}.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{2,}.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{2,4}.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{2,3}.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{2,3}';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{2,4}';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*{2,5}';
+SELECT 'a.b.c.d.e'::ltree ~ '*{2,3}.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*{2,4}.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*{2,5}.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*.e.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.d.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.a.*.d.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!d.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!d';
+SELECT 'a.b.c.d.e'::ltree ~ '!d.*';
+SELECT 'a.b.c.d.e'::ltree ~ '!a.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!e';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!e.*';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*.!e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*.!d';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*.!d.*';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.*.!f.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.a.*.!f.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.a.*.!d.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.a.!d.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.a.!d';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.!d.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.a.*.!d.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!b.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!b.c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!b.*.c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.*.c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.b.*';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.*.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*{2}.!b.*.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*{1}.!b.*.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*{1}.!b.*{1}.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.!b.*{1}.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.*{1}.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!b.*{1}.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!b.*.!c.*.e';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.*.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*{2}.!b.*.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*{1}.!b.*.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*{1}.!b.*{1}.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ 'a.!b.*{1}.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '!b.*{1}.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!b.*{1}.!c.*';
+SELECT 'a.b.c.d.e'::ltree ~ '*.!b.*.!c.*';
+
+SELECT 'QWER_TY'::ltree ~ 'q%@*';
+SELECT 'QWER_TY'::ltree ~ 'Q_t%@*';
+SELECT 'QWER_GY'::ltree ~ 'q_t%@*';
 
 --ltxtquery
-select '!tree & aWdf@*'::ltxtquery;
-select 'tree & aw_qw%*'::ltxtquery;
-select 'ltree.awdfg'::ltree @ '!tree & aWdf@*'::ltxtquery;
-select 'tree.awdfg'::ltree @ '!tree & aWdf@*'::ltxtquery;
-select 'tree.awdfg'::ltree @ '!tree | aWdf@*'::ltxtquery;
-select 'tree.awdfg'::ltree @ 'tree | aWdf@*'::ltxtquery;
-select 'tree.awdfg'::ltree @ 'tree & aWdf@*'::ltxtquery;
-select 'tree.awdfg'::ltree @ 'tree & aWdf@'::ltxtquery;
-select 'tree.awdfg'::ltree @ 'tree & aWdf*'::ltxtquery;
-select 'tree.awdfg'::ltree @ 'tree & aWdf'::ltxtquery;
-select 'tree.awdfg'::ltree @ 'tree & awdf*'::ltxtquery;
-select 'tree.awdfg'::ltree @ 'tree & aWdfg@'::ltxtquery;
-select 'tree.awdfg_qwerty'::ltree @ 'tree & aw_qw%*'::ltxtquery;
-select 'tree.awdfg_qwerty'::ltree @ 'tree & aw_rw%*'::ltxtquery;
+SELECT '!tree & aWdf@*'::ltxtquery;
+SELECT 'tree & aw_qw%*'::ltxtquery;
+SELECT 'ltree.awdfg'::ltree @ '!tree & aWdf@*'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ '!tree & aWdf@*'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ '!tree | aWdf@*'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ 'tree | aWdf@*'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ 'tree & aWdf@*'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ 'tree & aWdf@'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ 'tree & aWdf*'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ 'tree & aWdf'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ 'tree & awdf*'::ltxtquery;
+SELECT 'tree.awdfg'::ltree @ 'tree & aWdfg@'::ltxtquery;
+SELECT 'tree.awdfg_qwerty'::ltree @ 'tree & aw_qw%*'::ltxtquery;
+SELECT 'tree.awdfg_qwerty'::ltree @ 'tree & aw_rw%*'::ltxtquery;
 
 --arrays
 
-select '{1.2.3}'::ltree[] @> '1.2.3.4';
-select '{1.2.3.4}'::ltree[] @> '1.2.3.4';
-select '{1.2.3.4.5}'::ltree[] @> '1.2.3.4';
-select '{1.3.3}'::ltree[] @> '1.2.3.4';
-select '{5.67.8, 1.2.3}'::ltree[] @> '1.2.3.4';
-select '{5.67.8, 1.2.3.4}'::ltree[] @> '1.2.3.4';
-select '{5.67.8, 1.2.3.4.5}'::ltree[] @> '1.2.3.4';
-select '{5.67.8, 1.3.3}'::ltree[] @> '1.2.3.4';
-select '{1.2.3, 7.12.asd}'::ltree[] @> '1.2.3.4';
-select '{1.2.3.4, 7.12.asd}'::ltree[] @> '1.2.3.4';
-select '{1.2.3.4.5, 7.12.asd}'::ltree[] @> '1.2.3.4';
-select '{1.3.3, 7.12.asd}'::ltree[] @> '1.2.3.4';
-select '{ltree.asd, tree.awdfg}'::ltree[] @ 'tree & aWdfg@'::ltxtquery;
-select '{j.k.l.m, g.b.c.d.e}'::ltree[] ~ 'A*@|g.b.c.d.e';
+SELECT '{1.2.3}'::ltree[] @> '1.2.3.4';
+SELECT '{1.2.3.4}'::ltree[] @> '1.2.3.4';
+SELECT '{1.2.3.4.5}'::ltree[] @> '1.2.3.4';
+SELECT '{1.3.3}'::ltree[] @> '1.2.3.4';
+SELECT '{5.67.8, 1.2.3}'::ltree[] @> '1.2.3.4';
+SELECT '{5.67.8, 1.2.3.4}'::ltree[] @> '1.2.3.4';
+SELECT '{5.67.8, 1.2.3.4.5}'::ltree[] @> '1.2.3.4';
+SELECT '{5.67.8, 1.3.3}'::ltree[] @> '1.2.3.4';
+SELECT '{1.2.3, 7.12.asd}'::ltree[] @> '1.2.3.4';
+SELECT '{1.2.3.4, 7.12.asd}'::ltree[] @> '1.2.3.4';
+SELECT '{1.2.3.4.5, 7.12.asd}'::ltree[] @> '1.2.3.4';
+SELECT '{1.3.3, 7.12.asd}'::ltree[] @> '1.2.3.4';
+SELECT '{ltree.asd, tree.awdfg}'::ltree[] @ 'tree & aWdfg@'::ltxtquery;
+SELECT '{j.k.l.m, g.b.c.d.e}'::ltree[] ~ 'A*@|g.b.c.d.e';
 
 --exractors
-select ('{3456,1.2.3.34}'::ltree[] ?@> '1.2.3.4') is null;
-select '{3456,1.2.3}'::ltree[] ?@> '1.2.3.4';
-select '{3456,1.2.3.4}'::ltree[] ?<@ '1.2.3';
-select ('{3456,1.2.3.4}'::ltree[] ?<@ '1.2.5') is null;
-select '{ltree.asd, tree.awdfg}'::ltree[] ?@ 'tree & aWdfg@'::ltxtquery;
-select '{j.k.l.m, g.b.c.d.e}'::ltree[] ?~ 'A*@|g.b.c.d.e';
-
-create table ltreetest (t ltree);
-\copy ltreetest from 'data/ltree.data'
-
-select * from ltreetest where t <  '12.3' order by t asc;
-select * from ltreetest where t <= '12.3' order by t asc;
-select * from ltreetest where t =  '12.3' order by t asc;
-select * from ltreetest where t >= '12.3' order by t asc;
-select * from ltreetest where t >  '12.3' order by t asc;
-select * from ltreetest where t @> '1.1.1' order by t asc;
-select * from ltreetest where t <@ '1.1.1' order by t asc;
-select * from ltreetest where t ~ '1.1.1.*' order by t asc;
-select * from ltreetest where t ~ '*.1' order by t asc;
-select * from ltreetest where t ~ '23.*.1' order by t asc;
-select * from ltreetest where t ~ '23.*{1}.1' order by t asc;
-select * from ltreetest where t @ '23 & 1' order by t asc;
+SELECT ('{3456,1.2.3.34}'::ltree[] ?@> '1.2.3.4') is null;
+SELECT '{3456,1.2.3}'::ltree[] ?@> '1.2.3.4';
+SELECT '{3456,1.2.3.4}'::ltree[] ?<@ '1.2.3';
+SELECT ('{3456,1.2.3.4}'::ltree[] ?<@ '1.2.5') is null;
+SELECT '{ltree.asd, tree.awdfg}'::ltree[] ?@ 'tree & aWdfg@'::ltxtquery;
+SELECT '{j.k.l.m, g.b.c.d.e}'::ltree[] ?~ 'A*@|g.b.c.d.e';
+
+CREATE TABLE ltreetest (t ltree);
+\copy ltreetest FROM 'data/ltree.data'
+
+SELECT * FROM ltreetest WHERE t <  '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t <= '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t =  '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t >= '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t >  '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t @> '1.1.1' order by t asc;
+SELECT * FROM ltreetest WHERE t <@ '1.1.1' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '1.1.1.*' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '*.1' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '23.*.1' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '23.*{1}.1' order by t asc;
+SELECT * FROM ltreetest WHERE t @ '23 & 1' order by t asc;
 
 create unique index tstidx on ltreetest (t);
 set enable_seqscan=off;
 
-select * from ltreetest where t <  '12.3' order by t asc;
-select * from ltreetest where t <= '12.3' order by t asc;
-select * from ltreetest where t =  '12.3' order by t asc;
-select * from ltreetest where t >= '12.3' order by t asc;
-select * from ltreetest where t >  '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t <  '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t <= '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t =  '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t >= '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t >  '12.3' order by t asc;
 
 drop index tstidx;
 create index tstidx on ltreetest using gist (t);
 set enable_seqscan=off;
 
-select * from ltreetest where t <  '12.3' order by t asc;
-select * from ltreetest where t <= '12.3' order by t asc;
-select * from ltreetest where t =  '12.3' order by t asc;
-select * from ltreetest where t >= '12.3' order by t asc;
-select * from ltreetest where t >  '12.3' order by t asc;
-select * from ltreetest where t @> '1.1.1' order by t asc;
-select * from ltreetest where t <@ '1.1.1' order by t asc;
-select * from ltreetest where t ~ '1.1.1.*' order by t asc;
-select * from ltreetest where t ~ '*.1' order by t asc;
-select * from ltreetest where t ~ '23.*.1' order by t asc;
-select * from ltreetest where t ~ '23.*{1}.1' order by t asc;
-select * from ltreetest where t @ '23 & 1' order by t asc;
+SELECT * FROM ltreetest WHERE t <  '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t <= '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t =  '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t >= '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t >  '12.3' order by t asc;
+SELECT * FROM ltreetest WHERE t @> '1.1.1' order by t asc;
+SELECT * FROM ltreetest WHERE t <@ '1.1.1' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '1.1.1.*' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '*.1' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '23.*.1' order by t asc;
+SELECT * FROM ltreetest WHERE t ~ '23.*{1}.1' order by t asc;
+SELECT * FROM ltreetest WHERE t @ '23 & 1' order by t asc;
 
 create table _ltreetest (t ltree[]);
-\copy _ltreetest from 'data/_ltree.data'
+\copy _ltreetest FROM 'data/_ltree.data'
 
-select count(*) from _ltreetest where t @> '1.1.1' ;
-select count(*) from _ltreetest where t <@ '1.1.1' ;
-select count(*) from _ltreetest where t ~ '1.1.1.*' ;
-select count(*) from _ltreetest where t ~ '*.1' ;
-select count(*) from _ltreetest where t ~ '23.*.1' ;
-select count(*) from _ltreetest where t ~ '23.*{1}.1' ;
-select count(*) from _ltreetest where t @ '23 & 1' ;
+SELECT count(*) FROM _ltreetest WHERE t @> '1.1.1' ;
+SELECT count(*) FROM _ltreetest WHERE t <@ '1.1.1' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '1.1.1.*' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '*.1' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '23.*.1' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '23.*{1}.1' ;
+SELECT count(*) FROM _ltreetest WHERE t @ '23 & 1' ;
 
 create index _tstidx on _ltreetest using gist (t);
 set enable_seqscan=off;
 
-select count(*) from _ltreetest where t @> '1.1.1' ;
-select count(*) from _ltreetest where t <@ '1.1.1' ;
-select count(*) from _ltreetest where t ~ '1.1.1.*' ;
-select count(*) from _ltreetest where t ~ '*.1' ;
-select count(*) from _ltreetest where t ~ '23.*.1' ;
-select count(*) from _ltreetest where t ~ '23.*{1}.1' ;
-select count(*) from _ltreetest where t @ '23 & 1' ;
+SELECT count(*) FROM _ltreetest WHERE t @> '1.1.1' ;
+SELECT count(*) FROM _ltreetest WHERE t <@ '1.1.1' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '1.1.1.*' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '*.1' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '23.*.1' ;
+SELECT count(*) FROM _ltreetest WHERE t ~ '23.*{1}.1' ;
+SELECT count(*) FROM _ltreetest WHERE t @ '23 & 1' ;
 
index 39d4fd51e9b128b5c621a4ddf58af863239042e6..ddf32748137e68208c6014b8cf5ed804482ebaeb 100644 (file)
@@ -9,38 +9,48 @@
 
 -- Return the pid of the backend.
 --
-create function backend_pid() returns int4
-  as 'MODULE_PATHNAME'
-  language 'C';
+
+-- Adjust this setting to control where the objects get created.
+SET search_path = public;
+
+SET autocommit TO 'on';
+
+CREATE OR REPLACE FUNCTION backend_pid()
+RETURNS int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
 -- Unlisten from a relation.
 --
-create function "unlisten"(name) returns int4
-  as 'MODULE_PATHNAME'
-  language 'C';
+CREATE OR REPLACE FUNCTION "unlisten"(name)
+RETURNS int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
 -- Unlisten from all relations for this backend.
 --
-create function "unlisten"() returns int4
-  as 'select "unlisten"(''*'')'
-  language 'sql';
+CREATE OR REPLACE FUNCTION "unlisten"()
+RETURNS int4
+AS 'SELECT "unlisten"(''*'')'
+LANGUAGE 'SQL';
 
 -- min(x,y)
 --
-create function min(int4,int4) returns int4
-  as 'MODULE_PATHNAME'
-  language 'C';
+CREATE OR REPLACE FUNCTION min(int4,int4)
+RETURNS int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
 -- max(x,y)
 --
-create function max(int4,int4) returns int4
-  as 'MODULE_PATHNAME'
-  language 'C';
+CREATE OR REPLACE FUNCTION max(int4,int4)
+RETURNS int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
 -- Return the number of active listeners on a relation
 --
-create function active_listeners(text) returns int4
-  as 'MODULE_PATHNAME'
-  language 'C';
-
--- end of file
+CREATE OR REPLACE FUNCTION active_listeners(text)
+RETURNS int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
index 283876258b8a5e2b1647e1f3d5bbd093004511e2..47213779b465137b217d28bab9395cc7b5e914ab 100644 (file)
@@ -1,6 +1,9 @@
-DROP FUNCTION noup ();
+-- Adjust this setting to control where the objects get created.
+SET search_path = public;
 
-CREATE FUNCTION noup ()
-       RETURNS trigger
-       AS 'MODULE_PATHNAME'
-       LANGUAGE 'C';
+SET autocommit TO 'on';
+
+CREATE OR REPLACE FUNCTION noup ()
+RETURNS trigger
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
index 8613800056bcbd0819ea411edec779865f2c4eb7..155d54e7073e727caf7d159649e85b14ca177c26 100644 (file)
@@ -245,6 +245,10 @@ sql_conn(const char *dbName, struct options * my_opts)
        if (pgpass != NULL)
                free(pgpass);
 
+       sql_exec(conn, "SET search_path = public;", 0);
+
+       sql_exec(conn, "SET autocommit TO 'on';", 0);
+
        /* return the conn if good */
        return conn;
 }
index 8bb9839aeb2bfe419d81b5990ae2728a49e234ac..27343f56bd49ff54dd3031615ba8e38e9ef746d7 100644 (file)
@@ -1,7 +1,7 @@
 /* -------------------------------------------------------------------------
  * pg_dumplo
  *
- * $Header: /cvsroot/pgsql/contrib/pg_dumplo/Attic/main.c,v 1.12 2002/09/05 21:01:16 tgl Exp $
+ * $Header: /cvsroot/pgsql/contrib/pg_dumplo/Attic/main.c,v 1.13 2002/10/18 18:41:20 momjian Exp $
  *
  *                                     Karel Zak 1999-2000
  * -------------------------------------------------------------------------
@@ -191,6 +191,10 @@ main(int argc, char **argv)
        if (pgLO->action != ACTION_SHOW)
                index_file(pgLO);
 
+       PQexec(pgLO->conn, "SET search_path = public");
+
+       PQexec(pgLO->conn, "SET autocommit TO 'on'");
+
        PQexec(pgLO->conn, "BEGIN");
 
        switch (pgLO->action)
index 2eadf6254194493378cbb169c3111ebbcbf400d7..f32b373c8576b9efea714a6ecb83705544c0f5bc 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Header: /cvsroot/pgsql/contrib/pgbench/pgbench.c,v 1.20 2002/10/07 05:10:02 ishii Exp $
+ * $Header: /cvsroot/pgsql/contrib/pgbench/pgbench.c,v 1.21 2002/10/18 18:41:20 momjian Exp $
  *
  * pgbench: a simple TPC-B like benchmark program for PostgreSQL
  * written by Tatsuo Ishii
@@ -117,7 +117,8 @@ static PGconn *
 doConnect()
 {
        PGconn     *con;
-
+       PGresult   *res;
        con = PQsetdbLogin(pghost, pgport, pgoptions, pgtty, dbName,
                                           login, pwd);
        if (con == NULL)
@@ -138,6 +139,22 @@ doConnect()
 
                return (NULL);
        }
+
+       res = PQexec(con, "SET search_path = public");
+       if (PQresultStatus(res) != PGRES_COMMAND_OK)
+       {
+               fprintf(stderr, "%s", PQerrorMessage(con));
+               exit(1);
+       }
+       PQclear(res);
+       res = PQexec(con, "SET autocommit TO 'on'");
+       if (PQresultStatus(res) != PGRES_COMMAND_OK)
+       {
+               fprintf(stderr, "%s", PQerrorMessage(con));
+               exit(1);
+       }
+       PQclear(res);
+
        return (con);
 }
 
@@ -499,6 +516,7 @@ init(void)
                fprintf(stderr, "%s", PQerrorMessage(con));
                exit(1);
        }
+       PQclear(res);
 
        for (i = 0; i < nbranches * tps; i++)
        {
@@ -589,6 +607,7 @@ init(void)
                                fprintf(stderr, "%s", PQerrorMessage(con));
                                exit(1);
                        }
+                       PQclear(res);
 #endif   /* NOT_USED */
                }
        }
@@ -601,6 +620,7 @@ init(void)
                fprintf(stderr, "%s", PQerrorMessage(con));
                exit(1);
        }
+       PQclear(res);
        fprintf(stderr, "done.\n");
 
        PQfinish(con);
@@ -833,6 +853,7 @@ main(int argc, char **argv)
                fprintf(stderr, "%s", PQerrorMessage(con));
                exit(1);
        }
+       PQclear(res);
        tps = atoi(PQgetvalue(res, 0, 0));
        if (tps < 0)
        {
index e7fd632df2fc0245ba48e1ef5e4dda8bcbda9b6c..1f2ccd82b4a029bfd1d5c33ead91d7306cde4322 100644 (file)
@@ -1,8 +1,9 @@
 --
 -- Blowfish cipher
 --
+SET autocommit TO 'on';
 -- some standard Blowfish testvalues
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('0000000000000000', 'hex'),
 decode('0000000000000000', 'hex'),
 'bf-ecb/pad:none'), 'hex');
@@ -11,7 +12,7 @@ decode('0000000000000000', 'hex'),
  4ef997456198dd78
 (1 row)
 
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('ffffffffffffffff', 'hex'),
 decode('ffffffffffffffff', 'hex'),
 'bf-ecb/pad:none'), 'hex');
@@ -20,7 +21,7 @@ decode('ffffffffffffffff', 'hex'),
  51866fd5b85ecb8a
 (1 row)
 
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('1000000000000001', 'hex'),
 decode('3000000000000000', 'hex'),
 'bf-ecb/pad:none'), 'hex');
@@ -29,7 +30,7 @@ decode('3000000000000000', 'hex'),
  7d856f9a613063f2
 (1 row)
 
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('1111111111111111', 'hex'),
 decode('1111111111111111', 'hex'),
 'bf-ecb/pad:none'), 'hex');
@@ -38,7 +39,7 @@ decode('1111111111111111', 'hex'),
  2466dd878b963c9d
 (1 row)
 
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('0123456789abcdef', 'hex'),
 decode('fedcba9876543210', 'hex'),
 'bf-ecb/pad:none'), 'hex');
@@ -47,7 +48,7 @@ decode('fedcba9876543210', 'hex'),
  0aceab0fc6a0a28d
 (1 row)
 
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('01a1d6d039776742', 'hex'),
 decode('fedcba9876543210', 'hex'),
 'bf-ecb/pad:none'), 'hex');
@@ -56,7 +57,7 @@ decode('fedcba9876543210', 'hex'),
  3273b8badc9e9e15
 (1 row)
 
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('ffffffffffffffff', 'hex'),
 decode('0000000000000000', 'hex'),
 'bf-ecb/pad:none'), 'hex');
@@ -66,7 +67,7 @@ decode('0000000000000000', 'hex'),
 (1 row)
 
 -- setkey
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('fedcba9876543210', 'hex'),
 decode('f0e1d2c3b4a5968778695a4b3c2d1e0f', 'hex'),
 'bf-ecb/pad:none'), 'hex');
@@ -76,7 +77,7 @@ decode('f0e1d2c3b4a5968778695a4b3c2d1e0f', 'hex'),
 (1 row)
 
 -- with padding
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('01234567890123456789', 'hex'),
 decode('33443344334433443344334433443344', 'hex'),
 'bf-ecb'), 'hex');
@@ -87,7 +88,7 @@ decode('33443344334433443344334433443344', 'hex'),
 
 -- cbc
 -- 28 bytes key
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('6b77b4d63006dee605b156e27403979358deb9e7154616d959f1652bd5', 'hex'),
 decode('37363534333231204e6f77206973207468652074696d6520666f7220', 'hex'),
 'bf-cbc'), 'hex');
@@ -97,7 +98,7 @@ decode('37363534333231204e6f77206973207468652074696d6520666f7220', 'hex'),
 (1 row)
 
 -- 29 bytes key
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('6b77b4d63006dee605b156e27403979358deb9e7154616d959f1652bd5ff92cc', 'hex'),
 decode('37363534333231204e6f77206973207468652074696d6520666f722000', 'hex'),
 'bf-cbc'), 'hex');
index 7910a4e02eec1546c8c03dca10ccb6d11c860b5d..9b9297493134d31e430ff5d7c8cb273ac78907cf 100644 (file)
@@ -1,26 +1,28 @@
 --
 -- crypt() and gen_salt(): bcrypt
 --
-select crypt('', '$2a$06$RQiOJ.3ELirrXwxIZY8q0O');
+SET autocommit TO 'on';
+SELECT crypt('', '$2a$06$RQiOJ.3ELirrXwxIZY8q0O');
                             crypt                             
 --------------------------------------------------------------
  $2a$06$RQiOJ.3ELirrXwxIZY8q0OlGbBEpDmx7IRZlNYvGJ1SHXwNi2cEKK
 (1 row)
 
-select crypt('foox', '$2a$06$RQiOJ.3ELirrXwxIZY8q0O');
+SELECT crypt('foox', '$2a$06$RQiOJ.3ELirrXwxIZY8q0O');
                             crypt                             
 --------------------------------------------------------------
  $2a$06$RQiOJ.3ELirrXwxIZY8q0OR3CVJrAfda1z26CCHPnB6mmVZD8p0/C
 (1 row)
 
-create table ctest (data text, res text, salt text);
-insert into ctest values ('password', '', '');
-update ctest set salt = gen_salt('bf', 8);
-update ctest set res = crypt(data, salt);
-select res = crypt(data, res) as "worked" from ctest;
+CREATE TABLE ctest (data text, res text, salt text);
+INSERT INTO ctest VALUES ('password', '', '');
+UPDATE ctest SET salt = gen_salt('bf', 8);
+UPDATE ctest SET res = crypt(data, salt);
+SELECT res = crypt(data, res) AS "worked"
+FROM ctest;
  worked 
 --------
  t
 (1 row)
 
-drop table ctest;
+DROP TABLE ctest;
index 76a756eada29e92198984380c4e9b61b8e3243c1..574a45bae7a70dd7e638db833f1d3d13fee97348 100644 (file)
@@ -1,26 +1,28 @@
 --
 -- crypt() and gen_salt(): crypt-des
 --
-select crypt('', 'NB');
+SET autocommit TO 'on';
+SELECT crypt('', 'NB');
      crypt     
 ---------------
  NBPx/38Y48kHg
 (1 row)
 
-select crypt('foox', 'NB');
+SELECT crypt('foox', 'NB');
      crypt     
 ---------------
  NB53EGGqrrb5E
 (1 row)
 
-create table ctest (data text, res text, salt text);
-insert into ctest values ('password', '', '');
-update ctest set salt = gen_salt('des');
-update ctest set res = crypt(data, salt);
-select res = crypt(data, res) as "worked" from ctest;
+CREATE TABLE ctest (data text, res text, salt text);
+INSERT INTO ctest VALUES ('password', '', '');
+UPDATE ctest SET salt = gen_salt('des');
+UPDATE ctest SET res = crypt(data, salt);
+SELECT res = crypt(data, res) AS "worked"
+FROM ctest;
  worked 
 --------
  t
 (1 row)
 
-drop table ctest;
+DROP TABLE ctest;
index 4bd2f33a9fd952294a0beb62091dba23ba6b96d3..545236d6542f8c5f2f2383215778121fcf0666c9 100644 (file)
@@ -1,26 +1,28 @@
 --
 -- crypt() and gen_salt(): md5
 --
-select crypt('', '$1$Szzz0yzz');
+SET autocommit TO 'on';
+SELECT crypt('', '$1$Szzz0yzz');
                crypt                
 ------------------------------------
  $1$Szzz0yzz$To38XrR3BsbXQW2ZpfKjF1
 (1 row)
 
-select crypt('foox', '$1$Szzz0yzz');
+SELECT crypt('foox', '$1$Szzz0yzz');
                crypt                
 ------------------------------------
  $1$Szzz0yzz$IYL49cd3t9bllsA7Jmz1M1
 (1 row)
 
-create table ctest (data text, res text, salt text);
-insert into ctest values ('password', '', '');
-update ctest set salt = gen_salt('md5');
-update ctest set res = crypt(data, salt);
-select res = crypt(data, res) as "worked" from ctest;
+CREATE TABLE ctest (data text, res text, salt text);
+INSERT INTO ctest VALUES ('password', '', '');
+UPDATE ctest SET salt = gen_salt('md5');
+UPDATE ctest SET res = crypt(data, salt);
+SELECT res = crypt(data, res) AS "worked"
+FROM ctest;
  worked 
 --------
  t
 (1 row)
 
-drop table ctest;
+DROP TABLE ctest;
index d247b552b2fd5325952134a25c3399ebe2bf1dfa..b2593fc16be3e02e45f25eb945ae4d37ae31b54f 100644 (file)
@@ -1,26 +1,28 @@
 --
 -- crypt() and gen_salt(): extended des
 --
-select crypt('', '_J9..j2zz');
+SET autocommit TO 'on';
+SELECT crypt('', '_J9..j2zz');
         crypt         
 ----------------------
  _J9..j2zzR/nIRDK3pPc
 (1 row)
 
-select crypt('foox', '_J9..j2zz');
+SELECT crypt('foox', '_J9..j2zz');
         crypt         
 ----------------------
  _J9..j2zzAYKMvO2BYRY
 (1 row)
 
-create table ctest (data text, res text, salt text);
-insert into ctest values ('password', '', '');
-update ctest set salt = gen_salt('xdes', 1001);
-update ctest set res = crypt(data, salt);
-select res = crypt(data, res) as "worked" from ctest;
+CREATE TABLE ctest (data text, res text, salt text);
+INSERT INTO ctest VALUES ('password', '', '');
+UPDATE ctest SET salt = gen_salt('xdes', 1001);
+UPDATE ctest SET res = crypt(data, salt);
+SELECT res = crypt(data, res) AS "worked"
+FROM ctest;
  worked 
 --------
  t
 (1 row)
 
-drop table ctest;
+DROP TABLE ctest;
index 5cd55ce440efc57ad44df9f526d34bf3bf494060..dedd5afe711daaedb94be7e0c2ded5ea2896926d 100644 (file)
@@ -1,7 +1,8 @@
 --
 -- HMAC-MD5
 --
-select encode(hmac(
+SET autocommit TO 'on';
+SELECT encode(hmac(
 'Hi There',
 decode('0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b', 'hex'),
 'md5'), 'hex');
@@ -11,7 +12,7 @@ decode('0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b', 'hex'),
 (1 row)
 
 -- 2
-select encode(hmac(
+SELECT encode(hmac(
 'Jefe',
 'what do ya want for nothing?',
 'md5'), 'hex');
@@ -21,7 +22,7 @@ select encode(hmac(
 (1 row)
 
 -- 3
-select encode(hmac(
+SELECT encode(hmac(
 decode('dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd', 'hex'),
 decode('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'hex'),
 'md5'), 'hex');
@@ -31,7 +32,7 @@ decode('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'hex'),
 (1 row)
 
 -- 4
-select encode(hmac(
+SELECT encode(hmac(
 decode('cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd', 'hex'),
 decode('0102030405060708090a0b0c0d0e0f10111213141516171819', 'hex'),
 'md5'), 'hex');
@@ -41,7 +42,7 @@ decode('0102030405060708090a0b0c0d0e0f10111213141516171819', 'hex'),
 (1 row)
 
 -- 5
-select encode(hmac(
+SELECT encode(hmac(
 'Test With Truncation',
 decode('0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c', 'hex'),
 'md5'), 'hex');
@@ -51,7 +52,7 @@ decode('0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c', 'hex'),
 (1 row)
 
 -- 6
-select encode(hmac(
+SELECT encode(hmac(
 'Test Using Larger Than Block-Size Key - Hash Key First',
 decode('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'hex'),
 'md5'), 'hex');
@@ -61,7 +62,7 @@ decode('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 (1 row)
 
 -- 7
-select encode(hmac(
+SELECT encode(hmac(
 'Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data',
 decode('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'hex'),
 'md5'), 'hex');
index e4739fe5f3d1e7f532d03ceb49ccc89eda2c13fd..4ccb0f101b138e3850ba8529201c644faf511a2c 100644 (file)
@@ -1,7 +1,8 @@
 --
 -- HMAC-MD5
 --
-select encode(hmac(
+SET autocommit TO 'on';
+SELECT encode(hmac(
 'Hi There',
 decode('0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b', 'hex'),
 'sha1'), 'hex');
@@ -11,7 +12,7 @@ decode('0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b', 'hex'),
 (1 row)
 
 -- 2
-select encode(hmac(
+SELECT encode(hmac(
 'Jefe',
 'what do ya want for nothing?',
 'sha1'), 'hex');
@@ -21,7 +22,7 @@ select encode(hmac(
 (1 row)
 
 -- 3
-select encode(hmac(
+SELECT encode(hmac(
 decode('dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd', 'hex'),
 decode('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'hex'),
 'sha1'), 'hex');
@@ -31,7 +32,7 @@ decode('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'hex'),
 (1 row)
 
 -- 4
-select encode(hmac(
+SELECT encode(hmac(
 decode('cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd', 'hex'),
 decode('0102030405060708090a0b0c0d0e0f10111213141516171819', 'hex'),
 'sha1'), 'hex');
@@ -41,7 +42,7 @@ decode('0102030405060708090a0b0c0d0e0f10111213141516171819', 'hex'),
 (1 row)
 
 -- 5
-select encode(hmac(
+SELECT encode(hmac(
 'Test With Truncation',
 decode('0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c', 'hex'),
 'sha1'), 'hex');
@@ -51,7 +52,7 @@ decode('0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c', 'hex'),
 (1 row)
 
 -- 6
-select encode(hmac(
+SELECT encode(hmac(
 'Test Using Larger Than Block-Size Key - Hash Key First',
 decode('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'hex'),
 'sha1'), 'hex');
@@ -61,7 +62,7 @@ decode('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 (1 row)
 
 -- 7
-select encode(hmac(
+SELECT encode(hmac(
 'Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data',
 decode('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'hex'),
 'sha1'), 'hex');
index a7c95eb63c154d853248e9238c5b874d69209841..509f454047474c92878227cc5e26d6a2751712c3 100644 (file)
@@ -3,13 +3,13 @@
 --
 \set ECHO none
 -- check for encoding fn's
-select encode('foo', 'hex');
+SELECT encode('foo', 'hex');
  encode 
 --------
  666f6f
 (1 row)
 
-select decode('666f6f', 'hex');
+SELECT decode('666f6f', 'hex');
  decode 
 --------
  foo
index ec8368042e3d0241531cfd61d4dae75785ac83bf..70933c9a7361f32a118f815875140d0723a6ac9c 100644 (file)
@@ -1,43 +1,44 @@
 --
 -- MD5 message digest
 --
-select encode(digest('', 'md5'), 'hex');
+SET autocommit TO 'on';
+SELECT encode(digest('', 'md5'), 'hex');
               encode              
 ----------------------------------
  d41d8cd98f00b204e9800998ecf8427e
 (1 row)
 
-select encode(digest('a', 'md5'), 'hex');
+SELECT encode(digest('a', 'md5'), 'hex');
               encode              
 ----------------------------------
  0cc175b9c0f1b6a831c399e269772661
 (1 row)
 
-select encode(digest('abc', 'md5'), 'hex');
+SELECT encode(digest('abc', 'md5'), 'hex');
               encode              
 ----------------------------------
  900150983cd24fb0d6963f7d28e17f72
 (1 row)
 
-select encode(digest('message digest', 'md5'), 'hex');
+SELECT encode(digest('message digest', 'md5'), 'hex');
               encode              
 ----------------------------------
  f96b697d7cb7938d525a2f31aaf161d0
 (1 row)
 
-select encode(digest('abcdefghijklmnopqrstuvwxyz', 'md5'), 'hex');
+SELECT encode(digest('abcdefghijklmnopqrstuvwxyz', 'md5'), 'hex');
               encode              
 ----------------------------------
  c3fcd3d76192e4007dfb496cca67e13b
 (1 row)
 
-select encode(digest('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', 'md5'), 'hex');
+SELECT encode(digest('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', 'md5'), 'hex');
               encode              
 ----------------------------------
  d174ab98d277d9f5a5611c2c9f419d9f
 (1 row)
 
-select encode(digest('12345678901234567890123456789012345678901234567890123456789012345678901234567890', 'md5'), 'hex');
+SELECT encode(digest('12345678901234567890123456789012345678901234567890123456789012345678901234567890', 'md5'), 'hex');
               encode              
 ----------------------------------
  57edf4a22be3c955ac49da2e2107b67a
index 2f642689442fe273f0cbb380fce41cb08d33b953..18ade2025be4c9f59d8f146cf23b0c3963ed8be2 100644 (file)
@@ -1,8 +1,9 @@
 --
 -- AES / Rijndael-128 cipher
 --
+SET autocommit TO 'on';
 -- some standard Rijndael testvalues
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('00112233445566778899aabbccddeeff', 'hex'),
 decode('000102030405060708090a0b0c0d0e0f', 'hex'),
 'aes-ecb/pad:none'), 'hex');
@@ -11,7 +12,7 @@ decode('000102030405060708090a0b0c0d0e0f', 'hex'),
  69c4e0d86a7b0430d8cdb78070b4c55a
 (1 row)
 
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('00112233445566778899aabbccddeeff', 'hex'),
 decode('000102030405060708090a0b0c0d0e0f1011121314151617', 'hex'),
 'aes-ecb/pad:none'), 'hex');
@@ -20,7 +21,7 @@ decode('000102030405060708090a0b0c0d0e0f1011121314151617', 'hex'),
  dda97ca4864cdfe06eaf70a0ec0d7191
 (1 row)
 
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('00112233445566778899aabbccddeeff', 'hex'),
 decode('000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f', 'hex'),
 'aes-ecb/pad:none'), 'hex');
@@ -30,7 +31,7 @@ decode('000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f', 'hex'
 (1 row)
 
 -- cbc
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('00112233445566778899aabbccddeeff', 'hex'),
 decode('000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f', 'hex'),
 'aes-cbc/pad:none'), 'hex');
@@ -40,7 +41,7 @@ decode('000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f', 'hex'
 (1 row)
 
 -- key padding
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('0011223344', 'hex'),
 decode('000102030405', 'hex'),
 'aes-cbc'), 'hex');
@@ -49,7 +50,7 @@ decode('000102030405', 'hex'),
  189a28932213f017b246678dbc28655f
 (1 row)
 
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('0011223344', 'hex'),
 decode('000102030405060708090a0b0c0d0e0f10111213', 'hex'),
 'aes-cbc'), 'hex');
@@ -58,7 +59,7 @@ decode('000102030405060708090a0b0c0d0e0f10111213', 'hex'),
  3b02279162d15580e069d3a71407a556
 (1 row)
 
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('0011223344', 'hex'),
 decode('000102030405060708090a0b0c0d0e0f101112131415161718191a1b', 'hex'),
 'aes-cbc'), 'hex');
index 430c881a9f5c81c60f954edf9662faff4600925c..af86171d88ed28ce42e7c4cb20357ae273461760 100644 (file)
@@ -1,43 +1,44 @@
 --
 -- SHA1 message digest
 --
-select encode(digest('', 'sha1'), 'hex');
+SET autocommit TO 'on';
+SELECT encode(digest('', 'sha1'), 'hex');
                   encode                  
 ------------------------------------------
  da39a3ee5e6b4b0d3255bfef95601890afd80709
 (1 row)
 
-select encode(digest('a', 'sha1'), 'hex');
+SELECT encode(digest('a', 'sha1'), 'hex');
                   encode                  
 ------------------------------------------
  86f7e437faa5a7fce15d1ddcb9eaeaea377667b8
 (1 row)
 
-select encode(digest('abc', 'sha1'), 'hex');
+SELECT encode(digest('abc', 'sha1'), 'hex');
                   encode                  
 ------------------------------------------
  a9993e364706816aba3e25717850c26c9cd0d89d
 (1 row)
 
-select encode(digest('message digest', 'sha1'), 'hex');
+SELECT encode(digest('message digest', 'sha1'), 'hex');
                   encode                  
 ------------------------------------------
  c12252ceda8be8994d5fa0290a47231c1d16aae3
 (1 row)
 
-select encode(digest('abcdefghijklmnopqrstuvwxyz', 'sha1'), 'hex');
+SELECT encode(digest('abcdefghijklmnopqrstuvwxyz', 'sha1'), 'hex');
                   encode                  
 ------------------------------------------
  32d10c7b8cf96570ca04ce37f2a19d84240d3a89
 (1 row)
 
-select encode(digest('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', 'sha1'), 'hex');
+SELECT encode(digest('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', 'sha1'), 'hex');
                   encode                  
 ------------------------------------------
  761c457bf73b14d27e9e9265c46f4b4dda11f940
 (1 row)
 
-select encode(digest('12345678901234567890123456789012345678901234567890123456789012345678901234567890', 'sha1'), 'hex');
+SELECT encode(digest('12345678901234567890123456789012345678901234567890123456789012345678901234567890', 'sha1'), 'hex');
                   encode                  
 ------------------------------------------
  50abf5706a150990a08b2c5ea40fa0e585554732
index 3efb2ed9693e711f8f0379173ba939034655d9c8..0f3cbe537a00c3346a6eaf5e79e6a9b15712d676 100644 (file)
@@ -1,75 +1,76 @@
-
--- drop function digest(text, text);
--- drop function digest(bytea, text);
--- drop function digest_exists(text);
--- drop function hmac(text, text, text);
--- drop function hmac(bytea, bytea, text);
--- drop function hmac_exists(text);
--- drop function crypt(text, text);
--- drop function gen_salt(text);
--- drop function gen_salt(text, int4);
--- drop function encrypt(bytea, bytea, text);
--- drop function decrypt(bytea, bytea, text);
--- drop function encrypt_iv(bytea, bytea, bytea, text);
--- drop function decrypt_iv(bytea, bytea, bytea, text);
--- drop function cipher_exists(text);
-
-
-
-CREATE FUNCTION digest(text, text) RETURNS bytea
-  AS 'MODULE_PATHNAME',
-  'pg_digest' LANGUAGE 'C';
-
-CREATE FUNCTION digest(bytea, text) RETURNS bytea
-  AS 'MODULE_PATHNAME',
-  'pg_digest' LANGUAGE 'C';
-
-CREATE FUNCTION digest_exists(text) RETURNS bool
-  AS 'MODULE_PATHNAME',
-  'pg_digest_exists' LANGUAGE 'C';
-
-CREATE FUNCTION hmac(text, text, text) RETURNS bytea
-  AS 'MODULE_PATHNAME',
-  'pg_hmac' LANGUAGE 'C';
-
-CREATE FUNCTION hmac(bytea, bytea, text) RETURNS bytea
-  AS 'MODULE_PATHNAME',
-  'pg_hmac' LANGUAGE 'C';
-
-CREATE FUNCTION hmac_exists(text) RETURNS bool
-  AS 'MODULE_PATHNAME',
-  'pg_hmac_exists' LANGUAGE 'C';
-
-CREATE FUNCTION crypt(text, text) RETURNS text
-  AS 'MODULE_PATHNAME',
-  'pg_crypt' LANGUAGE 'C';
-
-CREATE FUNCTION gen_salt(text) RETURNS text
-  AS 'MODULE_PATHNAME',
-  'pg_gen_salt' LANGUAGE 'C';
-
-CREATE FUNCTION gen_salt(text, int4) RETURNS text
-  AS 'MODULE_PATHNAME',
-  'pg_gen_salt_rounds' LANGUAGE 'C';
-
-CREATE FUNCTION encrypt(bytea, bytea, text) RETURNS bytea
-  AS 'MODULE_PATHNAME',
-  'pg_encrypt' LANGUAGE 'C';
-
-CREATE FUNCTION decrypt(bytea, bytea, text) RETURNS bytea
-  AS 'MODULE_PATHNAME',
-  'pg_decrypt' LANGUAGE 'C';
-
-CREATE FUNCTION encrypt_iv(bytea, bytea, bytea, text) RETURNS bytea
-  AS 'MODULE_PATHNAME',
-  'pg_encrypt_iv' LANGUAGE 'C';
-
-CREATE FUNCTION decrypt_iv(bytea, bytea, bytea, text) RETURNS bytea
-  AS 'MODULE_PATHNAME',
-  'pg_decrypt_iv' LANGUAGE 'C';
-
-CREATE FUNCTION cipher_exists(text) RETURNS bool
-  AS 'MODULE_PATHNAME',
-  'pg_cipher_exists' LANGUAGE 'C';
+-- Adjust this setting to control where the objects get created.
+SET search_path = public;
+
+SET autocommit TO 'on';
+
+CREATE OR REPLACE FUNCTION digest(text, text)
+RETURNS bytea
+AS 'MODULE_PATHNAME', 'pg_digest'
+LANGUAGE 'C';
+
+CREATE OR REPLACE FUNCTION digest(bytea, text)
+RETURNS bytea
+AS 'MODULE_PATHNAME', 'pg_digest'
+LANGUAGE 'C';
+
+CREATE OR REPLACE FUNCTION digest_exists(text)
+RETURNS bool
+AS 'MODULE_PATHNAME', 'pg_digest_exists'
+LANGUAGE 'C';
+
+CREATE OR REPLACE FUNCTION hmac(text, text, text)
+RETURNS bytea
+AS 'MODULE_PATHNAME', 'pg_hmac'
+LANGUAGE 'C';
+
+CREATE OR REPLACE FUNCTION hmac(bytea, bytea, text)
+RETURNS bytea
+AS 'MODULE_PATHNAME', 'pg_hmac'
+LANGUAGE 'C';
+
+CREATE OR REPLACE FUNCTION hmac_exists(text)
+RETURNS bool
+AS 'MODULE_PATHNAME', 'pg_hmac_exists'
+LANGUAGE 'C';
+
+CREATE OR REPLACE FUNCTION crypt(text, text)
+RETURNS text
+AS 'MODULE_PATHNAME', 'pg_crypt'
+LANGUAGE 'C';
+
+CREATE OR REPLACE FUNCTION gen_salt(text)
+RETURNS text
+AS 'MODULE_PATHNAME', 'pg_gen_salt'
+LANGUAGE 'C';
+
+CREATE OR REPLACE FUNCTION gen_salt(text, int4)
+RETURNS text
+AS 'MODULE_PATHNAME', 'pg_gen_salt_rounds'
+LANGUAGE 'C';
+
+CREATE OR REPLACE FUNCTION encrypt(bytea, bytea, text)
+RETURNS bytea
+AS 'MODULE_PATHNAME', 'pg_encrypt'
+LANGUAGE 'C';
+
+CREATE OR REPLACE FUNCTION decrypt(bytea, bytea, text)
+RETURNS bytea
+AS 'MODULE_PATHNAME', 'pg_decrypt'
+LANGUAGE 'C';
+
+CREATE OR REPLACE FUNCTION encrypt_iv(bytea, bytea, bytea, text)
+RETURNS bytea
+AS 'MODULE_PATHNAME', 'pg_encrypt_iv'
+LANGUAGE 'C';
+
+CREATE OR REPLACE FUNCTION decrypt_iv(bytea, bytea, bytea, text)
+RETURNS bytea
+AS 'MODULE_PATHNAME', 'pg_decrypt_iv'
+LANGUAGE 'C';
+
+CREATE OR REPLACE FUNCTION cipher_exists(text)
+RETURNS bool
+AS 'MODULE_PATHNAME', 'pg_cipher_exists'
+LANGUAGE 'C';
 
 
index e1fa7b1f495e3de3bdea67decffa03e64a49490a..93187dcba3175f78d20bb12d96598ebc4f018d98 100644 (file)
@@ -2,50 +2,52 @@
 -- Blowfish cipher
 --
 
+SET autocommit TO 'on';
+
 -- some standard Blowfish testvalues
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('0000000000000000', 'hex'),
 decode('0000000000000000', 'hex'),
 'bf-ecb/pad:none'), 'hex');
 
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('ffffffffffffffff', 'hex'),
 decode('ffffffffffffffff', 'hex'),
 'bf-ecb/pad:none'), 'hex');
 
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('1000000000000001', 'hex'),
 decode('3000000000000000', 'hex'),
 'bf-ecb/pad:none'), 'hex');
 
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('1111111111111111', 'hex'),
 decode('1111111111111111', 'hex'),
 'bf-ecb/pad:none'), 'hex');
 
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('0123456789abcdef', 'hex'),
 decode('fedcba9876543210', 'hex'),
 'bf-ecb/pad:none'), 'hex');
 
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('01a1d6d039776742', 'hex'),
 decode('fedcba9876543210', 'hex'),
 'bf-ecb/pad:none'), 'hex');
 
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('ffffffffffffffff', 'hex'),
 decode('0000000000000000', 'hex'),
 'bf-ecb/pad:none'), 'hex');
 
 -- setkey
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('fedcba9876543210', 'hex'),
 decode('f0e1d2c3b4a5968778695a4b3c2d1e0f', 'hex'),
 'bf-ecb/pad:none'), 'hex');
 
 -- with padding
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('01234567890123456789', 'hex'),
 decode('33443344334433443344334433443344', 'hex'),
 'bf-ecb'), 'hex');
@@ -53,13 +55,13 @@ decode('33443344334433443344334433443344', 'hex'),
 -- cbc
 
 -- 28 bytes key
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('6b77b4d63006dee605b156e27403979358deb9e7154616d959f1652bd5', 'hex'),
 decode('37363534333231204e6f77206973207468652074696d6520666f7220', 'hex'),
 'bf-cbc'), 'hex');
 
 -- 29 bytes key
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('6b77b4d63006dee605b156e27403979358deb9e7154616d959f1652bd5ff92cc', 'hex'),
 decode('37363534333231204e6f77206973207468652074696d6520666f722000', 'hex'),
 'bf-cbc'), 'hex');
index 6b82fdff63372cd48cf656d092c6ca7083e8cf06..5128675e0c929bc012dfafb7bb55138d3aeb66cf 100644 (file)
@@ -2,16 +2,19 @@
 -- crypt() and gen_salt(): bcrypt
 --
 
-select crypt('', '$2a$06$RQiOJ.3ELirrXwxIZY8q0O');
+SET autocommit TO 'on';
 
-select crypt('foox', '$2a$06$RQiOJ.3ELirrXwxIZY8q0O');
+SELECT crypt('', '$2a$06$RQiOJ.3ELirrXwxIZY8q0O');
 
-create table ctest (data text, res text, salt text);
-insert into ctest values ('password', '', '');
+SELECT crypt('foox', '$2a$06$RQiOJ.3ELirrXwxIZY8q0O');
 
-update ctest set salt = gen_salt('bf', 8);
-update ctest set res = crypt(data, salt);
-select res = crypt(data, res) as "worked" from ctest;
+CREATE TABLE ctest (data text, res text, salt text);
+INSERT INTO ctest VALUES ('password', '', '');
 
-drop table ctest;
+UPDATE ctest SET salt = gen_salt('bf', 8);
+UPDATE ctest SET res = crypt(data, salt);
+SELECT res = crypt(data, res) AS "worked" 
+FROM ctest;
+
+DROP TABLE ctest;
 
index 2a2fbfb36c59fd8472448752b8b0cfecaa637ddf..ff43112dd82ac79a786fc9dd2ed9d256ae600ca3 100644 (file)
@@ -2,16 +2,19 @@
 -- crypt() and gen_salt(): crypt-des
 --
 
-select crypt('', 'NB');
+SET autocommit TO 'on';
 
-select crypt('foox', 'NB');
+SELECT crypt('', 'NB');
 
-create table ctest (data text, res text, salt text);
-insert into ctest values ('password', '', '');
+SELECT crypt('foox', 'NB');
 
-update ctest set salt = gen_salt('des');
-update ctest set res = crypt(data, salt);
-select res = crypt(data, res) as "worked" from ctest;
+CREATE TABLE ctest (data text, res text, salt text);
+INSERT INTO ctest VALUES ('password', '', '');
 
-drop table ctest;
+UPDATE ctest SET salt = gen_salt('des');
+UPDATE ctest SET res = crypt(data, salt);
+SELECT res = crypt(data, res) AS "worked"
+FROM ctest;
+
+DROP TABLE ctest;
 
index 8ef8dbae0ff3020393124ae2e92235bc9ad27a27..c570e4ab7a7b8aee9980ece95996839c0084c397 100644 (file)
@@ -2,16 +2,19 @@
 -- crypt() and gen_salt(): md5
 --
 
-select crypt('', '$1$Szzz0yzz');
+SET autocommit TO 'on';
 
-select crypt('foox', '$1$Szzz0yzz');
+SELECT crypt('', '$1$Szzz0yzz');
 
-create table ctest (data text, res text, salt text);
-insert into ctest values ('password', '', '');
+SELECT crypt('foox', '$1$Szzz0yzz');
 
-update ctest set salt = gen_salt('md5');
-update ctest set res = crypt(data, salt);
-select res = crypt(data, res) as "worked" from ctest;
+CREATE TABLE ctest (data text, res text, salt text);
+INSERT INTO ctest VALUES ('password', '', '');
 
-drop table ctest;
+UPDATE ctest SET salt = gen_salt('md5');
+UPDATE ctest SET res = crypt(data, salt);
+SELECT res = crypt(data, res) AS "worked"
+FROM ctest;
+
+DROP TABLE ctest;
 
index 6fd85b929a6dc26765383390559a22667c693564..c6205ab6008747e6ec40da3366384532776d0797 100644 (file)
@@ -2,16 +2,19 @@
 -- crypt() and gen_salt(): extended des
 --
 
-select crypt('', '_J9..j2zz');
+SET autocommit TO 'on';
 
-select crypt('foox', '_J9..j2zz');
+SELECT crypt('', '_J9..j2zz');
 
-create table ctest (data text, res text, salt text);
-insert into ctest values ('password', '', '');
+SELECT crypt('foox', '_J9..j2zz');
 
-update ctest set salt = gen_salt('xdes', 1001);
-update ctest set res = crypt(data, salt);
-select res = crypt(data, res) as "worked" from ctest;
+CREATE TABLE ctest (data text, res text, salt text);
+INSERT INTO ctest VALUES ('password', '', '');
 
-drop table ctest;
+UPDATE ctest SET salt = gen_salt('xdes', 1001);
+UPDATE ctest SET res = crypt(data, salt);
+SELECT res = crypt(data, res) AS "worked"
+FROM ctest;
+
+DROP TABLE ctest;
 
index d3cd1f649d2ca4deddeb5fe9c9da7cb31464fc45..ed2b65b7b8d5b4df60e26cbecadf1bf1ef85688f 100644 (file)
@@ -2,43 +2,45 @@
 -- HMAC-MD5
 --
 
-select encode(hmac(
+SET autocommit TO 'on';
+
+SELECT encode(hmac(
 'Hi There',
 decode('0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b', 'hex'),
 'md5'), 'hex');
 
 -- 2
-select encode(hmac(
+SELECT encode(hmac(
 'Jefe',
 'what do ya want for nothing?',
 'md5'), 'hex');
 
 -- 3
-select encode(hmac(
+SELECT encode(hmac(
 decode('dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd', 'hex'),
 decode('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'hex'),
 'md5'), 'hex');
 
 -- 4
-select encode(hmac(
+SELECT encode(hmac(
 decode('cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd', 'hex'),
 decode('0102030405060708090a0b0c0d0e0f10111213141516171819', 'hex'),
 'md5'), 'hex');
 
 -- 5
-select encode(hmac(
+SELECT encode(hmac(
 'Test With Truncation',
 decode('0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c', 'hex'),
 'md5'), 'hex');
 
 -- 6
-select encode(hmac(
+SELECT encode(hmac(
 'Test Using Larger Than Block-Size Key - Hash Key First',
 decode('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'hex'),
 'md5'), 'hex');
 
 -- 7
-select encode(hmac(
+SELECT encode(hmac(
 'Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data',
 decode('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'hex'),
 'md5'), 'hex');
index f08c438963403a2e0e68258d725673c691896332..fb70424dcebaadd36121ea5cf6794108a8c885a7 100644 (file)
@@ -2,43 +2,45 @@
 -- HMAC-MD5
 --
 
-select encode(hmac(
+SET autocommit TO 'on';
+
+SELECT encode(hmac(
 'Hi There',
 decode('0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b', 'hex'),
 'sha1'), 'hex');
 
 -- 2
-select encode(hmac(
+SELECT encode(hmac(
 'Jefe',
 'what do ya want for nothing?',
 'sha1'), 'hex');
 
 -- 3
-select encode(hmac(
+SELECT encode(hmac(
 decode('dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd', 'hex'),
 decode('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'hex'),
 'sha1'), 'hex');
 
 -- 4
-select encode(hmac(
+SELECT encode(hmac(
 decode('cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd', 'hex'),
 decode('0102030405060708090a0b0c0d0e0f10111213141516171819', 'hex'),
 'sha1'), 'hex');
 
 -- 5
-select encode(hmac(
+SELECT encode(hmac(
 'Test With Truncation',
 decode('0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c', 'hex'),
 'sha1'), 'hex');
 
 -- 6
-select encode(hmac(
+SELECT encode(hmac(
 'Test Using Larger Than Block-Size Key - Hash Key First',
 decode('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'hex'),
 'sha1'), 'hex');
 
 -- 7
-select encode(hmac(
+SELECT encode(hmac(
 'Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data',
 decode('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'hex'),
 'sha1'), 'hex');
index 8bddb7377342ace668eb70ec454e44386f726427..08ffeb4981400c85dc86c4bcfc47a3423bfe9340 100644 (file)
@@ -3,10 +3,11 @@
 --
 
 \set ECHO none
+SET autocommit TO 'on';
 \i pgcrypto.sql
 \set ECHO all
 
 -- check for encoding fn's
-select encode('foo', 'hex');
-select decode('666f6f', 'hex');
+SELECT encode('foo', 'hex');
+SELECT decode('666f6f', 'hex');
 
index 78e4cfee0f10692b7f04288c191a4e431786b35e..0c851217b209cc2bda825dc1ade760779592e3a3 100644 (file)
@@ -2,11 +2,13 @@
 -- MD5 message digest
 --
 
-select encode(digest('', 'md5'), 'hex');
-select encode(digest('a', 'md5'), 'hex');
-select encode(digest('abc', 'md5'), 'hex');
-select encode(digest('message digest', 'md5'), 'hex');
-select encode(digest('abcdefghijklmnopqrstuvwxyz', 'md5'), 'hex');
-select encode(digest('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', 'md5'), 'hex');
-select encode(digest('12345678901234567890123456789012345678901234567890123456789012345678901234567890', 'md5'), 'hex');
+SET autocommit TO 'on';
+
+SELECT encode(digest('', 'md5'), 'hex');
+SELECT encode(digest('a', 'md5'), 'hex');
+SELECT encode(digest('abc', 'md5'), 'hex');
+SELECT encode(digest('message digest', 'md5'), 'hex');
+SELECT encode(digest('abcdefghijklmnopqrstuvwxyz', 'md5'), 'hex');
+SELECT encode(digest('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', 'md5'), 'hex');
+SELECT encode(digest('12345678901234567890123456789012345678901234567890123456789012345678901234567890', 'md5'), 'hex');
 
index fbacdc6dfcef62c9c12998939c0fdd3787a74d70..793b07f362eec4bbaa7ae999d18d71bf91377a6f 100644 (file)
@@ -2,41 +2,43 @@
 -- AES / Rijndael-128 cipher
 --
 
+SET autocommit TO 'on';
+
 -- some standard Rijndael testvalues
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('00112233445566778899aabbccddeeff', 'hex'),
 decode('000102030405060708090a0b0c0d0e0f', 'hex'),
 'aes-ecb/pad:none'), 'hex');
 
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('00112233445566778899aabbccddeeff', 'hex'),
 decode('000102030405060708090a0b0c0d0e0f1011121314151617', 'hex'),
 'aes-ecb/pad:none'), 'hex');
 
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('00112233445566778899aabbccddeeff', 'hex'),
 decode('000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f', 'hex'),
 'aes-ecb/pad:none'), 'hex');
 
 -- cbc
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('00112233445566778899aabbccddeeff', 'hex'),
 decode('000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f', 'hex'),
 'aes-cbc/pad:none'), 'hex');
 
 -- key padding
 
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('0011223344', 'hex'),
 decode('000102030405', 'hex'),
 'aes-cbc'), 'hex');
 
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('0011223344', 'hex'),
 decode('000102030405060708090a0b0c0d0e0f10111213', 'hex'),
 'aes-cbc'), 'hex');
 
-select encode(encrypt(
+SELECT encode(encrypt(
 decode('0011223344', 'hex'),
 decode('000102030405060708090a0b0c0d0e0f101112131415161718191a1b', 'hex'),
 'aes-cbc'), 'hex');
index 11ee5426cb4c484b37bcce8fcd75d4fce63654b1..1c0fcd90721636e051a3dd3f0932225c0627e4a5 100644 (file)
@@ -2,11 +2,13 @@
 -- SHA1 message digest
 --
 
-select encode(digest('', 'sha1'), 'hex');
-select encode(digest('a', 'sha1'), 'hex');
-select encode(digest('abc', 'sha1'), 'hex');
-select encode(digest('message digest', 'sha1'), 'hex');
-select encode(digest('abcdefghijklmnopqrstuvwxyz', 'sha1'), 'hex');
-select encode(digest('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', 'sha1'), 'hex');
-select encode(digest('12345678901234567890123456789012345678901234567890123456789012345678901234567890', 'sha1'), 'hex');
+SET autocommit TO 'on';
+
+SELECT encode(digest('', 'sha1'), 'hex');
+SELECT encode(digest('a', 'sha1'), 'hex');
+SELECT encode(digest('abc', 'sha1'), 'hex');
+SELECT encode(digest('message digest', 'sha1'), 'hex');
+SELECT encode(digest('abcdefghijklmnopqrstuvwxyz', 'sha1'), 'hex');
+SELECT encode(digest('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', 'sha1'), 'hex');
+SELECT encode(digest('12345678901234567890123456789012345678901234567890123456789012345678901234567890', 'sha1'), 'hex');
 
index 7ac7b6c11cd04e00f2175dbc1a8efc8268ba7a7b..5489c93812182c4e1d67fb84f35af18896f0b2af 100644 (file)
@@ -1,17 +1,22 @@
+-- Adjust this setting to control where the objects get created.
+SET search_path = public;
+
+SET autocommit TO 'on';
+
 DROP TYPE pgstattuple_type CASCADE;
 CREATE TYPE pgstattuple_type AS (
-    table_len BIGINT,          -- physical table length in bytes
-    tuple_count BIGINT,                -- number of live tuples
-    tuple_len BIGINT,          -- total tuples length in bytes
-    tuple_percent FLOAT,       -- live tuples in %
-    dead_tuple_count BIGINT,   -- number of dead tuples
-    dead_tuple_len BIGINT,     -- total dead tuples length in bytes
-    dead_tuple_percent FLOAT,  -- dead tuples in %
-    free_space BIGINT,         -- free space in bytes
-    free_percent FLOAT         -- free space in %
+       table_len BIGINT,               -- physical table length in bytes
+       tuple_count BIGINT,             -- number of live tuples
+       tuple_len BIGINT,               -- total tuples length in bytes
+       tuple_percent FLOAT,            -- live tuples in %
+       dead_tuple_count BIGINT,        -- number of dead tuples
+       dead_tuple_len BIGINT,          -- total dead tuples length in bytes
+       dead_tuple_percent FLOAT,       -- dead tuples in %
+       free_space BIGINT,              -- free space in bytes
+       free_percent FLOAT              -- free space in %
 );
 
-CREATE OR REPLACE FUNCTION pgstattuple(text) RETURNS pgstattuple_type
-  AS 'MODULE_PATHNAME', 'pgstattuple'
-  LANGUAGE 'c' WITH (isstrict);
-GRANT EXECUTE ON FUNCTION pgstattuple(text) TO PUBLIC;
+CREATE OR REPLACE FUNCTION pgstattuple(text)
+RETURNS pgstattuple_type
+AS 'MODULE_PATHNAME', 'pgstattuple'
+LANGUAGE 'C' WITH (isstrict);
index e9597e5fecbca11ee5e17b08c4c33058bdf7af19..e9bfbbb052b90b3649e47b360375bac8180349c4 100644 (file)
@@ -1,6 +1,6 @@
 #!/bin/sh
 # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- #
-# Package : reindexdb                 Version : $Revision: 1.1 $
+# Package : reindexdb                 Version : $Revision: 1.2 $
 # Date    : 05/08/2002                Author  : Shaun Thomas
 # Req     : psql, sh, perl, sed         Type  : Utility
 #
@@ -184,11 +184,11 @@ fi
 
 # If index was set, reindex that index.
 if [ "$index" ]; then
-  $PSQL $PSQLOPT $ECHOOPT -c "REINDEX INDEX $index" -d $dbname
+  $PSQL $PSQLOPT $ECHOOPT -c "SET autocommit TO 'on';REINDEX INDEX $index" -d $dbname
 
 # Ok, no index.  Is there a specific table to reindex?
 elif [ "$table" ]; then
-    $PSQL $PSQLOPT $ECHOOPT -c "REINDEX TABLE \"$table\"" -d $dbname
+    $PSQL $PSQLOPT $ECHOOPT -c "SET autocommit TO 'on';REINDEX TABLE \"$table\"" -d $dbname
 
 # No specific table, no specific index, either we have a specific database,
 # or were told to do all databases.  Do it!
@@ -204,9 +204,9 @@ else
     # Ok, reindex every table in the database.  Use the same method
     # we used to get a list of databases, and get a list of tables in this
     # database that we may reindex.
-    tables=`$PSQL $PSQLOPT -q -t -A -d $db -c "$sql"`
+    tables=`$PSQL $PSQLOPT -q -t -A -d $db -c "SET autocommit TO 'on';$sql"`
     for tab in $tables; do
-        $PSQL $PSQLOPT $ECHOOPT -c "REINDEX TABLE \"$tab\"" -d $db
+        $PSQL $PSQLOPT $ECHOOPT -c "SET autocommit TO 'on';REINDEX TABLE \"$tab\"" -d $db
     done
 
   done
index e6bc1332cf6be77511bc887d8e44ecaa553c9280..e42ec9c63a3b5f0c23bb69f77002342eb07c73e3 100755 (executable)
@@ -25,6 +25,20 @@ EOT
 $opt{d} ||= 'TEST';
 my $dbi=DBI->connect('DBI:Pg:dbname='.$opt{d}) || die "Couldn't connect DB: $opt{d} !\n";
 
+my $setsql = qq{
+    SET search_path = public;
+};
+
+my $sth = $dbi->prepare($setsql);
+$sth->execute();
+
+my $setsql2 = qq{
+    SET autocommit TO 'on';
+};
+
+my $sth2 = $dbi->prepare($setsql2);
+$sth2->execute();
+
 my $sql;
 my $notice;
 my $sss = '(3000,3000,2990,2990)';
index 1c06b6863d3dc88780e2f1f95c9aebc4b8413730..cde92da6cd4f5f54a7cd30de4c7849187128b11a 100755 (executable)
@@ -2,11 +2,11 @@
 use strict;
 
 my $NUM = 20000;
-print "drop table boxtmp;\n"; 
-print "drop table boxtmp2;\n"; 
+print "DROP TABLE boxtmp;\n"; 
+print "DROP TABLE boxtmp2;\n"; 
 
-print "create table boxtmp (b box);\n";
-print "create table boxtmp2 (b box);\n";
+print "CREATE TABLE boxtmp (b box);\n";
+print "CREATE TABLE boxtmp2 (b box);\n";
 
 srand(1);
 open(DAT,">bbb.dat") || die;
@@ -26,20 +26,20 @@ foreach ( 1..$NUM ) {
 }
 close DAT;
 
-print "copy boxtmp from stdin;\n";
+print "COPY boxtmp FROM stdin;\n";
 open(DAT,"bbb.dat") || die;
 while(<DAT>) { print; }
 close DAT;
 print "\\.\n";
 
-print "copy boxtmp2 from stdin;\n";
+print "COPY boxtmp2 FROM stdin;\n";
 open(DAT,"bbb.dat") || die;
 while(<DAT>) { print; }
 close DAT;
 print "\\.\n";
 
-print "create index bix on boxtmp using gist (b gist_box_ops);\n";
-print "create index bix2 on boxtmp2 using rtree (b box_ops);\n";
+print "CREATE INDEX bix ON boxtmp USING gist (b gist_box_ops);\n";
+print "CREATE INDEX bix2 ON boxtmp2 USING rtree (b box_ops);\n";
 
 
 sub min {
index 74ac7e640d118473b592472fda05c5fe53e39ca0..cf7e8b3efd1b84a7250a744004bc913ce312add3 100644 (file)
@@ -3,41 +3,51 @@
 -- does not depend on contents of seg.sql.
 --
 \set ECHO none
-create table boxtmp (b box);
+CREATE TABLE boxtmp (b box);
 \copy boxtmp from 'data/test_box.data'
-select count(*) from boxtmp where b && '(1000,1000,0,0)'::box;
+SELECT count(*)
+FROM boxtmp
+WHERE b && '(1000,1000,0,0)'::box;
  count 
 -------
      2
 (1 row)
 
-create index bix on boxtmp using rtree (b);
-select count(*) from boxtmp where b && '(1000,1000,0,0)'::box;
+CREATE INDEX bix ON boxtmp USING rtree (b);
+SELECT count(*)
+FROM boxtmp
+WHERE b && '(1000,1000,0,0)'::box;
  count 
 -------
      2
 (1 row)
 
-drop index bix;
-create index bix on boxtmp using gist (b);
-select count(*) from boxtmp where b && '(1000,1000,0,0)'::box;
+DROP INDEX bix;
+CREATE INDEX bix ON boxtmp USING gist (b);
+SELECT count(*)
+FROM boxtmp
+WHERE b && '(1000,1000,0,0)'::box;
  count 
 -------
      2
 (1 row)
 
-create table polytmp (p polygon);
+CREATE TABLE polytmp (p polygon);
 \copy polytmp from 'data/test_box.data'
-create index pix on polytmp using rtree (p);
-select count(*) from polytmp where p && '(1000,1000),(0,0)'::polygon;
+CREATE INDEX pix ON polytmp USING rtree (p);
+SELECT count(*)
+FROM polytmp
+WHERE p && '(1000,1000),(0,0)'::polygon;
  count 
 -------
      2
 (1 row)
 
-drop index pix;
-create index pix on polytmp using gist (p);
-select count(*) from polytmp where p && '(1000,1000),(0,0)'::polygon;
+DROP INDEX pix;
+CREATE INDEX pix ON polytmp USING gist (p);
+SELECT count(*)
+FROM polytmp
+WHERE p && '(1000,1000),(0,0)'::polygon;
  count 
 -------
      2
index b32671227fa8c07ca211c0b70c8c5a462a72d9df..f7ad2748bc243311cabd58308d130a10625933e2 100644 (file)
@@ -1,8 +1,8 @@
-begin transaction;
-
 -- Adjust this setting to control where the objects get created.
 SET search_path = public;
 
+SET autocommit TO 'on';
+
 --
 --
 --
@@ -11,23 +11,45 @@ SET search_path = public;
 --
 --
 -- define the GiST support methods
-create function gbox_consistent(internal,box,int4) returns bool as 'MODULE_PATHNAME' language 'C';
+CREATE FUNCTION gbox_consistent(internal,box,int4)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-create function gbox_compress(internal) returns internal as 'MODULE_PATHNAME' language 'C';
+CREATE FUNCTION gbox_compress(internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-create function rtree_decompress(internal) returns internal as 'MODULE_PATHNAME' language 'C';
+CREATE FUNCTION rtree_decompress(internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-create function gbox_penalty(internal,internal,internal) returns internal as 'MODULE_PATHNAME' language 'C' with (isstrict);
+CREATE FUNCTION gbox_penalty(internal,internal,internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' with (isstrict);
 
-create function gbox_picksplit(internal, internal) returns internal as 'MODULE_PATHNAME' language 'C';
+CREATE FUNCTION gbox_picksplit(internal, internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-create function gbox_union(bytea, internal) returns box as 'MODULE_PATHNAME' language 'C';
+CREATE FUNCTION gbox_union(bytea, internal)
+RETURNS box
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-create function gbox_same(box, box, internal) returns internal as 'MODULE_PATHNAME' language 'C';
+CREATE FUNCTION gbox_same(box, box, internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
 -- create the operator class
 CREATE OPERATOR CLASS gist_box_ops
-    DEFAULT FOR TYPE box USING gist AS
+DEFAULT FOR TYPE box USING gist
+AS
        OPERATOR        1       << ,
        OPERATOR        2       &< ,
        OPERATOR        3       && ,
@@ -53,21 +75,28 @@ CREATE OPERATOR CLASS gist_box_ops
 --
 --
 -- define the GiST support methods
-create function gpoly_consistent(internal,polygon,int4) returns bool as 'MODULE_PATHNAME' language 'C';
+CREATE FUNCTION gpoly_consistent(internal,polygon,int4)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-create function gpoly_compress(internal) returns internal as 'MODULE_PATHNAME' language 'C';
+CREATE FUNCTION gpoly_compress(internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
 -- create the operator class
 CREATE OPERATOR CLASS gist_poly_ops
-    DEFAULT FOR TYPE polygon USING gist AS
-       OPERATOR        1       <<      RECHECK ,
-       OPERATOR        2       &<      RECHECK ,
-       OPERATOR        3       &&      RECHECK ,
-       OPERATOR        4       &>      RECHECK ,
-       OPERATOR        5       >>      RECHECK ,
-       OPERATOR        6       ~=      RECHECK ,
-       OPERATOR        7       ~       RECHECK ,
-       OPERATOR        8       @       RECHECK ,
+DEFAULT FOR TYPE polygon USING gist 
+AS
+       OPERATOR        1       <<      RECHECK,
+       OPERATOR        2       &<      RECHECK,
+       OPERATOR        3       &&      RECHECK,
+       OPERATOR        4       &>      RECHECK,
+       OPERATOR        5       >>      RECHECK,
+       OPERATOR        6       ~=      RECHECK,
+       OPERATOR        7       ~       RECHECK,
+       OPERATOR        8       @       RECHECK,
        FUNCTION        1       gpoly_consistent (internal, polygon, int4),
        FUNCTION        2       gbox_union (bytea, internal),
        FUNCTION        3       gpoly_compress (internal),
@@ -76,6 +105,3 @@ CREATE OPERATOR CLASS gist_poly_ops
        FUNCTION        6       gbox_picksplit (internal, internal),
        FUNCTION        7       gbox_same (box, box, internal),
        STORAGE         box;
-
-
-end transaction;
index 7a2a7faf85173ad7914c9ce79e09442ab746a3db..161abae1edd67dd4a2d4b4737c8e32b2f254ed6a 100644 (file)
@@ -3,36 +3,46 @@
 -- does not depend on contents of seg.sql.
 --
 \set ECHO none
+SET autocommit TO 'on';
 \i rtree_gist.sql
 \set ECHO all
 
-create table boxtmp (b box);
+CREATE TABLE boxtmp (b box);
 
 \copy boxtmp from 'data/test_box.data'
 
-select count(*) from boxtmp where b && '(1000,1000,0,0)'::box;
+SELECT count(*)
+FROM boxtmp
+WHERE b && '(1000,1000,0,0)'::box;
 
-create index bix on boxtmp using rtree (b);
+CREATE INDEX bix ON boxtmp USING rtree (b);
 
-select count(*) from boxtmp where b && '(1000,1000,0,0)'::box;
+SELECT count(*)
+FROM boxtmp
+WHERE b && '(1000,1000,0,0)'::box;
 
-drop index bix;
+DROP INDEX bix;
 
-create index bix on boxtmp using gist (b);
+CREATE INDEX bix ON boxtmp USING gist (b);
 
-select count(*) from boxtmp where b && '(1000,1000,0,0)'::box;
+SELECT count(*)
+FROM boxtmp
+WHERE b && '(1000,1000,0,0)'::box;
 
-create table polytmp (p polygon);
+CREATE TABLE polytmp (p polygon);
 
 \copy polytmp from 'data/test_box.data'
 
-create index pix on polytmp using rtree (p);
+CREATE INDEX pix ON polytmp USING rtree (p);
 
-select count(*) from polytmp where p && '(1000,1000),(0,0)'::polygon;
+SELECT count(*)
+FROM polytmp
+WHERE p && '(1000,1000),(0,0)'::polygon;
 
-drop index pix;
+DROP INDEX pix;
 
-create index pix on polytmp using gist (p);
-
-select count(*) from polytmp where p && '(1000,1000),(0,0)'::polygon;
+CREATE INDEX pix ON polytmp USING gist (p);
 
+SELECT count(*)
+FROM polytmp
+WHERE p && '(1000,1000),(0,0)'::polygon;
index aa79cc799ee0aaa1c916fa2d71b6778f7983411f..d5193734e20be19addffbb0feb879728e3f7a0c2 100644 (file)
@@ -6,8 +6,8 @@
 -- does not depend on contents of seg.sql.
 --
 \set ECHO none
-psql:seg.sql:11: WARNING:  ProcedureCreate: type seg is not yet defined
-psql:seg.sql:16: WARNING:  Argument type "seg" is only a shell
+psql:seg.sql:12: WARNING:  ProcedureCreate: type seg is not yet defined
+psql:seg.sql:17: WARNING:  Argument type "seg" is only a shell
 --
 -- testing the input and output functions
 --
index cbeaa08d137a42df0bb8714d7dd648be0ca0467b..42e2deec4bf70d5ba72548736b1b348f730b0b83 100644 (file)
@@ -1,24 +1,25 @@
 -- Create the user-defined type for 1-D floating point intervals (seg)
 -- 
-BEGIN TRANSACTION;
 
 -- Adjust this setting to control where the objects get created.
 SET search_path = public;
 
+SET autocommit TO 'on';
+
 CREATE FUNCTION seg_in(cstring)
 RETURNS seg
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c';
+LANGUAGE 'C';
 
 CREATE FUNCTION seg_out(seg)
 RETURNS cstring
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c';
+LANGUAGE 'C';
 
 CREATE TYPE seg (
-internallength = 12,
-input = seg_in,
-output = seg_out
+       INTERNALLENGTH = 12,
+       INPUT = seg_in,
+       OUTPUT = seg_out
 );
 
 COMMENT ON TYPE seg IS
@@ -30,26 +31,34 @@ COMMENT ON TYPE seg IS
 
 -- Left/Right methods
 
-CREATE FUNCTION seg_over_left(seg, seg) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION seg_over_left(seg, seg)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' with (isstrict);
 
 COMMENT ON FUNCTION seg_over_left(seg, seg) IS
 'is over and left of';
 
-CREATE FUNCTION seg_over_right(seg, seg) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION seg_over_right(seg, seg)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' with (isstrict);
 
 COMMENT ON FUNCTION seg_over_right(seg, seg) IS
 'is over and right of';
 
-CREATE FUNCTION seg_left(seg, seg) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION seg_left(seg, seg)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' with (isstrict);
 
 COMMENT ON FUNCTION seg_left(seg, seg) IS
 'is left of';
 
-CREATE FUNCTION seg_right(seg, seg) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION seg_right(seg, seg)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' with (isstrict);
 
 COMMENT ON FUNCTION seg_right(seg, seg) IS
 'is right of';
@@ -57,78 +66,106 @@ COMMENT ON FUNCTION seg_right(seg, seg) IS
 
 -- Comparison methods
 
-CREATE FUNCTION seg_lt(seg, seg) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION seg_lt(seg, seg)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' with (isstrict);
 
 COMMENT ON FUNCTION seg_lt(seg, seg) IS
 'less than';
 
-CREATE FUNCTION seg_le(seg, seg) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION seg_le(seg, seg)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' with (isstrict);
 
 COMMENT ON FUNCTION seg_le(seg, seg) IS
 'less than or equal';
 
-CREATE FUNCTION seg_gt(seg, seg) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION seg_gt(seg, seg)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' with (isstrict);
 
 COMMENT ON FUNCTION seg_gt(seg, seg) IS
 'greater than';
 
-CREATE FUNCTION seg_ge(seg, seg) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION seg_ge(seg, seg)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' with (isstrict);
 
 COMMENT ON FUNCTION seg_ge(seg, seg) IS
 'greater than or equal';
 
-CREATE FUNCTION seg_contains(seg, seg) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION seg_contains(seg, seg)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' with (isstrict);
 
 COMMENT ON FUNCTION seg_contains(seg, seg) IS
 'contains';
 
-CREATE FUNCTION seg_contained(seg, seg) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION seg_contained(seg, seg)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' with (isstrict);
 
 COMMENT ON FUNCTION seg_contained(seg, seg) IS
 'contained in';
 
-CREATE FUNCTION seg_overlap(seg, seg) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION seg_overlap(seg, seg)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' with (isstrict);
 
 COMMENT ON FUNCTION seg_overlap(seg, seg) IS
 'overlaps';
 
-CREATE FUNCTION seg_same(seg, seg) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION seg_same(seg, seg)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' with (isstrict);
 
 COMMENT ON FUNCTION seg_same(seg, seg) IS
 'same as';
 
-CREATE FUNCTION seg_different(seg, seg) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION seg_different(seg, seg)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' with (isstrict);
 
 COMMENT ON FUNCTION seg_different(seg, seg) IS
 'different';
 
 -- support routines for indexing
 
-CREATE FUNCTION seg_union(seg, seg) RETURNS seg
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION seg_union(seg, seg)
+RETURNS seg
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' with (isstrict);
 
-CREATE FUNCTION seg_inter(seg, seg) RETURNS seg
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION seg_inter(seg, seg)
+RETURNS seg
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' with (isstrict);
 
-CREATE FUNCTION seg_size(seg) RETURNS float4
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION seg_size(seg)
+RETURNS float4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' with (isstrict);
 
 -- miscellaneous
 
-CREATE FUNCTION seg_upper(seg) RETURNS float4
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION seg_upper(seg)
+RETURNS float4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' with (isstrict);
 
-CREATE FUNCTION seg_lower(seg) RETURNS float4
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION seg_lower(seg)
+RETURNS float4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' with (isstrict);
 
 
 --
@@ -136,112 +173,173 @@ CREATE FUNCTION seg_lower(seg) RETURNS float4
 --
 
 CREATE OPERATOR < (
-   LEFTARG = seg, RIGHTARG = seg, PROCEDURE = seg_lt,
-   COMMUTATOR = '>', NEGATOR = '>=',
-   RESTRICT = scalarltsel, JOIN = scalarltjoinsel
+       LEFTARG = seg,
+       RIGHTARG = seg,
+       PROCEDURE = seg_lt,
+       COMMUTATOR = '>',
+       NEGATOR = '>=',
+       RESTRICT = scalarltsel,
+       JOIN = scalarltjoinsel
 );
 
 CREATE OPERATOR <= (
-   LEFTARG = seg, RIGHTARG = seg, PROCEDURE = seg_le,
-   COMMUTATOR = '>=', NEGATOR = '>',
-   RESTRICT = scalarltsel, JOIN = scalarltjoinsel
+       LEFTARG = seg,
+       RIGHTARG = seg,
+       PROCEDURE = seg_le,
+       COMMUTATOR = '>=',
+       NEGATOR = '>',
+       RESTRICT = scalarltsel,
+       JOIN = scalarltjoinsel
 );
 
 CREATE OPERATOR > (
-   LEFTARG = seg, RIGHTARG = seg, PROCEDURE = seg_gt,
-   COMMUTATOR = '<', NEGATOR = '<=',
-   RESTRICT = scalargtsel, JOIN = scalargtjoinsel
+       LEFTARG = seg,
+       RIGHTARG = seg,
+       PROCEDURE = seg_gt,
+       COMMUTATOR = '<',
+       NEGATOR = '<=',
+       RESTRICT = scalargtsel,
+       JOIN = scalargtjoinsel
 );
 
 CREATE OPERATOR >= (
-   LEFTARG = seg, RIGHTARG = seg, PROCEDURE = seg_ge,
-   COMMUTATOR = '<=', NEGATOR = '<',
-   RESTRICT = scalargtsel, JOIN = scalargtjoinsel
+       LEFTARG = seg,
+       RIGHTARG = seg,
+       PROCEDURE = seg_ge,
+       COMMUTATOR = '<=',
+       NEGATOR = '<',
+       RESTRICT = scalargtsel,
+       JOIN = scalargtjoinsel
 );
 
 CREATE OPERATOR << (
-   LEFTARG = seg, RIGHTARG = seg, PROCEDURE = seg_left,
-   COMMUTATOR = '>>',
-   RESTRICT = positionsel, JOIN = positionjoinsel
+       LEFTARG = seg,
+       RIGHTARG = seg,
+       PROCEDURE = seg_left,
+       COMMUTATOR = '>>',
+       RESTRICT = positionsel,
+       JOIN = positionjoinsel
 );
 
 CREATE OPERATOR &< (
-   LEFTARG = seg, RIGHTARG = seg, PROCEDURE = seg_over_left,
-   COMMUTATOR = '&>',
-   RESTRICT = positionsel, JOIN = positionjoinsel
+       LEFTARG = seg,
+       RIGHTARG = seg,
+       PROCEDURE = seg_over_left,
+       COMMUTATOR = '&>',
+       RESTRICT = positionsel,
+       JOIN = positionjoinsel
 );
 
 CREATE OPERATOR && (
-   LEFTARG = seg, RIGHTARG = seg, PROCEDURE = seg_overlap,
-   COMMUTATOR = '&&',
-   RESTRICT = positionsel, JOIN = positionjoinsel
+       LEFTARG = seg,
+       RIGHTARG = seg,
+       PROCEDURE = seg_overlap,
+       COMMUTATOR = '&&',
+       RESTRICT = positionsel,
+       JOIN = positionjoinsel
 );
 
 CREATE OPERATOR &> (
-   LEFTARG = seg, RIGHTARG = seg, PROCEDURE = seg_over_right,
-   COMMUTATOR = '&<',
-   RESTRICT = positionsel, JOIN = positionjoinsel
+       LEFTARG = seg,
+       RIGHTARG = seg,
+       PROCEDURE = seg_over_right,
+       COMMUTATOR = '&<',
+       RESTRICT = positionsel,
+       JOIN = positionjoinsel
 );
 
 CREATE OPERATOR >> (
-   LEFTARG = seg, RIGHTARG = seg, PROCEDURE = seg_right,
-   COMMUTATOR = '<<',
-   RESTRICT = positionsel, JOIN = positionjoinsel
+       LEFTARG = seg,
+       RIGHTARG = seg,
+       PROCEDURE = seg_right,
+       COMMUTATOR = '<<',
+       RESTRICT = positionsel,
+       JOIN = positionjoinsel
 );
 
 CREATE OPERATOR = (
-   LEFTARG = seg, RIGHTARG = seg, PROCEDURE = seg_same,
-   COMMUTATOR = '=', NEGATOR = '<>',
-   RESTRICT = eqsel, JOIN = eqjoinsel,
-   SORT1 = '<', SORT2 = '<'
+       LEFTARG = seg,
+       RIGHTARG = seg,
+       PROCEDURE = seg_same,
+       COMMUTATOR = '=',
+       NEGATOR = '<>',
+       RESTRICT = eqsel,
+       JOIN = eqjoinsel,
+       SORT1 = '<',
+       SORT2 = '<'
 );
 
 CREATE OPERATOR <> (
-   LEFTARG = seg, RIGHTARG = seg, PROCEDURE = seg_different,
-   COMMUTATOR = '<>', NEGATOR = '=',
-   RESTRICT = neqsel, JOIN = neqjoinsel
+       LEFTARG = seg,
+       RIGHTARG = seg,
+       PROCEDURE = seg_different,
+       COMMUTATOR = '<>',
+       NEGATOR = '=',
+       RESTRICT = neqsel,
+       JOIN = neqjoinsel
 );
 
 CREATE OPERATOR @ (
-   LEFTARG = seg, RIGHTARG = seg, PROCEDURE = seg_contains,
-   COMMUTATOR = '~',
-   RESTRICT = contsel, JOIN = contjoinsel
+       LEFTARG = seg,
+       RIGHTARG = seg,
+       PROCEDURE = seg_contains,
+       COMMUTATOR = '~',
+       RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR ~ (
-   LEFTARG = seg, RIGHTARG = seg, PROCEDURE = seg_contained,
-   COMMUTATOR = '@',
-   RESTRICT = contsel, JOIN = contjoinsel
+       LEFTARG = seg,
+       RIGHTARG = seg,
+       PROCEDURE = seg_contained,
+       COMMUTATOR = '@',
+       RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 
 -- define the GiST support methods
-CREATE FUNCTION gseg_consistent(internal,seg,int4) RETURNS bool
-       AS 'MODULE_PATHNAME' LANGUAGE 'c';
+CREATE FUNCTION gseg_consistent(internal,seg,int4)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-CREATE FUNCTION gseg_compress(internal) RETURNS internal 
-       AS 'MODULE_PATHNAME' LANGUAGE 'c';
+CREATE FUNCTION gseg_compress(internal)
+RETURNS internal 
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-CREATE FUNCTION gseg_decompress(internal) RETURNS internal 
-       AS 'MODULE_PATHNAME' LANGUAGE 'c';
+CREATE FUNCTION gseg_decompress(internal)
+RETURNS internal 
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-CREATE FUNCTION gseg_penalty(internal,internal,internal) RETURNS internal
-       AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION gseg_penalty(internal,internal,internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' with (isstrict);
 
-CREATE FUNCTION gseg_picksplit(internal, internal) RETURNS internal
-       AS 'MODULE_PATHNAME' LANGUAGE 'c';
+CREATE FUNCTION gseg_picksplit(internal, internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-CREATE FUNCTION gseg_union(bytea, internal) RETURNS seg 
-       AS 'MODULE_PATHNAME' LANGUAGE 'c';
+CREATE FUNCTION gseg_union(bytea, internal)
+RETURNS seg 
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-CREATE FUNCTION gseg_same(seg, seg, internal) RETURNS internal 
-       AS 'MODULE_PATHNAME' LANGUAGE 'c';
+CREATE FUNCTION gseg_same(seg, seg, internal)
+RETURNS internal 
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
 
 -- Create the operator class for indexing
 
 CREATE OPERATOR CLASS gist_seg_ops
-    DEFAULT FOR TYPE seg USING gist AS
+DEFAULT FOR TYPE seg USING gist 
+AS
        OPERATOR        1       << ,
        OPERATOR        2       &< ,
        OPERATOR        3       && ,
@@ -257,6 +355,3 @@ CREATE OPERATOR CLASS gist_seg_ops
        FUNCTION        5       gseg_penalty (internal, internal, internal),
        FUNCTION        6       gseg_picksplit (internal, internal),
        FUNCTION        7       gseg_same (seg, seg, internal);
-
-
-END TRANSACTION;
index 95394c95d04a0935d86f024b7c4741daba0bea52..6614ead0c592453575905a30b81d9aefc9e8793c 100644 (file)
@@ -7,6 +7,7 @@
 -- does not depend on contents of seg.sql.
 --
 \set ECHO none
+SET autocommit TO 'on';
 \i seg.sql
 \set ECHO all
 
index 172fdd74b251fb4a36eac2847cae348d32b61b6a..cec50b61895e9d01b82267e197b4fd3b268bde38 100644 (file)
@@ -1,6 +1,9 @@
-DROP FUNCTION autoinc();
+-- Adjust this setting to control where the objects get created.
+SET search_path = public;
 
-CREATE FUNCTION autoinc() 
-       RETURNS trigger 
-       AS 'MODULE_PATHNAME'
-       LANGUAGE 'C';
+SET autocommit TO 'on';
+
+CREATE OR REPLACE FUNCTION autoinc() 
+RETURNS trigger 
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
index b7689a4321c52bd5e29165e957a240a18f337e41..c8c67665799c8c9c8120de1f4d3f9b0206546f92 100644 (file)
@@ -1,6 +1,9 @@
-DROP FUNCTION insert_username();
+-- Adjust this setting to control where the objects get created.
+SET search_path = public;
 
-CREATE FUNCTION insert_username() 
-       RETURNS trigger 
-       AS 'MODULE_PATHNAME'
-       LANGUAGE 'C';
+SET autocommit TO 'on';
+
+CREATE OR REPLACE FUNCTION insert_username() 
+RETURNS trigger 
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
index 07208787a66297466ad5b72fc62452989124c85f..e89c37e6d52db289e2fa748bd1a396d7faa30f21 100644 (file)
@@ -1,6 +1,9 @@
-DROP FUNCTION moddatetime();
+-- Adjust this setting to control where the objects get created.
+SET search_path = public;
 
-CREATE FUNCTION moddatetime() 
-       RETURNS trigger 
-       AS 'MODULE_PATHNAME'
-       LANGUAGE 'C';
+SET autocommit TO 'on';
+
+CREATE OR REPLACE FUNCTION moddatetime()
+RETURNS trigger
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
index 688d2abd447c4b9ff33db5ab9b6ed3f224f10f77..322de9521e5cc367c0c3bc34d5b62eefb8714075 100644 (file)
@@ -1,12 +1,14 @@
-DROP FUNCTION check_primary_key ();
-DROP FUNCTION check_foreign_key ();
+-- Adjust this setting to control where the objects get created.
+SET search_path = public;
 
-CREATE FUNCTION check_primary_key ()
-       RETURNS trigger
-       AS 'MODULE_PATHNAME'
-       LANGUAGE 'C';
+SET autocommit TO 'on';
 
-CREATE FUNCTION check_foreign_key ()
-       RETURNS trigger
-       AS 'MODULE_PATHNAME'
-       LANGUAGE 'C';
+CREATE OR REPLACE FUNCTION check_primary_key()
+RETURNS trigger
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
+
+CREATE OR REPLACE FUNCTION check_foreign_key()
+RETURNS trigger
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
index f519b93de1fb097dcf9ee82ececbec9ab610f767..b297a23ec27470b0f5298cbd7fe6dfb21996df71 100644 (file)
@@ -1,12 +1,14 @@
-DROP FUNCTION timetravel();
-DROP FUNCTION set_timetravel(name, int4);
+-- Adjust this setting to control where the objects get created.
+SET search_path = public;
 
-CREATE FUNCTION timetravel() 
-       RETURNS trigger 
-       AS 'MODULE_PATHNAME'
-       LANGUAGE 'C';
+SET autocommit TO 'on';
 
-CREATE FUNCTION set_timetravel(name, int4) 
-       RETURNS int4 
-       AS 'MODULE_PATHNAME'
-       LANGUAGE 'C' WITH (isStrict);
+CREATE OR REPLACE FUNCTION timetravel() 
+RETURNS trigger 
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
+
+CREATE OR REPLACE FUNCTION set_timetravel(name, int4) 
+RETURNS int4 
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' WITH (isStrict);
index 8718b812bb20189141198697ad26473e2762750a..392cda2ee78baab670f4070a38afd20b22c9e0cf 100644 (file)
@@ -9,71 +9,76 @@
 
 -- Define the new output functions.
 --
-create function c_charout(bpchar) returns cstring
-  as 'MODULE_PATHNAME' 
-  language 'c';
+CREATE FUNCTION c_charout(bpchar)
+RETURNS cstring
+AS 'MODULE_PATHNAME' 
+LANGUAGE 'C';
 
-create function c_textout(text) returns cstring
-  as 'MODULE_PATHNAME' 
-  language 'c';
+CREATE FUNCTION c_textout(text)
+RETURNS cstring
+AS 'MODULE_PATHNAME' 
+LANGUAGE 'C';
 
-create function c_varcharout(varchar) returns cstring
-  as 'MODULE_PATHNAME' 
-  language 'c';
+CREATE FUNCTION c_varcharout(varchar)
+RETURNS cstring
+AS 'MODULE_PATHNAME' 
+LANGUAGE 'C';
 
 -- This is not needed because escapes are handled by the parser
 --
--- create function c_textin(cstring)
---   returns text
---   as 'MODULE_PATHNAME' 
---   language 'c';
+-- CREATE FUNCTION c_textin(cstring)
+-- RETURNS text
+-- AS 'MODULE_PATHNAME' 
+-- LANGUAGE 'c';
 
 -- Define a function which sets the new output routines for char types.
 --
---   select c_mode();
+--   SELECT c_mode();
 --
-create function c_mode() returns text
-  as 'update pg_type set typoutput=''c_textout''    where typname=''SET'';
-      update pg_type set typoutput=''c_varcharout'' where typname=''bpchar'';
-      update pg_type set typoutput=''c_textout''    where typname=''bytea'';
-      update pg_type set typoutput=''c_charout''    where typname=''char'';
-      update pg_type set typoutput=''c_textout''    where typname=''text'';
-      update pg_type set typoutput=''c_textout''    where typname=''unknown'';
-      update pg_type set typoutput=''c_varcharout'' where typname=''varchar'';
+CREATE FUNCTION c_mode()
+RETURNS text
+AS '  UPDATE pg_type SET typoutput=''c_textout''    WHERE typname=''SET'';
+      UPDATE pg_type SET typoutput=''c_varcharout'' WHERE typname=''bpchar'';
+      UPDATE pg_type SET typoutput=''c_textout''    WHERE typname=''bytea'';
+      UPDATE pg_type SET typoutput=''c_charout''    WHERE typname=''char'';
+      UPDATE pg_type SET typoutput=''c_textout''    WHERE typname=''text'';
+      UPDATE pg_type SET typoutput=''c_textout''    WHERE typname=''unknown'';
+      UPDATE pg_type SET typoutput=''c_varcharout'' WHERE typname=''varchar'';
       select ''c_mode''::text;'
-  language 'sql';
+LANGUAGE 'SQL';
 
 -- Define a function which restores the standard routines for char types.
 --
---   select pg_mode();
+--   SELECT pg_mode();
 --
-create function pg_mode() returns text
-  as 'update pg_type set typoutput=''textout''    where typname=''SET'';
-      update pg_type set typoutput=''varcharout'' where typname=''bpchar'';
-      update pg_type set typoutput=''textout''    where typname=''bytea'';
-      update pg_type set typoutput=''charout''    where typname=''char'';
-      update pg_type set typoutput=''textout''    where typname=''text'';
-      update pg_type set typoutput=''textout''    where typname=''unknown'';
-      update pg_type set typoutput=''varcharout'' where typname=''varchar'';
+CREATE FUNCTION pg_mode()
+RETURNS text
+AS '  UPDATE pg_type SET typoutput=''textout''    WHERE typname=''SET'';
+      UPDATE pg_type SET typoutput=''varcharout'' WHERE typname=''bpchar'';
+      UPDATE pg_type SET typoutput=''textout''    WHERE typname=''bytea'';
+      UPDATE pg_type SET typoutput=''charout''    WHERE typname=''char'';
+      UPDATE pg_type SET typoutput=''textout''    WHERE typname=''text'';
+      UPDATE pg_type SET typoutput=''textout''    WHERE typname=''unknown'';
+      UPDATE pg_type SET typoutput=''varcharout'' WHERE typname=''varchar'';
       select ''pg_mode''::text;'
-  language 'sql';
+LANGUAGE 'SQL';
 
 -- Use these to do the changes manually.
 --
--- update pg_type set typoutput='textout'    where typname='SET';
--- update pg_type set typoutput='varcharout' where typname='bpchar';
--- update pg_type set typoutput='textout'    where typname='bytea';
--- update pg_type set typoutput='charout'    where typname='char';
--- update pg_type set typoutput='textout'    where typname='text';
--- update pg_type set typoutput='textout'    where typname='unknown';
--- update pg_type set typoutput='varcharout' where typname='varchar';
+-- UPDATE pg_type SET typoutput='textout'    WHERE typname='SET';
+-- UPDATE pg_type SET typoutput='varcharout' WHERE typname='bpchar';
+-- UPDATE pg_type SET typoutput='textout'    WHERE typname='bytea';
+-- UPDATE pg_type SET typoutput='charout'    WHERE typname='char';
+-- UPDATE pg_type SET typoutput='textout'    WHERE typname='text';
+-- UPDATE pg_type SET typoutput='textout'    WHERE typname='unknown';
+-- UPDATE pg_type SET typoutput='varcharout' WHERE typname='varchar';
 --
--- update pg_type set typoutput='c_textout'    where typname='SET';
--- update pg_type set typoutput='c_varcharout' where typname='bpchar';
--- update pg_type set typoutput='c_textout'    where typname='bytea';
--- update pg_type set typoutput='c_charout'    where typname='char';
--- update pg_type set typoutput='c_textout'    where typname='text';
--- update pg_type set typoutput='c_textout'    where typname='unknown';
--- update pg_type set typoutput='c_varcharout' where typname='varchar';
+-- UPDATE pg_type SET typoutput='c_textout'    WHERE typname='SET';
+-- UPDATE pg_type SET typoutput='c_varcharout' WHERE typname='bpchar';
+-- UPDATE pg_type SET typoutput='c_textout'    WHERE typname='bytea';
+-- UPDATE pg_type SET typoutput='c_charout'    WHERE typname='char';
+-- UPDATE pg_type SET typoutput='c_textout'    WHERE typname='text';
+-- UPDATE pg_type SET typoutput='c_textout'    WHERE typname='unknown';
+-- UPDATE pg_type SET typoutput='c_varcharout' WHERE typname='varchar';
 
 -- end of file
index 9b04bfa4f5c06fa3dc86be994c1346de284a01fd..8afcdebdf716b0791920e1e405a920427baf6aab 100644 (file)
@@ -16,107 +16,107 @@ SELECT avg(normal_rand)::int FROM normal_rand(100, 250, 0.2, EXTRACT(SECONDS FRO
 --
 -- crosstab()
 --
-create table ct(id int, rowclass text, rowid text, attribute text, value text);
+CREATE TABLE ct(id int, rowclass text, rowid text, attribute text, value text);
 \copy ct from 'data/ct.data'
-select * from crosstab2('select rowid, attribute, value from ct where rowclass = ''group1'' and (attribute = ''att2'' or attribute = ''att3'') order by 1,2;');
+SELECT * FROM crosstab2('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' and (attribute = ''att2'' or attribute = ''att3'') ORDER BY 1,2;');
  row_name | category_1 | category_2 
 ----------+------------+------------
  test1    | val2       | val3
  test2    | val6       | val7
 (2 rows)
 
-select * from crosstab3('select rowid, attribute, value from ct where rowclass = ''group1'' and (attribute = ''att2'' or attribute = ''att3'') order by 1,2;');
+SELECT * FROM crosstab3('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' and (attribute = ''att2'' or attribute = ''att3'') ORDER BY 1,2;');
  row_name | category_1 | category_2 | category_3 
 ----------+------------+------------+------------
  test1    | val2       | val3       | 
  test2    | val6       | val7       | 
 (2 rows)
 
-select * from crosstab4('select rowid, attribute, value from ct where rowclass = ''group1'' and (attribute = ''att2'' or attribute = ''att3'') order by 1,2;');
+SELECT * FROM crosstab4('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' and (attribute = ''att2'' or attribute = ''att3'') ORDER BY 1,2;');
  row_name | category_1 | category_2 | category_3 | category_4 
 ----------+------------+------------+------------+------------
  test1    | val2       | val3       |            | 
  test2    | val6       | val7       |            | 
 (2 rows)
 
-select * from crosstab2('select rowid, attribute, value from ct where rowclass = ''group1'' order by 1,2;');
+SELECT * FROM crosstab2('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' ORDER BY 1,2;');
  row_name | category_1 | category_2 
 ----------+------------+------------
  test1    | val1       | val2
  test2    | val5       | val6
 (2 rows)
 
-select * from crosstab3('select rowid, attribute, value from ct where rowclass = ''group1'' order by 1,2;');
+SELECT * FROM crosstab3('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' ORDER BY 1,2;');
  row_name | category_1 | category_2 | category_3 
 ----------+------------+------------+------------
  test1    | val1       | val2       | val3
  test2    | val5       | val6       | val7
 (2 rows)
 
-select * from crosstab4('select rowid, attribute, value from ct where rowclass = ''group1'' order by 1,2;');
+SELECT * FROM crosstab4('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' ORDER BY 1,2;');
  row_name | category_1 | category_2 | category_3 | category_4 
 ----------+------------+------------+------------+------------
  test1    | val1       | val2       | val3       | val4
  test2    | val5       | val6       | val7       | val8
 (2 rows)
 
-select * from crosstab2('select rowid, attribute, value from ct where rowclass = ''group2'' and (attribute = ''att1'' or attribute = ''att2'') order by 1,2;');
+SELECT * FROM crosstab2('SELECT rowid, attribute, value FROM ct where rowclass = ''group2'' and (attribute = ''att1'' or attribute = ''att2'') ORDER BY 1,2;');
  row_name | category_1 | category_2 
 ----------+------------+------------
  test3    | val1       | val2
  test4    | val4       | val5
 (2 rows)
 
-select * from crosstab3('select rowid, attribute, value from ct where rowclass = ''group2'' and (attribute = ''att1'' or attribute = ''att2'') order by 1,2;');
+SELECT * FROM crosstab3('SELECT rowid, attribute, value FROM ct where rowclass = ''group2'' and (attribute = ''att1'' or attribute = ''att2'') ORDER BY 1,2;');
  row_name | category_1 | category_2 | category_3 
 ----------+------------+------------+------------
  test3    | val1       | val2       | 
  test4    | val4       | val5       | 
 (2 rows)
 
-select * from crosstab4('select rowid, attribute, value from ct where rowclass = ''group2'' and (attribute = ''att1'' or attribute = ''att2'') order by 1,2;');
+SELECT * FROM crosstab4('SELECT rowid, attribute, value FROM ct where rowclass = ''group2'' and (attribute = ''att1'' or attribute = ''att2'') ORDER BY 1,2;');
  row_name | category_1 | category_2 | category_3 | category_4 
 ----------+------------+------------+------------+------------
  test3    | val1       | val2       |            | 
  test4    | val4       | val5       |            | 
 (2 rows)
 
-select * from crosstab2('select rowid, attribute, value from ct where rowclass = ''group2'' order by 1,2;');
+SELECT * FROM crosstab2('SELECT rowid, attribute, value FROM ct where rowclass = ''group2'' ORDER BY 1,2;');
  row_name | category_1 | category_2 
 ----------+------------+------------
  test3    | val1       | val2
  test4    | val4       | val5
 (2 rows)
 
-select * from crosstab3('select rowid, attribute, value from ct where rowclass = ''group2'' order by 1,2;');
+SELECT * FROM crosstab3('SELECT rowid, attribute, value FROM ct where rowclass = ''group2'' ORDER BY 1,2;');
  row_name | category_1 | category_2 | category_3 
 ----------+------------+------------+------------
  test3    | val1       | val2       | val3
  test4    | val4       | val5       | val6
 (2 rows)
 
-select * from crosstab4('select rowid, attribute, value from ct where rowclass = ''group2'' order by 1,2;');
+SELECT * FROM crosstab4('SELECT rowid, attribute, value FROM ct where rowclass = ''group2'' ORDER BY 1,2;');
  row_name | category_1 | category_2 | category_3 | category_4 
 ----------+------------+------------+------------+------------
  test3    | val1       | val2       | val3       | 
  test4    | val4       | val5       | val6       | 
 (2 rows)
 
-select * from crosstab('select rowid, attribute, value from ct where rowclass = ''group1'' order by 1,2;', 2) as c(rowid text, att1 text, att2 text);
+SELECT * FROM crosstab('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' ORDER BY 1,2;', 2) AS c(rowid text, att1 text, att2 text);
  rowid | att1 | att2 
 -------+------+------
  test1 | val1 | val2
  test2 | val5 | val6
 (2 rows)
 
-select * from crosstab('select rowid, attribute, value from ct where rowclass = ''group1'' order by 1,2;', 3) as c(rowid text, att1 text, att2 text, att3 text);
+SELECT * FROM crosstab('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' ORDER BY 1,2;', 3) AS c(rowid text, att1 text, att2 text, att3 text);
  rowid | att1 | att2 | att3 
 -------+------+------+------
  test1 | val1 | val2 | val3
  test2 | val5 | val6 | val7
 (2 rows)
 
-select * from crosstab('select rowid, attribute, value from ct where rowclass = ''group1'' order by 1,2;', 4) as c(rowid text, att1 text, att2 text, att3 text, att4 text);
+SELECT * FROM crosstab('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' ORDER BY 1,2;', 4) AS c(rowid text, att1 text, att2 text, att3 text, att4 text);
  rowid | att1 | att2 | att3 | att4 
 -------+------+------+------+------
  test1 | val1 | val2 | val3 | val4
index a450670d50812476fe3d10a47af17e2c5cb857d2..4c1da066878b6363df06322b81ef356b866236b6 100644 (file)
@@ -3,6 +3,7 @@
 -- does not depend on contents of tablefunc.sql.
 --
 \set ECHO none
+SET autocommit TO 'on';
 \i tablefunc.sql
 \set ECHO all
 
@@ -15,28 +16,28 @@ SELECT avg(normal_rand)::int FROM normal_rand(100, 250, 0.2, EXTRACT(SECONDS FRO
 --
 -- crosstab()
 --
-create table ct(id int, rowclass text, rowid text, attribute text, value text);
+CREATE TABLE ct(id int, rowclass text, rowid text, attribute text, value text);
 \copy ct from 'data/ct.data'
 
-select * from crosstab2('select rowid, attribute, value from ct where rowclass = ''group1'' and (attribute = ''att2'' or attribute = ''att3'') order by 1,2;');
-select * from crosstab3('select rowid, attribute, value from ct where rowclass = ''group1'' and (attribute = ''att2'' or attribute = ''att3'') order by 1,2;');
-select * from crosstab4('select rowid, attribute, value from ct where rowclass = ''group1'' and (attribute = ''att2'' or attribute = ''att3'') order by 1,2;');
+SELECT * FROM crosstab2('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' and (attribute = ''att2'' or attribute = ''att3'') ORDER BY 1,2;');
+SELECT * FROM crosstab3('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' and (attribute = ''att2'' or attribute = ''att3'') ORDER BY 1,2;');
+SELECT * FROM crosstab4('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' and (attribute = ''att2'' or attribute = ''att3'') ORDER BY 1,2;');
 
-select * from crosstab2('select rowid, attribute, value from ct where rowclass = ''group1'' order by 1,2;');
-select * from crosstab3('select rowid, attribute, value from ct where rowclass = ''group1'' order by 1,2;');
-select * from crosstab4('select rowid, attribute, value from ct where rowclass = ''group1'' order by 1,2;');
+SELECT * FROM crosstab2('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' ORDER BY 1,2;');
+SELECT * FROM crosstab3('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' ORDER BY 1,2;');
+SELECT * FROM crosstab4('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' ORDER BY 1,2;');
 
-select * from crosstab2('select rowid, attribute, value from ct where rowclass = ''group2'' and (attribute = ''att1'' or attribute = ''att2'') order by 1,2;');
-select * from crosstab3('select rowid, attribute, value from ct where rowclass = ''group2'' and (attribute = ''att1'' or attribute = ''att2'') order by 1,2;');
-select * from crosstab4('select rowid, attribute, value from ct where rowclass = ''group2'' and (attribute = ''att1'' or attribute = ''att2'') order by 1,2;');
+SELECT * FROM crosstab2('SELECT rowid, attribute, value FROM ct where rowclass = ''group2'' and (attribute = ''att1'' or attribute = ''att2'') ORDER BY 1,2;');
+SELECT * FROM crosstab3('SELECT rowid, attribute, value FROM ct where rowclass = ''group2'' and (attribute = ''att1'' or attribute = ''att2'') ORDER BY 1,2;');
+SELECT * FROM crosstab4('SELECT rowid, attribute, value FROM ct where rowclass = ''group2'' and (attribute = ''att1'' or attribute = ''att2'') ORDER BY 1,2;');
 
-select * from crosstab2('select rowid, attribute, value from ct where rowclass = ''group2'' order by 1,2;');
-select * from crosstab3('select rowid, attribute, value from ct where rowclass = ''group2'' order by 1,2;');
-select * from crosstab4('select rowid, attribute, value from ct where rowclass = ''group2'' order by 1,2;');
+SELECT * FROM crosstab2('SELECT rowid, attribute, value FROM ct where rowclass = ''group2'' ORDER BY 1,2;');
+SELECT * FROM crosstab3('SELECT rowid, attribute, value FROM ct where rowclass = ''group2'' ORDER BY 1,2;');
+SELECT * FROM crosstab4('SELECT rowid, attribute, value FROM ct where rowclass = ''group2'' ORDER BY 1,2;');
 
-select * from crosstab('select rowid, attribute, value from ct where rowclass = ''group1'' order by 1,2;', 2) as c(rowid text, att1 text, att2 text);
-select * from crosstab('select rowid, attribute, value from ct where rowclass = ''group1'' order by 1,2;', 3) as c(rowid text, att1 text, att2 text, att3 text);
-select * from crosstab('select rowid, attribute, value from ct where rowclass = ''group1'' order by 1,2;', 4) as c(rowid text, att1 text, att2 text, att3 text, att4 text);
+SELECT * FROM crosstab('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' ORDER BY 1,2;', 2) AS c(rowid text, att1 text, att2 text);
+SELECT * FROM crosstab('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' ORDER BY 1,2;', 3) AS c(rowid text, att1 text, att2 text, att3 text);
+SELECT * FROM crosstab('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' ORDER BY 1,2;', 4) AS c(rowid text, att1 text, att2 text, att3 text, att4 text);
 
 -- test connectby with text based hierarchy
 CREATE TABLE connectby_text(keyid text, parent_keyid text);
index 504d8ee014b0308006508504c14a863e6f732f75..3f98354a91aa7cd3ebc0137bc9a6ec8c02167a4c 100644 (file)
@@ -1,59 +1,63 @@
+-- Adjust this setting to control where the objects get created.
+SET search_path = public;
+
+SET autocommit TO 'on';
+
 CREATE OR REPLACE FUNCTION normal_rand(int4, float8, float8, int4)
-  RETURNS setof float8
-  AS 'MODULE_PATHNAME','normal_rand' LANGUAGE 'c' VOLATILE STRICT;
+RETURNS setof float8
+AS 'MODULE_PATHNAME','normal_rand'
+LANGUAGE 'C' VOLATILE STRICT;
 
 CREATE TYPE tablefunc_crosstab_2 AS
 (
-  row_name TEXT,
-  category_1 TEXT,
-  category_2 TEXT
+       row_name TEXT,
+       category_1 TEXT,
+       category_2 TEXT
 );
 
 CREATE TYPE tablefunc_crosstab_3 AS
 (
-  row_name TEXT,
-  category_1 TEXT,
-  category_2 TEXT,
-  category_3 TEXT
+       row_name TEXT,
+       category_1 TEXT,
+       category_2 TEXT,
+       category_3 TEXT
 );
 
 CREATE TYPE tablefunc_crosstab_4 AS
 (
-  row_name TEXT,
-  category_1 TEXT,
-  category_2 TEXT,
-  category_3 TEXT,
-  category_4 TEXT
+       row_name TEXT,
+       category_1 TEXT,
+       category_2 TEXT,
+       category_3 TEXT,
+       category_4 TEXT
 );
 
 CREATE OR REPLACE FUNCTION crosstab2(text)
-  RETURNS setof tablefunc_crosstab_2
-  AS 'MODULE_PATHNAME','crosstab' LANGUAGE 'c' STABLE STRICT;
+RETURNS setof tablefunc_crosstab_2
+AS 'MODULE_PATHNAME','crosstab'
+LANGUAGE 'C' STABLE STRICT;
 
 CREATE OR REPLACE FUNCTION crosstab3(text)
-  RETURNS setof tablefunc_crosstab_3
-  AS 'MODULE_PATHNAME','crosstab' LANGUAGE 'c' STABLE STRICT;
+RETURNS setof tablefunc_crosstab_3
+AS 'MODULE_PATHNAME','crosstab'
+LANGUAGE 'C' STABLE STRICT;
 
 CREATE OR REPLACE FUNCTION crosstab4(text)
-  RETURNS setof tablefunc_crosstab_4
-  AS 'MODULE_PATHNAME','crosstab' LANGUAGE 'c' STABLE STRICT;
+RETURNS setof tablefunc_crosstab_4
+AS 'MODULE_PATHNAME','crosstab'
+LANGUAGE 'C' STABLE STRICT;
 
 CREATE OR REPLACE FUNCTION crosstab(text,int)
-  RETURNS setof record
-  AS 'MODULE_PATHNAME','crosstab' LANGUAGE 'c' STABLE STRICT;
+RETURNS setof record
+AS 'MODULE_PATHNAME','crosstab'
+LANGUAGE 'C' STABLE STRICT;
 
 CREATE OR REPLACE FUNCTION connectby(text,text,text,text,int,text)
-  RETURNS setof record
-  AS 'MODULE_PATHNAME','connectby_text' LANGUAGE 'c' STABLE STRICT;
+RETURNS setof record
+AS 'MODULE_PATHNAME','connectby_text'
+LANGUAGE 'C' STABLE STRICT;
 
 CREATE OR REPLACE FUNCTION connectby(text,text,text,text,int)
-  RETURNS setof record
-  AS 'MODULE_PATHNAME','connectby_text' LANGUAGE 'c' STABLE STRICT;
-
-GRANT EXECUTE ON FUNCTION normal_rand(int4, float8, float8, int4) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION crosstab2(text) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION crosstab3(text) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION crosstab4(text) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION crosstab(text,int) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION connectby(text,text,text,text,int,text) TO PUBLIC;
-GRANT EXECUTE ON FUNCTION connectby(text,text,text,text,int) TO PUBLIC;
+RETURNS setof record
+AS 'MODULE_PATHNAME','connectby_text'
+LANGUAGE 'C' STABLE STRICT;
index 85aa9786558e99c6d068e481eaabdfbf05f9a2bf..0c8831189fdeba4af43c9a03ec2de38788d86d61 100644 (file)
@@ -9,539 +9,539 @@ psql:tsearch.sql:40: WARNING:  ProcedureCreate: type query_txt is not yet define
 psql:tsearch.sql:45: WARNING:  Argument type "query_txt" is only a shell
 psql:tsearch.sql:57: WARNING:  ProcedureCreate: type mquery_txt is not yet defined
 psql:tsearch.sql:63: WARNING:  Argument type "mquery_txt" is only a shell
-psql:tsearch.sql:133: WARNING:  ProcedureCreate: type gtxtidx is not yet defined
-psql:tsearch.sql:138: WARNING:  Argument type "gtxtidx" is only a shell
+psql:tsearch.sql:158: WARNING:  ProcedureCreate: type gtxtidx is not yet defined
+psql:tsearch.sql:163: WARNING:  Argument type "gtxtidx" is only a shell
 --txtidx
-select '1'::txtidx;
+SELECT '1'::txtidx;
  txtidx 
 --------
  '1'
 (1 row)
 
-select '1 '::txtidx;
+SELECT '1 '::txtidx;
  txtidx 
 --------
  '1'
 (1 row)
 
-select ' 1'::txtidx;
+SELECT ' 1'::txtidx;
  txtidx 
 --------
  '1'
 (1 row)
 
-select ' 1 '::txtidx;
+SELECT ' 1 '::txtidx;
  txtidx 
 --------
  '1'
 (1 row)
 
-select '1 2'::txtidx;
+SELECT '1 2'::txtidx;
  txtidx  
 ---------
  '1' '2'
 (1 row)
 
-select '\'1 2\''::txtidx;
+SELECT '\'1 2\''::txtidx;
  txtidx 
 --------
  '1 2'
 (1 row)
 
-select '\'1 \\\'2\''::txtidx;
+SELECT '\'1 \\\'2\''::txtidx;
  txtidx  
 ---------
  '1 \'2'
 (1 row)
 
-select '\'1 \\\'2\'3'::txtidx;
+SELECT '\'1 \\\'2\'3'::txtidx;
    txtidx    
 -------------
  '3' '1 \'2'
 (1 row)
 
-select '\'1 \\\'2\' 3'::txtidx;
+SELECT '\'1 \\\'2\' 3'::txtidx;
    txtidx    
 -------------
  '3' '1 \'2'
 (1 row)
 
-select '\'1 \\\'2\' \' 3\' 4 '::txtidx;
+SELECT '\'1 \\\'2\' \' 3\' 4 '::txtidx;
       txtidx      
 ------------------
  '4' ' 3' '1 \'2'
 (1 row)
 
 --query_txt
-select '1'::query_txt;
+SELECT '1'::query_txt;
  query_txt 
 -----------
  '1'
 (1 row)
 
-select '1 '::query_txt;
+SELECT '1 '::query_txt;
  query_txt 
 -----------
  '1'
 (1 row)
 
-select ' 1'::query_txt;
+SELECT ' 1'::query_txt;
  query_txt 
 -----------
  '1'
 (1 row)
 
-select ' 1 '::query_txt;
+SELECT ' 1 '::query_txt;
  query_txt 
 -----------
  '1'
 (1 row)
 
-select '\'1 2\''::query_txt;
+SELECT '\'1 2\''::query_txt;
  query_txt 
 -----------
  '1 2'
 (1 row)
 
-select '\'1 \\\'2\''::query_txt;
+SELECT '\'1 \\\'2\''::query_txt;
  query_txt 
 -----------
  '1 \'2'
 (1 row)
 
-select '!1'::query_txt;
+SELECT '!1'::query_txt;
  query_txt 
 -----------
  !'1'
 (1 row)
 
-select '1|2'::query_txt;
+SELECT '1|2'::query_txt;
  query_txt 
 -----------
  '1' | '2'
 (1 row)
 
-select '1|!2'::query_txt;
+SELECT '1|!2'::query_txt;
  query_txt  
 ------------
  '1' | !'2'
 (1 row)
 
-select '!1|2'::query_txt;
+SELECT '!1|2'::query_txt;
  query_txt  
 ------------
  !'1' | '2'
 (1 row)
 
-select '!1|!2'::query_txt;
+SELECT '!1|!2'::query_txt;
   query_txt  
 -------------
  !'1' | !'2'
 (1 row)
 
-select '!(!1|!2)'::query_txt;
+SELECT '!(!1|!2)'::query_txt;
     query_txt     
 ------------------
  !( !'1' | !'2' )
 (1 row)
 
-select '!(!1|2)'::query_txt;
+SELECT '!(!1|2)'::query_txt;
     query_txt    
 -----------------
  !( !'1' | '2' )
 (1 row)
 
-select '!(1|!2)'::query_txt;
+SELECT '!(1|!2)'::query_txt;
     query_txt    
 -----------------
  !( '1' | !'2' )
 (1 row)
 
-select '!(1|2)'::query_txt;
+SELECT '!(1|2)'::query_txt;
    query_txt    
 ----------------
  !( '1' | '2' )
 (1 row)
 
-select '1&2'::query_txt;
+SELECT '1&2'::query_txt;
  query_txt 
 -----------
  '1' & '2'
 (1 row)
 
-select '!1&2'::query_txt;
+SELECT '!1&2'::query_txt;
  query_txt  
 ------------
  !'1' & '2'
 (1 row)
 
-select '1&!2'::query_txt;
+SELECT '1&!2'::query_txt;
  query_txt  
 ------------
  '1' & !'2'
 (1 row)
 
-select '!1&!2'::query_txt;
+SELECT '!1&!2'::query_txt;
   query_txt  
 -------------
  !'1' & !'2'
 (1 row)
 
-select '(1&2)'::query_txt;
+SELECT '(1&2)'::query_txt;
  query_txt 
 -----------
  '1' & '2'
 (1 row)
 
-select '1&(2)'::query_txt;
+SELECT '1&(2)'::query_txt;
  query_txt 
 -----------
  '1' & '2'
 (1 row)
 
-select '!(1)&2'::query_txt;
+SELECT '!(1)&2'::query_txt;
  query_txt  
 ------------
  !'1' & '2'
 (1 row)
 
-select '!(1&2)'::query_txt;
+SELECT '!(1&2)'::query_txt;
    query_txt    
 ----------------
  !( '1' & '2' )
 (1 row)
 
-select '1|2&3'::query_txt;
+SELECT '1|2&3'::query_txt;
     query_txt    
 -----------------
  '1' | '2' & '3'
 (1 row)
 
-select '1|(2&3)'::query_txt;
+SELECT '1|(2&3)'::query_txt;
     query_txt    
 -----------------
  '1' | '2' & '3'
 (1 row)
 
-select '(1|2)&3'::query_txt;
+SELECT '(1|2)&3'::query_txt;
       query_txt      
 ---------------------
  ( '1' | '2' ) & '3'
 (1 row)
 
-select '1|2&!3'::query_txt;
+SELECT '1|2&!3'::query_txt;
     query_txt     
 ------------------
  '1' | '2' & !'3'
 (1 row)
 
-select '1|!2&3'::query_txt;
+SELECT '1|!2&3'::query_txt;
     query_txt     
 ------------------
  '1' | !'2' & '3'
 (1 row)
 
-select '!1|2&3'::query_txt;
+SELECT '!1|2&3'::query_txt;
     query_txt     
 ------------------
  !'1' | '2' & '3'
 (1 row)
 
-select '!1|(2&3)'::query_txt;
+SELECT '!1|(2&3)'::query_txt;
     query_txt     
 ------------------
  !'1' | '2' & '3'
 (1 row)
 
-select '!(1|2)&3'::query_txt;
+SELECT '!(1|2)&3'::query_txt;
       query_txt       
 ----------------------
  !( '1' | '2' ) & '3'
 (1 row)
 
-select '(!1|2)&3'::query_txt;
+SELECT '(!1|2)&3'::query_txt;
       query_txt       
 ----------------------
  ( !'1' | '2' ) & '3'
 (1 row)
 
-select '1|(2|(4|(5|6)))'::query_txt;
+SELECT '1|(2|(4|(5|6)))'::query_txt;
                 query_txt                
 -----------------------------------------
  '1' | ( '2' | ( '4' | ( '5' | '6' ) ) )
 (1 row)
 
-select '1|2|4|5|6'::query_txt;
+SELECT '1|2|4|5|6'::query_txt;
                 query_txt                
 -----------------------------------------
  ( ( ( '1' | '2' ) | '4' ) | '5' ) | '6'
 (1 row)
 
-select '1&(2&(4&(5&6)))'::query_txt;
+SELECT '1&(2&(4&(5&6)))'::query_txt;
           query_txt          
 -----------------------------
  '1' & '2' & '4' & '5' & '6'
 (1 row)
 
-select '1&2&4&5&6'::query_txt;
+SELECT '1&2&4&5&6'::query_txt;
           query_txt          
 -----------------------------
  '1' & '2' & '4' & '5' & '6'
 (1 row)
 
-select '1&(2&(4&(5|6)))'::query_txt;
+SELECT '1&(2&(4&(5|6)))'::query_txt;
             query_txt            
 ---------------------------------
  '1' & '2' & '4' & ( '5' | '6' )
 (1 row)
 
-select '1&(2&(4&(5|!6)))'::query_txt;
+SELECT '1&(2&(4&(5|!6)))'::query_txt;
             query_txt             
 ----------------------------------
  '1' & '2' & '4' & ( '5' | !'6' )
 (1 row)
 
-select '1&(\'2\'&(\' 4\'&(\\|5 | \'6 \\\' !|&\')))'::query_txt;
+SELECT '1&(\'2\'&(\' 4\'&(\\|5 | \'6 \\\' !|&\')))'::query_txt;
                 query_txt                 
 ------------------------------------------
  '1' & '2' & ' 4' & ( '|5' | '6 \' !|&' )
 (1 row)
 
-select '1'::mquery_txt;
+SELECT '1'::mquery_txt;
  mquery_txt 
 ------------
  '1'
 (1 row)
 
-select '1 '::mquery_txt;
+SELECT '1 '::mquery_txt;
  mquery_txt 
 ------------
  '1'
 (1 row)
 
-select ' 1'::mquery_txt;
+SELECT ' 1'::mquery_txt;
  mquery_txt 
 ------------
  '1'
 (1 row)
 
-select ' 1 '::mquery_txt;
+SELECT ' 1 '::mquery_txt;
  mquery_txt 
 ------------
  '1'
 (1 row)
 
-select '\'1 2\''::mquery_txt;
+SELECT '\'1 2\''::mquery_txt;
  mquery_txt 
 ------------
  '1' & '2'
 (1 row)
 
-select '\'1 \\\'2\''::mquery_txt;
+SELECT '\'1 \\\'2\''::mquery_txt;
  mquery_txt 
 ------------
  '1' & '2'
 (1 row)
 
-select '!1'::mquery_txt;
+SELECT '!1'::mquery_txt;
  mquery_txt 
 ------------
  !'1'
 (1 row)
 
-select '1|2'::mquery_txt;
+SELECT '1|2'::mquery_txt;
  mquery_txt 
 ------------
  '1' | '2'
 (1 row)
 
-select '1|!2'::mquery_txt;
+SELECT '1|!2'::mquery_txt;
  mquery_txt 
 ------------
  '1' | !'2'
 (1 row)
 
-select '!1|2'::mquery_txt;
+SELECT '!1|2'::mquery_txt;
  mquery_txt 
 ------------
  !'1' | '2'
 (1 row)
 
-select '!1|!2'::mquery_txt;
+SELECT '!1|!2'::mquery_txt;
  mquery_txt  
 -------------
  !'1' | !'2'
 (1 row)
 
-select '!(!1|!2)'::mquery_txt;
+SELECT '!(!1|!2)'::mquery_txt;
     mquery_txt    
 ------------------
  !( !'1' | !'2' )
 (1 row)
 
-select '!(!1|2)'::mquery_txt;
+SELECT '!(!1|2)'::mquery_txt;
    mquery_txt    
 -----------------
  !( !'1' | '2' )
 (1 row)
 
-select '!(1|!2)'::mquery_txt;
+SELECT '!(1|!2)'::mquery_txt;
    mquery_txt    
 -----------------
  !( '1' | !'2' )
 (1 row)
 
-select '!(1|2)'::mquery_txt;
+SELECT '!(1|2)'::mquery_txt;
    mquery_txt   
 ----------------
  !( '1' | '2' )
 (1 row)
 
-select '1&2'::mquery_txt;
+SELECT '1&2'::mquery_txt;
  mquery_txt 
 ------------
  '1' & '2'
 (1 row)
 
-select '!1&2'::mquery_txt;
+SELECT '!1&2'::mquery_txt;
  mquery_txt 
 ------------
  !'1' & '2'
 (1 row)
 
-select '1&!2'::mquery_txt;
+SELECT '1&!2'::mquery_txt;
  mquery_txt 
 ------------
  '1' & !'2'
 (1 row)
 
-select '!1&!2'::mquery_txt;
+SELECT '!1&!2'::mquery_txt;
  mquery_txt  
 -------------
  !'1' & !'2'
 (1 row)
 
-select '(1&2)'::mquery_txt;
+SELECT '(1&2)'::mquery_txt;
  mquery_txt 
 ------------
  '1' & '2'
 (1 row)
 
-select '1&(2)'::mquery_txt;
+SELECT '1&(2)'::mquery_txt;
  mquery_txt 
 ------------
  '1' & '2'
 (1 row)
 
-select '!(1)&2'::mquery_txt;
+SELECT '!(1)&2'::mquery_txt;
  mquery_txt 
 ------------
  !'1' & '2'
 (1 row)
 
-select '!(1&2)'::mquery_txt;
+SELECT '!(1&2)'::mquery_txt;
    mquery_txt   
 ----------------
  !( '1' & '2' )
 (1 row)
 
-select '1|2&3'::mquery_txt;
+SELECT '1|2&3'::mquery_txt;
    mquery_txt    
 -----------------
  '1' | '2' & '3'
 (1 row)
 
-select '1|(2&3)'::mquery_txt;
+SELECT '1|(2&3)'::mquery_txt;
    mquery_txt    
 -----------------
  '1' | '2' & '3'
 (1 row)
 
-select '(1|2)&3'::mquery_txt;
+SELECT '(1|2)&3'::mquery_txt;
      mquery_txt      
 ---------------------
  ( '1' | '2' ) & '3'
 (1 row)
 
-select '1|2&!3'::mquery_txt;
+SELECT '1|2&!3'::mquery_txt;
     mquery_txt    
 ------------------
  '1' | '2' & !'3'
 (1 row)
 
-select '1|!2&3'::mquery_txt;
+SELECT '1|!2&3'::mquery_txt;
     mquery_txt    
 ------------------
  '1' | !'2' & '3'
 (1 row)
 
-select '!1|2&3'::mquery_txt;
+SELECT '!1|2&3'::mquery_txt;
     mquery_txt    
 ------------------
  !'1' | '2' & '3'
 (1 row)
 
-select '!1|(2&3)'::mquery_txt;
+SELECT '!1|(2&3)'::mquery_txt;
     mquery_txt    
 ------------------
  !'1' | '2' & '3'
 (1 row)
 
-select '!(1|2)&3'::mquery_txt;
+SELECT '!(1|2)&3'::mquery_txt;
       mquery_txt      
 ----------------------
  !( '1' | '2' ) & '3'
 (1 row)
 
-select '(!1|2)&3'::mquery_txt;
+SELECT '(!1|2)&3'::mquery_txt;
       mquery_txt      
 ----------------------
  ( !'1' | '2' ) & '3'
 (1 row)
 
-select '1|(2|(4|(5|6)))'::mquery_txt;
+SELECT '1|(2|(4|(5|6)))'::mquery_txt;
                mquery_txt                
 -----------------------------------------
  '1' | ( '2' | ( '4' | ( '5' | '6' ) ) )
 (1 row)
 
-select '1|2|4|5|6'::mquery_txt;
+SELECT '1|2|4|5|6'::mquery_txt;
                mquery_txt                
 -----------------------------------------
  ( ( ( '1' | '2' ) | '4' ) | '5' ) | '6'
 (1 row)
 
-select '1&(2&(4&(5&6)))'::mquery_txt;
+SELECT '1&(2&(4&(5&6)))'::mquery_txt;
          mquery_txt          
 -----------------------------
  '1' & '2' & '4' & '5' & '6'
 (1 row)
 
-select '1&2&4&5&6'::mquery_txt;
+SELECT '1&2&4&5&6'::mquery_txt;
          mquery_txt          
 -----------------------------
  '1' & '2' & '4' & '5' & '6'
 (1 row)
 
-select '1&(2&(4&(5|6)))'::mquery_txt;
+SELECT '1&(2&(4&(5|6)))'::mquery_txt;
            mquery_txt            
 ---------------------------------
  '1' & '2' & '4' & ( '5' | '6' )
 (1 row)
 
-select '1&(2&(4&(5|!6)))'::mquery_txt;
+SELECT '1&(2&(4&(5|!6)))'::mquery_txt;
             mquery_txt            
 ----------------------------------
  '1' & '2' & '4' & ( '5' | !'6' )
 (1 row)
 
-select '1&(\'2\'&(\' 4\'&(\\|5 | \'6 \\\' !|&\')))'::mquery_txt;
+SELECT '1&(\'2\'&(\' 4\'&(\\|5 | \'6 \\\' !|&\')))'::mquery_txt;
            mquery_txt            
 ---------------------------------
  '1' & '2' & '4' & ( '5' | '6' )
 (1 row)
 
-select 'querty-fgries | http://www.google.com/index.html | www.rambler.ru/index.shtml'::mquery_txt;
+SELECT 'querty-fgries | http://www.google.com/index.html | www.rambler.ru/index.shtml'::mquery_txt;
                                                                                 mquery_txt                                                                                 
 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  ( 'querty-fgri' & 'querti' & 'fgri' | 'www.google.com/index.html' & 'www.google.com' & '/index.html' ) | 'www.rambler.ru/index.shtml' & 'www.rambler.ru' & '/index.shtml'
@@ -694,7 +694,7 @@ SELECT count(*) FROM test_txtidx WHERE a ## '(eq|yt)&(wR|qh)';
     11
 (1 row)
 
-select txt2txtidx('345 qwe@efd.r \' http://www.com/ http://aew.werc.ewr/?ad=qwe&dw 1aew.werc.ewr/?ad=qwe&dw 2aew.werc.ewr http://3aew.werc.ewr/?ad=qwe&dw http://4aew.werc.ewr http://5aew.werc.ewr:8100/?  ad=qwe&dw 6aew.werc.ewr:8100/?ad=qwe&dw 7aew.werc.ewr:8100/?ad=qwe&dw=%20%32 +4.0e-10 qwe qwe qwqwe 234.435 455 5.005 teodor@stack.net qwe-wer asdf <fr>qwer jf sdjk<we hjwer <werrwe> ewr1> ewri2 <a href="qwe<qwe>">
+SELECT txt2txtidx('345 qwe@efd.r \' http://www.com/ http://aew.werc.ewr/?ad=qwe&dw 1aew.werc.ewr/?ad=qwe&dw 2aew.werc.ewr http://3aew.werc.ewr/?ad=qwe&dw http://4aew.werc.ewr http://5aew.werc.ewr:8100/?  ad=qwe&dw 6aew.werc.ewr:8100/?ad=qwe&dw 7aew.werc.ewr:8100/?ad=qwe&dw=%20%32 +4.0e-10 qwe qwe qwqwe 234.435 455 5.005 teodor@stack.net qwe-wer asdf <fr>qwer jf sdjk<we hjwer <werrwe> ewr1> ewri2 <a href="qwe<qwe>">
 /usr/local/fff /awdf/dwqe/4325 rewt/ewr wefjn /wqe-324/ewr gist.h gist.h.c gist.c. readline 4.2 4.2. 4.2, readline-4.2 readline-4.2. 234 
 <i <b> wow  < jqw <> qwerty');
                                                                                                                                                                                                                                                                                                                                                    txt2txtidx                                                                                                                                                                                                                                                                                                                                                   
@@ -702,13 +702,13 @@ select txt2txtidx('345 qwe@efd.r \' http://www.com/ http://aew.werc.ewr/?ad=qwe&
  'ad' 'dw' 'jf' '234' '345' '4.2' '455' 'jqw' 'qwe' 'wer' 'wow' 'asdf' 'ewr1' 'qwer' 'sdjk' '5.005' 'ewri2' 'qwqwe' 'wefjn' 'gist.c' 'gist.h' 'qwerti' '234.435' ':8100/?' 'qwe-wer' 'readlin' 'www.com' '+4.0e-10' 'gist.h.c' 'rewt/ewr' 'qwe@efd.r' 'readline-4' '/?ad=qwe&dw' '/wqe-324/ewr' 'aew.werc.ewr' '1aew.werc.ewr' '2aew.werc.ewr' '3aew.werc.ewr' '4aew.werc.ewr' '5aew.werc.ewr' '6aew.werc.ewr' '7aew.werc.ewr' '/usr/local/fff' '/awdf/dwqe/4325' ':8100/?ad=qwe&dw' 'teodor@stack.net' '5aew.werc.ewr:8100/?' ':8100/?ad=qwe&dw=%20%32' 'aew.werc.ewr/?ad=qwe&dw' '1aew.werc.ewr/?ad=qwe&dw' '3aew.werc.ewr/?ad=qwe&dw' '6aew.werc.ewr:8100/?ad=qwe&dw' '7aew.werc.ewr:8100/?ad=qwe&dw=%20%32'
 (1 row)
 
-select txtidxsize(txt2txtidx('345 qw'));
+SELECT txtidxsize(txt2txtidx('345 qw'));
  txtidxsize 
 ------------
           2
 (1 row)
 
-select txtidxsize(txt2txtidx('345 qwe@efd.r \' http://www.com/ http://aew.werc.ewr/?ad=qwe&dw 1aew.werc.ewr/?ad=qwe&dw 2aew.werc.ewr http://3aew.werc.ewr/?ad=qwe&dw http://4aew.werc.ewr http://5aew.werc.ewr:8100/?  ad=qwe&dw 6aew.werc.ewr:8100/?ad=qwe&dw 7aew.werc.ewr:8100/?ad=qwe&dw=%20%32 +4.0e-10 qwe qwe qwqwe 234.435 455 5.005 teodor@stack.net qwe-wer asdf <fr>qwer jf sdjk<we hjwer <werrwe> ewr1> ewri2 <a href="qwe<qwe>">
+SELECT txtidxsize(txt2txtidx('345 qwe@efd.r \' http://www.com/ http://aew.werc.ewr/?ad=qwe&dw 1aew.werc.ewr/?ad=qwe&dw 2aew.werc.ewr http://3aew.werc.ewr/?ad=qwe&dw http://4aew.werc.ewr http://5aew.werc.ewr:8100/?  ad=qwe&dw 6aew.werc.ewr:8100/?ad=qwe&dw 7aew.werc.ewr:8100/?ad=qwe&dw=%20%32 +4.0e-10 qwe qwe qwqwe 234.435 455 5.005 teodor@stack.net qwe-wer asdf <fr>qwer jf sdjk<we hjwer <werrwe> ewr1> ewri2 <a href="qwe<qwe>">
 /usr/local/fff /awdf/dwqe/4325 rewt/ewr wefjn /wqe-324/ewr gist.h gist.h.c gist.c. readline 4.2 4.2. 4.2, readline-4.2 readline-4.2. 234 
 <i <b> wow  < jqw <> qwerty'));
  txtidxsize 
@@ -716,30 +716,31 @@ select txtidxsize(txt2txtidx('345 qwe@efd.r \' http://www.com/ http://aew.werc.e
          53
 (1 row)
 
-insert into test_txtidx (a) values ('345 qwerty');
-create trigger txtidxupdate before update or insert on test_txtidx
-for each row execute procedure tsearch(a, t);
-insert into test_txtidx (t) values ('345 qwerty');
-select count(*) FROM test_txtidx WHERE a @@ '345&qwerty';
+INSERT INTO test_txtidx (a) VALUES ('345 qwerty');
+CREATE TRIGGER txtidxupdate
+BEFORE UPDATE OR INSERT ON test_txtidx
+FOR EACH ROW EXECUTE PROCEDURE tsearch(a, t);
+INSERT INTO test_txtidx (t) VALUES ('345 qwerty');
+SELECT count(*) FROM test_txtidx WHERE a @@ '345&qwerty';
  count 
 -------
      1
 (1 row)
 
-select count(*) FROM test_txtidx WHERE a ## '345&qwerty';
+SELECT count(*) FROM test_txtidx WHERE a ## '345&qwerty';
  count 
 -------
      1
 (1 row)
 
-update test_txtidx set t = null where t = '345 qwerty';
-select count(*) FROM test_txtidx WHERE a ## '345&qwerty';
+UPDATE test_txtidx SET t = null WHERE t = '345 qwerty';
+SELECT count(*) FROM test_txtidx WHERE a ## '345&qwerty';
  count 
 -------
      0
 (1 row)
 
-select count(*) FROM test_txtidx WHERE a @@ '345&qwerty';
+SELECT count(*) FROM test_txtidx WHERE a @@ '345&qwerty';
  count 
 -------
      1
index d863fa743c165b404f62f86011aac0712e213a7e..5b0b50afcabf9a5143024b5b93b2a80c6c45fd32 100644 (file)
 -- does not depend on contents of seg.sql.
 --
 \set ECHO none
+SET autocommit TO 'on';
 \i tsearch.sql
 \set ECHO all
 
 --txtidx
-select '1'::txtidx;
-select '1 '::txtidx;
-select ' 1'::txtidx;
-select ' 1 '::txtidx;
-select '1 2'::txtidx;
-select '\'1 2\''::txtidx;
-select '\'1 \\\'2\''::txtidx;
-select '\'1 \\\'2\'3'::txtidx;
-select '\'1 \\\'2\' 3'::txtidx;
-select '\'1 \\\'2\' \' 3\' 4 '::txtidx;
+SELECT '1'::txtidx;
+SELECT '1 '::txtidx;
+SELECT ' 1'::txtidx;
+SELECT ' 1 '::txtidx;
+SELECT '1 2'::txtidx;
+SELECT '\'1 2\''::txtidx;
+SELECT '\'1 \\\'2\''::txtidx;
+SELECT '\'1 \\\'2\'3'::txtidx;
+SELECT '\'1 \\\'2\' 3'::txtidx;
+SELECT '\'1 \\\'2\' \' 3\' 4 '::txtidx;
 
 --query_txt
-select '1'::query_txt;
-select '1 '::query_txt;
-select ' 1'::query_txt;
-select ' 1 '::query_txt;
-select '\'1 2\''::query_txt;
-select '\'1 \\\'2\''::query_txt;
-select '!1'::query_txt;
-select '1|2'::query_txt;
-select '1|!2'::query_txt;
-select '!1|2'::query_txt;
-select '!1|!2'::query_txt;
-select '!(!1|!2)'::query_txt;
-select '!(!1|2)'::query_txt;
-select '!(1|!2)'::query_txt;
-select '!(1|2)'::query_txt;
-select '1&2'::query_txt;
-select '!1&2'::query_txt;
-select '1&!2'::query_txt;
-select '!1&!2'::query_txt;
-select '(1&2)'::query_txt;
-select '1&(2)'::query_txt;
-select '!(1)&2'::query_txt;
-select '!(1&2)'::query_txt;
-select '1|2&3'::query_txt;
-select '1|(2&3)'::query_txt;
-select '(1|2)&3'::query_txt;
-select '1|2&!3'::query_txt;
-select '1|!2&3'::query_txt;
-select '!1|2&3'::query_txt;
-select '!1|(2&3)'::query_txt;
-select '!(1|2)&3'::query_txt;
-select '(!1|2)&3'::query_txt;
-select '1|(2|(4|(5|6)))'::query_txt;
-select '1|2|4|5|6'::query_txt;
-select '1&(2&(4&(5&6)))'::query_txt;
-select '1&2&4&5&6'::query_txt;
-select '1&(2&(4&(5|6)))'::query_txt;
-select '1&(2&(4&(5|!6)))'::query_txt;
-select '1&(\'2\'&(\' 4\'&(\\|5 | \'6 \\\' !|&\')))'::query_txt;
-select '1'::mquery_txt;
-select '1 '::mquery_txt;
-select ' 1'::mquery_txt;
-select ' 1 '::mquery_txt;
-select '\'1 2\''::mquery_txt;
-select '\'1 \\\'2\''::mquery_txt;
-select '!1'::mquery_txt;
-select '1|2'::mquery_txt;
-select '1|!2'::mquery_txt;
-select '!1|2'::mquery_txt;
-select '!1|!2'::mquery_txt;
-select '!(!1|!2)'::mquery_txt;
-select '!(!1|2)'::mquery_txt;
-select '!(1|!2)'::mquery_txt;
-select '!(1|2)'::mquery_txt;
-select '1&2'::mquery_txt;
-select '!1&2'::mquery_txt;
-select '1&!2'::mquery_txt;
-select '!1&!2'::mquery_txt;
-select '(1&2)'::mquery_txt;
-select '1&(2)'::mquery_txt;
-select '!(1)&2'::mquery_txt;
-select '!(1&2)'::mquery_txt;
-select '1|2&3'::mquery_txt;
-select '1|(2&3)'::mquery_txt;
-select '(1|2)&3'::mquery_txt;
-select '1|2&!3'::mquery_txt;
-select '1|!2&3'::mquery_txt;
-select '!1|2&3'::mquery_txt;
-select '!1|(2&3)'::mquery_txt;
-select '!(1|2)&3'::mquery_txt;
-select '(!1|2)&3'::mquery_txt;
-select '1|(2|(4|(5|6)))'::mquery_txt;
-select '1|2|4|5|6'::mquery_txt;
-select '1&(2&(4&(5&6)))'::mquery_txt;
-select '1&2&4&5&6'::mquery_txt;
-select '1&(2&(4&(5|6)))'::mquery_txt;
-select '1&(2&(4&(5|!6)))'::mquery_txt;
-select '1&(\'2\'&(\' 4\'&(\\|5 | \'6 \\\' !|&\')))'::mquery_txt;
-select 'querty-fgries | http://www.google.com/index.html | www.rambler.ru/index.shtml'::mquery_txt;
+SELECT '1'::query_txt;
+SELECT '1 '::query_txt;
+SELECT ' 1'::query_txt;
+SELECT ' 1 '::query_txt;
+SELECT '\'1 2\''::query_txt;
+SELECT '\'1 \\\'2\''::query_txt;
+SELECT '!1'::query_txt;
+SELECT '1|2'::query_txt;
+SELECT '1|!2'::query_txt;
+SELECT '!1|2'::query_txt;
+SELECT '!1|!2'::query_txt;
+SELECT '!(!1|!2)'::query_txt;
+SELECT '!(!1|2)'::query_txt;
+SELECT '!(1|!2)'::query_txt;
+SELECT '!(1|2)'::query_txt;
+SELECT '1&2'::query_txt;
+SELECT '!1&2'::query_txt;
+SELECT '1&!2'::query_txt;
+SELECT '!1&!2'::query_txt;
+SELECT '(1&2)'::query_txt;
+SELECT '1&(2)'::query_txt;
+SELECT '!(1)&2'::query_txt;
+SELECT '!(1&2)'::query_txt;
+SELECT '1|2&3'::query_txt;
+SELECT '1|(2&3)'::query_txt;
+SELECT '(1|2)&3'::query_txt;
+SELECT '1|2&!3'::query_txt;
+SELECT '1|!2&3'::query_txt;
+SELECT '!1|2&3'::query_txt;
+SELECT '!1|(2&3)'::query_txt;
+SELECT '!(1|2)&3'::query_txt;
+SELECT '(!1|2)&3'::query_txt;
+SELECT '1|(2|(4|(5|6)))'::query_txt;
+SELECT '1|2|4|5|6'::query_txt;
+SELECT '1&(2&(4&(5&6)))'::query_txt;
+SELECT '1&2&4&5&6'::query_txt;
+SELECT '1&(2&(4&(5|6)))'::query_txt;
+SELECT '1&(2&(4&(5|!6)))'::query_txt;
+SELECT '1&(\'2\'&(\' 4\'&(\\|5 | \'6 \\\' !|&\')))'::query_txt;
+SELECT '1'::mquery_txt;
+SELECT '1 '::mquery_txt;
+SELECT ' 1'::mquery_txt;
+SELECT ' 1 '::mquery_txt;
+SELECT '\'1 2\''::mquery_txt;
+SELECT '\'1 \\\'2\''::mquery_txt;
+SELECT '!1'::mquery_txt;
+SELECT '1|2'::mquery_txt;
+SELECT '1|!2'::mquery_txt;
+SELECT '!1|2'::mquery_txt;
+SELECT '!1|!2'::mquery_txt;
+SELECT '!(!1|!2)'::mquery_txt;
+SELECT '!(!1|2)'::mquery_txt;
+SELECT '!(1|!2)'::mquery_txt;
+SELECT '!(1|2)'::mquery_txt;
+SELECT '1&2'::mquery_txt;
+SELECT '!1&2'::mquery_txt;
+SELECT '1&!2'::mquery_txt;
+SELECT '!1&!2'::mquery_txt;
+SELECT '(1&2)'::mquery_txt;
+SELECT '1&(2)'::mquery_txt;
+SELECT '!(1)&2'::mquery_txt;
+SELECT '!(1&2)'::mquery_txt;
+SELECT '1|2&3'::mquery_txt;
+SELECT '1|(2&3)'::mquery_txt;
+SELECT '(1|2)&3'::mquery_txt;
+SELECT '1|2&!3'::mquery_txt;
+SELECT '1|!2&3'::mquery_txt;
+SELECT '!1|2&3'::mquery_txt;
+SELECT '!1|(2&3)'::mquery_txt;
+SELECT '!(1|2)&3'::mquery_txt;
+SELECT '(!1|2)&3'::mquery_txt;
+SELECT '1|(2|(4|(5|6)))'::mquery_txt;
+SELECT '1|2|4|5|6'::mquery_txt;
+SELECT '1&(2&(4&(5&6)))'::mquery_txt;
+SELECT '1&2&4&5&6'::mquery_txt;
+SELECT '1&(2&(4&(5|6)))'::mquery_txt;
+SELECT '1&(2&(4&(5|!6)))'::mquery_txt;
+SELECT '1&(\'2\'&(\' 4\'&(\\|5 | \'6 \\\' !|&\')))'::mquery_txt;
+SELECT 'querty-fgries | http://www.google.com/index.html | www.rambler.ru/index.shtml'::mquery_txt;
 
 CREATE TABLE test_txtidx( t text, a txtidx );
 
@@ -133,30 +134,31 @@ SELECT count(*) FROM test_txtidx WHERE a ## 'eq|yt';
 SELECT count(*) FROM test_txtidx WHERE a ## '(eq&yt)|(wR&qh)';
 SELECT count(*) FROM test_txtidx WHERE a ## '(eq|yt)&(wR|qh)';
 
-select txt2txtidx('345 qwe@efd.r \' http://www.com/ http://aew.werc.ewr/?ad=qwe&dw 1aew.werc.ewr/?ad=qwe&dw 2aew.werc.ewr http://3aew.werc.ewr/?ad=qwe&dw http://4aew.werc.ewr http://5aew.werc.ewr:8100/?  ad=qwe&dw 6aew.werc.ewr:8100/?ad=qwe&dw 7aew.werc.ewr:8100/?ad=qwe&dw=%20%32 +4.0e-10 qwe qwe qwqwe 234.435 455 5.005 teodor@stack.net qwe-wer asdf <fr>qwer jf sdjk<we hjwer <werrwe> ewr1> ewri2 <a href="qwe<qwe>">
+SELECT txt2txtidx('345 qwe@efd.r \' http://www.com/ http://aew.werc.ewr/?ad=qwe&dw 1aew.werc.ewr/?ad=qwe&dw 2aew.werc.ewr http://3aew.werc.ewr/?ad=qwe&dw http://4aew.werc.ewr http://5aew.werc.ewr:8100/?  ad=qwe&dw 6aew.werc.ewr:8100/?ad=qwe&dw 7aew.werc.ewr:8100/?ad=qwe&dw=%20%32 +4.0e-10 qwe qwe qwqwe 234.435 455 5.005 teodor@stack.net qwe-wer asdf <fr>qwer jf sdjk<we hjwer <werrwe> ewr1> ewri2 <a href="qwe<qwe>">
 /usr/local/fff /awdf/dwqe/4325 rewt/ewr wefjn /wqe-324/ewr gist.h gist.h.c gist.c. readline 4.2 4.2. 4.2, readline-4.2 readline-4.2. 234 
 <i <b> wow  < jqw <> qwerty');
 
-select txtidxsize(txt2txtidx('345 qw'));
+SELECT txtidxsize(txt2txtidx('345 qw'));
 
-select txtidxsize(txt2txtidx('345 qwe@efd.r \' http://www.com/ http://aew.werc.ewr/?ad=qwe&dw 1aew.werc.ewr/?ad=qwe&dw 2aew.werc.ewr http://3aew.werc.ewr/?ad=qwe&dw http://4aew.werc.ewr http://5aew.werc.ewr:8100/?  ad=qwe&dw 6aew.werc.ewr:8100/?ad=qwe&dw 7aew.werc.ewr:8100/?ad=qwe&dw=%20%32 +4.0e-10 qwe qwe qwqwe 234.435 455 5.005 teodor@stack.net qwe-wer asdf <fr>qwer jf sdjk<we hjwer <werrwe> ewr1> ewri2 <a href="qwe<qwe>">
+SELECT txtidxsize(txt2txtidx('345 qwe@efd.r \' http://www.com/ http://aew.werc.ewr/?ad=qwe&dw 1aew.werc.ewr/?ad=qwe&dw 2aew.werc.ewr http://3aew.werc.ewr/?ad=qwe&dw http://4aew.werc.ewr http://5aew.werc.ewr:8100/?  ad=qwe&dw 6aew.werc.ewr:8100/?ad=qwe&dw 7aew.werc.ewr:8100/?ad=qwe&dw=%20%32 +4.0e-10 qwe qwe qwqwe 234.435 455 5.005 teodor@stack.net qwe-wer asdf <fr>qwer jf sdjk<we hjwer <werrwe> ewr1> ewri2 <a href="qwe<qwe>">
 /usr/local/fff /awdf/dwqe/4325 rewt/ewr wefjn /wqe-324/ewr gist.h gist.h.c gist.c. readline 4.2 4.2. 4.2, readline-4.2 readline-4.2. 234 
 <i <b> wow  < jqw <> qwerty'));
 
-insert into test_txtidx (a) values ('345 qwerty');
+INSERT INTO test_txtidx (a) VALUES ('345 qwerty');
 
-create trigger txtidxupdate before update or insert on test_txtidx
-for each row execute procedure tsearch(a, t);
+CREATE TRIGGER txtidxupdate
+BEFORE UPDATE OR INSERT ON test_txtidx
+FOR EACH ROW EXECUTE PROCEDURE tsearch(a, t);
 
-insert into test_txtidx (t) values ('345 qwerty');
+INSERT INTO test_txtidx (t) VALUES ('345 qwerty');
 
-select count(*) FROM test_txtidx WHERE a @@ '345&qwerty';
+SELECT count(*) FROM test_txtidx WHERE a @@ '345&qwerty';
 
-select count(*) FROM test_txtidx WHERE a ## '345&qwerty';
+SELECT count(*) FROM test_txtidx WHERE a ## '345&qwerty';
 
-update test_txtidx set t = null where t = '345 qwerty';
+UPDATE test_txtidx SET t = null WHERE t = '345 qwerty';
 
-select count(*) FROM test_txtidx WHERE a ## '345&qwerty';
+SELECT count(*) FROM test_txtidx WHERE a ## '345&qwerty';
 
-select count(*) FROM test_txtidx WHERE a @@ '345&qwerty';
+SELECT count(*) FROM test_txtidx WHERE a @@ '345&qwerty';
 
index a709a14758e70d53a053efdc93da68b28f6e9652..4577fa02e8e457486fe65a5e28d75b3a4f59ebd5 100644 (file)
-BEGIN TRANSACTION;
-
 -- Adjust this setting to control where the objects get created.
 SET search_path = public;
 
+SET autocommit TO 'on';
+
 -- TXTIDX type
 
 CREATE FUNCTION txtidx_in(cstring)
 RETURNS txtidx
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
+LANGUAGE 'C' with (isstrict);
 
 CREATE FUNCTION txtidx_out(txtidx)
 RETURNS cstring
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
+LANGUAGE 'C' with (isstrict);
 
 CREATE TYPE txtidx (
-internallength = -1,
-input = txtidx_in,
-output = txtidx_out,
-storage = extended
+       INTERNALLENGTH = -1,
+       INPUT = txtidx_in,
+       OUTPUT = txtidx_out,
+       STORAGE = extended
 );
 
 CREATE FUNCTION txt2txtidx(text)
 RETURNS txtidx
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
+LANGUAGE 'C' with (isstrict);
 
 CREATE FUNCTION txtidxsize(txtidx)
 RETURNS int4
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
+LANGUAGE 'C' with (isstrict);
 
 --QUERYTYPES
 --without morphology
 CREATE FUNCTION qtxt_in(cstring)
 RETURNS query_txt
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
+LANGUAGE 'C' with (isstrict);
 
 CREATE FUNCTION qtxt_out(query_txt)
 RETURNS cstring
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
+LANGUAGE 'C' with (isstrict);
 
 CREATE TYPE query_txt (
-internallength = -1,
-input = qtxt_in,
-output = qtxt_out
+       INTERNALLENGTH = -1,
+       INPUT = qtxt_in,
+       OUTPUT = qtxt_out
 );
 
 --with morphology
 CREATE FUNCTION mqtxt_in(cstring)
 RETURNS mquery_txt
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
+LANGUAGE 'C' with (isstrict);
 
 --same C output function as for query_txt
 CREATE FUNCTION mqtxt_out(mquery_txt)
 RETURNS cstring
 AS 'MODULE_PATHNAME', 'qtxt_out'
-LANGUAGE 'c' with (isstrict);
+LANGUAGE 'C' with (isstrict);
 
 CREATE TYPE mquery_txt (
-internallength = -1,
-input = mqtxt_in,
-output = mqtxt_out
+       INTERNALLENGTH = -1,
+       INPUT = mqtxt_in,
+       OUTPUT = mqtxt_out
 );
 
 --only for debug
 CREATE FUNCTION querytree(query_txt)
 RETURNS text
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
+LANGUAGE 'C' with (isstrict);
 
 CREATE FUNCTION querytree(mquery_txt)
 RETURNS text
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
+LANGUAGE 'C' with (isstrict);
 
 --operations
-CREATE FUNCTION execqtxt(txtidx, query_txt) RETURNS bool
-        AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION execqtxt(txtidx, query_txt)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' with (isstrict);
 
 COMMENT ON FUNCTION execqtxt(txtidx, query_txt) IS 'boolean operation with text index';
 
-CREATE FUNCTION execqtxt(txtidx, mquery_txt) RETURNS bool
-        AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION execqtxt(txtidx, mquery_txt)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' with (isstrict);
 
 COMMENT ON FUNCTION execqtxt(txtidx, mquery_txt) IS 'boolean operation with text index';
 
-CREATE FUNCTION rexecqtxt(query_txt, txtidx) RETURNS bool
-        AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION rexecqtxt(query_txt, txtidx)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' with (isstrict);
 
 COMMENT ON FUNCTION rexecqtxt(query_txt, txtidx) IS 'boolean operation with text index';
 
-CREATE FUNCTION rexecqtxt(mquery_txt, txtidx) RETURNS bool
-        AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION rexecqtxt(mquery_txt, txtidx)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' with (isstrict);
 
 COMMENT ON FUNCTION rexecqtxt(mquery_txt, txtidx) IS 'boolean operation with text index';
 
 CREATE OPERATOR @@ (
-   LEFTARG = txtidx, RIGHTARG = query_txt, PROCEDURE = execqtxt,
-   COMMUTATOR = '~@', RESTRICT = contsel, JOIN = contjoinsel
+       LEFTARG = txtidx,
+       RIGHTARG = query_txt,
+       PROCEDURE = execqtxt,
+       COMMUTATOR = '~@',
+       RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR ~@ (
-   LEFTARG = query_txt, RIGHTARG = txtidx, PROCEDURE = rexecqtxt,
-   COMMUTATOR = '@@', RESTRICT = contsel, JOIN = contjoinsel
+       LEFTARG = query_txt,
+       RIGHTARG = txtidx,
+       PROCEDURE = rexecqtxt,
+       COMMUTATOR = '@@',
+       RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR ## (
-   LEFTARG = txtidx, RIGHTARG = mquery_txt, PROCEDURE = execqtxt,
-   COMMUTATOR = '~#', RESTRICT = contsel, JOIN = contjoinsel
+       LEFTARG = txtidx,
+       RIGHTARG = mquery_txt,
+       PROCEDURE = execqtxt,
+       COMMUTATOR = '~#',
+       RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 CREATE OPERATOR ~# (
-   LEFTARG = mquery_txt, RIGHTARG = txtidx, PROCEDURE = rexecqtxt,
-   COMMUTATOR = '##', RESTRICT = contsel, JOIN = contjoinsel
+       LEFTARG = mquery_txt,
+       RIGHTARG = txtidx,
+       PROCEDURE = rexecqtxt,
+       COMMUTATOR = '##',
+       RESTRICT = contsel,
+       JOIN = contjoinsel
 );
 
 --Trigger
-create function tsearch() returns trigger as
-        'MODULE_PATHNAME'
-        language 'C';
+CREATE FUNCTION tsearch()
+RETURNS trigger
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
 --GiST
 --GiST key type
 CREATE FUNCTION gtxtidx_in(cstring)
 RETURNS gtxtidx
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
+LANGUAGE 'C' with (isstrict);
 
 CREATE FUNCTION gtxtidx_out(gtxtidx)
 RETURNS cstring
 AS 'MODULE_PATHNAME'
-LANGUAGE 'c' with (isstrict);
+LANGUAGE 'C' with (isstrict);
 
 CREATE TYPE gtxtidx (
-internallength = -1,
-input = gtxtidx_in,
-output = gtxtidx_out
+       INTERNALLENGTH = -1,
+       INPUT = gtxtidx_in,
+       OUTPUT = gtxtidx_out
 );
 
 -- support functions
-CREATE FUNCTION gtxtidx_consistent(gtxtidx,internal,int4) RETURNS bool
-        AS 'MODULE_PATHNAME' LANGUAGE 'c';
+CREATE FUNCTION gtxtidx_consistent(gtxtidx,internal,int4)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-CREATE FUNCTION gtxtidx_compress(internal) RETURNS internal
-        AS 'MODULE_PATHNAME' LANGUAGE 'c';
+CREATE FUNCTION gtxtidx_compress(internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-CREATE FUNCTION gtxtidx_decompress(internal) RETURNS internal
-        AS 'MODULE_PATHNAME' LANGUAGE 'c';
+CREATE FUNCTION gtxtidx_decompress(internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-CREATE FUNCTION gtxtidx_penalty(internal,internal,internal) RETURNS internal
-        AS 'MODULE_PATHNAME' LANGUAGE 'c' with (isstrict);
+CREATE FUNCTION gtxtidx_penalty(internal,internal,internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C' with (isstrict);
 
-CREATE FUNCTION gtxtidx_picksplit(internal, internal) RETURNS internal
-        AS 'MODULE_PATHNAME' LANGUAGE 'c';
+CREATE FUNCTION gtxtidx_picksplit(internal, internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-CREATE FUNCTION gtxtidx_union(bytea, internal) RETURNS _int4
-        AS 'MODULE_PATHNAME' LANGUAGE 'c';
+CREATE FUNCTION gtxtidx_union(bytea, internal)
+RETURNS _int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
-CREATE FUNCTION gtxtidx_same(gtxtidx, gtxtidx, internal) RETURNS internal
-        AS 'MODULE_PATHNAME' LANGUAGE 'c';
+CREATE FUNCTION gtxtidx_same(gtxtidx, gtxtidx, internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
 -- create the operator class
 CREATE OPERATOR CLASS gist_txtidx_ops
-    DEFAULT FOR TYPE txtidx USING gist AS
+DEFAULT FOR TYPE txtidx USING gist
+AS
        OPERATOR        1       @@ (txtidx, query_txt)  RECHECK ,
        OPERATOR        2       ## (txtidx, mquery_txt) RECHECK ,
        FUNCTION        1       gtxtidx_consistent (gtxtidx, internal, int4),
@@ -178,6 +218,3 @@ CREATE OPERATOR CLASS gist_txtidx_ops
        FUNCTION        6       gtxtidx_picksplit (internal, internal),
        FUNCTION        7       gtxtidx_same (gtxtidx, gtxtidx, internal),
        STORAGE         gtxtidx;
-
-
-END TRANSACTION;
index f5ae6a6e95faaf2ca247037ce67bf4b440fea008..1826fcf2491a1676ca286314598c4d0cefb65a59 100644 (file)
@@ -9,68 +9,82 @@
 
 -- select user_lock(group,id,mode);
 --
-create function user_lock(int4,int4,int4) returns int4
-  as 'MODULE_PATHNAME'
-  language 'c';
+-- Adjust this setting to control where the objects get created.
+SET search_path = public;
 
--- select user_unlock(group,id,mode);
---
-create function user_unlock(int4,int4,int4) returns int4
-  as 'MODULE_PATHNAME'
-  language 'c';
+SET autocommit TO 'on';
+
+CREATE OR REPLACE FUNCTION user_lock(int4,int4,int4)
+RETURNS int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
--- select user_write_lock(group,id);
+-- SELECT user_unlock(group,id,mode);
 --
-create function user_write_lock(int4,int4) returns int4
-  as 'MODULE_PATHNAME'
-  language 'c';
+CREATE OR REPLACE FUNCTION user_unlock(int4,int4,int4)
+RETURNS int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
--- select user_write_unlock(group,id);
+-- SELECT user_write_lock(group,id);
 --
-create function user_write_unlock(int4,int4) returns int4
-  as 'MODULE_PATHNAME'
-  language 'c';
+CREATE OR REPLACE FUNCTION user_write_lock(int4,int4)
+RETURNS int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
--- select user_write_lock(group,oid);
+-- SELECT user_write_unlock(group,id);
 --
-create function user_write_lock(int4,oid) returns int4
-  as 'MODULE_PATHNAME'
-  language 'c';
+CREATE OR REPLACE FUNCTION user_write_unlock(int4,int4)
+RETURNS int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
--- select user_write_unlock(group,oid);
+-- SELECT user_write_lock(group,oid);
 --
-create function user_write_unlock(int4,oid) returns int4
-  as 'MODULE_PATHNAME'
-  language 'c';
+CREATE OR REPLACE FUNCTION user_write_lock(int4,oid)
+RETURNS int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
--- select user_write_lock_oid(oid);
+-- SELECT user_write_unlock(group,oid);
 --
-create function user_write_lock_oid(oid) returns int4
-  as 'MODULE_PATHNAME'
-  language 'c';
+CREATE OR REPLACE FUNCTION user_write_unlock(int4,oid)
+RETURNS int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
--- select user_write_unlock_oid(oid);
+-- SELECT user_write_lock_oid(oid);
 --
-create function user_write_unlock_oid(oid) returns int4
-  as 'MODULE_PATHNAME'
-  language 'c';
+CREATE OR REPLACE FUNCTION user_write_lock_oid(oid)
+RETURNS int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
--- select user_write_lock_oid(int4);
+-- SELECT user_write_unlock_oid(oid);
 --
-create function user_write_lock_oid(int4) returns int4
-  as 'MODULE_PATHNAME'
-  language 'c';
+CREATE OR REPLACE FUNCTION user_write_unlock_oid(oid)
+RETURNS int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
--- select user_write_unlock_oid(int4);
+-- SELECT user_write_lock_oid(int4);
 --
-create function user_write_unlock_oid(int4) returns int4
-  as 'MODULE_PATHNAME'
-  language 'c';
+CREATE OR REPLACE FUNCTION user_write_lock_oid(int4)
+RETURNS int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
--- select user_unlock_all();
+-- SELECT user_write_unlock_oid(int4);
 --
-create function user_unlock_all() returns int4
-  as 'MODULE_PATHNAME'
-  language 'c';
+CREATE OR REPLACE FUNCTION user_write_unlock_oid(int4)
+RETURNS int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
 
--- end of file
+-- SELECT user_unlock_all();
+--
+CREATE OR REPLACE FUNCTION user_unlock_all()
+RETURNS int4
+AS 'MODULE_PATHNAME'
+LANGUAGE 'C';
index fa2b647f9828fb22ff96e379a9800afa8a02ac32..b49873c3257b4a5b328956da82f3c6b7267b7180 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/contrib/vacuumlo/vacuumlo.c,v 1.16 2002/10/03 17:20:39 momjian Exp $
+ *       $Header: /cvsroot/pgsql/contrib/vacuumlo/vacuumlo.c,v 1.17 2002/10/18 18:41:21 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -207,6 +207,28 @@ vacuumlo(char *database, struct _param * param)
                        fprintf(stdout, "Test run: no large objects will be removed!\n");
        }
 
+       res = PQexec(conn, "SET search_path = public");
+       if (PQresultStatus(res) != PGRES_COMMAND_OK)
+       {
+               fprintf(stderr, "Failed to set search_path on:\n");
+               fprintf(stderr, "%s", PQerrorMessage(conn));
+               PQclear(res);
+               PQfinish(conn);
+               return -1;
+       }
+       PQclear(res);
+
+       res = PQexec(conn, "SET autocommit TO 'on'");
+       if (PQresultStatus(res) != PGRES_COMMAND_OK)
+       {
+               fprintf(stderr, "Failed to set autocommit on:\n");
+               fprintf(stderr, "%s", PQerrorMessage(conn));
+               PQclear(res);
+               PQfinish(conn);
+               return -1;
+       }
+       PQclear(res);
+
        /*
         * First we create and populate the LO temp table
         */
index a8582398b1e975a76edee31c6c44b54bcffab004..d5272d742e0764bc97846d1e33cb9b64614c0fe1 100644 (file)
@@ -1,7 +1,16 @@
 --SQL for XML parser
 
-CREATE FUNCTION pgxml_parse(text) RETURNS bool
-       AS '_OBJWD_/pgxml_dom_DLSUFFIX_' LANGUAGE 'c' WITH (isStrict);
+-- Adjust this setting to control where the objects get created.
+SET search_path = public;
 
-CREATE FUNCTION pgxml_xpath(text,text,text,text) RETURNS text
-       AS '_OBJWD_/pgxml_dom_DLSUFFIX_' LANGUAGE 'c' WITH (isStrict);
\ No newline at end of file
+SET autocommit TO 'on';
+
+CREATE OR REPLACE FUNCTION pgxml_parse(text)
+RETURNS bool
+AS '_OBJWD_/pgxml_dom_DLSUFFIX_'
+LANGUAGE 'c' WITH (isStrict);
+
+CREATE OR REPLACE FUNCTION pgxml_xpath(text,text,text,text)
+RETURNS text
+AS '_OBJWD_/pgxml_dom_DLSUFFIX_'
+LANGUAGE 'c' WITH (isStrict);
index db87a9efc016d7cc13a0776211a79167a88c4d2b..69bec44d4bff49c56e3737d85884ee2957cd7c3f 100644 (file)
@@ -5,7 +5,7 @@
 # Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
 # Portions Copyright (c) 1994, Regents of the University of California
 #
-# $Header: /cvsroot/pgsql/src/bin/scripts/Makefile,v 1.16 2002/08/27 03:38:27 momjian Exp $
+# $Header: /cvsroot/pgsql/src/bin/scripts/Makefile,v 1.17 2002/10/18 18:41:22 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -19,9 +19,9 @@ SCRIPTS := createdb dropdb createuser dropuser createlang droplang vacuumdb \
 all: $(SCRIPTS)
 
 # we don't need this now, but we may need it some day, bjm  2002-01-03
-createlang: createlang.sh
-       cp $< $@
-       chmod a+x $@
+#createlang: createlang.sh
+#      cp $< $@
+#      chmod a+x $@
 
 install: all installdirs
        for i in $(filter-out createlang, $(SCRIPTS)); do \