github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/pkg/sql/logictest/testdata/logic_test/ranges (about) 1 # LogicTest: 5node 2 3 statement ok 4 CREATE TABLE t (k1 INT, k2 INT, v INT, w INT, PRIMARY KEY (k1, k2)) 5 6 query TTTI colnames,rowsort 7 SELECT start_key, end_key, replicas, lease_holder FROM [SHOW RANGES FROM TABLE t] 8 ---- 9 start_key end_key replicas lease_holder 10 NULL NULL {1} 1 11 12 statement ok 13 ALTER TABLE t SPLIT AT VALUES (1), (10) 14 15 query TTTI colnames,rowsort 16 SELECT start_key, end_key, replicas, lease_holder FROM [SHOW RANGES FROM TABLE t] 17 ---- 18 start_key end_key replicas lease_holder 19 NULL /1 {1} 1 20 /1 /10 {1} 1 21 /10 NULL {1} 1 22 23 statement ok 24 ALTER TABLE t EXPERIMENTAL_RELOCATE VALUES (ARRAY[4], 1, 12) 25 26 statement ok 27 ALTER TABLE t EXPERIMENTAL_RELOCATE LEASE VALUES (4, 1, 12) 28 29 query TTTI colnames,rowsort 30 SELECT start_key, end_key, replicas, lease_holder FROM [SHOW RANGES FROM TABLE t] 31 ---- 32 start_key end_key replicas lease_holder 33 NULL /1 {1} 1 34 /1 /10 {4} 4 35 /10 NULL {1} 1 36 37 statement ok 38 ALTER TABLE t SPLIT AT VALUES (5,1), (5,2), (5,3) 39 40 query TTTI colnames,rowsort 41 SELECT start_key, end_key, replicas, lease_holder FROM [SHOW RANGES FROM TABLE t] 42 ---- 43 start_key end_key replicas lease_holder 44 NULL /1 {1} 1 45 /1 /5/1 {4} 4 46 /5/1 /5/2 {4} 4 47 /5/2 /5/3 {4} 4 48 /5/3 /10 {4} 4 49 /10 NULL {1} 1 50 51 statement ok 52 ALTER TABLE t EXPERIMENTAL_RELOCATE VALUES (ARRAY[1,2,3], 5, 1), (ARRAY[5,2,3], 5, 2), (ARRAY[4,2,1], 5, 3) 53 54 statement ok 55 ALTER TABLE t EXPERIMENTAL_RELOCATE VALUES (ARRAY[3,4], 4) 56 57 statement ok 58 ALTER TABLE t EXPERIMENTAL_RELOCATE LEASE VALUES (1, 5, 1), (5, 5, 2) 59 60 query TTTI colnames,rowsort 61 SELECT start_key, end_key, replicas, lease_holder FROM [SHOW RANGES FROM TABLE t] 62 ---- 63 start_key end_key replicas lease_holder 64 NULL /1 {1} 1 65 /1 /5/1 {3,4} 3 66 /5/1 /5/2 {1,2,3} 1 67 /5/2 /5/3 {2,3,5} 5 68 /5/3 /10 {1,2,4} 4 69 /10 NULL {1} 1 70 71 statement ok 72 CREATE INDEX idx ON t(v, w) 73 74 query TTTI colnames,rowsort 75 SELECT start_key, end_key, replicas, lease_holder FROM [SHOW RANGES FROM INDEX t@idx] 76 ---- 77 start_key end_key replicas lease_holder 78 NULL NULL {1} 1 79 80 statement ok 81 ALTER INDEX t@idx SPLIT AT VALUES (100,1), (100,50) 82 83 query TTTI colnames,rowsort 84 SELECT start_key, end_key, replicas, lease_holder FROM [SHOW RANGES FROM INDEX t@idx] 85 ---- 86 start_key end_key replicas lease_holder 87 NULL /100/1 {1} 1 88 /100/1 /100/50 {1} 1 89 /100/50 NULL {1} 1 90 91 statement ok 92 ALTER INDEX t@idx SPLIT AT VALUES (8), (9) 93 94 query TTTI colnames,rowsort 95 SELECT start_key, end_key, replicas, lease_holder FROM [SHOW RANGES FROM INDEX t@idx] 96 ---- 97 start_key end_key replicas lease_holder 98 NULL /8 {1} 1 99 /8 /9 {1} 1 100 /9 /100/1 {1} 1 101 /100/1 /100/50 {1} 1 102 /100/50 NULL {1} 1 103 104 statement ok 105 ALTER INDEX t@idx EXPERIMENTAL_RELOCATE VALUES (ARRAY[5], 100, 10), (ARRAY[3], 100, 11) 106 107 query TTTI colnames,rowsort 108 SELECT start_key, end_key, replicas, lease_holder FROM [SHOW RANGES FROM INDEX t@idx] 109 ---- 110 start_key end_key replicas lease_holder 111 NULL /8 {1} 1 112 /8 /9 {1} 1 113 /9 /100/1 {1} 1 114 /100/1 /100/50 {3} 3 115 /100/50 NULL {1} 1 116 117 # -- Tests with interleaved tables -- 118 119 statement ok 120 CREATE TABLE t0 ( 121 k1 INT, k2 INT, k3 INT, v INT, PRIMARY KEY (k1, k2, k3) 122 ) INTERLEAVE IN PARENT t(k1, k2) 123 124 # We expect the splits for t0 to be the same as the splits for t. 125 query TTTI colnames,rowsort 126 SELECT start_key, end_key, replicas, lease_holder FROM [SHOW RANGES FROM TABLE t0] 127 ---- 128 start_key end_key replicas lease_holder 129 NULL /1 {1} 1 130 /1 /5/1 {3,4} 3 131 /5/1 /5/2 {1,2,3} 1 132 /5/2 /5/3 {2,3,5} 5 133 /5/3 /10 {1,2,4} 4 134 /10 NULL {1} 1 135 136 statement ok 137 ALTER TABLE t0 SPLIT AT VALUES (7, 8, 9) 138 139 query TTTI colnames,rowsort 140 SELECT start_key, end_key, replicas, lease_holder FROM [SHOW RANGES FROM TABLE t0] 141 ---- 142 start_key end_key replicas lease_holder 143 NULL /1 {1} 1 144 /1 /5/1 {3,4} 3 145 /5/1 /5/2 {1,2,3} 1 146 /5/2 /5/3 {2,3,5} 5 147 /5/3 /7/8/#/54/1/9 {1,2,4} 4 148 /7/8/#/54/1/9 /10 {1,2,4} 4 149 /10 NULL {1} 1 150 151 statement ok 152 ALTER TABLE t0 SPLIT AT VALUES (11) 153 154 query TTTI colnames,rowsort 155 SELECT start_key, end_key, replicas, lease_holder FROM [SHOW RANGES FROM TABLE t0] 156 ---- 157 start_key end_key replicas lease_holder 158 NULL /1 {1} 1 159 /1 /5/1 {3,4} 3 160 /5/1 /5/2 {1,2,3} 1 161 /5/2 /5/3 {2,3,5} 5 162 /5/3 /7/8/#/54/1/9 {1,2,4} 4 163 /7/8/#/54/1/9 /10 {1,2,4} 4 164 /10 /11 {1} 1 165 /11 NULL {1} 1 166 167 query TTTI colnames,rowsort 168 SELECT start_key, end_key, replicas, lease_holder FROM [SHOW RANGES FROM TABLE t] 169 ---- 170 start_key end_key replicas lease_holder 171 NULL /1 {1} 1 172 /1 /5/1 {3,4} 3 173 /5/1 /5/2 {1,2,3} 1 174 /5/2 /5/3 {2,3,5} 5 175 /5/3 /7/8/#/54/1/9 {1,2,4} 4 176 /7/8/#/54/1/9 /10 {1,2,4} 4 177 /10 /11 {1} 1 178 /11 NULL {1} 1 179 180 181 statement ok 182 CREATE TABLE t1 (k INT PRIMARY KEY, v1 INT, v2 INT, v3 INT) 183 184 statement ok 185 CREATE INDEX idx on t1(v1,v2,v3) INTERLEAVE IN PARENT t(v1,v2) 186 187 # We expect the splits for the index to be the same as the splits for t. 188 query TTTI colnames,rowsort 189 SELECT start_key, end_key, replicas, lease_holder FROM [SHOW RANGES FROM INDEX t1@idx] 190 ---- 191 start_key end_key replicas lease_holder 192 NULL /1 {1} 1 193 /1 /5/1 {3,4} 3 194 /5/1 /5/2 {1,2,3} 1 195 /5/2 /5/3 {2,3,5} 5 196 /5/3 /7/8/#/54/1/9 {1,2,4} 4 197 /7/8/#/54/1/9 /10 {1,2,4} 4 198 /10 /11 {1} 1 199 /11 NULL {1} 1 200 201 statement ok 202 ALTER INDEX t1@idx SPLIT AT VALUES (15,16) 203 204 query TTTI colnames,rowsort 205 SELECT start_key, end_key, replicas, lease_holder FROM [SHOW RANGES FROM INDEX t1@idx] 206 ---- 207 start_key end_key replicas lease_holder 208 NULL /1 {1} 1 209 /1 /5/1 {3,4} 3 210 /5/1 /5/2 {1,2,3} 1 211 /5/2 /5/3 {2,3,5} 5 212 /5/3 /7/8/#/54/1/9 {1,2,4} 4 213 /7/8/#/54/1/9 /10 {1,2,4} 4 214 /10 /11 {1} 1 215 /11 /15/16/#/55/2 {1} 1 216 /15/16/#/55/2 NULL {1} 1 217 218 statement error too many columns in SPLIT AT data 219 ALTER TABLE t SPLIT AT VALUES (1, 2, 3) 220 221 statement error could not parse "foo" as type int 222 ALTER TABLE t SPLIT AT VALUES ('foo') 223 224 statement error too many columns in EXPERIMENTAL_RELOCATE data 225 ALTER TABLE t EXPERIMENTAL_RELOCATE VALUES (ARRAY[1], 1, 2, 3) 226 227 statement error could not parse "foo" as type int 228 ALTER TABLE t EXPERIMENTAL_RELOCATE VALUES (ARRAY[4], 'foo') 229 230 statement error pq: could not parse "foo" as type int\[\]: array must be enclosed in \{ and \} 231 ALTER TABLE t EXPERIMENTAL_RELOCATE VALUES ('foo', 1) 232 233 statement error too many columns in EXPERIMENTAL_RELOCATE LEASE data 234 ALTER TABLE t EXPERIMENTAL_RELOCATE LEASE VALUES (4, 1, 2, 3) 235 236 statement error could not parse "foo" as type int 237 ALTER TABLE t EXPERIMENTAL_RELOCATE LEASE VALUES (4, 'foo') 238 239 statement error could not parse "foo" as type int 240 ALTER TABLE t EXPERIMENTAL_RELOCATE LEASE VALUES ('foo', 1) 241 242 # Create and drop things to produce interesting data for crdb_internal.ranges. 243 244 statement ok 245 CREATE DATABASE d 246 247 statement ok 248 CREATE TABLE d.a () 249 250 statement ok 251 CREATE DATABASE e 252 253 statement ok 254 CREATE TABLE e.b (i INT) 255 256 statement ok 257 ALTER TABLE e.b SPLIT AT VALUES (0) 258 259 statement ok 260 CREATE TABLE d.c (i INT) 261 262 statement ok 263 DROP DATABASE e CASCADE 264 265 statement ok 266 CREATE INDEX ON d.c (i) 267 268 statement ok 269 ALTER TABLE d.c SPLIT AT VALUES (123) 270 271 statement ok 272 ALTER INDEX d.c@c_i_idx SPLIT AT VALUES (0) 273 274 query TTTTTTTTI colnames 275 SELECT start_key, start_pretty, end_key, end_pretty, database_name, table_name, index_name, replicas, crdb_internal.lease_holder(start_key) FROM crdb_internal.ranges_no_leases; 276 ---- 277 start_key start_pretty end_key end_pretty database_name table_name index_name replicas crdb_internal.lease_holder 278 · /Min liveness- /System/NodeLiveness · · · {1} 1 279 liveness- /System/NodeLiveness liveness. /System/NodeLivenessMax · · · {1} 1 280 liveness. /System/NodeLivenessMax tsd /System/tsd · · · {1} 1 281 tsd /System/tsd tse /System/"tse" · · · {1} 1 282 tse /System/"tse" [136] /Table/SystemConfigSpan/Start · · · {1} 1 283 [136] /Table/SystemConfigSpan/Start [147] /Table/11 · · · {1} 1 284 [147] /Table/11 [148] /Table/12 system lease · {1} 1 285 [148] /Table/12 [149] /Table/13 system eventlog · {1} 1 286 [149] /Table/13 [150] /Table/14 system rangelog · {1} 1 287 [150] /Table/14 [151] /Table/15 system ui · {1} 1 288 [151] /Table/15 [152] /Table/16 system jobs · {1} 1 289 [152] /Table/16 [153] /Table/17 · · · {1} 1 290 [153] /Table/17 [154] /Table/18 · · · {1} 1 291 [154] /Table/18 [155] /Table/19 · · · {1} 1 292 [155] /Table/19 [156] /Table/20 system web_sessions · {1} 1 293 [156] /Table/20 [157] /Table/21 system table_statistics · {1} 1 294 [157] /Table/21 [158] /Table/22 system locations · {1} 1 295 [158] /Table/22 [159] /Table/23 · · · {1} 1 296 [159] /Table/23 [160] /Table/24 system role_members · {1} 1 297 [160] /Table/24 [161] /Table/25 system comments · {1} 1 298 [161] /Table/25 [162] /Table/26 system replication_constraint_stats · {1} 1 299 [162] /Table/26 [163] /Table/27 system replication_critical_localities · {1} 1 300 [163] /Table/27 [164] /Table/28 system replication_stats · {1} 1 301 [164] /Table/28 [165] /Table/29 system reports_meta · {1} 1 302 [165] /Table/29 [166] /NamespaceTable/30 · · · {1} 1 303 [166] /NamespaceTable/30 [167] /NamespaceTable/Max system namespace2 · {1} 1 304 [167] /NamespaceTable/Max [168] /Table/32 system protected_ts_meta · {1} 1 305 [168] /Table/32 [169] /Table/33 system protected_ts_records · {1} 1 306 [169] /Table/33 [170] /Table/34 system role_options · {1} 1 307 [170] /Table/34 [171] /Table/35 system statement_bundle_chunks · {1} 1 308 [171] /Table/35 [172] /Table/36 system statement_diagnostics_requests · {1} 1 309 [172] /Table/36 [189 137] /Table/53/1 system statement_diagnostics · {1} 1 310 [189 137] /Table/53/1 [189 137 137] /Table/53/1/1 test t · {1} 1 311 [189 137 137] /Table/53/1/1 [189 137 141 137] /Table/53/1/5/1 test t · {3,4} 3 312 [189 137 141 137] /Table/53/1/5/1 [189 137 141 138] /Table/53/1/5/2 test t · {1,2,3} 1 313 [189 137 141 138] /Table/53/1/5/2 [189 137 141 139] /Table/53/1/5/3 test t · {2,3,5} 5 314 [189 137 141 139] /Table/53/1/5/3 [189 137 143 144 254 190 137 145] /Table/53/1/7/8/#/54/1/9 test t · {1,2,4} 4 315 [189 137 143 144 254 190 137 145] /Table/53/1/7/8/#/54/1/9 [189 137 146] /Table/53/1/10 test t · {1,2,4} 4 316 [189 137 146] /Table/53/1/10 [189 137 147] /Table/53/1/11 test t · {1} 1 317 [189 137 147] /Table/53/1/11 [189 137 151 152 254 191 138] /Table/53/1/15/16/#/55/2 test t · {1} 1 318 [189 137 151 152 254 191 138] /Table/53/1/15/16/#/55/2 [189 138] /Table/53/2 test t · {1} 1 319 [189 138] /Table/53/2 [189 138 144] /Table/53/2/8 test t idx {1} 1 320 [189 138 144] /Table/53/2/8 [189 138 145] /Table/53/2/9 test t idx {1} 1 321 [189 138 145] /Table/53/2/9 [189 138 236 137] /Table/53/2/100/1 test t idx {1} 1 322 [189 138 236 137] /Table/53/2/100/1 [189 138 236 186] /Table/53/2/100/50 test t idx {3} 3 323 [189 138 236 186] /Table/53/2/100/50 [195 137 136] /Table/59/1/0 test t idx {1} 1 324 [195 137 136] /Table/59/1/0 [196 137 246 123] /Table/60/1/123 · b · {1} 1 325 [196 137 246 123] /Table/60/1/123 Ċ /Table/60/2 d c · {1} 1 326 Ċ /Table/60/2 [196 138 136] /Table/60/2/0 d c c_i_idx {1} 1 327 [196 138 136] /Table/60/2/0 [255 255] /Max d c c_i_idx {1} 1 328 329 query TTTTTTTTI colnames 330 SELECT start_key, start_pretty, end_key, end_pretty, database_name, table_name, index_name, replicas, lease_holder FROM crdb_internal.ranges 331 ---- 332 start_key start_pretty end_key end_pretty database_name table_name index_name replicas lease_holder 333 · /Min liveness- /System/NodeLiveness · · · {1} 1 334 liveness- /System/NodeLiveness liveness. /System/NodeLivenessMax · · · {1} 1 335 liveness. /System/NodeLivenessMax tsd /System/tsd · · · {1} 1 336 tsd /System/tsd tse /System/"tse" · · · {1} 1 337 tse /System/"tse" [136] /Table/SystemConfigSpan/Start · · · {1} 1 338 [136] /Table/SystemConfigSpan/Start [147] /Table/11 · · · {1} 1 339 [147] /Table/11 [148] /Table/12 system lease · {1} 1 340 [148] /Table/12 [149] /Table/13 system eventlog · {1} 1 341 [149] /Table/13 [150] /Table/14 system rangelog · {1} 1 342 [150] /Table/14 [151] /Table/15 system ui · {1} 1 343 [151] /Table/15 [152] /Table/16 system jobs · {1} 1 344 [152] /Table/16 [153] /Table/17 · · · {1} 1 345 [153] /Table/17 [154] /Table/18 · · · {1} 1 346 [154] /Table/18 [155] /Table/19 · · · {1} 1 347 [155] /Table/19 [156] /Table/20 system web_sessions · {1} 1 348 [156] /Table/20 [157] /Table/21 system table_statistics · {1} 1 349 [157] /Table/21 [158] /Table/22 system locations · {1} 1 350 [158] /Table/22 [159] /Table/23 · · · {1} 1 351 [159] /Table/23 [160] /Table/24 system role_members · {1} 1 352 [160] /Table/24 [161] /Table/25 system comments · {1} 1 353 [161] /Table/25 [162] /Table/26 system replication_constraint_stats · {1} 1 354 [162] /Table/26 [163] /Table/27 system replication_critical_localities · {1} 1 355 [163] /Table/27 [164] /Table/28 system replication_stats · {1} 1 356 [164] /Table/28 [165] /Table/29 system reports_meta · {1} 1 357 [165] /Table/29 [166] /NamespaceTable/30 · · · {1} 1 358 [166] /NamespaceTable/30 [167] /NamespaceTable/Max system namespace2 · {1} 1 359 [167] /NamespaceTable/Max [168] /Table/32 system protected_ts_meta · {1} 1 360 [168] /Table/32 [169] /Table/33 system protected_ts_records · {1} 1 361 [169] /Table/33 [170] /Table/34 system role_options · {1} 1 362 [170] /Table/34 [171] /Table/35 system statement_bundle_chunks · {1} 1 363 [171] /Table/35 [172] /Table/36 system statement_diagnostics_requests · {1} 1 364 [172] /Table/36 [189 137] /Table/53/1 system statement_diagnostics · {1} 1 365 [189 137] /Table/53/1 [189 137 137] /Table/53/1/1 test t · {1} 1 366 [189 137 137] /Table/53/1/1 [189 137 141 137] /Table/53/1/5/1 test t · {3,4} 3 367 [189 137 141 137] /Table/53/1/5/1 [189 137 141 138] /Table/53/1/5/2 test t · {1,2,3} 1 368 [189 137 141 138] /Table/53/1/5/2 [189 137 141 139] /Table/53/1/5/3 test t · {2,3,5} 5 369 [189 137 141 139] /Table/53/1/5/3 [189 137 143 144 254 190 137 145] /Table/53/1/7/8/#/54/1/9 test t · {1,2,4} 4 370 [189 137 143 144 254 190 137 145] /Table/53/1/7/8/#/54/1/9 [189 137 146] /Table/53/1/10 test t · {1,2,4} 4 371 [189 137 146] /Table/53/1/10 [189 137 147] /Table/53/1/11 test t · {1} 1 372 [189 137 147] /Table/53/1/11 [189 137 151 152 254 191 138] /Table/53/1/15/16/#/55/2 test t · {1} 1 373 [189 137 151 152 254 191 138] /Table/53/1/15/16/#/55/2 [189 138] /Table/53/2 test t · {1} 1 374 [189 138] /Table/53/2 [189 138 144] /Table/53/2/8 test t idx {1} 1 375 [189 138 144] /Table/53/2/8 [189 138 145] /Table/53/2/9 test t idx {1} 1 376 [189 138 145] /Table/53/2/9 [189 138 236 137] /Table/53/2/100/1 test t idx {1} 1 377 [189 138 236 137] /Table/53/2/100/1 [189 138 236 186] /Table/53/2/100/50 test t idx {3} 3 378 [189 138 236 186] /Table/53/2/100/50 [195 137 136] /Table/59/1/0 test t idx {1} 1 379 [195 137 136] /Table/59/1/0 [196 137 246 123] /Table/60/1/123 · b · {1} 1 380 [196 137 246 123] /Table/60/1/123 Ċ /Table/60/2 d c · {1} 1 381 Ċ /Table/60/2 [196 138 136] /Table/60/2/0 d c c_i_idx {1} 1 382 [196 138 136] /Table/60/2/0 [255 255] /Max d c c_i_idx {1} 1 383 384 385 # Due to asynchronous splitting of ranges, we cannot guarantee the output 386 # of the show ranges from database command. The test below just ensures that 387 # the command gets parsed and evaluated correctly. 388 389 # regression tests for #40450 390 statement ok 391 CREATE DATABASE "show ranges" 392 393 statement ok 394 CREATE TABLE "show ranges".t (x INT PRIMARY KEY) 395 396 statement ok 397 SHOW RANGES FROM DATABASE "show ranges" 398 399 query TT 400 SELECT start_key, end_key FROM [SHOW RANGES FROM TABLE "show ranges".t] 401 ---- 402 NULL NULL 403 404 query TT 405 SELECT start_key, end_key FROM [SHOW RANGES FROM INDEX "show ranges".t@primary] 406 ---- 407 NULL NULL 408 409 statement ok 410 CREATE DATABASE """" 411 412 statement ok 413 CREATE TABLE """".t (x INT PRIMARY KEY) 414 415 statement ok 416 SHOW RANGES FROM DATABASE """" 417 418 query TT 419 SELECT start_key, end_key FROM [SHOW RANGES FROM TABLE """".t] 420 ---- 421 NULL NULL 422 423 query TT 424 SELECT start_key, end_key FROM [SHOW RANGES FROM INDEX """".t@primary] 425 ---- 426 NULL NULL 427 428 query T 429 SELECT feature_name FROM crdb_internal.feature_usage WHERE feature_name='sql.show.ranges' AND usage_count > 0 430 ---- 431 sql.show.ranges 432 433 subtest range_for_row 434 435 statement ok 436 CREATE TABLE simple_range_for_row(x INT PRIMARY KEY) 437 438 statement ok 439 ALTER TABLE simple_range_for_row SPLIT AT VALUES (1), (2) 440 441 query TT 442 SELECT start_key, end_key FROM [SHOW RANGE FROM TABLE simple_range_for_row FOR ROW (1)] 443 ---- 444 /1 /2 445 446 statement ok 447 CREATE TABLE range_for_row(x INT, y INT, z INT, w INT, PRIMARY KEY (x, y), INDEX i (z, w)) 448 449 statement ok 450 ALTER TABLE range_for_row SPLIT AT VALUES (1, 2), (1, 3) 451 452 statement ok 453 ALTER INDEX range_for_row@i SPLIT AT VALUES (3, 4), (3, 5) 454 455 query TT 456 SELECT start_key, end_key FROM [SHOW RANGE FROM TABLE range_for_row FOR ROW (1, 2, 1, 2)] 457 ---- 458 /1/2 /1/3 459 460 query TT 461 SELECT start_key, end_key FROM [SHOW RANGE FROM TABLE range_for_row FOR ROW (1, 3, 1, 2)] 462 ---- 463 /1/3 NULL 464 465 query TT 466 SELECT start_key, end_key FROM [SHOW RANGE FROM TABLE range_for_row FOR ROW (1, 1, 1, 2)] 467 ---- 468 NULL /1/2 469 470 query TT 471 SELECT start_key, end_key FROM [SHOW RANGE FROM INDEX range_for_row@i FOR ROW (1, 2, 1, 2)] 472 ---- 473 NULL /3/4 474 475 query TT 476 SELECT start_key, end_key FROM [SHOW RANGE FROM INDEX range_for_row@i FOR ROW (1, 2, 3, 4)] 477 ---- 478 /3/4 /3/5 479 480 query TT 481 SELECT start_key, end_key FROM [SHOW RANGE FROM INDEX range_for_row@i FOR ROW (1, 2, 3, 5)] 482 ---- 483 /3/5 NULL 484 485 statement ok 486 CREATE TABLE range_for_row_string(x STRING PRIMARY KEY) 487 488 statement ok 489 ALTER TABLE range_for_row_string SPLIT AT VALUES ('hello') 490 491 query TT 492 SELECT start_key, end_key FROM [SHOW RANGE FROM TABLE range_for_row_string FOR ROW ('he')] 493 ---- 494 NULL /"hello" 495 496 statement ok 497 CREATE TABLE range_for_row_decimal(x DECIMAL PRIMARY KEY) 498 499 statement ok 500 ALTER TABLE range_for_row_decimal SPLIT AT VALUES (1), (2) 501 502 query TT 503 SELECT start_key, end_key FROM [SHOW RANGE FROM TABLE range_for_row_decimal FOR ROW (1)] 504 ---- 505 /1 /2 506 507 statement ok 508 CREATE TABLE range_for_row_nulls(x INT PRIMARY KEY, y INT, INDEX i (y)) 509 510 statement ok 511 ALTER INDEX range_for_row_nulls@i SPLIT AT VALUES (NULL) 512 513 query TT 514 SELECT start_key, end_key from [SHOW RANGE FROM INDEX range_for_row_nulls@i FOR ROW (1, NULL)] 515 ---- 516 /NULL NULL 517 518 # Regression for #42456 519 statement ok 520 CREATE TABLE t42456 (x int primary key); 521 522 statement ok 523 CREATE INDEX i1 on t42456 (x); 524 CREATE INDEX i2 on t42456 (x); 525 DROP INDEX t42456@i1; 526 DROP INDEX t42456@i2; 527 CREATE INDEX i3 on t42456 (x) 528 529 query T 530 SELECT crdb_internal.pretty_key(crdb_internal.encode_key(70, 4, (1, )), 0) 531 ---- 532 /70/4/1/0 533 534 # Regression test for #44326. SHOW RANGES on a virtual table should cause 535 # an error, not a panic. 536 query error SHOW RANGES may not be called on a virtual table 537 SHOW RANGES FROM TABLE crdb_internal.tables 538 539 query error SHOW RANGE FOR ROW may not be called on a virtual table 540 SHOW RANGE FROM TABLE crdb_internal.tables FOR ROW (0, 0)