Class MssqlSqlParser
- All Implemented Interfaces:
SqlParser
This parser handles SQL Server-specific SQL syntax including:
- T-SQL blocks (stored procedures, functions, triggers)
- BEGIN/END blocks
- TRY/CATCH error handling
- GO batch separator
- SQL Server-specific DML/DDL (MERGE, OPENROWSET, etc.)
- Special token handling (LOCK TABLE, COPY INTO, etc.)
Design Notes:
- Extends
AbstractSqlParserusing the template method pattern - Uses
TLexerMssqlfor tokenization - Uses
TParserMssqlSqlfor parsing - Delimiter character: ';' for SQL statements
Usage 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();
- Since:
- 3.2.0.0
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class gudusoft.gsqlparser.parser.AbstractSqlParser
AbstractSqlParser.PreparedSqlReader -
Field Summary
FieldsFields inherited from class gudusoft.gsqlparser.parser.AbstractSqlParser
defaultDelimiterStr, delimiterChar, frameStack, globalContext, globalFrame, lexer, parserContext, sourcetokenlist, sqlcmds, sqlEnv, sqlstatements, syntaxErrors, vendor -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidCall MSSQL-specific raw statement extraction logic.protected TCustomLexergetLexer(ParserContext context) Return the SQL Server lexer instance.protected TCustomParsergetParser(ParserContext context, TSourceTokenList tokens) Return the SQL Server SQL parser instance with updated token list.protected voidperformInterpreter(ParserContext context, TStatementList statements) Perform interpretation/evaluation on parsed statements.protected TStatementListperformParsing(ParserContext context, TCustomParser parser, TCustomParser secondaryParser, TSourceTokenList tokens, TStatementList rawStatements) Perform full parsing of statements with syntax checking.protected voidperformSemanticAnalysis(ParserContext context, TStatementList statements) Perform SQL Server-specific semantic analysis.protected voidSetup MSSQL parser for raw statement extraction.protected voidCall MSSQL-specific tokenization logic.Methods inherited from class gudusoft.gsqlparser.parser.AbstractSqlParser
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, towinlinebreak
-
Field Details
-
flexer
The SQL Server lexer used for tokenization
-
-
Constructor Details
-
MssqlSqlParser
public MssqlSqlParser()Construct SQL Server SQL parser.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.
-
-
Method Details
-
getLexer
Return the SQL Server lexer instance.- Specified by:
getLexerin classAbstractSqlParser- Parameters:
context- the parser context- Returns:
- configured lexer instance (never null)
-
getParser
Return the SQL Server SQL parser instance with updated token list.- Specified by:
getParserin classAbstractSqlParser- Parameters:
context- the parser contexttokens- the source token list- Returns:
- configured parser instance (never null)
-
tokenizeVendorSql
Call MSSQL-specific tokenization logic.Delegates to domssqlsqltexttotokenlist which handles SQL Server's specific keyword recognition, bracket identifiers, and token generation.
- Specified by:
tokenizeVendorSqlin classAbstractSqlParser
-
setupVendorParsersForExtraction
Setup MSSQL parser for raw statement extraction.MSSQL uses a single parser, so we inject sqlcmds and update the token list for the main parser only.
- Specified by:
setupVendorParsersForExtractionin classAbstractSqlParser
-
extractVendorRawStatements
Call MSSQL-specific raw statement extraction logic.Delegates to domssqlgetrawsqlstatements which handles SQL Server's statement delimiters (semicolon and GO command).
- Specified by:
extractVendorRawStatementsin classAbstractSqlParser- Parameters:
builder- the result builder to populate with raw statements
-
performParsing
protected TStatementList performParsing(ParserContext context, TCustomParser parser, TCustomParser secondaryParser, TSourceTokenList tokens, TStatementList rawStatements) Perform full parsing of statements with syntax checking.This method orchestrates the parsing of all statements.
- Specified by:
performParsingin classAbstractSqlParser- Parameters:
context- the parser contextparser- the main parser instancesecondaryParser- secondary parser (may be null)tokens- the source token listrawStatements- raw statements already extracted (never null)- Returns:
- statement list with parsed AST (never null)
-
performSemanticAnalysis
Perform SQL Server-specific semantic analysis.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:
- TBaseType.isEnableResolver2() -> use TSQLResolver2
- TBaseType.isEnableResolver() -> use TSQLResolver
- Overrides:
performSemanticAnalysisin classAbstractSqlParser- Parameters:
context- the parser contextstatements- the parsed statements (mutable)
-
performInterpreter
Perform interpretation/evaluation on parsed statements.- Overrides:
performInterpreterin classAbstractSqlParser- Parameters:
context- the parser contextstatements- the parsed statements (mutable)
-