additional docs for cte

a small example was added to illustrate how to specify a Common Table Expression (CTE) as materialized or not materialized.
This commit is contained in:
Jo Øivind Gjernes 2024-09-12 08:59:48 +02:00
parent 7fceefbe5c
commit 37fe8b21bc
No known key found for this signature in database
GPG key ID: 4FCB0D17CBAB8449

View file

@ -476,6 +476,16 @@ user=> (sql/format {:with [[[:stuff {:columns [:id :name]}]
> Note: you must use the vector-of-vectors format for `:values` here -- if you try to use the vector-of-maps format, `VALUES` will be preceded by the column names (keys from the maps) and the resultant SQL will be invalid.
You can specify `MATERIALIZED`, `NOT MATERIALIZED` for the CTE:
```clojure
user=> (sql/format {:with [[:stuff {:select :*
:from :table} :not-materialized]]
:select :*
:from :stuff})
["WITH stuff AS NOT MATERIALIZED (SELECT * FROM table) SELECT * FROM stuff"]
```
`:with-recursive` follows the same rules as `:with` and produces `WITH RECURSIVE` instead of just `WITH`.
## intersect, union, union-all, except, except-all