| -- |
| -- @description Interconncet flow control test case: combination guc value |
| -- @created 2012-11-13 |
| -- @modified 2012-11-13 |
| -- @tags executor |
| -- @gpdb_version [4.2.3.0,main] |
| -- Create a table |
| CREATE TEMP TABLE small_table(dkey INT, jkey INT, rval REAL, tval TEXT default 'abcdefghijklmnopqrstuvwxyz') DISTRIBUTED BY (dkey); |
| -- Generate some data |
| INSERT INTO small_table VALUES(generate_series(1, 5000), generate_series(5001, 10000), sqrt(generate_series(5001, 10000))); |
| -- Functional tests |
| -- Skew with gather+redistribute |
| SET gp_interconnect_fc_method = "capacity"; |
| SHOW gp_interconnect_fc_method; |
| gp_interconnect_fc_method |
| --------------------------- |
| capacity |
| (1 row) |
| |
| SELECT ROUND(foo.rval * foo.rval)::INT % 30 AS rval2, COUNT(*) AS count, SUM(length(foo.tval)) AS sum_len_tval |
| FROM (SELECT 5001 AS jkey, rval, tval FROM small_table ORDER BY dkey LIMIT 3000) foo |
| JOIN small_table USING(jkey) |
| GROUP BY rval2 |
| ORDER BY rval2; |
| rval2 | count | sum_len_tval |
| -------+-------+-------------- |
| 0 | 100 | 2600 |
| 1 | 100 | 2600 |
| 2 | 100 | 2600 |
| 3 | 100 | 2600 |
| 4 | 100 | 2600 |
| 5 | 100 | 2600 |
| 6 | 100 | 2600 |
| 7 | 100 | 2600 |
| 8 | 100 | 2600 |
| 9 | 100 | 2600 |
| 10 | 100 | 2600 |
| 11 | 100 | 2600 |
| 12 | 100 | 2600 |
| 13 | 100 | 2600 |
| 14 | 100 | 2600 |
| 15 | 100 | 2600 |
| 16 | 100 | 2600 |
| 17 | 100 | 2600 |
| 18 | 100 | 2600 |
| 19 | 100 | 2600 |
| 20 | 100 | 2600 |
| 21 | 100 | 2600 |
| 22 | 100 | 2600 |
| 23 | 100 | 2600 |
| 24 | 100 | 2600 |
| 25 | 100 | 2600 |
| 26 | 100 | 2600 |
| 27 | 100 | 2600 |
| 28 | 100 | 2600 |
| 29 | 100 | 2600 |
| (30 rows) |
| |
| -- Set GUC values |
| SET gp_interconnect_snd_queue_depth = 1; |
| SET gp_interconnect_queue_depth = 1; |
| SELECT ROUND(foo.rval * foo.rval)::INT % 30 AS rval2, COUNT(*) AS count, SUM(length(foo.tval)) AS sum_len_tval |
| FROM (SELECT 5001 AS jkey, rval, tval FROM small_table ORDER BY dkey LIMIT 3000) foo |
| JOIN small_table USING(jkey) |
| GROUP BY rval2 |
| ORDER BY rval2; |
| rval2 | count | sum_len_tval |
| -------+-------+-------------- |
| 0 | 100 | 2600 |
| 1 | 100 | 2600 |
| 2 | 100 | 2600 |
| 3 | 100 | 2600 |
| 4 | 100 | 2600 |
| 5 | 100 | 2600 |
| 6 | 100 | 2600 |
| 7 | 100 | 2600 |
| 8 | 100 | 2600 |
| 9 | 100 | 2600 |
| 10 | 100 | 2600 |
| 11 | 100 | 2600 |
| 12 | 100 | 2600 |
| 13 | 100 | 2600 |
| 14 | 100 | 2600 |
| 15 | 100 | 2600 |
| 16 | 100 | 2600 |
| 17 | 100 | 2600 |
| 18 | 100 | 2600 |
| 19 | 100 | 2600 |
| 20 | 100 | 2600 |
| 21 | 100 | 2600 |
| 22 | 100 | 2600 |
| 23 | 100 | 2600 |
| 24 | 100 | 2600 |
| 25 | 100 | 2600 |
| 26 | 100 | 2600 |
| 27 | 100 | 2600 |
| 28 | 100 | 2600 |
| 29 | 100 | 2600 |
| (30 rows) |
| |
| -- Set GUC values |
| SET gp_interconnect_snd_queue_depth = 4096; |
| SET gp_interconnect_queue_depth = 4096; |
| SELECT ROUND(foo.rval * foo.rval)::INT % 30 AS rval2, COUNT(*) AS count, SUM(length(foo.tval)) AS sum_len_tval |
| FROM (SELECT 5001 AS jkey, rval, tval FROM small_table ORDER BY dkey LIMIT 3000) foo |
| JOIN small_table USING(jkey) |
| GROUP BY rval2 |
| ORDER BY rval2; |
| rval2 | count | sum_len_tval |
| -------+-------+-------------- |
| 0 | 100 | 2600 |
| 1 | 100 | 2600 |
| 2 | 100 | 2600 |
| 3 | 100 | 2600 |
| 4 | 100 | 2600 |
| 5 | 100 | 2600 |
| 6 | 100 | 2600 |
| 7 | 100 | 2600 |
| 8 | 100 | 2600 |
| 9 | 100 | 2600 |
| 10 | 100 | 2600 |
| 11 | 100 | 2600 |
| 12 | 100 | 2600 |
| 13 | 100 | 2600 |
| 14 | 100 | 2600 |
| 15 | 100 | 2600 |
| 16 | 100 | 2600 |
| 17 | 100 | 2600 |
| 18 | 100 | 2600 |
| 19 | 100 | 2600 |
| 20 | 100 | 2600 |
| 21 | 100 | 2600 |
| 22 | 100 | 2600 |
| 23 | 100 | 2600 |
| 24 | 100 | 2600 |
| 25 | 100 | 2600 |
| 26 | 100 | 2600 |
| 27 | 100 | 2600 |
| 28 | 100 | 2600 |
| 29 | 100 | 2600 |
| (30 rows) |
| |
| -- Set GUC values |
| SET gp_interconnect_snd_queue_depth = 1; |
| SET gp_interconnect_queue_depth = 4096; |
| SELECT ROUND(foo.rval * foo.rval)::INT % 30 AS rval2, COUNT(*) AS count, SUM(length(foo.tval)) AS sum_len_tval |
| FROM (SELECT 5001 AS jkey, rval, tval FROM small_table ORDER BY dkey LIMIT 3000) foo |
| JOIN small_table USING(jkey) |
| GROUP BY rval2 |
| ORDER BY rval2; |
| rval2 | count | sum_len_tval |
| -------+-------+-------------- |
| 0 | 100 | 2600 |
| 1 | 100 | 2600 |
| 2 | 100 | 2600 |
| 3 | 100 | 2600 |
| 4 | 100 | 2600 |
| 5 | 100 | 2600 |
| 6 | 100 | 2600 |
| 7 | 100 | 2600 |
| 8 | 100 | 2600 |
| 9 | 100 | 2600 |
| 10 | 100 | 2600 |
| 11 | 100 | 2600 |
| 12 | 100 | 2600 |
| 13 | 100 | 2600 |
| 14 | 100 | 2600 |
| 15 | 100 | 2600 |
| 16 | 100 | 2600 |
| 17 | 100 | 2600 |
| 18 | 100 | 2600 |
| 19 | 100 | 2600 |
| 20 | 100 | 2600 |
| 21 | 100 | 2600 |
| 22 | 100 | 2600 |
| 23 | 100 | 2600 |
| 24 | 100 | 2600 |
| 25 | 100 | 2600 |
| 26 | 100 | 2600 |
| 27 | 100 | 2600 |
| 28 | 100 | 2600 |
| 29 | 100 | 2600 |
| (30 rows) |
| |
| -- Set GUC values |
| SET gp_interconnect_snd_queue_depth = 4096; |
| SET gp_interconnect_queue_depth = 1; |
| SELECT ROUND(foo.rval * foo.rval)::INT % 30 AS rval2, COUNT(*) AS count, SUM(length(foo.tval)) AS sum_len_tval |
| FROM (SELECT 5001 AS jkey, rval, tval FROM small_table ORDER BY dkey LIMIT 3000) foo |
| JOIN small_table USING(jkey) |
| GROUP BY rval2 |
| ORDER BY rval2; |
| rval2 | count | sum_len_tval |
| -------+-------+-------------- |
| 0 | 100 | 2600 |
| 1 | 100 | 2600 |
| 2 | 100 | 2600 |
| 3 | 100 | 2600 |
| 4 | 100 | 2600 |
| 5 | 100 | 2600 |
| 6 | 100 | 2600 |
| 7 | 100 | 2600 |
| 8 | 100 | 2600 |
| 9 | 100 | 2600 |
| 10 | 100 | 2600 |
| 11 | 100 | 2600 |
| 12 | 100 | 2600 |
| 13 | 100 | 2600 |
| 14 | 100 | 2600 |
| 15 | 100 | 2600 |
| 16 | 100 | 2600 |
| 17 | 100 | 2600 |
| 18 | 100 | 2600 |
| 19 | 100 | 2600 |
| 20 | 100 | 2600 |
| 21 | 100 | 2600 |
| 22 | 100 | 2600 |
| 23 | 100 | 2600 |
| 24 | 100 | 2600 |
| 25 | 100 | 2600 |
| 26 | 100 | 2600 |
| 27 | 100 | 2600 |
| 28 | 100 | 2600 |
| 29 | 100 | 2600 |
| (30 rows) |
| |
| -- Set GUC values |
| SET gp_interconnect_snd_queue_depth = 1024; |
| SET gp_interconnect_queue_depth = 1024; |
| SELECT ROUND(foo.rval * foo.rval)::INT % 30 AS rval2, COUNT(*) AS count, SUM(length(foo.tval)) AS sum_len_tval |
| FROM (SELECT 5001 AS jkey, rval, tval FROM small_table ORDER BY dkey LIMIT 3000) foo |
| JOIN small_table USING(jkey) |
| GROUP BY rval2 |
| ORDER BY rval2; |
| rval2 | count | sum_len_tval |
| -------+-------+-------------- |
| 0 | 100 | 2600 |
| 1 | 100 | 2600 |
| 2 | 100 | 2600 |
| 3 | 100 | 2600 |
| 4 | 100 | 2600 |
| 5 | 100 | 2600 |
| 6 | 100 | 2600 |
| 7 | 100 | 2600 |
| 8 | 100 | 2600 |
| 9 | 100 | 2600 |
| 10 | 100 | 2600 |
| 11 | 100 | 2600 |
| 12 | 100 | 2600 |
| 13 | 100 | 2600 |
| 14 | 100 | 2600 |
| 15 | 100 | 2600 |
| 16 | 100 | 2600 |
| 17 | 100 | 2600 |
| 18 | 100 | 2600 |
| 19 | 100 | 2600 |
| 20 | 100 | 2600 |
| 21 | 100 | 2600 |
| 22 | 100 | 2600 |
| 23 | 100 | 2600 |
| 24 | 100 | 2600 |
| 25 | 100 | 2600 |
| 26 | 100 | 2600 |
| 27 | 100 | 2600 |
| 28 | 100 | 2600 |
| 29 | 100 | 2600 |
| (30 rows) |
| |
| -- Skew with gather+redistribute |
| SET gp_interconnect_fc_method = "loss_advance"; |
| SHOW gp_interconnect_fc_method; |
| gp_interconnect_fc_method |
| --------------------------- |
| loss_advance |
| (1 row) |
| |
| SELECT ROUND(foo.rval * foo.rval)::INT % 30 AS rval2, COUNT(*) AS count, SUM(length(foo.tval)) AS sum_len_tval |
| FROM (SELECT 5001 AS jkey, rval, tval FROM small_table ORDER BY dkey LIMIT 3000) foo |
| JOIN small_table USING(jkey) |
| GROUP BY rval2 |
| ORDER BY rval2; |
| rval2 | count | sum_len_tval |
| -------+-------+-------------- |
| 0 | 100 | 2600 |
| 1 | 100 | 2600 |
| 2 | 100 | 2600 |
| 3 | 100 | 2600 |
| 4 | 100 | 2600 |
| 5 | 100 | 2600 |
| 6 | 100 | 2600 |
| 7 | 100 | 2600 |
| 8 | 100 | 2600 |
| 9 | 100 | 2600 |
| 10 | 100 | 2600 |
| 11 | 100 | 2600 |
| 12 | 100 | 2600 |
| 13 | 100 | 2600 |
| 14 | 100 | 2600 |
| 15 | 100 | 2600 |
| 16 | 100 | 2600 |
| 17 | 100 | 2600 |
| 18 | 100 | 2600 |
| 19 | 100 | 2600 |
| 20 | 100 | 2600 |
| 21 | 100 | 2600 |
| 22 | 100 | 2600 |
| 23 | 100 | 2600 |
| 24 | 100 | 2600 |
| 25 | 100 | 2600 |
| 26 | 100 | 2600 |
| 27 | 100 | 2600 |
| 28 | 100 | 2600 |
| 29 | 100 | 2600 |
| (30 rows) |
| |
| -- Set GUC values |
| SET gp_interconnect_snd_queue_depth = 1; |
| SET gp_interconnect_queue_depth = 1; |
| SELECT ROUND(foo.rval * foo.rval)::INT % 30 AS rval2, COUNT(*) AS count, SUM(length(foo.tval)) AS sum_len_tval |
| FROM (SELECT 5001 AS jkey, rval, tval FROM small_table ORDER BY dkey LIMIT 3000) foo |
| JOIN small_table USING(jkey) |
| GROUP BY rval2 |
| ORDER BY rval2; |
| rval2 | count | sum_len_tval |
| -------+-------+-------------- |
| 0 | 100 | 2600 |
| 1 | 100 | 2600 |
| 2 | 100 | 2600 |
| 3 | 100 | 2600 |
| 4 | 100 | 2600 |
| 5 | 100 | 2600 |
| 6 | 100 | 2600 |
| 7 | 100 | 2600 |
| 8 | 100 | 2600 |
| 9 | 100 | 2600 |
| 10 | 100 | 2600 |
| 11 | 100 | 2600 |
| 12 | 100 | 2600 |
| 13 | 100 | 2600 |
| 14 | 100 | 2600 |
| 15 | 100 | 2600 |
| 16 | 100 | 2600 |
| 17 | 100 | 2600 |
| 18 | 100 | 2600 |
| 19 | 100 | 2600 |
| 20 | 100 | 2600 |
| 21 | 100 | 2600 |
| 22 | 100 | 2600 |
| 23 | 100 | 2600 |
| 24 | 100 | 2600 |
| 25 | 100 | 2600 |
| 26 | 100 | 2600 |
| 27 | 100 | 2600 |
| 28 | 100 | 2600 |
| 29 | 100 | 2600 |
| (30 rows) |
| |
| -- Set GUC values |
| SET gp_interconnect_snd_queue_depth = 4096; |
| SET gp_interconnect_queue_depth = 4096; |
| SELECT ROUND(foo.rval * foo.rval)::INT % 30 AS rval2, COUNT(*) AS count, SUM(length(foo.tval)) AS sum_len_tval |
| FROM (SELECT 5001 AS jkey, rval, tval FROM small_table ORDER BY dkey LIMIT 3000) foo |
| JOIN small_table USING(jkey) |
| GROUP BY rval2 |
| ORDER BY rval2; |
| rval2 | count | sum_len_tval |
| -------+-------+-------------- |
| 0 | 100 | 2600 |
| 1 | 100 | 2600 |
| 2 | 100 | 2600 |
| 3 | 100 | 2600 |
| 4 | 100 | 2600 |
| 5 | 100 | 2600 |
| 6 | 100 | 2600 |
| 7 | 100 | 2600 |
| 8 | 100 | 2600 |
| 9 | 100 | 2600 |
| 10 | 100 | 2600 |
| 11 | 100 | 2600 |
| 12 | 100 | 2600 |
| 13 | 100 | 2600 |
| 14 | 100 | 2600 |
| 15 | 100 | 2600 |
| 16 | 100 | 2600 |
| 17 | 100 | 2600 |
| 18 | 100 | 2600 |
| 19 | 100 | 2600 |
| 20 | 100 | 2600 |
| 21 | 100 | 2600 |
| 22 | 100 | 2600 |
| 23 | 100 | 2600 |
| 24 | 100 | 2600 |
| 25 | 100 | 2600 |
| 26 | 100 | 2600 |
| 27 | 100 | 2600 |
| 28 | 100 | 2600 |
| 29 | 100 | 2600 |
| (30 rows) |
| |
| -- Set GUC values |
| SET gp_interconnect_snd_queue_depth = 1; |
| SET gp_interconnect_queue_depth = 4096; |
| SELECT ROUND(foo.rval * foo.rval)::INT % 30 AS rval2, COUNT(*) AS count, SUM(length(foo.tval)) AS sum_len_tval |
| FROM (SELECT 5001 AS jkey, rval, tval FROM small_table ORDER BY dkey LIMIT 3000) foo |
| JOIN small_table USING(jkey) |
| GROUP BY rval2 |
| ORDER BY rval2; |
| rval2 | count | sum_len_tval |
| -------+-------+-------------- |
| 0 | 100 | 2600 |
| 1 | 100 | 2600 |
| 2 | 100 | 2600 |
| 3 | 100 | 2600 |
| 4 | 100 | 2600 |
| 5 | 100 | 2600 |
| 6 | 100 | 2600 |
| 7 | 100 | 2600 |
| 8 | 100 | 2600 |
| 9 | 100 | 2600 |
| 10 | 100 | 2600 |
| 11 | 100 | 2600 |
| 12 | 100 | 2600 |
| 13 | 100 | 2600 |
| 14 | 100 | 2600 |
| 15 | 100 | 2600 |
| 16 | 100 | 2600 |
| 17 | 100 | 2600 |
| 18 | 100 | 2600 |
| 19 | 100 | 2600 |
| 20 | 100 | 2600 |
| 21 | 100 | 2600 |
| 22 | 100 | 2600 |
| 23 | 100 | 2600 |
| 24 | 100 | 2600 |
| 25 | 100 | 2600 |
| 26 | 100 | 2600 |
| 27 | 100 | 2600 |
| 28 | 100 | 2600 |
| 29 | 100 | 2600 |
| (30 rows) |
| |
| -- Set GUC values |
| SET gp_interconnect_snd_queue_depth = 4096; |
| SET gp_interconnect_queue_depth = 1; |
| SELECT ROUND(foo.rval * foo.rval)::INT % 30 AS rval2, COUNT(*) AS count, SUM(length(foo.tval)) AS sum_len_tval |
| FROM (SELECT 5001 AS jkey, rval, tval FROM small_table ORDER BY dkey LIMIT 3000) foo |
| JOIN small_table USING(jkey) |
| GROUP BY rval2 |
| ORDER BY rval2; |
| rval2 | count | sum_len_tval |
| -------+-------+-------------- |
| 0 | 100 | 2600 |
| 1 | 100 | 2600 |
| 2 | 100 | 2600 |
| 3 | 100 | 2600 |
| 4 | 100 | 2600 |
| 5 | 100 | 2600 |
| 6 | 100 | 2600 |
| 7 | 100 | 2600 |
| 8 | 100 | 2600 |
| 9 | 100 | 2600 |
| 10 | 100 | 2600 |
| 11 | 100 | 2600 |
| 12 | 100 | 2600 |
| 13 | 100 | 2600 |
| 14 | 100 | 2600 |
| 15 | 100 | 2600 |
| 16 | 100 | 2600 |
| 17 | 100 | 2600 |
| 18 | 100 | 2600 |
| 19 | 100 | 2600 |
| 20 | 100 | 2600 |
| 21 | 100 | 2600 |
| 22 | 100 | 2600 |
| 23 | 100 | 2600 |
| 24 | 100 | 2600 |
| 25 | 100 | 2600 |
| 26 | 100 | 2600 |
| 27 | 100 | 2600 |
| 28 | 100 | 2600 |
| 29 | 100 | 2600 |
| (30 rows) |
| |
| -- Set GUC values |
| SET gp_interconnect_snd_queue_depth = 1024; |
| SET gp_interconnect_queue_depth = 1024; |
| SELECT ROUND(foo.rval * foo.rval)::INT % 30 AS rval2, COUNT(*) AS count, SUM(length(foo.tval)) AS sum_len_tval |
| FROM (SELECT 5001 AS jkey, rval, tval FROM small_table ORDER BY dkey LIMIT 3000) foo |
| JOIN small_table USING(jkey) |
| GROUP BY rval2 |
| ORDER BY rval2; |
| rval2 | count | sum_len_tval |
| -------+-------+-------------- |
| 0 | 100 | 2600 |
| 1 | 100 | 2600 |
| 2 | 100 | 2600 |
| 3 | 100 | 2600 |
| 4 | 100 | 2600 |
| 5 | 100 | 2600 |
| 6 | 100 | 2600 |
| 7 | 100 | 2600 |
| 8 | 100 | 2600 |
| 9 | 100 | 2600 |
| 10 | 100 | 2600 |
| 11 | 100 | 2600 |
| 12 | 100 | 2600 |
| 13 | 100 | 2600 |
| 14 | 100 | 2600 |
| 15 | 100 | 2600 |
| 16 | 100 | 2600 |
| 17 | 100 | 2600 |
| 18 | 100 | 2600 |
| 19 | 100 | 2600 |
| 20 | 100 | 2600 |
| 21 | 100 | 2600 |
| 22 | 100 | 2600 |
| 23 | 100 | 2600 |
| 24 | 100 | 2600 |
| 25 | 100 | 2600 |
| 26 | 100 | 2600 |
| 27 | 100 | 2600 |
| 28 | 100 | 2600 |
| 29 | 100 | 2600 |
| (30 rows) |
| |