QuackDB.List (quackdb v0.5.3)

Copy Markdown View Source

SQL expression helpers for DuckDB LIST/ARRAY values.

These helpers return iodata and map directly to DuckDB list functions. They are intentionally small building blocks for larger query modules.

Summary

Functions

Builds list_concat(left, right).

Builds list_contains(list, value).

Builds list_distinct(list).

Builds list_extract(list, index). DuckDB list indexes are 1-based.

Builds list_has_all(left, right).

Builds list_has_any(left, right).

Builds list_intersect(left, right).

Builds len(list).

Builds list_position(list, value).

Builds list_reverse_sort(list).

Builds list_slice(list, begin, end).

Builds list_sort(list).

Builds list_unique(list).

Builds unnest(list).

Functions

concat(left_expression, right_expression)

@spec concat(iodata(), iodata()) :: iodata()

Builds list_concat(left, right).

contains(list_expression, value_expression)

@spec contains(iodata(), iodata()) :: iodata()

Builds list_contains(list, value).

distinct(list_expression)

@spec distinct(iodata()) :: iodata()

Builds list_distinct(list).

extract(list_expression, index_expression)

@spec extract(iodata(), iodata()) :: iodata()

Builds list_extract(list, index). DuckDB list indexes are 1-based.

has_all(left_expression, right_expression)

@spec has_all(iodata(), iodata()) :: iodata()

Builds list_has_all(left, right).

has_any(left_expression, right_expression)

@spec has_any(iodata(), iodata()) :: iodata()

Builds list_has_any(left, right).

intersect(left_expression, right_expression)

@spec intersect(iodata(), iodata()) :: iodata()

Builds list_intersect(left, right).

length(list_expression)

@spec length(iodata()) :: iodata()

Builds len(list).

position(list_expression, value_expression)

@spec position(iodata(), iodata()) :: iodata()

Builds list_position(list, value).

reverse_sort(list_expression)

@spec reverse_sort(iodata()) :: iodata()

Builds list_reverse_sort(list).

slice(list_expression, begin_expression, end_expression)

@spec slice(iodata(), iodata(), iodata()) :: iodata()

Builds list_slice(list, begin, end).

slice(list_expression, begin_expression, end_expression, step_expression)

@spec slice(iodata(), iodata(), iodata(), iodata()) :: iodata()

Builds list_slice(list, begin, end, step).

sort(list_expression)

@spec sort(iodata()) :: iodata()

Builds list_sort(list).

unique(list_expression)

@spec unique(iodata()) :: iodata()

Builds list_unique(list).

unnest(list_expression)

@spec unnest(iodata()) :: iodata()

Builds unnest(list).