exec-ddl
CREATE SEQUENCE x
----
SEQUENCE t.public.x

exec-ddl
CREATE SEQUENCE y
----
SEQUENCE t.public.y

build
SELECT * FROM x
----
sequence-select t.public.x
 └── columns: last_value:1(int!null) log_cnt:2(int!null) is_called:3(bool!null)

build
SELECT z.last_value FROM x AS z
----
project
 ├── columns: last_value:1(int!null)
 └── sequence-select t.public.x
      └── columns: last_value:1(int!null) log_cnt:2(int!null) is_called:3(bool!null)

build
SELECT last_value FROM x
----
project
 ├── columns: last_value:1(int!null)
 └── sequence-select t.public.x
      └── columns: last_value:1(int!null) log_cnt:2(int!null) is_called:3(bool!null)

build
SELECT log_cnt FROM x
----
project
 ├── columns: log_cnt:2(int!null)
 └── sequence-select t.public.x
      └── columns: last_value:1(int!null) log_cnt:2(int!null) is_called:3(bool!null)

# Multiple sequences in a query.
build
(SELECT * FROM x) UNION (SELECT * FROM y)
----
union
 ├── columns: last_value:7(int!null) log_cnt:8(int!null) is_called:9(bool!null)
 ├── left columns: last_value:1(int) log_cnt:2(int) is_called:3(bool)
 ├── right columns: last_value:4(int) log_cnt:5(int) is_called:6(bool)
 ├── sequence-select t.public.x
 │    └── columns: last_value:1(int!null) log_cnt:2(int!null) is_called:3(bool!null)
 └── sequence-select t.public.y
      └── columns: last_value:4(int!null) log_cnt:5(int!null) is_called:6(bool!null)

# Sequences occurring multiple times in a query.
build
(SELECT * FROM x)
EXCEPT (SELECT * FROM x)
EXCEPT (SELECT * FROM y)
EXCEPT (SELECT * FROM x)
EXCEPT (SELECT * FROM y)
----
except
 ├── columns: last_value:1(int!null) log_cnt:2(int!null) is_called:3(bool!null)
 ├── left columns: last_value:1(int!null) log_cnt:2(int!null) is_called:3(bool!null)
 ├── right columns: last_value:13(int) log_cnt:14(int) is_called:15(bool)
 ├── except
 │    ├── columns: last_value:1(int!null) log_cnt:2(int!null) is_called:3(bool!null)
 │    ├── left columns: last_value:1(int!null) log_cnt:2(int!null) is_called:3(bool!null)
 │    ├── right columns: last_value:10(int) log_cnt:11(int) is_called:12(bool)
 │    ├── except
 │    │    ├── columns: last_value:1(int!null) log_cnt:2(int!null) is_called:3(bool!null)
 │    │    ├── left columns: last_value:1(int!null) log_cnt:2(int!null) is_called:3(bool!null)
 │    │    ├── right columns: last_value:7(int) log_cnt:8(int) is_called:9(bool)
 │    │    ├── except
 │    │    │    ├── columns: last_value:1(int!null) log_cnt:2(int!null) is_called:3(bool!null)
 │    │    │    ├── left columns: last_value:1(int!null) log_cnt:2(int!null) is_called:3(bool!null)
 │    │    │    ├── right columns: last_value:4(int) log_cnt:5(int) is_called:6(bool)
 │    │    │    ├── sequence-select t.public.x
 │    │    │    │    └── columns: last_value:1(int!null) log_cnt:2(int!null) is_called:3(bool!null)
 │    │    │    └── sequence-select t.public.x
 │    │    │         └── columns: last_value:4(int!null) log_cnt:5(int!null) is_called:6(bool!null)
 │    │    └── sequence-select t.public.y
 │    │         └── columns: last_value:7(int!null) log_cnt:8(int!null) is_called:9(bool!null)
 │    └── sequence-select t.public.x
 │         └── columns: last_value:10(int!null) log_cnt:11(int!null) is_called:12(bool!null)
 └── sequence-select t.public.y
      └── columns: last_value:13(int!null) log_cnt:14(int!null) is_called:15(bool!null)

# Ensure index flags are ignored.
build
SELECT * FROM x@primary
----
sequence-select t.public.x
 └── columns: last_value:1(int!null) log_cnt:2(int!null) is_called:3(bool!null)

build
SELECT * FROM x@foobar
----
sequence-select t.public.x
 └── columns: last_value:1(int!null) log_cnt:2(int!null) is_called:3(bool!null)

# Ordinal refs with a sequence.
build
SELECT @1 FROM x
----
project
 ├── columns: "?column?":4(int)
 ├── sequence-select t.public.x
 │    └── columns: last_value:1(int!null) log_cnt:2(int!null) is_called:3(bool!null)
 └── projections
      └── variable: last_value [type=int]

# Check a query with an extra operator.
build
SELECT * FROM x WHERE last_value = 0
----
select
 ├── columns: last_value:1(int!null) log_cnt:2(int!null) is_called:3(bool!null)
 ├── sequence-select t.public.x
 │    └── columns: last_value:1(int!null) log_cnt:2(int!null) is_called:3(bool!null)
 └── filters
      └── eq [type=bool]
           ├── variable: last_value [type=int]
           └── const: 0 [type=int]

build
INSERT INTO x VALUES (0, 0, false)
----
error (42809): "x" is not a table
