# LogicTest: local

subtest unlabeled_tuple

statement ok
CREATE TABLE uvw (
  u INT,
  v INT,
  w INT,
  INDEX (u,v,w)
)

query TTTTT
EXPLAIN (VERBOSE) SELECT * FROM uvw WHERE (u, v, w) >= (1, 2, 3) ORDER BY u, v, w
----
render     ·         ·                  (u, v, w)                         +u,+v,+w
 │         render 0  test.public.uvw.u  ·                                 ·
 │         render 1  test.public.uvw.v  ·                                 ·
 │         render 2  test.public.uvw.w  ·                                 ·
 └── scan  ·         ·                  (u, v, w, rowid[hidden,omitted])  rowid!=NULL; weak-key(u,v,w,rowid); +u,+v,+w
·          table     uvw@uvw_u_v_w_idx  ·                                 ·
·          spans     /1/2/3-            ·                                 ·

query TTTTT
EXPLAIN (VERBOSE) SELECT * FROM uvw WHERE (u, v, w) > (2, 1, 1) ORDER BY u, v, w
----
render     ·         ·                  (u, v, w)                         +u,+v,+w
 │         render 0  test.public.uvw.u  ·                                 ·
 │         render 1  test.public.uvw.v  ·                                 ·
 │         render 2  test.public.uvw.w  ·                                 ·
 └── scan  ·         ·                  (u, v, w, rowid[hidden,omitted])  rowid!=NULL; weak-key(u,v,w,rowid); +u,+v,+w
·          table     uvw@uvw_u_v_w_idx  ·                                 ·
·          spans     /2/1/2-            ·                                 ·

query TTTTT
EXPLAIN (VERBOSE) SELECT * FROM uvw WHERE (u, v, w) <= (2, 3, 1) ORDER BY u, v, w
----
render     ·         ·                       (u, v, w)                         +u,+v,+w
 │         render 0  test.public.uvw.u       ·                                 ·
 │         render 1  test.public.uvw.v       ·                                 ·
 │         render 2  test.public.uvw.w       ·                                 ·
 └── scan  ·         ·                       (u, v, w, rowid[hidden,omitted])  rowid!=NULL; weak-key(u,v,w,rowid); +u,+v,+w
·          table     uvw@uvw_u_v_w_idx       ·                                 ·
·          spans     /!NULL-/2/3/2           ·                                 ·
·          filter    (u, v, w) <= (2, 3, 1)  ·                                 ·

query TTTTT
EXPLAIN (VERBOSE) SELECT * FROM uvw WHERE (u, v, w) < (2, 2, 2) ORDER BY u, v, w
----
render     ·         ·                      (u, v, w)                         +u,+v,+w
 │         render 0  test.public.uvw.u      ·                                 ·
 │         render 1  test.public.uvw.v      ·                                 ·
 │         render 2  test.public.uvw.w      ·                                 ·
 └── scan  ·         ·                      (u, v, w, rowid[hidden,omitted])  rowid!=NULL; weak-key(u,v,w,rowid); +u,+v,+w
·          table     uvw@uvw_u_v_w_idx      ·                                 ·
·          spans     /!NULL-/2/2/2          ·                                 ·
·          filter    (u, v, w) < (2, 2, 2)  ·                                 ·

query TTTTT
EXPLAIN (VERBOSE) SELECT * FROM uvw WHERE (u, v, w) != (1, 2, 3) ORDER BY u, v, w
----
render     ·         ·                       (u, v, w)                         +u,+v,+w
 │         render 0  test.public.uvw.u       ·                                 ·
 │         render 1  test.public.uvw.v       ·                                 ·
 │         render 2  test.public.uvw.w       ·                                 ·
 └── scan  ·         ·                       (u, v, w, rowid[hidden,omitted])  rowid!=NULL; weak-key(u,v,w,rowid); +u,+v,+w
·          table     uvw@uvw_u_v_w_idx       ·                                 ·
·          spans     -/1/2/3 /1/2/4-         ·                                 ·
·          filter    (u, v, w) != (1, 2, 3)  ·                                 ·

query TTTTT
EXPLAIN (VERBOSE) SELECT * FROM uvw WHERE (u, v, w) >= (1, NULL, 3) ORDER BY u, v, w
----
render     ·         ·                  (u, v, w)                         +u,+v,+w
 │         render 0  test.public.uvw.u  ·                                 ·
 │         render 1  test.public.uvw.v  ·                                 ·
 │         render 2  test.public.uvw.w  ·                                 ·
 └── scan  ·         ·                  (u, v, w, rowid[hidden,omitted])  rowid!=NULL; weak-key(u,v,w,rowid); +u,+v,+w
·          table     uvw@uvw_u_v_w_idx  ·                                 ·
·          spans     /2-                ·                                 ·

query TTTTT
EXPLAIN (VERBOSE) SELECT * FROM uvw WHERE (u, v, w) < (2, NULL, 3) ORDER BY u, v, w
----
render     ·         ·                  (u, v, w)                         +u,+v,+w
 │         render 0  test.public.uvw.u  ·                                 ·
 │         render 1  test.public.uvw.v  ·                                 ·
 │         render 2  test.public.uvw.w  ·                                 ·
 └── scan  ·         ·                  (u, v, w, rowid[hidden,omitted])  rowid!=NULL; weak-key(u,v,w,rowid); +u,+v,+w
·          table     uvw@uvw_u_v_w_idx  ·                                 ·
·          spans     /!NULL-/2          ·                                 ·

statement ok
DROP TABLE uvw

# Regression test for #6390.
statement ok
CREATE TABLE abc (a INT, b INT, c INT, INDEX(a, b))

query TTTTT
EXPLAIN (VERBOSE) SELECT * FROM abc WHERE (a, b, c) > (1, 2, 3) AND (a, b, c) < (8, 9, 10)
----
render           ·         ·                                                     (a, b, c)                          ·
 │               render 0  test.public.abc.a                                     ·                                  ·
 │               render 1  test.public.abc.b                                     ·                                  ·
 │               render 2  test.public.abc.c                                     ·                                  ·
 └── index-join  ·         ·                                                     (a, b, c, rowid[hidden,omitted])   rowid!=NULL; weak-key(a,b,rowid)
      ├── scan   ·         ·                                                     (a, b, c[omitted], rowid[hidden])  rowid!=NULL; weak-key(a,b,rowid)
      │          table     abc@abc_a_b_idx                                       ·                                  ·
      │          spans     /1/2-/8/10                                            ·                                  ·
      │          filter    ((a, b) >= (1, 2)) AND ((a, b) <= (8, 9))             ·                                  ·
      └── scan   ·         ·                                                     (a, b, c, rowid[hidden,omitted])   ·
·                table     abc@primary                                           ·                                  ·
·                filter    ((a, b, c) > (1, 2, 3)) AND ((a, b, c) < (8, 9, 10))  ·                                  ·

statement ok
DROP TABLE abc

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

query TTTTT
EXPLAIN (VERBOSE) SELECT * FROM abc WHERE (a, b, c) > (1, 2, 3)
----
render     ·         ·                      (a, b, c)                         ·
 │         render 0  test.public.abc.a      ·                                 ·
 │         render 1  test.public.abc.b      ·                                 ·
 │         render 2  test.public.abc.c      ·                                 ·
 └── scan  ·         ·                      (a, b, c, rowid[hidden,omitted])  rowid!=NULL; weak-key(a,b,c,rowid)
·          table     abc@abc_a_b_c_idx      ·                                 ·
·          spans     /1-                    ·                                 ·
·          filter    (a, b, c) > (1, 2, 3)  ·                                 ·

statement ok
DROP TABLE abc
