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)