Crate partiql_logical
source ·Expand description
A PartiQL logical plan.
This module contains the structures for a PartiQL logical plan. Three main entities in the
module are LogicalPlan
, BindingsOp
, and ValueExpr
.
LogicalPlan
represents a graph based logical plan. BindingsOp
represent operations that
operate on binding tuples and ValueExpr
represents PartiQL expressions that produce PartiQL
values; all as specified in PartiQL Specification 2019.
Plan graph nodes are called operators and edges are called flows re-instating the fact that the plan captures data flows for a given PartiQL statement.
Structs
- An SQL aggregation function call with its arguments
- Represents a PartiQL bag expression, e.g.
<<a.c * 2, 5>>
. BagOp
represents a bag operator, e.g.UNION ALL
inSELECT a, b FROM foo UNION ALL SELECT c, d FROM bar
.- Represents a PartiQL
BETWEEN
expression, e.g.BETWEEN 500 AND 600
. - Represents a
CALL
expression (i.e., a function call), e.g.LOWER("ALL CAPS")
. - Represents a
COALESCE
expression, e.g.COALESCE(NULL, 10)
inSELECT COALESCE(NULL, 10) FROM data
. - Represents an expression query e.g.
a * 2
ina * 2
or an expression like2+2
. - Represents
GROUP BY
<group_key>[, <group_key>] … [AS <as_alias>] Having
represents the having operator, e.g.HAVING a = 10
inSELECT b FROM t GROUP BY a, b HAVING a = 10
.- Represents an
IS
expression, e.g.IS TRUE
. - [’Join
] represents a join operator, e.g. implicit
CROSS JOINspecified by comma in
FROMclause in
SELECT t1.a, t2.b FROM tbl1 AS t1, tbl2 AS t2`. - Represents a LIKE expression where both the
pattern
andescape
are string literals, e.g.'foo%' ESCAPE '/'
- Represents a LIKE expression where one of
pattern
andescape
is not a string literal, e.g.some_pattern ESCAPE '/'
LimitOffset
represents a possible limit and/or offset operator, e.g.LIMIT 10 OFFSET 5
inSELECT a FROM t LIMIT 10 OFFSET 5
.- Represents a PartiQL list expression, e.g.
[a.c * 2, 5]
. - Represents a PartiQL logical plan.
- Represents a
NULLIF
expression, e.g.NULLIF(v1, v2)
inSELECT NULLIF(v1, v2) FROM data
. - Represents an operator identifier in a
LogicalPlan
OrderBy
represents a sort operatyion, e.g.ORDER BY a DESC NULLS LAST
inSELECT a FROM t ORDER BY a DESC NULLS LAST
.- Represents a PartiQL Pattern Match expression, e.g.
'foo' LIKE 'foo'
. Pivot
represents a PIVOT operator, e.g.PIVOT sp.price AT sp."symbol
inPIVOT sp.price AT sp."symbol" FROM todaysStockPrices sp
. ForPivot
operational semantics, see section6.2
of PartiQL Specification — August 1, 2019.- Represents a projection, e.g.
SELECT a
inSELECT a FROM t
. - Represents a value projection (SELECT VALUE) e.g.
SELECT VALUE t.a * 2
inSELECT VALUE t.a * 2 IN tbl AS t
. - Represents a PartiQL’s searched case expressions, e.g.
CASE [ WHEN <expr> THEN <expr> ]... [ ELSE <expr> ] END
. - Represents a PartiQL’s simple case expressions, e.g.
CASE <expr> [ WHEN <expr> THEN <expr> ]... [ ELSE <expr> ] END
. - Represents a PartiQL sort specification.
- Represents a sub-query expression, e.g.
SELECT v.a*2 AS u FROM t AS v
inSELECT t.a, s FROM data AS t, (SELECT v.a*2 AS u FROM t AS v) AS s
- Represents a PartiQL tuple expression, e.g:
{ a.b: a.c * 2, 'count': a.c + 10}
.
Enums
- SQL aggregate function
- Represents the supported bag operator types.
- Represents logical plan’s binary operators.
- Represents PartiQL binding operators; A
BindingOp
is an operator that operates on binding tuples as specified by PartiQL Specification 2019. - Represents a known function.
- Grouping qualifier: ALL or PARTIAL
- Represents join types.
- Represents a path component in a plan.
- Indicates if a set should be reduced to its distinct elements or not.
- Represents a PartiQL Type.
- Represents logical plan’s unary operators.
- Represents a PartiQL value expression. Evaluation of a
ValueExpr
leads to a PartiQL value as specified by PartiQL Specification 2019. - Indicates whether to look in the local/lexical or global environment when resolving a variable.