# LogicTest: 5node-dist

subtest scrub

# 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#eJykkU-L2zAQxe_9FGJOWTIlke30ICjo0oUsaVzy51R8cK1p1uBIZiRDlyXfvTiG3TjEbtMeZ6Q3v_dmXsE6Q-v8SB7Ud5CQIdTsCvLecdvqPizNL1BzhNLWTWjbGULhmEC9QihDRaBgl_-oaEO5IZ7NAcFQyMvqPLbm8pjziw7kAyBs69x6JT4CQtoEJXSEWqKOITshuCa8M3zIDwRKnvDvfWwdB-KZ7FvQcoo6mqKOp4OY6B7MZdyoz_JUOGv-J3D8D4Hj4cAIxzwUz6Iiq0Q0SE0Gqe-wxjo2xGR6tKxV_unLDetfiQ_05EpLPEv6_ncvNSnxuF-tRLrffdmIp3S5BoSKfobJRbiHz1wenvstQHgsq0CsxERHYrkV6_1q9SDSjZjoxVv9dg6J7UVi1AnqBepPgxta3HOXDfnaWU_Xm7o5ed6uh8yBunV713BB39gVZ0xXpmfduWHIh-5VdsXSdk-twUuxHBUnPbG8Fkej4nicHN9Bjq7Fyah4cUXOTh9-BwAA___c34Yw

# 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#eJyckkFr3DAQhe_9FWJOXlYla7m9CAoqtIENW7s43lMxRrVmHRFXMpIMCcH_vViGJg5J281Rn-bpvZnRAxirMJe_0AP_ASnUFAZnW_TeuhktBXt1B3xHQZthDDOuKbTWIfAHCDr0CBwq-bPHEqVCd7EDCgqD1H18tr3RvWrkGGyjjcK75nTbaNU4PDWDdGiCiBVA4XqQxnPyHuqJgh3Do50PskPg6UTfFildR1p85xRaseYW78VC_icDezXDo_VorFPoUK1s61n5r5IXGvmGrsMrqw26C7ZupLofkJPL4-FAimP1tSRXxT4HCj2eQiLYlopsu_nkdHcTEpFuqWDbDVC41H1Ax0mSJIKR_TXJi4rkx8NhQ4qSJCJbsQ35nH8hifgQ6VPy8Q8BCsUYOBEpFYyK7NXxZeessEQ_WOPx-RhffHk3zw5Vh8suvB1di9-dbaPNciyiLgKFPiy3bDnsTbyKf-ypOD1DzJ6L2V_F2Uq8m-rp3e8AAAD__-VhJtM=

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#eJy0lMGOmzAQhu99CjRnI2NDslmftse9dKtNbxUHF48oEsHINlLbFe9eAUJboo2x5PSInT_fr2-seYNOK_wiL2hBfAcGBDgQyIFAAQQOUBLoja7QWm2mnyyBZ_ULREag6frBTcclgUobBPEGrnEtgoBv8keLrygVGpoBAYVONu2M6U1zkeb3k5JOAoFzLzsrkpSyRHYqYYl2P9EAgZfBieSJQTkS0IN7Z1knawTBRhLe5ywvfYuGHrZdluNz8wdFMtU8O-mH8pvQd9bQaaPQoNqwyvFmrc91bbCWThvKssiC-aYgC58SC5kSZSnlUXPaabTO6XjXOfFwDTxIA09pHqVhp9Gq4eGuGvJwDXmQhjylRZSGnUarhtNdNRThGoogDUVKD1EadhqtGh7_2_L6APqKttedxasl9vE_Z9NyQ1XjsgmtHkyFX42uZszy-TLn5gOF1i23bPl47parqeC_YeYN802YXYe5n7yDzr3pwh8uYnofvOGjn3yMIT94wyc_-RRDfvTPKtt5Jv5Hds0ux09_AwAA___WSOum


statement ok
INSERT INTO data SELECT a, b, c::FLOAT, 1
FROM generate_series(1,10) AS a, generate_series(1,10) AS b, generate_series(1,10) AS c;

query T
SELECT url FROM [EXPLAIN ANALYZE (DISTSQL) CREATE STATISTICS s1 ON a FROM data]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lEFvmzAUx-_7FNY7GxkbkqY-dcde1qnZbeLgxk8MiWBkG21dle8-GRR1iRrjZeGI4b3_T78_8ht0RuMXtUcH8jtwoCCAQgEUSqCwgopCb80OnTM2fDINPOpfIHMKTdcPPhxXFHbGIsg38I1vESR8Uy8tPqPSaFkOFDR61bRjTG-bvbKvD1p5BRS2veqcJBnjRHWacGL8D7RA4WnwkjwEKGt-OmJRaUl4HrY5r9qW-GaPkuQOqgMFM_h3GudVjSD5gaYTb9W-b9Gy1SntdLxtfoeogOvVhHUpVFwMfc8aOmM1WtQnWdXhItbnurZYK28s4_l_AhYngDy9R57SI-MZEylNiuubnGE-Nrm-aZMiXZRIEiUyViwsaob5KOrupqKKdFFFkqgiY-XComaYj6I2NxVVposqk0SVGVuliCquFzXDfBR1v9gl-kHoM7redA7PLtOPN-fhkkVd43QjOzPYHX61ZjfGTI9P49x4oNH56S2fHh676VUA_HuYR4fFyTA_Hxbx5JnoIjpdxofLf-EeLY5C4eXVoyMOOx8qrc7XrqJr13Gm9TJMd9G1mzjTZhmm-3jz-cxPF_9l06mqw6c_AQAA__9MtUBw
