@@ -222,20 +222,59 @@ SELECT * FROM test WHERE a IN (1, 2, 3, 4, 5);
222
222
3 | c
223
223
(8 rows)
224
224
225
+ -- MERGE
226
+ MERGE INTO test USING test st ON (st.a = test.a AND st.a >= 4)
227
+ WHEN MATCHED THEN UPDATE SET b = st.b || st.a::text;
228
+ MERGE INTO test USING test st ON (st.a = test.a AND st.a >= 4)
229
+ WHEN MATCHED THEN UPDATE SET b = test.b || st.a::text;
230
+ MERGE INTO test USING test st ON (st.a = test.a AND st.a >= 4)
231
+ WHEN MATCHED AND length(st.b) > 1 THEN UPDATE SET b = test.b || st.a::text;
232
+ MERGE INTO test USING test st ON (st.a = test.a)
233
+ WHEN NOT MATCHED THEN INSERT (a, b) VALUES (0, NULL);
234
+ MERGE INTO test USING test st ON (st.a = test.a)
235
+ WHEN NOT MATCHED THEN INSERT VALUES (0, NULL); -- same as above
236
+ MERGE INTO test USING test st ON (st.a = test.a)
237
+ WHEN NOT MATCHED THEN INSERT (b, a) VALUES (NULL, 0);
238
+ MERGE INTO test USING test st ON (st.a = test.a)
239
+ WHEN NOT MATCHED THEN INSERT (a) VALUES (0);
240
+ MERGE INTO test USING test st ON (st.a = test.a AND st.a >= 4)
241
+ WHEN MATCHED THEN DELETE;
242
+ MERGE INTO test USING test st ON (st.a = test.a AND st.a >= 4)
243
+ WHEN MATCHED THEN DO NOTHING;
244
+ MERGE INTO test USING test st ON (st.a = test.a AND st.a >= 4)
245
+ WHEN NOT MATCHED THEN DO NOTHING;
225
246
SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C";
226
247
query | calls | rows
227
248
------------------------------------------------------------------------------+-------+------
228
249
DELETE FROM test WHERE a > $1 | 1 | 1
229
250
INSERT INTO test (a, b) VALUES ($1, $2), ($3, $4), ($5, $6) | 1 | 3
230
251
INSERT INTO test VALUES(generate_series($1, $2), $3) | 1 | 10
252
+ MERGE INTO test USING test st ON (st.a = test.a AND st.a >= $1) +| 1 | 6
253
+ WHEN MATCHED AND length(st.b) > $2 THEN UPDATE SET b = test.b || st.a::text | |
254
+ MERGE INTO test USING test st ON (st.a = test.a AND st.a >= $1) +| 1 | 6
255
+ WHEN MATCHED THEN DELETE | |
256
+ MERGE INTO test USING test st ON (st.a = test.a AND st.a >= $1) +| 1 | 0
257
+ WHEN MATCHED THEN DO NOTHING | |
258
+ MERGE INTO test USING test st ON (st.a = test.a AND st.a >= $1) +| 1 | 6
259
+ WHEN MATCHED THEN UPDATE SET b = st.b || st.a::text | |
260
+ MERGE INTO test USING test st ON (st.a = test.a AND st.a >= $1) +| 1 | 6
261
+ WHEN MATCHED THEN UPDATE SET b = test.b || st.a::text | |
262
+ MERGE INTO test USING test st ON (st.a = test.a AND st.a >= $1) +| 1 | 0
263
+ WHEN NOT MATCHED THEN DO NOTHING | |
264
+ MERGE INTO test USING test st ON (st.a = test.a) +| 1 | 0
265
+ WHEN NOT MATCHED THEN INSERT (a) VALUES ($1) | |
266
+ MERGE INTO test USING test st ON (st.a = test.a) +| 2 | 0
267
+ WHEN NOT MATCHED THEN INSERT (a, b) VALUES ($1, $2) | |
268
+ MERGE INTO test USING test st ON (st.a = test.a) +| 1 | 0
269
+ WHEN NOT MATCHED THEN INSERT (b, a) VALUES ($1, $2) | |
231
270
SELECT * FROM test ORDER BY a | 1 | 12
232
271
SELECT * FROM test WHERE a > $1 ORDER BY a | 2 | 4
233
272
SELECT * FROM test WHERE a IN ($1, $2, $3, $4, $5) | 1 | 8
234
273
SELECT pg_stat_statements_reset() | 1 | 1
235
274
SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C" | 0 | 0
236
275
UPDATE test SET b = $1 WHERE a = $2 | 6 | 6
237
276
UPDATE test SET b = $1 WHERE a > $2 | 1 | 3
238
- (10 rows)
277
+ (19 rows)
239
278
240
279
--
241
280
-- INSERT, UPDATE, DELETE on test table to validate WAL generation metrics
0 commit comments