Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit4108440

Browse files
peterejianhe-fundeanrasheed
committed
Additional tests for stored generated columns
Some additional tests have been created during the development ofvirtual generated columns (not included here). This commit addsequivalent tests to the existing test set for stored generatedcolumns. This includes expanded tests related to MERGE, subqueries,whole-row references, permissions, domains, partitioning, andtriggers.Author: Peter Eisentraut <peter@eisentraut.org>Co-authored-by: jian he <jian.universality@gmail.com>Co-authored-by: Dean Rasheed <dean.a.rasheed@gmail.com>Discussion:https://www.postgresql.org/message-id/flat/a368248e-69e4-40be-9c07-6c3b5880b0a6@eisentraut.org
1 parentce1b0f9 commit4108440

File tree

2 files changed

+179
-20
lines changed

2 files changed

+179
-20
lines changed

‎src/test/regress/expected/generated_stored.out

Lines changed: 129 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,24 @@ SELECT * FROM gtest1 ORDER BY a;
122122
4 | 8
123123
(4 rows)
124124

125+
SELECT gtest1 FROM gtest1 ORDER BY a; -- whole-row reference
126+
gtest1
127+
--------
128+
(1,2)
129+
(2,4)
130+
(3,6)
131+
(4,8)
132+
(4 rows)
133+
134+
SELECT a, (SELECT gtest1.b) FROM gtest1 ORDER BY a; -- sublink
135+
a | b
136+
---+---
137+
1 | 2
138+
2 | 4
139+
3 | 6
140+
4 | 8
141+
(4 rows)
142+
125143
DELETE FROM gtest1 WHERE a >= 3;
126144
UPDATE gtest1 SET b = DEFAULT WHERE a = 1;
127145
UPDATE gtest1 SET b = 11 WHERE a = 1; -- error
@@ -177,7 +195,12 @@ SELECT * FROM gtest1 ORDER BY a;
177195
2 | 4
178196
(2 rows)
179197

180-
UPDATE gtest1 SET a = 3 WHERE b = 4;
198+
UPDATE gtest1 SET a = 3 WHERE b = 4 RETURNING old.*, new.*;
199+
a | b | a | b
200+
---+---+---+---
201+
2 | 4 | 3 | 6
202+
(1 row)
203+
181204
SELECT * FROM gtest1 ORDER BY a;
182205
a | b
183206
---+---
@@ -203,14 +226,42 @@ CREATE TABLE gtestm (
203226
INSERT INTO gtestm VALUES (1, 5, 100);
204227
MERGE INTO gtestm t USING (VALUES (1, 10), (2, 20)) v(id, f1) ON t.id = v.id
205228
WHEN MATCHED THEN UPDATE SET f1 = v.f1
206-
WHEN NOT MATCHED THEN INSERT VALUES (v.id, v.f1, 200);
229+
WHEN NOT MATCHED THEN INSERT VALUES (v.id, v.f1, 200)
230+
RETURNING merge_action(), old.*, new.*;
231+
merge_action | id | f1 | f2 | f3 | f4 | id | f1 | f2 | f3 | f4
232+
--------------+----+----+-----+----+-----+----+----+-----+----+-----
233+
UPDATE | 1 | 5 | 100 | 10 | 200 | 1 | 10 | 100 | 20 | 200
234+
INSERT | | | | | | 2 | 20 | 200 | 40 | 400
235+
(2 rows)
236+
207237
SELECT * FROM gtestm ORDER BY id;
208238
id | f1 | f2 | f3 | f4
209239
----+----+-----+----+-----
210240
1 | 10 | 100 | 20 | 200
211241
2 | 20 | 200 | 40 | 400
212242
(2 rows)
213243

244+
DROP TABLE gtestm;
245+
CREATE TABLE gtestm (
246+
a int PRIMARY KEY,
247+
b int GENERATED ALWAYS AS (a * 2) STORED
248+
);
249+
INSERT INTO gtestm (a) SELECT g FROM generate_series(1, 10) g;
250+
MERGE INTO gtestm t USING gtestm AS s ON 2 * t.a = s.b WHEN MATCHED THEN DELETE RETURNING *;
251+
a | b | a | b
252+
----+----+----+----
253+
1 | 2 | 1 | 2
254+
2 | 4 | 2 | 4
255+
3 | 6 | 3 | 6
256+
4 | 8 | 4 | 8
257+
5 | 10 | 5 | 10
258+
6 | 12 | 6 | 12
259+
7 | 14 | 7 | 14
260+
8 | 16 | 8 | 16
261+
9 | 18 | 9 | 18
262+
10 | 20 | 10 | 20
263+
(10 rows)
264+
214265
DROP TABLE gtestm;
215266
-- views
216267
CREATE VIEW gtest1v AS SELECT * FROM gtest1;
@@ -319,6 +370,21 @@ Not-null constraints:
319370
"gtest1_a_not_null" NOT NULL "a" (inherited)
320371
Inherits: gtest1
321372

373+
INSERT INTO gtestx (a, x) VALUES (11, 22);
374+
SELECT * FROM gtest1;
375+
a | b
376+
----+-----
377+
3 | 6
378+
4 | 8
379+
11 | 242
380+
(3 rows)
381+
382+
SELECT * FROM gtestx;
383+
a | b | x
384+
----+-----+----
385+
11 | 242 | 22
386+
(1 row)
387+
322388
CREATE TABLE gtestxx_1 (a int NOT NULL, b int);
323389
ALTER TABLE gtestxx_1 INHERIT gtest1; -- error
324390
ERROR: column "b" in child table must be a generated column
@@ -541,7 +607,7 @@ CREATE FUNCTION gf1(a int) RETURNS int AS $$ SELECT a * 3 $$ IMMUTABLE LANGUAGE
541607
REVOKE ALL ON FUNCTION gf1(int) FROM PUBLIC;
542608
CREATE TABLE gtest12 (a int PRIMARY KEY, b int, c int GENERATED ALWAYS AS (gf1(b)) STORED);
543609
INSERT INTO gtest12 VALUES (1, 10), (2, 20);
544-
GRANT SELECT (a, c) ON gtest12 TO regress_user11;
610+
GRANT SELECT (a, c), INSERT ON gtest12 TO regress_user11;
545611
SET ROLE regress_user11;
546612
SELECT a, b FROM gtest11; -- not allowed
547613
ERROR: permission denied for table gtest11
@@ -554,7 +620,9 @@ SELECT a, c FROM gtest11; -- allowed
554620

555621
SELECT gf1(10); -- not allowed
556622
ERROR: permission denied for function gf1
557-
SELECT a, c FROM gtest12; -- allowed
623+
INSERT INTO gtest12 VALUES (3, 30), (4, 40); -- currently not allowed because of function permissions, should arguably be allowed
624+
ERROR: permission denied for function gf1
625+
SELECT a, c FROM gtest12; -- allowed (does not actually invoke the function)
558626
a | c
559627
---+----
560628
1 | 30
@@ -589,6 +657,13 @@ INSERT INTO gtest20b (a) VALUES (30);
589657
ALTER TABLE gtest20b ADD CONSTRAINT chk CHECK (b < 50) NOT VALID;
590658
ALTER TABLE gtest20b VALIDATE CONSTRAINT chk; -- fails on existing row
591659
ERROR: check constraint "chk" of relation "gtest20b" is violated by some row
660+
-- check with whole-row reference
661+
CREATE TABLE gtest20c (a int, b int GENERATED ALWAYS AS (a * 2) STORED);
662+
ALTER TABLE gtest20c ADD CONSTRAINT whole_row_check CHECK (gtest20c IS NOT NULL);
663+
INSERT INTO gtest20c VALUES (1); -- ok
664+
INSERT INTO gtest20c VALUES (NULL); -- fails
665+
ERROR: new row for relation "gtest20c" violates check constraint "whole_row_check"
666+
DETAIL: Failing row contains (null, null).
592667
-- not-null constraints
593668
CREATE TABLE gtest21a (a int PRIMARY KEY, b int GENERATED ALWAYS AS (nullif(a, 0)) STORED NOT NULL);
594669
INSERT INTO gtest21a (a) VALUES (1); -- ok
@@ -758,6 +833,11 @@ CREATE TABLE gtest24 (a int PRIMARY KEY, b gtestdomain1 GENERATED ALWAYS AS (a *
758833
INSERT INTO gtest24 (a) VALUES (4); -- ok
759834
INSERT INTO gtest24 (a) VALUES (6); -- error
760835
ERROR: value for domain gtestdomain1 violates check constraint "gtestdomain1_check"
836+
CREATE TYPE gtestdomain1range AS range (subtype = gtestdomain1);
837+
CREATE TABLE gtest24r (a int PRIMARY KEY, b gtestdomain1range GENERATED ALWAYS AS (gtestdomain1range(a, a + 5)) STORED);
838+
INSERT INTO gtest24r (a) VALUES (4); -- ok
839+
INSERT INTO gtest24r (a) VALUES (6); -- error
840+
ERROR: value for domain gtestdomain1 violates check constraint "gtestdomain1_check"
761841
-- typed tables (currently not supported)
762842
CREATE TYPE gtest_type AS (f1 integer, f2 text, f3 bigint);
763843
CREATE TABLE gtest28 OF gtest_type (f1 WITH OPTIONS GENERATED ALWAYS AS (f2 *2) STORED);
@@ -841,6 +921,24 @@ SELECT tableoid::regclass, * FROM gtest_parent ORDER BY 1, 2, 3;
841921
gtest_child2 | 08-15-2016 | 3 | 66
842922
(3 rows)
843923

924+
SELECT tableoid::regclass, * FROM gtest_child ORDER BY 1, 2, 3;
925+
tableoid | f1 | f2 | f3
926+
-------------+------------+----+----
927+
gtest_child | 07-15-2016 | 1 | 2
928+
gtest_child | 07-15-2016 | 2 | 4
929+
(2 rows)
930+
931+
SELECT tableoid::regclass, * FROM gtest_child2 ORDER BY 1, 2, 3;
932+
tableoid | f1 | f2 | f3
933+
--------------+------------+----+----
934+
gtest_child2 | 08-15-2016 | 3 | 66
935+
(1 row)
936+
937+
SELECT tableoid::regclass, * FROM gtest_child3 ORDER BY 1, 2, 3;
938+
tableoid | f1 | f2 | f3
939+
----------+----+----+----
940+
(0 rows)
941+
844942
UPDATE gtest_parent SET f1 = f1 + 60 WHERE f2 = 1;
845943
SELECT tableoid::regclass, * FROM gtest_parent ORDER BY 1, 2, 3;
846944
tableoid | f1 | f2 | f3
@@ -1184,6 +1282,18 @@ Inherits: gtest30
11841282

11851283
ALTER TABLE gtest30_1 ALTER COLUMN b DROP EXPRESSION; -- error
11861284
ERROR: cannot drop generation expression from inherited column
1285+
-- composite type dependencies
1286+
CREATE TABLE gtest31_1 (a int, b text GENERATED ALWAYS AS ('hello') STORED, c text);
1287+
CREATE TABLE gtest31_2 (x int, y gtest31_1);
1288+
ALTER TABLE gtest31_1 ALTER COLUMN b TYPE varchar; -- fails
1289+
ERROR: cannot alter table "gtest31_1" because column "gtest31_2.y" uses its row type
1290+
DROP TABLE gtest31_1, gtest31_2;
1291+
-- Check it for a partitioned table, too
1292+
CREATE TABLE gtest31_1 (a int, b text GENERATED ALWAYS AS ('hello') STORED, c text) PARTITION BY LIST (a);
1293+
CREATE TABLE gtest31_2 (x int, y gtest31_1);
1294+
ALTER TABLE gtest31_1 ALTER COLUMN b TYPE varchar; -- fails
1295+
ERROR: cannot alter table "gtest31_1" because column "gtest31_2.y" uses its row type
1296+
DROP TABLE gtest31_1, gtest31_2;
11871297
-- triggers
11881298
CREATE TABLE gtest26 (
11891299
a int PRIMARY KEY,
@@ -1294,7 +1404,7 @@ UPDATE gtest26 SET a = 1 WHERE a = 0;
12941404
NOTICE: OK
12951405
DROP TRIGGER gtest11 ON gtest26;
12961406
TRUNCATE gtest26;
1297-
-- check that modifications ofstoredgenerated columns in triggers do
1407+
-- check that modifications of generated columns in triggers do
12981408
-- not get propagated
12991409
CREATE FUNCTION gtest_trigger_func4() RETURNS trigger
13001410
LANGUAGE plpgsql
@@ -1305,20 +1415,28 @@ BEGIN
13051415
RETURN NEW;
13061416
END;
13071417
$$;
1308-
CREATE TRIGGER gtest12_01 BEFORE UPDATE ON gtest26
1418+
CREATE TRIGGER gtest12_01 BEFOREINSERT ORUPDATE ON gtest26
13091419
FOR EACH ROW
13101420
EXECUTE PROCEDURE gtest_trigger_func();
1311-
CREATE TRIGGER gtest12_02 BEFORE UPDATE ON gtest26
1421+
CREATE TRIGGER gtest12_02 BEFOREINSERT ORUPDATE ON gtest26
13121422
FOR EACH ROW
13131423
EXECUTE PROCEDURE gtest_trigger_func4();
1314-
CREATE TRIGGER gtest12_03 BEFORE UPDATE ON gtest26
1424+
CREATE TRIGGER gtest12_03 BEFOREINSERT ORUPDATE ON gtest26
13151425
FOR EACH ROW
13161426
EXECUTE PROCEDURE gtest_trigger_func();
13171427
INSERT INTO gtest26 (a) VALUES (1);
1318-
UPDATE gtest26 SET a = 11 WHERE a = 1;
1319-
INFO: gtest12_01: BEFORE: old = (1,2)
1428+
INFO: gtest12_01: BEFORE: new = (1,)
1429+
INFO: gtest12_03: BEFORE: new = (10,300)
1430+
SELECT * FROM gtest26 ORDER BY a;
1431+
a | b
1432+
----+----
1433+
10 | 20
1434+
(1 row)
1435+
1436+
UPDATE gtest26 SET a = 11 WHERE a = 10;
1437+
INFO: gtest12_01: BEFORE: old = (10,20)
13201438
INFO: gtest12_01: BEFORE: new = (11,)
1321-
INFO: gtest12_03: BEFORE: old = (1,2)
1439+
INFO: gtest12_03: BEFORE: old = (10,20)
13221440
INFO: gtest12_03: BEFORE: new = (10,)
13231441
SELECT * FROM gtest26 ORDER BY a;
13241442
a | b

‎src/test/regress/sql/generated_stored.sql

Lines changed: 50 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ INSERT INTO gtest1 VALUES (3, 33), (4, DEFAULT); -- error
5656
INSERT INTO gtest1VALUES (3, DEFAULT), (4, DEFAULT);-- ok
5757

5858
SELECT*FROM gtest1ORDER BY a;
59+
SELECT gtest1FROM gtest1ORDER BY a;-- whole-row reference
60+
SELECT a, (SELECTgtest1.b)FROM gtest1ORDER BY a;-- sublink
5961
DELETEFROM gtest1WHERE a>=3;
6062

6163
UPDATE gtest1SET b= DEFAULTWHERE a=1;
@@ -79,7 +81,7 @@ DROP TABLE gtestx;
7981

8082
-- test UPDATE/DELETE quals
8183
SELECT*FROM gtest1ORDER BY a;
82-
UPDATE gtest1SET a=3WHERE b=4;
84+
UPDATE gtest1SET a=3WHERE b=4 RETURNING old.*, new.*;
8385
SELECT*FROM gtest1ORDER BY a;
8486
DELETEFROM gtest1WHERE b=2;
8587
SELECT*FROM gtest1ORDER BY a;
@@ -95,10 +97,19 @@ CREATE TABLE gtestm (
9597
INSERT INTO gtestmVALUES (1,5,100);
9698
MERGE INTO gtestm t USING (VALUES (1,10), (2,20)) v(id, f1)ONt.id=v.id
9799
WHEN MATCHED THENUPDATESET f1=v.f1
98-
WHEN NOT MATCHED THEN INSERTVALUES (v.id,v.f1,200);
100+
WHEN NOT MATCHED THEN INSERTVALUES (v.id,v.f1,200)
101+
RETURNING merge_action(), old.*, new.*;
99102
SELECT*FROM gtestmORDER BY id;
100103
DROPTABLE gtestm;
101104

105+
CREATETABLEgtestm (
106+
aintPRIMARY KEY,
107+
bint GENERATED ALWAYSAS (a*2) STORED
108+
);
109+
INSERT INTO gtestm (a)SELECT gFROM generate_series(1,10) g;
110+
MERGE INTO gtestm t USING gtestmAS sON2*t.a=s.b WHEN MATCHED THENDELETE RETURNING*;
111+
DROPTABLE gtestm;
112+
102113
-- views
103114
CREATEVIEWgtest1vASSELECT*FROM gtest1;
104115
SELECT*FROM gtest1v;
@@ -140,6 +151,9 @@ CREATE TABLE gtestx (x int, b int DEFAULT 10) INHERITS (gtest1); -- error
140151
CREATETABLEgtestx (xint, bint GENERATED ALWAYSAS IDENTITY) INHERITS (gtest1);-- error
141152
CREATETABLEgtestx (xint, bint GENERATED ALWAYSAS (a*22) STORED) INHERITS (gtest1);-- ok, overrides parent
142153
\d+ gtestx
154+
INSERT INTO gtestx (a, x)VALUES (11,22);
155+
SELECT*FROM gtest1;
156+
SELECT*FROM gtestx;
143157

144158
CREATETABLEgtestxx_1 (aintNOT NULL, bint);
145159
ALTERTABLE gtestxx_1 INHERIT gtest1;-- error
@@ -274,13 +288,14 @@ REVOKE ALL ON FUNCTION gf1(int) FROM PUBLIC;
274288

275289
CREATETABLEgtest12 (aintPRIMARY KEY, bint, cint GENERATED ALWAYSAS (gf1(b)) STORED);
276290
INSERT INTO gtest12VALUES (1,10), (2,20);
277-
GRANTSELECT (a, c)ON gtest12 TO regress_user11;
291+
GRANTSELECT (a, c), INSERTON gtest12 TO regress_user11;
278292

279293
SET ROLE regress_user11;
280294
SELECT a, bFROM gtest11;-- not allowed
281295
SELECT a, cFROM gtest11;-- allowed
282296
SELECT gf1(10);-- not allowed
283-
SELECT a, cFROM gtest12;-- allowed
297+
INSERT INTO gtest12VALUES (3,30), (4,40);-- currently not allowed because of function permissions, should arguably be allowed
298+
SELECT a, cFROM gtest12;-- allowed (does not actually invoke the function)
284299
RESET ROLE;
285300

286301
DROPFUNCTION gf1(int);-- fail
@@ -307,6 +322,12 @@ INSERT INTO gtest20b (a) VALUES (30);
307322
ALTERTABLE gtest20b ADDCONSTRAINT chkCHECK (b<50) NOT VALID;
308323
ALTERTABLE gtest20b VALIDATECONSTRAINT chk;-- fails on existing row
309324

325+
-- check with whole-row reference
326+
CREATETABLEgtest20c (aint, bint GENERATED ALWAYSAS (a*2) STORED);
327+
ALTERTABLE gtest20c ADDCONSTRAINT whole_row_checkCHECK (gtest20cIS NOT NULL);
328+
INSERT INTO gtest20cVALUES (1);-- ok
329+
INSERT INTO gtest20cVALUES (NULL);-- fails
330+
310331
-- not-null constraints
311332
CREATETABLEgtest21a (aintPRIMARY KEY, bint GENERATED ALWAYSAS (nullif(a,0)) STOREDNOT NULL);
312333
INSERT INTO gtest21a (a)VALUES (1);-- ok
@@ -386,6 +407,10 @@ CREATE DOMAIN gtestdomain1 AS int CHECK (VALUE < 10);
386407
CREATETABLEgtest24 (aintPRIMARY KEY, b gtestdomain1 GENERATED ALWAYSAS (a*2) STORED);
387408
INSERT INTO gtest24 (a)VALUES (4);-- ok
388409
INSERT INTO gtest24 (a)VALUES (6);-- error
410+
CREATETYPEgtestdomain1rangeAS range (subtype= gtestdomain1);
411+
CREATETABLEgtest24r (aintPRIMARY KEY, b gtestdomain1range GENERATED ALWAYSAS (gtestdomain1range(a, a+5)) STORED);
412+
INSERT INTO gtest24r (a)VALUES (4);-- ok
413+
INSERT INTO gtest24r (a)VALUES (6);-- error
389414

390415
-- typed tables (currently not supported)
391416
CREATETYPEgtest_typeAS (f1integer, f2text, f3bigint);
@@ -431,6 +456,9 @@ INSERT INTO gtest_parent (f1, f2) VALUES ('2016-07-15', 1);
431456
INSERT INTO gtest_parent (f1, f2)VALUES ('2016-07-15',2);
432457
INSERT INTO gtest_parent (f1, f2)VALUES ('2016-08-15',3);
433458
SELECT tableoid::regclass,*FROM gtest_parentORDER BY1,2,3;
459+
SELECT tableoid::regclass,*FROM gtest_childORDER BY1,2,3;
460+
SELECT tableoid::regclass,*FROM gtest_child2ORDER BY1,2,3;
461+
SELECT tableoid::regclass,*FROM gtest_child3ORDER BY1,2,3;
434462
UPDATE gtest_parentSET f1= f1+60WHERE f2=1;
435463
SELECT tableoid::regclass,*FROM gtest_parentORDER BY1,2,3;
436464

@@ -545,6 +573,18 @@ ALTER TABLE ONLY gtest30 ALTER COLUMN b DROP EXPRESSION; -- error
545573
\d gtest30_1
546574
ALTERTABLE gtest30_1 ALTER COLUMN b DROP EXPRESSION;-- error
547575

576+
-- composite type dependencies
577+
CREATETABLEgtest31_1 (aint, btext GENERATED ALWAYSAS ('hello') STORED, ctext);
578+
CREATETABLEgtest31_2 (xint, y gtest31_1);
579+
ALTERTABLE gtest31_1 ALTER COLUMN b TYPEvarchar;-- fails
580+
DROPTABLE gtest31_1, gtest31_2;
581+
582+
-- Check it for a partitioned table, too
583+
CREATETABLEgtest31_1 (aint, btext GENERATED ALWAYSAS ('hello') STORED, ctext) PARTITION BY LIST (a);
584+
CREATETABLEgtest31_2 (xint, y gtest31_1);
585+
ALTERTABLE gtest31_1 ALTER COLUMN b TYPEvarchar;-- fails
586+
DROPTABLE gtest31_1, gtest31_2;
587+
548588
-- triggers
549589
CREATETABLEgtest26 (
550590
aintPRIMARY KEY,
@@ -630,7 +670,7 @@ UPDATE gtest26 SET a = 1 WHERE a = 0;
630670
DROPTRIGGER gtest11ON gtest26;
631671
TRUNCATE gtest26;
632672

633-
-- check that modifications ofstoredgenerated columns in triggers do
673+
-- check that modifications of generated columns in triggers do
634674
-- not get propagated
635675
CREATEFUNCTIONgtest_trigger_func4() RETURNS trigger
636676
LANGUAGE plpgsql
@@ -642,20 +682,21 @@ BEGIN
642682
END;
643683
$$;
644684

645-
CREATETRIGGERgtest12_01 BEFOREUPDATEON gtest26
685+
CREATETRIGGERgtest12_01 BEFOREINSERTORUPDATEON gtest26
646686
FOR EACH ROW
647687
EXECUTE PROCEDURE gtest_trigger_func();
648688

649-
CREATETRIGGERgtest12_02 BEFOREUPDATEON gtest26
689+
CREATETRIGGERgtest12_02 BEFOREINSERTORUPDATEON gtest26
650690
FOR EACH ROW
651691
EXECUTE PROCEDURE gtest_trigger_func4();
652692

653-
CREATETRIGGERgtest12_03 BEFOREUPDATEON gtest26
693+
CREATETRIGGERgtest12_03 BEFOREINSERTORUPDATEON gtest26
654694
FOR EACH ROW
655695
EXECUTE PROCEDURE gtest_trigger_func();
656696

657697
INSERT INTO gtest26 (a)VALUES (1);
658-
UPDATE gtest26SET a=11WHERE a=1;
698+
SELECT*FROM gtest26ORDER BY a;
699+
UPDATE gtest26SET a=11WHERE a=10;
659700
SELECT*FROM gtest26ORDER BY a;
660701

661702
-- LIKE INCLUDING GENERATED and dropped column handling

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp