summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael P2012-01-30 23:45:17 +0000
committerMichael P2012-01-30 23:45:17 +0000
commiteb7b4894c0547f7218759e44ce3894ad7d40f051 (patch)
treedd28291006989f49bb92e2f3f476f4f7c5b3fdca
parentde1a2df8d43f48dcffbe7968559c4a5514a5d87e (diff)
Regression test for node DDL
This checks grammar and error messages when using node DDL. This test cannot be run in parallel as it changes the cluster configuration.
-rw-r--r--src/test/regress/expected/xc_node.out58
-rw-r--r--src/test/regress/parallel_schedule3
-rw-r--r--src/test/regress/serial_schedule1
-rw-r--r--src/test/regress/sql/xc_node.sql38
4 files changed, 100 insertions, 0 deletions
diff --git a/src/test/regress/expected/xc_node.out b/src/test/regress/expected/xc_node.out
new file mode 100644
index 0000000000..a239cf7f24
--- /dev/null
+++ b/src/test/regress/expected/xc_node.out
@@ -0,0 +1,58 @@
+--
+-- XC_NODE
+--
+-- Tests involving node DDLs related to Postgres-XC settings
+-- Default values
+CREATE NODE dummy_node_coordinator WITH (TYPE = 'coordinator');
+CREATE NODE dummy_node_datanode WITH (TYPE = 'datanode');
+SELECT node_name, node_type, node_port, node_host FROM pgxc_node
+WHERE node_name IN ('dummy_node_coordinator', 'dummy_node_datanode')
+ORDER BY 1;
+ node_name | node_type | node_port | node_host
+------------------------+-----------+-----------+-----------
+ dummy_node_coordinator | C | 5432 | localhost
+ dummy_node_datanode | D | 5432 | localhost
+(2 rows)
+
+-- Some modifications
+ALTER NODE dummy_node_coordinator WITH (PORT = 5466, HOST = 'target_host_1');
+ALTER NODE dummy_node_datanode WITH (PORT = 5689, HOST = 'target_host_2', PREFERRED);
+SELECT node_name, node_type, node_port, node_host, nodeis_preferred FROM pgxc_node
+WHERE node_name IN ('dummy_node_coordinator', 'dummy_node_datanode')
+ORDER BY 1;
+ node_name | node_type | node_port | node_host | nodeis_preferred
+------------------------+-----------+-----------+---------------+------------------
+ dummy_node_coordinator | C | 5466 | target_host_1 | f
+ dummy_node_datanode | D | 5689 | target_host_2 | t
+(2 rows)
+
+DROP NODE dummy_node_coordinator;
+DROP NODE dummy_node_datanode;
+-- Check for error messages
+CREATE NODE dummy_node WITH (TYPE = 'dummy'); -- fail
+ERROR: type value is incorrect, specify 'coordinator or 'datanode'
+CREATE NODE dummy_node WITH (PORT = 6543, HOST = 'dummyhost'); -- type not specified
+ERROR: PGXC node dummy_node: Node type not specified
+CREATE NODE dummy_node WITH (PORT = 99999, TYPE = 'datanode'); -- port value error
+ERROR: port value is out of range
+CREATE NODE dummy_node WITH (PORT = -1, TYPE = 'datanode'); -- port value error
+ERROR: port value is out of range
+CREATE NODE dummy_node WITH (TYPE = 'coordinator', PREFERRED = true); -- fail
+ERROR: PGXC node dummy_node: cannot be a preferred node, it has to be a Datanode
+ALTER NODE dummy_node WITH (PREFERRED = false); -- does not exist
+ERROR: PGXC Node dummy_node: object not defined
+DROP NODE dummy_node; -- does not exist
+ERROR: PGXC Node dummy_node: object not defined
+-- Additinal checks on type and properties
+CREATE NODE dummy_node WITH (TYPE = 'datanode');
+ALTER NODE dummy_node WITH (TYPE = 'coordinator');
+ERROR: PGXC node dummy_node: cannot alter Datanode to Coordinator
+DROP NODE dummy_node;
+CREATE NODE dummy_node WITH (TYPE = 'coordinator');
+ALTER NODE dummy_node WITH (PREFERRED);
+ERROR: PGXC node dummy_node: cannot be a preferred node, it has to be a Datanode
+ALTER NODE dummy_node WITH (PRIMARY);
+ERROR: PGXC node dummy_node: cannot be a primary node, it has to be a Datanode
+ALTER NODE dummy_node WITH (TYPE = 'datanode');
+ERROR: PGXC node dummy_node: cannot alter Coordinator to Datanode
+DROP NODE dummy_node;
diff --git a/src/test/regress/parallel_schedule b/src/test/regress/parallel_schedule
index dc642a3640..8f2216e887 100644
--- a/src/test/regress/parallel_schedule
+++ b/src/test/regress/parallel_schedule
@@ -105,3 +105,6 @@ test: stats
#Postgres-XC additional tests, they can be run in parallel
test: xc_groupby xc_distkey xc_having xc_temp xc_remote
+
+#Cluster setting related test is independant
+test: xc_node
diff --git a/src/test/regress/serial_schedule b/src/test/regress/serial_schedule
index 77c3cfc1e5..9c60290239 100644
--- a/src/test/regress/serial_schedule
+++ b/src/test/regress/serial_schedule
@@ -134,3 +134,4 @@ test: xc_distkey
test: xc_having
test: xc_temp
test: xc_remote
+test: xc_node
diff --git a/src/test/regress/sql/xc_node.sql b/src/test/regress/sql/xc_node.sql
new file mode 100644
index 0000000000..c51a7e9753
--- /dev/null
+++ b/src/test/regress/sql/xc_node.sql
@@ -0,0 +1,38 @@
+--
+-- XC_NODE
+--
+
+-- Tests involving node DDLs related to Postgres-XC settings
+
+-- Default values
+CREATE NODE dummy_node_coordinator WITH (TYPE = 'coordinator');
+CREATE NODE dummy_node_datanode WITH (TYPE = 'datanode');
+SELECT node_name, node_type, node_port, node_host FROM pgxc_node
+WHERE node_name IN ('dummy_node_coordinator', 'dummy_node_datanode')
+ORDER BY 1;
+-- Some modifications
+ALTER NODE dummy_node_coordinator WITH (PORT = 5466, HOST = 'target_host_1');
+ALTER NODE dummy_node_datanode WITH (PORT = 5689, HOST = 'target_host_2', PREFERRED);
+SELECT node_name, node_type, node_port, node_host, nodeis_preferred FROM pgxc_node
+WHERE node_name IN ('dummy_node_coordinator', 'dummy_node_datanode')
+ORDER BY 1;
+DROP NODE dummy_node_coordinator;
+DROP NODE dummy_node_datanode;
+
+-- Check for error messages
+CREATE NODE dummy_node WITH (TYPE = 'dummy'); -- fail
+CREATE NODE dummy_node WITH (PORT = 6543, HOST = 'dummyhost'); -- type not specified
+CREATE NODE dummy_node WITH (PORT = 99999, TYPE = 'datanode'); -- port value error
+CREATE NODE dummy_node WITH (PORT = -1, TYPE = 'datanode'); -- port value error
+CREATE NODE dummy_node WITH (TYPE = 'coordinator', PREFERRED = true); -- fail
+ALTER NODE dummy_node WITH (PREFERRED = false); -- does not exist
+DROP NODE dummy_node; -- does not exist
+-- Additinal checks on type and properties
+CREATE NODE dummy_node WITH (TYPE = 'datanode');
+ALTER NODE dummy_node WITH (TYPE = 'coordinator');
+DROP NODE dummy_node;
+CREATE NODE dummy_node WITH (TYPE = 'coordinator');
+ALTER NODE dummy_node WITH (PREFERRED);
+ALTER NODE dummy_node WITH (PRIMARY);
+ALTER NODE dummy_node WITH (TYPE = 'datanode');
+DROP NODE dummy_node;