# LogicTest: fakedist

#
# Tests that verify DistSQL support and auto mode determination.
# The cluster size or distsql mode aren't important for these tests.
#

statement ok
CREATE TABLE kv (k INT PRIMARY KEY, v INT)

# Verify that EXPLAIN (DISTSQL) hides the JSON column by default (#21089)
query BT colnames
EXPLAIN (DISTSQL) SELECT 1
----
automatic  url
false      https://cockroachdb.github.io/distsqlplan/decode.html#eJyMjzFLxTAUhXd_RTmTQsB0kzu6dXnKQ1wkQ0kOz2JNSm4CwqP_XZoM4iA4nnOS7-NeEVPgaf6kQt4wwhlsOXmqpnxU_cEUviDWYIlbLUftDHzKhFxRlrISgtd5rdR7C4PAMi9rI9rhcbi1g3-v8UPvYHBmDMwyjCIynV4e4HaDVMsPWMt8IcTu5v_yM3VLUflL_jfZGTBc2A_UVLPnc06-aXp8av9aEailr2MPU-zT7vab7wAAAP__8hZoQg==

# Check the JSON column is still there, albeit hidden.
query T colnames
SELECT json FROM [EXPLAIN (DISTSQL) SELECT * FROM kv] WHERE false
----
json

# Full table scan - distribute.
query B
SELECT automatic FROM [EXPLAIN (DISTSQL) SELECT * FROM kv]
----
true

# Partial scan - don't distribute.
query B
SELECT automatic FROM [EXPLAIN (DISTSQL) SELECT * FROM kv WHERE k=1]
----
false

# Partial scan - don't distribute.
query B
SELECT automatic FROM [EXPLAIN (DISTSQL) SELECT * FROM kv WHERE k>1]
----
false

# Partial scan with filter - distribute.
query B
SELECT automatic FROM [EXPLAIN (DISTSQL) SELECT * FROM kv WHERE k>1 AND v=1]
----
true

# Sort - distribute.
query B
SELECT automatic FROM [EXPLAIN (DISTSQL) SELECT * FROM kv WHERE k>1 ORDER BY v]
----
true

# Aggregation - distribute.
query B
SELECT automatic FROM [EXPLAIN (DISTSQL) SELECT k, sum(v) FROM kv WHERE k>1 GROUP BY k]
----
true

# Hard limit in scan - distribute.
query B
SELECT automatic FROM [EXPLAIN (DISTSQL) SELECT * FROM kv LIMIT 1]
----
true

# Soft limit in scan - don't distribute.
query B
SELECT automatic FROM [EXPLAIN (DISTSQL) SELECT * FROM kv UNION SELECT * FROM kv LIMIT 1]
----
false

# Limit after sort - distribute.
query B
SELECT automatic FROM [EXPLAIN (DISTSQL) SELECT * FROM kv WHERE k>1 ORDER BY v LIMIT 1]
----
true

# Limit after aggregation - distribute.
query B
SELECT automatic FROM [EXPLAIN (DISTSQL) SELECT k, sum(v) FROM kv WHERE k>1 GROUP BY k LIMIT 1]
----
true

statement ok
CREATE TABLE kw (k INT PRIMARY KEY, w INT)

# Join - distribute.
query B
SELECT automatic FROM [EXPLAIN (DISTSQL) SELECT * FROM kv NATURAL JOIN kw]
----
true

# Join with span - distribute.
query B
SELECT automatic FROM [EXPLAIN (DISTSQL) SELECT * FROM kv NATURAL JOIN kw WHERE k=1]
----
true

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

# Index join - don't distribute.
query B
SELECT automatic FROM [EXPLAIN (DISTSQL) SELECT * FROM abc WHERE b=1]
----
false

# Index join with filter on result - don't distribute.
query B
SELECT automatic FROM [EXPLAIN (DISTSQL) SELECT * FROM abc WHERE b>1 AND c%2=0]
----
false

# Index join with filter on index scan - distribute.
query B
SELECT automatic FROM [EXPLAIN (DISTSQL) SELECT * FROM abc WHERE b=1 AND a%2=0]
----
true

# OID cast - don't distribute (#22249).
query BT
EXPLAIN (DISTSQL) SELECT t1.a FROM abc t1 INNER JOIN abc t2 on t1.a::REGCLASS = t2.a::REGCLASS;
----
false  https://cockroachdb.github.io/distsqlplan/decode.html#eJyskU9LxDAQxe9-ivLOkW2yt4BQEdEV2ZXWm_SQbYa10E1KkoKy9LtL00Ptsv5Z8TiT-c17b3KAsZrWak8e8gUcJUPrbEXeWze0xoGVfoNMGWrTdmFolwyVdQR5QKhDQ5B4VtuGclKa3CIFg6ag6iaubV29V-49U9sKDEWrjJfJJRg2XZBJxlH2DLYL03If1I4gec_-ZoD_kwHxpYFJtzPWaXKkZ5rlQP40ciLFvfKvD7Y25BZiHmKzTjIuZX57d_N4XRTJVZKJqfxFmOU518zJt9Z4Og51cnM6JCG9o_Ey3nauoidnqygzlpvIxYYmH8ZXMRYrE5_id3-G-RmwOIbFt_ByBqd92V98BAAA__-wX_7J

# Query with OID expression - don't distribute (#24423).
query BT
EXPLAIN (DISTSQL) SELECT 246::REGTYPE FROM abc
----
false  https://cockroachdb.github.io/distsqlplan/decode.html#eJyMjzFLBDEUhHt_xTF1xF0Ri1fZHHKNHus1IlvkkuFY2EtCXhaUI_9dblOIhWA53yQz8y4I0fPFnqmQD_QYDVKOjqoxX1F7sPOfkM5gCmkpVzwauJgJuaBMZSYEB3ucOdB65rsOBp7FTvMam_J0tvnryR4dDN6SDSqbWxgMDJ5ZNvcPjyIybJ8P7_stxmoQl_JTpcWeCOmr-f-cgZpiUP5a8ldyV0cD-hPbyRqX7LjP0a01Tb6u_1bgqaW5fRO70Kw61pvvAAAA__9YGm79
