# LogicTest: local-opt

statement ok
CREATE TABLE bx (
  b INT PRIMARY KEY,
  x INT
)

statement ok
CREATE TABLE cy (
  c INT PRIMARY KEY,
  y INT
)

statement ok
CREATE TABLE dz (
  d INT PRIMARY KEY,
  z INT
)

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

statement ok
SET reorder_joins_limit = 0

statement error cannot set.*negative value
SET CLUSTER SETTING sql.defaults.reorder_joins_limit = -1

query TTTTT
EXPLAIN (VERBOSE) SELECT * FROM abc, bx, cy WHERE a = 1 AND abc.b = bx.b AND abc.c = cy.c
----
render               ·                   ·                (a, b, c, d, b, x, c, y)  ·
 │                   render 0            a                ·                         ·
 │                   render 1            b                ·                         ·
 │                   render 2            c                ·                         ·
 │                   render 3            d                ·                         ·
 │                   render 4            b                ·                         ·
 │                   render 5            x                ·                         ·
 │                   render 6            c                ·                         ·
 │                   render 7            y                ·                         ·
 └── hash-join       ·                   ·                (b, x, c, y, a, b, c, d)  ·
      │              type                inner            ·                         ·
      │              equality            (b, c) = (b, c)  ·                         ·
      │              left cols are key   ·                ·                         ·
      │              right cols are key  ·                ·                         ·
      ├── hash-join  ·                   ·                (b, x, c, y)              ·
      │    │         type                cross            ·                         ·
      │    ├── scan  ·                   ·                (b, x)                    ·
      │    │         table               bx@primary       ·                         ·
      │    │         spans               ALL              ·                         ·
      │    └── scan  ·                   ·                (c, y)                    ·
      │              table               cy@primary       ·                         ·
      │              spans               ALL              ·                         ·
      └── scan       ·                   ·                (a, b, c, d)              ·
·                    table               abc@primary      ·                         ·
·                    spans               /1-/1/#          ·                         ·

statement ok
SET reorder_joins_limit = 3

query TTTTT
EXPLAIN (VERBOSE) SELECT * FROM abc, bx, cy WHERE a = 1 AND abc.b = bx.b AND abc.c = cy.c
----
render                 ·         ·            (a, b, c, d, b, x, c, y)  ·
 │                     render 0  a            ·                         ·
 │                     render 1  b            ·                         ·
 │                     render 2  c            ·                         ·
 │                     render 3  d            ·                         ·
 │                     render 4  b            ·                         ·
 │                     render 5  x            ·                         ·
 │                     render 6  c            ·                         ·
 │                     render 7  y            ·                         ·
 └── lookup-join       ·         ·            (a, b, c, d, c, y, b, x)  ·
      │                table     bx@primary   ·                         ·
      │                type      inner        ·                         ·
      └── lookup-join  ·         ·            (a, b, c, d, c, y)        ·
           │           table     cy@primary   ·                         ·
           │           type      inner        ·                         ·
           └── scan    ·         ·            (a, b, c, d)              ·
·                      table     abc@primary  ·                         ·
·                      spans     /1-/1/#      ·                         ·
