| -- 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) |
| |