# LogicTest: !3node-tenant-default-configs !fakedist !fakedist-vec-off !fakedist-disk !weak-iso-level-configs
# This is skipped under weak-iso-level-configs, since it uses
# cluster_logical_timestamp() heavily, which does not work under
# READ COMMITTED or REPEATABLE READ.

# Because tenant initialization includes data tied to particular
# timestamps, we can't easily make an assertion about the "correct"
# fingerprint for an entire tenant. But, we can assert that we get the
# same result.
statement ok
CREATE VIRTUAL CLUSTER target;

let $aost
SELECT cluster_logical_timestamp();

let $fingerprint
SELECT fingerprint FROM [SHOW EXPERIMENTAL_FINGERPRINTS FROM TENANT target] AS OF SYSTEM TIME $aost

query T
SELECT * FROM (SELECT 'fingerprint matches' FROM [ SHOW EXPERIMENTAL_FINGERPRINTS FROM TENANT target] WHERE fingerprint = $fingerprint) AS OF SYSTEM TIME $aost;
----
fingerprint matches

# Test virtual cluster alias as well
query T
SELECT * FROM (SELECT 'fingerprint matches' FROM [ SHOW EXPERIMENTAL_FINGERPRINTS FROM VIRTUAL CLUSTER target] WHERE fingerprint = $fingerprint) AS OF SYSTEM TIME $aost;
----
fingerprint matches

query TTTT
SELECT * FROM (
SELECT tenant_name, 'start_ts is NULL', 'end_ts is NOT NULL', 'fingerprint is non-zero'
FROM [SHOW EXPERIMENTAL_FINGERPRINTS FROM TENANT target]
WHERE (start_ts IS NULL) AND (end_ts IS NOT NULL))
AS OF SYSTEM TIME $aost;
----
target  start_ts is NULL  end_ts is NOT NULL  fingerprint is non-zero

let $aost2
SELECT cluster_logical_timestamp();


query TTTT
SELECT * FROM (
SELECT tenant_name, 'start_ts is NOT NULL', 'end_ts is NOT NULL', 'fingerprint is non-zero'
FROM [SHOW EXPERIMENTAL_FINGERPRINTS FROM TENANT target WITH START TIMESTAMP = $aost]
WHERE (start_ts IS NOT NULL) AND (end_ts IS NOT NULL))
AS OF SYSTEM TIME $aost2;
----
target  start_ts is NOT NULL  end_ts is NOT NULL  fingerprint is non-zero

# Test that the end timestamp has to be greater than equal to the start timestamp.
statement error pgcode 22023 start timestamp.*is greater than the end timestamp.*
SELECT * FROM [SHOW EXPERIMENTAL_FINGERPRINTS FROM TENANT target WITH START TIMESTAMP = $aost2] AS OF SYSTEM TIME $aost;


user testuser

statement error user testuser does not have MANAGEVIRTUALCLUSTER system privilege
SHOW EXPERIMENTAL_FINGERPRINTS FROM TENANT target
