# LogicTest: local

statement ok
CREATE TABLE guardrails (i INT PRIMARY KEY)

# When the transaction_rows_read_err guardrail is set to 1, we apply a limit
# of 2 in all cases except for when we know at most 2 rows are returned.
statement ok
SET transaction_rows_read_err = 1

query T
EXPLAIN (VERBOSE) SELECT * FROM guardrails
----
distribution: local
vectorized: true
·
• scan
  columns: (i)
  estimated row count: 1,000 (missing stats)
  table: guardrails@guardrails_pkey
  spans: LIMITED SCAN
  limit: 2

query T
EXPLAIN (VERBOSE) SELECT * FROM guardrails LIMIT 50
----
distribution: local
vectorized: true
·
• scan
  columns: (i)
  estimated row count: 50 (missing stats)
  table: guardrails@guardrails_pkey
  spans: LIMITED SCAN
  limit: 2

query T
EXPLAIN (VERBOSE) SELECT * FROM guardrails WHERE i = 1
----
distribution: local
vectorized: true
·
• scan
  columns: (i)
  estimated row count: 1 (missing stats)
  table: guardrails@guardrails_pkey
  spans: /1/0

query T
EXPLAIN (VERBOSE) SELECT * FROM guardrails WHERE i IN (1, 2)
----
distribution: local
vectorized: true
·
• scan
  columns: (i)
  estimated row count: 2 (missing stats)
  table: guardrails@guardrails_pkey
  spans: /1-/3
  parallel


query T
EXPLAIN (VERBOSE) SELECT * FROM guardrails WHERE i > 0 AND i <= 10
----
distribution: local
vectorized: true
·
• scan
  columns: (i)
  estimated row count: 10 (missing stats)
  table: guardrails@guardrails_pkey
  spans: /1-/11
  limit: 2

# When the transaction_rows_read_err guardrail is set to 50, we only apply a
# limit if it's possible that more than 51 rows may be returned.
statement ok
SET transaction_rows_read_err = 50

query T
EXPLAIN (VERBOSE) SELECT * FROM guardrails
----
distribution: local
vectorized: true
·
• scan
  columns: (i)
  estimated row count: 1,000 (missing stats)
  table: guardrails@guardrails_pkey
  spans: LIMITED SCAN
  limit: 51

query T
EXPLAIN (VERBOSE) SELECT * FROM guardrails LIMIT 50
----
distribution: local
vectorized: true
·
• scan
  columns: (i)
  estimated row count: 50 (missing stats)
  table: guardrails@guardrails_pkey
  spans: LIMITED SCAN
  limit: 50

query T
EXPLAIN (VERBOSE) SELECT * FROM guardrails WHERE i = 1
----
distribution: local
vectorized: true
·
• scan
  columns: (i)
  estimated row count: 1 (missing stats)
  table: guardrails@guardrails_pkey
  spans: /1/0

query T
EXPLAIN (VERBOSE) SELECT * FROM guardrails WHERE i > 0 AND i <= 10
----
distribution: local
vectorized: true
·
• scan
  columns: (i)
  estimated row count: 10 (missing stats)
  table: guardrails@guardrails_pkey
  spans: /1-/11
  parallel

statement ok
RESET transaction_rows_read_err
