blob: 65c1936cbcc45ad52f5c515b60e6eed004e69839 [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();
SELECT type, content FROM gp_backend_info();
--
-- Spin up the writer gang.
--
CREATE TEMPORARY TABLE temp();
--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();
--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();
SELECT COUNT(*) = :num_primaries FROM gp_backend_info() WHERE type = 'w';
SELECT COUNT(*) = 1 FROM gp_backend_info() WHERE type = 'Q';
-- All IDs and PIDs should be distinct.
SELECT COUNT(DISTINCT id) = :num_primaries +1 FROM gp_backend_info();
SELECT COUNT(DISTINCT content) = :num_primaries +1 FROM gp_backend_info();
SELECT COUNT(DISTINCT pid) = :num_primaries +1 FROM gp_backend_info();
--
-- Spin up a parallel reader gang.
--
CREATE TEMPORARY TABLE temp2();
SELECT * FROM temp JOIN (SELECT * FROM temp2) temp2 ON (temp = temp2);
--start_ignore
-- Debugging helper (see above).
SELECT * from gp_backend_info();
--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();
SELECT COUNT(*) = :num_primaries FROM gp_backend_info() WHERE type = 'w';
SELECT COUNT(*) = :num_primaries FROM gp_backend_info() WHERE type = 'r';
SELECT COUNT(*) = 1 FROM gp_backend_info() WHERE type = 'Q';
-- IDs and PIDs should still be distinct.
SELECT COUNT(DISTINCT id) = (:num_primaries * 2) +1 FROM gp_backend_info();
SELECT COUNT(DISTINCT pid) = (:num_primaries * 2) +1 FROM gp_backend_info();
-- 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();
SELECT COUNT(DISTINCT content) = :num_primaries FROM gp_backend_info()
WHERE content >= 0;
SELECT DISTINCT COUNT(content) FROM gp_backend_info() WHERE content >= 0
GROUP BY content;
--
-- Start up a singleton reader.
--
SELECT * FROM temp JOIN (SELECT oid FROM pg_class) temp2 on (temp = temp2);
--start_ignore
-- Debugging helper (see above).
SELECT * from gp_backend_info();
--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();
SELECT COUNT(*) = :num_primaries FROM gp_backend_info() WHERE type = 'w';
SELECT COUNT(*) = :num_primaries FROM gp_backend_info() WHERE type = 'r';
SELECT COUNT(*) = 1 FROM gp_backend_info() WHERE type = 'R' and content = -1;
SELECT COUNT(*) = 1 FROM gp_backend_info() WHERE type = 'Q' and content = -1;
-- IDs and PIDs should still be distinct.
SELECT COUNT(DISTINCT id) = (:num_primaries * 2 + 2) FROM gp_backend_info();
SELECT COUNT(DISTINCT pid) = (:num_primaries * 2 + 2) FROM gp_backend_info();