File tree Expand file tree Collapse file tree 2 files changed +30
-3
lines changed
ccl/logictestccl/testdata/logic_test Expand file tree Collapse file tree 2 files changed +30
-3
lines changed Original file line number Diff line number Diff line change @@ -1690,4 +1690,29 @@ SELECT * FROM chgme ORDER BY C1;
1690
1690
statement ok
1691
1691
DROP TABLE chgme;
1692
1692
1693
+ # Regression test for issue #151216
1694
+ # Tests that CREATE VIEW with references to crdb_region column in expressions
1695
+ # (but not directly returned) should not trigger validation assertion errors.
1696
+ subtest issue_151216_view_crdb_region_reference
1697
+
1698
+ statement ok
1699
+ CREATE DATABASE bank_151216 PRIMARY REGION "us-east-1" REGIONS "us-east-1", "ca-central-1", "ap-southeast-2" SURVIVE REGION FAILURE;
1700
+
1701
+ statement ok
1702
+ USE bank_151216;
1703
+
1704
+ statement ok
1705
+ CREATE TABLE t1 (c1 INT) LOCALITY REGIONAL BY ROW;
1706
+
1707
+ statement ok
1708
+ CREATE MATERIALIZED VIEW mv1 AS SELECT c1, CASE WHEN crdb_region = 'us-east-1' THEN 'east' ELSE 'other' END AS region_type FROM t1;
1709
+
1710
+ statement ok
1711
+ CREATE VIEW v2 AS SELECT c1, crdb_region = 'us-east-1' AS is_us_east1 FROM t1;
1712
+
1713
+ statement ok
1714
+ SET sql_safe_updates = false;
1715
+ DROP DATABASE bank_151216;
1716
+ SET sql_safe_updates = true
1717
+
1693
1718
subtest end
Original file line number Diff line number Diff line change @@ -121,7 +121,8 @@ func ValidateTableLocalityConfig(
121
121
switch lc := lc .Locality .(type ) {
122
122
case * catpb.LocalityConfig_Global_ :
123
123
if regionEnumIDReferenced {
124
- if ! columnTypesTypeIDs .Contains (regionsEnumID ) {
124
+ // Omit views since they may reference the multi-region enum type of the base table.
125
+ if ! columnTypesTypeIDs .Contains (regionsEnumID ) && ! desc .IsView () {
125
126
return errors .AssertionFailedf (
126
127
"expected no region Enum ID to be referenced by a GLOBAL TABLE: %q" +
127
128
" but found: %d" ,
@@ -233,8 +234,9 @@ func ValidateTableLocalityConfig(
233
234
if regionEnumIDReferenced {
234
235
// It may be the case that the multi-region type descriptor is used
235
236
// as the type of the table column. Validations should only fail if
236
- // that is not the case.
237
- if ! columnTypesTypeIDs .Contains (regionsEnumID ) {
237
+ // that is not the case. We omit views since they may reference the
238
+ // multi-region enum type of the base table.
239
+ if ! columnTypesTypeIDs .Contains (regionsEnumID ) && ! desc .IsView () {
238
240
return errors .AssertionFailedf (
239
241
"expected no region Enum ID to be referenced by a REGIONAL BY TABLE: %q homed in the " +
240
242
"primary region, but found: %d" ,
You can’t perform that action at this time.
0 commit comments