Class CouchbaseSqlParser
- All Implemented Interfaces:
SqlParser
This parser handles Couchbase-specific SQL syntax including:
- N1QL queries (SELECT, INSERT, UPDATE, DELETE)
- Couchbase-specific functions and operators
- Document-oriented query features
Design Notes:
- Extends
AbstractSqlParser - Can directly instantiate:
TLexerCouchbase,TParserCouchbase - Uses single parser (no secondary parser)
- Uses PostgreSQL-style tokenization
- Delimiter character: ';' for SQL statements
Usage Example:
// Get Couchbase parser from factory
SqlParser parser = SqlParserFactory.get(EDbVendor.dbvcouchbase);
// Build context
ParserContext context = new ParserContext.Builder(EDbVendor.dbvcouchbase)
.sqlText("SELECT * FROM bucket WHERE type = 'user'")
.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
FieldsModifier and TypeFieldDescriptionThe Couchbase lexer used for tokenization - public for TGSqlParser compatibilityFields 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 Couchbase-specific raw statement extraction logic.protected TCustomLexergetLexer(ParserContext context) Return the Couchbase lexer instance.protected TCustomParsergetParser(ParserContext context, TSourceTokenList tokens) Return the Couchbase SQL parser instance with updated token list.protected TStatementListperformParsing(ParserContext context, TCustomParser parser, TCustomParser secondaryParser, TSourceTokenList tokens, TStatementList rawStatements) Perform full parsing of statements with syntax checking.protected voidSetup Couchbase parser for raw statement extraction.protected voidCall Couchbase-specific tokenization logic.toString()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, performInterpreter, performSemanticAnalysis, performTokenization, prepareSqlReader, processTokensBeforeParse, processTokensInTokenTable, setTokenHandle, tokenize, towinlinebreak
-
Field Details
-
flexer
The Couchbase lexer used for tokenization - public for TGSqlParser compatibility
-
-
Constructor Details
-
CouchbaseSqlParser
public CouchbaseSqlParser()Construct Couchbase SQL parser.Configures the parser for Couchbase database with default delimiter: semicolon (;)
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 Couchbase lexer instance.The lexer is created once in the constructor and reused for all parsing operations. This method simply returns the existing instance, matching the original TGSqlParser pattern where the lexer is created once and reset before each use.
- Specified by:
getLexerin classAbstractSqlParser- Parameters:
context- parser context (not used, lexer already created)- Returns:
- the Couchbase lexer instance created in constructor
-
getParser
Return the Couchbase SQL parser instance with updated token list.The parser is created once in the constructor and reused for all parsing operations. This method updates the token list and returns the existing instance, matching the original TGSqlParser pattern.
- Specified by:
getParserin classAbstractSqlParser- Parameters:
context- parser context (not used, parser already created)tokens- source token list to parse- Returns:
- the Couchbase SQL parser instance created in constructor
-
tokenizeVendorSql
Call Couchbase-specific tokenization logic.Couchbase uses PostgreSQL-style tokenization, so delegates to docouchbasesqltexttotokenlist which in turn calls dopostgresqltexttotokenlist.
- Specified by:
tokenizeVendorSqlin classAbstractSqlParser
-
setupVendorParsersForExtraction
Setup Couchbase parser for raw statement extraction.Couchbase uses a single parser, so we inject sqlcmds and update the token list for the main parser only.
- Specified by:
setupVendorParsersForExtractionin classAbstractSqlParser
-
extractVendorRawStatements
Call Couchbase-specific raw statement extraction logic.Delegates to docouchbasegetrawsqlstatements which handles Couchbase's statement delimiters and BEGIN/END block processing.
- 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.
Important: This method does NOT extract raw statements - they are passed in as a parameter already extracted by
AbstractSqlParser.extractRawStatements(gudusoft.gsqlparser.parser.ParserContext, gudusoft.gsqlparser.TSourceTokenList, gudusoft.gsqlparser.TCustomLexer, long).- Specified by:
performParsingin classAbstractSqlParser- Parameters:
context- parser contextparser- main SQL parser (TParserCouchbase)secondaryParser- not used for Couchbasetokens- source token listrawStatements- raw statements already extracted (never null)- Returns:
- list of fully parsed statements with AST built
-
toString
- Overrides:
toStringin classAbstractSqlParser
-