github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/pkg/sql/opt/exec/execbuilder/testdata/distsql_join (about) 1 # LogicTest: 5node 2 3 statement ok 4 CREATE TABLE data (a INT, b INT, c INT, d INT, PRIMARY KEY (a, b, c, d)) 5 6 # Split into ten parts. 7 statement ok 8 ALTER TABLE data SPLIT AT SELECT i FROM generate_series(1, 9) AS g(i) 9 10 # Relocate the ten parts to the five nodes. 11 statement ok 12 ALTER TABLE data EXPERIMENTAL_RELOCATE 13 SELECT ARRAY[i%5+1], i FROM generate_series(0, 9) AS g(i) 14 15 # Verify data placement. 16 query TTTI colnames,rowsort 17 SELECT start_key, end_key, replicas, lease_holder from [SHOW RANGES FROM TABLE data] 18 ---- 19 start_key end_key replicas lease_holder 20 NULL /1 {1} 1 21 /1 /2 {2} 2 22 /2 /3 {3} 3 23 /3 /4 {4} 4 24 /4 /5 {5} 5 25 /5 /6 {1} 1 26 /6 /7 {2} 2 27 /7 /8 {3} 3 28 /8 /9 {4} 4 29 /9 NULL {5} 5 30 31 # ensure merge joins are planned when there's orderings. 32 query TTTTT 33 EXPLAIN (VERBOSE) (SELECT * FROM (SELECT a,b FROM data) NATURAL JOIN (SELECT a,b FROM data AS data2)) 34 ---- 35 · distributed true · · 36 · vectorized true · · 37 render · · (a, b) · 38 │ render 0 a · · 39 │ render 1 b · · 40 └── merge-join · · (a, b, a, b) · 41 │ type inner · · 42 │ equality (a, b) = (a, b) · · 43 │ mergeJoinOrder +"(a=a)",+"(b=b)" · · 44 ├── scan · · (a, b) +a,+b 45 │ table data@primary · · 46 │ spans FULL SCAN · · 47 └── scan · · (a, b) +a,+b 48 · table data@primary · · 49 · spans FULL SCAN · · 50 51 # TODO(radu): enable these tests when joins pass through orderings on equality 52 # columns. 53 # 54 # # ORDER BY on the mergeJoinOrder columns should not require a SORT node 55 # query TTTTT 56 # EXPLAIN (VERBOSE) (SELECT * FROM (SELECT a,b FROM data AS data1) JOIN (SELECT c,d FROM data AS data2 ORDER BY c,d) ON a=c AND b=d ORDER BY c,d) 57 # ---- 58 # join · · (a, b, c, d) a=c; b=d; a!=NULL; b!=NULL; +a,+b 59 # │ type inner · · 60 # │ equality (a, b) = (c, d) · · 61 # │ mergeJoinOrder +"(a=c)",+"(b=d)" · · 62 # ├── render · · (a, b) a!=NULL; b!=NULL; +a,+b 63 # │ │ render 0 data1.a · · 64 # │ │ render 1 data1.b · · 65 # │ └── scan · · (a, b, c[omitted], d[omitted]) a!=NULL; b!=NULL; c!=NULL; d!=NULL; key(a,b,c,d); +a,+b 66 # │ table data@primary · · 67 # │ spans ALL · · 68 # └── sort · · (c, d) c!=NULL; d!=NULL; +c,+d 69 # │ order +c,+d · · 70 # └── render · · (c, d) c!=NULL; d!=NULL 71 # │ render 0 data2.c · · 72 # │ render 1 data2.d · · 73 # └── scan · · (a[omitted], b[omitted], c, d) a!=NULL; b!=NULL; c!=NULL; d!=NULL; key(a,b,c,d) 74 # · table data@primary · · 75 # · spans ALL · · 76 # 77 # query T 78 # SELECT url FROM [EXPLAIN (DISTSQL) (SELECT * FROM (SELECT a,b FROM data AS data1) JOIN (SELECT c,d FROM data AS data2 ORDER BY c,d) ON a=c AND b=d ORDER BY c,d)] 79 # ---- 80 # https://cockroachdb.github.io/distsqlplan/decode.html#eJzElk9v2kwQxu_vp4jm9FbZCu_a_LNUiWsqNanS3ioODt6CJcKitZEaRXz3ChyEbMM-ni6yjwR-3tmZ3-TxO21Mqh-TV51T_IskCVIkKCRBEQka0lzQ1pqFznNjDz8pgYf0D8WBoGyz3RWHP88FLYzVFL9TkRVrTTH9TF7W-lknqbaDgASlukiy9fGYrc1eE_s2S5MiIUFPuyK-m0kxUzTfCzK74uOp54e9vN2tknxVfcwJmQvKi2SpKZZ78W8FDlsUGIpZVCvwfLLinPzD2ELbgQzq97kXM3Xv24TwainnRxmbaqvTq-e3_uWF233Tdqm_mmxzuGKtsWv9u_j_g_70xWbL1fljxQThbnfkf8cLlT-az2Y7UNWxXCthWClBtndN9rIMjAJHt10GcPJpGWQHyyD7XYZRF8ug2g9a9WIio8DxbU0EJ59MVB2YqPo1cdyFiWH7QYe9mMgocHJbE8HJJxPDDkwM-zVx0oWJUftBR72YyChwelsTwcknE6MOTIz6NXHa9avqhYKedb41m1y3egMNDlfS6VKXDcvNzi70d2sWx2PKj09H7vjmk-q8KL8Nyw8Pm_KrQ4Ht4YkPLJUXPfKhVeCmZZ0OKnQFDuqwYjRc8eCJD1xrOJce-dC1hjfo0NnwyD2tyD0t6R7X0Gc_3DDYDzeM9gPQYD_cNNqPkbPjY3fDxz774YbBfrhhtB-ABvvhptF-THz2Y-pjuBsGhrthZDiggeFuGiZAI0AqHZfgn4psJAhHckADywGNNEc48BzgSHTZyBGO6bKRIxzVAQ1cBzSSHeHAdoBD3d0ZKodAd06INmfOSVEuDXVn5SgXh7q7kxTpzolSLo10Z4UpG0e6s-K0ibvzVE6B7pxEbc6cE6lcGurOClUujnRX7lSt6z7f__c3AAD__68_ThQ= 81 # 82 # # ORDER BY on the columns equal to the mergeJoinOrder columns should not 83 # # require a terminal SORT node. 84 # query TTTTT 85 # EXPLAIN (VERBOSE) (SELECT * FROM (SELECT a,b FROM data AS data1) JOIN (SELECT c,d FROM data AS data2 ORDER BY c,d) ON a=c AND b=d ORDER BY a,b) 86 # ---- 87 # join · · (a, b, c, d) a=c; b=d; a!=NULL; b!=NULL; +a,+b 88 # │ type inner · · 89 # │ equality (a, b) = (c, d) · · 90 # │ mergeJoinOrder +"(a=c)",+"(b=d)" · · 91 # ├── render · · (a, b) a!=NULL; b!=NULL; +a,+b 92 # │ │ render 0 data1.a · · 93 # │ │ render 1 data1.b · · 94 # │ └── scan · · (a, b, c[omitted], d[omitted]) a!=NULL; b!=NULL; c!=NULL; d!=NULL; key(a,b,c,d); +a,+b 95 # │ table data@primary · · 96 # │ spans ALL · · 97 # └── sort · · (c, d) c!=NULL; d!=NULL; +c,+d 98 # │ order +c,+d · · 99 # └── render · · (c, d) c!=NULL; d!=NULL 100 # │ render 0 data2.c · · 101 # │ render 1 data2.d · · 102 # └── scan · · (a[omitted], b[omitted], c, d) a!=NULL; b!=NULL; c!=NULL; d!=NULL; key(a,b,c,d) 103 # · table data@primary · · 104 # · spans ALL · · 105 # 106 # query T 107 # SELECT url FROM [EXPLAIN (DISTSQL) (SELECT * FROM (SELECT a,b FROM data AS data1) JOIN (SELECT c,d FROM data AS data2 ORDER BY c,d) ON a=c AND b=d ORDER BY a,b)] 108 # ---- 109 # https://cockroachdb.github.io/distsqlplan/decode.html#eJzElk9v2kwQxu_vp4jm9FbZCu_a_LNUiWsqNanS3ioODt6CJcKitZEaRXz3ChyEbMM-ni6yjwR-3tmZ3-TxO21Mqh-TV51T_IskCVIkKCRBEQka0lzQ1pqFznNjDz8pgYf0D8WBoGyz3RWHP88FLYzVFL9TkRVrTTH9TF7W-lknqbaDgASlukiy9fGYrc1eE_s2S5MiIUFPuyK-m0kxUzTfCzK74uOp54e9vN2tknxVfcwJmQvKi2SpKZZ78W8FDlsUGIpZVCvwfLLinPzD2ELbgQzq97kXM3Xv24TwainnRxmbaqvTq-e3_uWF233Tdqm_mmxzuGKtsWv9u_j_g_70xWbL1fljxQThbnfkf8cLlT-az2Y7UNWxXCthWClBtndN9rIMjAJHt10GcPJpGWQHyyD7XYZRF8ug2g9a9WIio8DxbU0EJ59MVB2YqPo1cdyFiWH7QYe9mMgocHJbE8HJJxPDDkwM-zVx0oWJUftBR72YyChwelsTwcknE6MOTIz6NXHa9avqhYKedb41m1y3egMNDlfS6VKXDcvNzi70d2sWx2PKj09H7vjmk-q8KL8Nyw8Pm_KrQ4Ht4YkPLJUXPfKhVeCmZZ0OKnQFDuqwYjRc8eCJD1xrOJce-dC1hjfo0NnwyD2tyD0t6R7X0Gc_3DDYDzeM9gPQYD_cNNqPkbPjY3fDxz774YbBfrhhtB-ABvvhptF-THz2Y-pjuBsGhrthZDiggeFuGiZAI0AqHZfgn4psJAhHckADywGNNEc48BzgSHTZyBGO6bKRIxzVAQ1cBzSSHeHAdoBD3d0ZKodAd06INmfOSVEuDXVn5SgXh7q7kxTpzolSLo10Z4UpG0e6s-K0ibvzVE6B7pxEbc6cE6lcGurOClUujnRX7lSt6z7f__c3AAD__68_ThQ= 110 111 # ORDER BY on a different ordering should require a terminal SORT NODE. 112 query TTTTT 113 EXPLAIN (VERBOSE) (SELECT * FROM (SELECT a,b FROM data AS data1) JOIN (SELECT c,d FROM data AS data2 ORDER BY c,d) ON a=c AND b=d ORDER BY b,a) 114 ---- 115 · distributed true · · 116 · vectorized true · · 117 sort · · (a, b, c, d) +b,+a 118 │ order +b,+a · · 119 └── hash-join · · (a, b, c, d) · 120 │ type inner · · 121 │ equality (a, b) = (c, d) · · 122 ├── scan · · (a, b) · 123 │ table data@primary · · 124 │ spans FULL SCAN · · 125 └── scan · · (c, d) · 126 · table data@primary · · 127 · spans FULL SCAN · · 128 129 query T 130 SELECT url FROM [EXPLAIN (DISTSQL) (SELECT * FROM (SELECT a,b FROM data AS data1) JOIN (SELECT c,d FROM data AS data2 ORDER BY c,d) ON a=c AND b=d ORDER BY b,a)] 131 ---- 132 https://cockroachdb.github.io/distsqlplan/decode.html#eJy8ll1v-jYUh-_3KaxzBatRsBPeIlWiW5lG1UEHvdhUcWGIV5Bowpwgrar63aeERm0I9Yn_hlxVCX7iX3ye05M3iP_dgg_z0f3o10eyV1vy22z6B3ka_fVwfzOekMbteP44__O-SRofa34-rMgvBSXLw51AJILczLO_rEnupin-sWpFSVBexcl0djuakV_-zhY0yXRCGoJck1WT3ExuSWNJrrPb-aolJaK5AAphFMiJeJEx-E_AgAIHCi5Q8IBCBxYUdipayTiOVLrkLQPGwX_gtylswt0-SW8vKKwiJcF_g2STbCX48CiWWzmTIpDKaQOFQCZis8222anNi1CvwzQ5UJjvRBj7pOUwIsKAMBIla6mAwnSf-GTI6JDD4p1CtE8-tvvcZflK1iJeF5-fIwsKcSKeJfjsnf5Y8o5NcpcOPdvk_Nvkn4_ah5EKpJJB4WGLlMSWnHj930W8vos2oVQOOyrcVv6TNLKMzWu1eV7nF4Va0VPv_flCrkkp5pFK0hxHZRjyKzpkV9_u4VU4tFPn8eXBJ8JMola0c3j7-JRPRugUIrDqxrEqxjms5fCausUge9cu-_n7hdXcL-zS_YIUI--Xrk2_8OoF55UKzluOW5OsBtl7dtnPLyuvWVZ-aVmRYuSy9mxkdasX3K1UcLfleDXJapC9b5f9_LK6NcvqXlpWpBi5rH0bWb3qBfcqFdxrOZ2aZDXIPrDLfn5ZvZpl9S4tK1KMXNbBuT6bT-wxk_EuCmNZ6Wu4nZ6YDJ7loQJxtFcr-aCiVbbN4XKacdknTiDj5PArP1yMw8NPacDqcM8GZsyK7ljRAz3NDM6Mm8E9G_jozEzpjhU90NP8mG5_pd0C3D6GXS3s6avlaWHO9Ft3bPpDDyP9oYex_kBopD8QGumPrk1_6GGkP_Qw1h8IjfQHQiP90dNa2tdL2rfpj4GN4XoYMVwPY4YjNGI4QmMTwGRslv-TmsxNUxodAkaT0xhHNGelKVJQlXG96Ew_RhDTWWmOmKiO0IjrCI3JjuGI7RiO6V6aoUa662lMdz2N6o7gmO4IjuleGqRF3buI7qWZYqR7aaYY6a6nMd31NKo7gmO6Izime2meGumupzHd9TSqO4JjuiM4pntpqha_tdt63Xlptmh1X7z_9H8AAAD__xwOvEs= 133 134 # TODO(radu): rework these tests (the inner ORDER BY aren't useful anymore). 135 # 136 # # Merge joins should be planned for (FULL|LEFT|RIGHT) OUTER joins 137 # 138 # query T 139 # SELECT url FROM [EXPLAIN (DISTSQL) (SELECT * FROM (SELECT a,b FROM data AS data1) FULL OUTER JOIN (SELECT c,d FROM data AS data2 ORDER BY c,d) ON a=c and b=d ORDER BY a,b)] 140 # ---- 141 # https://cockroachdb.github.io/distsqlplan/decode.html#eJzEl0Fv2kAQhe_9FWhOrbJVvGNDwFIlLq2UKA1VmpwqDg7eEiTCorWRGkX57xUQhAxh3zqD8NHBb994Zj6_-IVmNjc32ZMpKP1DmhQxKYpJUUKK2jRUNHd2ZIrCuuUta8Fl_o_SSNFkNl-Uyz8PFY2sM5S-UDkpp4ZSussepubWZLlx5xEpyk2ZTaYrm7mbPGXuuZ9nZUaKBosybfW16jMNXxXZRfl26vawh-fWY1Y8Vo_ZSIaKijIbG0r1q_pYge2AAmPVT3YK3DpzHeff1pXGneto93nOVJ_PpE2ID5ayPcq63DiTH_QPvvOdp_tp3Nhc2cls-Yg7jb17npu09eP--ro1uL_7ftu6GlzekKKp-Vt-fjv1yzc3GT9uLysbovxjSD4wBg4aw9ajLe_vO8Xc2K92fs7Vfh0qoVMpQYfvuW4ExBoFdo4LInDegKhPAKJuFsROkyCGjYGDxnAIRA5fMm6EghoFXhyXAuC8oYBPQAE3S8FFkxSEjYGDxnCIgjh8yeJGKKhRYPe4FADnDQXxCSiIm6Wg2yQFYWPgoDEcoiAJX7KkEQpqFNg7LgXAeUNBcgIKkmYp6DVJQdgYOGgMIZ8m73jcmmJuZ4UJ-uKIlu00-dish1XYhRuZX86OVjbry8FKt_pvLzdFuf41Xl9cztY_LQsMF_ckYp2I1CJvBt56Vx1V1BVxtCvmGg3neuKeRLzT8LpqkTcD79jb8MTf8MQrbvtH3faPuuO37kjg8ovBgvvFCC6gFnkjuC68He_6G96VwOUXgwX3ixFcQC3yRnD1vA3Xkb_jeu9VWgcvvfcqrUMIUIM1BWrECJLL3GEE7b1Qq1OLwdT23qh1QAFqsK1AjVBBcpk7gkX700S3Qd_9eYJoEeUJUKN9lSUKksvcIS3-UNEgVbQoVoAa7assWJBc5g5p8WcLg2xhUbawKFuAGuwrUCNakFzmjmhhf7YwyBYWZQtQo88MWbYgucwd0cL-bGGQLVwvW4avn_4HAAD__9-kdhE= 142 # 143 # query T 144 # SELECT url FROM [EXPLAIN (DISTSQL) (SELECT * FROM (SELECT a,b FROM data AS data1) LEFT OUTER JOIN (SELECT c,d FROM data AS data2 ORDER BY c,d) ON a=c and b=d ORDER BY a,b)] 145 # ---- 146 # https://cockroachdb.github.io/distsqlplan/decode.html#eJzEl0Fv2k4Qxe__T4Hm9K-yVbxjQ8BSJS6plKgNVUpPFQcHbwkSYdHaSI2ifPcKCEKGsG-dQfjo4LdvPDM_v_iF5jY3d9mTKSj9TZoUMSmKSVFCito0UrRwdmyKwrrVLRvBTf6X0kjRdL5Ylqs_jxSNrTOUvlA5LWeGUhpmDzNzb7LcuMuIFOWmzKaztc3CTZ8y99zPszIjRYNlmbb6WvWZRq-K7LJ8O3V32MNz6zErHqvHbCUjRUWZTQyl-lV9rMB2QIGx6id7Be6cuY7zT-tK4y51tP88F6rPF9ImxEdL2R1lXW6cyY_6B9_5ztN9N25ibu10vnrEvcYOnxcmbX27_jpsDX4Nr-9bt4ObO1I0M3_K_99O_fTFTSePu8vKhij_GJIPjIGDxrDzaMv7-04xd_azXVxytV_HSuhUStDhe64bAbFGgZ3TggictyDqM4ComwWx0ySIYWPgoDEcA5HDl4wboaBGgVenpQA4byngM1DAzVJw1SQFYWPgoDEcoyAOX7K4EQpqFNg9LQXAeUtBfAYK4mYp6DZJQdgYOGgMxyhIwpcsaYSCGgX2TksBcN5SkJyBgqRZCnpNUhA2Bg4aQ8inyTse96ZY2Hlhgr44olU7TT4xm2EVdunG5oez47XN5nKw1q3_28tNUW5-jTcXN_PNT6sCw8U9iVgnIrXIm4G33ldHFXVFHO2LuUbDuZ64JxHvNbyuWuTNwDv2NjzxNzzxitv-Ubf9o-74rTsSuPxisOB-MYILqEXeCK4rb8e7_oZ3JXD5xWDB_WIEF1CLvBFcPW_DdeTvuD54ldbBSx-8SusQAtRgTYEaMYLkMncYQQcv1OrUYjC1gzdqHVCAGmwrUCNUkFzmjmDR_jTRbdB3f54gWkR5AtRoX2WJguQyd0iLP1Q0SBUtihWgRvsqCxYkl7lDWvzZwiBbWJQtLMoWoAb7CtSIFiSXuSNa2J8tDLKFRdkC1OgzQ5YtSC5zR7SwP1sYZAvXy5bR63__AgAA__86O3Xp 147 # 148 # query T 149 # SELECT url FROM [EXPLAIN (DISTSQL) (SELECT * FROM (SELECT a,b FROM data AS data1) RIGHT OUTER JOIN (SELECT c,d FROM data AS data2 ORDER BY c,d) ON a=c and b=d ORDER BY a,b)] 150 # ---- 151 # https://cockroachdb.github.io/distsqlplan/decode.html#eJzEl0Fv2kAQhe_9FWhOrbJV2LEhYKkSl6olUkNF6ani4OAtQSIsWhupUZT_XgFByBD2rTMIHx389o1n5vOLn2lhM3OXPpqckj-kSRGToogUxaSoRWNFS2cnJs-tW9-yFfSzf5Q0Fc0Wy1Wx_vNY0cQ6Q8kzFbNibiihUXo_N0OTZsZdN0lRZop0Nt_YLN3sMXVPvSwtUlI0WBVJo6dVj2n8osiuitdT94fdPzUe0vyhfMxOMlaUF-nUUKJf1PsKbAUUGKlefFDg3pmrOP-yrjDuWjcPn-dK9fhK2oToZCn7o6zLjDPZSf_gO994uh_GTc2tnS3Wj3jQ2NHT0iSNYf_b91Fj8Hv0ddi4HfTvSNHc_C0-vh776YubTR_2l6UVUf45xO-YAwfNYe_Rkjf4jWLu7Ge7vOZyw06V0C6VoMMXXddCYoUC2-clETjvSNQXIFHXS2K7VhLD5sBBczhFIodvGdeCQYUCb86LAXDeYcAXwIDrxeCmVgzC5sBBcziFQRS-ZVEtGFQosHNeDIDzDoPoAhhE9WLQqRWDsDlw0BxOYRCHb1lcCwYVCuyeFwPgvMMgvgAGcb0YdGvFIGwOHDSHkM-TNzyGJl_aRW6Cvjqa636abGq208rtyk3MT2cnG5vt5WCj2_zDl5m82P4abS_6i-1P6wLDxV2JWMcitcibgbc-VDdL6pK4eSjmCg3nauKuRHzQ8KpqkTcD78jb8Njf8NgrbvlH3fKPuu23bkvg8ovBgvvFCC6gFnkjuG68He_4G96RwOUXgwX3ixFcQC3yRnB1vQ3XTX_H9dGrtApe-uhVWoUQoAZrCtSIESSXucMIOnqhlqcWgakdvVGrgALUYFuBGqGC5DJ3BIv2p4lugb778wTRIsoToEb7KksUJJe5Q1r8oaJBqmhRrAA12ldZsCC5zB3S4s8WBtnComxhUbYANdhXoEa0ILnMHdHC_mxhkC0syhagRp8ZsmxBcpk7ooX92cIgW7hatoxfPvwPAAD__wYqd4g= 152 # 153 # 154 ## Nested merge joins should be planned on the same ordering 155 # query TTTTT 156 # EXPLAIN (VERBOSE) (SELECT a,b from data AS data3 NATURAL JOIN ((SELECT a,b FROM data AS data1) JOIN (SELECT c,d FROM data AS data2 ORDER BY c,d) ON a=c AND b=d)) 157 # ---- 158 # render · · (a, b) a!=NULL; b!=NULL 159 # │ render 0 data3.a · · 160 # │ render 1 data3.b · · 161 # └── join · · (a, b, c[omitted], d[omitted], a[omitted], b[omitted], c[omitted], d[omitted]) a=c=a=c; b=d=b=d; a!=NULL; b!=NULL 162 # │ type inner · · 163 # │ equality (a, b, c, d) = (a, b, c, d) · · 164 # │ mergeJoinOrder +"(a=a)",+"(b=b)",+"(c=c)",+"(d=d)" · · 165 # ├── scan · · (a, b, c, d) a!=NULL; b!=NULL; c!=NULL; d!=NULL; key(a,b,c,d); +a,+b,+c,+d 166 # │ table data@primary · · 167 # │ spans ALL · · 168 # └── join · · (a, b, c, d) a=c; b=d; a!=NULL; b!=NULL; +a,+b 169 # │ type inner · · 170 # │ equality (a, b) = (c, d) · · 171 # │ mergeJoinOrder +"(a=c)",+"(b=d)" · · 172 # ├── render · · (a, b) a!=NULL; b!=NULL; +a,+b 173 # │ │ render 0 data1.a · · 174 # │ │ render 1 data1.b · · 175 # │ └── scan · · (a, b, c[omitted], d[omitted]) a!=NULL; b!=NULL; c!=NULL; d!=NULL; key(a,b,c,d); +a,+b 176 # │ table data@primary · · 177 # │ spans ALL · · 178 # └── sort · · (c, d) c!=NULL; d!=NULL; +c,+d 179 # │ order +c,+d · · 180 # └── render · · (c, d) c!=NULL; d!=NULL 181 # │ render 0 data2.c · · 182 # │ render 1 data2.d · · 183 # └── scan · · (a[omitted], b[omitted], c, d) a!=NULL; b!=NULL; c!=NULL; d!=NULL; key(a,b,c,d) 184 # · table data@primary · · 185 # · spans ALL · · 186 # 187 # query T 188 # SELECT url FROM [EXPLAIN (DISTSQL) (SELECT * FROM (SELECT a,b from data AS data3 NATURAL JOIN ((SELECT a,b FROM data AS data1) JOIN (SELECT c,d FROM data AS data2 ORDER BY c,d) ON a=c AND b=d)))] 189 # ---- 190 # https://cockroachdb.github.io/distsqlplan/decode.html#eJzMmE1v2kwQx-_Pp4jm9FTZKt61eZUq-ZpKTaq0t4qDg7cEiWBkG6lRxHevgFBiL5m_xxY2R15-zOxk9-d_9pWWSWzvomeb0fgXaVJkSJFPigJS1KOJolWaTG2WJen2K3vgNv5DY0_RfLla59u3J4qmSWpp_Er5PF9YGtPP6HFhH2wU2_TGI0WxzaP5Yldmlc6fo_QljKM8oslGUbLO337oyD--XD1F2VORDLUKjQp9FQY02UwUZXk0szTWG1Wvsx7TmaL7dT6-2tWs0WahQVO3Qc3N7tDh2zzed3gs7UtK_0jSfFu1V17QtQrNddMpBB-2cvypJI1tauMP61f-5onVfbPpzH5N5kub3pjSYBf2d_7_G_3pSzqfPR1fFraCOjXumvu213AgKvSvVRgIBvOOQAPqfTygw6-UBvXvbe7sHFffr7D69fLUak42f5d8TlY3vlf65unag0JtLTiQ7bpM0Fm_E5dJRsfNrobLQOmDy_otuEx36zJ9cS6TD-SsLuu36zJT_VCYdn0i6GzQiU8EDWpudjV8AkoffDJowSemW5-Yi_OJfCBn9cmgXZ_41Q-F365PBJ0NO_GJoEHNza6GT0Dpg0-GLfjE79Yn_sX5RD6Qs_pk2K5PguqHImjXJ4LORp34RNCg5mZXwyeg9MEnoxZ8EnTrk-DifCIfyFl9Muru7uZEaw82WyXLzFa6mfG2i7PxzO5HmSXrdGq_p8l0V2b_8n7H7f7LjG2W7z_t7V_cLvcfbRusDmvTiB42oU3QhPY9ntYsDUrzsNaN6EET2viN6BFPmzLtFUZegL0y7AsmbmRwaeJSetCELk1cSo94OhCcbSFcOttSetiENuDPzdOls-3QPXab9vk93uf3uOY3-aCJi3kYuRjQwMU8jVzM08jFwyYu5mHkYkADF_M0cjGggYtH7D7VHr9PNf_0BMcT0EjHCAc-BjgSMsKBkTX_CAVKBjRyMsKBlAGOrAxwpGXNxwfgZc0_SIFaAY3cinAgV4AjuwIcRl3-aYqKgxyAwi7AUdoFOQLFXYADx2o-Seg-kKyTJUSS5WkoWYAjyfI4lCzAkWQlOUpKQ8mKkpQUh5IVZSkXd1KFSLJOqhBJlqehZAGOJMvjULI8jiRrJIFKSiPJIhxIFuBIsghHlwpOqijsWGN4yRonVUgkC2gkWYQDyQIcSRbhQLJGkqikNJIswoFkAY4kC3AkWePEColkjZMqJJIFNJIswoFkAY4kC3AoWUmgktJQsqJAJcWhZEWBysWdVFGU7BBIVnJF4x4X0R2NGEeSFd3SiHEkWUmiktJQsqJEJcWhZEWJyr04d2IFK9nJ5r-_AQAA__9IVxsL 191 # 192 # 193 # statement ok 194 # CREATE TABLE distsql_mj_test (k INT, v INT) 195 # 196 # query T 197 # SELECT url FROM [EXPLAIN (DISTSQL) (SELECT l.k, r.k FROM (SELECT * FROM distsql_mj_test ORDER BY k) l INNER JOIN (SELECT * FROM distsql_mj_test ORDER BY k) r ON l.k = r.k)] 198 # ---- 199 # https://cockroachdb.github.io/distsqlplan/decode.html#eJyskk9Lw0AQxe9-CpmT0pVk06SHgJBrBVup3qSUmB3jSpqNsxtQSr-7JHtIE8z2D952Z-f35r1ldlAqgYt0ixriV-DAIII1g4pUhlorasq2aS6-IfYZyLKqTVNeM8gUIcQ7MNIUCDEs1J2qvAgYCDSpLNq2PQNVmw7SJs0R4tmeHQhzt_BL-lbgClOB5Pk9eahIblP6SYTURn8Vm-3nxqA2wGBZm_g64TDmgJ_j4FmRQfJ4f3jCJ6PywaUBg_8KOL0g4PT0gOGofKdal4oEEorhThxv-cPjI1KOD0qWSF7YN1rgu7lJ-OT2nmT-YY_dF7EkGI0R9WIc2fAV6kqVGk9acb_JgCJH-yda1ZThE6msHWOvy5ZrCwK1sa8ze5mX9qkxeAhzJxy44cAJRz2YD-GpEw7dk8MzJgdDOHLC_mDyen_1GwAA___yFZqv