# LogicTest: multiregion-9node-3region-3azs multiregion-9node-3region-3azs-vec-off multiregion-9node-3region-3azs-no-los

statement ok
SET enable_multiregion_placement_policy = true;

statement ok
CREATE DATABASE testdb PRIMARY REGION "ca-central-1" REGIONS "ap-southeast-2", "us-east-1"

statement ok
USE testdb

statement ok
CREATE TABLE test () LOCALITY GLOBAL

query TT
SHOW ZONE CONFIGURATION FOR TABLE test
----
TABLE test  ALTER TABLE test CONFIGURE ZONE USING
              range_min_bytes = 134217728,
              range_max_bytes = 536870912,
              gc.ttlseconds = 14400,
              global_reads = true,
              num_replicas = 5,
              num_voters = 3,
              constraints = '{+region=ap-southeast-2: 1, +region=ca-central-1: 1, +region=us-east-1: 1}',
              voter_constraints = '[+region=ca-central-1]',
              lease_preferences = '[[+region=ca-central-1]]'

# Alter to RESTRICTED and see that our non-voter constraints remain.
statement ok
ALTER DATABASE testdb PLACEMENT RESTRICTED

query TT
SHOW ZONE CONFIGURATION FOR TABLE test
----
TABLE test  ALTER TABLE test CONFIGURE ZONE USING
              range_min_bytes = 134217728,
              range_max_bytes = 536870912,
              gc.ttlseconds = 14400,
              global_reads = true,
              num_replicas = 5,
              num_voters = 3,
              constraints = '{+region=ap-southeast-2: 1, +region=ca-central-1: 1, +region=us-east-1: 1}',
              voter_constraints = '[+region=ca-central-1]',
              lease_preferences = '[[+region=ca-central-1]]'

# Make sure placement restricted doesn't invalidate zone configs.
statement ok
SELECT * FROM crdb_internal.validate_multi_region_zone_configs()

statement ok
ALTER DATABASE testdb DROP REGION "us-east-1"

query TT
SHOW ZONE CONFIGURATION FOR TABLE test
----
TABLE test  ALTER TABLE test CONFIGURE ZONE USING
              range_min_bytes = 134217728,
              range_max_bytes = 536870912,
              gc.ttlseconds = 14400,
              global_reads = true,
              num_replicas = 4,
              num_voters = 3,
              constraints = '{+region=ap-southeast-2: 1, +region=ca-central-1: 1}',
              voter_constraints = '[+region=ca-central-1]',
              lease_preferences = '[[+region=ca-central-1]]'

statement ok
ALTER DATABASE testdb ADD REGION "us-east-1"

query TT
SHOW ZONE CONFIGURATION FOR TABLE test
----
TABLE test  ALTER TABLE test CONFIGURE ZONE USING
              range_min_bytes = 134217728,
              range_max_bytes = 536870912,
              gc.ttlseconds = 14400,
              global_reads = true,
              num_replicas = 5,
              num_voters = 3,
              constraints = '{+region=ap-southeast-2: 1, +region=ca-central-1: 1, +region=us-east-1: 1}',
              voter_constraints = '[+region=ca-central-1]',
              lease_preferences = '[[+region=ca-central-1]]'

# Change primary region to ensure zone config is rebuilt on table changes.
statement ok
ALTER DATABASE testdb SET PRIMARY REGION "ap-southeast-2"

query TT
SHOW ZONE CONFIGURATION FOR TABLE test
----
TABLE test  ALTER TABLE test CONFIGURE ZONE USING
              range_min_bytes = 134217728,
              range_max_bytes = 536870912,
              gc.ttlseconds = 14400,
              global_reads = true,
              num_replicas = 5,
              num_voters = 3,
              constraints = '{+region=ap-southeast-2: 1, +region=ca-central-1: 1, +region=us-east-1: 1}',
              voter_constraints = '[+region=ap-southeast-2]',
              lease_preferences = '[[+region=ap-southeast-2]]'

# Alter to DEFAULT and see that our zone config is unchanged.
statement ok
ALTER DATABASE testdb PLACEMENT DEFAULT

query TT
SHOW ZONE CONFIGURATION FOR TABLE test
----
TABLE test  ALTER TABLE test CONFIGURE ZONE USING
              range_min_bytes = 134217728,
              range_max_bytes = 536870912,
              gc.ttlseconds = 14400,
              global_reads = true,
              num_replicas = 5,
              num_voters = 3,
              constraints = '{+region=ap-southeast-2: 1, +region=ca-central-1: 1, +region=us-east-1: 1}',
              voter_constraints = '[+region=ap-southeast-2]',
              lease_preferences = '[[+region=ap-southeast-2]]'

# Check that coming back from placement restricted results in a valid zone
# config.
statement ok
SELECT * FROM crdb_internal.validate_multi_region_zone_configs()
