@uwdata/mosaic-sql 0.16.2 → 0.18.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 +1 -1
- 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/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/{types → src}/ast/param.d.ts +11 -11
- 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 +294 -0
- package/dist/src/ast/query.d.ts.map +1 -0
- package/dist/src/ast/query.js +584 -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/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/{types → src}/ast/with.d.ts +15 -22
- 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 +38 -0
- package/dist/src/constants.d.ts.map +1 -0
- package/dist/src/constants.js +38 -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/{types → src}/functions/case.d.ts +7 -7
- 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/{types → src}/functions/cte.d.ts +7 -7
- 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/{types → src}/functions/literal.d.ts +8 -8
- 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/{types → src}/functions/sql-template-tag.d.ts +8 -10
- 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/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/{types → src}/functions/window.d.ts +24 -39
- 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 +69 -0
- package/dist/src/index.d.ts.map +1 -0
- package/{src → dist/src}/index.js +16 -12
- 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/{types → src}/types.d.ts +6 -19
- 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/{types → src}/util/ast.d.ts +26 -25
- 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 +36 -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/{types → src}/visit/visitors.d.ts +14 -16
- 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 +12 -10
- package/src/ast/aggregate.ts +198 -0
- 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.ts +27 -0
- 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.ts +40 -0
- 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/{literal.js → literal.ts} +6 -9
- package/src/ast/logical-op.ts +50 -0
- package/src/ast/node.ts +39 -0
- package/src/ast/order-by.ts +38 -0
- package/src/ast/{param.js → param.ts} +6 -12
- package/src/ast/{query.js → query.ts} +193 -205
- package/src/ast/sample.ts +47 -0
- package/src/ast/{select.js → select.ts} +10 -16
- package/src/ast/subquery.ts +24 -0
- 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/{verbatim.js → verbatim.ts} +9 -8
- package/src/ast/window-frame.ts +97 -0
- package/src/ast/window.ts +246 -0
- package/src/ast/{with.js → with.ts} +19 -20
- package/src/{constants.js → constants.ts} +5 -6
- 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.ts +13 -0
- package/src/functions/{column.js → column.ts} +9 -10
- package/src/functions/{cte.js → cte.ts} +9 -6
- package/src/functions/datetime.ts +50 -0
- package/src/functions/interval.ts +74 -0
- package/src/functions/{literal.js → literal.ts} +6 -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/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 +75 -0
- package/src/load/{create.js → create.ts} +9 -3
- package/src/load/extension.ts +3 -0
- package/src/load/{load.js → load.ts} +26 -11
- 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.ts +40 -0
- 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 -30
- 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.ts +53 -0
- package/src/visit/{recurse.js → recurse.ts} +18 -6
- package/src/visit/{rewrite.js → rewrite.ts} +10 -18
- package/src/visit/{visitors.js → visitors.ts} +22 -30
- package/src/visit/walk.ts +46 -0
- package/dist/types/ast/aggregate.d.ts +0 -71
- package/dist/types/ast/between-op.d.ts +0 -46
- package/dist/types/ast/binary-op.d.ts +0 -28
- package/dist/types/ast/case.d.ts +0 -67
- package/dist/types/ast/cast.d.ts +0 -21
- package/dist/types/ast/column-param.d.ts +0 -23
- package/dist/types/ast/column-ref.d.ts +0 -40
- package/dist/types/ast/fragment.d.ts +0 -14
- package/dist/types/ast/from.d.ts +0 -21
- package/dist/types/ast/function.d.ts +0 -21
- package/dist/types/ast/in-op.d.ts +0 -21
- package/dist/types/ast/interval.d.ts +0 -21
- package/dist/types/ast/literal.d.ts +0 -15
- package/dist/types/ast/logical-op.d.ts +0 -46
- package/dist/types/ast/node.d.ts +0 -24
- package/dist/types/ast/order-by.d.ts +0 -29
- package/dist/types/ast/query.d.ts +0 -320
- package/dist/types/ast/sample.d.ts +0 -42
- package/dist/types/ast/select.d.ts +0 -22
- package/dist/types/ast/table-ref.d.ts +0 -25
- package/dist/types/ast/unary-op.d.ts +0 -39
- package/dist/types/ast/verbatim.d.ts +0 -9
- package/dist/types/ast/window.d.ts +0 -180
- package/dist/types/constants.d.ts +0 -38
- package/dist/types/functions/aggregate.d.ts +0 -236
- package/dist/types/functions/cast.d.ts +0 -26
- package/dist/types/functions/column.d.ts +0 -11
- package/dist/types/functions/datetime.d.ts +0 -45
- package/dist/types/functions/numeric.d.ts +0 -95
- package/dist/types/functions/operators.d.ts +0 -200
- package/dist/types/functions/order-by.d.ts +0 -18
- package/dist/types/functions/spatial.d.ts +0 -38
- package/dist/types/functions/string.d.ts +0 -57
- package/dist/types/functions/table-ref.d.ts +0 -9
- package/dist/types/functions/util.d.ts +0 -8
- package/dist/types/index-types.d.ts +0 -2
- package/dist/types/index.d.ts +0 -59
- package/dist/types/load/create.d.ts +0 -8
- package/dist/types/load/extension.d.ts +0 -1
- package/dist/types/load/load.d.ts +0 -12
- package/dist/types/load/sql-from.d.ts +0 -11
- package/dist/types/transforms/bin-1d.d.ts +0 -15
- package/dist/types/transforms/bin-2d.d.ts +0 -19
- package/dist/types/transforms/bin-date.d.ts +0 -44
- package/dist/types/transforms/bin-histogram.d.ts +0 -51
- package/dist/types/transforms/bin-linear-1d.d.ts +0 -12
- package/dist/types/transforms/bin-linear-2d.d.ts +0 -19
- package/dist/types/transforms/line-density.d.ts +0 -24
- package/dist/types/transforms/m4.d.ts +0 -21
- package/dist/types/transforms/scales.d.ts +0 -1
- package/dist/types/transforms/util/bin-step.d.ts +0 -61
- package/dist/types/transforms/util/time-interval.d.ts +0 -13
- package/dist/types/util/function.d.ts +0 -56
- package/dist/types/util/string.d.ts +0 -3
- package/dist/types/util/type-check.d.ts +0 -22
- package/dist/types/visit/recurse.d.ts +0 -28
- package/dist/types/visit/rewrite.d.ts +0 -10
- package/dist/types/visit/walk.d.ts +0 -10
- package/jsconfig.json +0 -11
- package/src/ast/aggregate.js +0 -167
- 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/from.js +0 -40
- package/src/ast/logical-op.js +0 -67
- package/src/ast/node.js +0 -29
- package/src/ast/order-by.js +0 -48
- package/src/ast/sample.js +0 -53
- package/src/ast/window.js +0 -294
- package/src/functions/aggregate.js +0 -347
- package/src/functions/datetime.js +0 -68
- 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/index-types.ts +0 -2
- package/src/load/extension.js +0 -3
- package/src/transforms/bin-date.js +0 -37
- 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 -35
- package/tsconfig.json +0 -12
- package/vitest.config.ts +0 -3
|
@@ -0,0 +1,584 @@
|
|
|
1
|
+
import { DESCRIBE_QUERY, SELECT_QUERY, SET_OPERATION } from '../constants.js';
|
|
2
|
+
import { asNode, asVerbatim, maybeTableRef } from '../util/ast.js';
|
|
3
|
+
import { exprList, nodeList } from '../util/function.js';
|
|
4
|
+
import { unquote } from '../util/string.js';
|
|
5
|
+
import { isArray, isString } from '../util/type-check.js';
|
|
6
|
+
import { isColumnRef } from './column-ref.js';
|
|
7
|
+
import { FromClauseNode } from './from.js';
|
|
8
|
+
import { ExprNode, SQLNode, isNode } from './node.js';
|
|
9
|
+
import { SampleClauseNode } from './sample.js';
|
|
10
|
+
import { SelectClauseNode } from './select.js';
|
|
11
|
+
import { isTableRef } from './table-ref.js';
|
|
12
|
+
import { WindowClauseNode } from './window.js';
|
|
13
|
+
import { WithClauseNode } from './with.js';
|
|
14
|
+
/**
|
|
15
|
+
* Check if a value is a selection query or set operation.
|
|
16
|
+
* @param value The value to check.
|
|
17
|
+
*/
|
|
18
|
+
export function isQuery(value) {
|
|
19
|
+
return value instanceof Query;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Check if a value is a selection query.
|
|
23
|
+
* @param value The value to check.
|
|
24
|
+
*/
|
|
25
|
+
export function isSelectQuery(value) {
|
|
26
|
+
return value instanceof SelectQuery;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Check if a value is a describe query.
|
|
30
|
+
* @param value The value to check.
|
|
31
|
+
*/
|
|
32
|
+
export function isDescribeQuery(value) {
|
|
33
|
+
return value instanceof DescribeQuery;
|
|
34
|
+
}
|
|
35
|
+
export class Query extends ExprNode {
|
|
36
|
+
/**
|
|
37
|
+
* Create a new WITH clause with the given CTE queries.
|
|
38
|
+
* @param expr The WITH CTE queries.
|
|
39
|
+
*/
|
|
40
|
+
static with(...expr) {
|
|
41
|
+
return new WithClause(...expr);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Create a new select query with the given SELECT expressions.
|
|
45
|
+
* @param expr The SELECT expressions.
|
|
46
|
+
*/
|
|
47
|
+
static select(...expr) {
|
|
48
|
+
return new SelectQuery().select(...expr);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Create a new select query with the given FROM expressions.
|
|
52
|
+
* @param expr The FROM expressions.
|
|
53
|
+
*/
|
|
54
|
+
static from(...expr) {
|
|
55
|
+
return new SelectQuery().from(...expr);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Create a new UNION set operation over the given queries.
|
|
59
|
+
* @param queries The queries.
|
|
60
|
+
*/
|
|
61
|
+
static union(...queries) {
|
|
62
|
+
return new SetOperation('UNION', queries.flat());
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Create a new UNION ALL set operation over the given queries.
|
|
66
|
+
* @param queries The queries.
|
|
67
|
+
*/
|
|
68
|
+
static unionAll(...queries) {
|
|
69
|
+
return new SetOperation('UNION ALL', queries.flat());
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Create a new INTERSECT set operation over the given queries.
|
|
73
|
+
* @param queries The queries.
|
|
74
|
+
*/
|
|
75
|
+
static intersect(...queries) {
|
|
76
|
+
return new SetOperation('INTERSECT', queries.flat());
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Create a new EXCEPT set operation over the given queries.
|
|
80
|
+
* @param queries The queries.
|
|
81
|
+
*/
|
|
82
|
+
static except(...queries) {
|
|
83
|
+
return new SetOperation('EXCEPT', queries.flat());
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Create a new describe query for the given input query.
|
|
87
|
+
* @param query The query to describe.
|
|
88
|
+
*/
|
|
89
|
+
static describe(query) {
|
|
90
|
+
return new DescribeQuery(query);
|
|
91
|
+
}
|
|
92
|
+
_with = [];
|
|
93
|
+
_orderby = [];
|
|
94
|
+
_limitPerc = false;
|
|
95
|
+
_limit;
|
|
96
|
+
_offset;
|
|
97
|
+
cteFor = null;
|
|
98
|
+
/**
|
|
99
|
+
* Instantiate a new query.
|
|
100
|
+
*/
|
|
101
|
+
constructor(type) {
|
|
102
|
+
super(type);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Return a list of subqueries.
|
|
106
|
+
*/
|
|
107
|
+
get subqueries() {
|
|
108
|
+
return [];
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Clone this query.
|
|
112
|
+
*/
|
|
113
|
+
clone() {
|
|
114
|
+
return this;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Add a pointer to the query for which this query is a CTE.
|
|
118
|
+
* @param query The query for which this query is a CTE.
|
|
119
|
+
*/
|
|
120
|
+
setCteFor(query) {
|
|
121
|
+
this.cteFor = query;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Add WITH common table expressions (CTEs).
|
|
125
|
+
* @param expr Expressions to add.
|
|
126
|
+
*/
|
|
127
|
+
with(...expr) {
|
|
128
|
+
const list = [];
|
|
129
|
+
const add = (name, q) => {
|
|
130
|
+
const query = q.clone();
|
|
131
|
+
query.setCteFor(this);
|
|
132
|
+
list.push(new WithClauseNode(name, query));
|
|
133
|
+
};
|
|
134
|
+
expr.flat().forEach(e => {
|
|
135
|
+
if (e instanceof WithClauseNode)
|
|
136
|
+
list.push(e);
|
|
137
|
+
else if (e != null)
|
|
138
|
+
for (const name in e)
|
|
139
|
+
add(name, e[name]);
|
|
140
|
+
});
|
|
141
|
+
this._with = this._with.concat(list);
|
|
142
|
+
return this;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Add ORDER BY expressions.
|
|
146
|
+
* @param expr Expressions to add.
|
|
147
|
+
*/
|
|
148
|
+
orderby(...expr) {
|
|
149
|
+
this._orderby = this._orderby.concat(nodeList(expr));
|
|
150
|
+
return this;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Set the query result LIMIT as a percentage value.
|
|
154
|
+
* @param value The limit percentage value.
|
|
155
|
+
*/
|
|
156
|
+
limitPercent(value) {
|
|
157
|
+
this._limitPerc = true;
|
|
158
|
+
this._limit = asNode(value);
|
|
159
|
+
return this;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Set the query result LIMIT.
|
|
163
|
+
* @param value The limit value.
|
|
164
|
+
*/
|
|
165
|
+
limit(value) {
|
|
166
|
+
this._limitPerc = false;
|
|
167
|
+
this._limit = asNode(value);
|
|
168
|
+
return this;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Set the query result OFFSET.
|
|
172
|
+
* @param value The offset value.
|
|
173
|
+
*/
|
|
174
|
+
offset(value) {
|
|
175
|
+
this._offset = asNode(value);
|
|
176
|
+
return this;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
export class SelectQuery extends Query {
|
|
180
|
+
_select = [];
|
|
181
|
+
_from = [];
|
|
182
|
+
_where = [];
|
|
183
|
+
_sample;
|
|
184
|
+
_groupby = [];
|
|
185
|
+
_having = [];
|
|
186
|
+
_window = [];
|
|
187
|
+
_qualify = [];
|
|
188
|
+
_distinct = false;
|
|
189
|
+
/**
|
|
190
|
+
* Instantiate a new select query.
|
|
191
|
+
*/
|
|
192
|
+
constructor() {
|
|
193
|
+
super(SELECT_QUERY);
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Return a list of subqueries.
|
|
197
|
+
*/
|
|
198
|
+
get subqueries() {
|
|
199
|
+
// build map of ctes within base query WITH clause
|
|
200
|
+
const q = this.cteFor || this;
|
|
201
|
+
const w = q instanceof SelectQuery ? q._with : [];
|
|
202
|
+
const cte = w.reduce((obj, c) => (obj[c.name] = c.query, obj), {});
|
|
203
|
+
// extract subqueries in FROM clause
|
|
204
|
+
// unused CTEs will be ignored
|
|
205
|
+
const queries = [];
|
|
206
|
+
this._from.forEach(({ expr }) => {
|
|
207
|
+
if (isQuery(expr)) {
|
|
208
|
+
queries.push(expr);
|
|
209
|
+
}
|
|
210
|
+
else if (isTableRef(expr)) {
|
|
211
|
+
const subq = cte[expr.name];
|
|
212
|
+
if (subq)
|
|
213
|
+
queries.push(subq);
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
return queries;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Clone this query.
|
|
220
|
+
*/
|
|
221
|
+
clone() {
|
|
222
|
+
return Object.assign(new SelectQuery(), this);
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Add SELECT expressions.
|
|
226
|
+
* @param expr Expressions to add.
|
|
227
|
+
*/
|
|
228
|
+
select(...expr) {
|
|
229
|
+
const keys = new Set;
|
|
230
|
+
const list = [];
|
|
231
|
+
const add = (v, as) => {
|
|
232
|
+
const key = unquote(as);
|
|
233
|
+
keys.add(key);
|
|
234
|
+
if (v)
|
|
235
|
+
list.push(new SelectClauseNode(asNode(v), key));
|
|
236
|
+
};
|
|
237
|
+
expr.flat().forEach(e => {
|
|
238
|
+
if (e == null)
|
|
239
|
+
return;
|
|
240
|
+
else if (isString(e))
|
|
241
|
+
add(e, e);
|
|
242
|
+
else if (isColumnRef(e))
|
|
243
|
+
add(e, e.column);
|
|
244
|
+
else if (isArray(e))
|
|
245
|
+
add(e[1], e[0]);
|
|
246
|
+
else if (isNode(e))
|
|
247
|
+
add(e, `${e}`);
|
|
248
|
+
else
|
|
249
|
+
for (const alias in e)
|
|
250
|
+
add(e[alias], alias);
|
|
251
|
+
});
|
|
252
|
+
this._select = this._select.filter(x => !keys.has(x.alias)).concat(list);
|
|
253
|
+
return this;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Set SELECT expressions, replacing any prior expressions.
|
|
257
|
+
* @param expr Expressions to add.
|
|
258
|
+
*/
|
|
259
|
+
setSelect(...expr) {
|
|
260
|
+
this._select = [];
|
|
261
|
+
return this.select(...expr);
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Indicate if this query should retrieve distinct values only.
|
|
265
|
+
* @param value The distinct flag
|
|
266
|
+
*/
|
|
267
|
+
distinct(value = true) {
|
|
268
|
+
this._distinct = !!value;
|
|
269
|
+
return this;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Add table FROM expressions.
|
|
273
|
+
* @param expr Expressions to add.
|
|
274
|
+
*/
|
|
275
|
+
from(...expr) {
|
|
276
|
+
const list = [];
|
|
277
|
+
const add = (v, as) => {
|
|
278
|
+
list.push(new FromClauseNode(maybeTableRef(v), unquote(as)));
|
|
279
|
+
};
|
|
280
|
+
expr.flat().forEach(e => {
|
|
281
|
+
if (e == null)
|
|
282
|
+
return;
|
|
283
|
+
else if (e instanceof FromClauseNode)
|
|
284
|
+
list.push(e);
|
|
285
|
+
else if (isString(e))
|
|
286
|
+
add(e, e);
|
|
287
|
+
else if (isTableRef(e))
|
|
288
|
+
add(e, e.name);
|
|
289
|
+
else if (isNode(e))
|
|
290
|
+
add(e);
|
|
291
|
+
else if (isArray(e))
|
|
292
|
+
add(e[1], e[0]);
|
|
293
|
+
else
|
|
294
|
+
for (const alias in e)
|
|
295
|
+
add(e[alias], alias);
|
|
296
|
+
});
|
|
297
|
+
this._from = this._from.concat(list);
|
|
298
|
+
return this;
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Set FROM expressions, replacing any prior expressions.
|
|
302
|
+
* @param expr Expressions to add.
|
|
303
|
+
*/
|
|
304
|
+
setFrom(...expr) {
|
|
305
|
+
this._from = [];
|
|
306
|
+
return this.from(...expr);
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Set SAMPLE settings.
|
|
310
|
+
* @param value Either a sample clause node or the sample size as either
|
|
311
|
+
* a row count or percentage.
|
|
312
|
+
* @param method The sampling method to use.
|
|
313
|
+
* @param seed The random seed.
|
|
314
|
+
*/
|
|
315
|
+
sample(value, method, seed) {
|
|
316
|
+
let clause;
|
|
317
|
+
if (typeof value === 'number') {
|
|
318
|
+
const perc = value > 0 && value < 1;
|
|
319
|
+
const size = perc ? value * 100 : Math.floor(value);
|
|
320
|
+
clause = new SampleClauseNode(size, perc, method, seed);
|
|
321
|
+
}
|
|
322
|
+
else {
|
|
323
|
+
clause = value;
|
|
324
|
+
}
|
|
325
|
+
this._sample = clause;
|
|
326
|
+
return this;
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Add WHERE expressions.
|
|
330
|
+
* @param expr Expressions to add.
|
|
331
|
+
*/
|
|
332
|
+
where(...expr) {
|
|
333
|
+
this._where = this._where.concat(exprList(expr, asVerbatim));
|
|
334
|
+
return this;
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Set WHERE expressions, replacing any prior expressions.
|
|
338
|
+
* @param expr Expressions to add.
|
|
339
|
+
*/
|
|
340
|
+
setWhere(...expr) {
|
|
341
|
+
this._where = [];
|
|
342
|
+
return this.where(...expr);
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Add GROUP BY expressions.
|
|
346
|
+
* @param expr Expressions to add.
|
|
347
|
+
*/
|
|
348
|
+
groupby(...expr) {
|
|
349
|
+
this._groupby = this._groupby.concat(nodeList(expr));
|
|
350
|
+
return this;
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Set GROUP BY expressions, replacing any prior expressions.
|
|
354
|
+
* @param expr Expressions to add.
|
|
355
|
+
*/
|
|
356
|
+
setGroupby(...expr) {
|
|
357
|
+
this._groupby = [];
|
|
358
|
+
return this.groupby(...expr);
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Add HAVING expressions.
|
|
362
|
+
* @param expr Expressions to add.
|
|
363
|
+
*/
|
|
364
|
+
having(...expr) {
|
|
365
|
+
this._having = this._having.concat(exprList(expr, asVerbatim));
|
|
366
|
+
return this;
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* Add WINDOW definitions.
|
|
370
|
+
* @param expr Window definitions to add.
|
|
371
|
+
*/
|
|
372
|
+
window(...expr) {
|
|
373
|
+
const list = [];
|
|
374
|
+
expr.flat().forEach(e => {
|
|
375
|
+
if (e != null)
|
|
376
|
+
for (const name in e) {
|
|
377
|
+
list.push(new WindowClauseNode(unquote(name), e[name]));
|
|
378
|
+
}
|
|
379
|
+
});
|
|
380
|
+
this._window = this._window.concat(list);
|
|
381
|
+
return this;
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Add QUALIFY expressions.
|
|
385
|
+
* @param expr Expressions to add.
|
|
386
|
+
*/
|
|
387
|
+
qualify(...expr) {
|
|
388
|
+
this._qualify = this._qualify.concat(exprList(expr, asVerbatim));
|
|
389
|
+
return this;
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Generate a SQL query string.
|
|
393
|
+
*/
|
|
394
|
+
toString() {
|
|
395
|
+
const { _with, _select, _distinct, _from, _sample, _where, _groupby, _having, _window, _qualify, _orderby, _limitPerc, _limit, _offset } = this;
|
|
396
|
+
const sql = [];
|
|
397
|
+
// WITH
|
|
398
|
+
if (_with.length)
|
|
399
|
+
sql.push(`WITH ${_with.join(', ')}`);
|
|
400
|
+
// SELECT
|
|
401
|
+
sql.push(`SELECT${_distinct ? ' DISTINCT' : ''} ${_select.join(', ')}`);
|
|
402
|
+
// FROM
|
|
403
|
+
if (_from.length)
|
|
404
|
+
sql.push(`FROM ${_from.join(', ')}`);
|
|
405
|
+
// WHERE
|
|
406
|
+
if (_where.length) {
|
|
407
|
+
const clauses = _where.map(String).filter(x => x).join(' AND ');
|
|
408
|
+
if (clauses)
|
|
409
|
+
sql.push(`WHERE ${clauses}`);
|
|
410
|
+
}
|
|
411
|
+
// SAMPLE
|
|
412
|
+
if (_sample)
|
|
413
|
+
sql.push(`USING SAMPLE ${_sample}`);
|
|
414
|
+
// GROUP BY
|
|
415
|
+
if (_groupby.length) {
|
|
416
|
+
sql.push(`GROUP BY ${_groupby.join(', ')}`);
|
|
417
|
+
}
|
|
418
|
+
// HAVING
|
|
419
|
+
if (_having.length) {
|
|
420
|
+
const clauses = _having.map(String).filter(x => x).join(' AND ');
|
|
421
|
+
if (clauses)
|
|
422
|
+
sql.push(`HAVING ${clauses}`);
|
|
423
|
+
}
|
|
424
|
+
// WINDOW
|
|
425
|
+
if (_window.length)
|
|
426
|
+
sql.push(`WINDOW ${_window.join(', ')}`);
|
|
427
|
+
// QUALIFY
|
|
428
|
+
if (_qualify.length) {
|
|
429
|
+
const clauses = _qualify.map(String).filter(x => x).join(' AND ');
|
|
430
|
+
if (clauses)
|
|
431
|
+
sql.push(`QUALIFY ${clauses}`);
|
|
432
|
+
}
|
|
433
|
+
// ORDER BY
|
|
434
|
+
if (_orderby.length)
|
|
435
|
+
sql.push(`ORDER BY ${_orderby.join(', ')}`);
|
|
436
|
+
// LIMIT
|
|
437
|
+
if (_limit)
|
|
438
|
+
sql.push(`LIMIT ${_limit}${_limitPerc ? '%' : ''}`);
|
|
439
|
+
// OFFSET
|
|
440
|
+
if (_offset)
|
|
441
|
+
sql.push(`OFFSET ${_offset}`);
|
|
442
|
+
return sql.join(' ');
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
export class DescribeQuery extends SQLNode {
|
|
446
|
+
query;
|
|
447
|
+
/**
|
|
448
|
+
* Instantiate a describe query.
|
|
449
|
+
* @param query The query to describe.
|
|
450
|
+
*/
|
|
451
|
+
constructor(query) {
|
|
452
|
+
super(DESCRIBE_QUERY);
|
|
453
|
+
this.query = query;
|
|
454
|
+
}
|
|
455
|
+
/**
|
|
456
|
+
* Clone this describe query.
|
|
457
|
+
*/
|
|
458
|
+
clone() {
|
|
459
|
+
// @ts-expect-error creates describe query
|
|
460
|
+
return new DescribeQuery(this.query.clone());
|
|
461
|
+
}
|
|
462
|
+
/**
|
|
463
|
+
* Generate a SQL query string.
|
|
464
|
+
*/
|
|
465
|
+
toString() {
|
|
466
|
+
return `DESCRIBE ${this.query}`;
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
export class SetOperation extends Query {
|
|
470
|
+
/** The set operation to perform. */
|
|
471
|
+
op;
|
|
472
|
+
/** The input queries to the set operation. */
|
|
473
|
+
queries;
|
|
474
|
+
/**
|
|
475
|
+
* Instantiate a new set operation instance.
|
|
476
|
+
* @param op The set operation.
|
|
477
|
+
* @param queries The subqueries.
|
|
478
|
+
*/
|
|
479
|
+
constructor(op, queries) {
|
|
480
|
+
super(SET_OPERATION);
|
|
481
|
+
this.op = op;
|
|
482
|
+
this.queries = queries;
|
|
483
|
+
}
|
|
484
|
+
/**
|
|
485
|
+
* Add a pointer to the query for which this query is a CTE.
|
|
486
|
+
* @param query The query for which this query is a CTE.
|
|
487
|
+
*/
|
|
488
|
+
setCteFor(query) {
|
|
489
|
+
super.setCteFor(query);
|
|
490
|
+
const { queries, cteFor } = this;
|
|
491
|
+
if (cteFor)
|
|
492
|
+
queries.forEach(q => q.setCteFor(cteFor));
|
|
493
|
+
}
|
|
494
|
+
/**
|
|
495
|
+
* Return a list of subqueries.
|
|
496
|
+
*/
|
|
497
|
+
get subqueries() {
|
|
498
|
+
return this.queries;
|
|
499
|
+
}
|
|
500
|
+
/**
|
|
501
|
+
* Clone this set operation.
|
|
502
|
+
*/
|
|
503
|
+
clone() {
|
|
504
|
+
const { op, queries, ...rest } = this;
|
|
505
|
+
// @ts-expect-error creates set operation
|
|
506
|
+
return Object.assign(new SetOperation(op, queries), rest);
|
|
507
|
+
}
|
|
508
|
+
/**
|
|
509
|
+
* Generate a SQL query string.
|
|
510
|
+
*/
|
|
511
|
+
toString() {
|
|
512
|
+
const { op, queries, _with, _orderby, _limitPerc, _limit, _offset } = this;
|
|
513
|
+
const sql = [];
|
|
514
|
+
// WITH
|
|
515
|
+
if (_with.length)
|
|
516
|
+
sql.push(`WITH ${_with.join(', ')}`);
|
|
517
|
+
// SUBQUERIES
|
|
518
|
+
sql.push(queries.join(` ${op} `));
|
|
519
|
+
// ORDER BY
|
|
520
|
+
if (_orderby.length)
|
|
521
|
+
sql.push(`ORDER BY ${_orderby.join(', ')}`);
|
|
522
|
+
// LIMIT
|
|
523
|
+
if (_limit)
|
|
524
|
+
sql.push(`LIMIT ${_limit}${_limitPerc ? '%' : ''}`);
|
|
525
|
+
// OFFSET
|
|
526
|
+
if (_offset)
|
|
527
|
+
sql.push(`OFFSET ${_offset}`);
|
|
528
|
+
return sql.join(' ');
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
class WithClause {
|
|
532
|
+
/** The common table expressions (CTE). */
|
|
533
|
+
_with;
|
|
534
|
+
/**
|
|
535
|
+
* Instantiate a new WITH clause instance.
|
|
536
|
+
* @param expr The WITH CTE queries.
|
|
537
|
+
*/
|
|
538
|
+
constructor(...expr) {
|
|
539
|
+
this._with = expr;
|
|
540
|
+
}
|
|
541
|
+
/**
|
|
542
|
+
* Create a new select query with the given SELECT expressions.
|
|
543
|
+
* @param expr The SELECT expressions.
|
|
544
|
+
*/
|
|
545
|
+
select(...expr) {
|
|
546
|
+
return Query.select(...expr).with(...this._with);
|
|
547
|
+
}
|
|
548
|
+
/**
|
|
549
|
+
* Create a new select query with the given FROM expressions.
|
|
550
|
+
* @param expr The FROM expressions.
|
|
551
|
+
*/
|
|
552
|
+
from(...expr) {
|
|
553
|
+
return Query.from(...expr).with(...this._with);
|
|
554
|
+
}
|
|
555
|
+
/**
|
|
556
|
+
* Create a new UNION set operation over the given queries.
|
|
557
|
+
* @param queries The queries.
|
|
558
|
+
*/
|
|
559
|
+
union(...queries) {
|
|
560
|
+
return Query.union(...queries).with(...this._with);
|
|
561
|
+
}
|
|
562
|
+
/**
|
|
563
|
+
* Create a new UNION ALL set operation over the given queries.
|
|
564
|
+
* @param queries The queries.
|
|
565
|
+
*/
|
|
566
|
+
unionAll(...queries) {
|
|
567
|
+
return Query.unionAll(...queries).with(...this._with);
|
|
568
|
+
}
|
|
569
|
+
/**
|
|
570
|
+
* Create a new INTERSECT set operation over the given queries.
|
|
571
|
+
* @param queries The queries.
|
|
572
|
+
*/
|
|
573
|
+
intersect(...queries) {
|
|
574
|
+
return Query.intersect(...queries).with(...this._with);
|
|
575
|
+
}
|
|
576
|
+
/**
|
|
577
|
+
* Create a new EXCEPT set operation over the given queries.
|
|
578
|
+
* @param queries The queries.
|
|
579
|
+
*/
|
|
580
|
+
except(...queries) {
|
|
581
|
+
return Query.except(...queries).with(...this._with);
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
//# sourceMappingURL=query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/ast/query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { SQLNode } from './node.js';
|
|
2
|
+
export type SampleMethod = 'reservoir' | 'bernoulli' | 'system';
|
|
3
|
+
export declare class SampleClauseNode extends SQLNode {
|
|
4
|
+
/** The sample size as either a row count or percentage. */
|
|
5
|
+
readonly size: number;
|
|
6
|
+
/** Flag if the sampling unit is rows (`false`) or percentage (`true`). */
|
|
7
|
+
readonly perc: boolean;
|
|
8
|
+
/** The sampling method. */
|
|
9
|
+
readonly method?: SampleMethod;
|
|
10
|
+
/** The random seed. */
|
|
11
|
+
readonly seed?: number;
|
|
12
|
+
/**
|
|
13
|
+
* Instantiate a sample clause node.
|
|
14
|
+
* @param size The sample size as either a row count or percentage.
|
|
15
|
+
* @param perc Flag indicating if the sampling unit is
|
|
16
|
+
* rows (`false`) or a percentage (`true`).
|
|
17
|
+
* @param method The sampling method. If unspecified,
|
|
18
|
+
* a default method is applied based on the sampling unit.
|
|
19
|
+
* @param seed The random seed.
|
|
20
|
+
*/
|
|
21
|
+
constructor(size: number, perc?: boolean, method?: SampleMethod, seed?: number);
|
|
22
|
+
/**
|
|
23
|
+
* Generate a SQL query string for this node.
|
|
24
|
+
*/
|
|
25
|
+
toString(): string;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=sample.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sample.d.ts","sourceRoot":"","sources":["../../../src/ast/sample.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEhE,qBAAa,gBAAiB,SAAQ,OAAO;IAC3C,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,2BAA2B;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,uBAAuB;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;;;;;OAQG;gBAED,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,OAAe,EACrB,MAAM,CAAC,EAAE,YAAY,EACrB,IAAI,CAAC,EAAE,MAAM;IASf;;OAEG;IACH,QAAQ;CAMT"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { SAMPLE_CLAUSE } from '../constants.js';
|
|
2
|
+
import { SQLNode } from './node.js';
|
|
3
|
+
export class SampleClauseNode extends SQLNode {
|
|
4
|
+
/** The sample size as either a row count or percentage. */
|
|
5
|
+
size;
|
|
6
|
+
/** Flag if the sampling unit is rows (`false`) or percentage (`true`). */
|
|
7
|
+
perc;
|
|
8
|
+
/** The sampling method. */
|
|
9
|
+
method;
|
|
10
|
+
/** The random seed. */
|
|
11
|
+
seed;
|
|
12
|
+
/**
|
|
13
|
+
* Instantiate a sample clause node.
|
|
14
|
+
* @param size The sample size as either a row count or percentage.
|
|
15
|
+
* @param perc Flag indicating if the sampling unit is
|
|
16
|
+
* rows (`false`) or a percentage (`true`).
|
|
17
|
+
* @param method The sampling method. If unspecified,
|
|
18
|
+
* a default method is applied based on the sampling unit.
|
|
19
|
+
* @param seed The random seed.
|
|
20
|
+
*/
|
|
21
|
+
constructor(size, perc = false, method, seed) {
|
|
22
|
+
super(SAMPLE_CLAUSE);
|
|
23
|
+
this.size = size;
|
|
24
|
+
this.perc = perc;
|
|
25
|
+
this.method = method;
|
|
26
|
+
this.seed = seed;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Generate a SQL query string for this node.
|
|
30
|
+
*/
|
|
31
|
+
toString() {
|
|
32
|
+
const { size, perc, method, seed } = this;
|
|
33
|
+
const m = method ? `${method} ` : '';
|
|
34
|
+
const s = seed != null ? ` REPEATABLE (${seed})` : '';
|
|
35
|
+
return `${m}(${size}${perc ? '%' : ' ROWS'})${s}`;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=sample.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sample.js","sourceRoot":"","sources":["../../../src/ast/sample.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,MAAM,OAAO,gBAAiB,SAAQ,OAAO;IAC3C,2DAA2D;IAClD,IAAI,CAAS;IACtB,0EAA0E;IACjE,IAAI,CAAU;IACvB,2BAA2B;IAClB,MAAM,CAAgB;IAC/B,uBAAuB;IACd,IAAI,CAAU;IAEvB;;;;;;;;OAQG;IACH,YACE,IAAY,EACZ,OAAgB,KAAK,EACrB,MAAqB,EACrB,IAAa;QAEb,KAAK,CAAC,aAAa,CAAC,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QAC1C,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,gBAAgB,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,OAAO,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC;IACpD,CAAC;CACF"}
|