# LogicTest: 3node-tenant-multiregion

user host-cluster-root

statement ok
ALTER TENANT [10] GRANT CAPABILITY can_admin_relocate_range=true

user root

# Create a table on the secondary tenant.
statement ok
CREATE TABLE t (k INT PRIMARY KEY, v INT, FAMILY (k, v));
INSERT INTO t SELECT i, i FROM generate_series(1, 6) AS g(i)

# Upreplicate the table's range. We need a retry to guarantee that the
# capability has been picked up.
statement ok retry
ALTER TABLE t EXPERIMENTAL_RELOCATE VALUES (ARRAY[1, 2, 3], 0)

# Split the ranges in the table.
statement ok
ALTER TABLE t SPLIT AT SELECT generate_series(1, 6)

# Relocate ranges so that
# - [1-2) and [2-3) are on node 2
# - [3-4) and [4-5) are on node 3
# - [5-6) and [6-7) are on node 1.
statement ok
ALTER RANGE RELOCATE LEASE TO 2 FOR SELECT range_id FROM crdb_internal.ranges WHERE start_pretty LIKE '%Tenant%1';
ALTER RANGE RELOCATE LEASE TO 2 FOR SELECT range_id FROM crdb_internal.ranges WHERE start_pretty LIKE '%Tenant%2';
ALTER RANGE RELOCATE LEASE TO 3 FOR SELECT range_id FROM crdb_internal.ranges WHERE start_pretty LIKE '%Tenant%3';
ALTER RANGE RELOCATE LEASE TO 3 FOR SELECT range_id FROM crdb_internal.ranges WHERE start_pretty LIKE '%Tenant%4';
ALTER RANGE RELOCATE LEASE TO 1 FOR SELECT range_id FROM crdb_internal.ranges WHERE start_pretty LIKE '%Tenant%5';
ALTER RANGE RELOCATE LEASE TO 1 FOR SELECT range_id FROM crdb_internal.ranges WHERE start_pretty LIKE '%Tenant%6';

# Populate the range cache.
statement ok
SELECT * FROM t

# Run a query that involves all 3 tenants.
query II rowsort
SELECT * FROM t WHERE k IN (1, 3, 5)
----
1  1
3  3
5  5

# Run a query with a scan only on the third tenant.
query II rowsort
SELECT * FROM t WHERE k >= 3 AND k < 5
----
3  3
4  4

# Run a query with a scan with LIMIT that is executed on the second tenant.
query II rowsort
SELECT * FROM t WHERE k >= 1 LIMIT 10
----
1  1
2  2
3  3
4  4
5  5
6  6
