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.