Complete special syntax docs

This commit is contained in:
Sean Corfield 2021-04-09 17:23:39 -07:00
parent 2fe083f8e6
commit 8f7c990eed
2 changed files with 22 additions and 4 deletions

View file

@ -17,6 +17,10 @@ DDL clauses are listed first, followed by SQL clauses.
HoneySQL supports the following DDL clauses as a data DSL. HoneySQL supports the following DDL clauses as a data DSL.
Several of these include column specifications and HoneySQL
provides some special syntax (functions) to support that.
See [Clause Descriptors in Special Syntax](special-syntax.md#clause-descriptors) for more details.
## alter-table, add-column, drop-column, modify-column, rename-column ## alter-table, add-column, drop-column, modify-column, rename-column
`:alter-table` can accept either a single table name or `:alter-table` can accept either a single table name or
@ -118,7 +122,7 @@ will be uppercased (mostly to give the appearance of separating
the column name from the SQL keywords). the column name from the SQL keywords).
Various function-like expressions can be specified, as shown Various function-like expressions can be specified, as shown
in the example above, but allow things like `CHECK` for a in the example above, that allow things like `CHECK` for a
constraint, `FOREIGN KEY` (with a column name), `REFERENCES` constraint, `FOREIGN KEY` (with a column name), `REFERENCES`
(with a pair of column names). See [Clause Descriptors in Special Syntax](special-syntax.md#clause-descriptors) for more details. (with a pair of column names). See [Clause Descriptors in Special Syntax](special-syntax.md#clause-descriptors) for more details.

View file

@ -67,11 +67,24 @@ SQL entity. This is intended for use in contexts that would
otherwise produce a sequence of SQL keywords, such as when otherwise produce a sequence of SQL keywords, such as when
constructing DDL statements. constructing DDL statements.
```clojure
[:tablespace :quux]
;;=> TABLESPACE QUUX
[:tablespace [:entity :quux]]
;;=> TABLESPACE quux
```
## escape ## escape
Intended to be used with regular expression patterns to Intended to be used with regular expression patterns to
specify the escape characters (if any). specify the escape characters (if any).
```clojure
(format {:select :* :from :foo
:where [:similar-to :foo [:escape "bar" [:inline "*"]]]})
;;=> ["SELECT * FROM foo WHERE foo SIMILAR TO ? ESCAPE '*'" "bar"]))))
```
## inline ## inline
Accepts a single argument and tries to render it as a Accepts a single argument and tries to render it as a
@ -101,7 +114,8 @@ that represents a time unit. Produces an `INTERVAL` expression:
## lateral ## lateral
Accepts a single argument that can be a (`SELECT`) clause or Accepts a single argument that can be a (`SELECT`) clause or
a (function call) expression. a (function call) expression. Produces a `LATERAL` subquery
clause based on the `SELECT` clause or the SQL expression.
## lift ## lift
@ -230,7 +244,7 @@ Otherwise, these render as regular function calls:
[:primary-key :x :y] ;=> PRIMARY KEY(x, y) [:primary-key :x :y] ;=> PRIMARY KEY(x, y)
``` ```
## constraint, default, references ### constraint, default, references
Although these are grouped together, they are generally Although these are grouped together, they are generally
used differently. This group renders as SQL keywords if used differently. This group renders as SQL keywords if
@ -248,7 +262,7 @@ followed by the rest as a regular argument list:
[:references :foo :bar] ;=> REFERENCES foo(bar) [:references :foo :bar] ;=> REFERENCES foo(bar)
``` ```
## index, unique ### index, unique
These behave like the group above except that if the These behave like the group above except that if the
first argument is `nil`, it is omitted: first argument is `nil`, it is omitted: