@@ -24,6 +24,7 @@ SELECT append_range_partition('test_updates.test');
2424(1 row)
2525
2626INSERT INTO test_updates.test_11 (val, b) VALUES (101, 10);
27+ VACUUM ANALYZE;
2728/* tuple descs are the same */
2829EXPLAIN (COSTS OFF) UPDATE test_updates.test SET b = 0 WHERE val = 1;
2930 QUERY PLAN
@@ -43,21 +44,65 @@ UPDATE test_updates.test SET b = 0 WHERE val = 1 RETURNING *, tableoid::REGCLASS
4344EXPLAIN (COSTS OFF) UPDATE test_updates.test SET b = 0 WHERE val = 101;
4445 QUERY PLAN
4546-----------------------------
46- Update on test
47- Update on test
48- Update on test_11
49- -> Seq Scan on test
50- Filter: (val = 101)
47+ Update on test_11
5148 -> Seq Scan on test_11
5249 Filter: (val = 101)
53- (7 rows)
50+ (3 rows)
5451
5552UPDATE test_updates.test SET b = 0 WHERE val = 101 RETURNING *, tableoid::REGCLASS;
5653 val | b | tableoid
5754-----+---+----------------------
5855 101 | 0 | test_updates.test_11
5956(1 row)
6057
58+ CREATE TABLE test_updates.test_dummy (val INT4);
59+ EXPLAIN (COSTS OFF) UPDATE test_updates.test SET val = val + 1
60+ WHERE val = 101 AND val = ANY (TABLE test_updates.test_dummy)
61+ RETURNING *, tableoid::REGCLASS;
62+ QUERY PLAN
63+ ------------------------------------
64+ Update on test_11
65+ -> Nested Loop Semi Join
66+ -> Seq Scan on test_11
67+ Filter: (val = 101)
68+ -> Seq Scan on test_dummy
69+ Filter: (val = 101)
70+ (6 rows)
71+
72+ EXPLAIN (COSTS OFF) UPDATE test_updates.test t1 SET b = 0
73+ FROM test_updates.test_dummy t2
74+ WHERE t1.val = 101 AND t1.val = t2.val
75+ RETURNING t1.*, t1.tableoid::REGCLASS;
76+ QUERY PLAN
77+ ---------------------------------------
78+ Update on test_11 t1
79+ -> Nested Loop
80+ -> Seq Scan on test_11 t1
81+ Filter: (val = 101)
82+ -> Seq Scan on test_dummy t2
83+ Filter: (val = 101)
84+ (6 rows)
85+
86+ EXPLAIN (COSTS OFF) UPDATE test_updates.test SET b = 0
87+ WHERE val = 101 AND test >= (100, 8)
88+ RETURNING *, tableoid::REGCLASS;
89+ QUERY PLAN
90+ -----------------------------------------------------------------------------------
91+ Update on test_11
92+ -> Seq Scan on test_11
93+ Filter: (((test_11.*)::test_updates.test >= ROW(100, 8)) AND (val = 101))
94+ (3 rows)
95+
96+ /* execute this one */
97+ UPDATE test_updates.test SET b = 0
98+ WHERE val = 101 AND test >= (100, -1)
99+ RETURNING test;
100+ test
101+ ---------
102+ (101,0)
103+ (1 row)
104+
105+ DROP TABLE test_updates.test_dummy;
61106DROP SCHEMA test_updates CASCADE;
62107NOTICE: drop cascades to 13 other objects
63108DROP EXTENSION pg_pathman;
0 commit comments