# LogicTest: 5node

statement ok
CREATE TABLE data (a INT, b INT, c FLOAT, d DECIMAL, _bool BOOL, _bytes BYTES, _bit BIT, PRIMARY KEY (a, b, c, d))

# 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,rowsort
SELECT start_key, end_key, replicas, lease_holder FROM [SHOW RANGES FROM TABLE data WITH DETAILS]
ORDER BY 1
----
start_key           end_key       replicas  lease_holder
<before:/Table/72>  …/1/1         {1}       1
…/1/1               …/1/2         {2}       2
…/1/2               …/1/3         {3}       3
…/1/3               …/1/4         {4}       4
…/1/4               …/1/5         {5}       5
…/1/5               …/1/6         {1}       1
…/1/6               …/1/7         {2}       2
…/1/7               …/1/8         {3}       3
…/1/8               …/1/9         {4}       4
…/1/9               <after:/Max>  {5}       5

# Verify that the window functions with the same PARTITION BY clause are
# evaluated as a single distributed windower stage followed by a couple of
# single-node stages.
query T
EXPLAIN (DISTSQL) SELECT
  avg(a) OVER (),
  min(b) OVER (PARTITION BY a),
  avg(c) OVER (ORDER BY b),
  max(c) OVER (PARTITION BY a)
FROM data
----
distribution: full
vectorized: true
·
• window
│
└── • window
    │
    └── • window
        │
        └── • scan
              missing stats
              table: data@data_pkey
              spans: FULL SCAN
·
Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0ll1v2jwUx--fT2GdK9BjFJwXXnIVVtgUqYUOUNdpQpUhLkSFhMVhbVXx3SenZZCksXBQuIhIHP_9O_4dKX4D_nsNNgzub6977hDV-u5kOvl-XUeTwfXgaoron2WN1tHobjBGtTpGGz-ozQ_3t73x1J26oyH68hPROk7eXhxGR-P-YCxG5mIefTmOZOahr-PRDfJoTAFDEHpsSDeMg_0LCGDQAYMBGEzAYMEMwzYKF4zzMBKvvCUTXO8F7CYGP9juYvF4hmERRgzsN4j9eM3Ahimdr9mYUY9FWhMweCym_jpZRiztiMvD9om9AoarcL3bBNxGFKM5RgvAMNlS8aChEUQDDxEUxisWwWyPIdzFH8seV5u_ohXlq_Q6DoHZfoaBx3TJwCYntbh9sJt7XFDOMXcXhJHHIualkpPUbME__MALn1mkWWmK0923kSP2-MYd1hy9Lv717muOUc_UdWTWM8xWRcwko6h3963mEEE42sWCGjs6dgzstLBjYscqBDYywKR4l6U85BMeo37S5Y7-_xFPIGGnjZ1WIZiZBSMpMHJ-N5PS3ayRhqZX1s_FBV3WG60K-7mVYtbPl6CXl6A3NKMyCXphQZdJaFcooZ1iNs6XYJSXYDQ0szIJRmFBl0noVCihk2I2z5dglpdgNjSrMglmYUGXSehWKKGr8rEaM74NA84y7J-v1Mys1CCiSOYt2fuO8HAXLdhtFC6Sd99vR0lQsrUe4_H76MeNGxyGeBwxuvl3ojk_ySpOstSS2sVJRBGqK4lSpCKSrdJzWCSb1TzN0iVROSxdGmWkopqnUUaOypBGEb04Kxdllm0ropYkaauWWpKsrRShZG2lSCVtqxyWVbqtclitsgJ1tSSJwLZakkygIpRMoCKVVGAOq11aYA6rU1agoZYkEdhRS5IJVISSCVSkkgrMYXVLC8xhkdKfZlMxSqKwqxglc6iKJZOoyiW1mAcr_33uiqPW4zp8fvA9sKH58Wt8cjn8QEygSy7Oe5NV-JzkTl-34rT2SNecYbihT6zPYhZt_MDnsb8AO452bL__728AAAD__7tJYtk=

# Verify that all window functions with the PARTITION BY clause are distributed.
query T
EXPLAIN (DISTSQL) SELECT
  avg(a) OVER (),
  min(b) OVER (PARTITION BY a),
  max(c) OVER (PARTITION BY a ORDER BY b),
  avg(c) OVER (ORDER BY b),
  max(d) OVER (PARTITION BY b ORDER BY c),
  min(d) OVER (PARTITION BY a)
FROM data
----
distribution: full
vectorized: true
·
• window
│
└── • window
    │
    └── • window
        │
        └── • window
            │
            └── • window
                │
                └── • scan
                      missing stats
                      table: data@data_pkey
                      spans: FULL SCAN
·
Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMmF1v4kYUhu_7K0bnCtRBMGObD1853aQV0iakBG23qtBqwLMJWmJT2zQbRfz3yiQk2INPfIycjwsE2LzznDk-j2b3AeJ_l-DC2dfLzyfDC9Y4HV5Nrv783GRXZ5_PPk2Y-u-6oZps9OVszBpNzm4XQWO2-3x5Mp4MJ8PRBfvtb6bSq-pnY374KhuNT8_G6dtZk29jn2_MXEkj_IMRs5eI-RPJ4RtVk_0-Hp0zXyUKOAShry_UrY7B_QcEcJDAwQIONnBwYMphFYVzHcdhlN7ysP3B0P8JbofDIlitk_TrKYd5GGlwHyBZJEsNLkzUbKnHWvk6aneAg68TtVhul0mX9tKXb6sf-h44fAqX69sgdpnibMbZnDMfOFytVPpdqy2YCnwmWJjc6AimGw7hOnla-WXB2T27UfFNdilPwHQz5RAn6lqDK_bKGZ6C29nwgopectdBGPk60n4meZuar_mvReCHdzpqO1mK_Qa4zEu3-Xx40fBkc_fObh5Vl8zV5dRUl-i8XtjJ14ZnNfceXE_-mtY5WifpLdyT3LO4Z3PP4V6Pe11i5TJTuZWrXNTVUoH3VO5KtzOlW8Wld7nX514vV_1LZXa-srqaKnNNPfnyR8MTh7kHO_Qe9_qF6E4OXRY3BQUTB8CKH61nMNHZbu2gkK-b5xMZPlHebOIYs7VFqy1rc1txTcc9Lt13dlu3prqE-PBuq6ulAu_pG7gt21RZfgDlUQMoW22rtgGUhTUd163eOw9gr6a6hPzwA1hXSwXe0zcYwGxTrfIDaB01gFarbdc2gFZhTcd1q__OA9ivqS5hffgBrKulAu_pGwxgtql2-QG0jxpAu9V2ahtAu7Cm47o1eOcBHNRUl7A__ADW1VKB9_QNBnBA-TfqWMerMIh1rsLDS3VyS7VEuhXav9aP-xaH62iuL6Nwvr338eNoG7SdKV_HyePVpw_DYHcpTiKtbp__K6t8Uq84yaElCQRKEKmEg2RRuQbFWdLgEmiWRKIMLDyqXxxlEakEgmURsUS3OMum7lYHyTK4JJplIc-pgYVHIc-DQ6QSCFaXiCWQUewSuSQyiz2Dy8pndfazbCTKwLLRqOxUd_aj-gaVg0ZJWZxlRHWrylTQkrAOEpkwKCIVKlMqFyZTg6tXWaYGFh6FyZRIhcqUiIXKlLpbmEwNrn5lmRpYeBQmUyIVKlMiFipTIhcqU4NrUFmmBpaofAiUxChkt3pUKsxcVC5UXWQyzF0mWfWToAlW_ShI5UL1RQVD_UXeMUxgJln146AJVv08SOVCHUYFQyVGJUMtZpJVPxOaYMahsKzGLGIUsl99KhWmMSoXqjEyGaYxk8w4RpfWmAmGZ2Eao3KhGqOCoRoj7ximMZMMP05jGjPB8CxMY1QuVGNUMFRjVDJUYyaZcaYurTET7JUTJ_JYEKOQ_RpQqTCNUblQjZHJMI2ZZMaxurTGTDA8C9MYlQvVGBUM1Rh5xzCNGWQSP1ljGjPAXsnCNEblQjVGBUM1RiVDNWaSGSfr0hobbKYcvi_Du28LH1zoPP21Drzs_iD9gbqOwX2Aq5vwbps7uV_pGNzvahlrDufqhz7ViY5uF8EiThZzcJNorTebX_4PAAD__5a5Yrw=
