urQL/docs/ref-ch07-transform.md

83 lines
1.7 KiB
Markdown
Raw Normal View History

2023-05-15 17:39:13 +03:00
# Transform
```
<transform> ::=
[ WITH [ <common-table-expression> [ ,...n ] ]
[ <cte-lib> [ AS ] <alias> [ ,...n ] ]
]
<cmd>
[ INTO <table>
| <set-op> [ ( ] <cmd> [ ) ]
] [ ...n ]
[ AS OF { NOW
| <timestamp>
| n { SECONDS | MINUTES | HOURS | DAYS | WEEKS | MONTHS | YEARS } AGO
| <inline-scalar>
}
]
```
2023-05-18 05:51:26 +03:00
`<cte-lib>` pre-built library of `<common-table-expression>`, TBD.
`INTO <table>` inserts resulting `<table-set>` into `<table>`. Prior `<cmd>` is terminal.
`AS OF` defaults to `NOW`.
`AS OF <inline-scalar>` inline Scalar function that returns `<timestamp>`.
2023-05-15 17:39:13 +03:00
```
<set-op> ::=
UNION
| EXCEPT
| INTERSECT
| DIVIDED BY [ WITH REMAINDER ]
| PASS-THRU
| NOP
| TEE
| MULTEE
```
2023-05-18 05:51:26 +03:00
Set operators `UNION`, etc. apply the previous result collection to the next query result or result from nested queries `( ... )`.
2023-05-15 17:39:13 +03:00
Left paren `(` can only exist singly, but right paren `)` may be stacked to any depth `...)))`.
2023-05-18 23:24:00 +03:00
```
<cmd> ::=
<delete>
| <insert>
| <merge>
| <query>
| <update>
```
2023-05-18 05:51:26 +03:00
```
<set-functions> ::=
<cmd> | <set-op>
```
API:
```
+$ transform
$:
%transform
ctes=(list <common-table-expression>)
(tree <set-functions>)
==
```
2023-05-15 17:39:13 +03:00
2023-05-22 07:24:31 +03:00
## Arguments
2023-05-29 04:47:58 +03:00
**``**
2023-05-22 07:24:31 +03:00
## Remarks
2023-05-25 05:33:27 +03:00
`<transform>` within a CTE may not have its own `WITH` clause.
The `<transform>` `WITH` clause, in which CTEs are grouped, makes each CTE available to subsequent CTEs defined in the parent `<transform>`.
When used as a `<common-table-expression>` (CTE) `<transform>` output must be a pass-thru virtual-table.
2023-05-22 07:24:31 +03:00
## Produced Metadata
2023-05-15 17:39:13 +03:00
## Exceptions
`<table>` does not exist
`GRANT` permission on `<table>` violated
`AS OF` prior to `<table>` component creation