# The cluster secret is used for hashing application names.
exec
SET CLUSTER SETTING cluster.secret = 'secret'
----

# Application names that begin with '$ ' are not hashed.
exec
SET application_name = '$ some app' 
----

exec
CREATE DATABASE foo;
----

# Verify values and identifiers from queries are scrubbed.
sql-stats
CREATE TABLE foo.a (a INT, CONSTRAINT a CHECK (a > 1));
INSERT INTO foo.a SELECT unnest(ARRAY[1,2,3,4,5]);
SET CLUSTER SETTING cluster.label = 'ACME';
SELECT (1, 20, 30, 40) = (SELECT a, 1, 2, 3 FROM foo.a LIMIT 1);
----
error: pq: failed to satisfy CHECK constraint (a > 1:::INT8)
sql-stats
 └── $ some app
      ├── [nodist] CREATE TABLE _ (_ INT8, CONSTRAINT _ CHECK (_ > _))
      └── [nodist] INSERT INTO _ SELECT _(ARRAY[_, __more__])

# Verify statements are correctly separated by app.
sql-stats
CREATE TABLE foo.t (x INT, y INT);
SET application_name = '$ some other app';
CREATE DATABASE bar;
CREATE TABLE bar.t (x INT, y INT);
SET application_name = 'hashed app name';
CREATE DATABASE baz;
CREATE TABLE baz.t (x INT, y INT);
INSERT INTO baz.t VALUES (1, 1), (2, 2);
----
sql-stats
 └── b16e4363
      ├── [nodist] CREATE DATABASE _
      ├── [nodist] CREATE DATABASE _
      ├── [nodist] CREATE TABLE _ (_ INT8, _ INT8)
      ├── [nodist] CREATE TABLE _ (_ INT8, _ INT8)
      ├── [nodist] CREATE TABLE _ (_ INT8, _ INT8)
      ├── [nodist] INSERT INTO _ VALUES (_, __more__), (__more__)
      └── [nodist] SET application_name = _
