Fix/split listener (#228)

* feat: improve FlinkSqlSplitListener

* feat: improve ImpalaSqlSplitListener

* feat: improve MysqlSplitListener

* fix: correct PgSqlSplitListener

* feat: improve TrinoSqlSplitListener

* test: add split listener unit test

* chore: ignore iml file

* feat: add pgsql missing rules

* test: fix pgsql unit tests
This commit is contained in:
Hayden
2023-12-08 18:33:16 +08:00
committed by GitHub
parent 8c594cf0f2
commit 23f5aac113
44 changed files with 38405 additions and 38236 deletions

View File

@ -4,8 +4,7 @@ import { FlinkSqlLexer } from '../lib/flinksql/FlinkSqlLexer';
import {
FlinkSqlParser,
ProgramContext,
SqlStatementContext,
SqlStatementsContext,
SingleStatementContext,
} from '../lib/flinksql/FlinkSqlParser';
import { FlinkSqlParserListener } from '../lib/flinksql/FlinkSqlParserListener';
import { SyntaxContextType, Suggestions, SyntaxSuggestion } from './common/basic-parser-types';
@ -134,13 +133,13 @@ export default class FlinkSQL extends BasicParser<FlinkSqlLexer, ProgramContext,
}
export class FlinkSqlSplitListener implements FlinkSqlParserListener {
private _statementsContext: SqlStatementContext[] = [];
private _statementsContext: SingleStatementContext[] = [];
exitSqlStatement = (ctx: SqlStatementContext) => {
exitSingleStatement = (ctx: SingleStatementContext) => {
this._statementsContext.push(ctx);
};
enterSqlStatements = (ctx: SqlStatementsContext) => {};
enterSingleStatement = (ctx: SingleStatementContext) => {};
get statementsContext() {
return this._statementsContext;

View File

@ -4,7 +4,7 @@ import { ImpalaSqlLexer } from '../lib/impala/ImpalaSqlLexer';
import {
ImpalaSqlParser,
ProgramContext,
SqlStatementContext,
SingleStatementContext,
} from '../lib/impala/ImpalaSqlParser';
import BasicParser from './common/basicParser';
import { ImpalaSqlParserListener } from '../lib/impala/ImpalaSqlParserListener';
@ -129,13 +129,13 @@ export default class ImpalaSQL extends BasicParser<
}
export class ImpalaSqlSplitListener implements ImpalaSqlParserListener {
private _statementContext: SqlStatementContext[] = [];
private _statementContext: SingleStatementContext[] = [];
exitSqlStatement = (ctx: SqlStatementContext) => {
exitSingleStatement = (ctx: SingleStatementContext) => {
this._statementContext.push(ctx);
};
enterSqlStatement = (ctx: SqlStatementContext) => {};
enterSingleStatement = (ctx: SingleStatementContext) => {};
get statementsContext() {
return this._statementContext;

View File

@ -1,7 +1,7 @@
import { Token } from 'antlr4ts';
import { CandidatesCollection } from 'antlr4-c3';
import { MySqlLexer } from '../lib/mysql/MySqlLexer';
import { MySqlParser, ProgramContext, SqlStatementsContext } from '../lib/mysql/MySqlParser';
import { MySqlParser, ProgramContext, SingleStatementContext } from '../lib/mysql/MySqlParser';
import BasicParser from './common/basicParser';
import { Suggestions, SyntaxContextType, SyntaxSuggestion } from './common/basic-parser-types';
import { MySqlParserListener } from 'src/lib/mysql/MySqlParserListener';
@ -30,7 +30,7 @@ export default class MySQL extends BasicParser<MySqlLexer, ProgramContext, MySql
]);
protected get splitListener() {
return new mysqlSplitListener();
return new MysqlSplitListener();
}
protected processCandidates(
@ -123,14 +123,14 @@ export default class MySQL extends BasicParser<MySqlLexer, ProgramContext, MySql
}
}
export class mysqlSplitListener implements MySqlParserListener {
private _statementsContext: SqlStatementsContext[] = [];
export class MysqlSplitListener implements MySqlParserListener {
private _statementsContext: SingleStatementContext[] = [];
exitSqlStatements = (ctx: SqlStatementsContext) => {
exitSingleStatement = (ctx: SingleStatementContext) => {
this._statementsContext.push(ctx);
};
enterSqlStatements = (ctx: SqlStatementsContext) => {};
enterSingleStatement = (ctx: SingleStatementContext) => {};
get statementsContext() {
return this._statementsContext;

View File

@ -1,7 +1,7 @@
import { Token } from 'antlr4ts';
import { CandidatesCollection } from 'antlr4-c3';
import { PostgreSQLLexer } from '../lib/pgsql/PostgreSQLLexer';
import { PostgreSQLParser, ProgramContext, StmtContext } from '../lib/pgsql/PostgreSQLParser';
import { PostgreSQLParser, ProgramContext, SingleStmtContext } from '../lib/pgsql/PostgreSQLParser';
import BasicParser from './common/basicParser';
import { PostgreSQLParserListener } from '../lib/pgsql/PostgreSQLParserListener';
import { SyntaxContextType, Suggestions, SyntaxSuggestion } from './common/basic-parser-types';
@ -146,15 +146,15 @@ export default class PostgresSQL extends BasicParser<
}
export class PgSqlSplitListener implements PostgreSQLParserListener {
private _statementContext: ProgramContext[] = [];
private _statementsContext: SingleStmtContext[] = [];
enterProgram = (ctx: ProgramContext) => {
this._statementContext.push(ctx);
exitSingleStmt = (ctx: SingleStmtContext) => {
this._statementsContext.push(ctx);
};
exitProgram = (ctx: ProgramContext) => {};
enterSingleStmt = (ctx: SingleStmtContext) => {};
get statementsContext() {
return this._statementContext;
return this._statementsContext;
}
}

View File

@ -1,7 +1,11 @@
import { Token } from 'antlr4ts';
import { CandidatesCollection } from 'antlr4-c3';
import { TrinoSqlLexer } from '../lib/trinosql/TrinoSqlLexer';
import { TrinoSqlParser, ProgramContext, StatementContext } from '../lib/trinosql/TrinoSqlParser';
import {
TrinoSqlParser,
ProgramContext,
SingleStatementContext,
} from '../lib/trinosql/TrinoSqlParser';
import { TrinoSqlListener } from '../lib/trinosql/TrinoSqlListener';
import BasicParser from './common/basicParser';
import { Suggestions, SyntaxContextType, SyntaxSuggestion } from './common/basic-parser-types';
@ -125,9 +129,9 @@ export default class TrinoSQL extends BasicParser<TrinoSqlLexer, ProgramContext,
}
export class TrinoSqlSplitListener implements TrinoSqlListener {
private _statementsContext: StatementContext[] = [];
private _statementsContext: SingleStatementContext[] = [];
exitStatement = (ctx: StatementContext) => {
exitSingleStatement = (ctx: SingleStatementContext) => {
this._statementsContext.push(ctx);
};