## Tests for span construction/manipulation builtins

subtest tenant_span_0_arg

skipif config 3node-tenant-default-configs
query T
SELECT crdb_internal.tenant_span()
----
{"\\x","\\xffff"}

onlyif config 3node-tenant-default-configs
query T
SELECT crdb_internal.tenant_span()
----
{"\\xfe92","\\xfe93"}

subtest end

subtest tenant_span_name_arg

skipif config 3node-tenant-default-configs
statement ok
CREATE TENANT "foo-bar";

skipif config 3node-tenant-default-configs
query T
SELECT crdb_internal.tenant_span('foo-bar')
----
{"\\xfe8b","\\xfe8c"}

subtest end

subtest tenant_span_by_id

query T
SELECT crdb_internal.tenant_span(2)
----
{"\\xfe8a","\\xfe8b"}

subtest end

subtest tenant_span_at_uint_boundary

query T
SELECT crdb_internal.pretty_key(crdb_internal.tenant_span(108)[2], 0)
----
/109

query T
SELECT crdb_internal.pretty_key(crdb_internal.tenant_span(109)[2], 0)
----
/110

subtest end

subtest table_span

query T
SELECT crdb_internal.trim_tenant_prefix(crdb_internal.table_span(1))
----
{"\\x89","\\x8a"}

subtest end

subtest index_span

query T
SELECT crdb_internal.trim_tenant_prefix(crdb_internal.index_span(1, 1))
----
{"\\x8989","\\x898a"}

subtest end

subtest trim_tenant_prefix

# Keys that don't have a valid tenant prefix are returned verbatim.
query T
SELECT encode(crdb_internal.trim_tenant_prefix('\xfe8828a09b'), 'hex');
----
fe8828a09b

subtest end

subtest fingerprint_handles_null_args

query error StartKey cannot be NULL
SELECT crdb_internal.fingerprint(ARRAY[NULL, NULL]::BYTES[], now(), false);

query error EndKey cannot be NULL
SELECT crdb_internal.fingerprint(ARRAY['\\x8989', NULL]::BYTES[], now(), false);

subtest end
