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

# Tests in this file assume no multi-region tenant setup as tenants have no
# access to nodelocal.

query TTTTT rowsort
SHOW REGIONS
----
ap-southeast-2  {ap-az1,ap-az2,ap-az3}  {}  {}  {}
ca-central-1    {ca-az1,ca-az2,ca-az3}  {}  {}  {}
us-east-1       {us-az1,us-az2,us-az3}  {}  {}  {}

statement ok
CREATE DATABASE "mr-backup-1" primary region "ca-central-1" regions "ap-southeast-2", "us-east-1"

statement ok
use "mr-backup-1";
CREATE TABLE global_table (pk INT PRIMARY KEY, i int, FAMILY (pk, i)) LOCALITY GLOBAL

statement ok
SET experimental_enable_implicit_column_partitioning = true

statement ok
CREATE TABLE regional_by_row_table (
  pk int PRIMARY KEY,
  pk2 int NOT NULL,
  a int NOT NULL,
  b int NOT NULL,
  j JSON,
  INDEX (a),
  UNIQUE (b),
  INVERTED INDEX (j),
  FAMILY (pk, pk2, a, b)
) LOCALITY REGIONAL BY ROW

statement ok
CREATE TABLE regional_by_table_in_primary_region (
  pk INT PRIMARY KEY,
  i INT,
  FAMILY (pk, i)
) LOCALITY REGIONAL BY TABLE IN PRIMARY REGION

statement ok
CREATE TABLE regional_by_table_in_ca_central_1 (
  pk INT PRIMARY KEY,
  i INT,
  FAMILY (pk, i)
) LOCALITY REGIONAL BY TABLE IN "ca-central-1"

query TTT
SELECT partition_name, index_name, zone_config FROM [SHOW PARTITIONS FROM TABLE global_table]
ORDER BY partition_name, index_name
----

query TT
SHOW ZONE CONFIGURATION FROM TABLE global_table
----
TABLE global_table  ALTER TABLE global_table 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]]'

query TTT
SELECT partition_name, index_name, zone_config FROM [SHOW PARTITIONS FROM TABLE regional_by_row_table]
ORDER BY partition_name, index_name
----
ap-southeast-2  regional_by_row_table@regional_by_row_table_a_idx  num_voters = 3,
voter_constraints = '[+region=ap-southeast-2]',
lease_preferences = '[[+region=ap-southeast-2]]'
ap-southeast-2                                    regional_by_row_table@regional_by_row_table_b_key  num_voters = 3,
voter_constraints = '[+region=ap-southeast-2]',
lease_preferences = '[[+region=ap-southeast-2]]'
ap-southeast-2                                    regional_by_row_table@regional_by_row_table_j_idx  num_voters = 3,
voter_constraints = '[+region=ap-southeast-2]',
lease_preferences = '[[+region=ap-southeast-2]]'
ap-southeast-2                                    regional_by_row_table@regional_by_row_table_pkey  num_voters = 3,
voter_constraints = '[+region=ap-southeast-2]',
lease_preferences = '[[+region=ap-southeast-2]]'
ca-central-1                                      regional_by_row_table@regional_by_row_table_a_idx  num_voters = 3,
voter_constraints = '[+region=ca-central-1]',
lease_preferences = '[[+region=ca-central-1]]'
ca-central-1                                    regional_by_row_table@regional_by_row_table_b_key  num_voters = 3,
voter_constraints = '[+region=ca-central-1]',
lease_preferences = '[[+region=ca-central-1]]'
ca-central-1                                    regional_by_row_table@regional_by_row_table_j_idx  num_voters = 3,
voter_constraints = '[+region=ca-central-1]',
lease_preferences = '[[+region=ca-central-1]]'
ca-central-1                                    regional_by_row_table@regional_by_row_table_pkey  num_voters = 3,
voter_constraints = '[+region=ca-central-1]',
lease_preferences = '[[+region=ca-central-1]]'
us-east-1                                       regional_by_row_table@regional_by_row_table_a_idx  num_voters = 3,
voter_constraints = '[+region=us-east-1]',
lease_preferences = '[[+region=us-east-1]]'
us-east-1                                    regional_by_row_table@regional_by_row_table_b_key  num_voters = 3,
voter_constraints = '[+region=us-east-1]',
lease_preferences = '[[+region=us-east-1]]'
us-east-1                                    regional_by_row_table@regional_by_row_table_j_idx  num_voters = 3,
voter_constraints = '[+region=us-east-1]',
lease_preferences = '[[+region=us-east-1]]'
us-east-1                                    regional_by_row_table@regional_by_row_table_pkey  num_voters = 3,
voter_constraints = '[+region=us-east-1]',
lease_preferences = '[[+region=us-east-1]]'

query TT
SHOW ZONE CONFIGURATION FROM TABLE regional_by_row_table
----
DATABASE "mr-backup-1"  ALTER DATABASE "mr-backup-1" CONFIGURE ZONE USING
                          range_min_bytes = 134217728,
                          range_max_bytes = 536870912,
                          gc.ttlseconds = 14400,
                          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]]'

query TT
SHOW CREATE TABLE regional_by_row_table
----
regional_by_row_table  CREATE TABLE public.regional_by_row_table (
                         pk INT8 NOT NULL,
                         pk2 INT8 NOT NULL,
                         a INT8 NOT NULL,
                         b INT8 NOT NULL,
                         j JSONB NULL,
                         crdb_region public.crdb_internal_region NOT VISIBLE NOT NULL DEFAULT default_to_database_primary_region(gateway_region())::public.crdb_internal_region,
                         CONSTRAINT regional_by_row_table_pkey PRIMARY KEY (pk ASC),
                         INDEX regional_by_row_table_a_idx (a ASC),
                         UNIQUE INDEX regional_by_row_table_b_key (b ASC),
                         INVERTED INDEX regional_by_row_table_j_idx (j),
                         FAMILY fam_0_pk_pk2_a_b_j_crdb_region (pk, pk2, a, b, j, crdb_region)
                       ) LOCALITY REGIONAL BY ROW

query TTT
SELECT partition_name, index_name, zone_config FROM [SHOW PARTITIONS FROM TABLE regional_by_table_in_primary_region]
ORDER BY partition_name, index_name
----

query TT
SHOW ZONE CONFIGURATION FROM TABLE regional_by_table_in_primary_region
----
DATABASE "mr-backup-1"  ALTER DATABASE "mr-backup-1" CONFIGURE ZONE USING
                          range_min_bytes = 134217728,
                          range_max_bytes = 536870912,
                          gc.ttlseconds = 14400,
                          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]]'

query TTT
SELECT partition_name, index_name, zone_config FROM [SHOW PARTITIONS FROM TABLE regional_by_table_in_ca_central_1]
ORDER BY partition_name, index_name
----

query TT
SHOW ZONE CONFIGURATION FROM TABLE regional_by_table_in_ca_central_1
----
TABLE regional_by_table_in_ca_central_1  ALTER TABLE regional_by_table_in_ca_central_1 CONFIGURE ZONE USING
                                           range_min_bytes = 134217728,
                                           range_max_bytes = 536870912,
                                           gc.ttlseconds = 14400,
                                           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]]'

statement ok
CREATE DATABASE "mr-backup-2" primary region "ap-southeast-2" regions "ca-central-1", "us-east-1"

statement ok
use "mr-backup-2";
CREATE TABLE global_table (pk INT PRIMARY KEY, i int, FAMILY (pk, i)) LOCALITY GLOBAL

statement ok
CREATE TABLE regional_by_row_table (
  pk int PRIMARY KEY,
  pk2 int NOT NULL,
  a int NOT NULL,
  b int NOT NULL,
  j JSON,
  INDEX (a),
  UNIQUE (b),
  INVERTED INDEX (j),
  FAMILY (pk, pk2, a, b)
) LOCALITY REGIONAL BY ROW

statement ok
INSERT INTO regional_by_row_table VALUES (1, 1, 1, 1, NULL), (2, 1, 1, 2, NULL)

statement ok
CREATE TABLE regional_by_table_in_primary_region (
  pk INT PRIMARY KEY,
  i INT,
  FAMILY (pk, i)
) LOCALITY REGIONAL BY TABLE IN PRIMARY REGION

statement ok
CREATE TABLE regional_by_table_in_ca_central_1 (
  pk INT PRIMARY KEY,
  i INT,
  FAMILY (pk, i)
) LOCALITY REGIONAL BY TABLE IN "ca-central-1"

statement ok
CREATE TABLE regional_by_table_in_ap_southeast_2 (
  pk INT PRIMARY KEY,
  i INT,
  FAMILY (pk, i)
) LOCALITY REGIONAL BY TABLE IN "ap-southeast-2"

query TTT
SELECT partition_name, index_name, zone_config FROM [SHOW PARTITIONS FROM TABLE global_table]
ORDER BY partition_name, index_name
----

query TT
SHOW ZONE CONFIGURATION FROM TABLE global_table
----
TABLE global_table  ALTER TABLE global_table 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]]'

query TTT
SELECT partition_name, index_name, zone_config FROM [SHOW PARTITIONS FROM TABLE regional_by_row_table]
ORDER BY partition_name, index_name
----
ap-southeast-2  regional_by_row_table@regional_by_row_table_a_idx  num_voters = 3,
voter_constraints = '[+region=ap-southeast-2]',
lease_preferences = '[[+region=ap-southeast-2]]'
ap-southeast-2                                    regional_by_row_table@regional_by_row_table_b_key  num_voters = 3,
voter_constraints = '[+region=ap-southeast-2]',
lease_preferences = '[[+region=ap-southeast-2]]'
ap-southeast-2                                    regional_by_row_table@regional_by_row_table_j_idx  num_voters = 3,
voter_constraints = '[+region=ap-southeast-2]',
lease_preferences = '[[+region=ap-southeast-2]]'
ap-southeast-2                                    regional_by_row_table@regional_by_row_table_pkey  num_voters = 3,
voter_constraints = '[+region=ap-southeast-2]',
lease_preferences = '[[+region=ap-southeast-2]]'
ca-central-1                                      regional_by_row_table@regional_by_row_table_a_idx  num_voters = 3,
voter_constraints = '[+region=ca-central-1]',
lease_preferences = '[[+region=ca-central-1]]'
ca-central-1                                    regional_by_row_table@regional_by_row_table_b_key  num_voters = 3,
voter_constraints = '[+region=ca-central-1]',
lease_preferences = '[[+region=ca-central-1]]'
ca-central-1                                    regional_by_row_table@regional_by_row_table_j_idx  num_voters = 3,
voter_constraints = '[+region=ca-central-1]',
lease_preferences = '[[+region=ca-central-1]]'
ca-central-1                                    regional_by_row_table@regional_by_row_table_pkey  num_voters = 3,
voter_constraints = '[+region=ca-central-1]',
lease_preferences = '[[+region=ca-central-1]]'
us-east-1                                       regional_by_row_table@regional_by_row_table_a_idx  num_voters = 3,
voter_constraints = '[+region=us-east-1]',
lease_preferences = '[[+region=us-east-1]]'
us-east-1                                    regional_by_row_table@regional_by_row_table_b_key  num_voters = 3,
voter_constraints = '[+region=us-east-1]',
lease_preferences = '[[+region=us-east-1]]'
us-east-1                                    regional_by_row_table@regional_by_row_table_j_idx  num_voters = 3,
voter_constraints = '[+region=us-east-1]',
lease_preferences = '[[+region=us-east-1]]'
us-east-1                                    regional_by_row_table@regional_by_row_table_pkey  num_voters = 3,
voter_constraints = '[+region=us-east-1]',
lease_preferences = '[[+region=us-east-1]]'

query TT
SHOW ZONE CONFIGURATION FROM TABLE regional_by_row_table
----
DATABASE "mr-backup-2"  ALTER DATABASE "mr-backup-2" CONFIGURE ZONE USING
                          range_min_bytes = 134217728,
                          range_max_bytes = 536870912,
                          gc.ttlseconds = 14400,
                          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]]'

query TT
SHOW CREATE TABLE regional_by_row_table
----
regional_by_row_table  CREATE TABLE public.regional_by_row_table (
                         pk INT8 NOT NULL,
                         pk2 INT8 NOT NULL,
                         a INT8 NOT NULL,
                         b INT8 NOT NULL,
                         j JSONB NULL,
                         crdb_region public.crdb_internal_region NOT VISIBLE NOT NULL DEFAULT default_to_database_primary_region(gateway_region())::public.crdb_internal_region,
                         CONSTRAINT regional_by_row_table_pkey PRIMARY KEY (pk ASC),
                         INDEX regional_by_row_table_a_idx (a ASC),
                         UNIQUE INDEX regional_by_row_table_b_key (b ASC),
                         INVERTED INDEX regional_by_row_table_j_idx (j),
                         FAMILY fam_0_pk_pk2_a_b_j_crdb_region (pk, pk2, a, b, j, crdb_region)
                       ) LOCALITY REGIONAL BY ROW

query TTT
SELECT partition_name, index_name, zone_config FROM [SHOW PARTITIONS FROM TABLE regional_by_table_in_primary_region]
ORDER BY partition_name, index_name
----

query TT
SHOW ZONE CONFIGURATION FROM TABLE regional_by_table_in_primary_region
----
DATABASE "mr-backup-2"  ALTER DATABASE "mr-backup-2" CONFIGURE ZONE USING
                          range_min_bytes = 134217728,
                          range_max_bytes = 536870912,
                          gc.ttlseconds = 14400,
                          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]]'

query TTT
SELECT partition_name, index_name, zone_config FROM [SHOW PARTITIONS FROM TABLE regional_by_table_in_ca_central_1]
ORDER BY partition_name, index_name
----

query TT
SHOW ZONE CONFIGURATION FROM TABLE regional_by_table_in_ca_central_1
----
TABLE regional_by_table_in_ca_central_1  ALTER TABLE regional_by_table_in_ca_central_1 CONFIGURE ZONE USING
                                           range_min_bytes = 134217728,
                                           range_max_bytes = 536870912,
                                           gc.ttlseconds = 14400,
                                           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]]'

query TT
SHOW ZONE CONFIGURATION FOR DATABASE "mr-backup-1"
----
DATABASE "mr-backup-1"  ALTER DATABASE "mr-backup-1" CONFIGURE ZONE USING
                          range_min_bytes = 134217728,
                          range_max_bytes = 536870912,
                          gc.ttlseconds = 14400,
                          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]]'


query TT
SHOW ZONE CONFIGURATION FOR DATABASE "mr-backup-2"
----
DATABASE "mr-backup-2"  ALTER DATABASE "mr-backup-2" CONFIGURE ZONE USING
                          range_min_bytes = 134217728,
                          range_max_bytes = 536870912,
                          gc.ttlseconds = 14400,
                          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]]'

statement ok
ALTER DATABASE "mr-backup-1" CONFIGURE ZONE USING gc.ttlseconds = 1;
ALTER DATABASE "mr-backup-2" CONFIGURE ZONE USING gc.ttlseconds = 1

statement ok
BACKUP DATABASE "mr-backup-1" INTO 'nodelocal://1/mr-backup-1/';

statement ok
BACKUP DATABASE "mr-backup-2" INTO 'nodelocal://1/mr-backup-2/';

statement ok
BACKUP DATABASE "mr-backup-1", "mr-backup-2" INTO 'nodelocal://1/mr-backup-combined/'

query T rowsort
select database_name from [show databases]
----
defaultdb
mr-backup-1
mr-backup-2
postgres
system
test

statement ok
DROP DATABASE "mr-backup-1";

statement ok
DROP DATABASE "mr-backup-2"

query T rowsort
select database_name from [show databases]
----
defaultdb
postgres
system
test

statement ok
RESTORE DATABASE "mr-backup-1" FROM LATEST IN 'nodelocal://1/mr-backup-1/'

query T rowsort
select database_name from [show databases]
----
defaultdb
mr-backup-1
postgres
system
test

query TT
SHOW ZONE CONFIGURATION FOR DATABASE "mr-backup-1"
----
DATABASE "mr-backup-1"  ALTER DATABASE "mr-backup-1" CONFIGURE ZONE USING
                          range_min_bytes = 134217728,
                          range_max_bytes = 536870912,
                          gc.ttlseconds = 14400,
                          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]]'

statement ok
use "mr-backup-1"

query TTT
SELECT partition_name, index_name, zone_config FROM [SHOW PARTITIONS FROM TABLE global_table]
ORDER BY partition_name, index_name
----

query TT
SHOW ZONE CONFIGURATION FROM TABLE global_table
----
TABLE global_table  ALTER TABLE global_table 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]]'

query TTT
SELECT partition_name, index_name, zone_config FROM [SHOW PARTITIONS FROM TABLE regional_by_row_table]
ORDER BY partition_name, index_name
----
ap-southeast-2  regional_by_row_table@regional_by_row_table_a_idx  num_voters = 3,
voter_constraints = '[+region=ap-southeast-2]',
lease_preferences = '[[+region=ap-southeast-2]]'
ap-southeast-2                                    regional_by_row_table@regional_by_row_table_b_key  num_voters = 3,
voter_constraints = '[+region=ap-southeast-2]',
lease_preferences = '[[+region=ap-southeast-2]]'
ap-southeast-2                                    regional_by_row_table@regional_by_row_table_j_idx  num_voters = 3,
voter_constraints = '[+region=ap-southeast-2]',
lease_preferences = '[[+region=ap-southeast-2]]'
ap-southeast-2                                    regional_by_row_table@regional_by_row_table_pkey  num_voters = 3,
voter_constraints = '[+region=ap-southeast-2]',
lease_preferences = '[[+region=ap-southeast-2]]'
ca-central-1                                      regional_by_row_table@regional_by_row_table_a_idx  num_voters = 3,
voter_constraints = '[+region=ca-central-1]',
lease_preferences = '[[+region=ca-central-1]]'
ca-central-1                                    regional_by_row_table@regional_by_row_table_b_key  num_voters = 3,
voter_constraints = '[+region=ca-central-1]',
lease_preferences = '[[+region=ca-central-1]]'
ca-central-1                                    regional_by_row_table@regional_by_row_table_j_idx  num_voters = 3,
voter_constraints = '[+region=ca-central-1]',
lease_preferences = '[[+region=ca-central-1]]'
ca-central-1                                    regional_by_row_table@regional_by_row_table_pkey  num_voters = 3,
voter_constraints = '[+region=ca-central-1]',
lease_preferences = '[[+region=ca-central-1]]'
us-east-1                                       regional_by_row_table@regional_by_row_table_a_idx  num_voters = 3,
voter_constraints = '[+region=us-east-1]',
lease_preferences = '[[+region=us-east-1]]'
us-east-1                                    regional_by_row_table@regional_by_row_table_b_key  num_voters = 3,
voter_constraints = '[+region=us-east-1]',
lease_preferences = '[[+region=us-east-1]]'
us-east-1                                    regional_by_row_table@regional_by_row_table_j_idx  num_voters = 3,
voter_constraints = '[+region=us-east-1]',
lease_preferences = '[[+region=us-east-1]]'
us-east-1                                    regional_by_row_table@regional_by_row_table_pkey  num_voters = 3,
voter_constraints = '[+region=us-east-1]',
lease_preferences = '[[+region=us-east-1]]'

query TT
SHOW ZONE CONFIGURATION FROM TABLE regional_by_row_table
----
DATABASE "mr-backup-1"  ALTER DATABASE "mr-backup-1" CONFIGURE ZONE USING
                          range_min_bytes = 134217728,
                          range_max_bytes = 536870912,
                          gc.ttlseconds = 14400,
                          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]]'

query TT
SHOW CREATE TABLE regional_by_row_table
----
regional_by_row_table  CREATE TABLE public.regional_by_row_table (
                         pk INT8 NOT NULL,
                         pk2 INT8 NOT NULL,
                         a INT8 NOT NULL,
                         b INT8 NOT NULL,
                         j JSONB NULL,
                         crdb_region public.crdb_internal_region NOT VISIBLE NOT NULL DEFAULT default_to_database_primary_region(gateway_region())::public.crdb_internal_region,
                         CONSTRAINT regional_by_row_table_pkey PRIMARY KEY (pk ASC),
                         INDEX regional_by_row_table_a_idx (a ASC),
                         UNIQUE INDEX regional_by_row_table_b_key (b ASC),
                         INVERTED INDEX regional_by_row_table_j_idx (j),
                         FAMILY fam_0_pk_pk2_a_b_j_crdb_region (pk, pk2, a, b, j, crdb_region)
                       ) LOCALITY REGIONAL BY ROW

query TTT
SELECT partition_name, index_name, zone_config FROM [SHOW PARTITIONS FROM TABLE regional_by_table_in_primary_region]
ORDER BY partition_name, index_name
----

query TT
SHOW ZONE CONFIGURATION FROM TABLE regional_by_table_in_primary_region
----
DATABASE "mr-backup-1"  ALTER DATABASE "mr-backup-1" CONFIGURE ZONE USING
                          range_min_bytes = 134217728,
                          range_max_bytes = 536870912,
                          gc.ttlseconds = 14400,
                          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]]'

query TTT
SELECT partition_name, index_name, zone_config FROM [SHOW PARTITIONS FROM TABLE regional_by_table_in_ca_central_1]
ORDER BY partition_name, index_name
----

query TT
SHOW ZONE CONFIGURATION FROM TABLE regional_by_table_in_ca_central_1
----
TABLE regional_by_table_in_ca_central_1  ALTER TABLE regional_by_table_in_ca_central_1 CONFIGURE ZONE USING
                                           range_min_bytes = 134217728,
                                           range_max_bytes = 536870912,
                                           gc.ttlseconds = 14400,
                                           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]]'

statement ok
RESTORE DATABASE "mr-backup-2" FROM LATEST IN 'nodelocal://1/mr-backup-2/'

query T rowsort
select database_name from [show databases]
----
defaultdb
mr-backup-1
mr-backup-2
postgres
system
test

query TT
SHOW ZONE CONFIGURATION FOR DATABASE "mr-backup-2"
----
DATABASE "mr-backup-2"  ALTER DATABASE "mr-backup-2" CONFIGURE ZONE USING
                          range_min_bytes = 134217728,
                          range_max_bytes = 536870912,
                          gc.ttlseconds = 14400,
                          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]]'

statement ok
use "mr-backup-2"

query TTT
SELECT partition_name, index_name, zone_config FROM [SHOW PARTITIONS FROM TABLE global_table]
ORDER BY partition_name, index_name
----

query TT
SHOW ZONE CONFIGURATION FROM TABLE global_table
----
TABLE global_table  ALTER TABLE global_table 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]]'

query TTT
SELECT partition_name, index_name, zone_config FROM [SHOW PARTITIONS FROM TABLE regional_by_row_table]
ORDER BY partition_name, index_name
----
ap-southeast-2  regional_by_row_table@regional_by_row_table_a_idx  num_voters = 3,
voter_constraints = '[+region=ap-southeast-2]',
lease_preferences = '[[+region=ap-southeast-2]]'
ap-southeast-2                                    regional_by_row_table@regional_by_row_table_b_key  num_voters = 3,
voter_constraints = '[+region=ap-southeast-2]',
lease_preferences = '[[+region=ap-southeast-2]]'
ap-southeast-2                                    regional_by_row_table@regional_by_row_table_j_idx  num_voters = 3,
voter_constraints = '[+region=ap-southeast-2]',
lease_preferences = '[[+region=ap-southeast-2]]'
ap-southeast-2                                    regional_by_row_table@regional_by_row_table_pkey  num_voters = 3,
voter_constraints = '[+region=ap-southeast-2]',
lease_preferences = '[[+region=ap-southeast-2]]'
ca-central-1                                      regional_by_row_table@regional_by_row_table_a_idx  num_voters = 3,
voter_constraints = '[+region=ca-central-1]',
lease_preferences = '[[+region=ca-central-1]]'
ca-central-1                                    regional_by_row_table@regional_by_row_table_b_key  num_voters = 3,
voter_constraints = '[+region=ca-central-1]',
lease_preferences = '[[+region=ca-central-1]]'
ca-central-1                                    regional_by_row_table@regional_by_row_table_j_idx  num_voters = 3,
voter_constraints = '[+region=ca-central-1]',
lease_preferences = '[[+region=ca-central-1]]'
ca-central-1                                    regional_by_row_table@regional_by_row_table_pkey  num_voters = 3,
voter_constraints = '[+region=ca-central-1]',
lease_preferences = '[[+region=ca-central-1]]'
us-east-1                                       regional_by_row_table@regional_by_row_table_a_idx  num_voters = 3,
voter_constraints = '[+region=us-east-1]',
lease_preferences = '[[+region=us-east-1]]'
us-east-1                                    regional_by_row_table@regional_by_row_table_b_key  num_voters = 3,
voter_constraints = '[+region=us-east-1]',
lease_preferences = '[[+region=us-east-1]]'
us-east-1                                    regional_by_row_table@regional_by_row_table_j_idx  num_voters = 3,
voter_constraints = '[+region=us-east-1]',
lease_preferences = '[[+region=us-east-1]]'
us-east-1                                    regional_by_row_table@regional_by_row_table_pkey  num_voters = 3,
voter_constraints = '[+region=us-east-1]',
lease_preferences = '[[+region=us-east-1]]'

query TT
SHOW ZONE CONFIGURATION FROM TABLE regional_by_row_table
----
DATABASE "mr-backup-2"  ALTER DATABASE "mr-backup-2" CONFIGURE ZONE USING
                          range_min_bytes = 134217728,
                          range_max_bytes = 536870912,
                          gc.ttlseconds = 14400,
                          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]]'

query TT
SHOW CREATE TABLE regional_by_row_table
----
regional_by_row_table  CREATE TABLE public.regional_by_row_table (
                         pk INT8 NOT NULL,
                         pk2 INT8 NOT NULL,
                         a INT8 NOT NULL,
                         b INT8 NOT NULL,
                         j JSONB NULL,
                         crdb_region public.crdb_internal_region NOT VISIBLE NOT NULL DEFAULT default_to_database_primary_region(gateway_region())::public.crdb_internal_region,
                         CONSTRAINT regional_by_row_table_pkey PRIMARY KEY (pk ASC),
                         INDEX regional_by_row_table_a_idx (a ASC),
                         UNIQUE INDEX regional_by_row_table_b_key (b ASC),
                         INVERTED INDEX regional_by_row_table_j_idx (j),
                         FAMILY fam_0_pk_pk2_a_b_j_crdb_region (pk, pk2, a, b, j, crdb_region)
                       ) LOCALITY REGIONAL BY ROW

query TTT
SELECT partition_name, index_name, zone_config FROM [SHOW PARTITIONS FROM TABLE regional_by_table_in_primary_region]
ORDER BY partition_name, index_name
----

query TT
SHOW ZONE CONFIGURATION FROM TABLE regional_by_table_in_primary_region
----
DATABASE "mr-backup-2"  ALTER DATABASE "mr-backup-2" CONFIGURE ZONE USING
                          range_min_bytes = 134217728,
                          range_max_bytes = 536870912,
                          gc.ttlseconds = 14400,
                          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]]'

query TTT
SELECT partition_name, index_name, zone_config FROM [SHOW PARTITIONS FROM TABLE regional_by_table_in_ca_central_1]
ORDER BY partition_name, index_name
----

query TT
SHOW ZONE CONFIGURATION FROM TABLE regional_by_table_in_ca_central_1
----
TABLE regional_by_table_in_ca_central_1  ALTER TABLE regional_by_table_in_ca_central_1 CONFIGURE ZONE USING
                                           range_min_bytes = 134217728,
                                           range_max_bytes = 536870912,
                                           gc.ttlseconds = 14400,
                                           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]]'

statement ok
DROP DATABASE "mr-backup-1";

statement ok
DROP DATABASE "mr-backup-2"

query T rowsort
select database_name from [show databases]
----
defaultdb
postgres
system
test

statement ok
RESTORE DATABASE "mr-backup-1", "mr-backup-2" FROM LATEST IN 'nodelocal://1/mr-backup-combined/'

query T rowsort
select database_name from [show databases]
----
defaultdb
mr-backup-1
mr-backup-2
postgres
system
test

query TT
SHOW ZONE CONFIGURATION FOR DATABASE "mr-backup-1"
----
DATABASE "mr-backup-1"  ALTER DATABASE "mr-backup-1" CONFIGURE ZONE USING
                          range_min_bytes = 134217728,
                          range_max_bytes = 536870912,
                          gc.ttlseconds = 14400,
                          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]]'

query TT
SHOW ZONE CONFIGURATION FOR DATABASE "mr-backup-2"
----
DATABASE "mr-backup-2"  ALTER DATABASE "mr-backup-2" CONFIGURE ZONE USING
                          range_min_bytes = 134217728,
                          range_max_bytes = 536870912,
                          gc.ttlseconds = 14400,
                          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]]'

statement ok
use "mr-backup-1"

query TTT
SELECT partition_name, index_name, zone_config FROM [SHOW PARTITIONS FROM TABLE global_table]
ORDER BY partition_name, index_name
----

query TT
SHOW ZONE CONFIGURATION FROM TABLE global_table
----
TABLE global_table  ALTER TABLE global_table 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]]'

query TTT
SELECT partition_name, index_name, zone_config FROM [SHOW PARTITIONS FROM TABLE regional_by_row_table]
ORDER BY partition_name, index_name
----
ap-southeast-2  regional_by_row_table@regional_by_row_table_a_idx  num_voters = 3,
voter_constraints = '[+region=ap-southeast-2]',
lease_preferences = '[[+region=ap-southeast-2]]'
ap-southeast-2                                    regional_by_row_table@regional_by_row_table_b_key  num_voters = 3,
voter_constraints = '[+region=ap-southeast-2]',
lease_preferences = '[[+region=ap-southeast-2]]'
ap-southeast-2                                    regional_by_row_table@regional_by_row_table_j_idx  num_voters = 3,
voter_constraints = '[+region=ap-southeast-2]',
lease_preferences = '[[+region=ap-southeast-2]]'
ap-southeast-2                                    regional_by_row_table@regional_by_row_table_pkey  num_voters = 3,
voter_constraints = '[+region=ap-southeast-2]',
lease_preferences = '[[+region=ap-southeast-2]]'
ca-central-1                                      regional_by_row_table@regional_by_row_table_a_idx  num_voters = 3,
voter_constraints = '[+region=ca-central-1]',
lease_preferences = '[[+region=ca-central-1]]'
ca-central-1                                    regional_by_row_table@regional_by_row_table_b_key  num_voters = 3,
voter_constraints = '[+region=ca-central-1]',
lease_preferences = '[[+region=ca-central-1]]'
ca-central-1                                    regional_by_row_table@regional_by_row_table_j_idx  num_voters = 3,
voter_constraints = '[+region=ca-central-1]',
lease_preferences = '[[+region=ca-central-1]]'
ca-central-1                                    regional_by_row_table@regional_by_row_table_pkey  num_voters = 3,
voter_constraints = '[+region=ca-central-1]',
lease_preferences = '[[+region=ca-central-1]]'
us-east-1                                       regional_by_row_table@regional_by_row_table_a_idx  num_voters = 3,
voter_constraints = '[+region=us-east-1]',
lease_preferences = '[[+region=us-east-1]]'
us-east-1                                    regional_by_row_table@regional_by_row_table_b_key  num_voters = 3,
voter_constraints = '[+region=us-east-1]',
lease_preferences = '[[+region=us-east-1]]'
us-east-1                                    regional_by_row_table@regional_by_row_table_j_idx  num_voters = 3,
voter_constraints = '[+region=us-east-1]',
lease_preferences = '[[+region=us-east-1]]'
us-east-1                                    regional_by_row_table@regional_by_row_table_pkey  num_voters = 3,
voter_constraints = '[+region=us-east-1]',
lease_preferences = '[[+region=us-east-1]]'

query TT
SHOW ZONE CONFIGURATION FROM TABLE regional_by_row_table
----
DATABASE "mr-backup-1"  ALTER DATABASE "mr-backup-1" CONFIGURE ZONE USING
                          range_min_bytes = 134217728,
                          range_max_bytes = 536870912,
                          gc.ttlseconds = 14400,
                          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]]'

query TT
SHOW CREATE TABLE regional_by_row_table
----
regional_by_row_table  CREATE TABLE public.regional_by_row_table (
                         pk INT8 NOT NULL,
                         pk2 INT8 NOT NULL,
                         a INT8 NOT NULL,
                         b INT8 NOT NULL,
                         j JSONB NULL,
                         crdb_region public.crdb_internal_region NOT VISIBLE NOT NULL DEFAULT default_to_database_primary_region(gateway_region())::public.crdb_internal_region,
                         CONSTRAINT regional_by_row_table_pkey PRIMARY KEY (pk ASC),
                         INDEX regional_by_row_table_a_idx (a ASC),
                         UNIQUE INDEX regional_by_row_table_b_key (b ASC),
                         INVERTED INDEX regional_by_row_table_j_idx (j),
                         FAMILY fam_0_pk_pk2_a_b_j_crdb_region (pk, pk2, a, b, j, crdb_region)
                       ) LOCALITY REGIONAL BY ROW

query TTT
SELECT partition_name, index_name, zone_config FROM [SHOW PARTITIONS FROM TABLE regional_by_table_in_primary_region]
ORDER BY partition_name, index_name
----

query TT
SHOW ZONE CONFIGURATION FROM TABLE regional_by_table_in_primary_region
----
DATABASE "mr-backup-1"  ALTER DATABASE "mr-backup-1" CONFIGURE ZONE USING
                          range_min_bytes = 134217728,
                          range_max_bytes = 536870912,
                          gc.ttlseconds = 14400,
                          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]]'

query TTT
SELECT partition_name, index_name, zone_config FROM [SHOW PARTITIONS FROM TABLE regional_by_table_in_ca_central_1]
ORDER BY partition_name, index_name
----

query TT
SHOW ZONE CONFIGURATION FROM TABLE regional_by_table_in_ca_central_1
----
TABLE regional_by_table_in_ca_central_1  ALTER TABLE regional_by_table_in_ca_central_1 CONFIGURE ZONE USING
                                           range_min_bytes = 134217728,
                                           range_max_bytes = 536870912,
                                           gc.ttlseconds = 14400,
                                           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]]'

statement ok
use "mr-backup-2"

query TTT
SELECT partition_name, index_name, zone_config FROM [SHOW PARTITIONS FROM TABLE global_table]
ORDER BY partition_name, index_name
----

query TT
SHOW ZONE CONFIGURATION FROM TABLE global_table
----
TABLE global_table  ALTER TABLE global_table 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]]'

query TTT
SELECT partition_name, index_name, zone_config FROM [SHOW PARTITIONS FROM TABLE regional_by_row_table]
ORDER BY partition_name, index_name
----
ap-southeast-2  regional_by_row_table@regional_by_row_table_a_idx  num_voters = 3,
voter_constraints = '[+region=ap-southeast-2]',
lease_preferences = '[[+region=ap-southeast-2]]'
ap-southeast-2                                    regional_by_row_table@regional_by_row_table_b_key  num_voters = 3,
voter_constraints = '[+region=ap-southeast-2]',
lease_preferences = '[[+region=ap-southeast-2]]'
ap-southeast-2                                    regional_by_row_table@regional_by_row_table_j_idx  num_voters = 3,
voter_constraints = '[+region=ap-southeast-2]',
lease_preferences = '[[+region=ap-southeast-2]]'
ap-southeast-2                                    regional_by_row_table@regional_by_row_table_pkey  num_voters = 3,
voter_constraints = '[+region=ap-southeast-2]',
lease_preferences = '[[+region=ap-southeast-2]]'
ca-central-1                                      regional_by_row_table@regional_by_row_table_a_idx  num_voters = 3,
voter_constraints = '[+region=ca-central-1]',
lease_preferences = '[[+region=ca-central-1]]'
ca-central-1                                    regional_by_row_table@regional_by_row_table_b_key  num_voters = 3,
voter_constraints = '[+region=ca-central-1]',
lease_preferences = '[[+region=ca-central-1]]'
ca-central-1                                    regional_by_row_table@regional_by_row_table_j_idx  num_voters = 3,
voter_constraints = '[+region=ca-central-1]',
lease_preferences = '[[+region=ca-central-1]]'
ca-central-1                                    regional_by_row_table@regional_by_row_table_pkey  num_voters = 3,
voter_constraints = '[+region=ca-central-1]',
lease_preferences = '[[+region=ca-central-1]]'
us-east-1                                       regional_by_row_table@regional_by_row_table_a_idx  num_voters = 3,
voter_constraints = '[+region=us-east-1]',
lease_preferences = '[[+region=us-east-1]]'
us-east-1                                    regional_by_row_table@regional_by_row_table_b_key  num_voters = 3,
voter_constraints = '[+region=us-east-1]',
lease_preferences = '[[+region=us-east-1]]'
us-east-1                                    regional_by_row_table@regional_by_row_table_j_idx  num_voters = 3,
voter_constraints = '[+region=us-east-1]',
lease_preferences = '[[+region=us-east-1]]'
us-east-1                                    regional_by_row_table@regional_by_row_table_pkey  num_voters = 3,
voter_constraints = '[+region=us-east-1]',
lease_preferences = '[[+region=us-east-1]]'

query TT
SHOW ZONE CONFIGURATION FROM TABLE regional_by_row_table
----
DATABASE "mr-backup-2"  ALTER DATABASE "mr-backup-2" CONFIGURE ZONE USING
                          range_min_bytes = 134217728,
                          range_max_bytes = 536870912,
                          gc.ttlseconds = 14400,
                          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]]'

query TT
SHOW CREATE TABLE regional_by_row_table
----
regional_by_row_table  CREATE TABLE public.regional_by_row_table (
                         pk INT8 NOT NULL,
                         pk2 INT8 NOT NULL,
                         a INT8 NOT NULL,
                         b INT8 NOT NULL,
                         j JSONB NULL,
                         crdb_region public.crdb_internal_region NOT VISIBLE NOT NULL DEFAULT default_to_database_primary_region(gateway_region())::public.crdb_internal_region,
                         CONSTRAINT regional_by_row_table_pkey PRIMARY KEY (pk ASC),
                         INDEX regional_by_row_table_a_idx (a ASC),
                         UNIQUE INDEX regional_by_row_table_b_key (b ASC),
                         INVERTED INDEX regional_by_row_table_j_idx (j),
                         FAMILY fam_0_pk_pk2_a_b_j_crdb_region (pk, pk2, a, b, j, crdb_region)
                       ) LOCALITY REGIONAL BY ROW

query TTT
SELECT partition_name, index_name, zone_config FROM [SHOW PARTITIONS FROM TABLE regional_by_table_in_primary_region]
ORDER BY partition_name, index_name
----

query TT
SHOW ZONE CONFIGURATION FROM TABLE regional_by_table_in_primary_region
----
DATABASE "mr-backup-2"  ALTER DATABASE "mr-backup-2" CONFIGURE ZONE USING
                          range_min_bytes = 134217728,
                          range_max_bytes = 536870912,
                          gc.ttlseconds = 14400,
                          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]]'

query TTT
SELECT partition_name, index_name, zone_config FROM [SHOW PARTITIONS FROM TABLE regional_by_table_in_ca_central_1]
ORDER BY partition_name, index_name
----

query TT
SHOW ZONE CONFIGURATION FROM TABLE regional_by_table_in_ca_central_1
----
TABLE regional_by_table_in_ca_central_1  ALTER TABLE regional_by_table_in_ca_central_1 CONFIGURE ZONE USING
                                           range_min_bytes = 134217728,
                                           range_max_bytes = 536870912,
                                           gc.ttlseconds = 14400,
                                           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]]'

# Backup and restore individual multi-region tables.
subtest multiregion_table_backup_and_restore

statement ok
BACKUP TABLE regional_by_row_table INTO 'nodelocal://1/rbr_table/';

statement ok
BACKUP TABLE regional_by_table_in_primary_region INTO 'nodelocal://1/rbt_table_in_primary_region/';

statement ok
BACKUP TABLE regional_by_table_in_ca_central_1 INTO 'nodelocal://1/rbt_table_in_ca_central_1/';

statement ok
BACKUP TABLE global_table INTO 'nodelocal://1/global_table/';

statement ok
DROP TABLE regional_by_row_table;
DROP TABLE regional_by_table_in_primary_region;
DROP TABLE regional_by_table_in_ca_central_1;
DROP TABLE global_table;

statement ok
RESTORE TABLE regional_by_row_table FROM LATEST IN 'nodelocal://1/rbr_table/';

statement ok
RESTORE TABLE regional_by_table_in_primary_region FROM LATEST IN 'nodelocal://1/rbt_table_in_primary_region/';

statement ok
RESTORE TABLE regional_by_table_in_ca_central_1 FROM LATEST IN 'nodelocal://1/rbt_table_in_ca_central_1/';

statement ok
RESTORE TABLE global_table FROM LATEST IN 'nodelocal://1/global_table/';

query IIIIT rowsort
SELECT * FROM regional_by_row_table;
----
1  1  1  1  NULL
2  1  1  2  NULL

query TTT
SELECT partition_name, index_name, zone_config FROM [SHOW PARTITIONS FROM TABLE regional_by_row_table]
ORDER BY partition_name, index_name
----
ap-southeast-2  regional_by_row_table@regional_by_row_table_a_idx  num_voters = 3,
voter_constraints = '[+region=ap-southeast-2]',
lease_preferences = '[[+region=ap-southeast-2]]'
ap-southeast-2                                    regional_by_row_table@regional_by_row_table_b_key  num_voters = 3,
voter_constraints = '[+region=ap-southeast-2]',
lease_preferences = '[[+region=ap-southeast-2]]'
ap-southeast-2                                    regional_by_row_table@regional_by_row_table_j_idx  num_voters = 3,
voter_constraints = '[+region=ap-southeast-2]',
lease_preferences = '[[+region=ap-southeast-2]]'
ap-southeast-2                                    regional_by_row_table@regional_by_row_table_pkey  num_voters = 3,
voter_constraints = '[+region=ap-southeast-2]',
lease_preferences = '[[+region=ap-southeast-2]]'
ca-central-1                                      regional_by_row_table@regional_by_row_table_a_idx  num_voters = 3,
voter_constraints = '[+region=ca-central-1]',
lease_preferences = '[[+region=ca-central-1]]'
ca-central-1                                    regional_by_row_table@regional_by_row_table_b_key  num_voters = 3,
voter_constraints = '[+region=ca-central-1]',
lease_preferences = '[[+region=ca-central-1]]'
ca-central-1                                    regional_by_row_table@regional_by_row_table_j_idx  num_voters = 3,
voter_constraints = '[+region=ca-central-1]',
lease_preferences = '[[+region=ca-central-1]]'
ca-central-1                                    regional_by_row_table@regional_by_row_table_pkey  num_voters = 3,
voter_constraints = '[+region=ca-central-1]',
lease_preferences = '[[+region=ca-central-1]]'
us-east-1                                       regional_by_row_table@regional_by_row_table_a_idx  num_voters = 3,
voter_constraints = '[+region=us-east-1]',
lease_preferences = '[[+region=us-east-1]]'
us-east-1                                    regional_by_row_table@regional_by_row_table_b_key  num_voters = 3,
voter_constraints = '[+region=us-east-1]',
lease_preferences = '[[+region=us-east-1]]'
us-east-1                                    regional_by_row_table@regional_by_row_table_j_idx  num_voters = 3,
voter_constraints = '[+region=us-east-1]',
lease_preferences = '[[+region=us-east-1]]'
us-east-1                                    regional_by_row_table@regional_by_row_table_pkey  num_voters = 3,
voter_constraints = '[+region=us-east-1]',
lease_preferences = '[[+region=us-east-1]]'

query TT
SHOW CREATE TABLE regional_by_row_table
----
regional_by_row_table  CREATE TABLE public.regional_by_row_table (
                         pk INT8 NOT NULL,
                         pk2 INT8 NOT NULL,
                         a INT8 NOT NULL,
                         b INT8 NOT NULL,
                         j JSONB NULL,
                         crdb_region public.crdb_internal_region NOT VISIBLE NOT NULL DEFAULT default_to_database_primary_region(gateway_region())::public.crdb_internal_region,
                         CONSTRAINT regional_by_row_table_pkey PRIMARY KEY (pk ASC),
                         INDEX regional_by_row_table_a_idx (a ASC),
                         UNIQUE INDEX regional_by_row_table_b_key (b ASC),
                         INVERTED INDEX regional_by_row_table_j_idx (j),
                         FAMILY fam_0_pk_pk2_a_b_j_crdb_region (pk, pk2, a, b, j, crdb_region)
                       ) LOCALITY REGIONAL BY ROW

query TTT
SELECT partition_name, index_name, zone_config FROM [SHOW PARTITIONS FROM TABLE regional_by_table_in_primary_region]
ORDER BY partition_name, index_name
----

query TT
SHOW ZONE CONFIGURATION FROM TABLE regional_by_table_in_primary_region
----
DATABASE "mr-backup-2"  ALTER DATABASE "mr-backup-2" CONFIGURE ZONE USING
                          range_min_bytes = 134217728,
                          range_max_bytes = 536870912,
                          gc.ttlseconds = 14400,
                          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]]'

query TTT
SELECT partition_name, index_name, zone_config FROM [SHOW PARTITIONS FROM TABLE regional_by_table_in_ca_central_1]
ORDER BY partition_name, index_name
----

query TT
SHOW ZONE CONFIGURATION FROM TABLE regional_by_table_in_ca_central_1
----
TABLE regional_by_table_in_ca_central_1  ALTER TABLE regional_by_table_in_ca_central_1 CONFIGURE ZONE USING
                                           range_min_bytes = 134217728,
                                           range_max_bytes = 536870912,
                                           gc.ttlseconds = 14400,
                                           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]]'

query TTT
SELECT partition_name, index_name, zone_config FROM [SHOW PARTITIONS FROM TABLE global_table]
ORDER BY partition_name, index_name
----

query TT
SHOW ZONE CONFIGURATION FROM TABLE global_table
----
TABLE global_table  ALTER TABLE global_table 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]]'


statement ok
CREATE DATABASE non_mr_backup;

statement ok
USE non_mr_backup

statement ok
CREATE TABLE non_mr_table (i int)

# For comparing the zone configurations before restore.
query TT
SHOW ZONE CONFIGURATION FROM TABLE non_mr_table
----
RANGE default  ALTER RANGE default CONFIGURE ZONE USING
                 range_min_bytes = 134217728,
                 range_max_bytes = 536870912,
                 gc.ttlseconds = 14400,
                 num_replicas = 3,
                 constraints = '[]',
                 lease_preferences = '[]'

statement ok
BACKUP TABLE non_mr_table INTO 'nodelocal://1/non_mr_table/'

statement ok
DROP TABLE non_mr_table

statement ok
RESTORE TABLE non_mr_table FROM LATEST IN 'nodelocal://1/non_mr_table/'

query TT
SHOW ZONE CONFIGURATION FROM TABLE non_mr_table
----
RANGE default  ALTER RANGE default CONFIGURE ZONE USING
                 range_min_bytes = 134217728,
                 range_max_bytes = 536870912,
                 gc.ttlseconds = 14400,
                 num_replicas = 3,
                 constraints = '[]',
                 lease_preferences = '[]'

statement ok
RESTORE TABLE non_mr_table FROM LATEST IN 'nodelocal://1/non_mr_table/' WITH into_db = 'mr-backup-1'

# Verify that an MR table cannot be restored in a non-MR database.
statement error cannot restore descriptor for multi-region table regional_by_row_table into non-multi-region database non_mr_backup
RESTORE TABLE "mr-backup-2".regional_by_row_table FROM LATEST IN 'nodelocal://1/mr-backup-2/' WITH into_db = 'non_mr_backup'

statement ok
USE 'mr-backup-1'

# Verify that the zone configurations of non_mr_table that is restored to a multi-region database are set.
query TT
SHOW ZONE CONFIGURATION FROM TABLE non_mr_table
----
DATABASE "mr-backup-1"  ALTER DATABASE "mr-backup-1" CONFIGURE ZONE USING
                          range_min_bytes = 134217728,
                          range_max_bytes = 536870912,
                          gc.ttlseconds = 14400,
                          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]]'

query TT
SHOW CREATE TABLE non_mr_table
----
non_mr_table                                    CREATE TABLE public.non_mr_table (
                                                i INT8 NULL,
                                                rowid INT8 NOT VISIBLE NOT NULL DEFAULT unique_rowid(),
                                                CONSTRAINT non_mr_table_pkey PRIMARY KEY (rowid ASC)
) LOCALITY REGIONAL BY TABLE IN PRIMARY REGION


statement ok
USE "mr-backup-2"

statement ok
DROP TABLE regional_by_row_table;
DROP TABLE regional_by_table_in_primary_region;
DROP TABLE regional_by_table_in_ca_central_1;
DROP TABLE global_table;

# Restore individual tables into a database with the same regions.
subtest restore_tables_into_database_with_same_regions

statement ok
RESTORE TABLE regional_by_row_table FROM LATEST IN 'nodelocal://1/mr-backup-2/'

query TT
SHOW CREATE TABLE regional_by_row_table
----
regional_by_row_table  CREATE TABLE public.regional_by_row_table (
                         pk INT8 NOT NULL,
                         pk2 INT8 NOT NULL,
                         a INT8 NOT NULL,
                         b INT8 NOT NULL,
                         j JSONB NULL,
                         crdb_region public.crdb_internal_region NOT VISIBLE NOT NULL DEFAULT default_to_database_primary_region(gateway_region())::public.crdb_internal_region,
                         CONSTRAINT regional_by_row_table_pkey PRIMARY KEY (pk ASC),
                         INDEX regional_by_row_table_a_idx (a ASC),
                         UNIQUE INDEX regional_by_row_table_b_key (b ASC),
                         INVERTED INDEX regional_by_row_table_j_idx (j),
                         FAMILY fam_0_pk_pk2_a_b_j_crdb_region (pk, pk2, a, b, j, crdb_region)
                       ) LOCALITY REGIONAL BY ROW

statement ok
RESTORE TABLE regional_by_table_in_primary_region FROM LATEST IN 'nodelocal://1/mr-backup-2/'

query TT
SHOW CREATE TABLE regional_by_table_in_primary_region
----
regional_by_table_in_primary_region             CREATE TABLE public.regional_by_table_in_primary_region (
                                                pk INT8 NOT NULL,
                                                i INT8 NULL,
                                                CONSTRAINT regional_by_table_in_primary_region_pkey PRIMARY KEY (pk ASC),
                                                FAMILY fam_0_pk_i (pk, i)
) LOCALITY REGIONAL BY TABLE IN PRIMARY REGION


statement ok
RESTORE TABLE regional_by_table_in_ca_central_1 FROM LATEST IN 'nodelocal://1/mr-backup-2/'

# REGIONAL BY TABLE tables with a specific region are permitted if that region
# exists in the database.
query TT
SHOW CREATE TABLE regional_by_table_in_ca_central_1
----
regional_by_table_in_ca_central_1               CREATE TABLE public.regional_by_table_in_ca_central_1 (
                                                pk INT8 NOT NULL,
                                                i INT8 NULL,
                                                CONSTRAINT regional_by_table_in_ca_central_1_pkey PRIMARY KEY (pk ASC),
                                                FAMILY fam_0_pk_i (pk, i)
) LOCALITY REGIONAL BY TABLE IN "ca-central-1"

statement ok
RESTORE TABLE global_table FROM LATEST IN 'nodelocal://1/mr-backup-2/'

query TT
SHOW CREATE TABLE global_table
----
global_table       CREATE TABLE public.global_table (
                   pk INT8 NOT NULL,
                   i INT8 NULL,
                   CONSTRAINT global_table_pkey PRIMARY KEY (pk ASC),
                   FAMILY fam_0_pk_i (pk, i)
) LOCALITY GLOBAL

# Restore individual tables into a database with different regions.
subtest restore_tables_into_database_with_different_regions

# Create a database with different regions (missing ca-central-1).
statement ok
CREATE DATABASE "mr-restore-1" primary region "ap-southeast-2" regions "us-east-1"

statement ok
RESTORE TABLE "mr-backup-2".global_table FROM LATEST IN 'nodelocal://1/mr-backup-2/' WITH into_db='mr-restore-1';

statement ok
USE "mr-restore-1";

query TT
SHOW CREATE TABLE global_table
----
global_table       CREATE TABLE public.global_table (
                   pk INT8 NOT NULL,
                   i INT8 NULL,
                   CONSTRAINT global_table_pkey PRIMARY KEY (pk ASC),
                   FAMILY fam_0_pk_i (pk, i)
) LOCALITY GLOBAL

query TT
SHOW ZONE CONFIGURATION FROM TABLE global_table
----
TABLE global_table  ALTER TABLE global_table 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=us-east-1: 1}',
                      voter_constraints = '[+region=ap-southeast-2]',
                      lease_preferences = '[[+region=ap-southeast-2]]'


statement ok
RESTORE TABLE "mr-backup-2".regional_by_table_in_primary_region FROM LATEST IN 'nodelocal://1/mr-backup-2/' WITH into_db='mr-restore-1';

query TT
SHOW CREATE TABLE regional_by_table_in_primary_region
----
regional_by_table_in_primary_region             CREATE TABLE public.regional_by_table_in_primary_region (
                                                pk INT8 NOT NULL,
                                                i INT8 NULL,
                                                CONSTRAINT regional_by_table_in_primary_region_pkey PRIMARY KEY (pk ASC),
                                                FAMILY fam_0_pk_i (pk, i)
) LOCALITY REGIONAL BY TABLE IN PRIMARY REGION

query TT
SHOW ZONE CONFIGURATION FROM TABLE regional_by_table_in_primary_region
----
DATABASE "mr-restore-1"  ALTER DATABASE "mr-restore-1" CONFIGURE ZONE USING
                           range_min_bytes = 134217728,
                           range_max_bytes = 536870912,
                           gc.ttlseconds = 14400,
                           num_replicas = 4,
                           num_voters = 3,
                           constraints = '{+region=ap-southeast-2: 1, +region=us-east-1: 1}',
                           voter_constraints = '[+region=ap-southeast-2]',
                           lease_preferences = '[[+region=ap-southeast-2]]'

query TTTTT colnames,rowsort
SHOW REGIONS
----
region          zones                   database_names                          primary_region_of           secondary_region_of
ap-southeast-2  {ap-az1,ap-az2,ap-az3}  {mr-backup-1,mr-backup-2,mr-restore-1}  {mr-backup-2,mr-restore-1}  {}
ca-central-1    {ca-az1,ca-az2,ca-az3}  {mr-backup-1,mr-backup-2}               {mr-backup-1}               {}
us-east-1       {us-az1,us-az2,us-az3}  {mr-backup-1,mr-backup-2,mr-restore-1}  {}                          {}

statement error "crdb_internal_region" is not compatible with type "crdb_internal_region" existing in cluster: could not find enum value "ca-central-1" in "crdb_internal_region"
RESTORE TABLE "mr-backup-2".regional_by_table_in_ap_southeast_2 FROM LATEST IN 'nodelocal://1/mr-backup-2/' WITH into_db='mr-restore-1';

# Cannot restore a REGIONAL BY TABLE table that has different regions.
statement error cannot restore REGIONAL BY TABLE regional_by_table_in_ca_central_1 IN REGION "ca-central-1" \(table ID: [0-9]+\) into database "mr-restore-1"; region "ca-central-1" not found in database regions "ap-southeast-2", "us-east-1"
RESTORE TABLE "mr-backup-2".regional_by_table_in_ca_central_1 FROM LATEST IN 'nodelocal://1/mr-backup-2/' WITH into_db='mr-restore-1'

statement error "crdb_internal_region" is not compatible with type "crdb_internal_region" existing in cluster: could not find enum value "ca-central-1" in "crdb_internal_region"
RESTORE TABLE "mr-backup-2".regional_by_row_table FROM LATEST IN 'nodelocal://1/mr-backup-2/' WITH into_db='mr-restore-1'
