@uwdata/mosaic-sql 0.17.0 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +47 -0
- package/README.md +0 -2
- package/dist/src/ast/aggregate.d.ts +82 -0
- package/dist/src/ast/aggregate.d.ts.map +1 -0
- package/dist/src/ast/aggregate.js +180 -0
- package/dist/src/ast/aggregate.js.map +1 -0
- package/dist/src/ast/between-op.d.ts +46 -0
- package/dist/src/ast/between-op.d.ts.map +1 -0
- package/dist/src/ast/between-op.js +60 -0
- package/dist/src/ast/between-op.js.map +1 -0
- package/dist/src/ast/binary-op.d.ts +21 -0
- package/dist/src/ast/binary-op.d.ts.map +1 -0
- package/dist/src/ast/binary-op.js +29 -0
- package/dist/src/ast/binary-op.js.map +1 -0
- package/dist/src/ast/case.d.ts +53 -0
- package/dist/src/ast/case.d.ts.map +1 -0
- package/dist/src/ast/case.js +75 -0
- package/dist/src/ast/case.js.map +1 -0
- package/dist/src/ast/cast.d.ts +18 -0
- package/dist/src/ast/cast.d.ts.map +1 -0
- package/dist/src/ast/cast.js +26 -0
- package/dist/src/ast/cast.js.map +1 -0
- package/dist/src/ast/collate.d.ts +18 -0
- package/dist/src/ast/collate.d.ts.map +1 -0
- package/dist/src/ast/collate.js +25 -0
- package/dist/src/ast/collate.js.map +1 -0
- package/dist/src/ast/column-param.d.ts +23 -0
- package/dist/src/ast/column-param.d.ts.map +1 -0
- package/dist/src/ast/column-param.js +29 -0
- package/dist/src/ast/column-param.js.map +1 -0
- package/dist/src/ast/column-ref.d.ts +40 -0
- package/dist/src/ast/column-ref.d.ts.map +1 -0
- package/dist/src/ast/column-ref.js +58 -0
- package/dist/src/ast/column-ref.js.map +1 -0
- package/dist/src/ast/fragment.d.ts +20 -0
- package/dist/src/ast/fragment.d.ts.map +1 -0
- package/dist/src/ast/fragment.js +26 -0
- package/dist/src/ast/fragment.js.map +1 -0
- package/dist/src/ast/from.d.ts +22 -0
- package/dist/src/ast/from.d.ts.map +1 -0
- package/dist/src/ast/from.js +37 -0
- package/dist/src/ast/from.js.map +1 -0
- package/dist/src/ast/function.d.ts +18 -0
- package/dist/src/ast/function.d.ts.map +1 -0
- package/dist/src/ast/function.js +26 -0
- package/dist/src/ast/function.js.map +1 -0
- package/dist/src/ast/in-op.d.ts +18 -0
- package/dist/src/ast/in-op.d.ts.map +1 -0
- package/dist/src/ast/in-op.js +25 -0
- package/dist/src/ast/in-op.js.map +1 -0
- package/dist/src/ast/interval.d.ts +18 -0
- package/dist/src/ast/interval.d.ts.map +1 -0
- package/dist/src/ast/interval.js +25 -0
- package/dist/src/ast/interval.js.map +1 -0
- package/dist/src/ast/list.d.ts +15 -0
- package/dist/src/ast/list.d.ts.map +1 -0
- package/dist/src/ast/list.js +21 -0
- package/dist/src/ast/list.js.map +1 -0
- package/dist/src/ast/literal.d.ts +16 -0
- package/dist/src/ast/literal.d.ts.map +1 -0
- package/dist/src/ast/literal.js +53 -0
- package/dist/src/ast/literal.js.map +1 -0
- package/dist/src/ast/logical-op.d.ts +32 -0
- package/dist/src/ast/logical-op.d.ts.map +1 -0
- package/dist/src/ast/logical-op.js +46 -0
- package/dist/src/ast/logical-op.js.map +1 -0
- package/dist/src/ast/node.d.ts +25 -0
- package/dist/src/ast/node.d.ts.map +1 -0
- package/dist/src/ast/node.js +36 -0
- package/dist/src/ast/node.js.map +1 -0
- package/dist/src/ast/order-by.d.ts +21 -0
- package/dist/src/ast/order-by.d.ts.map +1 -0
- package/dist/src/ast/order-by.js +36 -0
- package/dist/src/ast/order-by.js.map +1 -0
- package/dist/src/ast/param.d.ts +20 -0
- package/dist/src/ast/param.d.ts.map +1 -0
- package/dist/src/ast/param.js +28 -0
- package/dist/src/ast/param.js.map +1 -0
- package/dist/src/ast/query.d.ts +334 -0
- package/dist/src/ast/query.d.ts.map +1 -0
- package/dist/src/ast/query.js +640 -0
- package/dist/src/ast/query.js.map +1 -0
- package/dist/src/ast/sample.d.ts +27 -0
- package/dist/src/ast/sample.d.ts.map +1 -0
- package/dist/src/ast/sample.js +38 -0
- package/dist/src/ast/sample.js.map +1 -0
- package/dist/src/ast/select.d.ts +19 -0
- package/dist/src/ast/select.d.ts.map +1 -0
- package/dist/src/ast/select.js +35 -0
- package/dist/src/ast/select.js.map +1 -0
- package/dist/src/ast/subquery.d.ts +16 -0
- package/dist/src/ast/subquery.d.ts.map +1 -0
- package/dist/src/ast/subquery.js +21 -0
- package/dist/src/ast/subquery.js.map +1 -0
- package/dist/src/ast/table-ref.d.ts +24 -0
- package/dist/src/ast/table-ref.d.ts.map +1 -0
- package/dist/src/ast/table-ref.js +35 -0
- package/dist/src/ast/table-ref.js.map +1 -0
- package/dist/src/ast/unary-op.d.ts +40 -0
- package/dist/src/ast/unary-op.d.ts.map +1 -0
- package/dist/src/ast/unary-op.js +52 -0
- package/dist/src/ast/unary-op.js.map +1 -0
- package/dist/src/ast/unnest.d.ts +19 -0
- package/dist/src/ast/unnest.d.ts.map +1 -0
- package/dist/src/ast/unnest.js +29 -0
- package/dist/src/ast/unnest.js.map +1 -0
- package/dist/src/ast/verbatim.d.ts +18 -0
- package/dist/src/ast/verbatim.d.ts.map +1 -0
- package/dist/src/ast/verbatim.js +25 -0
- package/dist/src/ast/verbatim.js.map +1 -0
- package/dist/src/ast/window-frame.d.ts +54 -0
- package/dist/src/ast/window-frame.d.ts.map +1 -0
- package/dist/src/ast/window-frame.js +79 -0
- package/dist/src/ast/window-frame.js.map +1 -0
- package/dist/src/ast/window.d.ts +128 -0
- package/dist/src/ast/window.d.ts.map +1 -0
- package/dist/src/ast/window.js +194 -0
- package/dist/src/ast/window.js.map +1 -0
- package/dist/src/ast/with.d.ts +25 -0
- package/dist/src/ast/with.d.ts.map +1 -0
- package/dist/src/ast/with.js +36 -0
- package/dist/src/ast/with.js.map +1 -0
- package/dist/src/constants.d.ts +40 -0
- package/dist/src/constants.d.ts.map +1 -0
- package/dist/src/constants.js +40 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/functions/aggregate.d.ts +236 -0
- package/dist/src/functions/aggregate.d.ts.map +1 -0
- package/dist/src/functions/aggregate.js +308 -0
- package/dist/src/functions/aggregate.js.map +1 -0
- package/dist/src/functions/case.d.ts +13 -0
- package/dist/src/functions/case.d.ts.map +1 -0
- package/dist/src/functions/case.js +17 -0
- package/dist/src/functions/case.js.map +1 -0
- package/dist/src/functions/cast.d.ts +23 -0
- package/dist/src/functions/cast.d.ts.map +1 -0
- package/dist/src/functions/cast.js +32 -0
- package/dist/src/functions/cast.js.map +1 -0
- package/dist/src/functions/collate.d.ts +10 -0
- package/dist/src/functions/collate.d.ts.map +1 -0
- package/dist/src/functions/collate.js +12 -0
- package/dist/src/functions/collate.js.map +1 -0
- package/dist/src/functions/column.d.ts +10 -0
- package/dist/src/functions/column.d.ts.map +1 -0
- package/dist/src/functions/column.js +17 -0
- package/dist/src/functions/column.js.map +1 -0
- package/dist/src/functions/cte.d.ts +13 -0
- package/dist/src/functions/cte.d.ts.map +1 -0
- package/dist/src/functions/cte.js +14 -0
- package/dist/src/functions/cte.js.map +1 -0
- package/dist/src/functions/datetime.d.ts +32 -0
- package/dist/src/functions/datetime.d.ts.map +1 -0
- package/dist/src/functions/datetime.js +45 -0
- package/dist/src/functions/datetime.js.map +1 -0
- package/dist/src/functions/interval.d.ts +48 -0
- package/dist/src/functions/interval.d.ts.map +1 -0
- package/dist/src/functions/interval.js +66 -0
- package/dist/src/functions/interval.js.map +1 -0
- package/dist/src/functions/list.d.ts +31 -0
- package/dist/src/functions/list.d.ts.map +1 -0
- package/dist/src/functions/list.js +49 -0
- package/dist/src/functions/list.js.map +1 -0
- package/dist/src/functions/literal.d.ts +16 -0
- package/dist/src/functions/literal.d.ts.map +1 -0
- package/dist/src/functions/literal.js +20 -0
- package/dist/src/functions/literal.js.map +1 -0
- package/dist/src/functions/numeric.d.ts +80 -0
- package/dist/src/functions/numeric.d.ts.map +1 -0
- package/dist/src/functions/numeric.js +110 -0
- package/dist/src/functions/numeric.js.map +1 -0
- package/dist/src/functions/operators.d.ts +169 -0
- package/dist/src/functions/operators.d.ts.map +1 -0
- package/dist/src/functions/operators.js +235 -0
- package/dist/src/functions/operators.js.map +1 -0
- package/dist/src/functions/order-by.d.ts +15 -0
- package/dist/src/functions/order-by.d.ts.map +1 -0
- package/dist/src/functions/order-by.js +19 -0
- package/dist/src/functions/order-by.js.map +1 -0
- package/dist/src/functions/spatial.d.ts +32 -0
- package/dist/src/functions/spatial.d.ts.map +1 -0
- package/dist/src/functions/spatial.js +44 -0
- package/dist/src/functions/spatial.js.map +1 -0
- package/dist/src/functions/sql-template-tag.d.ts +13 -0
- package/dist/src/functions/sql-template-tag.d.ts.map +1 -0
- package/dist/src/functions/sql-template-tag.js +44 -0
- package/dist/src/functions/sql-template-tag.js.map +1 -0
- package/dist/src/functions/string.d.ts +49 -0
- package/dist/src/functions/string.d.ts.map +1 -0
- package/dist/src/functions/string.js +67 -0
- package/dist/src/functions/string.js.map +1 -0
- package/dist/src/functions/table-ref.d.ts +10 -0
- package/dist/src/functions/table-ref.d.ts.map +1 -0
- package/dist/src/functions/table-ref.js +13 -0
- package/dist/src/functions/table-ref.js.map +1 -0
- package/dist/src/functions/unnest.d.ts +10 -0
- package/dist/src/functions/unnest.d.ts.map +1 -0
- package/dist/src/functions/unnest.js +12 -0
- package/dist/src/functions/unnest.js.map +1 -0
- package/dist/src/functions/util.d.ts +7 -0
- package/dist/src/functions/util.d.ts.map +1 -0
- package/dist/src/functions/util.js +9 -0
- package/dist/src/functions/util.js.map +1 -0
- package/dist/src/functions/window-frame.d.ts +41 -0
- package/dist/src/functions/window-frame.d.ts.map +1 -0
- package/dist/src/functions/window-frame.js +52 -0
- package/dist/src/functions/window-frame.js.map +1 -0
- package/dist/src/functions/window.d.ts +74 -0
- package/dist/src/functions/window.d.ts.map +1 -0
- package/dist/src/functions/window.js +96 -0
- package/dist/src/functions/window.js.map +1 -0
- package/dist/src/index.d.ts +73 -0
- package/dist/src/index.d.ts.map +1 -0
- package/{src → dist/src}/index.js +8 -8
- package/dist/src/index.js.map +1 -0
- package/dist/src/load/create.d.ts +10 -0
- package/dist/src/load/create.d.ts.map +1 -0
- package/dist/src/load/create.js +14 -0
- package/dist/src/load/create.js.map +1 -0
- package/dist/src/load/extension.d.ts +2 -0
- package/dist/src/load/extension.d.ts.map +1 -0
- package/dist/src/load/extension.js +4 -0
- package/dist/src/load/extension.js.map +1 -0
- package/dist/src/load/load.d.ts +18 -0
- package/dist/src/load/load.d.ts.map +1 -0
- package/dist/src/load/load.js +80 -0
- package/dist/src/load/load.js.map +1 -0
- package/dist/src/load/sql-from.d.ts +14 -0
- package/dist/src/load/sql-from.d.ts.map +1 -0
- package/dist/src/load/sql-from.js +29 -0
- package/dist/src/load/sql-from.js.map +1 -0
- package/dist/src/transforms/bin-1d.d.ts +16 -0
- package/dist/src/transforms/bin-1d.d.ts.map +1 -0
- package/dist/src/transforms/bin-1d.js +21 -0
- package/dist/src/transforms/bin-1d.js.map +1 -0
- package/dist/src/transforms/bin-2d.d.ts +19 -0
- package/dist/src/transforms/bin-2d.d.ts.map +1 -0
- package/dist/src/transforms/bin-2d.js +27 -0
- package/dist/src/transforms/bin-2d.js.map +1 -0
- package/dist/src/transforms/bin-date.d.ts +31 -0
- package/dist/src/transforms/bin-date.d.ts.map +1 -0
- package/dist/src/transforms/bin-date.js +20 -0
- package/dist/src/transforms/bin-date.js.map +1 -0
- package/dist/src/transforms/bin-histogram.d.ts +37 -0
- package/dist/src/transforms/bin-histogram.d.ts.map +1 -0
- package/dist/src/transforms/bin-histogram.js +32 -0
- package/dist/src/transforms/bin-histogram.js.map +1 -0
- package/dist/src/transforms/bin-linear-1d.d.ts +11 -0
- package/dist/src/transforms/bin-linear-1d.d.ts.map +1 -0
- package/dist/src/transforms/bin-linear-1d.js +25 -0
- package/dist/src/transforms/bin-linear-1d.js.map +1 -0
- package/dist/src/transforms/bin-linear-2d.d.ts +20 -0
- package/dist/src/transforms/bin-linear-2d.d.ts.map +1 -0
- package/dist/src/transforms/bin-linear-2d.js +49 -0
- package/dist/src/transforms/bin-linear-2d.js.map +1 -0
- package/dist/src/transforms/filter-query.d.ts +12 -0
- package/dist/src/transforms/filter-query.d.ts.map +1 -0
- package/dist/src/transforms/filter-query.js +39 -0
- package/dist/src/transforms/filter-query.js.map +1 -0
- package/dist/src/transforms/line-density.d.ts +24 -0
- package/dist/src/transforms/line-density.d.ts.map +1 -0
- package/dist/src/transforms/line-density.js +98 -0
- package/dist/src/transforms/line-density.js.map +1 -0
- package/dist/src/transforms/m4.d.ts +19 -0
- package/dist/src/transforms/m4.d.ts.map +1 -0
- package/dist/src/transforms/m4.js +38 -0
- package/dist/src/transforms/m4.js.map +1 -0
- package/dist/src/transforms/scales.d.ts +30 -0
- package/dist/src/transforms/scales.d.ts.map +1 -0
- package/dist/src/transforms/scales.js +103 -0
- package/dist/src/transforms/scales.js.map +1 -0
- package/dist/src/transforms/util/bin-step.d.ts +50 -0
- package/dist/src/transforms/util/bin-step.d.ts.map +1 -0
- package/dist/src/transforms/util/bin-step.js +53 -0
- package/dist/src/transforms/util/bin-step.js.map +1 -0
- package/dist/src/transforms/util/time-interval.d.ts +14 -0
- package/dist/src/transforms/util/time-interval.d.ts.map +1 -0
- package/dist/src/transforms/util/time-interval.js +88 -0
- package/dist/src/transforms/util/time-interval.js.map +1 -0
- package/dist/src/types.d.ts +49 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +2 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/util/ast.d.ts +62 -0
- package/dist/src/util/ast.d.ts.map +1 -0
- package/{src → dist/src}/util/ast.js +36 -41
- package/dist/src/util/ast.js.map +1 -0
- package/dist/src/util/function.d.ts +56 -0
- package/dist/src/util/function.d.ts.map +1 -0
- package/dist/src/util/function.js +73 -0
- package/dist/src/util/function.js.map +1 -0
- package/dist/src/util/identity.d.ts +6 -0
- package/dist/src/util/identity.d.ts.map +1 -0
- package/dist/src/util/identity.js +8 -0
- package/dist/src/util/identity.js.map +1 -0
- package/dist/src/util/string.d.ts +4 -0
- package/dist/src/util/string.d.ts.map +1 -0
- package/dist/src/util/string.js +14 -0
- package/dist/src/util/string.js.map +1 -0
- package/dist/src/util/type-check.d.ts +17 -0
- package/dist/src/util/type-check.d.ts.map +1 -0
- package/dist/src/util/type-check.js +28 -0
- package/dist/src/util/type-check.js.map +1 -0
- package/dist/src/visit/clone.d.ts +7 -0
- package/dist/src/visit/clone.d.ts.map +1 -0
- package/dist/src/visit/clone.js +52 -0
- package/dist/src/visit/clone.js.map +1 -0
- package/dist/src/visit/recurse.d.ts +2 -0
- package/dist/src/visit/recurse.d.ts.map +1 -0
- package/dist/src/visit/recurse.js +37 -0
- package/dist/src/visit/recurse.js.map +1 -0
- package/dist/src/visit/rewrite.d.ts +9 -0
- package/dist/src/visit/rewrite.d.ts.map +1 -0
- package/dist/src/visit/rewrite.js +39 -0
- package/dist/src/visit/rewrite.js.map +1 -0
- package/dist/src/visit/visitors.d.ts +32 -0
- package/dist/src/visit/visitors.d.ts.map +1 -0
- package/dist/src/visit/visitors.js +95 -0
- package/dist/src/visit/visitors.js.map +1 -0
- package/dist/src/visit/walk.d.ts +21 -0
- package/dist/src/visit/walk.d.ts.map +1 -0
- package/dist/src/visit/walk.js +32 -0
- package/dist/src/visit/walk.js.map +1 -0
- package/package.json +13 -7
- package/src/ast/{aggregate.js → aggregate.ts} +49 -60
- package/src/ast/{between-op.js → between-op.ts} +19 -26
- package/src/ast/binary-op.ts +31 -0
- package/src/ast/{case.js → case.ts} +29 -44
- package/src/ast/{cast.js → cast.ts} +8 -14
- package/src/ast/{collate.js → collate.ts} +8 -14
- package/src/ast/column-param.ts +34 -0
- package/src/ast/{column-ref.js → column-ref.ts} +16 -25
- package/src/ast/fragment.ts +28 -0
- package/src/ast/{from.js → from.ts} +12 -21
- package/src/ast/{function.js → function.ts} +8 -14
- package/src/ast/{in-op.js → in-op.ts} +8 -14
- package/src/ast/{interval.js → interval.ts} +8 -14
- package/src/ast/list.ts +23 -0
- package/src/ast/{literal.js → literal.ts} +6 -9
- package/src/ast/logical-op.ts +50 -0
- package/src/ast/{node.js → node.ts} +10 -13
- package/src/ast/order-by.ts +38 -0
- package/src/ast/{param.js → param.ts} +6 -12
- package/src/ast/{query.js → query.ts} +224 -204
- package/src/ast/sample.ts +47 -0
- package/src/ast/{select.js → select.ts} +10 -16
- package/src/ast/{subquery.js → subquery.ts} +9 -8
- package/src/ast/{table-ref.js → table-ref.ts} +7 -12
- package/src/ast/{unary-op.js → unary-op.ts} +16 -23
- package/src/ast/unnest.ts +31 -0
- package/src/ast/verbatim.ts +27 -0
- package/src/ast/{window-frame.js → window-frame.ts} +37 -47
- package/src/ast/window.ts +246 -0
- package/src/ast/{with.js → with.ts} +19 -20
- package/src/{constants.js → constants.ts} +2 -0
- package/src/functions/aggregate.ts +344 -0
- package/src/functions/{case.js → case.ts} +5 -8
- package/src/functions/{cast.js → cast.ts} +9 -13
- package/src/functions/{collate.js → collate.ts} +4 -7
- package/src/functions/{column.js → column.ts} +9 -10
- package/src/functions/{cte.js → cte.ts} +9 -6
- package/src/functions/{datetime.js → datetime.ts} +12 -20
- package/src/functions/interval.ts +74 -0
- package/src/functions/list.ts +63 -0
- package/src/functions/{literal.js → literal.ts} +5 -7
- package/src/functions/numeric.ts +125 -0
- package/src/functions/operators.ts +272 -0
- package/src/functions/order-by.ts +21 -0
- package/src/functions/spatial.ts +50 -0
- package/src/functions/{sql-template-tag.js → sql-template-tag.ts} +16 -13
- package/src/functions/string.ts +79 -0
- package/src/functions/{table-ref.js → table-ref.ts} +4 -4
- package/src/functions/unnest.ts +13 -0
- package/src/functions/util.ts +10 -0
- package/src/functions/window-frame.ts +58 -0
- package/src/functions/{window.js → window.ts} +18 -35
- package/src/index.ts +79 -0
- package/src/load/{create.js → create.ts} +9 -3
- package/src/load/extension.ts +3 -0
- package/src/load/{load.js → load.ts} +25 -10
- package/src/load/{sql-from.js → sql-from.ts} +14 -7
- package/src/transforms/{bin-1d.js → bin-1d.ts} +13 -9
- package/src/transforms/{bin-2d.js → bin-2d.ts} +17 -13
- package/src/transforms/bin-date.ts +48 -0
- package/src/transforms/bin-histogram.ts +61 -0
- package/src/transforms/{bin-linear-1d.js → bin-linear-1d.ts} +16 -11
- package/src/transforms/{bin-linear-2d.js → bin-linear-2d.ts} +23 -35
- package/src/transforms/{filter-query.js → filter-query.ts} +10 -14
- package/src/transforms/{line-density.js → line-density.ts} +19 -17
- package/src/transforms/{m4.js → m4.ts} +17 -14
- package/src/transforms/{scales.js → scales.ts} +57 -14
- package/src/transforms/util/bin-step.ts +100 -0
- package/src/transforms/util/{time-interval.js → time-interval.ts} +32 -21
- package/src/types.ts +5 -39
- package/src/util/ast.ts +104 -0
- package/src/util/{function.js → function.ts} +40 -31
- package/src/util/identity.ts +7 -0
- package/src/util/{string.js → string.ts} +4 -4
- package/src/util/type-check.ts +31 -0
- package/src/visit/{clone.js → clone.ts} +10 -10
- package/src/visit/{recurse.js → recurse.ts} +3 -1
- package/src/visit/{rewrite.js → rewrite.ts} +7 -7
- package/src/visit/{visitors.js → visitors.ts} +22 -30
- package/src/visit/walk.ts +46 -0
- package/src/ast/binary-op.js +0 -40
- package/src/ast/column-param.js +0 -40
- package/src/ast/fragment.js +0 -26
- package/src/ast/logical-op.js +0 -67
- package/src/ast/order-by.js +0 -48
- package/src/ast/sample.js +0 -53
- package/src/ast/verbatim.js +0 -33
- package/src/ast/window.js +0 -260
- package/src/functions/aggregate.js +0 -347
- package/src/functions/interval.js +0 -83
- package/src/functions/numeric.js +0 -143
- package/src/functions/operators.js +0 -301
- package/src/functions/order-by.js +0 -27
- package/src/functions/spatial.js +0 -59
- package/src/functions/string.js +0 -85
- package/src/functions/util.js +0 -14
- package/src/functions/window-frame.js +0 -61
- package/src/index-types.ts +0 -2
- package/src/load/extension.js +0 -3
- package/src/transforms/bin-date.js +0 -38
- package/src/transforms/bin-histogram.js +0 -52
- package/src/transforms/util/bin-step.js +0 -79
- package/src/util/type-check.js +0 -33
- package/src/visit/walk.js +0 -34
- package/tsconfig.json +0 -8
- package/vitest.config.ts +0 -3
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import type { ExprVarArgs, OrderByExpr, WindowFunctionName } from '../types.js';
|
|
2
|
+
import type { AggregateNode } from './aggregate.js';
|
|
3
|
+
import type { WindowFrameNode } from './window-frame.js';
|
|
4
|
+
import { ExprNode, SQLNode } from './node.js';
|
|
5
|
+
export declare class WindowClauseNode extends SQLNode {
|
|
6
|
+
/** The window name. */
|
|
7
|
+
readonly name: string;
|
|
8
|
+
/** The window definition. */
|
|
9
|
+
readonly def: WindowDefNode;
|
|
10
|
+
/**
|
|
11
|
+
* Instantiate a window clause node.
|
|
12
|
+
* @param name The window name.
|
|
13
|
+
* @param def The window definition.
|
|
14
|
+
*/
|
|
15
|
+
constructor(name: string, def: WindowDefNode);
|
|
16
|
+
/**
|
|
17
|
+
* Generate a SQL query string for this node.
|
|
18
|
+
*/
|
|
19
|
+
toString(): string;
|
|
20
|
+
}
|
|
21
|
+
export declare class WindowNode extends ExprNode {
|
|
22
|
+
readonly func: WindowFunctionNode | AggregateNode;
|
|
23
|
+
readonly def: WindowDefNode;
|
|
24
|
+
/**
|
|
25
|
+
* Instantiate a window node.
|
|
26
|
+
* @param func The window function call.
|
|
27
|
+
* @param over The window definition or name.
|
|
28
|
+
*/
|
|
29
|
+
constructor(func: WindowFunctionNode | AggregateNode, over?: WindowDefNode);
|
|
30
|
+
/**
|
|
31
|
+
* Return an updated window over a named window definition.
|
|
32
|
+
* @param name The window definition name.
|
|
33
|
+
* @returns A new window node.
|
|
34
|
+
*/
|
|
35
|
+
over(name: string): WindowNode;
|
|
36
|
+
/**
|
|
37
|
+
* Return an updated window with the given partitions.
|
|
38
|
+
* @param expr The partition by criteria.
|
|
39
|
+
* @returns A new window node.
|
|
40
|
+
*/
|
|
41
|
+
partitionby(...expr: ExprVarArgs[]): WindowNode;
|
|
42
|
+
/**
|
|
43
|
+
* Return an updated window with the given ordering.
|
|
44
|
+
* @param expr The order by criteria.
|
|
45
|
+
* @returns A new window node.
|
|
46
|
+
*/
|
|
47
|
+
orderby(...expr: ExprVarArgs[]): WindowNode;
|
|
48
|
+
/**
|
|
49
|
+
* Return an updated window with the given frame definition.
|
|
50
|
+
* @param framedef The frame definition.
|
|
51
|
+
* @returns A new window node.
|
|
52
|
+
*/
|
|
53
|
+
frame(framedef: WindowFrameNode): WindowNode;
|
|
54
|
+
/**
|
|
55
|
+
* Generate a SQL query string for this node.
|
|
56
|
+
*/
|
|
57
|
+
toString(): string;
|
|
58
|
+
}
|
|
59
|
+
export declare class WindowFunctionNode extends ExprNode {
|
|
60
|
+
/** The window function name. */
|
|
61
|
+
readonly name: string;
|
|
62
|
+
/** The window function arguments. */
|
|
63
|
+
readonly args: ExprNode[];
|
|
64
|
+
/** Flag to ignore null values. */
|
|
65
|
+
readonly ignoreNulls: boolean;
|
|
66
|
+
/** Order by expression for window arguments. */
|
|
67
|
+
readonly order: ExprNode[];
|
|
68
|
+
/**
|
|
69
|
+
* Instantiate a window function call node.
|
|
70
|
+
* @param name The window function name.
|
|
71
|
+
* @param args The window function arguments.
|
|
72
|
+
* @param ignoreNulls Flag to ignore null values.
|
|
73
|
+
* @param argOrder Order expressions for window arguments.
|
|
74
|
+
* Note that this argument ordering is distinct from the window ordering.
|
|
75
|
+
*/
|
|
76
|
+
constructor(name: WindowFunctionName, args?: ExprNode[], ignoreNulls?: boolean, argOrder?: OrderByExpr);
|
|
77
|
+
/**
|
|
78
|
+
* Generate a SQL query string for this node.
|
|
79
|
+
*/
|
|
80
|
+
toString(): string;
|
|
81
|
+
}
|
|
82
|
+
export declare class WindowDefNode extends SQLNode {
|
|
83
|
+
/** The base window definition name. */
|
|
84
|
+
readonly name?: string;
|
|
85
|
+
/** The partition by criteria. */
|
|
86
|
+
readonly partition?: ExprNode[];
|
|
87
|
+
/** The order by criteria. */
|
|
88
|
+
readonly order?: ExprNode[];
|
|
89
|
+
/** The window frame definition. */
|
|
90
|
+
readonly framedef?: WindowFrameNode;
|
|
91
|
+
/**
|
|
92
|
+
* Instantiate a window definition node.
|
|
93
|
+
* @param name The base window definition name.
|
|
94
|
+
* @param partition The partition by criteria.
|
|
95
|
+
* @param order The order by criteria.
|
|
96
|
+
* @param framedef The window frame definition.
|
|
97
|
+
*/
|
|
98
|
+
constructor(name?: string, partition?: ExprNode[], order?: ExprNode[], framedef?: WindowFrameNode);
|
|
99
|
+
/**
|
|
100
|
+
* Return an updated window definition with the given base name.
|
|
101
|
+
* @param name The base window definition name.
|
|
102
|
+
* @returns A new window definition node.
|
|
103
|
+
*/
|
|
104
|
+
over(name: string): WindowDefNode;
|
|
105
|
+
/**
|
|
106
|
+
* Return an updated window definition with the given partitions.
|
|
107
|
+
* @param expr The partition by criteria.
|
|
108
|
+
* @returns A new window definition node.
|
|
109
|
+
*/
|
|
110
|
+
partitionby(...expr: ExprVarArgs[]): WindowDefNode;
|
|
111
|
+
/**
|
|
112
|
+
* Return an updated window definition with the given ordering.
|
|
113
|
+
* @param expr The order by criteria.
|
|
114
|
+
* @returns A new window definition node.
|
|
115
|
+
*/
|
|
116
|
+
orderby(...expr: ExprVarArgs[]): WindowDefNode;
|
|
117
|
+
/**
|
|
118
|
+
* Return an updated window definition with the given frame definition.
|
|
119
|
+
* @param framedef The frame definition.
|
|
120
|
+
* @return A new window definition node.
|
|
121
|
+
*/
|
|
122
|
+
frame(framedef: WindowFrameNode): WindowDefNode;
|
|
123
|
+
/**
|
|
124
|
+
* Generate a SQL query string for this node.
|
|
125
|
+
*/
|
|
126
|
+
toString(): string;
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=window.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"window.d.ts","sourceRoot":"","sources":["../../../src/ast/window.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIzD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE9C,qBAAa,gBAAiB,SAAQ,OAAO;IAC1C,uBAAuB;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,6BAA6B;IAC7B,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;IAE7B;;;;OAIG;gBACS,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa;IAM5C;;OAEG;IACH,QAAQ;CAGT;AAED,qBAAa,UAAW,SAAQ,QAAQ;IACtC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,GAAG,aAAa,CAAC;IAClD,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAA;IAE3B;;;;OAIG;gBAED,IAAI,EAAE,kBAAkB,GAAG,aAAa,EACxC,IAAI,GAAE,aAAmC;IAO3C;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM;IAIjB;;;;OAIG;IACH,WAAW,CAAC,GAAG,IAAI,EAAE,WAAW,EAAE;IAIlC;;;;OAIG;IACH,OAAO,CAAC,GAAG,IAAI,EAAE,WAAW,EAAE;IAI9B;;;;OAIG;IACH,KAAK,CAAC,QAAQ,EAAE,eAAe;IAI/B;;OAEG;IACH,QAAQ;CAGT;AAED,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC1B,kCAAkC;IAClC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,gDAAgD;IAChD,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAE3B;;;;;;;OAOG;gBAED,IAAI,EAAE,kBAAkB,EACxB,IAAI,GAAE,QAAQ,EAAO,EACrB,WAAW,GAAE,OAAe,EAC5B,QAAQ,GAAE,WAAgB;IAS5B;;OAEG;IACH,QAAQ;CAST;AAED,qBAAa,aAAc,SAAQ,OAAO;IACxC,uCAAuC;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IAChC,6BAA6B;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC5B,mCAAmC;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC;IAEpC;;;;;;OAMG;gBAED,IAAI,CAAC,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,QAAQ,EAAE,EACtB,KAAK,CAAC,EAAE,QAAQ,EAAE,EAClB,QAAQ,CAAC,EAAE,eAAe;IAS5B;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM;IAIjB;;;;OAIG;IACH,WAAW,CAAC,GAAG,IAAI,EAAE,WAAW,EAAE;IAIlC;;;;OAIG;IACH,OAAO,CAAC,GAAG,IAAI,EAAE,WAAW,EAAE;IAI9B;;;;OAIG;IACH,KAAK,CAAC,QAAQ,EAAE,eAAe;IAI/B;;OAEG;IACH,QAAQ;CAWT"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import { WINDOW, WINDOW_CLAUSE, WINDOW_DEF, WINDOW_FUNCTION } from '../constants.js';
|
|
2
|
+
import { nodeList } from '../util/function.js';
|
|
3
|
+
import { quoteIdentifier } from '../util/string.js';
|
|
4
|
+
import { ExprNode, SQLNode } from './node.js';
|
|
5
|
+
export class WindowClauseNode extends SQLNode {
|
|
6
|
+
/** The window name. */
|
|
7
|
+
name;
|
|
8
|
+
/** The window definition. */
|
|
9
|
+
def;
|
|
10
|
+
/**
|
|
11
|
+
* Instantiate a window clause node.
|
|
12
|
+
* @param name The window name.
|
|
13
|
+
* @param def The window definition.
|
|
14
|
+
*/
|
|
15
|
+
constructor(name, def) {
|
|
16
|
+
super(WINDOW_CLAUSE);
|
|
17
|
+
this.name = name;
|
|
18
|
+
this.def = def;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Generate a SQL query string for this node.
|
|
22
|
+
*/
|
|
23
|
+
toString() {
|
|
24
|
+
return `${quoteIdentifier(this.name)} AS ${this.def}`;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export class WindowNode extends ExprNode {
|
|
28
|
+
func;
|
|
29
|
+
def;
|
|
30
|
+
/**
|
|
31
|
+
* Instantiate a window node.
|
|
32
|
+
* @param func The window function call.
|
|
33
|
+
* @param over The window definition or name.
|
|
34
|
+
*/
|
|
35
|
+
constructor(func, over = new WindowDefNode()) {
|
|
36
|
+
super(WINDOW);
|
|
37
|
+
this.func = func;
|
|
38
|
+
this.def = over;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Return an updated window over a named window definition.
|
|
42
|
+
* @param name The window definition name.
|
|
43
|
+
* @returns A new window node.
|
|
44
|
+
*/
|
|
45
|
+
over(name) {
|
|
46
|
+
return new WindowNode(this.func, this.def.over(name));
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Return an updated window with the given partitions.
|
|
50
|
+
* @param expr The partition by criteria.
|
|
51
|
+
* @returns A new window node.
|
|
52
|
+
*/
|
|
53
|
+
partitionby(...expr) {
|
|
54
|
+
return new WindowNode(this.func, this.def.partitionby(...expr));
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Return an updated window with the given ordering.
|
|
58
|
+
* @param expr The order by criteria.
|
|
59
|
+
* @returns A new window node.
|
|
60
|
+
*/
|
|
61
|
+
orderby(...expr) {
|
|
62
|
+
return new WindowNode(this.func, this.def.orderby(...expr));
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Return an updated window with the given frame definition.
|
|
66
|
+
* @param framedef The frame definition.
|
|
67
|
+
* @returns A new window node.
|
|
68
|
+
*/
|
|
69
|
+
frame(framedef) {
|
|
70
|
+
return new WindowNode(this.func, this.def.frame(framedef));
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Generate a SQL query string for this node.
|
|
74
|
+
*/
|
|
75
|
+
toString() {
|
|
76
|
+
return `${this.func} OVER ${this.def}`;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
export class WindowFunctionNode extends ExprNode {
|
|
80
|
+
/** The window function name. */
|
|
81
|
+
name;
|
|
82
|
+
/** The window function arguments. */
|
|
83
|
+
args;
|
|
84
|
+
/** Flag to ignore null values. */
|
|
85
|
+
ignoreNulls;
|
|
86
|
+
/** Order by expression for window arguments. */
|
|
87
|
+
order;
|
|
88
|
+
/**
|
|
89
|
+
* Instantiate a window function call node.
|
|
90
|
+
* @param name The window function name.
|
|
91
|
+
* @param args The window function arguments.
|
|
92
|
+
* @param ignoreNulls Flag to ignore null values.
|
|
93
|
+
* @param argOrder Order expressions for window arguments.
|
|
94
|
+
* Note that this argument ordering is distinct from the window ordering.
|
|
95
|
+
*/
|
|
96
|
+
constructor(name, args = [], ignoreNulls = false, argOrder = []) {
|
|
97
|
+
super(WINDOW_FUNCTION);
|
|
98
|
+
this.name = name;
|
|
99
|
+
this.args = args;
|
|
100
|
+
this.ignoreNulls = ignoreNulls;
|
|
101
|
+
this.order = nodeList([argOrder]);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Generate a SQL query string for this node.
|
|
105
|
+
*/
|
|
106
|
+
toString() {
|
|
107
|
+
const { name, args, ignoreNulls, order } = this;
|
|
108
|
+
const arg = [
|
|
109
|
+
args.join(', '),
|
|
110
|
+
order.length ? `ORDER BY ${order.join(', ')}` : '',
|
|
111
|
+
ignoreNulls ? 'IGNORE NULLS' : ''
|
|
112
|
+
].filter(x => x).join(' ');
|
|
113
|
+
return `${name}(${arg})`;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
export class WindowDefNode extends SQLNode {
|
|
117
|
+
/** The base window definition name. */
|
|
118
|
+
name;
|
|
119
|
+
/** The partition by criteria. */
|
|
120
|
+
partition;
|
|
121
|
+
/** The order by criteria. */
|
|
122
|
+
order;
|
|
123
|
+
/** The window frame definition. */
|
|
124
|
+
framedef;
|
|
125
|
+
/**
|
|
126
|
+
* Instantiate a window definition node.
|
|
127
|
+
* @param name The base window definition name.
|
|
128
|
+
* @param partition The partition by criteria.
|
|
129
|
+
* @param order The order by criteria.
|
|
130
|
+
* @param framedef The window frame definition.
|
|
131
|
+
*/
|
|
132
|
+
constructor(name, partition, order, framedef) {
|
|
133
|
+
super(WINDOW_DEF);
|
|
134
|
+
this.name = name;
|
|
135
|
+
this.partition = partition;
|
|
136
|
+
this.order = order;
|
|
137
|
+
this.framedef = framedef;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Return an updated window definition with the given base name.
|
|
141
|
+
* @param name The base window definition name.
|
|
142
|
+
* @returns A new window definition node.
|
|
143
|
+
*/
|
|
144
|
+
over(name) {
|
|
145
|
+
return deriveDef(this, { name });
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Return an updated window definition with the given partitions.
|
|
149
|
+
* @param expr The partition by criteria.
|
|
150
|
+
* @returns A new window definition node.
|
|
151
|
+
*/
|
|
152
|
+
partitionby(...expr) {
|
|
153
|
+
return deriveDef(this, { partition: nodeList(expr) });
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Return an updated window definition with the given ordering.
|
|
157
|
+
* @param expr The order by criteria.
|
|
158
|
+
* @returns A new window definition node.
|
|
159
|
+
*/
|
|
160
|
+
orderby(...expr) {
|
|
161
|
+
return deriveDef(this, { order: nodeList(expr) });
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Return an updated window definition with the given frame definition.
|
|
165
|
+
* @param framedef The frame definition.
|
|
166
|
+
* @return A new window definition node.
|
|
167
|
+
*/
|
|
168
|
+
frame(framedef) {
|
|
169
|
+
return deriveDef(this, { framedef });
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Generate a SQL query string for this node.
|
|
173
|
+
*/
|
|
174
|
+
toString() {
|
|
175
|
+
const { name, partition, order, framedef } = this;
|
|
176
|
+
const base = name && quoteIdentifier(name);
|
|
177
|
+
const def = [
|
|
178
|
+
base,
|
|
179
|
+
partition?.length && `PARTITION BY ${partition.join(', ')}`,
|
|
180
|
+
order?.length && `ORDER BY ${order.join(', ')}`,
|
|
181
|
+
framedef
|
|
182
|
+
].filter(x => x);
|
|
183
|
+
return base && def.length < 2 ? base : `(${def.join(' ')})`;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Derive a new window definition node from an existing one.
|
|
188
|
+
* @param def The existing window definition.
|
|
189
|
+
* @param options An options object with new definition properties.
|
|
190
|
+
*/
|
|
191
|
+
function deriveDef(def, options) {
|
|
192
|
+
return new WindowDefNode(options.name ?? def.name, options.partition ?? def.partition, options.order ?? def.order, options.framedef ?? def.framedef);
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=window.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"window.js","sourceRoot":"","sources":["../../../src/ast/window.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Query } from './query.js';
|
|
2
|
+
import { SQLNode } from './node.js';
|
|
3
|
+
export declare class WithClauseNode extends SQLNode {
|
|
4
|
+
/** The common table expression (CTE) name. */
|
|
5
|
+
readonly name: string;
|
|
6
|
+
/** The common table expression (CTE) query. */
|
|
7
|
+
readonly query: Query;
|
|
8
|
+
/** The common table expression (CTE) materialization flag. */
|
|
9
|
+
readonly materialized: boolean | null;
|
|
10
|
+
/**
|
|
11
|
+
* Instantiate a with clause node for a common table expression (CTE).
|
|
12
|
+
* @param name The common table expression (CTE) name.
|
|
13
|
+
* @param query The common table expression (CTE) query.
|
|
14
|
+
* @param materialized The common table expression (CTE)
|
|
15
|
+
* materialization flag. If `true`, forces materialization of the CTE.
|
|
16
|
+
* If `false`, materialization is not performed. Otherwise (for example, if
|
|
17
|
+
* `undefined` or `null`), materialization is decided by the database.
|
|
18
|
+
*/
|
|
19
|
+
constructor(name: string, query: Query, materialized?: boolean | null);
|
|
20
|
+
/**
|
|
21
|
+
* Generate a SQL query string for this node.
|
|
22
|
+
*/
|
|
23
|
+
toString(): string;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=with.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"with.d.ts","sourceRoot":"","sources":["../../../src/ast/with.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,cAAe,SAAQ,OAAO;IACzC,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+CAA+C;IAC/C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,YAAY,EAAE,OAAO,GAAG,IAAI,CAAC;IAEtC;;;;;;;;OAQG;gBAED,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,KAAK,EACZ,YAAY,GAAE,OAAO,GAAG,IAAW;IAQrC;;OAEG;IACH,QAAQ;CAOT"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { WITH_CLAUSE } from '../constants.js';
|
|
2
|
+
import { SQLNode } from './node.js';
|
|
3
|
+
export class WithClauseNode extends SQLNode {
|
|
4
|
+
/** The common table expression (CTE) name. */
|
|
5
|
+
name;
|
|
6
|
+
/** The common table expression (CTE) query. */
|
|
7
|
+
query;
|
|
8
|
+
/** The common table expression (CTE) materialization flag. */
|
|
9
|
+
materialized;
|
|
10
|
+
/**
|
|
11
|
+
* Instantiate a with clause node for a common table expression (CTE).
|
|
12
|
+
* @param name The common table expression (CTE) name.
|
|
13
|
+
* @param query The common table expression (CTE) query.
|
|
14
|
+
* @param materialized The common table expression (CTE)
|
|
15
|
+
* materialization flag. If `true`, forces materialization of the CTE.
|
|
16
|
+
* If `false`, materialization is not performed. Otherwise (for example, if
|
|
17
|
+
* `undefined` or `null`), materialization is decided by the database.
|
|
18
|
+
*/
|
|
19
|
+
constructor(name, query, materialized = null) {
|
|
20
|
+
super(WITH_CLAUSE);
|
|
21
|
+
this.name = name;
|
|
22
|
+
this.query = query;
|
|
23
|
+
this.materialized = materialized;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Generate a SQL query string for this node.
|
|
27
|
+
*/
|
|
28
|
+
toString() {
|
|
29
|
+
const flag = this.materialized;
|
|
30
|
+
const mat = flag === true ? ' MATERIALIZED'
|
|
31
|
+
: flag === false ? ' NOT MATERIALIZED'
|
|
32
|
+
: '';
|
|
33
|
+
return `"${this.name}" AS${mat} (${this.query})`;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=with.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"with.js","sourceRoot":"","sources":["../../../src/ast/with.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,OAAO,cAAe,SAAQ,OAAO;IACzC,8CAA8C;IACrC,IAAI,CAAS;IACtB,+CAA+C;IACtC,KAAK,CAAQ;IACtB,8DAA8D;IACrD,YAAY,CAAiB;IAEtC;;;;;;;;OAQG;IACH,YACE,IAAY,EACZ,KAAY,EACZ,eAA+B,IAAI;QAEnC,KAAK,CAAC,WAAW,CAAC,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;QAC/B,MAAM,GAAG,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,eAAe;YACzC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,mBAAmB;gBACtC,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,IAAI,IAAI,CAAC,IAAI,OAAO,GAAG,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC;IACnD,CAAC;CACF"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export declare const COLUMN_REF = "COLUMN_REF";
|
|
2
|
+
export declare const COLUMN_PARAM = "COLUMN_PARAM";
|
|
3
|
+
export declare const TABLE_REF = "TABLE_REF";
|
|
4
|
+
export declare const LITERAL = "LITERAL";
|
|
5
|
+
export declare const INTERVAL = "INTERVAL";
|
|
6
|
+
export declare const LIST = "LIST";
|
|
7
|
+
export declare const UNNEST = "UNNEST";
|
|
8
|
+
export declare const ORDER_BY = "ORDER_BY";
|
|
9
|
+
export declare const CAST = "CAST";
|
|
10
|
+
export declare const CASE = "CASE";
|
|
11
|
+
export declare const WHEN = "WHEN";
|
|
12
|
+
export declare const COLLATE = "COLLATE";
|
|
13
|
+
export declare const UNARY_OPERATOR = "UNARY";
|
|
14
|
+
export declare const UNARY_POSTFIX_OPERATOR = "UNARY_POSTFIX";
|
|
15
|
+
export declare const BINARY_OPERATOR = "BINARY";
|
|
16
|
+
export declare const BETWEEN_OPERATOR = "BETWEEN";
|
|
17
|
+
export declare const NOT_BETWEEN_OPERATOR = "NOT_BETWEEN";
|
|
18
|
+
export declare const LOGICAL_OPERATOR = "LOGICAL_OPERATOR";
|
|
19
|
+
export declare const IN_OPERATOR = "IN";
|
|
20
|
+
export declare const FUNCTION = "FUNCTION";
|
|
21
|
+
export declare const AGGREGATE = "AGGREGATE";
|
|
22
|
+
export declare const WINDOW = "WINDOW";
|
|
23
|
+
export declare const WINDOW_FUNCTION = "WINDOW_FUNCTION";
|
|
24
|
+
export declare const WINDOW_DEF = "WINDOW_DEF";
|
|
25
|
+
export declare const WINDOW_FRAME = "WINDOW_FRAME";
|
|
26
|
+
export declare const WINDOW_EXTENT_EXPR = "WINDOW_EXTENT_EXPR";
|
|
27
|
+
export declare const EXPRESSION = "EXPRESSION";
|
|
28
|
+
export declare const FRAGMENT = "FRAGMENT";
|
|
29
|
+
export declare const VERBATIM = "VERBATIM";
|
|
30
|
+
export declare const PARAM = "PARAM";
|
|
31
|
+
export declare const WITH_CLAUSE = "WITH_CLAUSE";
|
|
32
|
+
export declare const WINDOW_CLAUSE = "WINDOW_CLAUSE";
|
|
33
|
+
export declare const SELECT_CLAUSE = "SELECT_CLAUSE";
|
|
34
|
+
export declare const FROM_CLAUSE = "FROM_CLAUSE";
|
|
35
|
+
export declare const SAMPLE_CLAUSE = "SAMPLE_CLAUSE";
|
|
36
|
+
export declare const SELECT_QUERY = "SELECT_QUERY";
|
|
37
|
+
export declare const DESCRIBE_QUERY = "DESCRIBE_QUERY";
|
|
38
|
+
export declare const SET_OPERATION = "SET_OPERATION";
|
|
39
|
+
export declare const SCALAR_SUBQUERY = "SCALAR_SUBQUERY";
|
|
40
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,OAAO,YAAY,CAAC;AACjC,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,OAAO,YAAY,CAAC;AAEjC,eAAO,MAAM,cAAc,UAAU,CAAC;AACtC,eAAO,MAAM,sBAAsB,kBAAkB,CAAC;AACtD,eAAO,MAAM,eAAe,WAAW,CAAC;AACxC,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAC1C,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAClD,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AACnD,eAAO,MAAM,WAAW,OAAO,CAAC;AAEhC,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,eAAe,oBAAoB,CAAC;AACjD,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AAEvD,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,KAAK,UAAU,CAAC;AAE7B,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAE7C,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export const COLUMN_REF = 'COLUMN_REF';
|
|
2
|
+
export const COLUMN_PARAM = 'COLUMN_PARAM';
|
|
3
|
+
export const TABLE_REF = 'TABLE_REF';
|
|
4
|
+
export const LITERAL = 'LITERAL';
|
|
5
|
+
export const INTERVAL = 'INTERVAL';
|
|
6
|
+
export const LIST = 'LIST';
|
|
7
|
+
export const UNNEST = 'UNNEST';
|
|
8
|
+
export const ORDER_BY = 'ORDER_BY';
|
|
9
|
+
export const CAST = 'CAST';
|
|
10
|
+
export const CASE = 'CASE';
|
|
11
|
+
export const WHEN = 'WHEN';
|
|
12
|
+
export const COLLATE = 'COLLATE';
|
|
13
|
+
export const UNARY_OPERATOR = 'UNARY';
|
|
14
|
+
export const UNARY_POSTFIX_OPERATOR = 'UNARY_POSTFIX';
|
|
15
|
+
export const BINARY_OPERATOR = 'BINARY';
|
|
16
|
+
export const BETWEEN_OPERATOR = 'BETWEEN';
|
|
17
|
+
export const NOT_BETWEEN_OPERATOR = 'NOT_BETWEEN';
|
|
18
|
+
export const LOGICAL_OPERATOR = 'LOGICAL_OPERATOR';
|
|
19
|
+
export const IN_OPERATOR = 'IN';
|
|
20
|
+
export const FUNCTION = 'FUNCTION';
|
|
21
|
+
export const AGGREGATE = 'AGGREGATE';
|
|
22
|
+
export const WINDOW = 'WINDOW';
|
|
23
|
+
export const WINDOW_FUNCTION = 'WINDOW_FUNCTION';
|
|
24
|
+
export const WINDOW_DEF = 'WINDOW_DEF';
|
|
25
|
+
export const WINDOW_FRAME = 'WINDOW_FRAME';
|
|
26
|
+
export const WINDOW_EXTENT_EXPR = 'WINDOW_EXTENT_EXPR';
|
|
27
|
+
export const EXPRESSION = 'EXPRESSION';
|
|
28
|
+
export const FRAGMENT = 'FRAGMENT';
|
|
29
|
+
export const VERBATIM = 'VERBATIM';
|
|
30
|
+
export const PARAM = 'PARAM';
|
|
31
|
+
export const WITH_CLAUSE = 'WITH_CLAUSE';
|
|
32
|
+
export const WINDOW_CLAUSE = 'WINDOW_CLAUSE';
|
|
33
|
+
export const SELECT_CLAUSE = 'SELECT_CLAUSE';
|
|
34
|
+
export const FROM_CLAUSE = 'FROM_CLAUSE';
|
|
35
|
+
export const SAMPLE_CLAUSE = 'SAMPLE_CLAUSE';
|
|
36
|
+
export const SELECT_QUERY = 'SELECT_QUERY';
|
|
37
|
+
export const DESCRIBE_QUERY = 'DESCRIBE_QUERY';
|
|
38
|
+
export const SET_OPERATION = 'SET_OPERATION';
|
|
39
|
+
export const SCALAR_SUBQUERY = 'SCALAR_SUBQUERY';
|
|
40
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC;AACvC,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC;AAC3C,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC;AACrC,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC;AACjC,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AACnC,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC;AAC3B,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC;AAE/B,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AACnC,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC;AAC3B,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC;AAC3B,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC;AAC3B,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC;AAEjC,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AACtC,MAAM,CAAC,MAAM,sBAAsB,GAAG,eAAe,CAAC;AACtD,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAC1C,MAAM,CAAC,MAAM,oBAAoB,GAAG,aAAa,CAAC;AAClD,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AACnD,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC;AAEhC,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AACnC,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC;AACrC,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC;AAC/B,MAAM,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC;AACjD,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC;AACvC,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC;AAC3C,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AAEvD,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC;AACvC,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AACnC,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AACnC,MAAM,CAAC,MAAM,KAAK,GAAG,OAAO,CAAC;AAE7B,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;AACzC,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAC7C,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAC7C,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;AACzC,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAE7C,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC;AAC3C,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAC/C,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAC7C,MAAM,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC"}
|