@@ -68,6 +68,13 @@ SELECT 1 AS i UNION SELECT 2 ORDER BY i;
68
68
2
69
69
(2 rows)
70
70
71
+ -- ? operator
72
+ select '{"a":1, "b":2}'::jsonb ? 'b';
73
+ ?column?
74
+ ----------
75
+ t
76
+ (1 row)
77
+
71
78
-- cte
72
79
WITH t(f) AS (
73
80
VALUES (1.0), (2.0)
@@ -79,24 +86,35 @@ WITH t(f) AS (
79
86
2.0
80
87
(2 rows)
81
88
89
+ -- prepared statement with parameter
90
+ PREPARE pgss_test (int) AS SELECT $1, 'test' LIMIT 1;
91
+ EXECUTE pgss_test(1);
92
+ ?column? | ?column?
93
+ ----------+----------
94
+ 1 | test
95
+ (1 row)
96
+
97
+ DEALLOCATE pgss_test;
82
98
SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C";
83
- query | calls | rows
84
- -----------------------------------------+-------+------
85
- SELECT ? +| 4 | 4
86
- +| |
87
- AS "text" | |
88
- SELECT ? + ? | 2 | 2
89
- SELECT ? + ? + ? AS "add" | 3 | 3
90
- SELECT ? AS "float" | 1 | 1
91
- SELECT ? AS "int" | 2 | 2
92
- SELECT ? AS i UNION SELECT ? ORDER BY i | 1 | 2
93
- SELECT ? || ? | 1 | 1
94
- SELECT pg_stat_statements_reset() | 1 | 1
95
- WITH t(f) AS ( +| 1 | 2
96
- VALUES (?), (?) +| |
97
- ) +| |
98
- SELECT f FROM t ORDER BY f | |
99
- (9 rows)
99
+ query | calls | rows
100
+ ---------------------------------------------------+-------+------
101
+ PREPARE pgss_test (int) AS SELECT $1, $2 LIMIT $3 | 1 | 1
102
+ SELECT $1 +| 4 | 4
103
+ +| |
104
+ AS "text" | |
105
+ SELECT $1 + $2 | 2 | 2
106
+ SELECT $1 + $2 + $3 AS "add" | 3 | 3
107
+ SELECT $1 AS "float" | 1 | 1
108
+ SELECT $1 AS "int" | 2 | 2
109
+ SELECT $1 AS i UNION SELECT $2 ORDER BY i | 1 | 2
110
+ SELECT $1 || $2 | 1 | 1
111
+ SELECT pg_stat_statements_reset() | 1 | 1
112
+ WITH t(f) AS ( +| 1 | 2
113
+ VALUES ($1), ($2) +| |
114
+ ) +| |
115
+ SELECT f FROM t ORDER BY f | |
116
+ select $1::jsonb ? $2 | 1 | 1
117
+ (11 rows)
100
118
101
119
--
102
120
-- CRUD: INSERT SELECT UPDATE DELETE on test table
@@ -108,7 +126,7 @@ SELECT pg_stat_statements_reset();
108
126
(1 row)
109
127
110
128
-- utility "create table" should not be shown
111
- CREATE TABLE test (a int, b char(20));
129
+ CREATE TEMP TABLE test (a int, b char(20));
112
130
INSERT INTO test VALUES(generate_series(1, 10), 'aaa');
113
131
UPDATE test SET b = 'bbb' WHERE a > 7;
114
132
DELETE FROM test WHERE a > 9;
@@ -125,6 +143,8 @@ BEGIN \;
125
143
UPDATE test SET b = '555' WHERE a = 5 \;
126
144
UPDATE test SET b = '666' WHERE a = 6 \;
127
145
COMMIT ;
146
+ -- many INSERT values
147
+ INSERT INTO test (a, b) VALUES (1, 'a'), (2, 'b'), (3, 'c');
128
148
-- SELECT with constants
129
149
SELECT * FROM test WHERE a > 5 ORDER BY a ;
130
150
a | b
@@ -147,28 +167,47 @@ SELECT *
147
167
SELECT * FROM test ORDER BY a;
148
168
a | b
149
169
---+----------------------
170
+ 1 | a
150
171
1 | 111
172
+ 2 | b
151
173
2 | 222
174
+ 3 | c
152
175
3 | 333
153
176
4 | 444
154
177
5 | 555
155
178
6 | 666
156
179
7 | aaa
157
180
8 | bbb
158
181
9 | bbb
159
- (9 rows)
182
+ (12 rows)
183
+
184
+ -- SELECT with IN clause
185
+ SELECT * FROM test WHERE a IN (1, 2, 3, 4, 5);
186
+ a | b
187
+ ---+----------------------
188
+ 1 | 111
189
+ 2 | 222
190
+ 3 | 333
191
+ 4 | 444
192
+ 5 | 555
193
+ 1 | a
194
+ 2 | b
195
+ 3 | c
196
+ (8 rows)
160
197
161
198
SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C";
162
- query | calls | rows
163
- ---------------------------------------------------+-------+------
164
- DELETE FROM test WHERE a > ? | 1 | 1
165
- INSERT INTO test VALUES(generate_series(?, ?), ?) | 1 | 10
166
- SELECT * FROM test ORDER BY a | 1 | 9
167
- SELECT * FROM test WHERE a > ? ORDER BY a | 2 | 4
168
- SELECT pg_stat_statements_reset() | 1 | 1
169
- UPDATE test SET b = ? WHERE a = ? | 6 | 6
170
- UPDATE test SET b = ? WHERE a > ? | 1 | 3
171
- (7 rows)
199
+ query | calls | rows
200
+ -------------------------------------------------------------+-------+------
201
+ DELETE FROM test WHERE a > $1 | 1 | 1
202
+ INSERT INTO test (a, b) VALUES ($1, $2), ($3, $4), ($5, $6) | 1 | 3
203
+ INSERT INTO test VALUES(generate_series($1, $2), $3) | 1 | 10
204
+ SELECT * FROM test ORDER BY a | 1 | 12
205
+ SELECT * FROM test WHERE a > $1 ORDER BY a | 2 | 4
206
+ SELECT * FROM test WHERE a IN ($1, $2, $3, $4, $5) | 1 | 8
207
+ SELECT pg_stat_statements_reset() | 1 | 1
208
+ UPDATE test SET b = $1 WHERE a = $2 | 6 | 6
209
+ UPDATE test SET b = $1 WHERE a > $2 | 1 | 3
210
+ (9 rows)
172
211
173
212
--
174
213
-- pg_stat_statements.track = none
@@ -251,9 +290,9 @@ SELECT PLUS_ONE(10);
251
290
SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C";
252
291
query | calls | rows
253
292
-----------------------------------+-------+------
254
- SELECT ? ::TEXT | 1 | 1
255
- SELECT PLUS_ONE(?) | 2 | 2
256
- SELECT PLUS_TWO(?) | 2 | 2
293
+ SELECT $1 ::TEXT | 1 | 1
294
+ SELECT PLUS_ONE($1) | 2 | 2
295
+ SELECT PLUS_TWO($1) | 2 | 2
257
296
SELECT pg_stat_statements_reset() | 1 | 1
258
297
(4 rows)
259
298
@@ -308,10 +347,10 @@ SELECT PLUS_ONE(1);
308
347
SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C";
309
348
query | calls | rows
310
349
-----------------------------------+-------+------
311
- SELECT (i + ? + ? )::INTEGER | 2 | 2
312
- SELECT (i + ? )::INTEGER LIMIT ? | 2 | 2
313
- SELECT PLUS_ONE(?) | 2 | 2
314
- SELECT PLUS_TWO(?) | 2 | 2
350
+ SELECT (i + $2 + $3 )::INTEGER | 2 | 2
351
+ SELECT (i + $2 )::INTEGER LIMIT $3 | 2 | 2
352
+ SELECT PLUS_ONE($1) | 2 | 2
353
+ SELECT PLUS_TWO($1) | 2 | 2
315
354
SELECT pg_stat_statements_reset() | 1 | 1
316
355
(5 rows)
317
356
@@ -352,7 +391,7 @@ SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C";
352
391
DROP FUNCTION PLUS_TWO(INTEGER) | 1 | 0
353
392
DROP TABLE IF EXISTS test | 3 | 0
354
393
DROP TABLE test | 1 | 0
355
- SELECT ? | 1 | 1
394
+ SELECT $1 | 1 | 1
356
395
SELECT pg_stat_statements_reset() | 1 | 1
357
396
(8 rows)
358
397
0 commit comments