# Test what range default zone config each tenant's initialized with. It should
# be whatever the system tenant's RANGE TENANTS is at the time.

reconcile
----

mutations discard
----

# Initialize a tenant without mucking with the RANGE TENANTS zone config.
initialize tenant=10
----

# Muck with the RANGE TENANTS zone config; lower the GC TTL to 5h.
exec-sql
ALTER RANGE TENANTS CONFIGURE ZONE USING gc.ttlseconds = 18000;
----

query-sql
SHOW ZONE CONFIGURATION FOR RANGE TENANTS;
----
RANGE tenants ALTER RANGE tenants CONFIGURE ZONE USING
	range_min_bytes = 134217728,
	range_max_bytes = 536870912,
	gc.ttlseconds = 18000,
	num_replicas = 3,
	constraints = '[]',
	lease_preferences = '[]'

# Initialize another tenant after having mucked with the RANGE TENANT zone
# config.
initialize tenant=11
----

# We should observe placeholder entries for both tenants (installed when
# creating tenant records). tenant=11 should start off with whatever RANGE
# TENANT was at the time.
state offset=47
----
...
/Table/4{6-7}                              database system (host)
/Table/4{7-8}                              ignore_strict_gc=true num_replicas=5 rangefeed_enabled=true exclude_data_from_backup=true
/Table/4{8-9}                              database system (host)
/Table/5{0-1}                              database system (host)
/Table/5{1-2}                              database system (host)
/Table/5{2-3}                              database system (host)
/Table/5{3-4}                              database system (host)
/Table/5{4-5}                              database system (host)
/Table/5{5-6}                              database system (host)
/Table/5{6-7}                              database system (host)
/Table/5{7-8}                              database system (host)
/Table/5{8-9}                              ttl_seconds=3600 ignore_strict_gc=true num_replicas=5 rangefeed_enabled=true
/Table/{59-60}                             database system (host)
/Table/6{0-1}                              database system (host)
/Table/6{1-2}                              ttl_seconds=3600 ignore_strict_gc=true num_replicas=5 rangefeed_enabled=true
/Table/6{2-3}                              ttl_seconds=3600 ignore_strict_gc=true num_replicas=5 rangefeed_enabled=true
/Table/6{3-4}                              database system (host)
/Table/6{4-5}                              database system (host)
/Table/6{5-6}                              database system (host)
/Table/6{6-7}                              database system (host)
/Table/6{7-8}                              database system (host)
/Table/6{8-9}                              database system (host)
/Table/{69-70}                             database system (host)
/Table/7{0-1}                              database system (host)
/Table/7{1-2}                              database system (host)
/Table/7{2-3}                              database system (host)
/Tenant/10{-\x00}                          database system (tenant)
/Tenant/11{-\x00}                          ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/12{-\x00}                          ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true

# Start the reconciliation loop for the tenant=10. It should have the vanilla
# RANGE DEFAULT. Check against the underlying KV state, the SQL view of the
# tenant, and later through tenant created descriptors.
reconcile tenant=10
----

mutations discard tenant=10
----

state offset=47
----
...
/Table/4{6-7}                              database system (host)
/Table/4{7-8}                              ignore_strict_gc=true num_replicas=5 rangefeed_enabled=true exclude_data_from_backup=true
/Table/4{8-9}                              database system (host)
/Table/5{0-1}                              database system (host)
/Table/5{1-2}                              database system (host)
/Table/5{2-3}                              database system (host)
/Table/5{3-4}                              database system (host)
/Table/5{4-5}                              database system (host)
/Table/5{5-6}                              database system (host)
/Table/5{6-7}                              database system (host)
/Table/5{7-8}                              database system (host)
/Table/5{8-9}                              ttl_seconds=3600 ignore_strict_gc=true num_replicas=5 rangefeed_enabled=true
/Table/{59-60}                             database system (host)
/Table/6{0-1}                              database system (host)
/Table/6{1-2}                              ttl_seconds=3600 ignore_strict_gc=true num_replicas=5 rangefeed_enabled=true
/Table/6{2-3}                              ttl_seconds=3600 ignore_strict_gc=true num_replicas=5 rangefeed_enabled=true
/Table/6{3-4}                              database system (host)
/Table/6{4-5}                              database system (host)
/Table/6{5-6}                              database system (host)
/Table/6{6-7}                              database system (host)
/Table/6{7-8}                              database system (host)
/Table/6{8-9}                              database system (host)
/Table/{69-70}                             database system (host)
/Table/7{0-1}                              database system (host)
/Table/7{1-2}                              database system (host)
/Table/7{2-3}                              database system (host)
/Tenant/10{-/Table/4}                      database system (tenant)
/Tenant/10/Table/{4-5}                     database system (tenant)
/Tenant/10/Table/{5-6}                     database system (tenant)
/Tenant/10/Table/{6-7}                     database system (tenant)
/Tenant/10/Table/{7-8}                     database system (tenant)
/Tenant/10/Table/{8-9}                     database system (tenant)
/Tenant/10/Table/{9-10}                    database system (tenant)
/Tenant/10/Table/1{1-2}                    ignore_strict_gc=true rangefeed_enabled=true exclude_data_from_backup=true
/Tenant/10/Table/1{2-3}                    database system (tenant)
/Tenant/10/Table/1{3-4}                    database system (tenant)
/Tenant/10/Table/1{4-5}                    database system (tenant)
/Tenant/10/Table/1{5-6}                    database system (tenant)
/Tenant/10/Table/{19-20}                   database system (tenant)
/Tenant/10/Table/2{0-1}                    database system (tenant)
/Tenant/10/Table/2{1-2}                    database system (tenant)
/Tenant/10/Table/2{3-4}                    database system (tenant)
/Tenant/10/Table/2{4-5}                    database system (tenant)
/Tenant/10/Table/2{5-6}                    ignore_strict_gc=true rangefeed_enabled=true exclude_data_from_backup=true
/Tenant/10/Table/2{6-7}                    database system (tenant)
/Tenant/10/Table/2{7-8}                    ignore_strict_gc=true rangefeed_enabled=true exclude_data_from_backup=true
/Tenant/10/Table/2{8-9}                    database system (tenant)
/Tenant/10/NamespaceTable/{30-Max}         database system (tenant)
/Tenant/10/{NamespaceTable/Max-Table/32}   database system (tenant)
/Tenant/10/Table/3{2-3}                    database system (tenant)
/Tenant/10/Table/3{3-4}                    database system (tenant)
/Tenant/10/Table/3{4-5}                    database system (tenant)
/Tenant/10/Table/3{5-6}                    database system (tenant)
/Tenant/10/Table/3{6-7}                    database system (tenant)
/Tenant/10/Table/3{7-8}                    database system (tenant)
/Tenant/10/Table/{39-40}                   database system (tenant)
/Tenant/10/Table/4{0-1}                    database system (tenant)
/Tenant/10/Table/4{1-2}                    database system (tenant)
/Tenant/10/Table/4{2-3}                    database system (tenant)
/Tenant/10/Table/4{3-4}                    database system (tenant)
/Tenant/10/Table/4{4-5}                    database system (tenant)
/Tenant/10/Table/4{5-6}                    ignore_strict_gc=true rangefeed_enabled=true exclude_data_from_backup=true
/Tenant/10/Table/4{6-7}                    database system (tenant)
/Tenant/10/Table/4{7-8}                    ignore_strict_gc=true rangefeed_enabled=true exclude_data_from_backup=true
/Tenant/10/Table/4{8-9}                    database system (tenant)
/Tenant/10/Table/5{0-1}                    database system (tenant)
/Tenant/10/Table/5{1-2}                    database system (tenant)
/Tenant/10/Table/5{2-3}                    database system (tenant)
/Tenant/10/Table/5{3-4}                    database system (tenant)
/Tenant/10/Table/5{4-5}                    database system (tenant)
/Tenant/10/Table/5{5-6}                    database system (tenant)
/Tenant/10/Table/5{6-7}                    database system (tenant)
/Tenant/10/Table/5{7-8}                    database system (tenant)
/Tenant/10/Table/5{8-9}                    database system (tenant)
/Tenant/10/Table/{59-60}                   database system (tenant)
/Tenant/10/Table/6{0-1}                    database system (tenant)
/Tenant/10/Table/6{1-2}                    database system (tenant)
/Tenant/10/Table/6{2-3}                    database system (tenant)
/Tenant/10/Table/6{3-4}                    database system (tenant)
/Tenant/10/Table/6{4-5}                    database system (tenant)
/Tenant/10/Table/6{5-6}                    database system (tenant)
/Tenant/10/Table/6{6-7}                    database system (tenant)
/Tenant/10/Table/6{7-8}                    database system (tenant)
/Tenant/10/Table/6{8-9}                    database system (tenant)
/Tenant/10/Table/{69-70}                   database system (tenant)
/Tenant/10/Table/7{0-1}                    database system (tenant)
/Tenant/10/Table/7{1-2}                    database system (tenant)
/Tenant/10/Table/7{2-3}                    database system (tenant)
/Tenant/11{-\x00}                          ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/12{-\x00}                          ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true

query-sql tenant=10
SHOW ZONE CONFIGURATION FOR RANGE DEFAULT
----
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 = '[]'

exec-sql tenant=10
CREATE DATABASE db;
CREATE TABLE db.t1();
CREATE TABLE db.t2();
----

mutations tenant=10
----
upsert /Tenant/10/Table/10{6-7}            rangefeed_enabled=true
upsert /Tenant/10/Table/10{7-8}            rangefeed_enabled=true

# Start the reconciliation loop for the tenant=11. It should have a modified
# RANGE DEFAULT. Check against the underlying KV state, the SQL view of the
# tenant, and later through tenant created descriptors.
reconcile tenant=11
----

mutations discard tenant=11
----

state offset=81
----
...
/Tenant/10/Table/1{2-3}                    database system (tenant)
/Tenant/10/Table/1{3-4}                    database system (tenant)
/Tenant/10/Table/1{4-5}                    database system (tenant)
/Tenant/10/Table/1{5-6}                    database system (tenant)
/Tenant/10/Table/{19-20}                   database system (tenant)
/Tenant/10/Table/2{0-1}                    database system (tenant)
/Tenant/10/Table/2{1-2}                    database system (tenant)
/Tenant/10/Table/2{3-4}                    database system (tenant)
/Tenant/10/Table/2{4-5}                    database system (tenant)
/Tenant/10/Table/2{5-6}                    ignore_strict_gc=true rangefeed_enabled=true exclude_data_from_backup=true
/Tenant/10/Table/2{6-7}                    database system (tenant)
/Tenant/10/Table/2{7-8}                    ignore_strict_gc=true rangefeed_enabled=true exclude_data_from_backup=true
/Tenant/10/Table/2{8-9}                    database system (tenant)
/Tenant/10/NamespaceTable/{30-Max}         database system (tenant)
/Tenant/10/{NamespaceTable/Max-Table/32}   database system (tenant)
/Tenant/10/Table/3{2-3}                    database system (tenant)
/Tenant/10/Table/3{3-4}                    database system (tenant)
/Tenant/10/Table/3{4-5}                    database system (tenant)
/Tenant/10/Table/3{5-6}                    database system (tenant)
/Tenant/10/Table/3{6-7}                    database system (tenant)
/Tenant/10/Table/3{7-8}                    database system (tenant)
/Tenant/10/Table/{39-40}                   database system (tenant)
/Tenant/10/Table/4{0-1}                    database system (tenant)
/Tenant/10/Table/4{1-2}                    database system (tenant)
/Tenant/10/Table/4{2-3}                    database system (tenant)
/Tenant/10/Table/4{3-4}                    database system (tenant)
/Tenant/10/Table/4{4-5}                    database system (tenant)
/Tenant/10/Table/4{5-6}                    ignore_strict_gc=true rangefeed_enabled=true exclude_data_from_backup=true
/Tenant/10/Table/4{6-7}                    database system (tenant)
/Tenant/10/Table/4{7-8}                    ignore_strict_gc=true rangefeed_enabled=true exclude_data_from_backup=true
/Tenant/10/Table/4{8-9}                    database system (tenant)
/Tenant/10/Table/5{0-1}                    database system (tenant)
/Tenant/10/Table/5{1-2}                    database system (tenant)
/Tenant/10/Table/5{2-3}                    database system (tenant)
/Tenant/10/Table/5{3-4}                    database system (tenant)
/Tenant/10/Table/5{4-5}                    database system (tenant)
/Tenant/10/Table/5{5-6}                    database system (tenant)
/Tenant/10/Table/5{6-7}                    database system (tenant)
/Tenant/10/Table/5{7-8}                    database system (tenant)
/Tenant/10/Table/5{8-9}                    database system (tenant)
/Tenant/10/Table/{59-60}                   database system (tenant)
/Tenant/10/Table/6{0-1}                    database system (tenant)
/Tenant/10/Table/6{1-2}                    database system (tenant)
/Tenant/10/Table/6{2-3}                    database system (tenant)
/Tenant/10/Table/6{3-4}                    database system (tenant)
/Tenant/10/Table/6{4-5}                    database system (tenant)
/Tenant/10/Table/6{5-6}                    database system (tenant)
/Tenant/10/Table/6{6-7}                    database system (tenant)
/Tenant/10/Table/6{7-8}                    database system (tenant)
/Tenant/10/Table/6{8-9}                    database system (tenant)
/Tenant/10/Table/{69-70}                   database system (tenant)
/Tenant/10/Table/7{0-1}                    database system (tenant)
/Tenant/10/Table/7{1-2}                    database system (tenant)
/Tenant/10/Table/7{2-3}                    database system (tenant)
/Tenant/10/Table/10{6-7}                   rangefeed_enabled=true
/Tenant/10/Table/10{7-8}                   rangefeed_enabled=true
/Tenant/11{-/Table/4}                      ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/{4-5}                     ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/{5-6}                     ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/{6-7}                     ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/{7-8}                     ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/{8-9}                     ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/{9-10}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/1{1-2}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true exclude_data_from_backup=true
/Tenant/11/Table/1{2-3}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/1{3-4}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/1{4-5}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/1{5-6}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/{19-20}                   ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/2{0-1}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/2{1-2}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/2{3-4}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/2{4-5}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/2{5-6}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true exclude_data_from_backup=true
/Tenant/11/Table/2{6-7}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/2{7-8}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true exclude_data_from_backup=true
/Tenant/11/Table/2{8-9}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/NamespaceTable/{30-Max}         ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/{NamespaceTable/Max-Table/32}   ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/3{2-3}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/3{3-4}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/3{4-5}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/3{5-6}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/3{6-7}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/3{7-8}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/{39-40}                   ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/4{0-1}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/4{1-2}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/4{2-3}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/4{3-4}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/4{4-5}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/4{5-6}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true exclude_data_from_backup=true
/Tenant/11/Table/4{6-7}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/4{7-8}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true exclude_data_from_backup=true
/Tenant/11/Table/4{8-9}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/5{0-1}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/5{1-2}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/5{2-3}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/5{3-4}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/5{4-5}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/5{5-6}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/5{6-7}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/5{7-8}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/5{8-9}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/{59-60}                   ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/6{0-1}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/6{1-2}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/6{2-3}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/6{3-4}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/6{4-5}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/6{5-6}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/6{6-7}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/6{7-8}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/6{8-9}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/{69-70}                   ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/7{0-1}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/7{1-2}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/11/Table/7{2-3}                    ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true
/Tenant/12{-\x00}                          ttl_seconds=18000 ignore_strict_gc=true rangefeed_enabled=true

query-sql tenant=11
SHOW ZONE CONFIGURATION FOR RANGE DEFAULT
----
RANGE default ALTER RANGE default CONFIGURE ZONE USING
	range_min_bytes = 134217728,
	range_max_bytes = 536870912,
	gc.ttlseconds = 18000,
	num_replicas = 3,
	constraints = '[]',
	lease_preferences = '[]'

exec-sql tenant=11
CREATE DATABASE db;
CREATE TABLE db.t1();
CREATE TABLE db.t2();
----

mutations tenant=11
----
upsert /Tenant/11/Table/10{6-7}            ttl_seconds=18000 rangefeed_enabled=true
upsert /Tenant/11/Table/10{7-8}            ttl_seconds=18000 rangefeed_enabled=true
