summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorDavid E. Wheeler2012-02-25 21:03:49 +0000
committerDavid E. Wheeler2012-02-25 21:03:49 +0000
commitebbe8790e45ae819a59be95e03fd5291dc4ca314 (patch)
tree65bc017fa18073ca084bc4cb73feb8f270fa905e /sql
parenta577692e08076dd47c1dfbae4cb3fff92a4e291d (diff)
Move tests to test subdirectory.
Diffstat (limited to 'sql')
-rw-r--r--sql/plproxy_clustermap.sql56
-rw-r--r--sql/plproxy_dynamic_record.sql41
-rw-r--r--sql/plproxy_encoding.sql161
-rw-r--r--sql/plproxy_errors.sql63
-rw-r--r--sql/plproxy_init.sql82
-rw-r--r--sql/plproxy_many.sql63
-rw-r--r--sql/plproxy_select.sql121
-rw-r--r--sql/plproxy_split.sql103
-rw-r--r--sql/plproxy_sqlmed.sql80
-rw-r--r--sql/plproxy_target.sql45
-rw-r--r--sql/plproxy_test.sql291
11 files changed, 0 insertions, 1106 deletions
diff --git a/sql/plproxy_clustermap.sql b/sql/plproxy_clustermap.sql
deleted file mode 100644
index b4715bd..0000000
--- a/sql/plproxy_clustermap.sql
+++ /dev/null
@@ -1,56 +0,0 @@
-create or replace function plproxy.get_cluster_version(cluster_name text)
-returns integer as $$
-begin
- if cluster_name = 'testcluster' then
- return 6;
- elsif cluster_name = 'map0' then
- return 1;
- elsif cluster_name = 'map1' then
- return 1;
- elsif cluster_name = 'map2' then
- return 1;
- elsif cluster_name = 'map3' then
- return 1;
- end if;
- raise exception 'no such cluster: %', cluster_name;
-end; $$ language plpgsql;
-
-create or replace function plproxy.get_cluster_partitions(cluster_name text)
-returns setof text as $$
-begin
- if cluster_name = 'testcluster' then
- return next 'host=127.0.0.1 dbname=test_part0';
- return next 'host=127.0.0.1 dbname=test_part1';
- return next 'host=127.0.0.1 dbname=test_part2';
- return next 'host=127.0.0.1 dbname=test_part3';
- elsif cluster_name = 'map0' then
- return next 'host=127.0.0.1 dbname=test_part0';
- elsif cluster_name = 'map1' then
- return next 'host=127.0.0.1 dbname=test_part1';
- elsif cluster_name = 'map2' then
- return next 'host=127.0.0.1 dbname=test_part2';
- elsif cluster_name = 'map3' then
- return next 'host=127.0.0.1 dbname=test_part3';
- else
- raise exception 'no such cluster: %', cluster_name;
- end if;
- return;
-end; $$ language plpgsql;
-
-create function map_cluster(part integer) returns text as $$
-begin
- return 'map' || part;
-end;
-$$ language plpgsql;
-
-create function test_clustermap(part integer) returns setof text as $$
- cluster map_cluster(part);
- run on 0;
- select current_database();
-$$ language plproxy;
-
-select * from test_clustermap(0);
-select * from test_clustermap(1);
-select * from test_clustermap(2);
-select * from test_clustermap(3);
-
diff --git a/sql/plproxy_dynamic_record.sql b/sql/plproxy_dynamic_record.sql
deleted file mode 100644
index 5581d88..0000000
--- a/sql/plproxy_dynamic_record.sql
+++ /dev/null
@@ -1,41 +0,0 @@
--- dynamic query support testing
-create or replace function dynamic_query(q text)
-returns setof record as $x$
- cluster 'map0';
- run on all;
-$x$ language plproxy;
-
-\c test_part0
-create or replace function dynamic_query(q text)
-returns setof record as $x$
-declare
- ret record;
-begin
- for ret in execute q loop
- return next ret;
- end loop;
- return;
-end;
-$x$ language plpgsql;
-create table dynamic_query_test (
- id integer,
- username text,
- other text
-);
-insert into dynamic_query_test values ( 1, 'user1', 'blah');
-insert into dynamic_query_test values ( 2, 'user2', 'foo');
-
-\c regression
-select * from dynamic_query('select * from dynamic_query_test') as (id integer, username text, other text);
-select * from dynamic_query('select id, username from dynamic_query_test') as foo(id integer, username text);
-
-
--- test errors
-create or replace function dynamic_query_select()
-returns setof record as $x$
- cluster 'map0';
- run on all;
- select id, username from dynamic_query_test;
-$x$ language plproxy;
-select * from dynamic_query_select() as (id integer, username text);
-
diff --git a/sql/plproxy_encoding.sql b/sql/plproxy_encoding.sql
deleted file mode 100644
index 1da4d40..0000000
--- a/sql/plproxy_encoding.sql
+++ /dev/null
@@ -1,161 +0,0 @@
-
--------------------------------------------------
--- encoding tests
--------------------------------------------------
-
-set client_encoding = 'utf8';
-
--- google translate says:
--- column: コラム
--- table: テーブル
--- client data: クライアント側のデータ
--- proxy data: プロキシデータ
--- remote data: リモートデータ
--- argument: 引数
-
-
-set client_min_messages = 'warning';
-drop database if exists test_enc_proxy;
-drop database if exists test_enc_part;
-create database test_enc_proxy with encoding 'euc_jp' template template0;
-create database test_enc_part with encoding 'utf-8' template template0;
-
--- initialize proxy db
-\c test_enc_proxy
-set client_encoding = 'utf-8';
-set client_min_messages = 'fatal';
-create language plpgsql;
-set client_min_messages = 'warning';
-\set ECHO none
-\i plproxy.sql
-\set ECHO all
-create schema plproxy;
-create or replace function plproxy.get_cluster_version(cluster_name text)
-returns integer as $$ begin return 1; end; $$ language plpgsql;
-create or replace function plproxy.get_cluster_config(cluster_name text, out key text, out val text)
-returns setof record as $$ begin return; end; $$ language plpgsql;
-create or replace function plproxy.get_cluster_partitions(cluster_name text)
-returns setof text as $$ begin
- return next 'host=127.0.0.1 dbname=test_enc_part'; return;
-end; $$ language plpgsql;
-
-create table intl_data (id int4, "コラム" text);
-create function test_encoding() returns setof intl_data as $$
- cluster 'testcluster'; run on 0; select * from intl_data order by 1;
-$$ language plproxy;
-create function test_encoding2(text) returns setof intl_data as $$
- cluster 'testcluster'; run on 0;
- select 0 as id, $1 as "コラム";
-$$ language plproxy;
-create function test_encoding3(text) returns setof intl_data as $$
- cluster 'testcluster'; run on 0;
-$$ language plproxy;
--- initialize part db
-\c test_enc_part
-set client_min_messages = 'fatal';
-create language plpgsql;
-set client_min_messages = 'warning';
-set client_encoding = 'utf8';
-create table intl_data (id int4, "コラム" text);
-insert into intl_data values (1, 'リモートデータ');
-create function test_encoding3(text)
-returns setof intl_data as $$
-declare rec intl_data%rowtype;
-begin
- raise notice 'got: %', $1;
- rec := (3, $1);
- return next rec; return;
-end; $$ language plpgsql;
-
-set client_encoding = 'sjis';
-select * from intl_data order by 1;
-set client_encoding = 'euc_jp';
-select * from intl_data order by 1;
-set client_encoding = 'utf-8';
-select * from intl_data order by 1;
-
--- test
-\c test_enc_proxy
-set client_encoding = 'sjis';
-select * from test_encoding();
-set client_encoding = 'euc_jp';
-select * from test_encoding();
-set client_encoding = 'utf8';
-select * from test_encoding();
-select * from test_encoding2('クライアント側のデータ');
-select * from test_encoding3('クライアント側のデータ');
-
-\c template1
-set client_min_messages = 'warning';
-drop database if exists test_enc_proxy;
-drop database if exists test_enc_part;
-create database test_enc_proxy with encoding 'utf-8' template template0;
-create database test_enc_part with encoding 'euc_jp' template template0;
-
--- initialize proxy db
-\c test_enc_proxy
-set client_min_messages = 'fatal';
-create language plpgsql;
-set client_min_messages = 'warning';
-\set ECHO none
-\i plproxy.sql
-\set ECHO all
-set client_encoding = 'utf8';
-create schema plproxy;
-create or replace function plproxy.get_cluster_version(cluster_name text)
-returns integer as $$ begin return 1; end; $$ language plpgsql;
-create or replace function plproxy.get_cluster_config(cluster_name text, out key text, out val text)
-returns setof record as $$ begin return; end; $$ language plpgsql;
-create or replace function plproxy.get_cluster_partitions(cluster_name text)
-returns setof text as $$ begin
- return next 'host=127.0.0.1 dbname=test_enc_part'; return;
-end; $$ language plpgsql;
-
-create table intl_data (id int4, "コラム" text);
-create function test_encoding() returns setof intl_data as $$
- cluster 'testcluster'; run on 0; select * from intl_data order by 1;
-$$ language plproxy;
-create function test_encoding2(text) returns setof intl_data as $$
- cluster 'testcluster'; run on 0;
- select 0 as id, $1 as "コラム";
-$$ language plproxy;
-create function test_encoding3(text) returns setof intl_data as $$
- cluster 'testcluster'; run on 0;
-$$ language plproxy;
-
--- initialize part db
-\c test_enc_part
-set client_min_messages = 'fatal';
-create language plpgsql;
-set client_min_messages = 'warning';
-set client_encoding = 'utf8';
-create table intl_data (id int4, "コラム" text);
-insert into intl_data values (1, 'リモートデータ');
-create function test_encoding3(text)
-returns setof intl_data as $$
-declare rec intl_data%rowtype;
-begin
- raise notice 'got: %', $1;
- rec := (3, $1);
- return next rec; return;
-end; $$ language plpgsql;
-set client_encoding = 'sjis';
-select * from intl_data order by 1;
-set client_encoding = 'euc_jp';
-select * from intl_data order by 1;
-set client_encoding = 'utf-8';
-select * from intl_data order by 1;
-
--- test
-\c test_enc_proxy
-set client_encoding = 'utf8';
-set client_encoding = 'sjis';
-select * from test_encoding();
-set client_encoding = 'euc_jp';
-select * from test_encoding();
-set client_encoding = 'utf-8';
-select * from test_encoding();
-select * from test_encoding2('クライアント側のデータ');
-select * from test_encoding3('クライアント側のデータ');
-
-
diff --git a/sql/plproxy_errors.sql b/sql/plproxy_errors.sql
deleted file mode 100644
index 09bdf81..0000000
--- a/sql/plproxy_errors.sql
+++ /dev/null
@@ -1,63 +0,0 @@
-
--- test bad arg
-create function test_err1(dat text)
-returns text as $$
- cluster 'testcluster';
- run on hashtext(username);
-$$ language plproxy;
-select * from test_err1('dat');
-
-create function test_err2(dat text)
-returns text as $$
- cluster 'testcluster';
- run on hashtext($2);
-$$ language plproxy;
-select * from test_err2('dat');
-
-create function test_err3(dat text)
-returns text as $$
- cluster 'nonexists';
- run on hashtext($1);
-$$ language plproxy;
-select * from test_err3('dat');
-
--- should work
-create function test_err_none(dat text)
-returns text as $$
- cluster 'testcluster';
- run on hashtext($1);
- select 'ok';
-$$ language plproxy;
-select * from test_err_none('dat');
-
---- result map errors
-create function test_map_err1(dat text)
-returns text as $$ cluster 'testcluster'; run on 0;
- select dat as "foo", 'asd' as "bar";
-$$ language plproxy;
-select * from test_map_err1('dat');
-
-create function test_map_err2(dat text, out res1 text, out res2 text)
-returns record as $$ cluster 'testcluster'; run on 0;
- select dat as res1;
-$$ language plproxy;
-select * from test_map_err2('dat');
-
-create function test_map_err3(dat text, out res1 text, out res2 text)
-returns record as $$ cluster 'testcluster'; run on 0;
- select dat as res1, 'foo' as res_none;
-$$ language plproxy;
-select * from test_map_err3('dat');
-
-create function test_map_err4(dat text, out res1 text, out res2 text)
-returns record as $$
- --cluster 'testcluster';
- run on hashtext(dat);
- select dat as res2, 'foo' as res1;
-$$ language plproxy;
-select * from test_map_err4('dat');
-
-
-
-
-
diff --git a/sql/plproxy_init.sql b/sql/plproxy_init.sql
deleted file mode 100644
index 12390e4..0000000
--- a/sql/plproxy_init.sql
+++ /dev/null
@@ -1,82 +0,0 @@
-
-\set ECHO none
-
-set client_min_messages = 'warning';
-
-\i plproxy.sql
-
-set client_min_messages = 'fatal';
-create language plpgsql;
-set client_min_messages = 'warning';
-
--- create cluster info functions
-create schema plproxy;
-create or replace function plproxy.get_cluster_version(cluster_name text)
-returns integer as $$
-begin
- if cluster_name = 'testcluster' then
- return 5;
- end if;
- if cluster_name = 'badcluster' then
- return 5;
- end if;
- raise exception 'no such cluster: %', cluster_name;
-end; $$ language plpgsql;
-
-create or replace function
-plproxy.get_cluster_partitions(cluster_name text)
-returns setof text as $$
-begin
- if cluster_name = 'testcluster' then
- return next 'host=127.0.0.1 dbname=test_part';
- return;
- end if;
- if cluster_name = 'badcluster' then
- return next 'host=127.0.0.1 dbname=nonex_db';
- return;
- end if;
- raise exception 'no such cluster: %', cluster_name;
-end; $$ language plpgsql;
-
-create or replace function
-plproxy.get_cluster_config(cluster_name text, out key text, out val text)
-returns setof record as $$
-begin
- key = 'keepalive_idle'; val = '240'; return next;
- key = 'keepalive_interval'; val = '15'; return next;
- key = 'keepalive_count'; val = '4'; return next;
- return;
-end; $$ language plpgsql;
-
--------------------------------------------------
--- intialize part
--------------------------------------------------
-drop database if exists test_part;
-drop database if exists test_part0;
-drop database if exists test_part1;
-drop database if exists test_part2;
-drop database if exists test_part3;
-create database test_part;
-create database test_part0;
-create database test_part1;
-create database test_part2;
-create database test_part3;
-
-drop database if exists test_enc_proxy;
-drop database if exists test_enc_part;
-
-\c test_part
-set client_min_messages = 'fatal';
-create language plpgsql;
-\c test_part0
-set client_min_messages = 'fatal';
-create language plpgsql;
-\c test_part1
-set client_min_messages = 'fatal';
-create language plpgsql;
-\c test_part2
-set client_min_messages = 'fatal';
-create language plpgsql;
-\c test_part3
-set client_min_messages = 'fatal';
-create language plpgsql;
diff --git a/sql/plproxy_many.sql b/sql/plproxy_many.sql
deleted file mode 100644
index c1d2305..0000000
--- a/sql/plproxy_many.sql
+++ /dev/null
@@ -1,63 +0,0 @@
-create or replace function plproxy.get_cluster_version(cluster_name text)
-returns integer as $$
-begin
- if cluster_name = 'testcluster' then
- return 6;
- end if;
- raise exception 'no such cluster: %', cluster_name;
-end; $$ language plpgsql;
-
-create or replace function plproxy.get_cluster_partitions(cluster_name text)
-returns setof text as $$
-begin
- if cluster_name = 'testcluster' then
- return next 'host=127.0.0.1 dbname=test_part0';
- return next 'host=127.0.0.1 dbname=test_part1';
- return next 'host=127.0.0.1 dbname=test_part2';
- return next 'host=127.0.0.1 dbname=test_part3';
- return;
- end if;
- raise exception 'no such cluster: %', cluster_name;
-end; $$ language plpgsql;
-
-\c test_part0
-create function test_multi(part integer, username text)
-returns integer as $$ begin return 0; end; $$ language plpgsql;
-\c test_part1
-create function test_multi(part integer, username text)
-returns integer as $$ begin return 1; end; $$ language plpgsql;
-\c test_part2
-create function test_multi(part integer, username text)
-returns integer as $$ begin return 2; end; $$ language plpgsql;
-\c test_part3
-create function test_multi(part integer, username text)
-returns integer as $$ begin return 3; end; $$ language plpgsql;
-
-\c regression
-create function test_multi(part integer, username text)
-returns integer as $$ cluster 'testcluster'; run on int4(part); $$ language plproxy;
-select test_multi(0, 'foo');
-select test_multi(1, 'foo');
-select test_multi(2, 'foo');
-select test_multi(3, 'foo');
-
--- test RUN ON ALL
-drop function test_multi(integer, text);
-create function test_multi(part integer, username text)
-returns setof integer as $$ cluster 'testcluster'; run on all; $$ language plproxy;
-select test_multi(0, 'foo') order by 1;
-
--- test RUN ON 2
-drop function test_multi(integer, text);
-create function test_multi(part integer, username text)
-returns setof integer as $$ cluster 'testcluster'; run on 2; $$ language plproxy;
-select test_multi(0, 'foo');
-
--- test RUN ON RANDOM
-drop function test_multi(integer, text);
-create function test_multi(part integer, username text)
-returns setof integer as $$ cluster 'testcluster'; run on any; $$ language plproxy;
--- expect that 20 calls use all partitions
-select distinct test_multi(0, 'foo') from generate_series(1,20) order by 1;
-
-
diff --git a/sql/plproxy_select.sql b/sql/plproxy_select.sql
deleted file mode 100644
index 2d724c9..0000000
--- a/sql/plproxy_select.sql
+++ /dev/null
@@ -1,121 +0,0 @@
-
--- test regular sql
-create function test_select(xuser text, tmp boolean)
-returns integer as $x$
- cluster 'testcluster';
- run on hashtext(xuser);
- select /*********
- junk ;
- ********** ****/ id from sel_test where username = xuser
- and ';' <> 'as;d''a ; sd'
- and $tmp$ ; 'a' $tmp$ <> 'as;d''a ; sd'
- and $tmp$ $ $$ $foo$tmp$ <> 'x';
-$x$ language plproxy;
-
-\c test_part
-create table sel_test (
- id integer,
- username text
-);
-insert into sel_test values ( 1, 'user');
-
-\c regression
-select * from test_select('user', true);
-select * from test_select('xuser', false);
-
-
--- test errors
-create function test_select_err(xuser text, tmp boolean)
-returns integer as $$
- cluster 'testcluster';
- run on hashtext(xuser);
- select id from sel_test where username = xuser;
- select id from sel_test where username = xuser;
-$$ language plproxy;
-
-select * from test_select_err('user', true);
-
-
-create function get_zero()
-returns setof integer as $x$
- cluster 'testcluster';
- run on all;
- select (0*0);
-$x$ language plproxy;
-
-select * from get_zero();
-
-\c test_part
-create table numbers (
- num int,
- name text
-);
-insert into numbers values (1, 'one');
-insert into numbers values (2, 'two');
-
-create function ret_numtuple(int)
-returns numbers as $x$
- select num, name from numbers where num = $1;
-$x$ language sql;
-
-\c regression
-create type numbers_type as (num int, name text);
-
-create function get_one()
-returns setof numbers_type as $x$
- cluster 'testcluster';
- run on all;
- select (ret_numtuple(1)).num, (ret_numtuple(1)).name;
-$x$ language plproxy;
-
-select * from get_one();
-
-
-\c test_part
-create function remote_func(a varchar, b varchar, c varchar)
-returns void as $$
-begin
- return;
-end;
-$$ language plpgsql;
-
-\c regression
-CREATE OR REPLACE FUNCTION test1(x integer, a varchar, b varchar, c varchar)
-RETURNS void AS $$
-CLUSTER 'testcluster';
-RUN ON 0;
-SELECT * FROM remote_func(a, b, c);
-$$ LANGUAGE plproxy;
-
-select * from test1(1, 'a', NULL,NULL);
-select * from test1(1, NULL, NULL,NULL);
-
-CREATE OR REPLACE FUNCTION test2(a varchar, b varchar, c varchar)
-RETURNS void AS $$
-CLUSTER 'testcluster';
-RUN ON 0;
-SELECT * FROM remote_func(a, b, c);
-$$ LANGUAGE plproxy;
-
-select * from test2(NULL, NULL, NULL);
-select * from test2('a', NULL, NULL);
-
-
-CREATE OR REPLACE FUNCTION test3(a varchar, b varchar, c varchar)
-RETURNS void AS $$
-CLUSTER 'testcluster';
-RUN ON 0;
-SELECT * FROM remote_func(a, c, b);
-$$ LANGUAGE plproxy;
-
-select * from test3(NULL,NULL, 'a');
-select * from test3('a', NULL,NULL);
-
-
-
-
-
-
-
-
-
diff --git a/sql/plproxy_split.sql b/sql/plproxy_split.sql
deleted file mode 100644
index d65edf2..0000000
--- a/sql/plproxy_split.sql
+++ /dev/null
@@ -1,103 +0,0 @@
--- partition functions
-\c test_part0
-create or replace function test_array(a text[], b text[], c text) returns text as
-$$
-select current_database() || ' $1:' || array_to_string($1, ',')
- || ' $2:' || array_to_string($2, ',')
- || ' $3:' || $3;
-$$ language sql;
-\c test_part1
-create or replace function test_array(a text[], b text[], c text) returns text as
-$$
-select current_database() || ' $1:' || array_to_string($1, ',')
- || ' $2:' || array_to_string($2, ',')
- || ' $3:' || $3;
-$$ language sql;
-\c test_part2
-create or replace function test_array(a text[], b text[], c text) returns text as
-$$
-select current_database() || ' $1:' || array_to_string($1, ',')
- || ' $2:' || array_to_string($2, ',')
- || ' $3:' || $3;
-$$ language sql;
-\c test_part3
-create or replace function test_array(a text[], b text[], c text) returns text as
-$$
-select current_database() || ' $1:' || array_to_string($1, ',')
- || ' $2:' || array_to_string($2, ',')
- || ' $3:' || $3;
-$$ language sql;
-
-\c regression
-
--- invalid arg reference
-create or replace function test_array(a text[], b text[], c text) returns setof text as
-$$ split $4; cluster 'testcluster'; run on 0;$$ language plproxy;
-select * from test_array(array['a'], array['g'], 'foo');
-
--- invalid arg name
-create or replace function test_array(a text[], b text[], c text) returns setof text as
-$$ split x; cluster 'testcluster'; run on 0; $$ language plproxy;
-select * from test_array(array['a'], array['b', 'c'], 'foo');
-
--- cannot split more than once
-create or replace function test_array(a text[], b text[], c text) returns setof text as
-$$ split a, b, b; cluster 'testcluster'; run on 0; $$ language plproxy;
-select * from test_array(array['a'], array['b', 'c'], 'foo');
-
--- attempt to split non-array
-create or replace function test_array(a text[], b text[], c text) returns setof text as
-$$ split $3; cluster 'testcluster'; run on 0;$$ language plproxy;
-select * from test_array(array['a'], array['g'], 'foo');
-
--- array size/dimensions mismatch
-create or replace function test_array(a text[], b text[], c text) returns setof text as
-$$ split a, b; cluster 'testcluster'; run on 0; $$ language plproxy;
-select * from test_array(array['a'], array['b', 'c'], 'foo');
-select * from test_array(array['a','b','c','d'], null, 'foo');
-select * from test_array(null, array['e','f','g','h'], 'foo');
-select * from test_array(array[array['a1'],array['a2']], array[array['b1'],array['b2']], 'foo');
-
--- run on array hash, split one array
-create or replace function test_array(a text[], b text[], c text) returns setof text as
-$$ split a; cluster 'testcluster'; run on ascii(a);$$ language plproxy;
-select * from test_array(array['a','b','c','d'], array['e','f','g','h'], 'foo');
-
--- run on text hash, split two arrays (nop split)
-create or replace function test_array(a text[], b text[], c text) returns setof text as
-$$ split a, b; cluster 'testcluster'; run on ascii(c);$$ language plproxy;
-select * from test_array(array['a','b','c','d'], array['e','f','g','h'], 'foo');
-
--- run on array hash, split two arrays
-create or replace function test_array(a text[], b text[], c text) returns setof text as
-$$ split a, b; cluster 'testcluster'; run on ascii(a);$$ language plproxy;
-select * from test_array(array['a','b','c','d'], array['e','f','g','h'], 'foo');
-select * from test_array(null, null, null);
-select * from test_array('{}'::text[], '{}'::text[], 'foo');
-
--- run on text hash, split all arrays
-create or replace function test_array(a text[], b text[], c text) returns setof text as
-$$ split all; cluster 'testcluster'; run on ascii(c);$$ language plproxy;
-select * from test_array(array['a','b','c','d'], array['e','f','g','h'], 'foo');
-
--- run on text hash, attempt to split all arrays but none are present
-create or replace function test_nonarray_split(a text, b text, c text) returns setof text as
-$$ split all; cluster 'testcluster'; run on ascii(a); select * from test_array(array[a], array[b], c);
-$$ language plproxy;
-select * from test_nonarray_split('a', 'b', 'c');
-
--- run on array hash, split all arrays
-create or replace function test_array(a text[], b text[], c text) returns setof text as
-$$ split all; cluster 'testcluster'; run on ascii(a);$$ language plproxy;
-select * from test_array(array['a','b','c','d'], array['e','f','g','h'], 'foo');
-
--- run on arg
-create or replace function test_array_direct(a integer[], b text[], c text) returns setof text as
-$$ split a; cluster 'testcluster'; run on a; select test_array('{}'::text[], b, c);$$ language plproxy;
-
-select * from test_array_direct(array[2,3], array['a','b','c','d'], 'foo');
-
-create or replace function test_array_direct(a integer[], b text[], c text) returns setof text as
-$$ split a, b; cluster 'testcluster'; run on a; select test_array('{}'::text[], b, c);$$ language plproxy;
-
-select * from test_array_direct(array[0,1,2,3], array['a','b','c','d'], 'foo');
diff --git a/sql/plproxy_sqlmed.sql b/sql/plproxy_sqlmed.sql
deleted file mode 100644
index 3898ace..0000000
--- a/sql/plproxy_sqlmed.sql
+++ /dev/null
@@ -1,80 +0,0 @@
-
-set client_min_messages = 'warning';
-
-drop foreign data wrapper if exists plproxy cascade;
-create foreign data wrapper plproxy;
-
-create server sqlmedcluster foreign data wrapper plproxy
- options ( partition_0 'dbname=test_part3 host=localhost',
- partition_1 'dbname=test_part2 host=localhost',
- partition_2 'dbname=test_part1 host=localhost',
- partition_3 'dbname=test_part0 host=localhost');
-
-create or replace function sqlmed_test1() returns setof text as $$
- cluster 'sqlmedcluster';
- run on 0;
- select 'plproxy: user=' || current_user || ' dbname=' || current_database();
-$$ language plproxy;
-
-drop user if exists test_user_bob;
-create user test_user_bob password 'secret';
-
--- no user mapping
-set session authorization test_user_bob;
-select * from sqlmed_test1();
-reset session authorization;
-
--- add a public user mapping
-create user mapping for public server sqlmedcluster
- options ( user 'test_user_bob',
- password 'secret1');
-
--- no access to foreign server
-set session authorization test_user_bob;
-select * from sqlmed_test1();
-reset session authorization;
-
--- ok, access granted
-grant usage on foreign server sqlmedcluster to test_user_bob;
-set session authorization test_user_bob;
-select * from sqlmed_test1();
-reset session authorization;
-
--- cluster definition validation
-
--- partition numbers must be consecutive
-alter server sqlmedcluster options (drop partition_2);
-select * from sqlmed_test1();
-
--- invalid partition count
-alter server sqlmedcluster options
- (drop partition_3,
- add partition_2 'dbname=test_part1 host=localhost');
-select * from sqlmed_test1();
-
--- switching betweem SQL/MED and compat mode
-
-create or replace function sqlmed_compat_test() returns setof text as $$
- cluster 'testcluster';
- run on 0;
- select 'plproxy: part=' || current_database();
-$$ language plproxy;
-
--- testcluster
-select * from sqlmed_compat_test();
-
--- override the test cluster with a SQL/MED definition
-drop server if exists testcluster cascade;
-create server testcluster foreign data wrapper plproxy
- options (partition_0 'dbname=regression host=localhost');
-create user mapping for public server testcluster;
-
--- sqlmed testcluster
-select * from sqlmed_compat_test();
-
--- now drop the SQL/MED testcluster, and test fallback
-drop server testcluster cascade;
-
--- back on testcluster again
-select * from sqlmed_compat_test();
-
diff --git a/sql/plproxy_target.sql b/sql/plproxy_target.sql
deleted file mode 100644
index 7bee249..0000000
--- a/sql/plproxy_target.sql
+++ /dev/null
@@ -1,45 +0,0 @@
-
--- test target clause
-
-create function test_target(xuser text, tmp boolean)
-returns text as $$
- cluster 'testcluster';
- run on 0;
- target test_target_dst;
-$$ language plproxy;
-
-\c test_part0
-
-create function test_target_dst(xuser text, tmp boolean)
-returns text as $$
-begin
- return 'dst';
-end;
-$$ language plpgsql;
-
-\c regression
-
-select * from test_target('foo', true);
-
--- test errors
-
-create function test_target_err1(xuser text)
-returns text as $$
- cluster 'testcluster';
- run on 0;
- target test_target_dst;
- target test_target_dst;
-$$ language plproxy;
-
-select * from test_target_err1('asd');
-
-create function test_target_err2(xuser text)
-returns text as $$
- cluster 'testcluster';
- run on 0;
- target test_target_dst;
- select 1;
-$$ language plproxy;
-
-select * from test_target_err2('asd');
-
diff --git a/sql/plproxy_test.sql b/sql/plproxy_test.sql
deleted file mode 100644
index 7eac7bc..0000000
--- a/sql/plproxy_test.sql
+++ /dev/null
@@ -1,291 +0,0 @@
-
--- test normal function
-create function testfunc(username text, id integer, data text)
-returns text as $$ cluster 'testcluster'; run on hashtext(username); $$ language plproxy;
-\c test_part
-create function testfunc(username text, id integer, data text)
-returns text as $$ begin return 'username=' || username; end; $$ language plpgsql;
-\c regression
-select * from testfunc('user', 1, 'foo');
-select * from testfunc('user', 1, 'foo');
-select * from testfunc('user', 1, 'foo');
-
-
--- test setof text
-create function test_set(username text, num integer)
-returns setof text as $$ cluster 'testcluster'; run on hashtext(username); $$ language plproxy;
-\c test_part
-create function test_set(username text, num integer)
-returns setof text as $$
-declare i integer;
-begin
- i := 0;
- while i < num loop
- return next 'username=' || username || ' row=' || i;
- i := i + 1;
- end loop;
- return;
-end; $$ language plpgsql;
-\c regression
-select * from test_set('user', 1);
-select * from test_set('user', 0);
-select * from test_set('user', 3);
-
--- test record
-create type ret_test_rec as ( id integer, dat text);
-create function test_record(username text, num integer)
-returns ret_test_rec as $$ cluster 'testcluster'; run on hashtext(username); $$ language plproxy;
-\c test_part
-create type ret_test_rec as ( id integer, dat text);
-create function test_record(username text, num integer)
-returns ret_test_rec as $$
-declare ret ret_test_rec%rowtype;
-begin
- ret := (num, username);
- return ret;
-end; $$ language plpgsql;
-\c regression
-select * from test_record('user', 3);
-
--- test setof record
-create function test_record_set(username text, num integer)
-returns setof ret_test_rec as $$ cluster 'testcluster'; run on hashtext(username); $$ language plproxy;
-\c test_part
-create function test_record_set(username text, num integer)
-returns setof ret_test_rec as $$
-declare ret ret_test_rec%rowtype; i integer;
-begin
- i := 0;
- while i < num loop
- ret := (i, username);
- i := i + 1;
- return next ret;
- end loop;
- return;
-end; $$ language plpgsql;
-\c regression
-select * from test_record_set('user', 1);
-select * from test_record_set('user', 0);
-select * from test_record_set('user', 3);
-
-
--- test void
-create function test_void(username text, num integer)
-returns void as $$ cluster 'testcluster'; run on hashtext(username); $$ language plproxy;
-\c test_part
-create function test_void(username text, num integer)
-returns void as $$
-begin
- return;
-end; $$ language plpgsql;
--- look what void actually looks
-select * from test_void('void', 2);
-select test_void('void', 2);
-\c regression
-select * from test_void('user', 1);
-select * from test_void('user', 3);
-select test_void('user', 3);
-select test_void('user', 3);
-
-
--- test normal outargs
-create function test_out1(username text, id integer, out data text)
-as $$ cluster 'testcluster'; run on hashtext(username); $$ language plproxy;
-\c test_part
-create function test_out1(username text, id integer, out data text)
-returns text as $$ begin data := 'username=' || username; return; end; $$ language plpgsql;
-\c regression
-select * from test_out1('user', 1);
-
--- test complicated outargs
-create function test_out2(username text, id integer, out out_id integer, xdata text, inout xdata2 text, out odata text)
-as $$ cluster 'testcluster'; run on hashtext(username); $$ language plproxy;
-\c test_part
-create function test_out2(username text, id integer, out out_id integer, xdata text, inout xdata2 text, out odata text)
-as $$ begin
- out_id = id;
- xdata2 := xdata2 || xdata;
- odata := 'username=' || username;
- return;
-end; $$ language plpgsql;
-\c regression
-select * from test_out2('user', 1, 'xdata', 'xdata2');
-
--- test various types
-create function test_types(username text, inout vbool boolean, inout xdate timestamp, inout bin bytea)
-as $$ cluster 'testcluster'; run on hashtext(username); $$ language plproxy;
-\c test_part
-create function test_types(username text, inout vbool boolean, inout xdate timestamp, inout bin bytea)
-as $$ begin return; end; $$ language plpgsql;
-
-\c regression
-select 1 from (select set_config(name, 'escape', false) as ignore
- from pg_settings where name = 'bytea_output') x
-where x.ignore = 'foo';
-select * from test_types('types', true, '2009-11-04 12:12:02', E'a\\000\\001\\002b');
-select * from test_types('types', NULL, NULL, NULL);
-
-
--- test user defined types
-create domain posint as int4 check (value > 0);
-create type struct as (id int4, data text);
-
-create function test_types2(username text, inout v_posint posint, inout v_struct struct, inout arr int8[])
-as $$ cluster 'testcluster'; $$ language plproxy;
-
-\c test_part
-create domain posint as int4 check (value > 0);
-create type struct as (id int4, data text);
-create function test_types2(username text, inout v_posint posint, inout v_struct struct, inout arr int8[])
-as $$ begin return; end; $$ language plpgsql;
-\c regression
-select * from test_types2('types', 4, (2, 'asd'), array[1,2,3]);
-select * from test_types2('types', NULL, NULL, NULL);
-
--- test CONNECT
-create function test_connect1() returns text
-as $$ connect 'dbname=test_part'; select current_database(); $$ language plproxy;
-select * from test_connect1();
-
--- test CONNECT $argument
-create function test_connect2(connstr text) returns text
-as $$ connect connstr; select current_database(); $$ language plproxy;
-select * from test_connect2('dbname=test_part');
-
--- test CONNECT function($argument)
-create function test_connect3(connstr text) returns text
-as $$ connect text(connstr); select current_database(); $$ language plproxy;
-select * from test_connect3('dbname=test_part');
-
--- test quoting function
-create type "RetWeird" as (
- "ColId" int4,
- "ColData" text
-);
-
-create function "testQuoting"(username text, id integer, data text)
-returns "RetWeird" as $$ cluster 'testcluster'; run on hashtext(username); $$ language plproxy;
-\c test_part
-create type "RetWeird" as (
- "ColId" int4,
- "ColData" text
-);
-create function "testQuoting"(username text, id integer, data text)
-returns "RetWeird" as $$ select 1::int4, 'BazOoka'::text $$ language sql;
-\c regression
-select * from "testQuoting"('user', '1', 'dat');
-
--- test arg type quoting
-create domain "bad type" as text;
-create function test_argq(username text, "some arg" integer, "other arg" "bad type",
- out "bad out" text, out "bad out2" "bad type")
-as $$ cluster 'testcluster'; run on hashtext(username); $$ language plproxy;
-\c test_part
-create domain "bad type" as text;
-create function test_argq(username text, "some arg" integer, "other arg" "bad type",
- out "bad out" text, out "bad out2" "bad type")
- as $$ begin return; end; $$ language plpgsql;
-\c regression
-select * from test_argq('user', 1, 'q');
-
--- test hash types function
-create or replace function t_hash16(int4) returns int2 as $$
-declare
- res int2;
-begin
- res = $1::int2;
- return res;
-end;
-$$ language plpgsql;
-
-create or replace function t_hash64(int4) returns int8 as $$
-declare
- res int8;
-begin
- res = $1;
- return res;
-end;
-$$ language plpgsql;
-
-create function test_hash16(id integer, data text)
-returns text as $$ cluster 'testcluster'; run on t_hash16(id); select data; $$ language plproxy;
-select * from test_hash16('0', 'hash16');
-
-create function test_hash64(id integer, data text)
-returns text as $$ cluster 'testcluster'; run on t_hash64(id); select data; $$ language plproxy;
-select * from test_hash64('0', 'hash64');
-
--- test argument difference
-\c test_part
-create function test_difftypes(username text, out val1 int2, out val2 float8)
-as $$ begin val1 = 1; val2 = 3;return; end; $$ language plpgsql;
-\c regression
-create function test_difftypes(username text, out val1 int4, out val2 float4)
-as $$ cluster 'testcluster'; run on 0; $$ language plproxy;
-select * from test_difftypes('types');
-
--- test simple hash
-\c test_part
-create function test_simple(partno int4) returns int4
-as $$ begin return $1; end; $$ language plpgsql;
-\c regression
-create function test_simple(partno int4) returns int4
-as $$
- cluster 'testcluster';
- run on $1;
-$$ language plproxy;
-select * from test_simple(0);
-drop function test_simple(int4);
-
-create function test_simple(partno int4) returns int4
-as $$
- cluster 'testcluster';
- run on partno;
-$$ language plproxy;
-select * from test_simple(0);
-
--- test error passing
-\c test_part
-create function test_error1() returns int4
-as $$
-begin
- select line2err;
- return 0;
-end;
-$$ language plpgsql;
-\c regression
-create function test_error1() returns int4
-as $$
- cluster 'testcluster';
- run on 0;
-$$ language plproxy;
-select * from test_error1();
-
-create function test_error2() returns int4
-as $$
- cluster 'testcluster';
- run on 0;
- select err;
-$$ language plproxy;
-select * from test_error2();
-
-create function test_error3() returns int4
-as $$
- connect 'dbname=test_part';
-$$ language plproxy;
-select * from test_error3();
-
--- test invalid db
-create function test_bad_db() returns int4
-as $$
- cluster 'badcluster';
-$$ language plproxy;
-select * from test_bad_db();
-
-create function test_bad_db2() returns int4
-as $$
- connect 'dbname=wrong_name_db';
-$$ language plproxy;
-select * from test_bad_db2();
-
-