# LogicTest: 5node

statement ok
CREATE TABLE geo_table(
  k int primary key,
  geom geometry,
  INVERTED INDEX geom_index(geom)
)

statement ok
INSERT INTO geo_table VALUES
  (1, 'POINT(1 1)'),
  (2, 'LINESTRING(1 1, 2 2)'),
  (3, 'POINT(3 3)'),
  (4, 'LINESTRING(4 4, 5 5)'),
  (5, 'LINESTRING(40 40, 41 41)'),
  (6, 'POLYGON((1 1, 5 1, 5 5, 1 5, 1 1))'),
  (7, 'LINESTRING(1 1, 3 3)')

# Not distributed.
query T
EXPLAIN (DISTSQL)
SELECT k FROM geo_table WHERE ST_Intersects('MULTIPOINT((2.2 2.2), (3.0 3.0))'::geometry, geom) ORDER BY k
----
distribution: local
vectorized: true
·
• sort
│ order: +k
│
└── • filter
    │ filter: st_intersects('01040000000200000001010000009A999999999901409A99999999990140010100000000000000000008400000000000000840', geom)
    │
    └── • index join
        │ table: geo_table@geo_table_pkey
        │
        └── • inverted filter
            │ inverted column: geom_inverted_key
            │ num spans: 31
            │
            └── • scan
                  missing stats
                  table: geo_table@geom_index
                  spans: 31 spans
·
Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUlGFv2jwQx98_n8K6NwU9LthJquepX9GWdMsEpYNMW7UglJErjQhxZpuVquK7T0kKLWlDy70wubP9u_PfZx5B_05AgPvjunfmXZFG1xv5o6-9Jhm5PffCJ3NyORz0yQzlxIS_EiTfP7tDl2gziVODSuPU6MZR_1vP964H3pXfaFgti1gtq0lJw24xYrdYs3kkxCd30Hf94Q3NWYsmGQy77pCc35A5UEhlhFfhAjWIn8BhTCFTcopaS5WHHosFXrQCwSjEabY0eXhMYSoVgngEE5sEQYCf1zjEMELVZkAhQhPGSYHdHqGTFzCJ0whXQOFCJstFqgWZl5UBhVEW5oF2AOdBsLqNgmDFWRCs2HsDHB-6hwdAwjQiNiPS3KHSMF5TkEvzfERtwhmC4C808bog2Jp-XBYv_YPKYHQZJwYVqjbf1WYz764yRWRKOlwQnatAtAmVEcWp7P9OgoBZLAgYe28Agml06LZcjIoaFAZLI0iH1-piVXThh-jyRcbpU7dYe7ql_Jpkc3x4q2PqSrMrpVmHlLa9Knu3sDIuqi-Qceaw0qynX854-XF6dro1xp1X_vPKHfvfeeUfiZcPuWM1P3BBTkUF-xAVRlIZVG1nV4MO_7c23UklnXNIuiHqTKYad9LVZWKVTMd8PaaA0QzL_ywtl2qK10pOi7WlOyhARSBCbcpZXjpeupnSRmG42D7zlyS-l2TVk3iVZO0l2fUkq0qy95KcepJdJTl7SSf7dBpTuE3k_SSOQMCmZ4_fGDYG-YZwpvMGGN3J-wLrP2T59d2GiUYK_XCOXTSoFnEaaxNPQRi1xPX6n78BAAD__8kUP_s=

# The inverted filterer handles five inverted index rows with decoded
# datums, where the first column is the PK (k) and the second is the cellid
# and is sorted in cellid order.
#  7, 1152921521786716160
#  2, 1152921526081683456
#  6, 1152921573326323712
#  7, 1152921574400065536
#  3, 1152921574740070469
# To test distribution, we inject a split after the third row and relocate
# the second part of the inverted index. Both inverted filterers will produce 7,
# which will need to be de-duplicated.

statement ok
ALTER INDEX geo_table@geom_index SPLIT AT VALUES (1152921574000000000)

query TI colnames,rowsort
SELECT replicas, lease_holder FROM [SHOW RANGES FROM INDEX geo_table@geom_index WITH DETAILS]
----
replicas  lease_holder
{1}       1
{1}       1

# Not distributed, since both ranges of the index are on the same node,
# which is also the gateway node.
query T
EXPLAIN (DISTSQL)
SELECT k FROM geo_table WHERE ST_Intersects('MULTIPOINT((2.2 2.2), (3.0 3.0))'::geometry, geom) ORDER BY k
----
distribution: local
vectorized: true
·
• sort
│ order: +k
│
└── • filter
    │ filter: st_intersects('01040000000200000001010000009A999999999901409A99999999990140010100000000000000000008400000000000000840', geom)
    │
    └── • index join
        │ table: geo_table@geo_table_pkey
        │
        └── • inverted filter
            │ inverted column: geom_inverted_key
            │ num spans: 31
            │
            └── • scan
                  missing stats
                  table: geo_table@geom_index
                  spans: 31 spans
·
Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUlGFv2jwQx98_n8K6NwU9LthJquepX9GWdMsEpYNMW7UglJErjQhxZpuVquK7T0kKLWlDy70wubP9u_PfZx5B_05AgPvjunfmXZFG1xv5o6-9Jhm5PffCJ3NyORz0yQzlxIS_EiTfP7tDl2gziVODSuPU6MZR_1vP964H3pXfaFgti1gtq0lJw24xYrdYs3kkxCd30Hf94Q3NWYsmGQy77pCc35A5UEhlhFfhAjWIn8BhTCFTcopaS5WHHosFXrQCwSjEabY0eXhMYSoVgngEE5sEQYCf1zjEMELVZkAhQhPGSYHdHqGTFzCJ0whXQOFCJstFqgWZl5UBhVEW5oF2AOdBsLqNgmDFWRCs2HsDHB-6hwdAwjQiNiPS3KHSMF5TkEvzfERtwhmC4C808bog2Jp-XBYv_YPKYHQZJwYVqjbf1WYz764yRWRKOlwQnatAtAmVEcWp7P9OgoBZLAgYe28Agml06LZcjIoaFAZLI0iH1-piVXThh-jyRcbpU7dYe7ql_Jpkc3x4q2PqSrMrpVmHlLa9Knu3sDIuqi-Qceaw0qynX854-XF6dro1xp1X_vPKHfvfeeUfiZcPuWM1P3BBTkUF-xAVRlIZVG1nV4MO_7c23UklnXNIuiHqTKYad9LVZWKVTMd8PaaA0QzL_ywtl2qK10pOi7WlOyhARSBCbcpZXjpeupnSRmG42D7zlyS-l2TVk3iVZO0l2fUkq0qy95KcepJdJTl7SSf7dBpTuE3k_SSOQMCmZ4_fGDYG-YZwpvMGGN3J-wLrP2T59d2GiUYK_XCOXTSoFnEaaxNPQRi1xPX6n78BAAD__8kUP_s=

statement ok
ALTER INDEX geo_table@geom_index EXPERIMENTAL_RELOCATE VALUES (ARRAY[2], 1152921574000000000)

query TTTI colnames,rowsort
SELECT start_key, end_key, replicas, lease_holder FROM [SHOW RANGES FROM INDEX geo_table@geom_index WITH DETAILS]
ORDER BY 1
----
start_key              end_key                replicas  lease_holder
<before:/Table/72>     …/1152921574000000000  {1}       1
…/1152921574000000000  <after:/Max>           {2}       2

# Distributed. TODO(treilly): This claims to be distributed, but it isn't. What gives?
query T
EXPLAIN (DISTSQL)
SELECT k FROM geo_table WHERE ST_Intersects('MULTIPOINT((2.2 2.2), (3.0 3.0))'::geometry, geom) ORDER BY k
----
distribution: local
vectorized: true
·
• sort
│ order: +k
│
└── • filter
    │ filter: st_intersects('01040000000200000001010000009A999999999901409A99999999990140010100000000000000000008400000000000000840', geom)
    │
    └── • index join
        │ table: geo_table@geo_table_pkey
        │
        └── • inverted filter
            │ inverted column: geom_inverted_key
            │ num spans: 31
            │
            └── • scan
                  missing stats
                  table: geo_table@geom_index
                  spans: 31 spans
·
Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUlGFv2jwQx98_n8K6NwU9LthJquepX9GWdMsEpYNMW7UglJErjQhxZpuVquK7T0kKLWlDy70wubP9u_PfZx5B_05AgPvjunfmXZFG1xv5o6-9Jhm5PffCJ3NyORz0yQzlxIS_EiTfP7tDl2gziVODSuPU6MZR_1vP964H3pXfaFgti1gtq0lJw24xYrdYs3kkxCd30Hf94Q3NWYsmGQy77pCc35A5UEhlhFfhAjWIn8BhTCFTcopaS5WHHosFXrQCwSjEabY0eXhMYSoVgngEE5sEQYCf1zjEMELVZkAhQhPGSYHdHqGTFzCJ0whXQOFCJstFqgWZl5UBhVEW5oF2AOdBsLqNgmDFWRCs2HsDHB-6hwdAwjQiNiPS3KHSMF5TkEvzfERtwhmC4C808bog2Jp-XBYv_YPKYHQZJwYVqjbf1WYz764yRWRKOlwQnatAtAmVEcWp7P9OgoBZLAgYe28Agml06LZcjIoaFAZLI0iH1-piVXThh-jyRcbpU7dYe7ql_Jpkc3x4q2PqSrMrpVmHlLa9Knu3sDIuqi-Qceaw0qynX854-XF6dro1xp1X_vPKHfvfeeUfiZcPuWM1P3BBTkUF-xAVRlIZVG1nV4MO_7c23UklnXNIuiHqTKYad9LVZWKVTMd8PaaA0QzL_ywtl2qK10pOi7WlOyhARSBCbcpZXjpeupnSRmG42D7zlyS-l2TVk3iVZO0l2fUkq0qy95KcepJdJTl7SSf7dBpTuE3k_SSOQMCmZ4_fGDYG-YZwpvMGGN3J-wLrP2T59d2GiUYK_XCOXTSoFnEaaxNPQRi1xPX6n78BAAD__8kUP_s=

# Data is distributed, but the filterer can't be distributed since it is not a union.
query T
EXPLAIN (DISTSQL)
SELECT k FROM geo_table WHERE ST_CoveredBy('MULTIPOINT((2.2 2.2), (3.0 3.0))'::geometry, geom) ORDER BY k
----
distribution: local
vectorized: true
·
• sort
│ order: +k
│
└── • filter
    │ filter: st_coveredby('01040000000200000001010000009A999999999901409A99999999990140010100000000000000000008400000000000000840', geom)
    │
    └── • index join
        │ table: geo_table@geo_table_pkey
        │
        └── • inverted filter
            │ inverted column: geom_inverted_key
            │ num spans: 31
            │
            └── • scan
                  missing stats
                  table: geo_table@geom_index
                  spans: 31 spans
·
Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUlFFv2jAQx9_3Kax7KWgu2EmqrX6iLemWCUoHTFu1IJSSK40IcWablqriu09JCi1pQ8s9mNzZ_t357zOPoP_FIMD9c9k58S5Ire0NhoOfnToZuB33bEhm5Lzf65IpyrEJrmMkv7-7fZdoM57IO1QYXj_UDrq_OkPvsuddDGs1q2ERq2HVKanZDUbsBqvXD4T45va67rB_RTPUvE56_bbbJ6dXZAYUEhniRTBHDeIvcBhRSJWcoNZSZaHHfIEXLkEwClGSLkwWHlGYSIUgHsFEJkYQMMxK7GMQomoyoBCiCaI4x25O0MoKGEdJiEugcCbjxTzRgsyKyoDCIA2yQNOHU99f3oS-v-TM95fsvQEO993DfSBBEhKbEWluUWkYrSjIhXk-ojbBFEHwF5p4bRBsRT8ui5fcoTIYnkexQYWqybe1Wc-7y1QRmZAWF0RnKhBtAmVEfir7y5HvM4v5PmPvDUAwCffdlolRUoNCb2EEafFKXaySLnwfXX7IKHnqFmtHtxRf43SGD291TFVpdqk0a5_SNldlbxdWxEXpATLOHFaY9fTLGS8-jk-ON8a488p_XrllX51X_oF4-Y5bVv0D9-OURLD3EWEglUHVdLYlaPHPlemOSumcfdL1Uacy0biVrioTK2U65KsRBQynWPxlablQE7xUcpKvLdxeDsoDIWpTzPLC8ZL1lDYKg_nmlb8k8Z0kq5rEyyRrJ8muJlllkr2T5FST7DLJ2Uk62qXTiMJNLO_HUQgC1j17-MawNsg2BFOdNcDgVt7n2OFDml3fTRBrpNANZthGg2oeJZE20QSEUQtcrT79DwAA__9E0T75

# Move all the index data that will be read to node 2 while the query executes
# at node 1. The filtering moves to node 2 when it is distributable.

statement ok
ALTER INDEX geo_table@geom_index EXPERIMENTAL_RELOCATE VALUES (ARRAY[2], 1)

query TTTI colnames,rowsort
SELECT start_key, end_key, replicas, lease_holder FROM [SHOW RANGES FROM INDEX geo_table@geom_index WITH DETAILS]
ORDER BY 1
----
start_key              end_key                replicas  lease_holder
<before:/Table/72>     …/1152921574000000000  {2}       2
…/1152921574000000000  <after:/Max>           {2}       2

# Filtering is placed at node 2. We need a retry here to account for possibly
# stale dist sender caches.
query T retry
EXPLAIN (DISTSQL)
SELECT k FROM geo_table WHERE ST_Intersects('MULTIPOINT((2.2 2.2), (3.0 3.0))'::geometry, geom) ORDER BY k
----
distribution: full
vectorized: true
·
• sort
│ order: +k
│
└── • filter
    │ filter: st_intersects('01040000000200000001010000009A999999999901409A99999999990140010100000000000000000008400000000000000840', geom)
    │
    └── • index join
        │ table: geo_table@geo_table_pkey
        │
        └── • inverted filter
            │ inverted column: geom_inverted_key
            │ num spans: 31
            │
            └── • scan
                  missing stats
                  table: geo_table@geom_index
                  spans: 31 spans
·
Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUlN9v2joUx9_vX2Gdl4KuATsJvbd-oi3plokfHTBt1VKhjJzSiBBntlmpKv73KaRQSBta_ODEx_bn63x9cp5A_45BgPvjunPu9Uil7Q1Hw6-dKhm6HfdyRGbkatDvkinKsQl-xUi-f3YHLtFmHCUGlcaJ0ZWT7rfOyLvue71RpWLVLWLVrSolFbvOiF1n1eqJEJ_cftcdDW5oxppXSX_Qdgfk4obMgEIiQ-wFc9QgfgIHChbcUkiVnKDWUmXhp_UiL1yCYBSiJF2YLHxLYSIVgngCE5kYQUBP1mTaaAKFEE0QxetlKwpyYV42aRNMEcTpjorXBtFc0R0hflholBkywCBE1WB7crD1q5V97ThKQlwChUsZL-aJFmSW2wAUhmmQBRo-XPj-8i70_SVnvr9k73VQO3YP94EESUhsRqS5R6WhzBZesIUdY4uX_EFlMLyKYoMKVYPve7OZd5epIjIhLS6Izlwg2gTKiPVX2f81fZ9ZzPcZe68Dgkl47LbMjIIbFPoLI0iLl_piFXzhx_jyRUbJc7ZYB7IlfxunM3x8K2PKjmYXjmYdc7TtVdn7B8vjovi7M84cljfr-ckZz1_Ozs-2jXHn1fhl5V7733k1PhG7VaNlVT9wQU7BBfsYF4ZSGVQNZ9-DFv-3VK5ZkHP25N6pUwPUqUw0fqhQsYJSja9uKWA4xbw4arlQE7xWcrJemw_7a9A6EKI2-expPvCSzZQ2CoP59jffJfGDJOsIknWQZJeTeJFkHyQ55SSrSHIOkprlJLtIah4ksXKSk93iXSwfxlEIAjbZX3uj2zTINgRTnaXS8F4-rLGjxzRLhLsg1kihG8ywjQbVPEoibaIJCKMWuFr98zcAAP__BJd7Wg==

# Filtering is at gateway node since the filter is not distributable.
#
# TODO(treilly): What the text above claims does not square with the figure
# generated below.
query T retry
EXPLAIN (DISTSQL)
SELECT k FROM geo_table WHERE ST_CoveredBy('MULTIPOINT((2.2 2.2), (3.0 3.0))'::geometry, geom) ORDER BY k
----
distribution: full
vectorized: true
·
• sort
│ order: +k
│
└── • filter
    │ filter: st_coveredby('01040000000200000001010000009A999999999901409A99999999990140010100000000000000000008400000000000000840', geom)
    │
    └── • index join
        │ table: geo_table@geo_table_pkey
        │
        └── • inverted filter
            │ inverted column: geom_inverted_key
            │ num spans: 31
            │
            └── • scan
                  missing stats
                  table: geo_table@geom_index
                  spans: 31 spans
·
Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUlN9T6jgUx9_3r8icF2E2QNIWd80TKnW3O_xwgTv3OrcOU-kRO5SmNwmK4_C_3ykVhGpR8pA2J8nnm35zel5A_4pBgPvjunPu9Uil7Q1Hw_87VTJ0O-7liMzI1aDfJVOUYxPcxUi-_-sOXKLNeCIfUWF491w56X7rjLzrvtcbVSpW3SJW3apSUrHrjNh1Vq2eCPGP2--6o8ENzVDzKukP2u6AXNyQGVBIZIi9YI4axE_gQMGCWwqpkhPUWqos_LJe5IVLEIxClKQLk4VvKUykQhAvYCITIwjoyZpMG02gEKIJoni9bEVBLszbJm2CKYI43VHx2iCaK7ojxA8LjTI_BhiEqBpsTw62drWyrx1HSYhLoHAp48U80YLMchuAwjANskDDhwvfX96Hvr_kzPeX7LMOasfu4T6QIAmJzYg0D6g0lNnCC7awY2zxkkdUBsOrKDaoUDX4vjebeXeZKiIT0uKC6MwFok2gjFh_lf1X0_eZxXyfsc86IJiEx27LzCi4QaG_MIK0eKkvVsEXfowv_8koec0W60C25G_jdIbPH2VM2dHswtGsY462vSp7_2B5XBT-dsaZw_JmvT454_nL2fnZtjHuvBu_rdxrfzvvxidit2i0rOoX7scpmGAfY8JQKoOq4exb0OJ_lso1C3LOntwnZWqAOpWJxi_VKVZQqvHVLQUMp5jXRi0XaoLXSk7Wa_Nhfw1aB0LUJp89zQdespnSRmEw3_7luyR-kGQdQbIOkuxyEi-S7IMkp5xkFUnOQVKznGQXSc2DJFZOcrJbvI_l0zgKQcAm-2sfdJsG2YZgqrNUGj7IpzV29JxmiXAfxBopdIMZttGgmkdJpE00AWHUAlerP34HAAD__9wDelg=

# Bounding box operations.
statement ok
SET CLUSTER SETTING sql.spatial.experimental_box2d_comparison_operators.enabled = on

query TTTI colnames,rowsort
SELECT start_key, end_key, replicas, lease_holder FROM [SHOW RANGES FROM INDEX geo_table@geom_index WITH DETAILS]
ORDER BY 1
----
start_key              end_key                replicas  lease_holder
<before:/Table/72>     …/1152921574000000000  {2}       2
…/1152921574000000000  <after:/Max>           {2}       2

query ITTTI colnames,rowsort
SELECT range_id, start_key, end_key, replicas, lease_holder FROM [SHOW RANGES FROM INDEX geo_table@primary WITH DETAILS]
ORDER BY lease_holder, start_key
----
range_id  start_key           end_key                                   replicas  lease_holder
74        <before:/Table/72>  <after:/Table/106/2/1152921574000000000>  {2}       2

# We should see a distributed execution (though need to retry to purge possibly
# stale dist sender caches).
query T retry
EXPLAIN (DISTSQL)
SELECT k FROM geo_table WHERE geom && 'POINT(3.0 3.0)'::geometry
----
distribution: full
vectorized: true
·
• filter
│ filter: geom && '010100000000000000000008400000000000000840'
│
└── • index join
    │ table: geo_table@geo_table_pkey
    │
    └── • inverted filter
        │ inverted column: geom_inverted_key
        │ num spans: 31
        │
        └── • scan
              missing stats
              table: geo_table@geom_index
              spans: 31 spans
·
Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUlNFv2j4Qx99_f4V1L20lU-yE_jb5ia1Nt0wtdIC0TXOFMnKlEcHObGelqvjfJyejg7TAyIOFz77v3X18xxPYnzkIiL7eXL2Le-T4Ih6Ohp-vTsgwuorOR2RGLgf9azJFPXbJjxzJl4_RIPL7OZElY8H_9UqObvpxb3QcnjISnrKTIyE-RP3raDT4BhSUTrGXzNGC-A4cKARwS6EweoLWauPNT9WlOF2AYBQyVZTOm28pTLRBEE_gMpcjCOjpli7aHaCQokuyvLq2pKBL99fJumSKIM7WosQXIDpLuhaI7w408gUPMEnRtNlGOHjm0fUkxplKcQEUznVezpUVZEYrREBhWCTe0JbwXsrFXSrlgjMpF2zfAq1DfbgEkqiUhIxod4_GwjYsvIGFHYIlVr_QOEwvs9yhQdPmm2xW59GiMEQr0uWCWE-BWJcYJ6qqwjdnUrKAScnYvgUIqvRQNw-jQYNCv3SCdPlWLkGDCz-EyyedqT_dEuzolvrXuJjh42sdsy21sJFacEhqz08VbiZW2wXpBo1hZpxx9vJ723mxPxIbk76PcKdRRrhRxp7JH6AttLL4T6PPGpFafHlLAdMp1n83VpdmgjdGT6q79bZfCVWGFK2rT8_qTaxWR9YZTObPg7OuxHcqBQcoBTuVwu1KvKkU7lTqbFcKmkqdnUpsu1Lo2d_l-mGcpSBg1T-tV5bVB94hmVrfAMN7_VDJjh4L_3x3SW6RwnUywwt0aOaZyqzLJiCcKXG5_O93AAAA__-ryibG

query T retry
EXPLAIN (DISTSQL)
SELECT k FROM geo_table WHERE 'POINT(3.0 3.0)'::geometry::box2d && geom
----
distribution: full
vectorized: true
·
• filter
│ filter: 'BOX(3 3,3 3)' && geom
│
└── • index join
    │ table: geo_table@geo_table_pkey
    │
    └── • inverted filter
        │ inverted column: geom_inverted_key
        │ num spans: 31
        │
        └── • scan
              missing stats
              table: geo_table@geom_index
              spans: 31 spans
·
Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUlVFv2jAQx9_3Kax7oZWMsBO6TX5iLVRjaksHSKs0VyjDVxoR7Mx2VqqK7z45GV1JC5Q8nPDZ97_zL3fkCdzvDAT0bq4vvvSvyFG3PxqPvl8ck1Hvonc2JnNyPhxckhmaiU9-ZUh-fO0Ne6TBOOPs9fO5_WrdEOJ0cBN1iSwYiz5WNggugII2Cq-SBToQP4EDhQhuKeTWTNE5Y4P7qTzUV0sQjEKq88IH9y2FqbEI4gl86jMEAVemafJWGygo9EmalcdWFEzh_wc5n8wQxMmLLP0uiPaKvkjEdycaBxJDTBTaFttIB8-gOuGGk1QrXAKFM5MVC-0EmdP11Ud5EhwtCadSLu-UlEvOpFyyfQaah8ZwCSTRisSMGH-P1sE2LLyGhR2Cpa__oPWoztPMo0Xb4pts1vu9ZW6J0aTDBXGBAnE-sV6Ut4o_nUjJIiYlY_sMENTq0LAAo0aDwqDwgnT4Vi5RjQs_hMs3k-p_3RLt6Jbq1ySf4-NbHbOttLhWWnRIac-vKt4srPIL0jgd3BzFJKYxiY8b4s1R7kTvANiuVRlvVLlnsIfocqMdvmuyWS1Tk69uKaCaYfVv4kxhp3htzbQ8Wy0HpVDpUOh8tXtSLfp6veW8xWTxPBcvlfhOpegApWinUrxdideV4p1K7e1KUV2pvVOJbVeKA_u7zDxMUgUC1p-F5htm_UAISGYuNMDo3jyUsuPHPLy-uyRzSOEymWMXPdpFqlPn0ykIbwtcrT78DQAA__8x_SQB

query T retry
EXPLAIN (DISTSQL)
SELECT k FROM geo_table WHERE 'LINESTRING(1.0 1.0, 5.0 5.0)'::geometry ~ geom
----
distribution: full
vectorized: true
·
• filter
│ filter: '010200000002000000000000000000F03F000000000000F03F00000000000014400000000000001440' ~ geom
│
└── • index join
    │ table: geo_table@geo_table_pkey
    │
    └── • inverted filter
        │ inverted column: geom_inverted_key
        │ num spans: 33
        │
        └── • scan
              missing stats
              table: geo_table@geom_index
              spans: 33 spans
·
Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUVFFv2jAQft-vsO6FVjLFToIm-YmtDV0mCh0gbdNSoYxcaUSIM9usVBX77ZOT0UFUQmMpTu58993d58s9g_6VggD_2-3gQzAkZ1fBZDr5MjgnE3_gX07JkvTHoxuyQDkz0c8UyddP_tgnrUEw9CfTcTC8PuMXjPALRkn3gtnnvCXEtT-68afj7-SPdV0BhUzGOIxWqEH8AA4UHLijkCs5R62lsurnwiiINyAYhSTL18aq7yjMpUIQz2ASkyIIGMq2zDseUIjRRElamG0pyLX576RNtEAQ3b0owRUIb0v3AvH6QFNb8xijGFWHHYSDF0p6tsJZksW4AQqXMl2vMi3Iku5Kn-SRVXRC-BiGm_s4DDecheGGndqg3dSHh0CiLCauQ6R5QKXhGC28QgtrQkuQ_UZlMO4nqUGFqsMPudmd-5tcEZmRHhdEWxaINpEyoqjKfd8NQ-awMGTs1AYEs7ipmyWjwgaF0doI0uNHeXEqvPAmvHyWSfavW5yabim_ZvkSn17rmGOpuZXUnCapvVyVe5hYqRekxThzWLl2773VZ26_Tuaex6pySxwMgp7zBvq9So3uQY0nxsIYdS4zjW-aC6wSqc23dxQwXmA5i7RcqzneKjkvbEtxVAAVihi1KU-7pRBkuyNtFEarl79qH4nXIjkNkJxaJPc4Eq8iubVI3nEkp4rk1SKx40iu5f4-lY-zJAYBuy5qv7LtFliHaKFtA0we5GMBO33K7fXdR6lGCjfREq_QoFolWaJNMgdh1Bq323d_AwAA__97SixA

query T retry
EXPLAIN (DISTSQL)
SELECT k FROM geo_table WHERE geom ~ 'LINESTRING(1.0 1.0, 5.0 5.0)'::geometry::box2d
----
distribution: full
vectorized: true
·
• filter
│ filter: geom ~ 'BOX(1 1,5 5)'
│
└── • index join
    │ table: geo_table@geo_table_pkey
    │
    └── • inverted filter
        │ inverted column: geom_inverted_key
        │ num spans: 30
        │
        └── • scan
              missing stats
              table: geo_table@geom_index
              spans: 30 spans
·
Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUlFFv2jAQx9_3Kax7aSsZYSdB0_zEWkBjaksHSKu0VCjDVxoR7Mw2K1XFPvvkZFCIShh-MNzZ_t_l5zu_gv2VgYDu_d315_4tOe_0R-PRt-sLMuped6_GZE56w8ENmaGeuORnhuT7l-6w6-0F-UPOGGcBK8fmd2f0WNirs3kUsap9JsTl4D7oAAWlJd4mC7QgfgAHCgE8UMiNnqK12nj3a7GpL1cgGIVU5Uvn3Q8UptogiFdwqcsQBNzqhs6bEVCQ6JI0K7atKeileztkXTJDEK2dKP0OiGhNdwLx-kBjj2mIiUTTZHvhYEux7flNUiVxBRSudLZcKCvInBZggcIoT7yjGcNlHK8eZRyvOIvjFTs2QePUMzwGkihJgk9Euyc0Fg5h4RUs7BQsffUbjUPZSzOHBk2T77PZrHdXuSFakTYXxHoKxLrEOFF8VfixFccsYHHM2LEJCCp56jEPo0KDwmDpBGnzg1yCChd-CpevOlX_qiWoqZby3ySf48t7FXMotbCSWnBKaturCvcTK_2CtAP_BFwO7s854bRFWhdn4q17j1GLKqmFe6kd6eYh2lwri__VzqwSqcHXDxRQzrB8QqxemineGT0t9pbmoBAqHBKtK1dbpdFXmyXrDCaLbTPsKvFapeAEpaBWKTysxKtKYa1SdFgpqCpFtUrssFLo2T9m-nmSShCwefob70ybAf5AMrO-AEZP-rmQHb_k_voek8wihZtkjh10aBapSq1LpyCcWeJ6_eFvAAAA__-RAiaE
