@uwdata/mosaic-sql 0.21.1 → 0.23.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/dist/src/ast/query.d.ts +50 -0
- package/dist/src/ast/query.d.ts.map +1 -1
- package/dist/src/ast/query.js +59 -2
- package/dist/src/ast/query.js.map +1 -1
- package/dist/src/constants.d.ts +2 -0
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +2 -0
- package/dist/src/constants.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/load/create.d.ts +4 -9
- package/dist/src/load/create.d.ts.map +1 -1
- package/dist/src/load/create.js +5 -11
- package/dist/src/load/create.js.map +1 -1
- package/dist/src/load/load.d.ts +7 -7
- package/dist/src/load/load.d.ts.map +1 -1
- package/dist/src/load/load.js.map +1 -1
- package/dist/src/visit/codegen/duckdb.d.ts +3 -1
- package/dist/src/visit/codegen/duckdb.d.ts.map +1 -1
- package/dist/src/visit/codegen/duckdb.js +15 -0
- package/dist/src/visit/codegen/duckdb.js.map +1 -1
- package/dist/src/visit/codegen/sql.d.ts +4 -2
- package/dist/src/visit/codegen/sql.d.ts.map +1 -1
- package/dist/src/visit/codegen/sql.js +3 -1
- package/dist/src/visit/codegen/sql.js.map +1 -1
- package/dist/src/visit/recurse.d.ts.map +1 -1
- package/dist/src/visit/recurse.js +3 -1
- package/dist/src/visit/recurse.js.map +1 -1
- package/package.json +3 -3
- package/src/ast/query.ts +83 -3
- package/src/constants.ts +2 -0
- package/src/index.ts +1 -1
- package/src/load/create.ts +6 -22
- package/src/load/load.ts +2 -1
- package/src/visit/codegen/duckdb.ts +19 -0
- package/src/visit/codegen/sql.ts +8 -0
- package/src/visit/recurse.ts +4 -0
- package/dist/src/visit/duckdb-visitor.d.ts +0 -50
- package/dist/src/visit/duckdb-visitor.d.ts.map +0 -1
- package/dist/src/visit/duckdb-visitor.js +0 -350
- package/dist/src/visit/duckdb-visitor.js.map +0 -1
- package/dist/src/visit/to-string-visitor.d.ts +0 -60
- package/dist/src/visit/to-string-visitor.d.ts.map +0 -1
- package/dist/src/visit/to-string-visitor.js +0 -80
- package/dist/src/visit/to-string-visitor.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { SQLNode, ExprNode, AggregateNode, BetweenOpNode, NotBetweenOpNode, BinaryOpNode, CaseNode, WhenNode, CastNode, CollateNode, ColumnParamNode, ColumnRefNode, FragmentNode, FromClauseNode, FunctionNode, InOpNode, IntervalNode, JoinNode, ListNode, LiteralNode, LogicalOpNode, OrderByNode, ParamNode, DescribeQuery, SelectQuery, SetOperation, SampleClauseNode, SelectClauseNode, ScalarSubqueryNode, TableRefNode, UnaryOpNode, UnaryPostfixOpNode, UnnestNode, VerbatimNode, WindowNode, WindowClauseNode, WindowDefNode, WindowFunctionNode, WindowFrameNode, WindowFrameExprNode, WithClauseNode } from '../../index.js';
|
|
1
|
+
import type { SQLNode, ExprNode, AggregateNode, BetweenOpNode, NotBetweenOpNode, BinaryOpNode, CaseNode, WhenNode, CastNode, CollateNode, ColumnParamNode, ColumnRefNode, CreateQuery, CreateSchemaQuery, FragmentNode, FromClauseNode, FunctionNode, InOpNode, IntervalNode, JoinNode, ListNode, LiteralNode, LogicalOpNode, OrderByNode, ParamNode, DescribeQuery, SelectQuery, SetOperation, SampleClauseNode, SelectClauseNode, ScalarSubqueryNode, TableRefNode, UnaryOpNode, UnaryPostfixOpNode, UnnestNode, VerbatimNode, WindowNode, WindowClauseNode, WindowDefNode, WindowFunctionNode, WindowFrameNode, WindowFrameExprNode, WithClauseNode } from '../../index.js';
|
|
2
2
|
/**
|
|
3
3
|
* Abstract base class for SQL code generation visitors.
|
|
4
4
|
*/
|
|
@@ -9,7 +9,7 @@ export declare abstract class SQLCodeGenerator {
|
|
|
9
9
|
* @returns The SQL string representation.
|
|
10
10
|
*/
|
|
11
11
|
toString(node: SQLNode): string;
|
|
12
|
-
protected getVisitMethod(nodeType: string): ((node: AggregateNode) => string) | ((node: BetweenOpNode) => string) | ((node: BinaryOpNode) => string) | ((node: CaseNode) => string) | ((node: CastNode) => string) | ((node: CollateNode) => string) | ((node: ColumnParamNode) => string) | ((node: DescribeQuery) => string);
|
|
12
|
+
protected getVisitMethod(nodeType: string): ((node: AggregateNode) => string) | ((node: BetweenOpNode) => string) | ((node: BinaryOpNode) => string) | ((node: CaseNode) => string) | ((node: CastNode) => string) | ((node: CollateNode) => string) | ((node: ColumnParamNode) => string) | ((node: CreateQuery) => string) | ((node: CreateSchemaQuery) => string) | ((node: DescribeQuery) => string);
|
|
13
13
|
/**
|
|
14
14
|
* Helper method to convert child nodes to strings.
|
|
15
15
|
* @param nodes Array of child nodes.
|
|
@@ -24,6 +24,8 @@ export declare abstract class SQLCodeGenerator {
|
|
|
24
24
|
abstract visitCollate(node: CollateNode): string;
|
|
25
25
|
abstract visitColumnParam(node: ColumnParamNode): string;
|
|
26
26
|
abstract visitColumnRef(node: ColumnRefNode): string;
|
|
27
|
+
abstract visitCreateQuery(node: CreateQuery): string;
|
|
28
|
+
abstract visitCreateSchemaQuery(node: CreateSchemaQuery): string;
|
|
27
29
|
abstract visitDescribeQuery(node: DescribeQuery): string;
|
|
28
30
|
abstract visitExpression(node: ExprNode): string;
|
|
29
31
|
abstract visitFragment(node: FragmentNode): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../../../../src/visit/codegen/sql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,QAAQ,EACR,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,eAAe,EACf,aAAa,EACb,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,aAAa,EACb,WAAW,EACX,SAAS,EACT,aAAa,EACb,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,cAAc,EACf,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../../../../src/visit/codegen/sql.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AGGREGATE, BETWEEN_OPERATOR, BINARY_OPERATOR, CASE, CAST, COLLATE, COLUMN_PARAM, COLUMN_REF, DESCRIBE_QUERY, EXPRESSION, FRAGMENT, FROM_CLAUSE, FUNCTION, IN_OPERATOR, INTERVAL, JOIN_CLAUSE, LIST, LITERAL, LOGICAL_OPERATOR, NOT_BETWEEN_OPERATOR, ORDER_BY, PARAM, SAMPLE_CLAUSE, SCALAR_SUBQUERY, SELECT_CLAUSE, SELECT_QUERY, SET_OPERATION, TABLE_REF, UNARY_OPERATOR, UNARY_POSTFIX_OPERATOR, UNNEST, VERBATIM, WHEN, WINDOW, WINDOW_CLAUSE, WINDOW_DEF, WINDOW_EXTENT_EXPR, WINDOW_FRAME, WINDOW_FUNCTION, WITH_CLAUSE } from '../../constants.js';
|
|
1
|
+
import { AGGREGATE, BETWEEN_OPERATOR, BINARY_OPERATOR, CASE, CAST, COLLATE, COLUMN_PARAM, COLUMN_REF, CREATE_QUERY, CREATE_SCHEMA_QUERY, DESCRIBE_QUERY, EXPRESSION, FRAGMENT, FROM_CLAUSE, FUNCTION, IN_OPERATOR, INTERVAL, JOIN_CLAUSE, LIST, LITERAL, LOGICAL_OPERATOR, NOT_BETWEEN_OPERATOR, ORDER_BY, PARAM, SAMPLE_CLAUSE, SCALAR_SUBQUERY, SELECT_CLAUSE, SELECT_QUERY, SET_OPERATION, TABLE_REF, UNARY_OPERATOR, UNARY_POSTFIX_OPERATOR, UNNEST, VERBATIM, WHEN, WINDOW, WINDOW_CLAUSE, WINDOW_DEF, WINDOW_EXTENT_EXPR, WINDOW_FRAME, WINDOW_FUNCTION, WITH_CLAUSE } from '../../constants.js';
|
|
2
2
|
/**
|
|
3
3
|
* Abstract base class for SQL code generation visitors.
|
|
4
4
|
*/
|
|
@@ -37,6 +37,8 @@ export class SQLCodeGenerator {
|
|
|
37
37
|
case COLLATE: return this.visitCollate;
|
|
38
38
|
case COLUMN_PARAM: return this.visitColumnParam;
|
|
39
39
|
case COLUMN_REF: return this.visitColumnRef;
|
|
40
|
+
case CREATE_QUERY: return this.visitCreateQuery;
|
|
41
|
+
case CREATE_SCHEMA_QUERY: return this.visitCreateSchemaQuery;
|
|
40
42
|
case DESCRIBE_QUERY: return this.visitDescribeQuery;
|
|
41
43
|
case EXPRESSION: return this.visitExpression;
|
|
42
44
|
case FRAGMENT: return this.visitFragment;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql.js","sourceRoot":"","sources":["../../../../src/visit/codegen/sql.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sql.js","sourceRoot":"","sources":["../../../../src/visit/codegen/sql.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recurse.d.ts","sourceRoot":"","sources":["../../../src/visit/recurse.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"recurse.d.ts","sourceRoot":"","sources":["../../../src/visit/recurse.ts"],"names":[],"mappings":"AAuCA,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAqC5C,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AGGREGATE, BETWEEN_OPERATOR, BINARY_OPERATOR, CASE, CAST, COLLATE, COLUMN_PARAM, COLUMN_REF, DESCRIBE_QUERY, EXPRESSION, FRAGMENT, FROM_CLAUSE, FUNCTION, IN_OPERATOR, JOIN_CLAUSE, LOGICAL_OPERATOR, NOT_BETWEEN_OPERATOR, ORDER_BY, PARAM, SCALAR_SUBQUERY, SELECT_CLAUSE, SELECT_QUERY, SET_OPERATION, UNARY_OPERATOR, UNARY_POSTFIX_OPERATOR, UNNEST, WHEN, WINDOW, WINDOW_CLAUSE, WINDOW_DEF, WINDOW_EXTENT_EXPR, WINDOW_FRAME, WINDOW_FUNCTION, WITH_CLAUSE } from '../constants.js';
|
|
1
|
+
import { AGGREGATE, BETWEEN_OPERATOR, BINARY_OPERATOR, CASE, CAST, COLLATE, COLUMN_PARAM, COLUMN_REF, CREATE_QUERY, CREATE_SCHEMA_QUERY, DESCRIBE_QUERY, EXPRESSION, FRAGMENT, FROM_CLAUSE, FUNCTION, IN_OPERATOR, JOIN_CLAUSE, LOGICAL_OPERATOR, NOT_BETWEEN_OPERATOR, ORDER_BY, PARAM, SCALAR_SUBQUERY, SELECT_CLAUSE, SELECT_QUERY, SET_OPERATION, UNARY_OPERATOR, UNARY_POSTFIX_OPERATOR, UNNEST, WHEN, WINDOW, WINDOW_CLAUSE, WINDOW_DEF, WINDOW_EXTENT_EXPR, WINDOW_FRAME, WINDOW_FUNCTION, WITH_CLAUSE } from '../constants.js';
|
|
2
2
|
export const recurse = {
|
|
3
3
|
[AGGREGATE]: ['args', 'order', 'filter'],
|
|
4
4
|
[BETWEEN_OPERATOR]: ['expr', 'extent'],
|
|
@@ -8,6 +8,8 @@ export const recurse = {
|
|
|
8
8
|
[COLLATE]: ['expr'],
|
|
9
9
|
[COLUMN_PARAM]: ['param', 'table'],
|
|
10
10
|
[COLUMN_REF]: ['table'],
|
|
11
|
+
[CREATE_QUERY]: ['name', 'query'],
|
|
12
|
+
[CREATE_SCHEMA_QUERY]: ['name'],
|
|
11
13
|
[DESCRIBE_QUERY]: ['query'],
|
|
12
14
|
[EXPRESSION]: ['node'],
|
|
13
15
|
[FRAGMENT]: ['spans'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recurse.js","sourceRoot":"","sources":["../../../src/visit/recurse.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"recurse.js","sourceRoot":"","sources":["../../../src/visit/recurse.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uwdata/mosaic-sql",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.23.0",
|
|
4
4
|
"description": "SQL query construction and analysis.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"sql",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"clean": "rimraf dist && mkdir dist",
|
|
28
28
|
"lint": "eslint src test",
|
|
29
29
|
"test": "vitest run",
|
|
30
|
-
"prepublishOnly": "
|
|
30
|
+
"prepublishOnly": "pnpm run test && pnpm run lint && tsc --build"
|
|
31
31
|
},
|
|
32
|
-
"gitHead": "
|
|
32
|
+
"gitHead": "8d153a15b9b1c69130d5384ecd59aa634e3f90b3"
|
|
33
33
|
}
|
package/src/ast/query.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { FilterExpr, FromExpr, GroupByExpr, MaybeArray, OrderByExpr, SelectExpr, WithExpr } from '../types.js';
|
|
2
2
|
import type { SampleMethod } from './sample.js';
|
|
3
|
-
import { DESCRIBE_QUERY, SELECT_QUERY, SET_OPERATION } from '../constants.js';
|
|
4
|
-
import { asNode, asVerbatim, maybeTableRef } from '../util/ast.js';
|
|
3
|
+
import { CREATE_QUERY, CREATE_SCHEMA_QUERY, DESCRIBE_QUERY, SELECT_QUERY, SET_OPERATION } from '../constants.js';
|
|
4
|
+
import { asNode, asTableRef, asVerbatim, maybeTableRef } from '../util/ast.js';
|
|
5
5
|
import { exprList, nodeList } from '../util/function.js';
|
|
6
6
|
import { unquote } from '../util/string.js';
|
|
7
7
|
import { isArray, isString } from '../util/type-check.js';
|
|
@@ -10,7 +10,8 @@ import { FromClauseNode, FromNode } from './from.js';
|
|
|
10
10
|
import { ExprNode, SQLNode, isNode } from './node.js';
|
|
11
11
|
import { SampleClauseNode } from './sample.js';
|
|
12
12
|
import { SelectClauseNode } from './select.js';
|
|
13
|
-
import { isTableRef } from './table-ref.js';
|
|
13
|
+
import { isTableRef, TableRefNode } from './table-ref.js';
|
|
14
|
+
import { VerbatimNode } from './verbatim.js';
|
|
14
15
|
import { WindowClauseNode, type WindowDefNode } from './window.js';
|
|
15
16
|
import { WithClauseNode } from './with.js';
|
|
16
17
|
|
|
@@ -38,6 +39,22 @@ export function isDescribeQuery(value: unknown): value is DescribeQuery {
|
|
|
38
39
|
return value instanceof DescribeQuery;
|
|
39
40
|
}
|
|
40
41
|
|
|
42
|
+
/**
|
|
43
|
+
* Check if a value is a create query.
|
|
44
|
+
* @param value The value to check.
|
|
45
|
+
*/
|
|
46
|
+
export function isCreateQuery(value: unknown): value is CreateQuery {
|
|
47
|
+
return value instanceof CreateQuery;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Check if a value is a create schema query.
|
|
52
|
+
* @param value The value to check.
|
|
53
|
+
*/
|
|
54
|
+
export function isCreateSchemaQuery(value: unknown): value is CreateSchemaQuery {
|
|
55
|
+
return value instanceof CreateSchemaQuery;
|
|
56
|
+
}
|
|
57
|
+
|
|
41
58
|
export class Query extends ExprNode {
|
|
42
59
|
/**
|
|
43
60
|
* Create a new WITH clause with the given CTE queries.
|
|
@@ -477,6 +494,69 @@ export class DescribeQuery extends SQLNode {
|
|
|
477
494
|
}
|
|
478
495
|
}
|
|
479
496
|
|
|
497
|
+
export interface CreateTableOptions {
|
|
498
|
+
replace?: boolean;
|
|
499
|
+
temp?: boolean;
|
|
500
|
+
view?: boolean;
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
export class CreateQuery extends SQLNode {
|
|
504
|
+
/** The table or view name. */
|
|
505
|
+
readonly name: TableRefNode;
|
|
506
|
+
/** The source query. */
|
|
507
|
+
readonly query: SQLNode;
|
|
508
|
+
/** Whether to use OR REPLACE. */
|
|
509
|
+
readonly replace: boolean;
|
|
510
|
+
/** Whether to create a TEMP table/view. */
|
|
511
|
+
readonly temp: boolean;
|
|
512
|
+
/** Whether to create a VIEW instead of a TABLE. */
|
|
513
|
+
readonly view: boolean;
|
|
514
|
+
|
|
515
|
+
/**
|
|
516
|
+
* Instantiate a create query.
|
|
517
|
+
* @param name The table or view name.
|
|
518
|
+
* @param query The source query.
|
|
519
|
+
* @param options Create options.
|
|
520
|
+
*/
|
|
521
|
+
constructor(
|
|
522
|
+
name: string | TableRefNode,
|
|
523
|
+
query: string | Query,
|
|
524
|
+
{ replace = false, temp = false, view = false }: CreateTableOptions = {}
|
|
525
|
+
) {
|
|
526
|
+
super(CREATE_QUERY);
|
|
527
|
+
this.name = asTableRef(name)!;
|
|
528
|
+
this.query = isString(query) ? new VerbatimNode(query) : query;
|
|
529
|
+
this.replace = replace;
|
|
530
|
+
this.temp = temp;
|
|
531
|
+
this.view = view;
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
export interface CreateSchemaOptions {
|
|
536
|
+
strict?: boolean;
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
export class CreateSchemaQuery extends SQLNode {
|
|
540
|
+
/** The schema name. */
|
|
541
|
+
readonly name: TableRefNode;
|
|
542
|
+
/** Whether to error if the schema already exists. */
|
|
543
|
+
readonly strict: boolean;
|
|
544
|
+
|
|
545
|
+
/**
|
|
546
|
+
* Instantiate a create schema query.
|
|
547
|
+
* @param name The schema name.
|
|
548
|
+
* @param options Create schema options.
|
|
549
|
+
*/
|
|
550
|
+
constructor(
|
|
551
|
+
name: string | TableRefNode,
|
|
552
|
+
{ strict = false }: CreateSchemaOptions = {}
|
|
553
|
+
) {
|
|
554
|
+
super(CREATE_SCHEMA_QUERY);
|
|
555
|
+
this.name = asTableRef(name)!;
|
|
556
|
+
this.strict = strict;
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
|
|
480
560
|
export class SetOperation extends Query {
|
|
481
561
|
/** The set operation to perform. */
|
|
482
562
|
readonly op: string;
|
package/src/constants.ts
CHANGED
|
@@ -44,4 +44,6 @@ export const SAMPLE_CLAUSE = 'SAMPLE_CLAUSE';
|
|
|
44
44
|
export const SELECT_QUERY = 'SELECT_QUERY';
|
|
45
45
|
export const DESCRIBE_QUERY = 'DESCRIBE_QUERY';
|
|
46
46
|
export const SET_OPERATION = 'SET_OPERATION';
|
|
47
|
+
export const CREATE_QUERY = 'CREATE_QUERY';
|
|
48
|
+
export const CREATE_SCHEMA_QUERY = 'CREATE_SCHEMA_QUERY';
|
|
47
49
|
export const SCALAR_SUBQUERY = 'SCALAR_SUBQUERY';
|
package/src/index.ts
CHANGED
|
@@ -21,7 +21,7 @@ export { LogicalOpNode, AndNode, OrNode } from './ast/logical-op.js';
|
|
|
21
21
|
export { SQLNode, ExprNode, isNode } from './ast/node.js';
|
|
22
22
|
export { OrderByNode } from './ast/order-by.js';
|
|
23
23
|
export { ParamNode } from './ast/param.js';
|
|
24
|
-
export { DescribeQuery, Query, SelectQuery, SetOperation, isDescribeQuery, isQuery, isSelectQuery } from './ast/query.js';
|
|
24
|
+
export { CreateQuery, type CreateTableOptions, CreateSchemaQuery, type CreateSchemaOptions, DescribeQuery, Query, SelectQuery, SetOperation, isCreateQuery, isCreateSchemaQuery, isDescribeQuery, isQuery, isSelectQuery } from './ast/query.js';
|
|
25
25
|
export { SampleClauseNode } from './ast/sample.js';
|
|
26
26
|
export { ScalarSubqueryNode } from './ast/subquery.js';
|
|
27
27
|
export { SelectClauseNode } from './ast/select.js';
|
package/src/load/create.ts
CHANGED
|
@@ -1,26 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
temp?: boolean;
|
|
4
|
-
view?: boolean;
|
|
5
|
-
}
|
|
1
|
+
import { CreateQuery, type CreateTableOptions, CreateSchemaQuery, type CreateSchemaOptions, type Query } from "../ast/query.js";
|
|
2
|
+
import type { TableRefNode } from "../ast/table-ref.js";
|
|
6
3
|
|
|
7
|
-
export function createTable(name: string, query: string, {
|
|
8
|
-
|
|
9
|
-
temp = false,
|
|
10
|
-
view = false
|
|
11
|
-
}: CreateTableOptions = {}) {
|
|
12
|
-
return 'CREATE'
|
|
13
|
-
+ (replace ? ' OR REPLACE ' : ' ')
|
|
14
|
-
+ (temp ? 'TEMP ' : '')
|
|
15
|
-
+ (view ? 'VIEW' : 'TABLE')
|
|
16
|
-
+ (replace ? ' ' : ' IF NOT EXISTS ')
|
|
17
|
-
+ name + ' AS ' + query;
|
|
4
|
+
export function createTable(name: string | TableRefNode, query: string | Query, options: CreateTableOptions = {}) {
|
|
5
|
+
return new CreateQuery(name, query, options);
|
|
18
6
|
}
|
|
19
7
|
|
|
20
|
-
export function createSchema(name: string, {
|
|
21
|
-
|
|
22
|
-
} = {}) {
|
|
23
|
-
return 'CREATE SCHEMA '
|
|
24
|
-
+ (strict ? '' : 'IF NOT EXISTS ')
|
|
25
|
-
+ name;
|
|
8
|
+
export function createSchema(name: string | TableRefNode, options: CreateSchemaOptions = {}) {
|
|
9
|
+
return new CreateSchemaQuery(name, options);
|
|
26
10
|
}
|
package/src/load/load.ts
CHANGED
|
@@ -11,6 +11,8 @@ import {
|
|
|
11
11
|
CollateNode,
|
|
12
12
|
ColumnParamNode,
|
|
13
13
|
ColumnRefNode,
|
|
14
|
+
CreateQuery,
|
|
15
|
+
CreateSchemaQuery,
|
|
14
16
|
FragmentNode,
|
|
15
17
|
FromClauseNode,
|
|
16
18
|
FunctionNode,
|
|
@@ -106,6 +108,23 @@ export class DuckDBCodeGenerator extends SQLCodeGenerator {
|
|
|
106
108
|
return `${tref}${id}`;
|
|
107
109
|
}
|
|
108
110
|
|
|
111
|
+
visitCreateQuery(node: CreateQuery): string {
|
|
112
|
+
const { name, query, replace, temp, view } = node;
|
|
113
|
+
return 'CREATE'
|
|
114
|
+
+ (replace ? ' OR REPLACE ' : ' ')
|
|
115
|
+
+ (temp ? 'TEMP ' : '')
|
|
116
|
+
+ (view ? 'VIEW' : 'TABLE')
|
|
117
|
+
+ (replace ? ' ' : ' IF NOT EXISTS ')
|
|
118
|
+
+ this.toString(name) + ' AS ' + this.toString(query);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
visitCreateSchemaQuery(node: CreateSchemaQuery): string {
|
|
122
|
+
const { name, strict } = node;
|
|
123
|
+
return 'CREATE SCHEMA '
|
|
124
|
+
+ (strict ? '' : 'IF NOT EXISTS ')
|
|
125
|
+
+ this.toString(name);
|
|
126
|
+
}
|
|
127
|
+
|
|
109
128
|
visitDescribeQuery(node: DescribeQuery): string {
|
|
110
129
|
const { query } = node;
|
|
111
130
|
return `DESC ${this.toString(query)}`;
|
package/src/visit/codegen/sql.ts
CHANGED
|
@@ -11,6 +11,8 @@ import type {
|
|
|
11
11
|
CollateNode,
|
|
12
12
|
ColumnParamNode,
|
|
13
13
|
ColumnRefNode,
|
|
14
|
+
CreateQuery,
|
|
15
|
+
CreateSchemaQuery,
|
|
14
16
|
FragmentNode,
|
|
15
17
|
FromClauseNode,
|
|
16
18
|
FunctionNode,
|
|
@@ -50,6 +52,8 @@ import {
|
|
|
50
52
|
COLLATE,
|
|
51
53
|
COLUMN_PARAM,
|
|
52
54
|
COLUMN_REF,
|
|
55
|
+
CREATE_QUERY,
|
|
56
|
+
CREATE_SCHEMA_QUERY,
|
|
53
57
|
DESCRIBE_QUERY,
|
|
54
58
|
EXPRESSION,
|
|
55
59
|
FRAGMENT,
|
|
@@ -123,6 +127,8 @@ export abstract class SQLCodeGenerator {
|
|
|
123
127
|
case COLLATE: return this.visitCollate;
|
|
124
128
|
case COLUMN_PARAM: return this.visitColumnParam;
|
|
125
129
|
case COLUMN_REF: return this.visitColumnRef;
|
|
130
|
+
case CREATE_QUERY: return this.visitCreateQuery;
|
|
131
|
+
case CREATE_SCHEMA_QUERY: return this.visitCreateSchemaQuery;
|
|
126
132
|
case DESCRIBE_QUERY: return this.visitDescribeQuery;
|
|
127
133
|
case EXPRESSION: return this.visitExpression;
|
|
128
134
|
case FRAGMENT: return this.visitFragment;
|
|
@@ -178,6 +184,8 @@ export abstract class SQLCodeGenerator {
|
|
|
178
184
|
abstract visitCollate(node: CollateNode): string;
|
|
179
185
|
abstract visitColumnParam(node: ColumnParamNode): string;
|
|
180
186
|
abstract visitColumnRef(node: ColumnRefNode): string;
|
|
187
|
+
abstract visitCreateQuery(node: CreateQuery): string;
|
|
188
|
+
abstract visitCreateSchemaQuery(node: CreateSchemaQuery): string;
|
|
181
189
|
abstract visitDescribeQuery(node: DescribeQuery): string;
|
|
182
190
|
abstract visitExpression(node: ExprNode): string;
|
|
183
191
|
abstract visitFragment(node: FragmentNode): string;
|
package/src/visit/recurse.ts
CHANGED
|
@@ -7,6 +7,8 @@ import {
|
|
|
7
7
|
COLLATE,
|
|
8
8
|
COLUMN_PARAM,
|
|
9
9
|
COLUMN_REF,
|
|
10
|
+
CREATE_QUERY,
|
|
11
|
+
CREATE_SCHEMA_QUERY,
|
|
10
12
|
DESCRIBE_QUERY,
|
|
11
13
|
EXPRESSION,
|
|
12
14
|
FRAGMENT,
|
|
@@ -44,6 +46,8 @@ export const recurse: Record<string, string[]> = {
|
|
|
44
46
|
[COLLATE]: ['expr'],
|
|
45
47
|
[COLUMN_PARAM]: ['param', 'table'],
|
|
46
48
|
[COLUMN_REF]: ['table'],
|
|
49
|
+
[CREATE_QUERY]: ['name', 'query'],
|
|
50
|
+
[CREATE_SCHEMA_QUERY]: ['name'],
|
|
47
51
|
[DESCRIBE_QUERY]: ['query'],
|
|
48
52
|
[EXPRESSION]: ['node'],
|
|
49
53
|
[FRAGMENT]: ['spans'],
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { ToStringVisitor } from './to-string-visitor.js';
|
|
2
|
-
import { ExprNode, AggregateNode, BetweenOpNode, NotBetweenOpNode, BinaryOpNode, CaseNode, WhenNode, CastNode, CollateNode, ColumnParamNode, ColumnRefNode, FragmentNode, FromClauseNode, FunctionNode, InOpNode, IntervalNode, JoinNode, ListNode, LiteralNode, LogicalOpNode, OrderByNode, ParamNode, DescribeQuery, SelectQuery, SetOperation, SampleClauseNode, SelectClauseNode, ScalarSubqueryNode, TableRefNode, UnaryOpNode, UnaryPostfixOpNode, UnnestNode, VerbatimNode, WindowNode, WindowClauseNode, WindowDefNode, WindowFunctionNode, WindowFrameNode, WindowFrameExprNode, WithClauseNode } from '../index.js';
|
|
3
|
-
/**
|
|
4
|
-
* DuckDB SQL dialect visitor for converting AST nodes to DuckDB-compatible SQL.
|
|
5
|
-
*/
|
|
6
|
-
export declare class DuckDBVisitor extends ToStringVisitor {
|
|
7
|
-
visitAggregate(node: AggregateNode): string;
|
|
8
|
-
visitBetween(node: BetweenOpNode): string;
|
|
9
|
-
visitBinary(node: BinaryOpNode): string;
|
|
10
|
-
visitCase(node: CaseNode): string;
|
|
11
|
-
visitCast(node: CastNode): string;
|
|
12
|
-
visitCollate(node: CollateNode): string;
|
|
13
|
-
visitColumnParam(node: ColumnParamNode): string;
|
|
14
|
-
visitColumnRef(node: ColumnRefNode): string;
|
|
15
|
-
visitDescribeQuery(node: DescribeQuery): string;
|
|
16
|
-
visitExpression(node: ExprNode): string;
|
|
17
|
-
visitFragment(node: FragmentNode): string;
|
|
18
|
-
visitFromClause(node: FromClauseNode): string;
|
|
19
|
-
visitFunction(node: FunctionNode): string;
|
|
20
|
-
visitIn(node: InOpNode): string;
|
|
21
|
-
visitInterval(node: IntervalNode): string;
|
|
22
|
-
visitJoinClause(node: JoinNode): string;
|
|
23
|
-
visitList(node: ListNode): string;
|
|
24
|
-
visitLiteral(node: LiteralNode): string;
|
|
25
|
-
visitLogicalOperator(node: LogicalOpNode<ExprNode>): string;
|
|
26
|
-
visitNotBetween(node: NotBetweenOpNode): string;
|
|
27
|
-
visitOrderBy(node: OrderByNode): string;
|
|
28
|
-
visitParam(node: ParamNode): string;
|
|
29
|
-
visitSampleClause(node: SampleClauseNode): string;
|
|
30
|
-
visitScalarSubquery(node: ScalarSubqueryNode): string;
|
|
31
|
-
visitSelectClause(node: SelectClauseNode): string;
|
|
32
|
-
visitSelectQuery(node: SelectQuery): string;
|
|
33
|
-
visitSetOperation(node: SetOperation): string;
|
|
34
|
-
visitTableRef(node: TableRefNode): string;
|
|
35
|
-
visitUnary(node: UnaryOpNode): string;
|
|
36
|
-
visitUnaryPostfix(node: UnaryPostfixOpNode): string;
|
|
37
|
-
visitUnnest(node: UnnestNode): string;
|
|
38
|
-
visitVerbatim(node: VerbatimNode): string;
|
|
39
|
-
visitWhen(node: WhenNode): string;
|
|
40
|
-
visitWindow(node: WindowNode): string;
|
|
41
|
-
visitWindowClause(node: WindowClauseNode): string;
|
|
42
|
-
visitWindowDef(node: WindowDefNode): string;
|
|
43
|
-
visitWindowExtentExpr(node: WindowFrameExprNode): string;
|
|
44
|
-
visitWindowFrame(node: WindowFrameNode): string;
|
|
45
|
-
private formatFrameValue;
|
|
46
|
-
visitWindowFunction(node: WindowFunctionNode): string;
|
|
47
|
-
visitWithClause(node: WithClauseNode): string;
|
|
48
|
-
}
|
|
49
|
-
export declare const duckdbVisitor: DuckDBVisitor;
|
|
50
|
-
//# sourceMappingURL=duckdb-visitor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"duckdb-visitor.d.ts","sourceRoot":"","sources":["../../../src/visit/duckdb-visitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAEL,QAAQ,EACR,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,eAAe,EACf,aAAa,EACb,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,aAAa,EACb,WAAW,EACX,SAAS,EACT,aAAa,EACb,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,cAAc,EACf,MAAM,aAAa,CAAC;AAiBrB;;GAEG;AACH,qBAAa,aAAc,SAAQ,eAAe;IAChD,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM;IAa3C,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM;IAIzC,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAKvC,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;IASjC,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;IAKjC,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM;IAKvC,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM;IAM/C,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM;IAO3C,kBAAkB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM;IAK/C,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;IAMvC,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAOzC,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM;IAY7C,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAKzC,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;IAK/B,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAKzC,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;IAgBvC,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;IAKjC,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM;IAKvC,oBAAoB,CAAC,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,MAAM;IAQ3D,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM;IAI/C,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM;IAWvC,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM;IAMnC,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM;IAOjD,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM;IAIrD,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM;IAQjD,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM;IAyE3C,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAS7C,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAKzC,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM;IAKrC,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM;IAKnD,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;IAcrC,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAKzC,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;IAKjC,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;IAKrC,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM;IAKjD,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM;IAY3C,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM;IAexD,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM;IAsB/C,OAAO,CAAC,gBAAgB;IAwBxB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM;IAUrD,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM;CAO9C;AAGD,eAAO,MAAM,aAAa,eAAsB,CAAC"}
|