diff options
| author | Michael Paquier | 2012-07-10 01:37:35 +0000 |
|---|---|---|
| committer | Michael Paquier | 2012-07-10 01:37:35 +0000 |
| commit | 1ec710ee12ae33b7964a21b4f138ed42f9506aa6 (patch) | |
| tree | c3054592f32d2e3f89fa4e4595606db06225b5e1 /src | |
| parent | cc12ea8e67c46f9782804105915dcc90725a1f66 (diff) | |
Remove duplication of functions get_xc_node_name and is_prepared_on_node
Those functions were created in regression tests xc_for_update and
xc_prepared_xacts. Now their creation is done in xc_create_function.
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/regress/expected/xc_create_function.out | 37 | ||||
| -rw-r--r-- | src/test/regress/expected/xc_for_update.out | 40 | ||||
| -rw-r--r-- | src/test/regress/expected/xc_prepared_xacts.out | 42 | ||||
| -rw-r--r-- | src/test/regress/sql/xc_create_function.sql | 39 | ||||
| -rw-r--r-- | src/test/regress/sql/xc_for_update.sql | 43 | ||||
| -rw-r--r-- | src/test/regress/sql/xc_prepared_xacts.sql | 46 |
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 |
