# LogicTest: 5node-dist-opt

subtest scrub

# TODO(radu): rework or remove these tests (the inner ORDER BY is ignored by
# the optimizer).
#
# # Verify the index check execution plan uses a merge join.
# 
# statement ok
# CREATE TABLE test (k INT PRIMARY KEY, v INT, data INT, INDEX secondary (v) STORING (data))
# 
# query T
# SELECT url FROM [EXPLAIN (DISTSQL)
#     SELECT leftside.v, leftside.k, leftside.data, rightside.v, rightside.k, rightside.data
#     FROM
#       (SELECT v,k,data FROM test@{FORCE_INDEX=[1]} ORDER BY v,k,data) AS leftside
#     FULL OUTER JOIN
#       (SELECT v,k,data FROM test@{FORCE_INDEX=[2]} ORDER BY v,k,data) AS rightside
#       ON leftside.v = rightside.v AND leftside.k = rightside.k AND leftside.data = rightside.data
#     WHERE (leftside.k IS NULL) OR
#           (rightside.k IS NULL)
# ]
# ----
# https://cockroachdb.github.io/distsqlplan/decode.html#eJyckc2K2zAQgO99CjGnLBlIJDs9CAq6dCFLGpdscio-uNY0a3AkM5Khy5J3L45hNw5x2vQ4I33zzc8bOG9pXRwogP4BEnKEhn1JIXjuUv2Hpf0Neo5QuaaNXTpHKD0T6DeIVawJNGyLnzVtqLDEszkgWIpFVZ_KNlwdCn41kUIEhKyNWhiFRqJJID8i-DZ-FA6x2BNoecR_lz97jsQzOfQaOUWjpmiS6ahG3aM5n1ENXYFK7-zdUyb_MWUyPiXCoYjli6jJaaFGremo9UPWOs-WmOzAlnfk375caf0b8Z6efOWIZ-mw_-1rQ1o87lYrke22XzfiKVuuAaGmX3FyNtzDF672L8MUIDxWdSTWYmKUWD6L9W61ehDZRkzM4j1-P4fE7iIJmhTNAs3n0Q0t7rnLhkLjXaDLTV2tPO_WQ3ZP_bqDb7mk7-zLk6YPsxN3SlgKsX-VfbB0_VPX4Dksb8LpAJaXsLoJJ7fNyR1mdQmnN-HFhTk_fvoTAAD__3P7gDg=
# 
# # Verify the foreign key check execution plan uses a merge join.
# 
# statement ok
# CREATE TABLE parent (
#   id INT PRIMARY KEY,
#   id2 INT,
#   UNIQUE INDEX (id, id2)
# )
# 
# statement ok
# CREATE TABLE child (
#   child_id INT PRIMARY KEY,
#   id INT,
#   id2 INT,
#   FOREIGN KEY (id, id2) REFERENCES parent (id, id2)
# )
# 
# query T
# SELECT url FROM [EXPLAIN (DISTSQL)
#     SELECT p.child_id, p.id, p.id2
#     FROM
#       (SELECT child_id, id, id2 FROM child@{NO_INDEX_JOIN} ORDER BY id, id2) AS p
#     FULL OUTER JOIN
#       (SELECT id, id2 FROM parent@{FORCE_INDEX=[2]} ORDER BY id, id2) AS c
#       ON p.id = c.id AND p.id2 = c.id2
#     WHERE (p.id IS NOT NULL OR p.id2 IS NOT NULL) AND
#           c.id IS NULL AND c.id2 IS NULL
# ]
# ----
# https://cockroachdb.github.io/distsqlplan/decode.html#eJycklFrnTAUx9_3KcJ58nID1bi9BAYZbAWL0-G8T0PEmXNtqEskidBS_O7DCGstvRvdY345__wO5-QRtJFYdL_QAf8BCTQUJmt6dM7YFW0FmbwHHlNQepr9ihsKvbEI_BG88iMCh7r7OWKFnUR7FQMFib5TY3i2v1WjbLvZm1Zpifft-a5VsrV4bqfOovYiVECzUDCzf3I43w0IPFno__WR7PvYZKtaSdbe4YPYyEUxuyh-8s3aWIkW5c7VrMl_lbzS_Ve0A94YpdFesX339cOEnFyf8pyUp_pLRW7KrAAKI559JNiRivR4-GjVcOsjkRypYMcDULhWo0fLSRRFgpHsOynKmhSnPD-QsiKRSHfsQD4Vn0kk3gf6nHz4Q4BCOXtOREIFoyK9OL70LXur0E1GO3w5xldfjtfZoRxw24Uzs-3xmzV90GzHMuQCkOj8dsu2Q6bDVfhYz8PJG8LsZZj9NZzuwvHSLO9-BwAA__9_viDb

subtest stats

statement ok
CREATE TABLE data (a INT, b INT, c FLOAT, d DECIMAL, PRIMARY KEY (a, b, c, d))

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

# Split into ten parts.
statement ok
ALTER TABLE data SPLIT AT SELECT i FROM generate_series(1, 9) AS g(i)

# Relocate the ten parts to the five nodes.
statement ok
ALTER TABLE data EXPERIMENTAL_RELOCATE
  SELECT ARRAY[i%5+1], i FROM generate_series(0, 9) AS g(i)

# Verify data placement.
query TTTI colnames
SELECT start_key, end_key, replicas, lease_holder FROM [SHOW EXPERIMENTAL_RANGES FROM TABLE data]
----
start_key  end_key  replicas  lease_holder
NULL       /1       {1}       1
/1         /2       {2}       2
/2         /3       {3}       3
/3         /4       {4}       4
/4         /5       {5}       5
/5         /6       {1}       1
/6         /7       {2}       2
/7         /8       {3}       3
/8         /9       {4}       4
/9         NULL     {5}       5

query T
SELECT url FROM [EXPLAIN (DISTSQL) CREATE STATISTICS s1 ON a FROM data]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lM-KszAUxfffU8hdfQOBJmr_ueosu5kO7ewGF6m5iIw1kkSYmeK7DyrSsbRRaGbpjSe_czjhnqGQAl_4CTVE78CAgA8EAiAQAoE5xARKJRPUWqrml06wFZ8QUQJZUVamGccEEqkQojOYzOQIEbzxY4575ALVjAIBgYZneYspVXbi6msjuOFAYFeZyNswiGsCsjKXK7XhKULEajIde-CnMkc1mw-R3fiQfWPkMUpp4-hguB3s3wVfeFUhlUCFYsCL67vWntNUYcqNVDNGp5v0_vuUescq-UCjn-5aDgaW2fSKmMOKRrB9RQvnFfnT8_oO845g-7xL53mD6XkDh3lHsH3elfO84fS8ocO8I9g-7_pPV84N8B51KQuNV6vn9s20WUkoUuz2l5aVSvBVyaTFdJ-7VtcOBGrTnbLuY1t0R43B32JmFfsDMbsW-3byCDqwqkO7OHzE99wqXtjJi0fIS6t4ZSevHiGv7V3RkWdif2TX7Lj-9xMAAP__kHfOZg==
