# LogicTest: 5node-dist-opt

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

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

# 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 TTTTT
EXPLAIN (VERBOSE) SELECT DISTINCT ON (x,y,z) x, y, z FROM xyz
----
distinct   ·            ·            (x, y, z)  weak-key(x,y,z)
 │         distinct on  x, y, z      ·          ·
 └── scan  ·            ·            (x, y, z)  ·
·          table        xyz@primary  ·          ·
·          spans        ALL          ·          ·

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT DISTINCT ON (x,y,z) x, y, z FROM xyz]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJyslMGuojAUhvfzFOasS6ClorJiMRs348SZ3YQFQ08MiVLSlkTH8O4TIMGL0dILdwn49_u_Y3PuUEqBP7ILaoj_AAUCDAiEQIADgTWkBColc9RaqvYnfWAvrhAHBIqyqk37OiWQS4UQ38EU5owQw-_s7xmPmAlUfgAEBJqsOHeYShWXTN2S6-0fEPhVZaWOV57fkg-1iVcJI0lIEg5pQ0DW5gHRJjshxLQh7kW-F9oUZW789bhFQkkHekthbymPw-tSKoEKxejstLH1oMEni4SjItR97tRh7j7zfD5z8hNVBuNo0eSZuzBzEeZeV2iO8ESVQXizSDh0Fw5dhCOvKzRHeKLKILxdJMzdhbmL8MabqTtRZNDdfdkqeUE5oq5kqfFppbw-OWhXDYoT9ntJy1rl-FPJvMP0j4cu170QqE3_lfYP-7L_1Bb8GKbWMBuF6XOY2ckT6NCa5vYwX9J7bQ1HdnK0hLyxhrd28nYJeWf_r4KJa2K_ZM_stPn2PwAA__8GTroO

# Ensure that ordering propagates past local DISTINCT processors.
query TTTTT
EXPLAIN (VERBOSE) SELECT DISTINCT ON (x,y,z) x, y, z FROM xyz ORDER BY x
----
distinct        ·            ·            (x, y, z)  weak-key(x,y,z); +x
 │              distinct on  x, y, z      ·          ·
 │              order key    x            ·          ·
 └── sort       ·            ·            (x, y, z)  +x
      │         order        +x           ·          ·
      └── scan  ·            ·            (x, y, z)  ·
·               table        xyz@primary  ·          ·
·               spans        ALL          ·          ·

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT DISTINCT ON (x,y,z) x, y, z FROM xyz ORDER BY x]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lT9v2zAQxfd-CuPWUpCPov9p0tAlS1Mk3QoPqnQIBDiiQNJA0sDfvZBkQLUbHxnaGfXn3Xv83QP4Bq2u6Xv5TBbyX4AgQIKADAQoELCArYDO6Iqs1ab_ZRTc1S-QzwU0bbd3_eutgEobgvwNXON2BDn8LH_v6IHKmkw6BwE1ubLZDTadaZ5L81q8vP4BAY9d2dp8lqS98_3e5bNCiiIThYLtQYDeu8nEuvKJIMeDCA_yqI0jky5OMxT49eJ4-ZHx3xrrmrZyKc7PHcRwkP5UpiZDdT4r8KJpdtF08tLjnPdOwib77-wfSqZOkmH42jFg7alMUhW5eE-U4-KXsYv3jJ_w4g0XL8PxyhC8KhkAxOD1RDniXcXi9Yyf8Mob4s3C8WYheJfJACAGryfKEe86Fq9n_IQ3uyFeFY5XheBdJZFwPUGOcDexcD3jJ7jqk-6Ed0wfyHa6tXTieGnyvL8wqH6i8YKxem8q-mF0NdiMj_eDbnhRk3XjVxwf7trxUx_wXzGyYsmLJSvOTsR4Ls742EveWrHqBS9esGKP8_KaQ69Y8Zp3XrPiDS_eXBMbPR3zlYxvGXpqhlf1DD1FUx5zvmnoqRryXTvPvj18-RsAAP__agfTvw==

# Ensure that even with more ordering columns, ordering propagates past local
# DISTINCT processors.
query TTTTT
EXPLAIN (VERBOSE) SELECT DISTINCT ON (y) x, y FROM xyz ORDER BY y, x
----
distinct        ·            ·            (x, y)  weak-key(y); +y,+x
 │              distinct on  y            ·       ·
 │              order key    y            ·       ·
 └── sort       ·            ·            (x, y)  +y,+x
      │         order        +y,+x        ·       ·
      └── scan  ·            ·            (x, y)  ·
·               table        xyz@primary  ·       ·
·               spans        ALL          ·       ·

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT DISTINCT ON (y) x, y FROM xyz ORDER BY y, x]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJyslU1vm0AQhu_9FdFcswjPsv7ixKGXXJoq6a3ygbKjCMlh0e5aShr5v1eAJWq3zK6Dj4BfnneeHZkPaIymb-UrOch_AoIACQIyEKBAwBJ2AlprKnLO2O4nQ-BBv0G-EFA37cF3t3cCKmMJ8g_wtd8T5PCj_LWnJyo12XQBAjT5st73mNbWr6V9L97ef4OA57ZsXH6XpB358eDzu0KKIoPdUYA5-JHgfPlCkONRxLd4NtaTTZfnBQp5Lwq8n0TIaxBfa-frpvIpLi4p3UBWkyXdDTWJyyZxI8UM75mag-31z_SRvdRZL4w_b4w471QmqfrMiQd6nE58NefEA4jRLN7kxGW8WRljViX9-FebDfQ4mV3PMRtAjGblTcxm8WazGLOrpB__arOBHiezmzlmA4jRbHYTsyrerIoxu04-4zXQ4uR1O8drADF6VTf_9_8P7olcaxpHZ6ypNy-6zwLpFxo-Jc4cbEXfral6zHD52Of6G5qcH57icPHQDI-6gn-HkQ1LPizZcHYWxstwxtde8WjFppd8eMmGA-TVnKHXbHjDkzdseMuHt3NqY2DHQkvGbxkG1gxn7RkGFk0F4PymYWDVkN-1y-6745c_AQAA__9DNc3z

# Distinct processors elided becaue of strong key.
query TTTTT
EXPLAIN (VERBOSE) SELECT DISTINCT ON (a,b,c) a, b, c FROM abc
----
scan  ·      ·            (a, b, c)  ·
·     table  abc@primary  ·          ·
·     spans  ALL          ·          ·

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT DISTINCT ON (a,b,c) a, b, c FROM abc]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJykk01r4zAQhu_7K8x7lvH3HnzaayBkS9qeah8Ua0gNiWQkGVqC_3uxDI3jpkVpLgMj6fH7MIxPkErQhh_JoHxBAoYUDBkYcjAUqBk6rRoyRunxyQSsxBvKmKGVXW_H45qhUZpQnmBbeyCUeOK7A22JC9LR-F1BlrcHF9Pp9sj1-z--a8Dw2HFpyiDaPK_X5xJGFZIKnzWtgHpgUL09ZxrL94QyGdg3XmedXiotSJO4UKmHK-YbFaouKhYPr0enF9GJ_0hSn5F8GUE4b26aSuqvlt2ils7VpiZzNfdWy_zVcj-1hUc4b6IKhbda7q8We6iFiyUPuBRBEij7SvoX233FaEumU9KQ1_LG4_aT2NP0qxjV64YetGpczNT-d5w7EGTsdJtMzUq6Kyc4h5Mf4b8XcLyE03uSs3vg_B64uAmuhz8fAQAA__9FDr-I

query TTTTT
EXPLAIN (VERBOSE) SELECT DISTINCT ON (a, b) a, b FROM abc ORDER BY a, b, c
----
render          ·            ·            (a, b)     +a,+b
 │              render 0     a            ·          ·
 │              render 1     b            ·          ·
 └── distinct   ·            ·            (a, b, c)  weak-key(a,b); +a,+b,+c
      │         distinct on  a, b         ·          ·
      │         order key    a, b         ·          ·
      └── scan  ·            ·            (a, b, c)  +a,+b,+c
·               table        abc@primary  ·          ·
·               spans        ALL          ·          ·

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT DISTINCT ON (a, b) a, b FROM abc ORDER BY a, b, c]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lMFvmzAUxu_7K9C7xhHYkDTlxGGXSlUzddtpcHDxU4eUYmQbaVPF_z6BJQJsMa6SXSw9w-fv8-9Z7x1qKfCJv6GG9AdQIMCAQAwEEiCwg4JAo2SJWkvV_2IFD-IXpBGBqm5a028XBEqpENJ3MJU5IaTwjb-c8Bm5QBX25wo0vDoNNo2q3rj6nfGXEgh8bXit0yB8-v74eF62YQ40h3FlOUDREZCtOXtqw18RUtoR_1yfK22qujThfh4qoyTr735UAhWKNLAblzzZRc-zlbRHLX02JGMbksUbKDpXQBp5JSRwbM1a3HgWl_q3jvm07q9WbafFh7q3Em2Ec3fD7jF_HPFHcLApDlvEw5p441iJNuI43BBH7I8j8cOxuPt2WoQ57LxxrEQbcdzfEEfijyPywLFdDLqA1yKggTQ_UXlSWEk0Utj9pwn3D89n1I2sNc4cL50c9WMPxSvacallq0r8omQ52NjyOOiGDYHa2K_UFg-1_dQHnIqpU8xmYroUM7fzinXsVCducXJN7p1TvHc7769xvnOKD27nwzXO9-5eRSvPxP3Ilt5F9-lPAAAA__-Unui8
