# LogicTest: 5node-dist-opt

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) SELECT sum(a) FROM data]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJyslE2PmzAQhu_9FWhOrWRkbCCb5ZQe99ButWlPFQcXjyhSgpFtpFYR_70CDoEoMa68Rz5eP--jseYCrZL4VZzRQPETGBDgQCAFAhkQyKEk0GlVoTFKj7_MgRf5B4qEQNN2vR1flwQqpRGKC9jGnhAK-C5-nfANhURNEyAg0YrmNGE63ZyF_nuQwgogcOxEa4oopiwSrYxYpOxv1EDgtbdFdGBQDgRUb68sY0WNULCB-Pf5XNcaa2GVpvm6zvHHl48H9ukhhj_EXE_vW6UlapSro8vBXYQl_9ckXTVh_gNgPgOgLKY8aAQbjRbmu5ARcH9x7iXOY5oGiW80Wog_hYin_uKpl3ga0yxIfKPRQnwfIp75i2de4llM8yDxjUYL8ef32jZ3MG9oOtUavNk6909Oxm2EssZ5dRnV6wq_aVVNmPnxdcpNLyQaO39l88NLO38aCy7DzBnmqzC7DXM3eQOdOtOZO5yF9M6d4Z2bvAshPznDezd5H0J-ds8q2bgm7kt2yy6HD_8CAAD__8HMzUU=

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT sum((a-1)*1000 + (b-1)*100 + (c::INT-1)*10 + (d-1)) FROM data]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJzUlUFr2zAUx-_7FOad3E3GluykqU4u2w6BtRtpdxo-aNHDC6SSkRTYKPnuIzaldmhkDe_im5-f_vq_93uC9wxKS7wXT2iB_wAKBBgQyIFAAQQWUBFojN6itdqcjnSCtfwNPCOwU83BnX5XBLbaIPBncDu3R-DwKH7ucYNCokkzICDRid2-tWnM7kmYP6UUTgCBh0Yoy6MkpZFQMqKRdr_QAIENKomGR3EcxyVNKOd8ff-4unpPsyx7CT7EccmGuZfvNpd3weBE70BZtJlPnz-u726_XEF1JKAP7rUv60SNwOmRhPd-W9cGa-G0SRfD1h--38UlvWzDLtq83n5Q2kg0KAdXV0d_ITT7t0ryQSU0fNg0ZNgpTVI2m3GPdN-jvJwybhYOmQVBZkmazwbySPc9yNdTIOfhkPMgyHmSFrOBPNJ9D_JqCuQiHHIRBLlI0sVsII9034N887-2wxs2G7SNVhbPtsTbN2en7YGyxm7VWH0wW_xm9La16cKvra79IdG6Lku7YK261KnAvph6xWwgpudi5ncesc696sIvLqbUvfCKl37n5RTna6945XdeTXG-8c8qG3km_kd27l0d3_0NAAD__0t5SGo=

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT sum(a), count(a), max(a) FROM data]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lEFr2zAUx-_7FOadNpCRJTlp6lPKTjmkGU0Dg2GGFj28QGoZSYaNku8-bI_VDrUscHazrfzz-_N74r1CqRU-yhe0kH0DBgQ4EBBAIAUCC8gJVEYf0Vptmp90gY36BVlC4FRWtWs-5wSO2iBkr-BO7oyQwbP8ccYnlAoNTYCAQidP5xZTmdOLNL_XSjoJBPaVLG0WxZRFslQRi7T7iQYI7GqXRWsG-YWArt0byzpZIGTsQsL7PBSFwUI6behiWGd_2H5cs09A4PPu8Pj893n78LV9GoPzUfgbsy61UWhQDYD5xV-PJWP99oft903TkP9rKMYbikFDFj4uFjIuymLKZw1solHPyPL2A-PhOniQDh5TMUvHRKOejrvb6xDhOkSQDhHTdJaOiUY9Havb60jDdaRBOtKYLmbpmGjU03H_f7fbO_AntJUuLV5tuff_OWm2H6oCu1VpdW2O-MXoY4vpXndtrv2g0LrulHUvm7I7agr2w8wb5oMwuw5zP3kCLbzp1B9O5_ReeMNLP3k5h3znDa_85NUc8r1_VsnENfFfsmt2fvnwJwAA__-Um-rw

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT sum(a+b), count(a+b), max(a+b) FROM data]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lEFr2zAUx-_7FOadNiYjS3LS1KeUnXJIO5IGBsMMLXp4gVQykgIbJd992B6rExJZEPdmW_nn9-f3xHsFbRQ-yhd0UHwHBgQ4EBBAIAcCEygJ1NZs0Tljm590gYX6DUVGYKfrg28-lwS2xiIUr-B3fo9QwLP8uccVSoWWZkBAoZe7fYup7e5F2j9zJb0EAutaalckKWWJ1CphifG_0AKBFWqFtkjm7POcQ3kkYA7-jei8rBAKdiTxrR6qymIlvbF0clpqvVl-nLNPQODL0-bx-d_z8uFb-3QNzq_C35gHbaxCi-oEWB7D9Vh2rd96s_yxaBry_w3F9YbipCGLHxqLGRplKeUjjG2gV8_LdPyx8XgpPEoKT6kYQcpAr56Uu_GliHgpIkqKSGk-gpSBXj0ps_Gl5PFS8igpeUonI0gZ6NWTcv--W-8CfIWuNtrh2fa7_M9ZsxVRVditUGcOdotfrdm2mO71qc21HxQ6352y7mWhu6OmYD_MgmF-EmbnYR4mD6BFMJ2Hw_ktvSfB8DRMnt5CvguGZ2Hy7BbyfXhW2cA1CV-yc3Z5_PA3AAD__4rp88k=

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT sum((a-1)*1000) + sum((b-1)*100) + sum((c::INT-1)*10) + sum(d-1) FROM data]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJzMVc2K2zAQvvcpzJycroytn2SzOnlpewh0tyW7PRUf1GhwA1nLyAq0LHn3YrskdtjIpiElt5HGn78fDcwrFEbjo3rBCuR3oECAAQEOBAQQmEJGoLRmhVVlbP1JC1joXyATAuui3Lr6OiOwMhZBvoJbuw2ChGf1Y4NLVBptnAABjU6tNw1Nadcvyv5OtXIKCDyVqqhkEMU0UIUOaGDcT7RAYImFRiuDMKURlVIuHp_nk_c0SZK_BxKEKeu3Oh3elr3-vp2K5v7jpw-Lh_vPkO0ImK072KmcyhEk3ZHxlu_z3GKunLHxtO_46dtDmNJJbbau2L7i-0pMTopgJ0UcuLeFsRot6h5xtvPLpMm_6Dy8TCpuwpTfhCm9SdnktAPec0DHTw4dMzkxjWJ27bMzYLrzKLPLzQ4bnzwblTyLYn7tyQ-Y7iR_e7nk-fjk-ajkeRSLa09-wHQn-fnlkhfjkxejkhdRPL325AdMd5K_-z-b6g0RS6xKU1R4tLHe_nNSbzLUObZrrzJbu8Kv1qwamvb4pcE1Fxor13Zpe1gUbasW2AVTL5j1wPQYzPzMA9TcixZ-sDhH99QLnvmZZ-cw33rBcz_z_BzmO_9bJQNj4h-yY-5s9-5PAAAA__8iBW3U

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT sum(a), min(b), max(c), count(d) FROM data]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lM9r2zAUx-_7K8I7pSAj60fS1CeXnXJIOpoGBsMMLXp4gdQykgIbJf_7sH2oExpZS0hvtpVvvh8-T7w3qIzGpXpFB9kPYECAAwEBBCQQmEBBoLZmg84Z2_ykC8z1H8hSAtuq3vvmc0FgYyxC9gZ-63cIGbyoXzt8RqXR0hQIaPRqu2trart9VfZvrpVXQGBVq8plo4Sykar0iI2M_40WigMBs_fvDc6rEiFjBxJP8ViWFkvljaWTY4jVejHO2R0QWMyX45y3T4_fx7lonr4-rZcv41zencXgZzHe2_eVsRot6qPq4hAGZen_kK7Wi5_zAVZxxMriB8diBkdZQvkFoxvg6BmZ3nJ0PF4Hj9LBEyou0DHA0dNxf0sdIl6HiNIhEiov0DHA0dMxu6UOGa9DRumQCZ1coGOAo6fj4bP23AcYz-hqUzk82Xcf_3Pa7EHUJXZL05m93eA3azZtTff61ObaDxqd705Z9zKvuqMGsB9mwTA_CrPTMA83D1SLYFqGw_Ia7kkwPA03T69pvg-GZ-Hm2TXND-FZpQPXJHzJTruLw5d_AQAA__-ZF-tW

# AVG is more tricky: we do two aggregations (for the sum and for the count)
# and calculate the average at the end.
query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT avg(a+b+c::INT+d) FROM data]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lM-L4jAUx-_7V8g7KaakSavj5NRlTx7GWfxxWsqSNY-u4DQlibDL4P8-tD1MlTENaG-28dvvh88L7x1KrXAl39CC-AUMCHAgkACBFAjMICdQGb1Ha7Wp_9IGluofiJjAoaxOrn6dE9hrgyDewR3cEUHAVv454hqlQkNjIKDQycOxqanM4U2a_5mSTgKBTSVLK0YRZSNZqhEbafcXDRBYY6nQiFGWTsfjjE0zPplmiRDL1XYxgfxMQJ_cJ4F1skAQ7EzCKb8XhcFCOm3o7BJys3sZZ2wCBH687lbb5vetSn6z8rPpVGqj0KC6qMnPfigW36La7F5-L2suPumqYjTjNzmTC04WPkAWMkDKIsoHGGEPZ8fW_FEj5OFqeJAaHtFkADU9nB01T49Sk4SrSYLUJBFNB1DTw9lRs3iUmjRcTRqkJo3obAA1PZwdNc9D7MQvKtdoK11avNqNX385rncmqgLbBWv1yezxp9H7pqZ9fG1yzQuF1rWnrH1Ylu1RDdgNM2-YX4TZdZj7m3uqE2869YfTe7hn3vDc3zy_p_nJG174mxf3ND_7ZxX3XBP_Jbvuzs_fPgIAAP__psb8wQ==

# VARIANCE/STDDEV have three local (sqrdiff, sum, and count) and one final stage aggregations.
# We calculate and render the variance/stddev at the end.
query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT sum(a), round(stddev(b), 1) FROM data]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lEGL2zAQhe_9FWZOKcjYkp1sVicvTQOGNmmTbC_FFDUa3EDWMrIMLUv-e7F9WCckssBkb5LGz-_pGzGvUCiJK_GCFfCfQIEAAwIREIiBwBQyAqVWe6wqpZtPOkEq_wIPCRyKsjbNcUZgrzQCfwVzMEcEDjvx-4gbFBJ1EAIBiUYcjq1NqQ8vQv9LpDACCGxLUVTc8wPqiUJ61FPmD2ogsK4N9xJKEgbZiYCqzZtdZUSOwOmJuEd6ynONuTBKB9PzRNvnr5OEfmzCfN8s0uVykrB215y3q0_r59WuXd-Kwm5GeUtQF0pL1CjP7LOTPSwNb6VdpqunL7-2u8Xi849JwkgSkSRuChssJOqWnqdVXcimSjnn6Wo3v32H6OwO1L3D1KXDAfUDNrbHA6F62Gb37jFz58Oc-DA_iMbyGQjV4_Nwbz6RO5_IiU_kB_FYPgOhenzm9-YTu_OJnfjEfjAdy2cgVI_P43vO0CtRNliVqqjwYpZe_3PYzFiUOXYDuVK13uM3rfatTbddt7r2QGJluirtNmnRlZqAfTG1itmZmF6Kmd15wDqyqmO7OB6Te2oVz-zOszHOD1bx3O48H-P8aO9VOPBM7I_s0js7ffgfAAD__xebCC0=

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT sum(a), round(variance(b), 1) FROM data]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lEGL2zAQhe_9FWZOKSjYkp1sVieHbQOG1mm92V6KKWo0uIGsZWQZWpb892L7sE7YyAKTvUkaP7-nb8S8QKkkpuIZa-A_gQIBBgRCIBABgQXkBCqt9ljXSref9IJE_gUeEDiUVWPa45zAXmkE_gLmYI4IHHbi9xEzFBK1HwABiUYcjp1NpQ_PQv-LpTACCDxWoqy5N_epJ0rpUU-ZP6iBwLYx3IspiRnkJwKqMa92tREFAqcn4h5pXRQaC2GU9hfniR6fvs5i-rEN8z37lGw2s5h1u_a8Wz1sn9Jdt74WhV2N8pqgKZWWqFGe2ecne1gaXEu7SdL1l18_1lmyTh8-z2JG4pDEUVvKsJSoO36eVk0p2yrlnCfpbnX9FuHZLah7j6lLj30699nULo-EGoBb3rrLzJ0Pc-LD5n44lc9IqAGfu1vzCd35hE58wrkfTeUzEmrAZ3VrPpE7n8iJTzT3F1P5jIQa8Ll_zyn6RpQM60qVNV5M07f_HLRTFmWB_UiuVaP3-E2rfWfTb7edrjuQWJu-SvtNUvalNuBQTK1idiaml2Jmdx6xDq3qyC6OpuReWMVLu_NyivOdVbyyO6-mON_bexWMPBP7I7v0zk8f_gcAAP__EtIIrA==

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT stddev(a+b+c::INT+d) FROM data]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lNFq2zAUhu_3FOZcpUTGkeykqa9UlgUMW7ol6W6GGVp08AKpZSQFNkrefdge1AmNLAi-s638-T--I84rlEriSryggfQHUCDAgEAMBBIgMIWcQKXVDo1Ruv5JG8jkH0gnBPZldbT155zATmmE9BXs3h4QUtiKXwdco5CoowkQkGjF_tDUVHr_IvRfLoUVQGBTidKkQRjRQJQyoIGyv1EDgTWWEnUa8GQ8GnE65uxuzOM0zVbb-R3kJwLqaN8IjBUFQkpPxJ_ysSg0FsIqHU3PITff1otsuRxxelczPn_5__Tx6Xm1bZ6vAbCrAG-9x1JpiRrlWWl-ciPSC5HLbPX4-edmu1h8-j7ilHBGeHwdLD4Do_7zoz7zi2gYsQEm2MPZ0TMbZoLMXxTzEsXCKB5AVA9nR9T9MKJif1Gxl6g4jJIBRPVwdkTNhxGV-ItKvEQlYTQdQFQPZ0fUw_DL8x2ANZpKlQYvluj7_zyplyvKAttNbNRR7_CrVrumpn19anLNB4nGtqe0fcnK9qgG7IapM8zOwvQyzNzNPdWxM524w8kt3FNneOZunt3SfO8Mz93N81uaH9yzmvRcE_clu-zOTx_-BQAA__864QlC

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT variance(a+b+c::INT+d) FROM data]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lNGKm0AUhu_7FHKuEjJiZjTZrFeGbQNC67ZutjdFyjRzsIGsIzMTaFny7kUtrAmbcSB4p07-_B_fGc4rVFJgxl9QQ_wDKBBgQCAEAhEQWEBBoFZyh1pL1fykC6TiD8RzAvuqPprmc0FgJxVC_Apmbw4IMWz5rwPmyAWqYA4EBBq-P7Q1tdq_cPU3EdxwIPBU80rHnh9Qj1fCo540v1EBgRwrgSr2kmg2mSR0lrDpLAnjOM22qykUJwLyaN4ItOElQkxPxJ1yXZYKS26kChbnkE_f8o_pZjNJ6LRhfP7y_-nh8Tnbts_XANhVgLfeYyWVQIXirLQ42RHphchNmq0___y-ztN19vBpklCSMJKE19HCMzTqPkHqMsGA-gEbYYYDnD1By3FmyNxFMSdRzA_CEUQNcPZE3Y0jKnQXFTqJCv0gGkHUAGdP1GocUZG7qMhJVOQHixFEDXD2RN2Pvz7fAchR17LSeLFG3__nebNeUZTY7WItj2qHX5XctTXd62Obaz8I1KY7pd1LWnVHDWA_TK1hdhaml2Fmbx6oDq3pyB6ObuFeWMNLe_PyluY7a3hlb17d0nxvn9V84JrYL9lld3H68C8AAP__OC0JwQ==

# Test various combinations of aggregation functions and verify that the
# aggregation processors are set up correctly.
query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT sum(a), avg(b), sum(c), avg(d), stddev(a), variance(b), sum(a+b+c::INT+d) FROM data]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJzUllGL2kAQx9_7KZZ5Um4k2U2iMU8r5wmB1mvVu5ciR2oGK3hZ2URoOfzuJYnVKOcmIAi-ze7kv_Of_Q1sPiBRMY2jd0oh-AkcEAQgOIDgAoIHc4SNVgtKU6XzT0pBGP-BwEZYJZttlm_PERZKEwQfkK2yNUEAs-jXmiYUxaQtGxBiyqLVuiiz0av3SP-VcZRFgDDdREkasI7FWZTEjDOV_SYNCBNKYtIBk-5DqyX5gxTtB-kEQTie-W1kkiOTApl0kEkX5jsEtc2OjtIsWhIEfIfNXQ-WS03LKFPa8k5NT1--taRo537zyMmjx-eX8WwfF7vuIfIq-SKe_pgMw9Fof8Y-I04yx3N4-2I74mI7xy62idIxaYpPWpjvzA1z-5OO-cHT_97fQmPPhy-6-WoUjgdf36az4fDptSV7KDlK_5h4HUzCwfjxqSX7KAVWb8BuVyegQG2VpJFJz5JdZLKHTPrIZP_ibTknt8WbjyxvMrIW71jiBkNb47vCsHsPQyuaYxCNMIiO5dwAQ43vCobePWBwmmNwGmFwOpZ7Aww1visY_HvA4DbH4DbC4HYs7wYYanxXMPTvAUPNj8GE0o1KUjp7UT8_2c5fWoqXVD7LqdrqBX3XalGUKZfPha7YiCnNyiwvF2FSpnKDVTE3isWJmJ-LhblyTWnHqHbNYvca355R3DVX7l5TuWcU--bK_jWV-2ZWds2YmIfsvPZ89-VfAAAA__-ZSpEL

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT sum(a), min(b), max(c), count(d), avg(a+b+c::INT+d), stddev(a+b), variance(c::INT+d) FROM data]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJzUVlFr4lwQff9-RZiniCPJvTfRmKcrtULga7qrtiwsUrJmcAWbyE2EXYr_fUlCYyI1Cfggvk1m5njmzBnwfkAUh-QH75SA-xMYIHBAEIBgAYINK4S9iteUJLHKWgqAF_4B10TYRvtDmqVXCOtYEbgfkG7THYELy-DXjuYUhKQMExBCSoPtLqfZq-17oP7KMEgDQFjsgyhxtYHBtCAKNabF6W9SgDCnKCTlatLq67pkfcl7fSlc1_OXTg-1PINZ9TOZ5VDLkyIrwOqIEB_S05RJGmwIXHbE7komm42iTZDGyrDrQhYvT7q0eoDw5Pm6tPNo8kOXwyx6eH7xl7ocZXHeySrZPF58n0-92UyXvOzhlR5e6xFlj6j0iN5FkfyiyJO2QxSrkBSFNWGrY_MamPnFHli5B17u4XPmNy-b1SoV2LV8vq2Z50_-f1ssp9PHV12OUDoox6fC62TuTfyHR10yEyVjKFlOU95IzXjUpG3IIWpyhJp0Lq5I1FbEul8063LRBhsY_EY33aKlYubwfm-adzeMdzKMDwxxI8NatFQMG92vYaK7YaKTYWJgWDcyrEVLxTDnfg2zuhtmdTLMGhj2jQxr0VIxbHy_hrW8ZeaU7OMoobO_-69_2cyeARRuqHgzJPFBrembitc5TfH5nOPyREhJWlRZ8eFFRSkbsApmjWBeA7NzMG9mbqEWjWirGWxdM7fdCB42Mw-vYR41gp1mZuca5nGzV2bLmTQf2Tn36vjfvwAAAP__hM679A==

# Verify that local and final aggregation is correctly shared and de-duplicated.
query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT sum(a), stddev(a), avg(a) FILTER (WHERE a > 5), count(b), avg(b), variance(b) FILTER (WHERE b < 8), sum(b) FILTER (WHERE b < 8), stddev(b) FILTER (WHERE b > 2) FROM data]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJzslkGP2jwQhu_fr7DmtJ9klNhOIORktIAUacu2gd1Li1YpGVEkNkFOkFqt-O9VkpYkNHEiceDCCTyemdfz5rHkD4jiEBfBOybgfgUGFDhQEEDBAgo2rCkcVLzBJIlVllIUeOFPcE0Ku-hwTLPwmsImVgjuB6S7dI_gwir4vkcfgxCVYQKFENNgt89lDmr3HqhfMgzSACgsD0GUuGRgMBJEIWEkTn-gAgo-RiEql0j27WiaAm3Xdb3FyqFE8jyycS4jyMsIy6KwPlGIj2l50CQNtgguO9H-w0y2W4XbII2VYddnWb58epDW_9kYX_ypN5__WT0-vyxWf3eKHDL3nlYzn0hW3W-K2ucqu9bZLrN5mVGLnTvUMxs6iIYOorGDaDWRt5pYeneMYhWiwrBm3Pqkt5mZDT6zzI25t5g8vS1X0-ns9UFyKhmVomJz8e_NqxpZrIbnrFHZ6HXie5PF4-xBOlSOqWTmOWv8rxxjVLJMM1csAc1Qo0QKQ1qUSJsSOTTynxElMoNx3OqhqHnI-t8q1udWGWxg8Nvdq45xKh98eL9XbfeK92eC92KCDwxxOyY6xqkwMboz0caE6M-E6MWEGBjW7ZjoGKfChHNnoo0Jqz8TVi8mrIFh346JjnEqTIzvTPR5kzWY6GNyiKMEL95mzZ3N7M2G4RaLB14SH9UGP6t4k8sUy-e8Lg-EmKTFLisWXlRsZQesFjNtMa8Vs8tirlfukBbaaktfbF1zbltbPNQrD69RHmmLHb2yc43yWP-tzA5M9JBdaq9P__0OAAD__wXcSdY=

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT sum(a), avg(DISTINCT a), variance(a) FILTER (WHERE a > 0) FROM data]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJy0k0GL1DAUx-9-ivBOK6SkSTsiOc2wrlLQUTp1L9pDbB61MJuUJAVl6XeXtoe1yzhEZvaYl_zyfu_B_xGM1bhXD-hBfgMOFARQyIBCDhQ2UFPonW3Qe-umJwtQ6F8gUwqd6YcwlWsKjXUI8hFCF44IEir144glKo2OpUBBY1DdcW7Tu-5Bud9brYICCodeGS9JwjhRRhNObPiJDiiUaDQ6Sbb8-5CmGaZSymJfvaVky6EeKdghPAn4oFoEyUf6D8knt8FYp9GhXnnV44kxdm3rsFXBOrZZT3H4-ulmK14Dhd39h5t3xaEq9rcVWUr3u7LY7W_vphfkffGxuivPSYuVNI_fLI_ZLOMJE9ffrYjXFFGaImHZ9TWzeM0sSjNLWH59zTxeM4_SzBO2edlAndAs0ffWeHwWrNM_p1PgULe4pNPbwTX4xdlmbrMcP8_cXNDow3LLl0Nh5qtZ8G-Yn4XfrOD0OSwu6ZxdAueXwJv_guvx1Z8AAAD__1Jn5xc=

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT sum(a), avg(a), count(a), stddev(a), variance(a) FROM data]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lNGLm0AQxt_7V8g8XWFFdzW5nE-GywWEXtJqci9Fjm12sIGcK-sKLUf-96IWTsNlFSQPgcxOvnzf_maZd8ilwA1_wxKCn0CBAAMCHhDwgcAMUgKFkgcsS6nqn7SCSPyBwCVwzItK18cpgYNUCME76KM-IQSw479OGCMXqBwXCAjU_HhqbAp1fOPqbyi45kAgKXheBpbtUIvnwqKW1L9RAYFtpQMrpJCeCchKf3iVmmcIAT2T8XmWWaYw41oqZ9aPk-yf70L6FQg8bveb3f_vyY94Fa3XTXUtALsa4MO3yqUSqFD0TNOzOSJ1r2VM9s-vUZ2S1dU62iy_vSa71erp5S70SEhJt_GyjKPl5vGp14oxF6hqssQKqRMyYjUfj1ihf_WuXu-udPzw6ZjhO9R22KTxDyTqsJ3fZvxsPBI2CgmzHW8SkoFEHST3t0HijUfijULi2Y4_CclAog6SxW2Q-OOR-KOQ-LYzm4RkIFEHycPt9-YnAWIsC5mXeLE_P_9nt96rKDJsl3ApK3XA70oeGpu23Da65kBgqdsubYsob1t1wK6YGsWsJ6aXYmZ2HrD2jGrfLPan5J4ZxXOz83yK871RvDA7L6Y4P5hn5Q48E_Mju_ROz1_-BQAA__-gWwJr

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT sum(a), avg(b), sum(a), sum(a), avg(b) FROM data]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lEGL2z4Qxe__T2Hm9C_IyJKcbNYnl55y2E1JNqdiihoNbiBrGUmGliXfvcimrBM2ssDpbcbKy3v6jZg3aLTCZ_mKFopvwIAABwICCORAYAEVgdboA1qrjf_JIFirX1BkBI5N2zn_uSJw0AaheAN3dCeEAl7kjxNuUSo0NAMCCp08nnqb1hxfpfldKukkENi1srFFklKWyEYlLNHuJxogsOlckZSMlByqMwHduXc762SNULAziY_0ua4N1tJpQxeXiXb7p_9L9smH8RX31ZfN_vmlr2-Z85vm755do41Cg-rCsDqH47FsOt9u__R97RMK322xUWh6XEnJaSnIUP5tb15CXFyCxQ-VxQyVspTyuWOdCDXitrz_WHk8ER5FhKdUzCUyEWpE5OH-REQ8ERFFRKQ0n0tkItSIyOr-RPJ4InkUkTyli7lEJkKNiDz-22X4gfkWbasbi1dL8eN_zvyyRFXjsFmt7swBvxp96G2GdtPr-g8KrRtO2dCsm-HIBxyLWVDML8TsWszDzhPWIqjOw-J8Tu5FULwMOy_nOD8Exauw82qO82N4VtnEMwk_smvv6vzfnwAAAP__B8X2Pw==

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT avg(c), sum(c), avg(d), sum(d) FROM data]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lF-L4jAUxd_3U5T7tEIk5o-O06fKwIKwMy5Wn5ayZM2lKzhNSVPYZfC7L22FaWVMC8V50tzk9Jz8brhvkBmNL-oVCwh_AgMCHAgIICCBwBwSArk1BywKY6sjjWCt_0I4I3DM8tJV5YTAwViE8A3c0Z0QQtip3yfcotJo6QwIaHTqeKptcnt8VfZfpJVTQCDOVVaEwZSyQGU6YIFxf9ACgU3pwiASJJKQnAmY0r3bFU6lCCE7k-GRVmlqMVXOWDrvJor3z18jNgECT5v9y-7yv67yVpVPbgbhN4O8-5eZsRot6o55cvZHZbNbWeP986_1JdclrejUZbXaYqbRhkHE6NMqrk6v4m_fN6vdckKCiJEgEjSS1c_Ny4nO5djwxrMhjadsSvnY1veEavFc3Lf1fDgdPogOn1Ixlk5PqBadh_vSEcPpiEF0xJTKsXR6QrXoLO9LRw6nIwfRkVM6H0unJ1SLzuPnDdUPgmyxyE1W4NVw_fjLs2rook6xmdCFKe0Bf1hzqG2a5abW1QWNhWt2WbNYZ81WFbAtZl4x74jZtZj7nXushVct_WI5JvfcK174nRdjnB-84qXfeTnG-dHfq1nPM_E_smvv5PzlfwAAAP__uBQKgA==

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT max(a), min(b) FROM data HAVING min(b) > 2]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJyslEFr2zAUx-_7FOKdWpCRJTlpqpN7GeTQdHQ9DDYftOjhGVLLSDJslHz3kfhQJySywDlayj-_P78n3ge01uBGv6MH9RM4UBBAQQKFAigsoKLQObtF7607_GQIrM1fUDmFpu36cDiuKGytQ1AfEJqwQ1Dwpn_v8BW1QcdyoGAw6GZ3xHSuedfuX2l00EDhe6dbr0jGONGtIZzY8AcdUHjpgyIlp6WAak_B9uET54OuERTf0_RKT3XtsNbBOrY4bfT89OOu5PdA4Xm9uSvF_VWguAr85PStdQYdmhNItY9X4vlUJwpfm11Ap0gpyK8-zyUSoZRab95WVwvLk8I8fWg8ZWiMZ0zMHdtEqZGj5W3GJtItiCQLImNyroWJUiMLD7exINMtyCQLMmPFXAsTpUYWVrexUKRbKJIsFBlbzLUwUWpk4fH2i-wC8BV9Z1uPZwvt8j_nh0WHpsZhK3rbuy1-c3Z7xAyfL8fc8cCgD8MtHz7W7XB1KDgO82hYnIT5eVjEyRNoGU0X8XAxp_ciGl7Gycs55IdoeBUnr-aQH-OzyieeSfyRnbOr_Zf_AQAA__8xO-Q5

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT DISTINCT (a) FROM data]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJyslD2vmzAUhvf-CnTWGhkbyAdThi5ZmirtVjG4-ChFSjCyjdQq4r9fARK5RDfGujBi5_XzPjmW71Apid_FDQ1kv4EBAQ4EYiCQAIEUcgK1VgUao3T3kyFwlP8giwiUVd3YbjknUCiNkN3BlvaKkMEv8eeKZxQSNY2AgEQrymuPqXV5E_r_QQorgMDPWlQmC0LKAlHJgAXK_kUNBE6NzYIDg7wloBr7YBkrLggZa4l_n2-lsWVVWJpOyxw66ZOWqFE6afwl7QFRwznPhK-Qt65KLPpkp3jSiflPhPlMhLKQ8kUzmWk0_gGbVWbC_f25lz8PabzIf6bR6L9dxT_294-9_OOQJov8ZxqN_rtV_BN__8TLPwlpush_ptHov1_9TfqAdkZTq8rghPXq5Kh7sFBecHjgjGp0gT-0KnrM8Hnqc_2CRGOHXTZ8HKthqyv4PsycYT4Js-cwd5Nn0LEznbjDyZLeqTO8cZM3S8hbZ3jnJu-WkPfuWUUz18R9yZ7ZefvlLQAA__-HYNkY

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT SUM (DISTINCT A) FROM data]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJyslEGPmzAQhe_9FWhOrWTk2JBsllOq7iWH7lab9FRxcPGIImVtZBup1Yr_XgESW1DWWKFH7Lx578uz5hWUlvgoXtBC9gMYEOBAIAECKRDYQk6gNrpAa7XpfjIIjvI3ZBsClaob1x3nBAptELJXcJW7IGRwFj8v-IxCoqEbICDRierS29SmehHmz0EKJ4DAqRbKZlFMWSSUjFik3S80QOCpcVl0YJC3BHTj3rysEyVCxloSnuehsq5ShaPbaRjPfP7u_LexjdJGokE5mZq3VxJ8LkuDpXDaUDb7R07fv358OJ7Ox8cv5-jAPr0bKZlEYuEVsJAKKIspX1XCQqKxhN2NJfBwYh5EzGOarCJeSDQS391InIQTJ0HESUzTVcQLiUbi_Y3EaThxGkScxnS7ingh0Uh8_x9Wy5X5z2hrrSzOVsz1yZtu9aAscdhTVjemwG9GF73N8PnU6_oDidYNt2z4OKrhqgv4r5h5xXwiZnMx9zsvWCdedeoXp2tyb73ind95t8b5zive-533a5zv_V1tFp6J_5HNvfP2w98AAAD__4HrxaQ=

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT SUM (DISTINCT A), SUM (DISTINCT B) FROM data]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJyslMFvmzAYxe_7K9B3WiUjx4akKadM6yWHtVOTnSYOHv7EkFIb2UbaVOV_nwCJDpQYK_SIzfN7Pz_rewOlJT6JV7SQ_QQGBDgQSIBACgTWkBOojS7QWm3aX3rBXv6BbEWgUnXj2uWcQKENQvYGrnInhAyO4tcJX1BINHQFBCQ6UZ06m9pUr8L83UnhBBA41ELZLIopi4SSEYu0-40GCDw3Lot2jOw45GcCunHvdtaJEiFjZxIe6bGyrlKFo-txHr8Fv2rxfnKjtJFoUI4Ozs8XQnwpS4OlcNpQNrmXw49vnx_3h-P-6esx2rG79m5GS_zuaspklJKFd8NCuqEspnxpOzOhhnY2t7fDw7l5EDePabKUeybUwH1_O3cSzp0EcScxTZdyz4QauLe3c6fh3GkQdxrT9VLumVAD98PHTKELFi9oa60sTqbR5ZNX7ZRCWWI_0qxuTIHfjS46m_7zudN1CxKt63dZ_7FX_VYb8H8x84r5SMymYu53nrFOvOrUL06X5F57xRu_82aJ871XvPU7b5c4P_i7Ws08E_8jm3rn50__AgAA__-0ndB6

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT DISTINCT a, b FROM data WHERE (a + b + c::INT) = 27 ORDER BY a,b]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lE9r2zAYxu_7FOI9tUTGluT8qWDgwxjk0oyut-GDZr10htQykgIbJd99OIJ0CYssSOpLQHYe_x79XqE36IzGR_WKDuQPYECBAwUBFEqgMIeaQm9Ng84ZO_wlBNb6N8iCQtv1Oz88rik0xiLIN_Ct3yJIeFY_t_iESqPNC6Cg0at2e8D0tn1V9k-llVdA4XuvOidJljOiOk0YMf4XWqDwtd16tJLc3VWMzEjF74dfIeX68Xl1Tz4TvpRhARQ2Oy9JxWjFod5TMDv_3s159YIg2Z6m9__SOt92jc_np-UDgsLGarSox5j8IvMdZcKnzjkzWvEZ1PtYOVZc1U6ctGPpE2UpE81ZlvNJZzqyg6O2xQ1nytOt8SRrPMvFpNZGdnC0tryhNZFuTSRZE1leTmptZAdHa6sbWivTrZVJ1sosn09qbWQHR2sPH3Tr_of5hK43ncMT4qUvF8N1jPoFwxXuzM42-M2a5oAJy80hd3ig0fnwloXFuguvhoL_hlk0zE_C7DzM4-QRtIimy3i4vKb3PBpexMmLa8jLaHgVJ6-uIT_EZ1WMHJP4ITtn1_tPfwMAAP__0NQX6g==

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT DISTINCT a, b FROM data WHERE (a + b + c::INT) = 27 ORDER BY b,a]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lUFr2zAUx-_7FOKdWizjSLKbRjDwYQxyaUbb2_BBsx6dIbWMpMBGyXcfjiBdwiKrJMslICl__d775aG8QW80PqhXdCC_AwMKHCgIoFAChQoaCoM1LTpn7PiVEFjqXyBnFLp-2Phxu6HQGosg38B3fo0g4Vn9WOMjKo22mAEFjV516x1msN2rsr9rrbwCCk-D6p0kecGI6jVhxPifaIHC127t0Upyc1MzkpGa346fQsrlw_P9LflM-FyGBVBYbbwkNaM1h2ZLwWz8e23OqxcEybY0vf4vnfNd3_qiOiw-ICisrEaLeorJTzLfUSZcdczJaM0zaLax4tjsrOrER4w8GevRFowdIXlGa5adZJQHDJY-NSxlagqWF_yqczPRwf6nubvg3PB0azzJGs8LcVVrEx3src0vaE2kWxNJ1kRelFe1NtHB3tr9Ba2V6dbKJGtlXlRXtTbRwd7a4j-97P9gPqIbTO_wgHjq5tn45KN-wfA34czGtvjNmnaHCcvVLrfb0Oh8OGVhsezD0Vjg32EWDfODMDsO82hYxMkiXjaPp8touoqHq3OavouG53Hy_BzyfTS8iJMX55DZxIxNDdnHpqzZfvoTAAD__3tHTBk=

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT c, d, sum(a+c::INT) + avg(b+d) FROM data GROUP BY c, d]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJzUll9r4lAQxd_3U4R5aumVOPfe-CdPKfskdO3S2odlkZKaixXaRG4ibCl-9yXGVmPamYgR9C3GnMzcOb855B3iJDLD8NWk4P8FBAESBCgQoEGAB2MBc5tMTJomNn-kEAyif-C3Bczi-SLLb48FTBJrwH-HbJa9GPBhFD69mDsTRsa6bRAQmSycvazKzO3sNbRvQRRmIQi4n4dx6jstF50wjhx0kuzZWBBwZ-LIWN8J8CpQvj8YjnrCCeRVoIUTKOEEGsZLAcki27SRZuHUgI9LUb_V6-nUmmmYJdb1yp0GSgT5IK6Hfx6Ht6PH4cPNzUWgLiu3dH7r_uHXRYCfVzK_-nn7MBytrsutbqo_vTnPYfq8UxhFIGG83JxIfnuizasWcWIjY01UetnqLcSZsf1V7d0TYvXQ8vOo6vPqYxCPg_zY3mXJxty9D-vcwPvWPbWPe8Oklcxd3HGuWvSKwEU3O9yiJdneefLr2l6pNtbfKqyzVS62XHmsvWKa3WKscyZ7hU3uFZ72XjHurfeq09xeyfpsy1psy5arjsU20-yWz90zYVs2ybY8bbYZ99Zsd5tjW9VnW9ViW7VcfSy2mWa3fO6dCduqSbbVabPNuLdmu9cc27o-27oW27rlesdim2l2y-f-mbCtm2RbnzbbjHtrtvvH-db_ouCdSedJnJpaX_LtfPgmmprCqTRZ2In5bZPJqkzx83alW92ITJoV_2LxYxAXf-UNbotxV4zbYlkS437i7iFixIPU3kHqPq2W5MAVPXBFijVdWZNiyXjtkeoOLe4cAgotZkChxRwojJoBhVEzoHTJgffogfcOAaVPZ0KbCYVKpOyVCrSaiwVazeYCI-eCgZEzhmMlWMpzl8zc6WRhPEc6WlAzxSvhspfptJoznVazpjNyznRGzplO5yoywYqVjNnLdDpjkAkZrKTMXqbTas50Ws2azsg50xk5ZzqdsJJJWEl_tO2aPl7--B8AAP__baTweQ==

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT c, d, sum(a+c::INT) + avg(b+d) FROM data GROUP BY c, d ORDER BY c, d]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJzUl1Fr4k4Uxd__nyLcpxZH4p2ZWJunKf8noatLax-WRUpqBiu0RiYpbCl-9yUmrSaucyPTgL7F0ZNzc-_9HeIHLJNYj6JXnUL4GxAYcGAggIEEBgFMGaxMMtNpmpj8J4VgGP-BsMdgsVy9ZfnxlMEsMRrCD8gW2YuGECbR04u-01Gsjd8DBrHOosXLxmZlFq-ReVdxlEXA4H4VLdPQ6_roRcvYQy_JnrUBBnd6GWsTego7SoThcDQZME_xjpLMU4J5SsJ0zSB5y7ZlpFk01xDimjUv9T4xmTZ-UK1SiQ5TsnPQgh9jcTOfGz2PssT42Kv7MJU3e2xibXQcep8HN6Nfj6Px5HH0cHt7ocTl3pHMj-4fflwo_Lri-dX_44fRZHNdLX5bz9O79xylz7VKkCkO0_X2GcXBZ9zeKinqrt-qwxTvFDezNaPe9E0Ju80oD6pPjvvN4F8tEF9Xnw16HObtCC4rO5Wv0uce-So4OGd5zJxHSTdZ-bw24n3TjmV3g1aaXlZW7fehEvqVErA56diEdB-7Pm-LdaLYkvW-C-uExe5647myji2wXm_6qbNOzLkkCr-Pdd4cNN4INN71RVugEcWWoF25gEZY7O4WP1fQeAug1Zt-6qARcy5B498HmmgOmmgEmuj6si3QiGJL0AYuoBEWu7slzhU00QJo9aafOmjEnEvQxPeBJpuDJhuBJrt-0BZoRLElaNcuoBEWu7slzxU02QJo9aafOmjEnEvQZDt_E_9heKfTVbJMdaN_f718Gjqe62KCafJmZvqnSWYbm-LjeKPbHMQ6zYpvsfgwXBZf5QXuitEq5nYxr4txVywqYjxOfO0iRumkdvLmhLewNlzaGy6t4sDuHNhH3bdb963qK7v4yioe2MUDly2zi4lJ28XUlhFqJ29qy67tmdAjQsEeKcSeoT1TkAgV3OOrKheEfA-wY9aFUBMzI9TUwlByN3dqZdAeLhgQfbfHC7Uz9nhBIl_QHjBIJAw6RQyhpqbmFjKU3M2d3Bl7znAiZ7hTznDi3YV6ebHnDCdyhjvlDKGm3kDccoaSu7lTO8PtOcOJnOHH5cx0_d_fAAAA__83bima

# There should be no "by hash" routers if there is a single stream.
query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT c, d, sum(a+c::INT) + avg(b+d) FROM data WHERE a > 9 GROUP BY c, d]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJyUks9Kw0AQh-8-RZhTS6ckm0SQPW1PUqip9I8gEsqaHUKgzYbdLSgl7y7JHmwUox7nN_NNvjB7gVoryuSJLPAXYIBwCzlCY3RB1mrTxX5oqd6ARwhV3ZxdF-cIhTYE_AKuckcCDpme6yaMAUGRk9WxH2sR9Nl9QtbJkoAnLV4tZuOLd_L1SBuSikwYDdZDY6qTNO9CSScBYdvI2vIgZNEcEDZUKzI8EGwmEs6X2e4OAxHPRIqBSDAQKfzkx_7jtyhLQ6V02oRsqCcSFCkgLLLnQ7beHbL9ajURyfRblHbRdv8wEaxvPt1PRDwd_EOn3nnPRrTjgfYv99qQbXRt6U8Hi9ocgVRJ_k1YfTYFPRpd9J_x5brn-kCRdb6b-GJZ-1YneA2zUTgeh-NROPoC5-3NRwAAAP__DNTtHA==

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT sum(a), sum(b), sum(c) FROM data GROUP BY d HAVING sum(a+b) > 10]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJzUll9r4kwUh-_fTxHOVcs7kpyZiW1zlbJ_oNDapdteLLtSpmawgs3IZIQtxe--JEKNujsnZRT0ykR9cs6c58chb1CaQg_Ui64g-wkIDDgwEMBAAoMUhgxm1ox0VRlb_2UJXBW_IUsYTMrZ3NVfDxmMjNWQvYGbuKmGDO7V01TfaVVoGyfAoNBOTaZNmZmdvCj7mhfKKWDwfabKKot6MUaqLCKMjHvWFhjc6bLQNoty_D_nLMqRRc2nYFEuYbhgYOZu1UHl1FhDhgvWvcvL8djqsXLGxul6k3l9fzn48Ti4vX8cPFxfn-Tpad3tw81Jzt-vxPuVfL_C043mVvWeXqNnVT1vlEIYLlYH4P88wOo589LYQltdrD2peYrniJhsFd48I3Y8YzOLr5OpawSl0a95kggdYZJl2ecvn65uLq-Bwe3cZbWzXDCPMbHbAw9Mz8xiTDf--ffacq02ds80dsl0jL2Y7yHVRJ8t5f3DTDXuMtV4BKnm3ZPFOyWL92Kxh2QRfbbGfnaYyeK7TBY_gmSJ7skSnZIlerHcQ7KIPltjPz_MZIldJkscQbJk92TJTsmSvTjdQ7KIPltjvzjMZMldJkseQbKIt_I7Xc1MWelOb3BJPRBdjPVyepWZ25H-Zs2oKbO8vW245otCV275Ky5vrsrlT3WDbRg3YWzDfA3Gj8H9EPgiBMagvjH109w7b-GHhV9W329LeunUD6chqv0wodoPE6r9MKWaoAnV_RDVZ1743C_rPESWHyZk-WFClh-mZBE0IesiRBYSW5Rao2F7NGyRhm3SwFUatksxaJkisU0lIW1rnX5Imp-mpPlpSpqfJqUROCVta6l6pQ0X__0JAAD__-bTv9w=

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT avg(a+b), c FROM data GROUP BY c, d HAVING c = d]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlmFro04Qxt__P4XMq5b_ipldTVvhwHJwUOjZo9e8OI4QtnFJAqkrq4ErJd_9UMvFJHc7lk3Ad7r6c56Z52HwDXKdqVS-qBLin4DAgAMDAQxCYBDBlEFh9FyVpTb1Ky1wl_2CeMRglRebqj6eMphroyB-g2pVrRXE8CSf1-pRyUyZYAQMMlXJ1bopU5jVizSvSSYrCQy-FzIvY88P0JN55qGnq6UywODLal0pE3uJ8D55SS3oUeVZc4L_J5x5iWD1-XTLQG-qnZaykgsFMW5Zf723i4VRC1lpE0T7cpN6HLfpj1n68DRLJ_f3F4m4rHVPvl4kWF99fpikT-_X-y_yywN1u4LPr95SlsuDWgjT7a4D_s8Odt_Z5Npkyqhs70vNVyw94uio8KF2_NMkf7-a3dVtiuM2w8uuOTwgjBGnbSvVvi4CjA7e_HvtcK829g8x9glxgH7AzxpjQnHH4vFAY4ynjDEOJsa8f5R4ryhxPxBnjRKhuDPmq4FGiZ8ySnwwURL9oyR6RUn4QXjWKBGKO2O-HmiUxCmjJAYTpbB_lMJeUQr9IDprlAjFnTHfDDRK4SmjFA4mSsQP9KMqC52Xqtdf2KhuW2UL1c6o1BszV9-Mnjdl2tuHhmsOMlVW7VNsb-7y9lEtsAvjIYxdmO_B-DF47ALfuMDopBsjO82t8xZ2WNjNGtvdCq10ZIcjF6vtMGG1HSastsOU1QRNWD12sfrKCl_bzbp2McsOE2bZYcIsO0yZRdCEWTcuZiGxRak16rZH3Rap2yZ1XKVuuxSdlikS2zQkTDtapx8yzU5TptlpyjQ7TZpG4JRpR0vVatp0-9_vAAAA__8tx7ql

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT sum(a+b), sum(a+b) FILTER (WHERE a < d), sum(a+b) FILTER (WHERE a = c) FROM data GROUP BY d]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJzMll1r2z4Uxu__n8Kcq_6ZjH0kOW0NA_Vig0KXjqy9GFsoaizSQGsZ2YaVku8-bEPjvExyUUJyJ7_8fJ5znoeD3yDXmRrLF1VC-gsQCFAgwIAABwIJTAkURs9UWWrTvNIB19kfSGMCi7yoq-b2lMBMGwXpG1SL6llBCnfy8VlNlMyUiWIgkKlKLp7bMoVZvEjzKjJZSSDwo5B5mQZhhIHMswADXT0pAwQmKs-USQOBnwQlgcDfdRyzmeDN-bNgJBAcpksCuq5WQspKzhWkuCTDxV7N50bNZaVNlKxrFc0crsY_H8a3dw_j-5ubM8H_b0TffzsT2DsFX69v7r5MAkF33GMbMleVH1-DJ1k-bRRFmC5XrdB_trL6Tp1rkymjsrUvtV-xNIvxVuHNblc90vcTez-1s7itqzQQlAhGLIaw_XYx1qEuIkw23txdm6_VxuHJxSHJjTCM6OGy65Dbs3N06tnFfWYXj5VdOjw_dFB-aBixw-XHIbc30vNTzw_dZ37osfLDhueHDcoPCyN-uPw45PZGenHq-WH7zA87Vn748PzwQfnhYZQcLj8Oub2RXp56fvg-88NP4d9rh8aJKgudl2rQn1XcdKmyuepGUurazNR3o2dtme7ytuXaG5kqq-4pdhfXefeoEdiHcRPGPkzXYPwYPPKBL31g9NKNiZ2m1nkzO8zsZo3sbnErndjhxMdqO-yw2g47rLbDLqsdtMPqkY_V51b4wm7WhY9Zdthhlh12mGWHXWY5aIdZlz5moWOLutao3x71W6R-m9RzlfrtUvRapujYptxh2tY6_ZBpdtplmp12mWannaY5cJdpW0vVatp0-d_fAAAA___qTKJK

# Same query but restricted to a single range; no local aggregation stage.
query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT sum(a+b), sum(a+b) FILTER (WHERE a < d), sum(a+b) FILTER (WHERE a = c) FROM data WHERE a = 1 GROUP BY d]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJyUksFq4zAQhu_7FGJOWXaCLdknwYJy2IVA6hQ3OZTWBNUajCGxjCRDS_C7F9uHJqV125vmn_nGH4zP0FhDmT6RB_kAHBAEFAitsyV5b90QT0Nr8wwyRqibtgtDXCCU1hHIM4Q6HAkkZHZp20gAgqGg6-M41iPYLrxBPuiKQCY9Xizm84t3-ulIOWlDLoqv1kPr6pN2L8rooAHhrtWNlyziy9Ejp8aQk0zxP0ogU_yxi-OkVOnw_qsSZCqFzxT5TxRXVeWo0sG6iF8bqhQQVtn9IdvuDtl-s1mo9Pegur9ZKH7xYv_Xm92_nCnxQZYAwrYLkimBKsEZbXGl_cXJcvKtbTx962ZxXyCQqWj6LbztXEm3zpbjZ6ZyO3JjYMiHqZtMxbqZWoPgJcxnYTEPi1k4fgcX_a_XAAAA___19-2A

# Verify the XOR execution plan
query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT xor_agg(to_hex(a)::bytes) FROM data]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJyslE1r3DAQhu_9FWZOLcjIkr2bjU5JoYRcmrLJoaWYoK4GZ2EjGUmGlOD_XmwfYi-JrGIf_fHqeXlGzCtoo_C7fEYH4jcwIMCBQA4ECiCwgZJAbc0BnTO2-2UI3KoXEBmBo64b370uCRyMRRCv4I_-hCDgQf454R6lQkszIKDQy-Opx9T2-Czt3yslvQQC97XUTiQpZYnUKmGJ8U9ogcAetUIrEm8en_Dl8xX7IsTXXw_f7qFsCZjGv9GdlxWCYC2Jb3hdVRYr6Y2lm2nBn3f7x-ubm474IYp_iHojNNpYhRbV5PiyDZdh2f-3ySdtWPxoWMxoKEspX3k4Mx1HPrZLh8PjdfAoHTyl-co6ZjqOdFws1ZHH68ijdOQpLVbWMdNxpGO3VEcRr6OI0lGkdLOyjpmOIx2Xa26yd1B7dLXRDs822vsnZ92mQ1XhsBadaewBf1hz6DHD412f618odH74yoaHWz186gqOwywY5pMwOw_zMHkGnQfTRThcLOm9CYa3YfJ2CfkiGN6Fybsl5MvwrLKZaxK-ZOfssv30LwAA__8kYPJY

# Verify the XOR execution plan
query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT xor_agg(a) FROM data]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJyslM-LnDAUx-_9K-SdWojERJ2d9TR7WvbSKdMeCkVKah5WmDWSRGhZ_N-LehgdZmJK9uiPbz7fDy-8N2iVxM_iFQ0UP4ABAQ4EUiCQAYEcSgKdVhUao_T4yxx4kX-gSAg0bdfb8XVJoFIaoXgD29gzQgHfxK8znlBI1DQBAhKtaM4TptPNq9B_D1JYAQS-dqI1RRRTFolWRixS9jdqIHDsbREdGJQDAdXbC8tYUSMUbCD-fZ7qWmMtrNI0X9f5fjz9fHp-_nhgn-6i-F3UhdC3SkvUKFfHl4O7DEv-v026asP8B8F8BkFZTHnQKDYaLex3oaPg_vLcS57HNA2S32i0kH8IlU_95VMv-TSmWZD8RqOF_D5UPvOXz7zks5jmQfIbjRbyj--5gW6gTmg61Rq82kS3T07GDYWyxnmdGdXrCr9oVU2Y-fE45aYXEo2dv7L54aWdP40Fl2HmDPNVmF2HuZu8gU6d6cwdzkJ6587wzk3ehZAfnOG9m7wPIT-6Z5VsXBP3Jbtml8OHfwEAAP__W2jUcQ==

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT max(t.a), min(t.b), avg(t.c)  FROM (VALUES (1, 2, 3), (4, 5, 6), (7, 8, 0)) AS t(a, b, c) WHERE b > 3]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJyUkM1KxDAUhfc-RTmrGQhM0m4kq3ajdDFVRETQLkJ7KYXYW_IjwtB3lzYLHWFEd7nn5jtfyAkT99SYN_LQL1BoBWbHHXnPbo3Shbr_gJYC4zTHsMatQMeOoE8IY7AEDcudsdm7sZF8Jg8SAj0FM9qt-Wa0gZzOyjx7jVIWlBVa67p5vEa7CHAMX80-mIGg1SL-bq-GwdFgAruDOjcfq-ddqfYQONbNrszXU_V0uyuL_UV1_h_1A_mZJ09n2kvNcmkFqB8ofa7n6Dq6d9xtmjTebdwW9ORD2qo01FNarQ_8Dqtf4fwH3C5XnwEAAP__aQiixw==

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT * FROM (VALUES (1, '222'), (2, '444')) t1(a,b) JOIN (VALUES (1, 100.0), (3, 32.0)) t2(a,b) ON t1.a = t2.a]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJyckUFL_DAQxe__T1Hm9BcCbVJPAaFH14MrXqWH0IzdQsyUTCLC0u8uTQ7rLq7ueuvMvN-8zssePFl8NG_IoF9AQi9gDjQgM4W1VQQb-wG6ETD5OcW13QsYKCDoPcQpOgQNjgbjqnfjEnLV1A0IsBjN5LJ-EUApHmiOZkTQchF_dJC1vMhBnXU4LE6egsWA9nTj75JvfvPe8O6BJo-hVkdqcPga_3fy5i5M4y5_gYBtirrqpOiU6FrR3cK5S9prsnpGnskzXpRRs56BdsQSC1MKAz4FGrJNKbeZyw2LHMtUlWLj8yg_5ldYXgGrU1j9CLdHcLP0y7_PAAAA__870evq

statement ok
CREATE TABLE nullables (a INT, b INT, c INT, PRIMARY KEY (a))

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT array_agg(a) FROM (SELECT a FROM data WHERE b = 1 AND c = 1.0 AND d = 1.0 ORDER BY a)]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlEGL00AUx-9-iuF_anFiMkkqy4CQ4LpLYW2l9iISZOw8YqCbCTNTUJZ-d2mC1ojVkV5ynPfyy3u__-E9oTWaVuqRHORHCHCk4MjAkYNjgYqjs2ZHzhl7-mQAlvorZMLRtN3Bn8oVx85YgnyCb_yeILFVn_e0IaXJxgk4NHnV7PsxnW0elf1WaOUVON53qnWSRbFgqtVMMOO_kAXHXbP3ZCWbzYqUvWJCSrlcbW_mrFzdslmRnWovEinl3cO63N7MfzTyn43bN6-Xb8uHOTjWBy9ZIVAdOczBnxd3XtUEKY78gtzZyVhNlvTYphDPUR3_kEBZ15Zq5Y2NF2Ok3GzKD5_K-_tZIeYXN0pHG4nwuEVI3LGI4nQ6gafhemmQXhrF2XT0snC9LEgvi-J8Onp5uF4epJdH8WI6ev84dRtynWkdjcwu_Tk5nQrSNQ2nxZmD3dE7a3b9mOG57rm-oMn5oSuGx7LtW_2Cv8Lir_DLEZz8DqfXTM6ugfNr4MV_wdXx2fcAAAD__6aqGXg=

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT json_agg(a) FROM (SELECT a FROM data WHERE b = 1 AND c = 1.0 AND d = 1.0 ORDER BY a)]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlEGL00AUx-9-iuF_anFiMkkqy4CQ4LpLZW1ltzcJMnYeMdDNhJkpKEu_uzRBa8TqLL3kOO_ll_d-_8N7Qms0rdQjOchPEOBIwZGBIwfHAhVHZ82WnDP2-MkALPU3yISjabu9P5Yrjq2xBPkE3_gdQWKjvuzonpQmGyfg0ORVs-vHdLZ5VPZ7oZVX4HjoVOski2LBVKuZYMZ_JQuOm2bnyUo2mxUpe8OElHK52lzNWbm6ZrMiO9ZeJVLKm7t1ubma_2zkvxrX794uP5R3c3Cs916yQqA6cJi9Py3uvKoJUhz4GbmTk7GaLOmxTSFeojr8JYGyri3VyhsbL8bI-4f16nN5ezsrxPzsQuloIRGetghJOxZRnE4n7zRcLw3SS6M4m45eFq6XBellUZxPRy8P18uD9PIoXkxH7z-X7p5cZ1pHI7Nzf06Ol4J0TcNlcWZvt_TRmm0_Zniue64vaHJ-6IrhsWz7Vr_g77D4J_x6BCd_wuklk7NL4PwSePEsuDq8-BEAAP__vcYZMw==

# Test that orderings on GROUP BY columns are propagated through aggregations.
statement ok
CREATE TABLE sorted_data (a INT PRIMARY KEY, b INT, c FLOAT, INDEX foo(b))

# Split into ten parts.
statement ok
ALTER TABLE sorted_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 sorted_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 sorted_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) SELECT a, max(b) FROM sorted_data GROUP BY a]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJyUkcFq8zAQhO__U4Q5JbAhlsN_0ck5BlKnpCm0FBNUa2sCqddIMhSC373YOjQpxG2PO9pvZlidUYvl3Lyzh36BAuE_CkLjpGTvxfVyXFrbD-iEcKybNvRyQSjFMfQZ4RhODI1c5tIsUhAsB3M8DWsdQdrwBflgKoZednRhrMaN9-b1xDs2lt0iubLHm0jmxQW2B2uCAeGhMbXXkzkI2zboSaYoS3Grh_pLj1VVOa5MELdQ1zWyfl7lz4d8uz_kj5vNNFMzEO5WT9Msnd2MT6_if7jvjn0jtedfHTjpCgLbiuMfemldyfdOyiEmjtuBGwTLPsTXZRzWdXzqC17CahROx-F0FE6-wUX37zMAAP__NDHaoA==

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT a, max(b) FROM sorted_data GROUP BY a ORDER BY a]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJzMllGL4jwUhu-_X1HO1QxfSj1p62iv6uXArC6zs7DLIpKxQQWnKWmEHQb_-1J7YdWdnJbUxUtbn-RNnsNLPyBXmZyKN1lC8gsQGHBgEAKDCBjEMGdQaLWUZal09ZcaeMx-QzJgsMmLnakezxkslZaQfIDZmK2EBF7E61Y-S5FJHQyAQSaN2GwP2xR68yb0e1oqbWS2yIQRwOBbIfIy8fwAPZFnHnrKrKUGBrOdSbwUWcphvmegdua4a2nESkKCe9Y-2WS10nIljNJBfBosrS5gpjOpZVZtCQwm05-L6exlMf3-9HSX4j0w-DL5cZfy-7Mwx_Vf3721KNcXS8_3x8D808DHdVQd5Hyd_-uFLKfCQX_HOkYOe488Vb4qAjyV8Nn20cn22H74sMPwBegH3HX8iGwNUcPbGD_sefzw-uPH2_vnXfxzPwhd_RPZGjf1cBv-ec_--fX9h-39h138h34QufonsjVuanQb_sOe_YfX9x-19x918R_5Qezqn8jWuKnxbfiPevYf_dvPj7-keZZlofJStvqyGFTnkdlK1ucv1U4v5Vetlodt6p-zA3d4kMnS1G-x_vGY16-qgE0Yz2FswvwExm7w0AUeu8DolBtjO82t9x3a4dAua2i3FVnp2A7HLqrtMKHaDhOq7TClmqAJ1UMX1Q9WeGSXNXKRZYcJWXaYkGWHKVkETcgau8hCokWpGnXrUbcidWtSxyp161J0KlMk2jQipF3UaSdpdpqSZqcpaXaalEbglLSLUrVKm-__-xMAAP__HM5iZA==

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT c, min(b), a FROM sorted_data GROUP BY a, c]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlk1v4jAQhu_7K6I5Fa2jYDuhkFN6ROqGVbd7WK0QcokFSDSOHCNtVfHfVyQHwkc9CeaQYz6ezIzfR6N8Qq4ymYp3WUL8FygQYECAA4EQCEQwJ1BotZRlqfThlRqYZv8gHhLY5MXOHG7PCSyVlhB_gtmYrYQYXsXbVr5IkUkdDIFAJo3YbKsyhd68C_2RlEobmS0yYQQQ-FWIvIw9P6CeyDOPesqspYb5noDamWOh0oiVhJjuSftmnlYrLVfCKB1Ep70kh5lnOpNaZrFXXT2lfxbp7HWR_n5-fkjoAAj8mKYPCRtcPOSDs_6OJd8-vLUo1xfV5vvjDOzLGY7fUXVv59_5Xn_IMigd3nlSArOdib2Ek4SRapLryfAWU-3ya3NdHSlVvioCGp29eb12eFKbtleUdlA0oH7AbpAUaaeR3ai3ktI7S0p7ISlrLwrrIgrzA36DKEg7jfN77K0o7M6isF6IwtuLwruIwv0gvEEUpJ3G-Y17Kwq_syi8F6KE7UUJu4gS-kF0gyhIO43zm_RWlPDOooS9EAX5c32RZaHyUrb6-xkeRpbZStZHVKqdXsqfWi2rMvXlrOKqG5ksTf2U1hfTvH50aLAJ03OYNmF2AtNu8MgFnrjA1KlvGtlpZj1vboe5PayRPa3QSkd2OHKJ2g4jUdthJGo7jEWN0EjUI5eoH63w2B7W2CUsO4yEZYeRsOwwFhZCI2FNXMKiyBbF1qjbHnVbpG6b1HGVuu1S6rRMKbJNQyS0i3XaKTQ7jYVmp7HQ7DQaGoJjoV0sVWto8_23_wEAAP__X2mXqg==

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT c, min(b), a FROM sorted_data GROUP BY a, c ORDER BY a]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlsFu4jAQhu_7FNGcitZRsJ1QyCk9InXDqts9rFYIucQCJBpHjpG2qnj3FcmBAMWTYA45hvB5Zvz9GuUTcpXJVLzLEuK_QIEAAwIcCIRAIII5gUKrpSxLpQ9_qYFp9g_iIYFNXuzM4ec5gaXSEuJPMBuzlRDDq3jbyhcpMqmDIRDIpBGbbVWm0Jt3oT-SUmkjs0UmjAACvwqRl7HnB9QTeeZRT5m11DDfE1A7cyxUGrGSENM9ad_M02ql5UoYpYPotJfkMPNMZ1LLLPaqp6f0zyKdvS7S38_PDwkdAIEf0_QhYYOLl3xw1t-x5NuHtxbl-qLafH-cgV2d4XiOqns7P-d7fZBlUDq886QEZjsTewknCSPVJF-b4TdPxa9MlSpfFQE9VXetfHhSnrZPKe2Q0oD6Abshp0g7DX2j3uaU3jmntBc5Ze2DwroEhfkBvyEoSDuN-3vsbVDYnYPCehEU3j4ovEtQuB-ENwQFaadxf-PeBoXfOSi8F0EJ2wcl7BKU0A-iG4KCtNO4v0lvgxLeOShhL4KCfLy-yLJQeSlbff0MDyPLbCXrKyrVTi_lT62WVZn6cVZx1Q-ZLE39ltYP07x-dWiwCdNzmDZhdgLTbvDIBZ64wNSpbxrZaWa9b26HuV3WyG4rtNKRHY5cVNthRLUdRlTbYUw1QiOqRy6qH63w2C5r7CLLDiOy7DAiyw5jshAakTVxkUWRLYqtUbc96rZI3Tap4yp126XUaZlSZJuGiLSLddpJmp3GpNlpTJqdRqUhOCbtYqlapc333_4HAAD__6Vgl6k=

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT b, max(c) FROM sorted_data@foo GROUP BY b]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJyUkk9r8kAQxu_vp5DnpLBi_vhecopHi02KtdBSgmyz0xDQTNjdQIvku5dkCzWCaT3uzPzm-YXJCRUrSuSRDKJX-BD4j0yg1pyTMay7shtaqw9EnkBZ1Y3typlAzpoQnWBLeyBESHjO9SKEgCIry0M_1gpwY38gY2VBiJatOFvsjy_eybcDbUkq0gtvsB7vzLFhbUntlbQSAo-1rEw0mUMgbWw0iX1ck_Bvkbjjsvp28IcOtS6PUn9eeLjwQMTh1fzglvxVUWgqpGW9CIb5ceeTakWaVP-9AqvkZZ-ku33ytNlMY38GgfvV8zQOZldlwoHML6fekqm5MvSnW3ttJkCqIPc7GW50Tg-a8z7GPdOe6wuKjHXdpXusK9fqBM9hfxQOxuFgFA7H4XAU9i7grP33FQAA__9E9hy_

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT * FROM (SELECT a, max(c) FROM sorted_data GROUP BY a) JOIN (SELECT b, min(c) FROM sorted_data@foo GROUP BY b) ON a = b]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJzMl11v4kYUhu_7K9C5SrSDzIzNp1TJuUy1C9V2K7WqUOTgCSARDxobqVHEf6_AqvgwnNeTIa3vAviZOYd53hzmnTKT6nHyqnMa_UWSBCkSFJKgiAR1aSpobc1M57mxu0dK4DH9m0YdQctsvSl2b08FzYzVNHqnYlmsNI3oR_K80t91kmobdEhQqotkudpvs7bL18S-xbmxhU6f0qRISNBv6yTLR612IFtJlrZkyxQLbUnQZFOMWrEUcUjTrSCzKQ675kUy1zSSW1G_sof53Op5UhgbdE8Li3dfwMSm2up0tyUJehj_-TSe_Hga__71610s70nQt4c_7mJ1f1bMYf3nt9YiyReVpafbQ8HqasGHdUxZyPk6X8qFmK5k5_9qK_RrSxye2mSXnrvY-Tdt5_oXs8y0DeTgdN2VfinuYvnl_me7nC_KP4-VUiIORRxdFatfoyGHUsembdaBCs-evLz34GRvWT9u0iFugWwHyjdwoLYjNXvNCJy8ceBkMwLn3NYNAjf8zMCp-tIrF-lVOwh9pQe1HenRb4b06sbSq2ZI79yWv_Sq85nSh_WlD12kD9tB5Cs9qO1Ij0EzpA9vLH3YDOmd27qB9PIzpY_qSx-5SB-1g66v9KC2Iz2GzZA-urH0UTOkd3BEnt3sXoy5ct08CHHVhsilil1a_i2iV8fUcnfF6dj9oI7yY788HsfeB9fz8_EG_63Uf3URvFDId52vTZbrWte8zq4Vnc51-e3kZmNn-ldrZvttypeTPbd_I9V5UX4qyxePWfnRrsBjWJ7D8hhWJ7B0g_s-sJRedNeLHvK0YunQBx74wBIcF6B7PrQCbYespBEPRyysIl7xLkv3eLjnkw8eBvngYZQPQIN8ABrko--TDx4G-eBhlA9Ag3zwNMrHwCcfQ34CdMAIqAwQpxnA02gI8DScAgBHYwDgwHPJjxFw4oAGpgMaqY5w4DrAkeyyMktcbJf8LJFgHMjKNHHSnaeR7jwNdQc40h3gSPfKIHXSnaeR7jwNdQc40p3Hoe6Vceqke2WwnOo-ALpXJouT7jyNdOdpqDvAke4AR7pXpqqT7jyNdOdpqDvAke48jnRX_IVUgRupqsyWU1wB3OV2phzpgRd9dmzOeM8LV6h1tyvadPvTPwEAAP__qGgS1A==

# Verify that the stages preserve the ordering as expected.
query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT sum(x) FROM (SELECT a, b::float + c AS x FROM data) GROUP BY a ORDER BY a]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJzMllFr4k4Uxd__nyLcp5ZOiHcSrc1T-vKHgquLax-WRcrUDCrYTJiMsKX43ZcksEZd56Y7wfVxjL-5595zuMwHZCqVY_EmC4h_AAIDDgxCYBABgz7MGeRaLWRRKF3-pQae0p8Q9xiss3xryp_nDBZKS4g_wKzNRkIMM_G6kVMpUqmDHjBIpRHrTVUm1-s3od-TVBgBDL7lIitizw_QE1nqcU-ZldQFMJjKLJU69pLwLuFx_P9o8jgbMi9BmO8YqK3Zly-MWEqIccfaS3xcLrVcCqN00D9UmJRTmOhUapnGXnV6HH9_GU9mL-Pn0egm4bel8OcvNwneHonZ3__67q1EsTq6uhS_F8zPCt7fo2ohx_fc1RdZusLeSe1mW3jSFv5uq2pwsjVl98wy8PCv9fMz-sfKV3mAh46cKx8dlMf2kcQ2kQzQD3gVSqxD2UEmCY0N9wbXkUnsOJN44Uzy9qHgrULB_SDsOBSExsb47q8jFLzjUPALhyJsH4qwVShCP4g6DgWhsTG-4XWEIuw4FOGFQxG1D0XUKhSRXz0sXINA6GqM7OE6ghB1HIToHz5j_iBtKotcZYVs9ULplc3JdCnrYRRqqxfyq1aLqkx9nFRc9UMqC1N_xfrwlNWfSoFNGI9hbML8AMbPwQMX-MEFRifd2LfT3Drv0A6HdrMGdrciK923w30Xq-0wYbUdJqy2w5TVBE1YPXCx-t4KD-1mDV3MssOEWXaYMMsOU2YRNGHWg4tZSGxRao267VG3Req2SR1XqdsuRadlisQ2jQjTTtbpp0yz05RpdpoyzU6TphE4ZdrJUrWaNt_99ysAAP__sRl0YA==

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT sum(x) FROM (SELECT a, b::float + c AS x FROM data) WHERE a > x GROUP BY a ORDER BY a]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlk1r20wQx-_PpxBzSsgaaVbym07KJRDIY5c0OZTWBMVaHIOjNas1NIR89yIt1LLVzMi1cH30y08zu__fDHqHXGdqkr6qAuLvgCBAgoAQBEQgoA8zAWuj56ootCn_4oDb7CfEgYBlvt7Y8uuZgLk2CuJ3sEu7UhDDQ_q8UvcqzZTxAxCQKZsuV1WZtVm-puYtyVKbgoCv6zQvYq_no5fmmSc9bV-UKUDAvcozZWIvCa8SGcc3d9Prh5HwEoTZhwC9sdvyhU0XCmL8EO1bnOieXvv93eZulitb1ZTej00QhIoqJw8pd71YGLVIrTY-7t1IUt761GTKqKwsDQKuJ9-eJtOHp8nj3d1FIi_Li3r8_yLBy71utgWe37yXtHjZe3TZ_bbj8NOOt8_RrpH951y5B1HH6jdq14-FjWPh72NVB5xubHl6Qdx49Nf9y0_6dxbI3UQ-K9_fKY_tRwDbjICPPV9WQ4BuCDqYAaZHd_pBZzPAlKvLgucxA9jxDAxOPAOyvYSylYSy54cdS8j06CQcdiYhU66eljwPCWXHEg5PLGHYXsKwlYRhz486lpDp0Uk46kxCplw9rfA8JAw7lnB0Ygmj9hJGrSSMetXb4bHiMX058cadiceUqycUnYd4Ucfijf_ha-gfWrtXxVrnhWr1hhmUh1PZQrnLKPTGzNUXo-dVGfdxWnHVF5kqrPsV3Yfb3P1UNliHkYQlDct9GOtwuAPjYfDoGBjlUfTgGFoGNB2SFx7RcESnxWTdJ-kBDQ9IeEjDw2NEoWFGFBrmRGFoRhSa5kQZHSPKmN4JAbMUmJXC7ZTGUjkkboZm8mZoLnAOZxJncC5ybKyWQzJHerVgxKRGLxfsM3hjuxwUOk1zodM0GzqDc6HTOBs6vVm50BtLZje1EZMavWVwzOCNPXNQ6DTNhU7TbOgMzoVO41zokt6w-6HPPv77FQAA___0jY3c

# Ensure that an interesting input ordering that causes an ordered group by
# forces an ordered synchronizer. We create an index on b even though it's
# not used to help the optimizer realize that there's an ordering available
# on b for a constrained scan on the a,b primary index.

statement ok
CREATE TABLE data2 (a INT, b INT, PRIMARY KEY (a, b), INDEX(b));
ALTER TABLE data2 SPLIT AT SELECT 1,i FROM generate_series(1, 9) AS g(i);
ALTER TABLE data2 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 data2]
----
start_key  end_key  replicas  lease_holder
NULL       /1/1     {2}       2
/1/1       /1/2     {5}       5
/1/2       /1/3     {5}       5
/1/3       /1/4     {5}       5
/1/4       /1/5     {5}       5
/1/5       /1/6     {5}       5
/1/6       /1/7     {5}       5
/1/7       /1/8     {5}       5
/1/8       /1/9     {5}       5
/1/9       NULL     {5}       5


query T
EXPLAIN (opt,verbose) SELECT b, count(*) FROM data2 WHERE a=1 GROUP BY b
----
group-by
 ├── columns: b:2 count:3
 ├── grouping columns: b:2
 ├── internal-ordering: +2 opt(1)
 ├── stats: [rows=9.5617925, distinct(2)=9.5617925, null(2)=0]
 ├── cost: 11.1156179
 ├── key: (2)
 ├── fd: (2)-->(3)
 ├── prune: (3)
 ├── scan data2
 │    ├── columns: a:1 b:2
 │    ├── constraint: /1/2: [/1 - /1]
 │    ├── stats: [rows=10, distinct(1)=1, null(1)=0, distinct(2)=9.5617925, null(2)=0]
 │    ├── cost: 10.81
 │    ├── key: (2)
 │    ├── fd: ()-->(1)
 │    ├── ordering: +2 opt(1) [actual: +2]
 │    ├── prune: (2)
 │    └── interesting orderings: (+1,+2) (+2,+1)
 └── aggregations
      └── count-rows

query TTTTT
EXPLAIN (verbose) SELECT b, count(*) FROM data2 WHERE a=1 GROUP BY b
----
group           ·            ·              (b, count)  ·
 │              aggregate 0  b              ·           ·
 │              aggregate 1  count_rows()   ·           ·
 │              group by     @1             ·           ·
 │              ordered      @1             ·           ·
 └── render     ·            ·              (b)         +b
      │         render 0     b              ·           ·
      └── scan  ·            ·              (a, b)      +b
·               table        data2@primary  ·           ·
·               spans        /1-/2          ·           ·

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT b, count(*) FROM data2 WHERE a=1 GROUP BY b];
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlFtr3DAQhd_7K5Z52lAFW9pLQU8OfVpI7bIXSilmUazBMWwsI8nQUPa_F1sBX7pR1m0pfZRnvplz5oB_QKkkxuIJDfBvQIEAAwIrSAlUWmVojNJNyTVu5HfgIYGirGrrPtvCnhA41KXSEjVKICDRiuLU1NNzSiBTGoF3rbG6VVWwHjUSULV9GZsSMFbkCHx5Jr3VtLf6wuC9eDjhFoVEHYSD8VDp4kno50gKKxqHu0qUhs8CehvQoLGd1JbPIgavCaFThNzlucZcWKUDNtQRtbvcpfisfd3FX49xsj_Gh_v7eURvgMDH5BDvj9vky25-M1LULXl4nj0K8_jL_PbmL6rZq6q7OZdyg4i-h4vh9awtf8fa7vDpuIn384iNnXWqFwPV7PrQ6ZWhN7GzyaG_IaR3mcV_FDr7u6Gv_k3oof_WWzSVKg1e9Q8JG0soc3QnMKrWGX7WKmvXuGfScu0Hica66gf32JSu1Ajsw9QLMz_MxjDtw4sBTKfBaz-88MoO_fDSC6_8nld_4tkPv-F5Pclzen73MwAA__-UYket
