# LogicTest: default distsql

query error user root does not have DROP privilege on database crdb_internal
ALTER DATABASE crdb_internal RENAME TO not_crdb_internal

statement error user root does not have CREATE privilege on database crdb_internal
CREATE TABLE crdb_internal.t (x INT)

query error user root does not have DROP privilege on database crdb_internal
DROP DATABASE crdb_internal

statement ok
CREATE DATABASE testdb; CREATE TABLE testdb.foo(x INT)

query TIT
SELECT t.name, t.version, t.state FROM crdb_internal.tables AS t JOIN system.namespace AS n ON (n.id = t.parent_id and n.name = 'testdb');
----
foo 1 PUBLIC

# Ensure there is a lease taken on foo.
query I
SELECT * FROM testdb.foo
----

# Check the lease.
query T
SELECT l.name FROM crdb_internal.leases AS l JOIN system.namespace AS n ON (n.id = l.table_id and n.name = 'foo');
----
foo

# We merely check the column list for schema_changes.
query IITTITTT colnames
SELECT * FROM crdb_internal.schema_changes
----
table_id parent_id name type target_id target_name state direction

query IITTITRTTTTT colnames
SELECT * FROM crdb_internal.tables WHERE NAME = 'namespace'
----
table_id  parent_id  name       database_name  version  mod_time                         mod_time_logical  format_version            state   sc_lease_node_id  sc_lease_expiration_time  create_table
2         1          namespace  system         1        1970-01-01 00:00:00 +0000 +0000  0.0000000000      InterleavedFormatVersion  PUBLIC  NULL              NULL                      CREATE TABLE namespace (
          "parentID" INT NOT NULL,
          "name" STRING NOT NULL,
          id INT NULL,
          CONSTRAINT "primary" PRIMARY KEY ("parentID" ASC, "name" ASC),
          FAMILY "primary" ("parentID", "name"),
          FAMILY fam_3_id (id)
)

# Verify that table names are not double escaped.

statement ok
CREATE TABLE testdb." ""\'" (i int)

query T
SELECT NAME from crdb_internal.tables WHERE DATABASE_NAME = 'testdb'
----
foo
"\'

query TT colnames
SELECT field, value FROM crdb_internal.node_build_info WHERE field ILIKE 'name'
----
field value
Name  CockroachDB

query T
SELECT field FROM crdb_internal.node_build_info
----
Name
GoVersion
Tag
Time
Revision
CgoCompiler
Platform
Distribution
Type

# The validity of the rows in this table are tested elsewhere; we merely assert the columns.
query ITTTTTTTTTRT colnames
SELECT * FROM crdb_internal.jobs
----
id  type  description  username  descriptor_ids  status  created  started  finished  modified  fraction_completed  error

query error pq: crdb_internal.force_internal_error\(\): foo
SELECT crdb_internal.force_internal_error('foo')

# Check that privileged builtins are only allowed for 'root'
query I
select crdb_internal.force_retry(interval '0s')
----
0

user testuser

query error pq: insufficient privilege
select crdb_internal.force_retry(interval '0s')

query error pq: insufficient privilege
select crdb_internal.force_internal_error('foo')

query error pq: insufficient privilege
select crdb_internal.force_panic('foo')

query error pq: insufficient privilege
select crdb_internal.force_log_fatal('foo')
