github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/pkg/sql/logictest/testdata/logic_test/crdb_internal (about)

     1  # LogicTest: !3node-tenant
     2  query error database "crdb_internal" does not exist
     3  ALTER DATABASE crdb_internal RENAME TO not_crdb_internal
     4  
     5  statement error schema cannot be modified: "crdb_internal"
     6  CREATE TABLE crdb_internal.t (x INT)
     7  
     8  query error database "crdb_internal" does not exist
     9  DROP DATABASE crdb_internal
    10  
    11  query TTT
    12  SHOW TABLES FROM crdb_internal
    13  ----
    14  crdb_internal  backward_dependencies      table
    15  crdb_internal  builtin_functions          table
    16  crdb_internal  cluster_queries            table
    17  crdb_internal  cluster_sessions           table
    18  crdb_internal  cluster_settings           table
    19  crdb_internal  cluster_transactions       table
    20  crdb_internal  create_statements          table
    21  crdb_internal  create_type_statements     table
    22  crdb_internal  feature_usage              table
    23  crdb_internal  forward_dependencies       table
    24  crdb_internal  gossip_alerts              table
    25  crdb_internal  gossip_liveness            table
    26  crdb_internal  gossip_network             table
    27  crdb_internal  gossip_nodes               table
    28  crdb_internal  index_columns              table
    29  crdb_internal  jobs                       table
    30  crdb_internal  kv_node_status             table
    31  crdb_internal  kv_store_status            table
    32  crdb_internal  leases                     table
    33  crdb_internal  node_build_info            table
    34  crdb_internal  node_metrics               table
    35  crdb_internal  node_queries               table
    36  crdb_internal  node_runtime_info          table
    37  crdb_internal  node_sessions              table
    38  crdb_internal  node_statement_statistics  table
    39  crdb_internal  node_transactions          table
    40  crdb_internal  node_txn_stats             table
    41  crdb_internal  partitions                 table
    42  crdb_internal  predefined_comments        table
    43  crdb_internal  ranges                     view
    44  crdb_internal  ranges_no_leases           table
    45  crdb_internal  schema_changes             table
    46  crdb_internal  session_trace              table
    47  crdb_internal  session_variables          table
    48  crdb_internal  table_columns              table
    49  crdb_internal  table_indexes              table
    50  crdb_internal  tables                     table
    51  crdb_internal  zones                      table
    52  
    53  statement ok
    54  CREATE DATABASE testdb; CREATE TABLE testdb.foo(x INT)
    55  
    56  query TIT
    57  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');
    58  ----
    59  foo 1 PUBLIC
    60  
    61  # Ensure there is a lease taken on foo.
    62  query I
    63  SELECT * FROM testdb.foo
    64  ----
    65  
    66  # Check the lease.
    67  query T
    68  SELECT l.name FROM crdb_internal.leases AS l JOIN system.namespace AS n ON (n.id = l.table_id and n.name = 'foo');
    69  ----
    70  foo
    71  
    72  # We merely check the column list for schema_changes.
    73  query IITTITTT colnames
    74  SELECT * FROM crdb_internal.schema_changes
    75  ----
    76  table_id parent_id name type target_id target_name state direction
    77  
    78  # We don't select the modification time as it does not remain contant.
    79  query IITTITTTTTTT colnames
    80  SELECT table_id, parent_id, name, database_name, version, format_version, state, sc_lease_node_id, sc_lease_expiration_time, drop_time, audit_mode, schema_name FROM crdb_internal.tables WHERE NAME = 'descriptor'
    81  ----
    82  table_id  parent_id  name       database_name  version  format_version            state   sc_lease_node_id  sc_lease_expiration_time  drop_time  audit_mode  schema_name
    83  3        1          descriptor  system         1        InterleavedFormatVersion  PUBLIC  NULL              NULL                      NULL       DISABLED    public
    84  
    85  # Verify that table names are not double escaped.
    86  
    87  statement ok
    88  CREATE TABLE testdb." ""\'" (i int)
    89  
    90  query T
    91  SELECT NAME from crdb_internal.tables WHERE DATABASE_NAME = 'testdb'
    92  ----
    93  foo
    94  "\'
    95  
    96  query TT colnames
    97  SELECT field, value FROM crdb_internal.node_build_info WHERE field ILIKE 'name'
    98  ----
    99  field value
   100  Name  CockroachDB
   101  
   102  query T rowsort
   103  SELECT field FROM crdb_internal.node_build_info
   104  ----
   105  Name
   106  Build
   107  ClusterID
   108  Organization
   109  Version
   110  Channel
   111  
   112  
   113  # The validity of the rows in this table are tested elsewhere; we merely assert the columns.
   114  query ITTTTTTTTTTTRTTI colnames
   115  SELECT * FROM crdb_internal.jobs WHERE false
   116  ----
   117  job_id  job_type  description  statement  user_name  descriptor_ids  status  running_status  created  started  finished  modified  fraction_completed  high_water_timestamp  error  coordinator_id
   118  
   119  query IITTITTT colnames
   120  SELECT * FROM crdb_internal.schema_changes WHERE table_id < 0
   121  ----
   122  table_id  parent_id  name  type  target_id  target_name  state  direction
   123  
   124  query IITITB colnames
   125  SELECT * FROM crdb_internal.leases WHERE node_id < 0
   126  ----
   127  node_id  table_id  name  parent_id  expiration  deleted
   128  
   129  query ITTTTIIITFFFFFFFFFFFFIIF colnames
   130  SELECT * FROM crdb_internal.node_statement_statistics WHERE node_id < 0
   131  ----
   132  node_id  application_name  flags  key  anonymized  count  first_attempt_count  max_retries  last_error  rows_avg  rows_var  parse_lat_avg  parse_lat_var  plan_lat_avg  plan_lat_var  run_lat_avg  run_lat_var  service_lat_avg  service_lat_var  overhead_lat_avg  overhead_lat_var  bytes_read rows_read  implicit_txn
   133  
   134  query IITTTTTTT colnames
   135  SELECT * FROM crdb_internal.session_trace WHERE span_idx < 0
   136  ----
   137  span_idx  message_idx  timestamp  duration  operation  loc  tag  message age
   138  
   139  query TTTBT colnames
   140  SELECT * FROM crdb_internal.cluster_settings WHERE variable = ''
   141  ----
   142  variable  value  type  public  description
   143  
   144  query TI colnames
   145  SELECT * FROM crdb_internal.feature_usage WHERE feature_name = ''
   146  ----
   147  feature_name  usage_count
   148  
   149  query TTB colnames
   150  SELECT * FROM crdb_internal.session_variables WHERE variable = ''
   151  ----
   152  variable  value  hidden
   153  
   154  query TTITTTTTTBT colnames
   155  SELECT * FROM crdb_internal.node_queries WHERE node_id < 0
   156  ----
   157  query_id  txn_id  node_id  session_id user_name  start  query  client_address  application_name  distributed  phase
   158  
   159  query TTITTTTTTBT colnames
   160  SELECT * FROM crdb_internal.cluster_queries WHERE node_id < 0
   161  ----
   162  query_id  txn_id  node_id  session_id user_name  start  query  client_address  application_name  distributed  phase
   163  
   164  query TITTTT colnames
   165  SELECT  * FROM crdb_internal.node_transactions WHERE node_id < 0
   166  ----
   167  id  node_id  session_id  start  txn_string  application_name
   168  
   169  query TITTTT colnames
   170  SELECT  * FROM crdb_internal.cluster_transactions WHERE node_id < 0
   171  ----
   172  id  node_id  session_id  start  txn_string  application_name
   173  
   174  query ITTTTTTTTTTT colnames
   175  SELECT * FROM crdb_internal.node_sessions WHERE node_id < 0
   176  ----
   177  node_id  session_id  user_name  client_address  application_name  active_queries  last_active_query  session_start  oldest_query_start  kv_txn  alloc_bytes  max_alloc_bytes
   178  
   179  query ITTTTTTTTTTT colnames
   180  SELECT * FROM crdb_internal.cluster_sessions WHERE node_id < 0
   181  ----
   182  node_id  session_id  user_name  client_address  application_name  active_queries  last_active_query  session_start  oldest_query_start  kv_txn  alloc_bytes  max_alloc_bytes
   183  
   184  query TTTT colnames
   185  SELECT * FROM crdb_internal.builtin_functions WHERE function = ''
   186  ----
   187  function  signature  category  details
   188  
   189  query ITTITTTTTTTT colnames
   190  SELECT * FROM crdb_internal.create_statements WHERE database_name = ''
   191  ----
   192  database_id  database_name  schema_name  descriptor_id  descriptor_type  descriptor_name  create_statement  state  create_nofks  alter_statements  validate_statements  has_partitions
   193  
   194  query ITITTBTB colnames
   195  SELECT * FROM crdb_internal.table_columns WHERE descriptor_name = ''
   196  ----
   197  descriptor_id  descriptor_name  column_id  column_name  column_type  nullable  default_expr  hidden
   198  
   199  query ITITTBB colnames
   200  SELECT * FROM crdb_internal.table_indexes WHERE descriptor_name = ''
   201  ----
   202  descriptor_id  descriptor_name  index_id  index_name  index_type  is_unique  is_inverted
   203  
   204  query ITITTITT colnames
   205  SELECT * FROM crdb_internal.index_columns WHERE descriptor_name = ''
   206  ----
   207  descriptor_id  descriptor_name  index_id  index_name  column_type  column_id  column_name  column_direction
   208  
   209  query ITIIITITT colnames
   210  SELECT * FROM crdb_internal.backward_dependencies WHERE descriptor_name = ''
   211  ----
   212  descriptor_id  descriptor_name  index_id  column_id  dependson_id  dependson_type  dependson_index_id  dependson_name  dependson_details
   213  
   214  query ITIITITT colnames
   215  SELECT * FROM crdb_internal.forward_dependencies WHERE descriptor_name = ''
   216  ----
   217  descriptor_id  descriptor_name  index_id  dependedonby_id  dependedonby_type  dependedonby_index_id  dependedonby_name  dependedonby_details
   218  
   219  query IITTTTTTTTTTT colnames
   220  SELECT * FROM crdb_internal.zones WHERE false
   221  ----
   222  zone_id  subzone_id  target  range_name  database_name  table_name  index_name  partition_name
   223  raw_config_yaml  raw_config_sql  raw_config_protobuf full_config_yaml full_config_sql
   224  
   225  query ITTTTTTTTTTTTI colnames
   226  SELECT * FROM crdb_internal.ranges WHERE range_id < 0
   227  ----
   228  range_id  start_key  start_pretty  end_key  end_pretty  database_name  table_name  index_name  replicas  replica_localities learner_replicas  split_enforced_until  lease_holder range_size
   229  
   230  query ITTTTTTTTTTT colnames
   231  SELECT * FROM crdb_internal.ranges_no_leases WHERE range_id < 0
   232  ----
   233  range_id  start_key  start_pretty  end_key  end_pretty  database_name  table_name  index_name  replicas  replica_localities learner_replicas  split_enforced_until
   234  
   235  statement ok
   236  INSERT INTO system.zones (id, config) VALUES
   237    (18, (SELECT raw_config_protobuf FROM crdb_internal.zones WHERE zone_id = 0)),
   238    (53, (SELECT raw_config_protobuf FROM crdb_internal.zones WHERE zone_id = 0)),
   239    (54, (SELECT raw_config_protobuf FROM crdb_internal.zones WHERE zone_id = 0))
   240  
   241  query IT
   242  SELECT zone_id, target FROM crdb_internal.zones ORDER BY 1
   243  ----
   244  0   RANGE default
   245  1   DATABASE system
   246  16  RANGE meta
   247  17  RANGE system
   248  18  RANGE timeseries
   249  22  RANGE liveness
   250  25  TABLE system.public.replication_constraint_stats
   251  27  TABLE system.public.replication_stats
   252  53  DATABASE testdb
   253  54  TABLE testdb.public.foo
   254  
   255  query T
   256  SELECT quote_literal(raw_config_yaml) FROM crdb_internal.zones WHERE zone_id = 0
   257  ----
   258  e'range_min_bytes: 134217728\nrange_max_bytes: 536870912\ngc:\n  ttlseconds: 90000\nnum_replicas: 3\nconstraints: []\nlease_preferences: []\n'
   259  
   260  query T
   261  SELECT raw_config_sql FROM crdb_internal.zones WHERE zone_id = 0
   262  ----
   263  ALTER RANGE default CONFIGURE ZONE USING
   264    range_min_bytes = 134217728,
   265    range_max_bytes = 536870912,
   266    gc.ttlseconds = 90000,
   267    num_replicas = 3,
   268    constraints = '[]',
   269    lease_preferences = '[]'
   270  
   271  query error pq: foo
   272  SELECT crdb_internal.force_error('', 'foo')
   273  
   274  query error pgcode FOOYAA pq: foo
   275  SELECT crdb_internal.force_error('FOOYAA', 'foo')
   276  
   277  query I
   278  select crdb_internal.force_retry(interval '0s')
   279  ----
   280  0
   281  
   282  query error pq: crdb_internal.set_vmodule\(\): syntax error: expect comma-separated list of filename=N
   283  select crdb_internal.set_vmodule('not anything reasonable')
   284  
   285  query I
   286  select crdb_internal.set_vmodule('doesntexist=2,butitsok=4')
   287  ----
   288  0
   289  
   290  query I
   291  select crdb_internal.set_vmodule('')
   292  ----
   293  0
   294  
   295  query T
   296  select regexp_replace(crdb_internal.node_executable_version()::string, '(-\d+)?$', '');
   297  ----
   298  20.1
   299  
   300  query ITTT colnames
   301  select node_id, component, field, regexp_replace(regexp_replace(value, '^\d+$', '<port>'), e':\\d+', ':<port>') as value from crdb_internal.node_runtime_info
   302  ----
   303  node_id  component  field   value
   304  1        DB         URL     postgresql://root@127.0.0.1:<port>?sslcert=test_certs%2Fclient.root.crt&sslkey=test_certs%2Fclient.root.key&sslmode=verify-full&sslrootcert=test_certs%2Fca.crt
   305  1        DB         Scheme  postgresql
   306  1        DB         User    root
   307  1        DB         Host    127.0.0.1
   308  1        DB         Port    <port>
   309  1        DB         URI     /?sslcert=test_certs%2Fclient.root.crt&sslkey=test_certs%2Fclient.root.key&sslmode=verify-full&sslrootcert=test_certs%2Fca.crt
   310  1        UI         URL     https://127.0.0.1:<port>
   311  1        UI         Scheme  https
   312  1        UI         User    ยท
   313  1        UI         Host    127.0.0.1
   314  1        UI         Port    <port>
   315  1        UI         URI     /
   316  
   317  query ITTTTT colnames
   318  SELECT node_id, network, regexp_replace(address, '\d+$', '<port>') as address, attrs, locality, regexp_replace(server_version, '^\d+\.\d+(-\d+)?$', '<server_version>') as server_version FROM crdb_internal.gossip_nodes WHERE node_id = 1
   319  ----
   320  node_id  network  address           attrs  locality            server_version
   321  1        tcp      127.0.0.1:<port>  []     region=test,dc=dc1  <server_version>
   322  
   323  query IITBB colnames
   324  SELECT node_id, epoch, regexp_replace(expiration, '^\d+\.\d+,\d+$', '<timestamp>') as expiration, draining, decommissioning FROM crdb_internal.gossip_liveness WHERE node_id = 1
   325  ----
   326  node_id  epoch  expiration    draining  decommissioning
   327  1        1      <timestamp>   false     false
   328  
   329  query ITTTTTT colnames
   330  SELECT node_id, network, regexp_replace(address, '\d+$', '<port>') as address, attrs, locality, regexp_replace(server_version, '^\d+\.\d+(-\d+)?$', '<server_version>') as server_version, regexp_replace(go_version, '^go.+$', '<go_version>') as go_version
   331  FROM crdb_internal.kv_node_status WHERE node_id = 1
   332  ----
   333  node_id  network  address           attrs  locality            server_version    go_version
   334  1        tcp      127.0.0.1:<port>  []     region=test,dc=dc1  <server_version>  <go_version>
   335  
   336  query IITI colnames
   337  SELECT node_id, store_id, attrs, used
   338  FROM crdb_internal.kv_store_status WHERE node_id = 1
   339  ----
   340  node_id  store_id  attrs  used
   341  1        1         []     0
   342  
   343  statement ok
   344  CREATE TABLE foo (a INT PRIMARY KEY, INDEX idx(a)); INSERT INTO foo VALUES(1)
   345  
   346  statement ok
   347  ALTER TABLE foo SPLIT AT VALUES(2)
   348  
   349  query TTT colnames
   350  SELECT start_pretty, end_pretty, split_enforced_until FROM crdb_internal.ranges WHERE split_enforced_until IS NOT NULL
   351  ----
   352  start_pretty   end_pretty  split_enforced_until
   353  /Table/56/1/2  /Max        2262-04-11 23:47:16.854776 +0000 +0000
   354  
   355  query TTT colnames
   356  SELECT start_pretty, end_pretty, split_enforced_until FROM crdb_internal.ranges_no_leases WHERE split_enforced_until IS NOT NULL AND table_name = 'foo'
   357  ----
   358  start_pretty   end_pretty  split_enforced_until
   359  /Table/56/1/2  /Max        2262-04-11 23:47:16.854776 +0000 +0000
   360  
   361  statement ok
   362  ALTER TABLE foo UNSPLIT AT VALUES(2)
   363  
   364  query TT colnames
   365  SELECT start_pretty, end_pretty FROM crdb_internal.ranges WHERE split_enforced_until IS NOT NULL AND table_name = 'foo'
   366  ----
   367  start_pretty  end_pretty
   368  
   369  query TT colnames
   370  SELECT start_pretty, end_pretty FROM crdb_internal.ranges_no_leases WHERE split_enforced_until IS NOT NULL AND table_name = 'foo'
   371  ----
   372  start_pretty  end_pretty
   373  
   374  statement ok
   375  ALTER TABLE foo SPLIT AT VALUES(2) WITH EXPIRATION '2200-01-01 00:00:00.0'
   376  
   377  query TTT colnames
   378  SELECT start_pretty, end_pretty, split_enforced_until FROM crdb_internal.ranges WHERE split_enforced_until IS NOT NULL AND table_name = 'foo'
   379  ----
   380  start_pretty   end_pretty  split_enforced_until
   381  /Table/56/1/2  /Max        2200-01-01 00:00:00 +0000 +0000
   382  
   383  query TTT colnames
   384  SELECT start_pretty, end_pretty, split_enforced_until FROM crdb_internal.ranges_no_leases WHERE split_enforced_until IS NOT NULL AND table_name = 'foo'
   385  ----
   386  start_pretty   end_pretty  split_enforced_until
   387  /Table/56/1/2  /Max        2200-01-01 00:00:00 +0000 +0000
   388  
   389  statement ok
   390  ALTER TABLE foo SPLIT AT VALUES (1), (2), (3)
   391  
   392  statement ok
   393  ALTER TABLE foo UNSPLIT ALL
   394  
   395  query TT colnames
   396  SELECT start_pretty, end_pretty FROM crdb_internal.ranges WHERE split_enforced_until IS NOT NULL
   397  ----
   398  start_pretty   end_pretty
   399  
   400  query TT colnames
   401  SELECT start_pretty, end_pretty FROM crdb_internal.ranges_no_leases WHERE split_enforced_until IS NOT NULL
   402  ----
   403  start_pretty   end_pretty
   404  
   405  # Make sure that the cluster id isn't unset.
   406  query B
   407  select crdb_internal.cluster_id() != '00000000-0000-0000-0000-000000000000' FROM foo
   408  ----
   409  true
   410  
   411  # Check that privileged builtins are only allowed for 'root'
   412  user testuser
   413  
   414  query error insufficient privilege
   415  select crdb_internal.force_panic('foo')
   416  
   417  query error insufficient privilege
   418  select crdb_internal.force_log_fatal('foo')
   419  
   420  query error insufficient privilege
   421  select crdb_internal.set_vmodule('')
   422  
   423  query error pq: only users with the admin role are allowed to access the node runtime information
   424  select * from crdb_internal.node_runtime_info
   425  
   426  query error pq: only users with the admin role are allowed to read crdb_internal.ranges
   427  select * from crdb_internal.ranges
   428  
   429  query error pq: only users with the admin role are allowed to read crdb_internal.gossip_nodes
   430  select * from crdb_internal.gossip_nodes
   431  
   432  query error pq: only users with the admin role are allowed to read crdb_internal.gossip_liveness
   433  select * from crdb_internal.gossip_liveness
   434  
   435  query error pq: only users with the admin role are allowed to read crdb_internal.node_metrics
   436  select * from crdb_internal.node_metrics
   437  
   438  query error pq: only users with the admin role are allowed to read crdb_internal.kv_node_status
   439  select * from crdb_internal.kv_node_status
   440  
   441  query error pq: only users with the admin role are allowed to read crdb_internal.kv_store_status
   442  select * from crdb_internal.kv_store_status
   443  
   444  query error pq: only users with the admin role are allowed to read crdb_internal.gossip_alerts
   445  select * from crdb_internal.gossip_alerts
   446  
   447  # Anyone can see the executable version.
   448  query T
   449  select regexp_replace(crdb_internal.node_executable_version()::string, '(-\d+)?$', '');
   450  ----
   451  20.1
   452  
   453  user root
   454  
   455  # Regression test for #34441
   456  query T
   457  SELECT crdb_internal.pretty_key(e'\\xa82a00918ed9':::BYTES, (-5096189069466142898):::INT8);
   458  ----
   459  /Table/32/???/9/6/81
   460  
   461  subtest max_retry_counter
   462  # Verify that the max_retry counter in statement stats actually increases with retries.
   463  
   464  statement ok
   465  SET application_name = 'test_max_retry'
   466  
   467  # Make the statement retry, to ensure max_retries increases to
   468  # become different from 0.
   469  statement OK
   470  CREATE SEQUENCE s;
   471    SELECT IF(nextval('s')<3, crdb_internal.force_retry('1h'::INTERVAL), 0);
   472    DROP SEQUENCE s
   473  
   474  statement OK
   475  RESET application_name
   476  
   477  # Note: in the following test, three rows of output are expected:
   478  # - one for the SELECT statements that failed with a retry error,
   479  # - one for the final SELECT retry attempt that succeeded without an error,
   480  # - one for the RESET statement.
   481  #
   482  # We expect the first two entries to have max_retries > 0 because
   483  # auto-retries are expected by the server.
   484  # We also expect the RESET statement to have max_retries = 0, because
   485  # RESET never retries. This tests that the retry counter is properly
   486  # reset to 0 between statements - a naive implementation could make
   487  # the counter increase forever, even between statements.
   488  #
   489  query TIB
   490  SELECT key, max_retries, flags LIKE '!%' AS f
   491    FROM crdb_internal.node_statement_statistics
   492   WHERE application_name = 'test_max_retry'
   493  ORDER BY key, f
   494  ----
   495  CREATE SEQUENCE s                                           0  false
   496  DROP SEQUENCE s                                             0  false
   497  SELECT IF(nextval(_) < _, crdb_internal.force_retry(_), _)  2  false
   498  SELECT IF(nextval(_) < _, crdb_internal.force_retry(_), _)  1  true
   499  SET application_name = DEFAULT                              0  false
   500  
   501  
   502  # Testing split_enforced_until when truncating and dropping.
   503  statement ok
   504  ALTER TABLE foo SPLIT AT VALUES (1), (2), (3)
   505  
   506  statement ok
   507  ALTER INDEX foo@idx SPLIT AT VALUES (1), (2), (3)
   508  
   509  query TT colnames
   510  SELECT start_pretty, end_pretty FROM crdb_internal.ranges WHERE split_enforced_until IS NOT NULL
   511  ----
   512  start_pretty   end_pretty
   513  /Table/56/1/1  /Table/56/1/2
   514  /Table/56/1/2  /Table/56/1/3
   515  /Table/56/1/3  /Table/56/2/1
   516  /Table/56/2/1  /Table/56/2/2
   517  /Table/56/2/2  /Table/56/2/3
   518  /Table/56/2/3  /Max
   519  
   520  statement ok
   521  TRUNCATE TABLE foo
   522  
   523  query TT colnames
   524  SELECT start_pretty, end_pretty FROM crdb_internal.ranges WHERE split_enforced_until IS NOT NULL
   525  ----
   526  start_pretty   end_pretty
   527  
   528  statement ok
   529  ALTER TABLE foo SPLIT AT VALUES (1), (2), (3)
   530  
   531  statement ok
   532  ALTER INDEX foo@idx SPLIT AT VALUES (1), (2), (3)
   533  
   534  query TT colnames
   535  SELECT start_pretty, end_pretty FROM crdb_internal.ranges WHERE split_enforced_until IS NOT NULL
   536  ----
   537  start_pretty   end_pretty
   538  /Table/58/1/1  /Table/58/1/2
   539  /Table/58/1/2  /Table/58/1/3
   540  /Table/58/1/3  /Table/58/2/1
   541  /Table/58/2/1  /Table/58/2/2
   542  /Table/58/2/2  /Table/58/2/3
   543  /Table/58/2/3  /Max
   544  
   545  statement ok
   546  DROP TABLE foo
   547  
   548  query TT colnames
   549  SELECT start_pretty, end_pretty FROM crdb_internal.ranges WHERE split_enforced_until IS NOT NULL
   550  ----
   551  start_pretty   end_pretty
   552  
   553  statement ok
   554  CREATE TABLE foo (a INT PRIMARY KEY, INDEX idx(a)); INSERT INTO foo VALUES(1)
   555  
   556  statement ok
   557  ALTER TABLE foo SPLIT AT VALUES (1), (2), (3)
   558  
   559  statement ok
   560  ALTER INDEX foo@idx SPLIT AT VALUES (1), (2), (3)
   561  
   562  query TT colnames
   563  SELECT start_pretty, end_pretty FROM crdb_internal.ranges WHERE split_enforced_until IS NOT NULL
   564  ----
   565  start_pretty   end_pretty
   566  /Table/59/1/1  /Table/59/1/2
   567  /Table/59/1/2  /Table/59/1/3
   568  /Table/59/1/3  /Table/59/2/1
   569  /Table/59/2/1  /Table/59/2/2
   570  /Table/59/2/2  /Table/59/2/3
   571  /Table/59/2/3  /Max
   572  
   573  statement ok
   574  DROP INDEX foo@idx
   575  
   576  # Verify only the start keys of the manually split ranges because the merge queue could merge the
   577  # ranges [/Table/58/1/3, /Table/58/2/1) with its right neighbors.
   578  query T colnames
   579  SELECT start_pretty FROM crdb_internal.ranges WHERE split_enforced_until IS NOT NULL
   580  ----
   581  start_pretty
   582  /Table/59/1/1
   583  /Table/59/1/2
   584  /Table/59/1/3
   585  
   586  query T
   587  SELECT crdb_internal.cluster_name()
   588  ----
   589  testclustername
   590  
   591  # Regression for 41834.
   592  statement ok
   593  CREATE TABLE table41834 ();
   594  SELECT
   595  	crdb_internal.encode_key(
   596  		-8912529861854991652,
   597  		0,
   598  		CASE
   599  		WHEN false THEN (NULL,)
   600  		ELSE (NULL,)
   601  		END
   602  	)
   603  FROM
   604  	table41834;
   605  
   606  
   607  subtest builtin_is_admin
   608  
   609  user root
   610  
   611  query B
   612  SELECT crdb_internal.is_admin()
   613  ----
   614  true
   615  
   616  user testuser
   617  
   618  query B
   619  SELECT crdb_internal.is_admin()
   620  ----
   621  false
   622  
   623  user root
   624  
   625  # Test the crdb_internal.create_type_statements table.
   626  statement ok
   627  SET experimental_enable_enums=true;
   628  CREATE TYPE enum1 AS ENUM ('hello', 'hi');
   629  CREATE TYPE enum2 AS ENUM ()
   630  
   631  query ITTITT
   632  SELECT * FROM crdb_internal.create_type_statements
   633  ----
   634  52  test  public  61  enum1  CREATE TYPE test.public.enum1 AS ENUM ('hello', 'hi')
   635  52  test  public  63  enum2  CREATE TYPE test.public.enum2 AS ENUM ()
   636  
   637  # Test the virtual index as well.