public class MssqlSqlParser extends AbstractSqlParser
This parser handles SQL Server-specific SQL syntax including:
Design Notes:
AbstractSqlParser using the template method patternTLexerMssql for tokenizationTParserMssqlSql for parsingUsage Example:
// Get SQL Server parser from factory
SqlParser parser = SqlParserFactory.get(EDbVendor.dbvmssql);
// Build context
ParserContext context = new ParserContext.Builder(EDbVendor.dbvmssql)
.sqlText("SELECT * FROM Employees WHERE DepartmentID = 10")
.build();
// Parse
SqlParseResult result = parser.parse(context);
// Access statements
TStatementList statements = result.getSqlStatements();
SqlParser,
AbstractSqlParser,
TLexerMssql,
TParserMssqlSqlAbstractSqlParser.PreparedSqlReader| Modifier and Type | Field and Description |
|---|---|
TLexerMssql |
flexer
The SQL Server lexer used for tokenization
|
defaultDelimiterStr, delimiterChar, frameStack, globalContext, globalFrame, lexer, parserContext, sourcetokenlist, sqlcmds, sqlEnv, sqlstatements, syntaxErrors, vendor| Constructor and Description |
|---|
MssqlSqlParser()
Construct SQL Server SQL parser.
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
extractVendorRawStatements(SqlParseResult.Builder builder)
Call MSSQL-specific raw statement extraction logic.
|
protected TCustomLexer |
getLexer(ParserContext context)
Return the SQL Server lexer instance.
|
protected TCustomParser |
getParser(ParserContext context,
TSourceTokenList tokens)
Return the SQL Server SQL parser instance with updated token list.
|
protected void |
performInterpreter(ParserContext context,
TStatementList statements)
Perform interpretation/evaluation on parsed statements.
|
protected TStatementList |
performParsing(ParserContext context,
TCustomParser parser,
TCustomParser secondaryParser,
TSourceTokenList tokens,
TStatementList rawStatements)
Perform full parsing of statements with syntax checking.
|
protected void |
performSemanticAnalysis(ParserContext context,
TStatementList statements)
Perform SQL Server-specific semantic analysis.
|
protected void |
setupVendorParsersForExtraction()
Setup MSSQL parser for raw statement extraction.
|
protected void |
tokenizeVendorSql()
Call MSSQL-specific tokenization logic.
|
afterStatementParsed, attemptErrorRecovery, copyErrorsFromStatement, doAfterTokenize, doExtractRawStatements, extractRawStatements, getanewsourcetoken, getDefaultDelimiterStr, getDelimiterChar, getErrorCount, getrawsqlstatements, getSecondaryParser, getSyntaxErrors, getVendor, handleStatementParsingException, initializeGlobalContext, isDollarFunctionDelimiter, onRawStatementComplete, onRawStatementCompleteVendorSpecific, parse, performTokenization, prepareSqlReader, processTokensBeforeParse, processTokensInTokenTable, setTokenHandle, tokenize, toString, towinlinebreakpublic TLexerMssql flexer
public MssqlSqlParser()
Configures the parser for SQL Server database with default delimiter (;).
Following the original TGSqlParser pattern, the lexer and parser are created once in the constructor and reused for all parsing operations.
protected TCustomLexer getLexer(ParserContext context)
getLexer in class AbstractSqlParsercontext - the parser contextprotected TCustomParser getParser(ParserContext context, TSourceTokenList tokens)
getParser in class AbstractSqlParsercontext - the parser contexttokens - the source token listprotected void tokenizeVendorSql()
Delegates to domssqlsqltexttotokenlist which handles SQL Server's specific keyword recognition, bracket identifiers, and token generation.
tokenizeVendorSql in class AbstractSqlParserprotected void setupVendorParsersForExtraction()
MSSQL uses a single parser, so we inject sqlcmds and update the token list for the main parser only.
setupVendorParsersForExtraction in class AbstractSqlParserprotected void extractVendorRawStatements(SqlParseResult.Builder builder)
Delegates to domssqlgetrawsqlstatements which handles SQL Server's statement delimiters (semicolon and GO command).
extractVendorRawStatements in class AbstractSqlParserbuilder - the result builder to populate with raw statementsprotected TStatementList performParsing(ParserContext context, TCustomParser parser, TCustomParser secondaryParser, TSourceTokenList tokens, TStatementList rawStatements)
This method orchestrates the parsing of all statements.
performParsing in class AbstractSqlParsercontext - the parser contextparser - the main parser instancesecondaryParser - secondary parser (may be null)tokens - the source token listrawStatements - raw statements already extracted (never null)protected void performSemanticAnalysis(ParserContext context, TStatementList statements)
When called via delegation from TGSqlParser (context.getGsqlparser() != null), semantic analysis is skipped here and handled by TGSqlParser.doDelegatedParse() to ensure resolver2 is stored in TGSqlParser where tests expect to find it.
When called directly on MssqlSqlParser, uses TBaseType flags to determine which resolver to use:
performSemanticAnalysis in class AbstractSqlParsercontext - the parser contextstatements - the parsed statements (mutable)protected void performInterpreter(ParserContext context, TStatementList statements)
performInterpreter in class AbstractSqlParsercontext - the parser contextstatements - the parsed statements (mutable)