blob: 6bc00e581b76470b1b94da5556fb5770ebed267d [file] [log] [blame]
-- Tests for the gp_backend_info() function.
-- At first there should be no segment backends; we haven't performed any
-- queries yet. There should only be a QD backend
SELECT COUNT(*) = 1 FROM gp_backend_info();
?column?
----------
t
(1 row)
SELECT type, content FROM gp_backend_info();
type | content
------+---------
Q | -1
(1 row)
--
-- Spin up the writer gang.
--
CREATE TEMPORARY TABLE temp();
NOTICE: Table doesn't have 'DISTRIBUTED BY' clause, and no column type is suitable for a distribution key. Creating a NULL policy entry.
--start_ignore
-- Help debugging by printing the results. Since most contents will be different
-- on every machine, we do the actual verification below.
SELECT * from gp_backend_info();
id | type | content | host | port | pid
----+------+---------+-------------------------+------+-------
-1 | Q | -1 | vanjared-a01.vmware.com | 7000 | 89615
0 | w | 0 | vanjared-a01.vmware.com | 7002 | 89619
1 | w | 1 | vanjared-a01.vmware.com | 7003 | 89620
2 | w | 2 | vanjared-a01.vmware.com | 7004 | 89621
(4 rows)
--end_ignore
-- Now we should have as many backends as primaries +1 QD, and all primaries
-- backend should be marked as writers
SELECT COUNT(*) AS num_primaries FROM gp_segment_configuration
WHERE content >= 0 AND role = 'p'
\gset
SELECT COUNT(*) = :num_primaries +1 FROM gp_backend_info();
?column?
----------
t
(1 row)
SELECT COUNT(*) = :num_primaries FROM gp_backend_info() WHERE type = 'w';
?column?
----------
t
(1 row)
SELECT COUNT(*) = 1 FROM gp_backend_info() WHERE type = 'Q';
?column?
----------
t
(1 row)
-- All IDs and PIDs should be distinct.
SELECT COUNT(DISTINCT id) = :num_primaries +1 FROM gp_backend_info();
?column?
----------
t
(1 row)
SELECT COUNT(DISTINCT content) = :num_primaries +1 FROM gp_backend_info();
?column?
----------
t
(1 row)
SELECT COUNT(DISTINCT pid) = :num_primaries +1 FROM gp_backend_info();
?column?
----------
t
(1 row)
--
-- Spin up a parallel reader gang.
--
CREATE TEMPORARY TABLE temp2();
NOTICE: Table doesn't have 'DISTRIBUTED BY' clause, and no column type is suitable for a distribution key. Creating a NULL policy entry.
SELECT * FROM temp JOIN (SELECT * FROM temp2) temp2 ON (temp = temp2);
--
(0 rows)
--start_ignore
-- Debugging helper (see above).
SELECT * from gp_backend_info();
id | type | content | host | port | pid
----+------+---------+-------------------------+------+-------
-1 | Q | -1 | vanjared-a01.vmware.com | 7000 | 89615
0 | w | 0 | vanjared-a01.vmware.com | 7002 | 89619
1 | w | 1 | vanjared-a01.vmware.com | 7003 | 89620
2 | w | 2 | vanjared-a01.vmware.com | 7004 | 89621
3 | r | 0 | vanjared-a01.vmware.com | 7002 | 89625
4 | r | 1 | vanjared-a01.vmware.com | 7003 | 89626
5 | r | 2 | vanjared-a01.vmware.com | 7004 | 89627
(7 rows)
--end_ignore
-- Now we should have double the number of backends; the new ones should be
-- readers.
SELECT COUNT(*) = (:num_primaries * 2) +1 FROM gp_backend_info();
?column?
----------
t
(1 row)
SELECT COUNT(*) = :num_primaries FROM gp_backend_info() WHERE type = 'w';
?column?
----------
t
(1 row)
SELECT COUNT(*) = :num_primaries FROM gp_backend_info() WHERE type = 'r';
?column?
----------
t
(1 row)
SELECT COUNT(*) = 1 FROM gp_backend_info() WHERE type = 'Q';
?column?
----------
t
(1 row)
-- IDs and PIDs should still be distinct.
SELECT COUNT(DISTINCT id) = (:num_primaries * 2) +1 FROM gp_backend_info();
?column?
----------
t
(1 row)
SELECT COUNT(DISTINCT pid) = (:num_primaries * 2) +1 FROM gp_backend_info();
?column?
----------
t
(1 row)
-- Content IDs should be there twice (a reader and a writer for each segment).
SELECT COUNT(DISTINCT content) = :num_primaries +1 FROM gp_backend_info();
?column?
----------
t
(1 row)
SELECT COUNT(DISTINCT content) = :num_primaries FROM gp_backend_info()
WHERE content >= 0;
?column?
----------
t
(1 row)
SELECT DISTINCT COUNT(content) FROM gp_backend_info() WHERE content >= 0
GROUP BY content;
count
-------
2
(1 row)
--
-- Start up a singleton reader.
--
SELECT * FROM temp JOIN (SELECT oid FROM pg_class) temp2 on (temp = temp2);
oid
-----
(0 rows)
--start_ignore
-- Debugging helper (see above).
SELECT * from gp_backend_info();
id | type | content | host | port | pid
----+------+---------+-------------------------+------+-------
-1 | Q | -1 | vanjared-a01.vmware.com | 7000 | 89615
0 | w | 0 | vanjared-a01.vmware.com | 7002 | 89619
1 | w | 1 | vanjared-a01.vmware.com | 7003 | 89620
2 | w | 2 | vanjared-a01.vmware.com | 7004 | 89621
3 | r | 0 | vanjared-a01.vmware.com | 7002 | 89625
4 | r | 1 | vanjared-a01.vmware.com | 7003 | 89626
5 | r | 2 | vanjared-a01.vmware.com | 7004 | 89627
6 | R | -1 | vanjared-a01.vmware.com | 7000 | 89629
(8 rows)
--end_ignore
-- We should have added only one backend -- the singleton reader on the master.
SELECT COUNT(*) = (:num_primaries * 2 + 2) FROM gp_backend_info();
?column?
----------
t
(1 row)
SELECT COUNT(*) = :num_primaries FROM gp_backend_info() WHERE type = 'w';
?column?
----------
t
(1 row)
SELECT COUNT(*) = :num_primaries FROM gp_backend_info() WHERE type = 'r';
?column?
----------
t
(1 row)
SELECT COUNT(*) = 1 FROM gp_backend_info() WHERE type = 'R' and content = -1;
?column?
----------
t
(1 row)
SELECT COUNT(*) = 1 FROM gp_backend_info() WHERE type = 'Q' and content = -1;
?column?
----------
t
(1 row)
-- IDs and PIDs should still be distinct.
SELECT COUNT(DISTINCT id) = (:num_primaries * 2 + 2) FROM gp_backend_info();
?column?
----------
t
(1 row)
SELECT COUNT(DISTINCT pid) = (:num_primaries * 2 + 2) FROM gp_backend_info();
?column?
----------
t
(1 row)