diff options
Diffstat (limited to 'contrib/rtree_gist')
-rwxr-xr-x | contrib/rtree_gist/bench/bench.pl | 14 | ||||
-rwxr-xr-x | contrib/rtree_gist/bench/create_test.pl | 16 | ||||
-rw-r--r-- | contrib/rtree_gist/expected/rtree_gist.out | 36 | ||||
-rw-r--r-- | contrib/rtree_gist/rtree_gist.sql.in | 74 | ||||
-rw-r--r-- | contrib/rtree_gist/sql/rtree_gist.sql | 38 |
5 files changed, 119 insertions, 59 deletions
diff --git a/contrib/rtree_gist/bench/bench.pl b/contrib/rtree_gist/bench/bench.pl index e6bc1332cf6..e42ec9c63a3 100755 --- a/contrib/rtree_gist/bench/bench.pl +++ b/contrib/rtree_gist/bench/bench.pl @@ -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)'; diff --git a/contrib/rtree_gist/bench/create_test.pl b/contrib/rtree_gist/bench/create_test.pl index 1c06b6863d3..cde92da6cd4 100755 --- a/contrib/rtree_gist/bench/create_test.pl +++ b/contrib/rtree_gist/bench/create_test.pl @@ -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 { diff --git a/contrib/rtree_gist/expected/rtree_gist.out b/contrib/rtree_gist/expected/rtree_gist.out index 74ac7e640d1..cf7e8b3efd1 100644 --- a/contrib/rtree_gist/expected/rtree_gist.out +++ b/contrib/rtree_gist/expected/rtree_gist.out @@ -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 diff --git a/contrib/rtree_gist/rtree_gist.sql.in b/contrib/rtree_gist/rtree_gist.sql.in index b32671227fa..f7ad2748bc2 100644 --- a/contrib/rtree_gist/rtree_gist.sql.in +++ b/contrib/rtree_gist/rtree_gist.sql.in @@ -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; diff --git a/contrib/rtree_gist/sql/rtree_gist.sql b/contrib/rtree_gist/sql/rtree_gist.sql index 7a2a7faf851..161abae1edd 100644 --- a/contrib/rtree_gist/sql/rtree_gist.sql +++ b/contrib/rtree_gist/sql/rtree_gist.sql @@ -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; |