@@ -73,8 +73,18 @@ scan t
73
73
build
74
74
SELECT * FROM t FOR UPDATE OF t2
75
75
----
76
- scan t
77
- └── columns: a:1(int!null) b:2(int)
76
+ error (42P01): relation "t2" in FOR UPDATE clause not found in FROM clause
77
+
78
+ build
79
+ SELECT 1 FROM t FOR UPDATE OF t
80
+ ----
81
+ project
82
+ ├── columns: "?column?":3(int!null)
83
+ ├── scan t
84
+ │ ├── columns: a:1(int!null) b:2(int)
85
+ │ └── locking: for-update
86
+ └── projections
87
+ └── const: 1 [type=int]
78
88
79
89
# ------------------------------------------------------------------------------
80
90
# Tests with table aliases.
@@ -90,8 +100,7 @@ scan t2
90
100
build
91
101
SELECT * FROM t AS t2 FOR UPDATE OF t
92
102
----
93
- scan t2
94
- └── columns: a:1(int!null) b:2(int)
103
+ error (42P01): relation "t" in FOR UPDATE clause not found in FROM clause
95
104
96
105
build
97
106
SELECT * FROM t AS t2 FOR UPDATE OF t2
@@ -122,8 +131,7 @@ scan t
122
131
build
123
132
SELECT * FROM [53 AS t] FOR UPDATE OF t2
124
133
----
125
- scan t
126
- └── columns: a:1(int!null) b:2(int)
134
+ error (42P01): relation "t2" in FOR UPDATE clause not found in FROM clause
127
135
128
136
# ------------------------------------------------------------------------------
129
137
# Tests with views.
@@ -150,26 +158,17 @@ project
150
158
build
151
159
SELECT * FROM v FOR UPDATE OF v2
152
160
----
153
- project
154
- ├── columns: a:1(int!null)
155
- └── scan t2
156
- └── columns: a:1(int!null) b:2(int)
161
+ error (42P01): relation "v2" in FOR UPDATE clause not found in FROM clause
157
162
158
163
build
159
164
SELECT * FROM v FOR UPDATE OF t
160
165
----
161
- project
162
- ├── columns: a:1(int!null)
163
- └── scan t2
164
- └── columns: a:1(int!null) b:2(int)
166
+ error (42P01): relation "t" in FOR UPDATE clause not found in FROM clause
165
167
166
168
build
167
169
SELECT * FROM v FOR UPDATE OF t2
168
170
----
169
- project
170
- ├── columns: a:1(int!null)
171
- └── scan t2
172
- └── columns: a:1(int!null) b:2(int)
171
+ error (42P01): relation "t2" in FOR UPDATE clause not found in FROM clause
173
172
174
173
# ------------------------------------------------------------------------------
175
174
# Tests with aliased views.
@@ -187,10 +186,7 @@ project
187
186
build
188
187
SELECT * FROM v AS v2 FOR UPDATE OF v
189
188
----
190
- project
191
- ├── columns: a:1(int!null)
192
- └── scan t2
193
- └── columns: a:1(int!null) b:2(int)
189
+ error (42P01): relation "v" in FOR UPDATE clause not found in FROM clause
194
190
195
191
build
196
192
SELECT * FROM v AS v2 FOR UPDATE OF v2
@@ -245,15 +241,10 @@ project
245
241
├── columns: a:1(int!null) b:2(int)
246
242
└── locking: for-no-key-update
247
243
248
- # TODO(nvanbenschoten): To match Postgres perfectly, this would throw an error.
249
- # It's not clear that it's worth going out of our way to mirror that behavior.
250
244
build
251
245
SELECT * FROM (SELECT a FROM t) FOR UPDATE OF t
252
246
----
253
- project
254
- ├── columns: a:1(int!null)
255
- └── scan t
256
- └── columns: a:1(int!null) b:2(int)
247
+ error (42P01): relation "t" in FOR UPDATE clause not found in FROM clause
257
248
258
249
build
259
250
SELECT * FROM (SELECT a FROM t FOR UPDATE OF t)
@@ -285,10 +276,7 @@ project
285
276
build
286
277
SELECT * FROM (SELECT a FROM t) AS r FOR UPDATE OF t
287
278
----
288
- project
289
- ├── columns: a:1(int!null)
290
- └── scan t
291
- └── columns: a:1(int!null) b:2(int)
279
+ error (42P01): relation "t" in FOR UPDATE clause not found in FROM clause
292
280
293
281
build
294
282
SELECT * FROM (SELECT a FROM t FOR UPDATE OF t) AS r
@@ -335,18 +323,7 @@ project
335
323
build
336
324
SELECT (SELECT a FROM t) FOR UPDATE OF t
337
325
----
338
- project
339
- ├── columns: a:3(int)
340
- ├── values
341
- │ └── tuple [type=tuple]
342
- └── projections
343
- └── subquery [type=int]
344
- └── max1-row
345
- ├── columns: t.a:1(int!null)
346
- └── project
347
- ├── columns: t.a:1(int!null)
348
- └── scan t
349
- └── columns: t.a:1(int!null) b:2(int)
326
+ error (42P01): relation "t" in FOR UPDATE clause not found in FROM clause
350
327
351
328
build
352
329
SELECT (SELECT a FROM t FOR UPDATE OF t)
@@ -401,18 +378,7 @@ project
401
378
build
402
379
SELECT (SELECT a FROM t) AS r FOR UPDATE OF t
403
380
----
404
- project
405
- ├── columns: r:3(int)
406
- ├── values
407
- │ └── tuple [type=tuple]
408
- └── projections
409
- └── subquery [type=int]
410
- └── max1-row
411
- ├── columns: a:1(int!null)
412
- └── project
413
- ├── columns: a:1(int!null)
414
- └── scan t
415
- └── columns: a:1(int!null) b:2(int)
381
+ error (42P01): relation "t" in FOR UPDATE clause not found in FROM clause
416
382
417
383
build
418
384
SELECT (SELECT a FROM t FOR UPDATE OF t) AS r
@@ -656,18 +622,7 @@ project
656
622
build
657
623
SELECT * FROM t JOIN u USING (a) FOR UPDATE OF t2 FOR SHARE OF u2
658
624
----
659
- project
660
- ├── columns: a:1(int!null) b:2(int) c:4(int)
661
- └── inner-join (hash)
662
- ├── columns: t.a:1(int!null) b:2(int) u.a:3(int!null) c:4(int)
663
- ├── scan t
664
- │ └── columns: t.a:1(int!null) b:2(int)
665
- ├── scan u
666
- │ └── columns: u.a:3(int!null) c:4(int)
667
- └── filters
668
- └── eq [type=bool]
669
- ├── variable: t.a [type=int]
670
- └── variable: u.a [type=int]
625
+ error (42P01): relation "t2" in FOR UPDATE clause not found in FROM clause
671
626
672
627
build
673
628
SELECT * FROM t AS t2 JOIN u AS u2 USING (a) FOR UPDATE OF t2 FOR SHARE OF u2
@@ -766,50 +721,17 @@ project
766
721
build
767
722
SELECT * FROM t AS t2 JOIN u AS u2 USING (a) FOR UPDATE OF t
768
723
----
769
- project
770
- ├── columns: a:1(int!null) b:2(int) c:4(int)
771
- └── inner-join (hash)
772
- ├── columns: t2.a:1(int!null) b:2(int) u2.a:3(int!null) c:4(int)
773
- ├── scan t2
774
- │ └── columns: t2.a:1(int!null) b:2(int)
775
- ├── scan u2
776
- │ └── columns: u2.a:3(int!null) c:4(int)
777
- └── filters
778
- └── eq [type=bool]
779
- ├── variable: t2.a [type=int]
780
- └── variable: u2.a [type=int]
724
+ error (42P01): relation "t" in FOR UPDATE clause not found in FROM clause
781
725
782
726
build
783
727
SELECT * FROM t AS t2 JOIN u AS u2 USING (a) FOR UPDATE OF u
784
728
----
785
- project
786
- ├── columns: a:1(int!null) b:2(int) c:4(int)
787
- └── inner-join (hash)
788
- ├── columns: t2.a:1(int!null) b:2(int) u2.a:3(int!null) c:4(int)
789
- ├── scan t2
790
- │ └── columns: t2.a:1(int!null) b:2(int)
791
- ├── scan u2
792
- │ └── columns: u2.a:3(int!null) c:4(int)
793
- └── filters
794
- └── eq [type=bool]
795
- ├── variable: t2.a [type=int]
796
- └── variable: u2.a [type=int]
729
+ error (42P01): relation "u" in FOR UPDATE clause not found in FROM clause
797
730
798
731
build
799
732
SELECT * FROM t AS t2 JOIN u AS u2 USING (a) FOR UPDATE OF t, u
800
733
----
801
- project
802
- ├── columns: a:1(int!null) b:2(int) c:4(int)
803
- └── inner-join (hash)
804
- ├── columns: t2.a:1(int!null) b:2(int) u2.a:3(int!null) c:4(int)
805
- ├── scan t2
806
- │ └── columns: t2.a:1(int!null) b:2(int)
807
- ├── scan u2
808
- │ └── columns: u2.a:3(int!null) c:4(int)
809
- └── filters
810
- └── eq [type=bool]
811
- ├── variable: t2.a [type=int]
812
- └── variable: u2.a [type=int]
734
+ error (42P01): relation "t" in FOR UPDATE clause not found in FROM clause
813
735
814
736
build
815
737
SELECT * FROM t AS t2 JOIN u AS u2 USING (a) FOR UPDATE OF t2
@@ -889,50 +811,17 @@ project
889
811
build
890
812
SELECT * FROM (t JOIN u AS u2 USING (a)) j FOR UPDATE OF t
891
813
----
892
- project
893
- ├── columns: a:1(int!null) b:2(int) c:4(int)
894
- └── inner-join (hash)
895
- ├── columns: t.a:1(int!null) b:2(int) u2.a:3(int!null) c:4(int)
896
- ├── scan t
897
- │ └── columns: t.a:1(int!null) b:2(int)
898
- ├── scan u2
899
- │ └── columns: u2.a:3(int!null) c:4(int)
900
- └── filters
901
- └── eq [type=bool]
902
- ├── variable: t.a [type=int]
903
- └── variable: u2.a [type=int]
814
+ error (42P01): relation "t" in FOR UPDATE clause not found in FROM clause
904
815
905
816
build
906
817
SELECT * FROM (t JOIN u AS u2 USING (a)) j FOR UPDATE OF u
907
818
----
908
- project
909
- ├── columns: a:1(int!null) b:2(int) c:4(int)
910
- └── inner-join (hash)
911
- ├── columns: t.a:1(int!null) b:2(int) u2.a:3(int!null) c:4(int)
912
- ├── scan t
913
- │ └── columns: t.a:1(int!null) b:2(int)
914
- ├── scan u2
915
- │ └── columns: u2.a:3(int!null) c:4(int)
916
- └── filters
917
- └── eq [type=bool]
918
- ├── variable: t.a [type=int]
919
- └── variable: u2.a [type=int]
819
+ error (42P01): relation "u" in FOR UPDATE clause not found in FROM clause
920
820
921
821
build
922
822
SELECT * FROM (t JOIN u AS u2 USING (a)) j FOR UPDATE OF u2
923
823
----
924
- project
925
- ├── columns: a:1(int!null) b:2(int) c:4(int)
926
- └── inner-join (hash)
927
- ├── columns: t.a:1(int!null) b:2(int) u2.a:3(int!null) c:4(int)
928
- ├── scan t
929
- │ └── columns: t.a:1(int!null) b:2(int)
930
- ├── scan u2
931
- │ └── columns: u2.a:3(int!null) c:4(int)
932
- └── filters
933
- └── eq [type=bool]
934
- ├── variable: t.a [type=int]
935
- └── variable: u2.a [type=int]
824
+ error (42P01): relation "u2" in FOR UPDATE clause not found in FROM clause
936
825
937
826
build
938
827
SELECT * FROM (t JOIN u AS u2 USING (a)) j FOR UPDATE OF j
@@ -1010,13 +899,7 @@ inner-join-apply
1010
899
build
1011
900
SELECT * FROM t, LATERAL (SELECT * FROM u) sub FOR UPDATE OF u
1012
901
----
1013
- inner-join-apply
1014
- ├── columns: a:1(int!null) b:2(int) a:3(int!null) c:4(int)
1015
- ├── scan t
1016
- │ └── columns: t.a:1(int!null) b:2(int)
1017
- ├── scan sub
1018
- │ └── columns: sub.a:3(int!null) c:4(int)
1019
- └── filters (true)
902
+ error (42P01): relation "u" in FOR UPDATE clause not found in FROM clause
1020
903
1021
904
build
1022
905
SELECT * FROM t, LATERAL (SELECT * FROM u) sub FOR UPDATE OF sub
0 commit comments