# LogicTest: 5node-dist 5node-dist-metadata 5node-dist-opt 5node-dist-disk

statement ok
CREATE TABLE xyz (
  id INT PRIMARY KEY,
  x INT,
  y INT,
  z INT
)

statement ok
INSERT INTO xyz VALUES
  (1, 1, 1, NULL),
  (2, 1, 1, 2),
  (3, 1, 1, 2),
  (4, 1, 2, 1),
  (5, 2, 2, 3),
  (6, 4, 5, 6),
  (7, 4, 1, 6)

statement ok
CREATE TABLE abc (
  a STRING,
  b STRING,
  c STRING,
  PRIMARY KEY (a, b, c)
)

statement ok
INSERT INTO abc VALUES
  ('1', '1', '1'),
  ('1', '1', '2'),
  ('1', '2', '2'),
  ('2', '3', '4'),
  ('3', '4', '5')

# Prevent the merge queue from immediately discarding our splits.
statement ok
SET CLUSTER SETTING kv.range_merge.queue_enabled = false;

statement ok
ALTER TABLE xyz SPLIT AT VALUES (2), (4), (6), (7)

statement ok
ALTER TABLE xyz EXPERIMENTAL_RELOCATE VALUES
  (ARRAY[1], 0),
  (ARRAY[2], 2),
  (ARRAY[3], 4),
  (ARRAY[4], 6),
  (ARRAY[5], 7)

statement ok
ALTER TABLE abc SPLIT AT VALUES
  (NULL, NULL, NULL),
  ('1', '1', '2'),
  ('1', '2', '2'),
  ('2', '3', '4'),
  ('3', '4', '5')

statement ok
ALTER TABLE abc EXPERIMENTAL_RELOCATE VALUES
  (ARRAY[1], NULL, NULL, NULL),
  (ARRAY[2], '1', '1', '2'),
  (ARRAY[3], '1', '2', '2'),
  (ARRAY[4], '2', '3', '4'),
  (ARRAY[5], '3', '4', '5')

query TTTI colnames
SELECT start_key, end_key, replicas, lease_holder from [SHOW EXPERIMENTAL_RANGES FROM TABLE xyz]
----
start_key  end_key  replicas  lease_holder
NULL       /2       {1}       1
/2         /4       {2}       2
/4         /6       {3}       3
/6         /7       {4}       4
/7         NULL     {5}       5

query TTTI colnames
SELECT start_key, end_key, replicas, lease_holder from [SHOW EXPERIMENTAL_RANGES FROM TABLE abc]
----
start_key        end_key          replicas  lease_holder
NULL             /NULL/NULL/NULL  {5}       5
/NULL/NULL/NULL  /"1"/"1"/"2"     {1}       1
/"1"/"1"/"2"     /"1"/"2"/"2"     {2}       2
/"1"/"2"/"2"     /"2"/"3"/"4"     {3}       3
/"2"/"3"/"4"     /"3"/"4"/"5"     {4}       4
/"3"/"4"/"5"     NULL             {5}       5

query III rowsort
SELECT DISTINCT ON (x,y,z) x, y, z FROM xyz
----
1 1 NULL
1 1 2
1 2 1
2 2 3
4 5 6
4 1 6

query III partialsort(1)
SELECT DISTINCT ON (x,y,z) x, y, z FROM xyz ORDER BY x
----
1 1 NULL
1 1 2
1 2 1
2 2 3
4 5 6
4 1 6

query II
SELECT DISTINCT ON (y) x, y FROM xyz ORDER BY y, x
----
1 1
1 2
4 5

query TTT rowsort
SELECT DISTINCT ON (a,b,c) a, b, c FROM abc
----
1  1  1
1  1  2
1  2  2
2  3  4
3  4  5

query TT
SELECT DISTINCT ON (a, b) a, b FROM abc ORDER BY a, b, c
----
1 1
1 2
2 3
3 4
