提交 c13181ca 编写于 作者: H Heikki Linnakangas

Move GPDB specific tests from 'update' to 'update_gp' test.

That keeps the upstream 'update' test closer to the upstream version,
which helps with the merges.
上级 bee45959
......@@ -177,197 +177,3 @@ INSERT INTO upsert_test VALUES (1, 'Bat') ON CONFLICT(a)
ERROR: modification of distribution columns in OnConflictUpdate is not supported
DROP TABLE update_test;
DROP TABLE upsert_test;
-- below cases is to test multi-hash-cols
CREATE TABLE tab3(c1 int, c2 int, c3 int, c4 int, c5 int) DISTRIBUTED BY (c1, c2, c3);
CREATE TABLE tab5(c1 int, c2 int, c3 int, c4 int, c5 int) DISTRIBUTED BY (c1, c2, c3, c4, c5);
INSERT INTO tab3 SELECT i, i, i, i, i FROM generate_series(1, 10)i;
INSERT INTO tab5 SELECT i, i, i, i, i FROM generate_series(1, 10)i;
-- test tab3
SELECT gp_segment_id, * FROM tab3;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
0 | 5 | 5 | 5 | 5 | 5
0 | 8 | 8 | 8 | 8 | 8
1 | 3 | 3 | 3 | 3 | 3
1 | 4 | 4 | 4 | 4 | 4
1 | 9 | 9 | 9 | 9 | 9
1 | 10 | 10 | 10 | 10 | 10
2 | 1 | 1 | 1 | 1 | 1
2 | 2 | 2 | 2 | 2 | 2
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
(10 rows)
UPDATE tab3 set c1 = 9 where c4 = 1;
SELECT gp_segment_id, * FROM tab3;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
1 | 3 | 3 | 3 | 3 | 3
1 | 4 | 4 | 4 | 4 | 4
1 | 9 | 9 | 9 | 9 | 9
1 | 10 | 10 | 10 | 10 | 10
2 | 2 | 2 | 2 | 2 | 2
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
0 | 5 | 5 | 5 | 5 | 5
0 | 8 | 8 | 8 | 8 | 8
0 | 9 | 1 | 1 | 1 | 1
(10 rows)
UPDATE tab3 set (c1,c2) = (5,6) where c4 = 1;
SELECT gp_segment_id, * FROM tab3;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
1 | 3 | 3 | 3 | 3 | 3
1 | 4 | 4 | 4 | 4 | 4
1 | 9 | 9 | 9 | 9 | 9
1 | 10 | 10 | 10 | 10 | 10
0 | 5 | 5 | 5 | 5 | 5
0 | 8 | 8 | 8 | 8 | 8
2 | 2 | 2 | 2 | 2 | 2
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 5 | 6 | 1 | 1 | 1
(10 rows)
UPDATE tab3 set (c1,c2,c3) = (3,2,1) where c4 = 1;
SELECT gp_segment_id, * FROM tab3;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
2 | 2 | 2 | 2 | 2 | 2
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 3 | 2 | 1 | 1 | 1
1 | 3 | 3 | 3 | 3 | 3
1 | 4 | 4 | 4 | 4 | 4
1 | 9 | 9 | 9 | 9 | 9
1 | 10 | 10 | 10 | 10 | 10
0 | 5 | 5 | 5 | 5 | 5
0 | 8 | 8 | 8 | 8 | 8
(10 rows)
UPDATE tab3 set c1 = 11 where c2 = 10 and c2 < 1;
SELECT gp_segment_id, * FROM tab3;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
0 | 5 | 5 | 5 | 5 | 5
0 | 8 | 8 | 8 | 8 | 8
2 | 2 | 2 | 2 | 2 | 2
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 3 | 2 | 1 | 1 | 1
1 | 3 | 3 | 3 | 3 | 3
1 | 4 | 4 | 4 | 4 | 4
1 | 9 | 9 | 9 | 9 | 9
1 | 10 | 10 | 10 | 10 | 10
(10 rows)
-- test tab5
SELECT gp_segment_id, * FROM tab5;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 8 | 8 | 8 | 8 | 8
1 | 1 | 1 | 1 | 1 | 1
1 | 2 | 2 | 2 | 2 | 2
1 | 3 | 3 | 3 | 3 | 3
1 | 5 | 5 | 5 | 5 | 5
0 | 4 | 4 | 4 | 4 | 4
0 | 9 | 9 | 9 | 9 | 9
0 | 10 | 10 | 10 | 10 | 10
(10 rows)
UPDATE tab5 set c1 = 1000 where c4 = 1;
SELECT gp_segment_id, * FROM tab5;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+------+----+----+----+----
0 | 4 | 4 | 4 | 4 | 4
0 | 9 | 9 | 9 | 9 | 9
0 | 10 | 10 | 10 | 10 | 10
1 | 2 | 2 | 2 | 2 | 2
1 | 3 | 3 | 3 | 3 | 3
1 | 5 | 5 | 5 | 5 | 5
1 | 1000 | 1 | 1 | 1 | 1
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 8 | 8 | 8 | 8 | 8
(10 rows)
UPDATE tab5 set (c1,c2) = (9,10) where c4 = 1;
SELECT gp_segment_id, * FROM tab5;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
1 | 2 | 2 | 2 | 2 | 2
1 | 3 | 3 | 3 | 3 | 3
1 | 5 | 5 | 5 | 5 | 5
0 | 4 | 4 | 4 | 4 | 4
0 | 9 | 9 | 9 | 9 | 9
0 | 10 | 10 | 10 | 10 | 10
0 | 9 | 10 | 1 | 1 | 1
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 8 | 8 | 8 | 8 | 8
(10 rows)
UPDATE tab5 set (c1,c2,c4) = (5,8,6) where c4 = 1;
SELECT gp_segment_id, * FROM tab5;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
1 | 2 | 2 | 2 | 2 | 2
1 | 3 | 3 | 3 | 3 | 3
1 | 5 | 5 | 5 | 5 | 5
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 8 | 8 | 8 | 8 | 8
0 | 4 | 4 | 4 | 4 | 4
0 | 9 | 9 | 9 | 9 | 9
0 | 10 | 10 | 10 | 10 | 10
0 | 5 | 8 | 1 | 6 | 1
(10 rows)
UPDATE tab5 set (c1,c2,c3,c4,c5) = (1,2,3,0,6) where c5 = 1;
SELECT gp_segment_id, * FROM tab5;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
0 | 4 | 4 | 4 | 4 | 4
0 | 9 | 9 | 9 | 9 | 9
0 | 10 | 10 | 10 | 10 | 10
1 | 2 | 2 | 2 | 2 | 2
1 | 3 | 3 | 3 | 3 | 3
1 | 5 | 5 | 5 | 5 | 5
1 | 1 | 2 | 3 | 0 | 6
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 8 | 8 | 8 | 8 | 8
(10 rows)
UPDATE tab5 set c1 = 11 where c3 = 10 and c3 < 1;
SELECT gp_segment_id, * FROM tab5;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
0 | 4 | 4 | 4 | 4 | 4
0 | 9 | 9 | 9 | 9 | 9
0 | 10 | 10 | 10 | 10 | 10
1 | 2 | 2 | 2 | 2 | 2
1 | 3 | 3 | 3 | 3 | 3
1 | 5 | 5 | 5 | 5 | 5
1 | 1 | 2 | 3 | 0 | 6
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 8 | 8 | 8 | 8 | 8
(10 rows)
EXPLAIN (COSTS OFF ) UPDATE tab3 SET C1 = C1 + 1, C5 = C5+1;
QUERY PLAN
---------------------------------------------------------------
Update on tab3
-> Explicit Redistribute Motion 3:3 (slice1; segments: 3)
-> Split
-> Seq Scan on tab3
Optimizer: Postgres query optimizer
(5 rows)
-- clean up
drop table tab3;
drop table tab5;
......@@ -249,6 +249,200 @@ SELECT * from update_distr_key;
(10 rows)
DROP TABLE update_distr_key;
-- below cases is to test multi-hash-cols
CREATE TABLE tab3(c1 int, c2 int, c3 int, c4 int, c5 int) DISTRIBUTED BY (c1, c2, c3);
CREATE TABLE tab5(c1 int, c2 int, c3 int, c4 int, c5 int) DISTRIBUTED BY (c1, c2, c3, c4, c5);
INSERT INTO tab3 SELECT i, i, i, i, i FROM generate_series(1, 10)i;
INSERT INTO tab5 SELECT i, i, i, i, i FROM generate_series(1, 10)i;
-- test tab3
SELECT gp_segment_id, * FROM tab3;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
0 | 5 | 5 | 5 | 5 | 5
0 | 8 | 8 | 8 | 8 | 8
1 | 3 | 3 | 3 | 3 | 3
1 | 4 | 4 | 4 | 4 | 4
1 | 9 | 9 | 9 | 9 | 9
1 | 10 | 10 | 10 | 10 | 10
2 | 1 | 1 | 1 | 1 | 1
2 | 2 | 2 | 2 | 2 | 2
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
(10 rows)
UPDATE tab3 set c1 = 9 where c4 = 1;
SELECT gp_segment_id, * FROM tab3;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
1 | 3 | 3 | 3 | 3 | 3
1 | 4 | 4 | 4 | 4 | 4
1 | 9 | 9 | 9 | 9 | 9
1 | 10 | 10 | 10 | 10 | 10
2 | 2 | 2 | 2 | 2 | 2
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
0 | 5 | 5 | 5 | 5 | 5
0 | 8 | 8 | 8 | 8 | 8
0 | 9 | 1 | 1 | 1 | 1
(10 rows)
UPDATE tab3 set (c1,c2) = (5,6) where c4 = 1;
SELECT gp_segment_id, * FROM tab3;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
1 | 3 | 3 | 3 | 3 | 3
1 | 4 | 4 | 4 | 4 | 4
1 | 9 | 9 | 9 | 9 | 9
1 | 10 | 10 | 10 | 10 | 10
0 | 5 | 5 | 5 | 5 | 5
0 | 8 | 8 | 8 | 8 | 8
2 | 2 | 2 | 2 | 2 | 2
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 5 | 6 | 1 | 1 | 1
(10 rows)
UPDATE tab3 set (c1,c2,c3) = (3,2,1) where c4 = 1;
SELECT gp_segment_id, * FROM tab3;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
2 | 2 | 2 | 2 | 2 | 2
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 3 | 2 | 1 | 1 | 1
1 | 3 | 3 | 3 | 3 | 3
1 | 4 | 4 | 4 | 4 | 4
1 | 9 | 9 | 9 | 9 | 9
1 | 10 | 10 | 10 | 10 | 10
0 | 5 | 5 | 5 | 5 | 5
0 | 8 | 8 | 8 | 8 | 8
(10 rows)
UPDATE tab3 set c1 = 11 where c2 = 10 and c2 < 1;
SELECT gp_segment_id, * FROM tab3;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
0 | 5 | 5 | 5 | 5 | 5
0 | 8 | 8 | 8 | 8 | 8
2 | 2 | 2 | 2 | 2 | 2
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 3 | 2 | 1 | 1 | 1
1 | 3 | 3 | 3 | 3 | 3
1 | 4 | 4 | 4 | 4 | 4
1 | 9 | 9 | 9 | 9 | 9
1 | 10 | 10 | 10 | 10 | 10
(10 rows)
-- test tab5
SELECT gp_segment_id, * FROM tab5;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 8 | 8 | 8 | 8 | 8
1 | 1 | 1 | 1 | 1 | 1
1 | 2 | 2 | 2 | 2 | 2
1 | 3 | 3 | 3 | 3 | 3
1 | 5 | 5 | 5 | 5 | 5
0 | 4 | 4 | 4 | 4 | 4
0 | 9 | 9 | 9 | 9 | 9
0 | 10 | 10 | 10 | 10 | 10
(10 rows)
UPDATE tab5 set c1 = 1000 where c4 = 1;
SELECT gp_segment_id, * FROM tab5;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+------+----+----+----+----
0 | 4 | 4 | 4 | 4 | 4
0 | 9 | 9 | 9 | 9 | 9
0 | 10 | 10 | 10 | 10 | 10
1 | 2 | 2 | 2 | 2 | 2
1 | 3 | 3 | 3 | 3 | 3
1 | 5 | 5 | 5 | 5 | 5
1 | 1000 | 1 | 1 | 1 | 1
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 8 | 8 | 8 | 8 | 8
(10 rows)
UPDATE tab5 set (c1,c2) = (9,10) where c4 = 1;
SELECT gp_segment_id, * FROM tab5;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
1 | 2 | 2 | 2 | 2 | 2
1 | 3 | 3 | 3 | 3 | 3
1 | 5 | 5 | 5 | 5 | 5
0 | 4 | 4 | 4 | 4 | 4
0 | 9 | 9 | 9 | 9 | 9
0 | 10 | 10 | 10 | 10 | 10
0 | 9 | 10 | 1 | 1 | 1
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 8 | 8 | 8 | 8 | 8
(10 rows)
UPDATE tab5 set (c1,c2,c4) = (5,8,6) where c4 = 1;
SELECT gp_segment_id, * FROM tab5;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
1 | 2 | 2 | 2 | 2 | 2
1 | 3 | 3 | 3 | 3 | 3
1 | 5 | 5 | 5 | 5 | 5
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 8 | 8 | 8 | 8 | 8
0 | 4 | 4 | 4 | 4 | 4
0 | 9 | 9 | 9 | 9 | 9
0 | 10 | 10 | 10 | 10 | 10
0 | 5 | 8 | 1 | 6 | 1
(10 rows)
UPDATE tab5 set (c1,c2,c3,c4,c5) = (1,2,3,0,6) where c5 = 1;
SELECT gp_segment_id, * FROM tab5;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
0 | 4 | 4 | 4 | 4 | 4
0 | 9 | 9 | 9 | 9 | 9
0 | 10 | 10 | 10 | 10 | 10
1 | 2 | 2 | 2 | 2 | 2
1 | 3 | 3 | 3 | 3 | 3
1 | 5 | 5 | 5 | 5 | 5
1 | 1 | 2 | 3 | 0 | 6
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 8 | 8 | 8 | 8 | 8
(10 rows)
UPDATE tab5 set c1 = 11 where c3 = 10 and c3 < 1;
SELECT gp_segment_id, * FROM tab5;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
0 | 4 | 4 | 4 | 4 | 4
0 | 9 | 9 | 9 | 9 | 9
0 | 10 | 10 | 10 | 10 | 10
1 | 2 | 2 | 2 | 2 | 2
1 | 3 | 3 | 3 | 3 | 3
1 | 5 | 5 | 5 | 5 | 5
1 | 1 | 2 | 3 | 0 | 6
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 8 | 8 | 8 | 8 | 8
(10 rows)
EXPLAIN (COSTS OFF ) UPDATE tab3 SET C1 = C1 + 1, C5 = C5+1;
QUERY PLAN
---------------------------------------------------------------
Update on tab3
-> Explicit Redistribute Motion 3:3 (slice1; segments: 3)
-> Split
-> Seq Scan on tab3
Optimizer: Postgres query optimizer
(5 rows)
-- clean up
drop table tab3;
drop table tab5;
-- Update distribution key
-- start_ignore
drop table if exists r;
......
......@@ -256,6 +256,202 @@ SELECT * from update_distr_key;
(10 rows)
DROP TABLE update_distr_key;
-- below cases is to test multi-hash-cols
CREATE TABLE tab3(c1 int, c2 int, c3 int, c4 int, c5 int) DISTRIBUTED BY (c1, c2, c3);
CREATE TABLE tab5(c1 int, c2 int, c3 int, c4 int, c5 int) DISTRIBUTED BY (c1, c2, c3, c4, c5);
INSERT INTO tab3 SELECT i, i, i, i, i FROM generate_series(1, 10)i;
INSERT INTO tab5 SELECT i, i, i, i, i FROM generate_series(1, 10)i;
-- test tab3
SELECT gp_segment_id, * FROM tab3;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
0 | 5 | 5 | 5 | 5 | 5
0 | 8 | 8 | 8 | 8 | 8
1 | 3 | 3 | 3 | 3 | 3
1 | 4 | 4 | 4 | 4 | 4
1 | 9 | 9 | 9 | 9 | 9
1 | 10 | 10 | 10 | 10 | 10
2 | 1 | 1 | 1 | 1 | 1
2 | 2 | 2 | 2 | 2 | 2
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
(10 rows)
UPDATE tab3 set c1 = 9 where c4 = 1;
SELECT gp_segment_id, * FROM tab3;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
1 | 3 | 3 | 3 | 3 | 3
1 | 4 | 4 | 4 | 4 | 4
1 | 9 | 9 | 9 | 9 | 9
1 | 10 | 10 | 10 | 10 | 10
2 | 2 | 2 | 2 | 2 | 2
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
0 | 5 | 5 | 5 | 5 | 5
0 | 8 | 8 | 8 | 8 | 8
0 | 9 | 1 | 1 | 1 | 1
(10 rows)
UPDATE tab3 set (c1,c2) = (5,6) where c4 = 1;
SELECT gp_segment_id, * FROM tab3;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
1 | 3 | 3 | 3 | 3 | 3
1 | 4 | 4 | 4 | 4 | 4
1 | 9 | 9 | 9 | 9 | 9
1 | 10 | 10 | 10 | 10 | 10
0 | 5 | 5 | 5 | 5 | 5
0 | 8 | 8 | 8 | 8 | 8
2 | 2 | 2 | 2 | 2 | 2
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 5 | 6 | 1 | 1 | 1
(10 rows)
UPDATE tab3 set (c1,c2,c3) = (3,2,1) where c4 = 1;
SELECT gp_segment_id, * FROM tab3;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
2 | 2 | 2 | 2 | 2 | 2
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 3 | 2 | 1 | 1 | 1
1 | 3 | 3 | 3 | 3 | 3
1 | 4 | 4 | 4 | 4 | 4
1 | 9 | 9 | 9 | 9 | 9
1 | 10 | 10 | 10 | 10 | 10
0 | 5 | 5 | 5 | 5 | 5
0 | 8 | 8 | 8 | 8 | 8
(10 rows)
UPDATE tab3 set c1 = 11 where c2 = 10 and c2 < 1;
SELECT gp_segment_id, * FROM tab3;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
0 | 5 | 5 | 5 | 5 | 5
0 | 8 | 8 | 8 | 8 | 8
2 | 2 | 2 | 2 | 2 | 2
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 3 | 2 | 1 | 1 | 1
1 | 3 | 3 | 3 | 3 | 3
1 | 4 | 4 | 4 | 4 | 4
1 | 9 | 9 | 9 | 9 | 9
1 | 10 | 10 | 10 | 10 | 10
(10 rows)
-- test tab5
SELECT gp_segment_id, * FROM tab5;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 8 | 8 | 8 | 8 | 8
1 | 1 | 1 | 1 | 1 | 1
1 | 2 | 2 | 2 | 2 | 2
1 | 3 | 3 | 3 | 3 | 3
1 | 5 | 5 | 5 | 5 | 5
0 | 4 | 4 | 4 | 4 | 4
0 | 9 | 9 | 9 | 9 | 9
0 | 10 | 10 | 10 | 10 | 10
(10 rows)
UPDATE tab5 set c1 = 1000 where c4 = 1;
SELECT gp_segment_id, * FROM tab5;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+------+----+----+----+----
0 | 4 | 4 | 4 | 4 | 4
0 | 9 | 9 | 9 | 9 | 9
0 | 10 | 10 | 10 | 10 | 10
1 | 2 | 2 | 2 | 2 | 2
1 | 3 | 3 | 3 | 3 | 3
1 | 5 | 5 | 5 | 5 | 5
1 | 1000 | 1 | 1 | 1 | 1
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 8 | 8 | 8 | 8 | 8
(10 rows)
UPDATE tab5 set (c1,c2) = (9,10) where c4 = 1;
SELECT gp_segment_id, * FROM tab5;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
1 | 2 | 2 | 2 | 2 | 2
1 | 3 | 3 | 3 | 3 | 3
1 | 5 | 5 | 5 | 5 | 5
0 | 4 | 4 | 4 | 4 | 4
0 | 9 | 9 | 9 | 9 | 9
0 | 10 | 10 | 10 | 10 | 10
0 | 9 | 10 | 1 | 1 | 1
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 8 | 8 | 8 | 8 | 8
(10 rows)
UPDATE tab5 set (c1,c2,c4) = (5,8,6) where c4 = 1;
SELECT gp_segment_id, * FROM tab5;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
1 | 2 | 2 | 2 | 2 | 2
1 | 3 | 3 | 3 | 3 | 3
1 | 5 | 5 | 5 | 5 | 5
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 8 | 8 | 8 | 8 | 8
0 | 4 | 4 | 4 | 4 | 4
0 | 9 | 9 | 9 | 9 | 9
0 | 10 | 10 | 10 | 10 | 10
0 | 5 | 8 | 1 | 6 | 1
(10 rows)
UPDATE tab5 set (c1,c2,c3,c4,c5) = (1,2,3,0,6) where c5 = 1;
SELECT gp_segment_id, * FROM tab5;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
0 | 4 | 4 | 4 | 4 | 4
0 | 9 | 9 | 9 | 9 | 9
0 | 10 | 10 | 10 | 10 | 10
1 | 2 | 2 | 2 | 2 | 2
1 | 3 | 3 | 3 | 3 | 3
1 | 5 | 5 | 5 | 5 | 5
1 | 1 | 2 | 3 | 0 | 6
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 8 | 8 | 8 | 8 | 8
(10 rows)
UPDATE tab5 set c1 = 11 where c3 = 10 and c3 < 1;
SELECT gp_segment_id, * FROM tab5;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
0 | 4 | 4 | 4 | 4 | 4
0 | 9 | 9 | 9 | 9 | 9
0 | 10 | 10 | 10 | 10 | 10
1 | 2 | 2 | 2 | 2 | 2
1 | 3 | 3 | 3 | 3 | 3
1 | 5 | 5 | 5 | 5 | 5
1 | 1 | 2 | 3 | 0 | 6
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 8 | 8 | 8 | 8 | 8
(10 rows)
EXPLAIN (COSTS OFF ) UPDATE tab3 SET C1 = C1 + 1, C5 = C5+1;
QUERY PLAN
------------------------------------------------------------
Update on tab3
-> Result
-> Redistribute Motion 3:3 (slice1; segments: 3)
Hash Key: tab3_1.c1, tab3_1.c2, tab3_1.c3
-> Split
-> Seq Scan on tab3 tab3_1
Optimizer: Pivotal Optimizer (GPORCA) version 3.83.0
(7 rows)
-- clean up
drop table tab3;
drop table tab5;
-- Update distribution key
-- start_ignore
drop table if exists r;
......
......@@ -179,199 +179,3 @@ INSERT INTO upsert_test VALUES (1, 'Bat') ON CONFLICT(a)
ERROR: modification of distribution columns in OnConflictUpdate is not supported
DROP TABLE update_test;
DROP TABLE upsert_test;
-- below cases is to test multi-hash-cols
CREATE TABLE tab3(c1 int, c2 int, c3 int, c4 int, c5 int) DISTRIBUTED BY (c1, c2, c3);
CREATE TABLE tab5(c1 int, c2 int, c3 int, c4 int, c5 int) DISTRIBUTED BY (c1, c2, c3, c4, c5);
INSERT INTO tab3 SELECT i, i, i, i, i FROM generate_series(1, 10)i;
INSERT INTO tab5 SELECT i, i, i, i, i FROM generate_series(1, 10)i;
-- test tab3
SELECT gp_segment_id, * FROM tab3;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
0 | 5 | 5 | 5 | 5 | 5
0 | 8 | 8 | 8 | 8 | 8
1 | 3 | 3 | 3 | 3 | 3
1 | 4 | 4 | 4 | 4 | 4
1 | 9 | 9 | 9 | 9 | 9
1 | 10 | 10 | 10 | 10 | 10
2 | 1 | 1 | 1 | 1 | 1
2 | 2 | 2 | 2 | 2 | 2
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
(10 rows)
UPDATE tab3 set c1 = 9 where c4 = 1;
SELECT gp_segment_id, * FROM tab3;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
1 | 3 | 3 | 3 | 3 | 3
1 | 4 | 4 | 4 | 4 | 4
1 | 9 | 9 | 9 | 9 | 9
1 | 10 | 10 | 10 | 10 | 10
2 | 2 | 2 | 2 | 2 | 2
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
0 | 5 | 5 | 5 | 5 | 5
0 | 8 | 8 | 8 | 8 | 8
0 | 9 | 1 | 1 | 1 | 1
(10 rows)
UPDATE tab3 set (c1,c2) = (5,6) where c4 = 1;
SELECT gp_segment_id, * FROM tab3;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
1 | 3 | 3 | 3 | 3 | 3
1 | 4 | 4 | 4 | 4 | 4
1 | 9 | 9 | 9 | 9 | 9
1 | 10 | 10 | 10 | 10 | 10
0 | 5 | 5 | 5 | 5 | 5
0 | 8 | 8 | 8 | 8 | 8
2 | 2 | 2 | 2 | 2 | 2
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 5 | 6 | 1 | 1 | 1
(10 rows)
UPDATE tab3 set (c1,c2,c3) = (3,2,1) where c4 = 1;
SELECT gp_segment_id, * FROM tab3;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
2 | 2 | 2 | 2 | 2 | 2
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 3 | 2 | 1 | 1 | 1
1 | 3 | 3 | 3 | 3 | 3
1 | 4 | 4 | 4 | 4 | 4
1 | 9 | 9 | 9 | 9 | 9
1 | 10 | 10 | 10 | 10 | 10
0 | 5 | 5 | 5 | 5 | 5
0 | 8 | 8 | 8 | 8 | 8
(10 rows)
UPDATE tab3 set c1 = 11 where c2 = 10 and c2 < 1;
SELECT gp_segment_id, * FROM tab3;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
0 | 5 | 5 | 5 | 5 | 5
0 | 8 | 8 | 8 | 8 | 8
2 | 2 | 2 | 2 | 2 | 2
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 3 | 2 | 1 | 1 | 1
1 | 3 | 3 | 3 | 3 | 3
1 | 4 | 4 | 4 | 4 | 4
1 | 9 | 9 | 9 | 9 | 9
1 | 10 | 10 | 10 | 10 | 10
(10 rows)
-- test tab5
SELECT gp_segment_id, * FROM tab5;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 8 | 8 | 8 | 8 | 8
1 | 1 | 1 | 1 | 1 | 1
1 | 2 | 2 | 2 | 2 | 2
1 | 3 | 3 | 3 | 3 | 3
1 | 5 | 5 | 5 | 5 | 5
0 | 4 | 4 | 4 | 4 | 4
0 | 9 | 9 | 9 | 9 | 9
0 | 10 | 10 | 10 | 10 | 10
(10 rows)
UPDATE tab5 set c1 = 1000 where c4 = 1;
SELECT gp_segment_id, * FROM tab5;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+------+----+----+----+----
0 | 4 | 4 | 4 | 4 | 4
0 | 9 | 9 | 9 | 9 | 9
0 | 10 | 10 | 10 | 10 | 10
1 | 2 | 2 | 2 | 2 | 2
1 | 3 | 3 | 3 | 3 | 3
1 | 5 | 5 | 5 | 5 | 5
1 | 1000 | 1 | 1 | 1 | 1
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 8 | 8 | 8 | 8 | 8
(10 rows)
UPDATE tab5 set (c1,c2) = (9,10) where c4 = 1;
SELECT gp_segment_id, * FROM tab5;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
1 | 2 | 2 | 2 | 2 | 2
1 | 3 | 3 | 3 | 3 | 3
1 | 5 | 5 | 5 | 5 | 5
0 | 4 | 4 | 4 | 4 | 4
0 | 9 | 9 | 9 | 9 | 9
0 | 10 | 10 | 10 | 10 | 10
0 | 9 | 10 | 1 | 1 | 1
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 8 | 8 | 8 | 8 | 8
(10 rows)
UPDATE tab5 set (c1,c2,c4) = (5,8,6) where c4 = 1;
SELECT gp_segment_id, * FROM tab5;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
1 | 2 | 2 | 2 | 2 | 2
1 | 3 | 3 | 3 | 3 | 3
1 | 5 | 5 | 5 | 5 | 5
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 8 | 8 | 8 | 8 | 8
0 | 4 | 4 | 4 | 4 | 4
0 | 9 | 9 | 9 | 9 | 9
0 | 10 | 10 | 10 | 10 | 10
0 | 5 | 8 | 1 | 6 | 1
(10 rows)
UPDATE tab5 set (c1,c2,c3,c4,c5) = (1,2,3,0,6) where c5 = 1;
SELECT gp_segment_id, * FROM tab5;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
0 | 4 | 4 | 4 | 4 | 4
0 | 9 | 9 | 9 | 9 | 9
0 | 10 | 10 | 10 | 10 | 10
1 | 2 | 2 | 2 | 2 | 2
1 | 3 | 3 | 3 | 3 | 3
1 | 5 | 5 | 5 | 5 | 5
1 | 1 | 2 | 3 | 0 | 6
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 8 | 8 | 8 | 8 | 8
(10 rows)
UPDATE tab5 set c1 = 11 where c3 = 10 and c3 < 1;
SELECT gp_segment_id, * FROM tab5;
gp_segment_id | c1 | c2 | c3 | c4 | c5
---------------+----+----+----+----+----
0 | 4 | 4 | 4 | 4 | 4
0 | 9 | 9 | 9 | 9 | 9
0 | 10 | 10 | 10 | 10 | 10
1 | 2 | 2 | 2 | 2 | 2
1 | 3 | 3 | 3 | 3 | 3
1 | 5 | 5 | 5 | 5 | 5
1 | 1 | 2 | 3 | 0 | 6
2 | 6 | 6 | 6 | 6 | 6
2 | 7 | 7 | 7 | 7 | 7
2 | 8 | 8 | 8 | 8 | 8
(10 rows)
EXPLAIN (COSTS OFF ) UPDATE tab3 SET C1 = C1 + 1, C5 = C5+1;
QUERY PLAN
------------------------------------------------------------
Update on tab3
-> Result
-> Redistribute Motion 3:3 (slice1; segments: 3)
Hash Key: tab3_1.c1, tab3_1.c2, tab3_1.c3
-> Split
-> Seq Scan on tab3 tab3_1
Optimizer: Pivotal Optimizer (GPORCA) version 3.83.0
(7 rows)
-- clean up
drop table tab3;
drop table tab5;
......@@ -100,40 +100,3 @@ INSERT INTO upsert_test VALUES (1, 'Bat') ON CONFLICT(a)
DROP TABLE update_test;
DROP TABLE upsert_test;
-- below cases is to test multi-hash-cols
CREATE TABLE tab3(c1 int, c2 int, c3 int, c4 int, c5 int) DISTRIBUTED BY (c1, c2, c3);
CREATE TABLE tab5(c1 int, c2 int, c3 int, c4 int, c5 int) DISTRIBUTED BY (c1, c2, c3, c4, c5);
INSERT INTO tab3 SELECT i, i, i, i, i FROM generate_series(1, 10)i;
INSERT INTO tab5 SELECT i, i, i, i, i FROM generate_series(1, 10)i;
-- test tab3
SELECT gp_segment_id, * FROM tab3;
UPDATE tab3 set c1 = 9 where c4 = 1;
SELECT gp_segment_id, * FROM tab3;
UPDATE tab3 set (c1,c2) = (5,6) where c4 = 1;
SELECT gp_segment_id, * FROM tab3;
UPDATE tab3 set (c1,c2,c3) = (3,2,1) where c4 = 1;
SELECT gp_segment_id, * FROM tab3;
UPDATE tab3 set c1 = 11 where c2 = 10 and c2 < 1;
SELECT gp_segment_id, * FROM tab3;
-- test tab5
SELECT gp_segment_id, * FROM tab5;
UPDATE tab5 set c1 = 1000 where c4 = 1;
SELECT gp_segment_id, * FROM tab5;
UPDATE tab5 set (c1,c2) = (9,10) where c4 = 1;
SELECT gp_segment_id, * FROM tab5;
UPDATE tab5 set (c1,c2,c4) = (5,8,6) where c4 = 1;
SELECT gp_segment_id, * FROM tab5;
UPDATE tab5 set (c1,c2,c3,c4,c5) = (1,2,3,0,6) where c5 = 1;
SELECT gp_segment_id, * FROM tab5;
UPDATE tab5 set c1 = 11 where c3 = 10 and c3 < 1;
SELECT gp_segment_id, * FROM tab5;
EXPLAIN (COSTS OFF ) UPDATE tab3 SET C1 = C1 + 1, C5 = C5+1;
-- clean up
drop table tab3;
drop table tab5;
......@@ -164,6 +164,43 @@ SELECT * from update_distr_key;
DROP TABLE update_distr_key;
-- below cases is to test multi-hash-cols
CREATE TABLE tab3(c1 int, c2 int, c3 int, c4 int, c5 int) DISTRIBUTED BY (c1, c2, c3);
CREATE TABLE tab5(c1 int, c2 int, c3 int, c4 int, c5 int) DISTRIBUTED BY (c1, c2, c3, c4, c5);
INSERT INTO tab3 SELECT i, i, i, i, i FROM generate_series(1, 10)i;
INSERT INTO tab5 SELECT i, i, i, i, i FROM generate_series(1, 10)i;
-- test tab3
SELECT gp_segment_id, * FROM tab3;
UPDATE tab3 set c1 = 9 where c4 = 1;
SELECT gp_segment_id, * FROM tab3;
UPDATE tab3 set (c1,c2) = (5,6) where c4 = 1;
SELECT gp_segment_id, * FROM tab3;
UPDATE tab3 set (c1,c2,c3) = (3,2,1) where c4 = 1;
SELECT gp_segment_id, * FROM tab3;
UPDATE tab3 set c1 = 11 where c2 = 10 and c2 < 1;
SELECT gp_segment_id, * FROM tab3;
-- test tab5
SELECT gp_segment_id, * FROM tab5;
UPDATE tab5 set c1 = 1000 where c4 = 1;
SELECT gp_segment_id, * FROM tab5;
UPDATE tab5 set (c1,c2) = (9,10) where c4 = 1;
SELECT gp_segment_id, * FROM tab5;
UPDATE tab5 set (c1,c2,c4) = (5,8,6) where c4 = 1;
SELECT gp_segment_id, * FROM tab5;
UPDATE tab5 set (c1,c2,c3,c4,c5) = (1,2,3,0,6) where c5 = 1;
SELECT gp_segment_id, * FROM tab5;
UPDATE tab5 set c1 = 11 where c3 = 10 and c3 < 1;
SELECT gp_segment_id, * FROM tab5;
EXPLAIN (COSTS OFF ) UPDATE tab3 SET C1 = C1 + 1, C5 = C5+1;
-- clean up
drop table tab3;
drop table tab5;
-- Update distribution key
-- start_ignore
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册