summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/test/regress/expected/xc_create_function.out37
-rw-r--r--src/test/regress/expected/xc_for_update.out40
-rw-r--r--src/test/regress/expected/xc_prepared_xacts.out42
-rw-r--r--src/test/regress/sql/xc_create_function.sql39
-rw-r--r--src/test/regress/sql/xc_for_update.sql43
-rw-r--r--src/test/regress/sql/xc_prepared_xacts.sql46
6 files changed, 90 insertions, 157 deletions
diff --git a/src/test/regress/expected/xc_create_function.out b/src/test/regress/expected/xc_create_function.out
index ca0bfe0cd6..642100a641 100644
--- a/src/test/regress/expected/xc_create_function.out
+++ b/src/test/regress/expected/xc_create_function.out
@@ -42,3 +42,40 @@ begin
execute cr_command;
end;
$$;
+-- A function to return data node name given a node number
+CREATE OR REPLACE FUNCTION get_xc_node_name(node_num int) RETURNS varchar LANGUAGE plpgsql AS $$
+DECLARE
+ r pgxc_node%rowtype;
+ node int;
+ nodenames_query varchar;
+BEGIN
+ nodenames_query := 'SELECT * FROM pgxc_node WHERE node_type = ''D'' ORDER BY xc_node_id';
+
+ node := 1;
+ FOR r IN EXECUTE nodenames_query LOOP
+ IF node = node_num THEN
+ RETURN r.node_name;
+ END IF;
+ node := node + 1;
+ END LOOP;
+ RETURN 'NODE_?';
+END;
+$$;
+-- A function to check whether a certain transaction was prepared on a specific data node given its number
+CREATE OR REPLACE FUNCTION is_prepared_on_node(txn_id varchar, nodenum int) RETURNS bool LANGUAGE plpgsql AS $$
+DECLARE
+ nodename varchar;
+ qry varchar;
+ r pg_prepared_xacts%rowtype;
+BEGIN
+ nodename := (SELECT get_xc_node_name(nodenum));
+ qry := 'EXECUTE DIRECT ON ' || nodename || ' ' || chr(39) || 'SELECT * FROM pg_prepared_xacts' || chr(39);
+
+ FOR r IN EXECUTE qry LOOP
+ IF r.gid = txn_id THEN
+ RETURN true;
+ END IF;
+ END LOOP;
+ RETURN false;
+END;
+$$;
diff --git a/src/test/regress/expected/xc_for_update.out b/src/test/regress/expected/xc_for_update.out
index 3bed707b16..9ea15fe72c 100644
--- a/src/test/regress/expected/xc_for_update.out
+++ b/src/test/regress/expected/xc_for_update.out
@@ -1,40 +1,6 @@
--- A function to return data node name given a node number
-create or replace function get_xc_node_name(node_num int) returns varchar language plpgsql as $$
-declare
- r pgxc_node%rowtype;
- node int;
- nodenames_query varchar;
-begin
- nodenames_query := 'SELECT * FROM pgxc_node WHERE node_type = ''D'' ORDER BY xc_node_id';
-
- node := 1;
- for r in execute nodenames_query loop
- if node = node_num THEN
- RETURN r.node_name;
- end if;
- node := node + 1;
- end loop;
- RETURN 'NODE_?';
-end;
-$$;
--- A function to check whether a certain transaction was prepared on a specific data node given its number
-create or replace function is_prepared_on_node(txn_id varchar, nodenum int) returns bool language plpgsql as $$
-declare
- nodename varchar;
- qry varchar;
- r pg_prepared_xacts%rowtype;
-begin
- nodename := (SELECT get_xc_node_name(nodenum));
- qry := 'execute direct on ' || nodename || ' ' || chr(39) || 'select * from pg_prepared_xacts' || chr(39);
-
- for r in execute qry loop
- if r.gid = txn_id THEN
- RETURN true;
- end if;
- end loop;
- return false;
-end;
-$$;
+--
+-- XC_FOR_UPDATE
+--
set enable_fast_query_shipping=true;
-- create some tables
create table t1(val int, val2 int);
diff --git a/src/test/regress/expected/xc_prepared_xacts.out b/src/test/regress/expected/xc_prepared_xacts.out
index 6ddb2e44f8..1ba4a97a92 100644
--- a/src/test/regress/expected/xc_prepared_xacts.out
+++ b/src/test/regress/expected/xc_prepared_xacts.out
@@ -1,41 +1,7 @@
--- A function to return data node name given a node number
-create or replace function get_xc_node_name(node_num int) returns varchar language plpgsql as $$
-declare
- r pgxc_node%rowtype;
- node int;
- nodenames_query varchar;
-begin
- nodenames_query := 'SELECT * FROM pgxc_node WHERE node_type = ''D'' ORDER BY xc_node_id';
-
- node := 1;
- for r in execute nodenames_query loop
- if node = node_num THEN
- RETURN r.node_name;
- end if;
- node := node + 1;
- end loop;
- RETURN 'NODE_?';
-end;
-$$;
--- A function to check whether a certain transaction was prepared on a specific data node given its number
-create or replace function is_prepared_on_node(txn_id varchar, nodenum int) returns bool language plpgsql as $$
-declare
- nodename varchar;
- qry varchar;
- r pg_prepared_xacts%rowtype;
-begin
- nodename := (SELECT get_xc_node_name(nodenum));
- qry := 'execute direct on ' || nodename || ' ' || chr(39) || 'select * from pg_prepared_xacts' || chr(39);
-
- for r in execute qry loop
- if r.gid = txn_id THEN
- RETURN true;
- end if;
- end loop;
- return false;
-end;
-$$;
-set enable_fast_query_shipping=true;
+--
+-- XC_PREPARED_XACTS
+--
+set enable_fast_query_shipping = true;
-- Test to make sure prepared transactions are working as expected
-- If a transcation is preared and contains only a select, it should NOT be preapred on data nodes
-- create some tables
diff --git a/src/test/regress/sql/xc_create_function.sql b/src/test/regress/sql/xc_create_function.sql
index 76ce96381e..8f9fd42cde 100644
--- a/src/test/regress/sql/xc_create_function.sql
+++ b/src/test/regress/sql/xc_create_function.sql
@@ -43,3 +43,42 @@ begin
execute cr_command;
end;
$$;
+
+-- A function to return data node name given a node number
+CREATE OR REPLACE FUNCTION get_xc_node_name(node_num int) RETURNS varchar LANGUAGE plpgsql AS $$
+DECLARE
+ r pgxc_node%rowtype;
+ node int;
+ nodenames_query varchar;
+BEGIN
+ nodenames_query := 'SELECT * FROM pgxc_node WHERE node_type = ''D'' ORDER BY xc_node_id';
+
+ node := 1;
+ FOR r IN EXECUTE nodenames_query LOOP
+ IF node = node_num THEN
+ RETURN r.node_name;
+ END IF;
+ node := node + 1;
+ END LOOP;
+ RETURN 'NODE_?';
+END;
+$$;
+
+-- A function to check whether a certain transaction was prepared on a specific data node given its number
+CREATE OR REPLACE FUNCTION is_prepared_on_node(txn_id varchar, nodenum int) RETURNS bool LANGUAGE plpgsql AS $$
+DECLARE
+ nodename varchar;
+ qry varchar;
+ r pg_prepared_xacts%rowtype;
+BEGIN
+ nodename := (SELECT get_xc_node_name(nodenum));
+ qry := 'EXECUTE DIRECT ON ' || nodename || ' ' || chr(39) || 'SELECT * FROM pg_prepared_xacts' || chr(39);
+
+ FOR r IN EXECUTE qry LOOP
+ IF r.gid = txn_id THEN
+ RETURN true;
+ END IF;
+ END LOOP;
+ RETURN false;
+END;
+$$;
diff --git a/src/test/regress/sql/xc_for_update.sql b/src/test/regress/sql/xc_for_update.sql
index 37169d8e92..66cc035381 100644
--- a/src/test/regress/sql/xc_for_update.sql
+++ b/src/test/regress/sql/xc_for_update.sql
@@ -1,43 +1,6 @@
-
--- A function to return data node name given a node number
-create or replace function get_xc_node_name(node_num int) returns varchar language plpgsql as $$
-declare
- r pgxc_node%rowtype;
- node int;
- nodenames_query varchar;
-begin
- nodenames_query := 'SELECT * FROM pgxc_node WHERE node_type = ''D'' ORDER BY xc_node_id';
-
- node := 1;
- for r in execute nodenames_query loop
- if node = node_num THEN
- RETURN r.node_name;
- end if;
- node := node + 1;
- end loop;
- RETURN 'NODE_?';
-end;
-$$;
-
-
--- A function to check whether a certain transaction was prepared on a specific data node given its number
-create or replace function is_prepared_on_node(txn_id varchar, nodenum int) returns bool language plpgsql as $$
-declare
- nodename varchar;
- qry varchar;
- r pg_prepared_xacts%rowtype;
-begin
- nodename := (SELECT get_xc_node_name(nodenum));
- qry := 'execute direct on ' || nodename || ' ' || chr(39) || 'select * from pg_prepared_xacts' || chr(39);
-
- for r in execute qry loop
- if r.gid = txn_id THEN
- RETURN true;
- end if;
- end loop;
- return false;
-end;
-$$;
+--
+-- XC_FOR_UPDATE
+--
set enable_fast_query_shipping=true;
diff --git a/src/test/regress/sql/xc_prepared_xacts.sql b/src/test/regress/sql/xc_prepared_xacts.sql
index 9fc1f8da1b..79ddfcbeea 100644
--- a/src/test/regress/sql/xc_prepared_xacts.sql
+++ b/src/test/regress/sql/xc_prepared_xacts.sql
@@ -1,46 +1,8 @@
+--
+-- XC_PREPARED_XACTS
+--
--- A function to return data node name given a node number
-create or replace function get_xc_node_name(node_num int) returns varchar language plpgsql as $$
-declare
- r pgxc_node%rowtype;
- node int;
- nodenames_query varchar;
-begin
- nodenames_query := 'SELECT * FROM pgxc_node WHERE node_type = ''D'' ORDER BY xc_node_id';
-
- node := 1;
- for r in execute nodenames_query loop
- if node = node_num THEN
- RETURN r.node_name;
- end if;
- node := node + 1;
- end loop;
- RETURN 'NODE_?';
-end;
-$$;
-
-
--- A function to check whether a certain transaction was prepared on a specific data node given its number
-create or replace function is_prepared_on_node(txn_id varchar, nodenum int) returns bool language plpgsql as $$
-declare
- nodename varchar;
- qry varchar;
- r pg_prepared_xacts%rowtype;
-begin
- nodename := (SELECT get_xc_node_name(nodenum));
- qry := 'execute direct on ' || nodename || ' ' || chr(39) || 'select * from pg_prepared_xacts' || chr(39);
-
- for r in execute qry loop
- if r.gid = txn_id THEN
- RETURN true;
- end if;
- end loop;
- return false;
-end;
-$$;
-
-set enable_fast_query_shipping=true;
-
+set enable_fast_query_shipping = true;
-- Test to make sure prepared transactions are working as expected
-- If a transcation is preared and contains only a select, it should NOT be preapred on data nodes