rawsql-ts 0.1.0-beta.8 → 0.1.0-beta.9
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/README.md +58 -38
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/models/BinarySelectQuery.js +9 -8
- package/dist/models/BinarySelectQuery.js.map +1 -1
- package/dist/models/SimpleSelectQuery.js +10 -8
- package/dist/models/SimpleSelectQuery.js.map +1 -1
- package/dist/parsers/CommandExpressionParser.d.ts +1 -1
- package/dist/parsers/CommandExpressionParser.js +6 -6
- package/dist/parsers/CommandExpressionParser.js.map +1 -1
- package/dist/parsers/CommonTableParser.d.ts +2 -2
- package/dist/parsers/CommonTableParser.js +7 -5
- package/dist/parsers/CommonTableParser.js.map +1 -1
- package/dist/parsers/ForClauseParser.d.ts +2 -2
- package/dist/parsers/ForClauseParser.js +5 -3
- package/dist/parsers/ForClauseParser.js.map +1 -1
- package/dist/parsers/FromClauseParser.d.ts +2 -2
- package/dist/parsers/FromClauseParser.js +6 -4
- package/dist/parsers/FromClauseParser.js.map +1 -1
- package/dist/parsers/FunctionExpressionParser.d.ts +1 -1
- package/dist/parsers/FunctionExpressionParser.js +8 -8
- package/dist/parsers/FunctionExpressionParser.js.map +1 -1
- package/dist/parsers/GroupByParser.d.ts +2 -2
- package/dist/parsers/GroupByParser.js +6 -4
- package/dist/parsers/GroupByParser.js.map +1 -1
- package/dist/parsers/HavingParser.d.ts +2 -2
- package/dist/parsers/HavingParser.js +6 -4
- package/dist/parsers/HavingParser.js.map +1 -1
- package/dist/parsers/IdentifierParser.d.ts +1 -1
- package/dist/parsers/IdentifierParser.js +1 -1
- package/dist/parsers/IdentifierParser.js.map +1 -1
- package/dist/parsers/JoinClauseParser.js +2 -2
- package/dist/parsers/JoinClauseParser.js.map +1 -1
- package/dist/parsers/LimitClauseParser.d.ts +2 -2
- package/dist/parsers/LimitClauseParser.js +7 -5
- package/dist/parsers/LimitClauseParser.js.map +1 -1
- package/dist/parsers/LiteralParser.d.ts +1 -1
- package/dist/parsers/LiteralParser.js +1 -1
- package/dist/parsers/LiteralParser.js.map +1 -1
- package/dist/parsers/OrderByClauseParser.d.ts +2 -2
- package/dist/parsers/OrderByClauseParser.js +6 -4
- package/dist/parsers/OrderByClauseParser.js.map +1 -1
- package/dist/parsers/OverExpressionParser.d.ts +2 -2
- package/dist/parsers/OverExpressionParser.js +4 -4
- package/dist/parsers/OverExpressionParser.js.map +1 -1
- package/dist/parsers/ParameterExpressionParser.d.ts +1 -1
- package/dist/parsers/ParameterExpressionParser.js +1 -1
- package/dist/parsers/ParameterExpressionParser.js.map +1 -1
- package/dist/parsers/ParenExpressionParser.d.ts +1 -1
- package/dist/parsers/ParenExpressionParser.js +2 -2
- package/dist/parsers/ParenExpressionParser.js.map +1 -1
- package/dist/parsers/PartitionByParser.d.ts +2 -2
- package/dist/parsers/PartitionByParser.js +7 -5
- package/dist/parsers/PartitionByParser.js.map +1 -1
- package/dist/parsers/SelectClauseParser.d.ts +2 -2
- package/dist/parsers/SelectClauseParser.js +6 -4
- package/dist/parsers/SelectClauseParser.js.map +1 -1
- package/dist/parsers/SelectQueryParser.d.ts +2 -2
- package/dist/parsers/SelectQueryParser.js +16 -14
- package/dist/parsers/SelectQueryParser.js.map +1 -1
- package/dist/parsers/SourceAliasExpressionParser.d.ts +1 -1
- package/dist/parsers/SourceAliasExpressionParser.js +2 -1
- package/dist/parsers/SourceAliasExpressionParser.js.map +1 -1
- package/dist/parsers/SourceExpressionParser.d.ts +1 -1
- package/dist/parsers/SourceExpressionParser.js +5 -4
- package/dist/parsers/SourceExpressionParser.js.map +1 -1
- package/dist/parsers/SourceParser.d.ts +2 -2
- package/dist/parsers/SourceParser.js +9 -6
- package/dist/parsers/SourceParser.js.map +1 -1
- package/dist/parsers/StringSpecifierExpressionParser.d.ts +1 -1
- package/dist/parsers/StringSpecifierExpressionParser.js +1 -1
- package/dist/parsers/StringSpecifierExpressionParser.js.map +1 -1
- package/dist/parsers/UnaryExpressionParser.d.ts +1 -1
- package/dist/parsers/UnaryExpressionParser.js +2 -2
- package/dist/parsers/UnaryExpressionParser.js.map +1 -1
- package/dist/parsers/ValueParser.d.ts +2 -2
- package/dist/parsers/ValueParser.js +15 -13
- package/dist/parsers/ValueParser.js.map +1 -1
- package/dist/parsers/ValuesQueryParser.d.ts +2 -2
- package/dist/parsers/ValuesQueryParser.js +5 -5
- package/dist/parsers/ValuesQueryParser.js.map +1 -1
- package/dist/parsers/WhereClauseParser.d.ts +2 -2
- package/dist/parsers/WhereClauseParser.js +6 -4
- package/dist/parsers/WhereClauseParser.js.map +1 -1
- package/dist/parsers/WindowClauseParser.d.ts +2 -2
- package/dist/parsers/WindowClauseParser.js +6 -4
- package/dist/parsers/WindowClauseParser.js.map +1 -1
- package/dist/parsers/WindowExpressionParser.d.ts +2 -2
- package/dist/parsers/WindowExpressionParser.js +29 -17
- package/dist/parsers/WindowExpressionParser.js.map +1 -1
- package/dist/parsers/WithClauseParser.d.ts +2 -2
- package/dist/parsers/WithClauseParser.js +7 -5
- package/dist/parsers/WithClauseParser.js.map +1 -1
- package/dist/transformers/CTEBuilder.js +1 -1
- package/dist/transformers/CTEBuilder.js.map +1 -1
- package/dist/transformers/CTENormalizer.d.ts +5 -5
- package/dist/transformers/CTENormalizer.js +11 -7
- package/dist/transformers/CTENormalizer.js.map +1 -1
- package/dist/transformers/Formatter.d.ts +16 -1
- package/dist/transformers/Formatter.js +16 -1
- package/dist/transformers/Formatter.js.map +1 -1
- package/dist/transformers/QueryConverter.d.ts +41 -0
- package/dist/transformers/{QueryNormalizer.js → QueryConverter.js} +39 -34
- package/dist/transformers/QueryConverter.js.map +1 -0
- package/package.json +1 -1
- package/dist/transformers/QueryNormalizer.d.ts +0 -37
- package/dist/transformers/QueryNormalizer.js.map +0 -1
@@ -6,7 +6,7 @@ const ValueComponent_1 = require("../models/ValueComponent");
|
|
6
6
|
const OverExpressionParser_1 = require("./OverExpressionParser");
|
7
7
|
const ValueParser_1 = require("./ValueParser");
|
8
8
|
class FunctionExpressionParser {
|
9
|
-
static
|
9
|
+
static parseFromLexeme(lexemes, index) {
|
10
10
|
let idx = index;
|
11
11
|
const current = lexemes[idx];
|
12
12
|
if (current.value === "substring" || current.value === "overlay") {
|
@@ -52,7 +52,7 @@ class FunctionExpressionParser {
|
|
52
52
|
return { value: exp, newIndex: idx };
|
53
53
|
}
|
54
54
|
// Get the right-hand side value
|
55
|
-
const rightResult = ValueParser_1.ValueParser.
|
55
|
+
const rightResult = ValueParser_1.ValueParser.parseFromLexeme(lexemes, idx);
|
56
56
|
idx = rightResult.newIndex;
|
57
57
|
// Create binary expression
|
58
58
|
const value = new ValueComponent_1.BinaryExpression(left, operator, rightResult.value);
|
@@ -62,13 +62,13 @@ class FunctionExpressionParser {
|
|
62
62
|
}
|
63
63
|
static parseBetweenExpression(lexemes, index, value, negated) {
|
64
64
|
let idx = index;
|
65
|
-
const lower = ValueParser_1.ValueParser.
|
65
|
+
const lower = ValueParser_1.ValueParser.parseFromLexeme(lexemes, idx, false);
|
66
66
|
idx = lower.newIndex;
|
67
67
|
if (idx < lexemes.length && lexemes[idx].type === Lexeme_1.TokenType.Operator && lexemes[idx].value !== "and") {
|
68
68
|
throw new Error(`Expected 'and' after 'between' at index ${idx}`);
|
69
69
|
}
|
70
70
|
idx++;
|
71
|
-
const upper = ValueParser_1.ValueParser.
|
71
|
+
const upper = ValueParser_1.ValueParser.parseFromLexeme(lexemes, idx);
|
72
72
|
idx = upper.newIndex;
|
73
73
|
const result = new ValueComponent_1.BetweenExpression(value, lower.value, upper.value, negated);
|
74
74
|
return { value: result, newIndex: idx };
|
@@ -84,7 +84,7 @@ class FunctionExpressionParser {
|
|
84
84
|
const arg = ValueParser_1.ValueParser.parseArgument(Lexeme_1.TokenType.OpenParen, Lexeme_1.TokenType.CloseParen, lexemes, idx);
|
85
85
|
idx = arg.newIndex;
|
86
86
|
if (idx < lexemes.length && lexemes[idx].value === "over") {
|
87
|
-
const over = OverExpressionParser_1.OverExpressionParser.
|
87
|
+
const over = OverExpressionParser_1.OverExpressionParser.parseFromLexeme(lexemes, idx);
|
88
88
|
idx = over.newIndex;
|
89
89
|
const value = new ValueComponent_1.FunctionCall(functionName, arg.value, over.value);
|
90
90
|
return { value, newIndex: idx };
|
@@ -104,7 +104,7 @@ class FunctionExpressionParser {
|
|
104
104
|
idx++;
|
105
105
|
if (idx < lexemes.length && lexemes[idx].type === Lexeme_1.TokenType.OpenParen) {
|
106
106
|
idx++;
|
107
|
-
const input = ValueParser_1.ValueParser.
|
107
|
+
const input = ValueParser_1.ValueParser.parseFromLexeme(lexemes, idx);
|
108
108
|
let arg = input.value;
|
109
109
|
idx = input.newIndex;
|
110
110
|
// Delegate to the standard function parser if parsing by comma
|
@@ -121,7 +121,7 @@ class FunctionExpressionParser {
|
|
121
121
|
idx = typeValue.newIndex;
|
122
122
|
}
|
123
123
|
else {
|
124
|
-
const right = ValueParser_1.ValueParser.
|
124
|
+
const right = ValueParser_1.ValueParser.parseFromLexeme(lexemes, idx);
|
125
125
|
arg = new ValueComponent_1.BinaryExpression(arg, key, right.value);
|
126
126
|
idx = right.newIndex;
|
127
127
|
}
|
@@ -134,7 +134,7 @@ class FunctionExpressionParser {
|
|
134
134
|
idx++;
|
135
135
|
if (idx < lexemes.length && lexemes[idx].value === "over") {
|
136
136
|
idx++;
|
137
|
-
const over = OverExpressionParser_1.OverExpressionParser.
|
137
|
+
const over = OverExpressionParser_1.OverExpressionParser.parseFromLexeme(lexemes, idx);
|
138
138
|
idx = over.newIndex;
|
139
139
|
const value = new ValueComponent_1.FunctionCall(functionName, arg, over.value);
|
140
140
|
return { value, newIndex: idx };
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"FunctionExpressionParser.js","sourceRoot":"","sources":["../../src/parsers/FunctionExpressionParser.ts"],"names":[],"mappings":";;;AAAA,6CAAqD;AACrD,6DAAwI;AACxI,iEAA8D;AAC9D,+CAA4C;AAE5C,MAAa,wBAAwB;IAC1B,MAAM,CAAC,
|
1
|
+
{"version":3,"file":"FunctionExpressionParser.js","sourceRoot":"","sources":["../../src/parsers/FunctionExpressionParser.ts"],"names":[],"mappings":"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"}
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import { GroupByClause } from "../models/Clause";
|
2
2
|
import { Lexeme } from "../models/Lexeme";
|
3
3
|
export declare class GroupByClauseParser {
|
4
|
-
static
|
5
|
-
static
|
4
|
+
static parse(query: string): GroupByClause;
|
5
|
+
static parseFromLexeme(lexemes: Lexeme[], index: number): {
|
6
6
|
value: GroupByClause;
|
7
7
|
newIndex: number;
|
8
8
|
};
|
@@ -6,18 +6,20 @@ const Lexeme_1 = require("../models/Lexeme");
|
|
6
6
|
const SqlTokenizer_1 = require("./SqlTokenizer");
|
7
7
|
const ValueParser_1 = require("./ValueParser");
|
8
8
|
class GroupByClauseParser {
|
9
|
-
|
9
|
+
// Parse SQL string to AST (was: parse)
|
10
|
+
static parse(query) {
|
10
11
|
const tokenizer = new SqlTokenizer_1.SqlTokenizer(query); // Initialize tokenizer
|
11
12
|
const lexemes = tokenizer.readLexmes(); // Get tokens
|
12
13
|
// Parse
|
13
|
-
const result = this.
|
14
|
+
const result = this.parseFromLexeme(lexemes, 0);
|
14
15
|
// Error if there are remaining tokens
|
15
16
|
if (result.newIndex < lexemes.length) {
|
16
17
|
throw new Error(`Syntax error: Unexpected token "${lexemes[result.newIndex].value}" at position ${result.newIndex}. The GROUP BY clause is complete but there are additional tokens.`);
|
17
18
|
}
|
18
19
|
return result.value;
|
19
20
|
}
|
20
|
-
|
21
|
+
// Parse from lexeme array (was: parse)
|
22
|
+
static parseFromLexeme(lexemes, index) {
|
21
23
|
let idx = index;
|
22
24
|
if (lexemes[idx].value !== 'group by') {
|
23
25
|
throw new Error(`Syntax error at position ${idx}: Expected 'GROUP BY' keyword but found "${lexemes[idx].value}". GROUP BY clauses must start with the GROUP BY keywords.`);
|
@@ -46,7 +48,7 @@ class GroupByClauseParser {
|
|
46
48
|
}
|
47
49
|
static parseItem(lexemes, index) {
|
48
50
|
let idx = index;
|
49
|
-
const parsedValue = ValueParser_1.ValueParser.
|
51
|
+
const parsedValue = ValueParser_1.ValueParser.parseFromLexeme(lexemes, idx);
|
50
52
|
const value = parsedValue.value;
|
51
53
|
idx = parsedValue.newIndex;
|
52
54
|
return { value, newIndex: idx };
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"GroupByParser.js","sourceRoot":"","sources":["../../src/parsers/GroupByParser.ts"],"names":[],"mappings":";;;AAAA,6CAAiD;AACjD,6CAAqD;AAErD,iDAA8C;AAC9C,+CAA4C;AAE5C,MAAa,mBAAmB;
|
1
|
+
{"version":3,"file":"GroupByParser.js","sourceRoot":"","sources":["../../src/parsers/GroupByParser.ts"],"names":[],"mappings":";;;AAAA,6CAAiD;AACjD,6CAAqD;AAErD,iDAA8C;AAC9C,+CAA4C;AAE5C,MAAa,mBAAmB;IAC5B,uCAAuC;IAChC,MAAM,CAAC,KAAK,CAAC,KAAa;QAC7B,MAAM,SAAS,GAAG,IAAI,2BAAY,CAAC,KAAK,CAAC,CAAC,CAAC,uBAAuB;QAClE,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,aAAa;QAErD,QAAQ;QACR,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAEhD,sCAAsC;QACtC,IAAI,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,mCAAmC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,iBAAiB,MAAM,CAAC,QAAQ,oEAAoE,CAAC,CAAC;QAC3L,CAAC;QAED,OAAO,MAAM,CAAC,KAAK,CAAC;IACxB,CAAC;IAED,uCAAuC;IAChC,MAAM,CAAC,eAAe,CAAC,OAAiB,EAAE,KAAa;QAC1D,IAAI,GAAG,GAAG,KAAK,CAAC;QAEhB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,4CAA4C,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,4DAA4D,CAAC,CAAC;QAC/K,CAAC;QACD,GAAG,EAAE,CAAC;QAEN,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,mIAAmI,CAAC,CAAC;QACzJ,CAAC;QAED,MAAM,KAAK,GAAqB,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;QAEpB,OAAO,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,kBAAS,CAAC,KAAK,EAAE,CAAC;YACnE,GAAG,EAAE,CAAC;YACN,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;QACxB,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,4BAA4B,KAAK,oGAAoG,CAAC,CAAC;QAC3J,CAAC;aAAM,CAAC;YACJ,MAAM,MAAM,GAAG,IAAI,sBAAa,CAAC,KAAK,CAAC,CAAC;YACxC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QAC5C,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,SAAS,CAAC,OAAiB,EAAE,KAAa;QACrD,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,MAAM,WAAW,GAAG,yBAAW,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;QAChC,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC;QAC3B,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IACpC,CAAC;CACJ;AAzDD,kDAyDC"}
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import { HavingClause } from "../models/Clause";
|
2
2
|
import { Lexeme } from "../models/Lexeme";
|
3
3
|
export declare class HavingClauseParser {
|
4
|
-
static
|
5
|
-
static
|
4
|
+
static parse(query: string): HavingClause;
|
5
|
+
static parseFromLexeme(lexemes: Lexeme[], index: number): {
|
6
6
|
value: HavingClause;
|
7
7
|
newIndex: number;
|
8
8
|
};
|
@@ -5,18 +5,20 @@ const Clause_1 = require("../models/Clause");
|
|
5
5
|
const SqlTokenizer_1 = require("./SqlTokenizer");
|
6
6
|
const ValueParser_1 = require("./ValueParser");
|
7
7
|
class HavingClauseParser {
|
8
|
-
|
8
|
+
// Parse SQL string to AST (was: parse)
|
9
|
+
static parse(query) {
|
9
10
|
const tokenizer = new SqlTokenizer_1.SqlTokenizer(query); // Initialize tokenizer
|
10
11
|
const lexemes = tokenizer.readLexmes(); // Get tokens
|
11
12
|
// Parse
|
12
|
-
const result = this.
|
13
|
+
const result = this.parseFromLexeme(lexemes, 0);
|
13
14
|
// Error if there are remaining tokens
|
14
15
|
if (result.newIndex < lexemes.length) {
|
15
16
|
throw new Error(`Syntax error: Unexpected token "${lexemes[result.newIndex].value}" at position ${result.newIndex}. The HAVING clause is complete but there are additional tokens.`);
|
16
17
|
}
|
17
18
|
return result.value;
|
18
19
|
}
|
19
|
-
|
20
|
+
// Parse from lexeme array (was: parse)
|
21
|
+
static parseFromLexeme(lexemes, index) {
|
20
22
|
let idx = index;
|
21
23
|
if (lexemes[idx].value !== 'having') {
|
22
24
|
throw new Error(`Syntax error at position ${idx}: Expected 'HAVING' keyword but found "${lexemes[idx].value}". HAVING clauses must start with the HAVING keyword.`);
|
@@ -25,7 +27,7 @@ class HavingClauseParser {
|
|
25
27
|
if (idx >= lexemes.length) {
|
26
28
|
throw new Error(`Syntax error: Unexpected end of input after 'HAVING' keyword. The HAVING clause requires a condition expression.`);
|
27
29
|
}
|
28
|
-
const item = ValueParser_1.ValueParser.
|
30
|
+
const item = ValueParser_1.ValueParser.parseFromLexeme(lexemes, idx);
|
29
31
|
const clause = new Clause_1.HavingClause(item.value);
|
30
32
|
return { value: clause, newIndex: item.newIndex };
|
31
33
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"HavingParser.js","sourceRoot":"","sources":["../../src/parsers/HavingParser.ts"],"names":[],"mappings":";;;AAAA,6CAAgD;AAEhD,iDAA8C;AAC9C,+CAA4C;AAE5C,MAAa,kBAAkB;
|
1
|
+
{"version":3,"file":"HavingParser.js","sourceRoot":"","sources":["../../src/parsers/HavingParser.ts"],"names":[],"mappings":";;;AAAA,6CAAgD;AAEhD,iDAA8C;AAC9C,+CAA4C;AAE5C,MAAa,kBAAkB;IAC3B,uCAAuC;IAChC,MAAM,CAAC,KAAK,CAAC,KAAa;QAC7B,MAAM,SAAS,GAAG,IAAI,2BAAY,CAAC,KAAK,CAAC,CAAC,CAAC,uBAAuB;QAClE,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,aAAa;QAErD,QAAQ;QACR,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAEhD,sCAAsC;QACtC,IAAI,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,mCAAmC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,iBAAiB,MAAM,CAAC,QAAQ,kEAAkE,CAAC,CAAC;QACzL,CAAC;QAED,OAAO,MAAM,CAAC,KAAK,CAAC;IACxB,CAAC;IAED,uCAAuC;IAChC,MAAM,CAAC,eAAe,CAAC,OAAiB,EAAE,KAAa;QAC1D,IAAI,GAAG,GAAG,KAAK,CAAC;QAEhB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,0CAA0C,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,uDAAuD,CAAC,CAAC;QACxK,CAAC;QACD,GAAG,EAAE,CAAC;QAEN,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,kHAAkH,CAAC,CAAC;QACxI,CAAC;QAED,MAAM,IAAI,GAAG,yBAAW,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,qBAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE5C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IACtD,CAAC;CACJ;AAnCD,gDAmCC"}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { Lexeme } from "../models/Lexeme";
|
2
2
|
import { ValueComponent } from "../models/ValueComponent";
|
3
3
|
export declare class IdentifierParser {
|
4
|
-
static
|
4
|
+
static parseFromLexeme(lexemes: Lexeme[], index: number): {
|
5
5
|
value: ValueComponent;
|
6
6
|
newIndex: number;
|
7
7
|
};
|
@@ -4,7 +4,7 @@ exports.IdentifierParser = void 0;
|
|
4
4
|
const Lexeme_1 = require("../models/Lexeme");
|
5
5
|
const ValueComponent_1 = require("../models/ValueComponent");
|
6
6
|
class IdentifierParser {
|
7
|
-
static
|
7
|
+
static parseFromLexeme(lexemes, index) {
|
8
8
|
// Check for column reference pattern ([identifier dot] * n + identifier)
|
9
9
|
let idx = index;
|
10
10
|
const identifiers = [];
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"IdentifierParser.js","sourceRoot":"","sources":["../../src/parsers/IdentifierParser.ts"],"names":[],"mappings":";;;AAAA,6CAAqD;AACrD,6DAA2E;AAE3E,MAAa,gBAAgB;IAClB,MAAM,CAAC,
|
1
|
+
{"version":3,"file":"IdentifierParser.js","sourceRoot":"","sources":["../../src/parsers/IdentifierParser.ts"],"names":[],"mappings":";;;AAAA,6CAAqD;AACrD,6DAA2E;AAE3E,MAAa,gBAAgB;IAClB,MAAM,CAAC,eAAe,CAAC,OAAiB,EAAE,KAAa;QAC1D,yEAAyE;QACzE,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,2BAA2B;QAC3B,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QACrC,GAAG,EAAE,CAAC;QAEN,sCAAsC;QACtC,8DAA8D;QAC9D,OACI,GAAG,GAAG,OAAO,CAAC,MAAM;YACpB,GAAG,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM;YACxB,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,kBAAS,CAAC,GAAG;YACnC,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAS,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,EACpF,CAAC;YACC,2CAA2C;YAC3C,GAAG,EAAE,CAAC;YACN,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;YACrC,GAAG,EAAE,CAAC;QACV,CAAC;QAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,oEAAoE;YACpE,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;YAC/C,MAAM,KAAK,GAAG,IAAI,gCAAe,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;YAC/D,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QACpC,CAAC;aAAM,CAAC;YACJ,mEAAmE;YACnE,MAAM,KAAK,GAAG,IAAI,gCAAe,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YACxD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QACpC,CAAC;IACL,CAAC;CACJ;AAnCD,4CAmCC"}
|
@@ -57,7 +57,7 @@ class JoinClauseParser {
|
|
57
57
|
const lateral = lateralResult.value;
|
58
58
|
idx = lateralResult.newIndex;
|
59
59
|
// Parse the source expression to join with
|
60
|
-
const sourceResult = SourceExpressionParser_1.SourceExpressionParser.
|
60
|
+
const sourceResult = SourceExpressionParser_1.SourceExpressionParser.parseFromLexeme(lexemes, idx);
|
61
61
|
idx = sourceResult.newIndex;
|
62
62
|
if (idx < lexemes.length) {
|
63
63
|
let result = this.tryParseJoinOn(lexemes, idx, joinType, sourceResult.value, lateral);
|
@@ -78,7 +78,7 @@ class JoinClauseParser {
|
|
78
78
|
if (idx < lexemes.length && lexemes[idx].value === 'on') {
|
79
79
|
idx++; // Skip 'on' keyword
|
80
80
|
// Parse the condition expression
|
81
|
-
const condition = ValueParser_1.ValueParser.
|
81
|
+
const condition = ValueParser_1.ValueParser.parseFromLexeme(lexemes, idx);
|
82
82
|
idx = condition.newIndex;
|
83
83
|
const joinOn = new Clause_1.JoinOnClause(condition.value);
|
84
84
|
const joinClause = new Clause_1.JoinClause(joinType, source, joinOn, lateral);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"JoinClauseParser.js","sourceRoot":"","sources":["../../src/parsers/JoinClauseParser.ts"],"names":[],"mappings":";;;AAAA,6CAA+F;AAC/F,6CAAqD;AACrD,2EAAuE;AACvE,qEAAkE;AAClE,+CAA4C;AAE5C,MAAa,gBAAgB;IAClB,MAAM,CAAC,QAAQ,CAAC,OAAiB,EAAE,KAAa;QACnD,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,MAAM,KAAK,GAAiB,EAAE,CAAC;QAE/B,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;YACtC,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACtD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC7B,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC;QAC9B,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QAC3C,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,KAAa;QACtC,qCAAqC;QACrC,+DAA+D;QAC/D,MAAM,MAAM,GAAG,sCAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACjD,IAAI,MAAM,EAAE,CAAC;YACT,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAEO,MAAM,CAAC,YAAY,CAAC,OAAiB,EAAE,KAAa;QACxD,IAAI,GAAG,GAAG,KAAK,CAAC;QAEhB,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC3D,yBAAyB;YACzB,GAAG,EAAE,CAAC;YACN,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QAC1C,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAC3C,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,OAAiB,EAAE,KAAa;QACzD,IAAI,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,kBAAS,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;YAC/F,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,OAAiB,EAAE,KAAa;QAC3D,IAAI,GAAG,GAAG,KAAK,CAAC;QAEhB,oBAAoB;QACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QAChF,GAAG,EAAE,CAAC;QAEN,yBAAyB;QACzB,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC;QACpC,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC;QAE7B,2CAA2C;QAC3C,MAAM,YAAY,GAAG,+CAAsB,CAAC,
|
1
|
+
{"version":3,"file":"JoinClauseParser.js","sourceRoot":"","sources":["../../src/parsers/JoinClauseParser.ts"],"names":[],"mappings":"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"}
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import { LimitClause as LimitClause } from "../models/Clause";
|
2
2
|
import { Lexeme } from "../models/Lexeme";
|
3
3
|
export declare class LimitClauseParser {
|
4
|
-
static
|
5
|
-
static
|
4
|
+
static parse(query: string): LimitClause;
|
5
|
+
static parseFromLexeme(lexemes: Lexeme[], index: number): {
|
6
6
|
value: LimitClause;
|
7
7
|
newIndex: number;
|
8
8
|
};
|
@@ -5,18 +5,20 @@ const Clause_1 = require("../models/Clause");
|
|
5
5
|
const SqlTokenizer_1 = require("./SqlTokenizer");
|
6
6
|
const ValueParser_1 = require("./ValueParser");
|
7
7
|
class LimitClauseParser {
|
8
|
-
|
8
|
+
// Parse SQL string to AST (was: parse)
|
9
|
+
static parse(query) {
|
9
10
|
const tokenizer = new SqlTokenizer_1.SqlTokenizer(query); // Initialize tokenizer
|
10
11
|
const lexemes = tokenizer.readLexmes(); // Get tokens
|
11
12
|
// Parse
|
12
|
-
const result = this.
|
13
|
+
const result = this.parseFromLexeme(lexemes, 0);
|
13
14
|
// Error if there are remaining tokens
|
14
15
|
if (result.newIndex < lexemes.length) {
|
15
16
|
throw new Error(`Syntax error: Unexpected token "${lexemes[result.newIndex].value}" at position ${result.newIndex}. The LIMIT clause is complete but there are additional tokens.`);
|
16
17
|
}
|
17
18
|
return result.value;
|
18
19
|
}
|
19
|
-
|
20
|
+
// Parse from lexeme array (was: parse)
|
21
|
+
static parseFromLexeme(lexemes, index) {
|
20
22
|
let idx = index;
|
21
23
|
if (lexemes[idx].value !== 'limit') {
|
22
24
|
throw new Error(`Syntax error at position ${idx}: Expected 'LIMIT' keyword but found "${lexemes[idx].value}". LIMIT clauses must start with the LIMIT keyword.`);
|
@@ -26,7 +28,7 @@ class LimitClauseParser {
|
|
26
28
|
throw new Error(`Syntax error: Unexpected end of input after 'LIMIT' keyword. The LIMIT clause requires a numeric expression.`);
|
27
29
|
}
|
28
30
|
// Parse LIMIT value
|
29
|
-
const limitItem = ValueParser_1.ValueParser.
|
31
|
+
const limitItem = ValueParser_1.ValueParser.parseFromLexeme(lexemes, idx);
|
30
32
|
idx = limitItem.newIndex;
|
31
33
|
let offsetItem = null;
|
32
34
|
// Check if there is an OFFSET clause
|
@@ -36,7 +38,7 @@ class LimitClauseParser {
|
|
36
38
|
throw new Error(`Syntax error: Unexpected end of input after 'OFFSET' keyword. The OFFSET clause requires a numeric expression.`);
|
37
39
|
}
|
38
40
|
// Parse OFFSET value
|
39
|
-
const offsetValueItem = ValueParser_1.ValueParser.
|
41
|
+
const offsetValueItem = ValueParser_1.ValueParser.parseFromLexeme(lexemes, idx);
|
40
42
|
offsetItem = offsetValueItem.value;
|
41
43
|
idx = offsetValueItem.newIndex;
|
42
44
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"LimitClauseParser.js","sourceRoot":"","sources":["../../src/parsers/LimitClauseParser.ts"],"names":[],"mappings":";;;AAAA,6CAA8D;AAE9D,iDAA8C;AAC9C,+CAA4C;AAE5C,MAAa,iBAAiB;
|
1
|
+
{"version":3,"file":"LimitClauseParser.js","sourceRoot":"","sources":["../../src/parsers/LimitClauseParser.ts"],"names":[],"mappings":";;;AAAA,6CAA8D;AAE9D,iDAA8C;AAC9C,+CAA4C;AAE5C,MAAa,iBAAiB;IAC1B,uCAAuC;IAChC,MAAM,CAAC,KAAK,CAAC,KAAa;QAC7B,MAAM,SAAS,GAAG,IAAI,2BAAY,CAAC,KAAK,CAAC,CAAC,CAAC,uBAAuB;QAClE,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,aAAa;QAErD,QAAQ;QACR,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAEhD,sCAAsC;QACtC,IAAI,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,mCAAmC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,iBAAiB,MAAM,CAAC,QAAQ,iEAAiE,CAAC,CAAC;QACxL,CAAC;QAED,OAAO,MAAM,CAAC,KAAK,CAAC;IACxB,CAAC;IAED,uCAAuC;IAChC,MAAM,CAAC,eAAe,CAAC,OAAiB,EAAE,KAAa;QAC1D,IAAI,GAAG,GAAG,KAAK,CAAC;QAEhB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,yCAAyC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,qDAAqD,CAAC,CAAC;QACrK,CAAC;QACD,GAAG,EAAE,CAAC;QAEN,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,8GAA8G,CAAC,CAAC;QACpI,CAAC;QAED,oBAAoB;QACpB,MAAM,SAAS,GAAG,yBAAW,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC5D,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC;QAEzB,IAAI,UAAU,GAAG,IAAI,CAAC;QAEtB,qCAAqC;QACrC,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC1D,GAAG,EAAE,CAAC;YAEN,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,gHAAgH,CAAC,CAAC;YACtI,CAAC;YAED,qBAAqB;YACrB,MAAM,eAAe,GAAG,yBAAW,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAClE,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC;YACnC,GAAG,GAAG,eAAe,CAAC,QAAQ,CAAC;QACnC,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,oBAAW,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAE5D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAC5C,CAAC;CACJ;AAtDD,8CAsDC"}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { Lexeme } from "../models/Lexeme";
|
2
2
|
import { ValueComponent } from "../models/ValueComponent";
|
3
3
|
export declare class LiteralParser {
|
4
|
-
static
|
4
|
+
static parseFromLexeme(lexemes: Lexeme[], index: number): {
|
5
5
|
value: ValueComponent;
|
6
6
|
newIndex: number;
|
7
7
|
};
|
@@ -4,7 +4,7 @@ exports.LiteralParser = void 0;
|
|
4
4
|
const ValueComponent_1 = require("../models/ValueComponent");
|
5
5
|
const LiteralTokenReader_1 = require("../tokenReaders/LiteralTokenReader");
|
6
6
|
class LiteralParser {
|
7
|
-
static
|
7
|
+
static parseFromLexeme(lexemes, index) {
|
8
8
|
// Process literal value
|
9
9
|
let idx = index;
|
10
10
|
const valueText = lexemes[idx].value;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"LiteralParser.js","sourceRoot":"","sources":["../../src/parsers/LiteralParser.ts"],"names":[],"mappings":";;;AACA,6DAAmF;AACnF,2EAA0E;AAE1E,MAAa,aAAa;IACf,MAAM,CAAC,
|
1
|
+
{"version":3,"file":"LiteralParser.js","sourceRoot":"","sources":["../../src/parsers/LiteralParser.ts"],"names":[],"mappings":";;;AACA,6DAAmF;AACnF,2EAA0E;AAE1E,MAAa,aAAa;IACf,MAAM,CAAC,eAAe,CAAC,OAAiB,EAAE,KAAa;QAC1D,wBAAwB;QACxB,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QACrC,IAAI,WAA6C,CAAC;QAElD,MAAM,GAAG,GAAG,yCAAoB,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;QACnE,IAAI,GAAG,EAAE,CAAC;YACN,MAAM,KAAK,GAAG,IAAI,0BAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACzC,GAAG,EAAE,CAAA;YACL,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QACpC,CAAC;QAED,0BAA0B;QAC1B,IAAI,mCAAmC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACtD,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;QACD,kCAAkC;aAC7B,CAAC;YACF,mCAAmC;YACnC,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvD,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACJ,WAAW,GAAG,SAAS,CAAC;YAC5B,CAAC;QACL,CAAC;QACD,GAAG,EAAE,CAAA;QACL,MAAM,KAAK,GAAG,IAAI,6BAAY,CAAC,WAAW,CAAC,CAAC;QAC5C,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IACpC,CAAC;CACJ;AA/BD,sCA+BC"}
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import { OrderByClause } from "../models/Clause";
|
2
2
|
import { Lexeme } from "../models/Lexeme";
|
3
3
|
export declare class OrderByClauseParser {
|
4
|
-
static
|
5
|
-
static
|
4
|
+
static parse(query: string): OrderByClause;
|
5
|
+
static parseFromLexeme(lexemes: Lexeme[], index: number): {
|
6
6
|
value: OrderByClause;
|
7
7
|
newIndex: number;
|
8
8
|
};
|
@@ -6,18 +6,20 @@ const Lexeme_1 = require("../models/Lexeme");
|
|
6
6
|
const SqlTokenizer_1 = require("./SqlTokenizer");
|
7
7
|
const ValueParser_1 = require("./ValueParser");
|
8
8
|
class OrderByClauseParser {
|
9
|
-
|
9
|
+
// Parse SQL string to AST (was: parse)
|
10
|
+
static parse(query) {
|
10
11
|
const tokenizer = new SqlTokenizer_1.SqlTokenizer(query); // Initialize tokenizer
|
11
12
|
const lexemes = tokenizer.readLexmes(); // Get tokens
|
12
13
|
// Parse
|
13
|
-
const result = this.
|
14
|
+
const result = this.parseFromLexeme(lexemes, 0);
|
14
15
|
// Error if there are remaining tokens
|
15
16
|
if (result.newIndex < lexemes.length) {
|
16
17
|
throw new Error(`Syntax error: Unexpected token "${lexemes[result.newIndex].value}" at position ${result.newIndex}. The ORDER BY clause is complete but there are additional tokens.`);
|
17
18
|
}
|
18
19
|
return result.value;
|
19
20
|
}
|
20
|
-
|
21
|
+
// Parse from lexeme array (was: parse)
|
22
|
+
static parseFromLexeme(lexemes, index) {
|
21
23
|
let idx = index;
|
22
24
|
if (lexemes[idx].value !== 'order by') {
|
23
25
|
throw new Error(`Syntax error at position ${idx}: Expected 'ORDER BY' keyword but found "${lexemes[idx].value}". ORDER BY clauses must start with the ORDER BY keywords.`);
|
@@ -43,7 +45,7 @@ class OrderByClauseParser {
|
|
43
45
|
}
|
44
46
|
static parseItem(lexemes, index) {
|
45
47
|
let idx = index;
|
46
|
-
const parsedValue = ValueParser_1.ValueParser.
|
48
|
+
const parsedValue = ValueParser_1.ValueParser.parseFromLexeme(lexemes, idx);
|
47
49
|
const value = parsedValue.value;
|
48
50
|
idx = parsedValue.newIndex;
|
49
51
|
if (idx >= lexemes.length) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"OrderByClauseParser.js","sourceRoot":"","sources":["../../src/parsers/OrderByClauseParser.ts"],"names":[],"mappings":";;;AAAA,6CAAmH;AACnH,6CAAqD;AACrD,iDAA8C;AAC9C,+CAA4C;AAE5C,MAAa,mBAAmB;
|
1
|
+
{"version":3,"file":"OrderByClauseParser.js","sourceRoot":"","sources":["../../src/parsers/OrderByClauseParser.ts"],"names":[],"mappings":"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"}
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import { Lexeme } from "../models/Lexeme";
|
2
2
|
import { OverExpression } from "../models/ValueComponent";
|
3
3
|
export declare class OverExpressionParser {
|
4
|
-
static
|
5
|
-
static
|
4
|
+
static parse(query: string): OverExpression;
|
5
|
+
static parseFromLexeme(lexemes: Lexeme[], index: number): {
|
6
6
|
value: OverExpression;
|
7
7
|
newIndex: number;
|
8
8
|
};
|
@@ -6,18 +6,18 @@ const ValueComponent_1 = require("../models/ValueComponent");
|
|
6
6
|
const SqlTokenizer_1 = require("./SqlTokenizer");
|
7
7
|
const WindowExpressionParser_1 = require("./WindowExpressionParser");
|
8
8
|
class OverExpressionParser {
|
9
|
-
static
|
9
|
+
static parse(query) {
|
10
10
|
const tokenizer = new SqlTokenizer_1.SqlTokenizer(query); // Initialize tokenizer
|
11
11
|
const lexemes = tokenizer.readLexmes(); // Get tokens
|
12
12
|
// Parse
|
13
|
-
const result = this.
|
13
|
+
const result = this.parseFromLexeme(lexemes, 0);
|
14
14
|
// Error if there are remaining tokens
|
15
15
|
if (result.newIndex < lexemes.length) {
|
16
16
|
throw new Error(`Syntax error: Unexpected token "${lexemes[result.newIndex].value}" at position ${result.newIndex}. The OVER expression is complete but there are additional tokens.`);
|
17
17
|
}
|
18
18
|
return result.value;
|
19
19
|
}
|
20
|
-
static
|
20
|
+
static parseFromLexeme(lexemes, index) {
|
21
21
|
let idx = index;
|
22
22
|
if (lexemes[idx].value !== 'over') {
|
23
23
|
throw new Error(`Syntax error at position ${idx}: Expected 'OVER' keyword but found "${lexemes[idx].value}". OVER expressions must start with the OVER keyword.`);
|
@@ -34,7 +34,7 @@ class OverExpressionParser {
|
|
34
34
|
}
|
35
35
|
if (lexemes[idx].type === Lexeme_1.TokenType.OpenParen) {
|
36
36
|
// Delegate processing to WindowFrameExpressionParser
|
37
|
-
const result = WindowExpressionParser_1.WindowExpressionParser.
|
37
|
+
const result = WindowExpressionParser_1.WindowExpressionParser.parseFromLexeme(lexemes, idx);
|
38
38
|
return result;
|
39
39
|
}
|
40
40
|
throw new Error(`Syntax error at position ${idx}: Expected a window name or opening parenthesis '(' after OVER keyword, but found "${lexemes[idx].value}".`);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"OverExpressionParser.js","sourceRoot":"","sources":["../../src/parsers/OverExpressionParser.ts"],"names":[],"mappings":";;;AAAA,6CAAqD;AACrD,6DAA4E;AAC5E,iDAA8C;AAC9C,qEAAkE;AAElE,MAAa,oBAAoB;IACtB,MAAM,CAAC,
|
1
|
+
{"version":3,"file":"OverExpressionParser.js","sourceRoot":"","sources":["../../src/parsers/OverExpressionParser.ts"],"names":[],"mappings":";;;AAAA,6CAAqD;AACrD,6DAA4E;AAC5E,iDAA8C;AAC9C,qEAAkE;AAElE,MAAa,oBAAoB;IACtB,MAAM,CAAC,KAAK,CAAC,KAAa;QAC7B,MAAM,SAAS,GAAG,IAAI,2BAAY,CAAC,KAAK,CAAC,CAAC,CAAC,uBAAuB;QAClE,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,aAAa;QAErD,QAAQ;QACR,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAEhD,sCAAsC;QACtC,IAAI,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,mCAAmC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,iBAAiB,MAAM,CAAC,QAAQ,oEAAoE,CAAC,CAAC;QAC3L,CAAC;QAED,OAAO,MAAM,CAAC,KAAK,CAAC;IACxB,CAAC;IAEM,MAAM,CAAC,eAAe,CAAC,OAAiB,EAAE,KAAa;QAC1D,IAAI,GAAG,GAAG,KAAK,CAAC;QAEhB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,wCAAwC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,uDAAuD,CAAC,CAAC;QACtK,CAAC;QACD,GAAG,EAAE,CAAC;QAEN,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,0HAA0H,CAAC,CAAC;QAChJ,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,kBAAS,CAAC,UAAU,EAAE,CAAC;YAC7C,qBAAqB;YACrB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YAChC,GAAG,EAAE,CAAC;YACN,OAAO,EAAE,KAAK,EAAE,IAAI,iCAAgB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QAChE,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,kBAAS,CAAC,SAAS,EAAE,CAAC;YAC5C,qDAAqD;YACrD,MAAM,MAAM,GAAG,+CAAsB,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACpE,OAAO,MAAM,CAAC;QAClB,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,sFAAsF,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IACjK,CAAC;CACJ;AA3CD,oDA2CC"}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { Lexeme } from "../models/Lexeme";
|
2
2
|
import { ValueComponent } from "../models/ValueComponent";
|
3
3
|
export declare class ParameterExpressionParser {
|
4
|
-
static
|
4
|
+
static parseFromLexeme(lexemes: Lexeme[], index: number): {
|
5
5
|
value: ValueComponent;
|
6
6
|
newIndex: number;
|
7
7
|
};
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ParameterExpressionParser = void 0;
|
4
4
|
const ValueComponent_1 = require("../models/ValueComponent");
|
5
5
|
class ParameterExpressionParser {
|
6
|
-
static
|
6
|
+
static parseFromLexeme(lexemes, index) {
|
7
7
|
let idx = index;
|
8
8
|
// Exclude the parameter symbol (first character)
|
9
9
|
const value = new ValueComponent_1.ParameterExpression(lexemes[idx].value.slice(1));
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ParameterExpressionParser.js","sourceRoot":"","sources":["../../src/parsers/ParameterExpressionParser.ts"],"names":[],"mappings":";;;AACA,6DAA+E;AAE/E,MAAa,yBAAyB;IAC3B,MAAM,CAAC,
|
1
|
+
{"version":3,"file":"ParameterExpressionParser.js","sourceRoot":"","sources":["../../src/parsers/ParameterExpressionParser.ts"],"names":[],"mappings":";;;AACA,6DAA+E;AAE/E,MAAa,yBAAyB;IAC3B,MAAM,CAAC,eAAe,CAAC,OAAiB,EAAE,KAAa;QAC1D,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,iDAAiD;QACjD,MAAM,KAAK,GAAG,IAAI,oCAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,GAAG,EAAE,CAAC;QACN,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IACpC,CAAC;CACJ;AARD,8DAQC"}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { Lexeme } from "../models/Lexeme";
|
2
2
|
import { ValueComponent } from "../models/ValueComponent";
|
3
3
|
export declare class ParenExpressionParser {
|
4
|
-
static
|
4
|
+
static parseFromLexeme(lexemes: Lexeme[], index: number): {
|
5
5
|
value: ValueComponent;
|
6
6
|
newIndex: number;
|
7
7
|
};
|
@@ -6,12 +6,12 @@ const ValueComponent_1 = require("../models/ValueComponent");
|
|
6
6
|
const SelectQueryParser_1 = require("./SelectQueryParser");
|
7
7
|
const ValueParser_1 = require("./ValueParser");
|
8
8
|
class ParenExpressionParser {
|
9
|
-
static
|
9
|
+
static parseFromLexeme(lexemes, index) {
|
10
10
|
let idx = index;
|
11
11
|
// check inline query
|
12
12
|
if (idx + 1 < lexemes.length && lexemes[idx].type === Lexeme_1.TokenType.OpenParen && (lexemes[idx + 1].value === "select" || lexemes[idx + 1].value === "values" || lexemes[idx + 1].value === "with")) {
|
13
13
|
idx += 1; // Skip the '(' token
|
14
|
-
const result = SelectQueryParser_1.SelectQueryParser.
|
14
|
+
const result = SelectQueryParser_1.SelectQueryParser.parseFromLexeme(lexemes, idx);
|
15
15
|
idx = result.newIndex;
|
16
16
|
// Check for closing parenthesis
|
17
17
|
if (idx >= lexemes.length || lexemes[idx].type !== Lexeme_1.TokenType.CloseParen) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ParenExpressionParser.js","sourceRoot":"","sources":["../../src/parsers/ParenExpressionParser.ts"],"names":[],"mappings":";;;AAAA,6CAAqD;AACrD,6DAAwF;AACxF,2DAAwD;AACxD,+CAA4C;AAE5C,MAAa,qBAAqB;IACvB,MAAM,CAAC,
|
1
|
+
{"version":3,"file":"ParenExpressionParser.js","sourceRoot":"","sources":["../../src/parsers/ParenExpressionParser.ts"],"names":[],"mappings":";;;AAAA,6CAAqD;AACrD,6DAAwF;AACxF,2DAAwD;AACxD,+CAA4C;AAE5C,MAAa,qBAAqB;IACvB,MAAM,CAAC,eAAe,CAAC,OAAiB,EAAE,KAAa;QAC1D,IAAI,GAAG,GAAG,KAAK,CAAC;QAEhB,qBAAqB;QACrB,IAAI,GAAG,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,kBAAS,CAAC,SAAS,IAAI,CACzE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAClH,EAAE,CAAC;YACA,GAAG,IAAI,CAAC,CAAC,CAAC,qBAAqB;YAC/B,MAAM,MAAM,GAAG,qCAAiB,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC/D,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;YAEtB,gCAAgC;YAChC,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,kBAAS,CAAC,UAAU,EAAE,CAAC;gBACtE,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,eAAe,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YACrF,CAAC;YACD,GAAG,EAAE,CAAC,CAAC,qBAAqB;YAE5B,MAAM,KAAK,GAAG,IAAI,4BAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5C,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QACpC,CAAC;aAAM,CAAC;YACJ,MAAM,MAAM,GAAG,yBAAW,CAAC,aAAa,CAAC,kBAAS,CAAC,SAAS,EAAE,kBAAS,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YACpG,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;YAEtB,MAAM,KAAK,GAAG,IAAI,gCAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAChD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QACpC,CAAC;IACL,CAAC;CACJ;AA5BD,sDA4BC"}
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import { PartitionByClause } from "../models/Clause";
|
2
2
|
import { Lexeme } from "../models/Lexeme";
|
3
3
|
export declare class PartitionByParser {
|
4
|
-
static
|
5
|
-
static
|
4
|
+
static parse(query: string): PartitionByClause;
|
5
|
+
static parseFromLexeme(lexemes: Lexeme[], index: number): {
|
6
6
|
value: PartitionByClause;
|
7
7
|
newIndex: number;
|
8
8
|
};
|