Class Parser


  • public class Parser
    extends java.lang.Object
    The parser is used to convert a SQL statement string to an command object.
    • Field Detail

      • WITH_STATEMENT_SUPPORTS_LIMITED_SUB_STATEMENTS

        private static final java.lang.String WITH_STATEMENT_SUPPORTS_LIMITED_SUB_STATEMENTS
        See Also:
        Constant Field Values
      • database

        private final Database database
      • nonKeywords

        private final java.util.BitSet nonKeywords
      • tokens

        java.util.ArrayList<Token> tokens
      • tokenIndex

        int tokenIndex
      • currentTokenType

        private int currentTokenType
      • currentToken

        private java.lang.String currentToken
      • sqlCommand

        private java.lang.String sqlCommand
      • currentPrepared

        private Prepared currentPrepared
      • currentSelect

        private Select currentSelect
      • cteCleanups

        private java.util.List<TableView> cteCleanups
      • parameters

        private java.util.ArrayList<Parameter> parameters
      • suppliedParameters

        private java.util.ArrayList<Parameter> suppliedParameters
      • schemaName

        private java.lang.String schemaName
      • expectedList

        private java.util.ArrayList<java.lang.String> expectedList
      • rightsChecked

        private boolean rightsChecked
      • recompileAlways

        private boolean recompileAlways
      • literalsChecked

        private boolean literalsChecked
      • orderInFrom

        private int orderInFrom
      • parseDomainConstraint

        private boolean parseDomainConstraint
    • Constructor Detail

      • Parser

        public Parser​(SessionLocal session)
        Creates a new instance of parser.
        Parameters:
        session - the session
      • Parser

        public Parser()
        Creates a new instance of parser for special use cases.
    • Method Detail

      • parseNonKeywords

        public static java.util.BitSet parseNonKeywords​(java.lang.String[] nonKeywords)
        Parses the specified collection of non-keywords.
        Parameters:
        nonKeywords - array of non-keywords in upper case
        Returns:
        bit set of non-keywords, or null
      • formatNonKeywords

        public static java.lang.String formatNonKeywords​(java.util.BitSet nonKeywords)
        Formats a comma-separated list of keywords.
        Parameters:
        nonKeywords - bit set of non-keywords, or null
        Returns:
        comma-separated list of non-keywords
      • prepare

        public Prepared prepare​(java.lang.String sql)
        Parse the statement and prepare it for execution.
        Parameters:
        sql - the SQL statement to parse
        Returns:
        the prepared object
      • prepareCommand

        public Command prepareCommand​(java.lang.String sql)
        Parse a statement or a list of statements, and prepare it for execution.
        Parameters:
        sql - the SQL statement to parse
        Returns:
        the command object
      • prepareCommandList

        private CommandList prepareCommandList​(CommandContainer command,
                                               Prepared p,
                                               java.lang.String sql,
                                               java.lang.String remainingSql,
                                               java.util.ArrayList<Token> remainingTokens)
      • getRemainingTokens

        private java.util.ArrayList<Token> getRemainingTokens​(int offset)
      • parse

        Prepared parse​(java.lang.String sql,
                       java.util.ArrayList<Token> tokens)
        Parse the statement, but don't prepare it for execution.
        Parameters:
        sql - the SQL statement to parse
        tokens - tokens, or null
        Returns:
        the prepared object
      • parse

        private Prepared parse​(java.lang.String sql,
                               boolean withExpectedList)
      • parsePrepared

        private Prepared parsePrepared()
      • getSyntaxError

        private DbException getSyntaxError()
      • parseBackup

        private Prepared parseBackup()
      • parseAnalyze

        private Prepared parseAnalyze()
      • parsePrepare

        private Prepared parsePrepare()
      • parsePrepareProcedure

        private Prepared parsePrepareProcedure()
      • parseReleaseSavepoint

        private Prepared parseReleaseSavepoint()
      • findSchema

        private Schema findSchema​(java.lang.String schemaName)
      • getSchema

        private Schema getSchema​(java.lang.String schemaName)
      • getSchema

        private Schema getSchema()
      • getSchemaWithDefault

        private Schema getSchemaWithDefault()
      • readTableColumn

        private java.lang.String readTableColumn​(TableFilter filter,
                                                 java.lang.String tableAlias)
      • parseUpdate

        private Update parseUpdate​(int start)
      • readSimpleTableFilter

        private TableFilter readSimpleTableFilter()
      • parseDelete

        private Delete parseDelete​(int start)
      • readFetchOrLimit

        private Expression readFetchOrLimit()
      • parseIndexColumnList

        private IndexColumn[] parseIndexColumnList()
      • parseSortType

        private int parseSortType()
      • parseColumnList

        private java.lang.String[] parseColumnList()
      • parseColumnList

        private Column[] parseColumnList​(Table table)
      • parseColumn

        private Column parseColumn​(Table table)
      • readIfMore

        private boolean readIfMore()
        Read comma or closing brace.
        Returns:
        true if comma is read, false if brace is read
      • parseHelp

        private Prepared parseHelp()
      • parseShow

        private Prepared parseShow()
      • prepare

        private static Prepared prepare​(SessionLocal s,
                                        java.lang.String sql,
                                        java.util.ArrayList<Value> paramValues)
      • isDerivedTable

        private boolean isDerivedTable()
      • isQuery

        private boolean isQuery()
      • scanToCloseParen

        private int scanToCloseParen​(int offset)
      • isQueryQuick

        private boolean isQueryQuick()
      • isDirectQuery

        private boolean isDirectQuery​(int offset)
      • parseMerge

        private Prepared parseMerge​(int start)
      • parseMergeInto

        private Prepared parseMergeInto​(TableFilter targetTableFilter,
                                        int start)
      • parseWhenMatched

        private void parseWhenMatched​(MergeUsing command)
      • parseWhenNotMatched

        private void parseWhenNotMatched​(MergeUsing command)
      • parseInsert

        private Insert parseInsert​(int start)
      • readIfOverriding

        private java.lang.Boolean readIfOverriding()
      • parseInsertSet

        private void parseInsertSet​(Insert command,
                                    Table table,
                                    Column[] columns)
      • parseInsertCompatibility

        private void parseInsertCompatibility​(Insert command,
                                              Table table,
                                              Mode mode)
      • parseReplace

        private Merge parseReplace​(int start)
        MySQL compatibility. REPLACE is similar to MERGE.
      • parseValuesForCommand

        private void parseValuesForCommand​(CommandWithValues command)
      • readTablePrimary

        private TableFilter readTablePrimary()
      • readDerivedTableWithCorrelation

        private TableFilter readDerivedTableWithCorrelation()
      • buildTableFilter

        private TableFilter buildTableFilter​(Table table,
                                             java.lang.String alias,
                                             java.util.ArrayList<java.lang.String> derivedColumnNames,
                                             IndexHints indexHints)
      • readDataChangeDeltaTable

        private Table readDataChangeDeltaTable​(java.lang.String resultOptionName,
                                               int backupIndex)
      • readTableFunction

        private TableFunction readTableFunction​(java.lang.String name,
                                                Schema schema)
      • readIfUseIndex

        private boolean readIfUseIndex()
      • readFromAlias

        private java.lang.String readFromAlias​(java.lang.String alias)
      • readDerivedColumnNames

        private java.util.ArrayList<java.lang.String> readDerivedColumnNames()
      • discardWithTableHints

        private void discardWithTableHints()
      • discardTableHint

        private void discardTableHint()
      • parseTruncate

        private Prepared parseTruncate()
      • readIfExists

        private boolean readIfExists​(boolean ifExists)
      • parseComment

        private Prepared parseComment()
      • parseDrop

        private Prepared parseDrop()
      • parseDropDomain

        private DropDomain parseDropDomain()
      • parseDropAggregate

        private DropAggregate parseDropAggregate()
      • readTableReference

        private TableFilter readTableReference()
      • parseExecutePostgre

        private Prepared parseExecutePostgre()
      • parseExecuteSQLServer

        private Prepared parseExecuteSQLServer()
      • getFunctionAliasWithinPath

        private FunctionAlias getFunctionAliasWithinPath​(java.lang.String name,
                                                         Schema schema)
      • parseExplain

        private Explain parseExplain()
      • parseQuery

        private Query parseQuery()
      • parseWithStatementOrQuery

        private Prepared parseWithStatementOrQuery​(int start)
      • parseQueryExpression

        private Query parseQueryExpression()
      • parseQueryExpressionBodyAndEndOfQuery

        private Query parseQueryExpressionBodyAndEndOfQuery()
      • parseQueryExpressionBody

        private Query parseQueryExpressionBody()
      • parseQueryTerm

        private Query parseQueryTerm()
      • parseEndOfQuery

        private void parseEndOfQuery​(Query command)
      • parseIsolationClause

        private void parseIsolationClause()
        DB2 isolation clause
      • parseQueryPrimary

        private Query parseQueryPrimary()
      • parseSelectFromPart

        private void parseSelectFromPart​(Select command)
      • parseSelectExpressions

        private void parseSelectExpressions​(Select command)
      • parseSelect

        private Select parseSelect​(int start)
      • isOrdinaryGroupingSet

        private boolean isOrdinaryGroupingSet()
        Checks whether current opening parenthesis can be a start of ordinary grouping set. This method reads this parenthesis if it is.
        Returns:
        whether current opening parenthesis can be a start of ordinary grouping set
      • parseExplicitTable

        private Query parseExplicitTable​(int start)
      • setSQL

        private void setSQL​(Prepared command,
                            int start)
      • readExpressionOrDefault

        private Expression readExpressionOrDefault()
      • readExpressionWithGlobalConditions

        private Expression readExpressionWithGlobalConditions()
      • readExpression

        private Expression readExpression()
      • readCondition

        private Expression readCondition()
      • readConditionRightHandSide

        private Expression readConditionRightHandSide​(Expression r,
                                                      boolean not,
                                                      boolean whenOperand)
      • readTypePredicate

        private TypePredicate readTypePredicate​(Expression left,
                                                boolean not,
                                                boolean whenOperand)
      • readInPredicate

        private Expression readInPredicate​(Expression left,
                                           boolean not,
                                           boolean whenOperand)
      • readComparison

        private Expression readComparison​(Expression left,
                                          int compareType,
                                          boolean whenOperand)
      • readAggregate

        private Expression readAggregate​(AggregateType aggregateType,
                                         java.lang.String aggregateName)
      • readWithinGroup

        private Aggregate readWithinGroup​(AggregateType aggregateType,
                                          Expression[] args,
                                          boolean distinct,
                                          java.lang.Object extraArguments,
                                          boolean forHypotheticalSet,
                                          boolean simple)
      • readAggregateOrder

        private void readAggregateOrder​(Aggregate r,
                                        Expression expr,
                                        boolean parseSortType)
      • readIfOrderBy

        private java.util.ArrayList<QueryOrderBy> readIfOrderBy()
      • parseSortSpecificationList

        private java.util.ArrayList<QueryOrderBy> parseSortSpecificationList()
      • parseSortSpecification

        private QueryOrderBy parseSortSpecification()
      • readUserDefinedFunctionIf

        private Expression readUserDefinedFunctionIf​(Schema schema,
                                                     java.lang.String functionName)
      • readDistinctAgg

        private boolean readDistinctAgg()
      • readFilterAndOver

        private void readFilterAndOver​(AbstractAggregate aggregate)
      • readWindowNameOrSpecification

        private Window readWindowNameOrSpecification()
      • readWindowSpecification

        private Window readWindowSpecification()
      • readWindowFrame

        private WindowFrame readWindowFrame()
      • readFunction

        private Expression readFunction​(Schema schema,
                                        java.lang.String name)
      • readFunctionWithSchema

        private Expression readFunctionWithSchema​(Schema schema,
                                                  java.lang.String name,
                                                  java.lang.String upperName)
      • readCompatibilityFunction

        private Expression readCompatibilityFunction​(java.lang.String name)
      • readCompatibilitySequenceValueFunction

        private Expression readCompatibilitySequenceValueFunction​(boolean current)
      • readBuiltinFunctionIf

        private Expression readBuiltinFunctionIf​(java.lang.String upperName)
      • readDateTimeFormatFunction

        private Expression readDateTimeFormatFunction​(int function)
      • readTrimFunction

        private Expression readTrimFunction()
      • readSingleArgument

        private Expression readSingleArgument()
      • readNextArgument

        private Expression readNextArgument()
      • readLastArgument

        private Expression readLastArgument()
      • readIfSingleArgument

        private Expression readIfSingleArgument()
      • readIfArgument

        private Expression readIfArgument()
      • readCoalesceFunction

        private Expression readCoalesceFunction​(int function)
      • readConcatFunction

        private Expression readConcatFunction​(int function)
      • readSubstringFunction

        private Expression readSubstringFunction()
      • readDateTimeField

        private int readDateTimeField()
      • readWindowFunction

        private WindowFunction readWindowFunction​(java.lang.String name)
      • readFromFirstOrLast

        private void readFromFirstOrLast​(WindowFunction function)
      • readRespectOrIgnoreNulls

        private void readRespectOrIgnoreNulls​(WindowFunction function)
      • readJsonObjectFunctionFlags

        private boolean readJsonObjectFunctionFlags​(ExpressionWithFlags function,
                                                    boolean forArray)
      • readKeywordCompatibilityFunctionOrColumn

        private Expression readKeywordCompatibilityFunctionOrColumn()
      • readCurrentDateTimeValueFunction

        private Expression readCurrentDateTimeValueFunction​(int function,
                                                            boolean hasParen,
                                                            java.lang.String name)
      • readIfWildcardRowidOrSequencePseudoColumn

        private Expression readIfWildcardRowidOrSequencePseudoColumn​(java.lang.String schema,
                                                                     java.lang.String objectName)
      • parseWildcard

        private Wildcard parseWildcard​(java.lang.String schema,
                                       java.lang.String objectName)
      • readIfSequencePseudoColumn

        private SequenceValue readIfSequencePseudoColumn​(java.lang.String schema,
                                                         java.lang.String objectName)
      • readTermObjectDot

        private Expression readTermObjectDot​(java.lang.String objectName)
      • checkDatabaseName

        private void checkDatabaseName​(java.lang.String databaseName)
      • readParameter

        private Parameter readParameter()
      • readCurrentGeneralValueSpecification

        private Expression readCurrentGeneralValueSpecification​(int specification)
      • readColumnIfNotFunction

        private Expression readColumnIfNotFunction()
      • readSetFunction

        private Expression readSetFunction()
      • readOnDuplicateKeyValues

        private Expression readOnDuplicateKeyValues​(Table table,
                                                    Update update)
      • readTermWithIdentifier

        private Expression readTermWithIdentifier​(java.lang.String name,
                                                  boolean quoted)
      • getCurrentPrepared

        private Prepared getCurrentPrepared()
      • readInterval

        private Expression readInterval()
      • parseDB2SpecialRegisters

        private Expression parseDB2SpecialRegisters​(java.lang.String name)
      • readNonNegativeInt

        private int readNonNegativeInt()
      • readInt

        private int readInt()
      • readPositiveLong

        private long readPositiveLong()
      • readLong

        private long readLong()
      • readBooleanSetting

        private boolean readBooleanSetting()
      • readString

        private java.lang.String readString()
      • readIdentifierWithSchema

        private java.lang.String readIdentifierWithSchema​(java.lang.String defaultSchemaName)
      • readIdentifierWithSchema2

        private java.lang.String readIdentifierWithSchema2​(java.lang.String s)
      • readIdentifierWithSchema

        private java.lang.String readIdentifierWithSchema()
      • readIdentifier

        private java.lang.String readIdentifier()
      • read

        private void read​(java.lang.String expected)
      • read

        private void read​(int tokenType)
      • readIf

        private boolean readIf​(java.lang.String tokenName)
      • readIf

        private boolean readIf​(int tokenType)
      • isToken

        private boolean isToken​(java.lang.String tokenName)
      • isToken

        private boolean isToken​(int tokenType)
      • equalsToken

        private boolean equalsToken​(java.lang.String a,
                                    java.lang.String b)
      • isIdentifier

        private boolean isIdentifier()
      • addExpected

        private void addExpected​(java.lang.String token)
      • addExpected

        private void addExpected​(int tokenType)
      • addMultipleExpected

        private void addMultipleExpected​(int... tokenTypes)
      • read

        private void read()
      • checkLiterals

        private void checkLiterals()
      • initialize

        private void initialize​(java.lang.String sql,
                                java.util.ArrayList<Token> tokens,
                                boolean stopOnCloseParen)
      • resetTokenIndex

        private void resetTokenIndex()
      • setTokenIndex

        void setTokenIndex​(int index)
      • isKeyword

        private static boolean isKeyword​(int tokenType)
      • isKeyword

        private boolean isKeyword​(java.lang.String s)
      • upperName

        private java.lang.String upperName​(java.lang.String name)
      • parseColumnForTable

        private Column parseColumnForTable​(java.lang.String columnName,
                                           boolean defaultNullable)
      • parseCompatibilityIdentityOptions

        private void parseCompatibilityIdentityOptions​(Column column)
      • readCommentIf

        private java.lang.String readCommentIf()
      • parseColumnWithType

        private Column parseColumnWithType​(java.lang.String columnName)
      • parseDataType

        private TypeInfo parseDataType()
      • readIfDataType

        private TypeInfo readIfDataType()
      • readIfDataType1

        private TypeInfo readIfDataType1()
      • getInvalidPrecisionException

        private static DbException getInvalidPrecisionException​(DataType dataType,
                                                                long precision)
      • getColumnWithDomain

        private static Column getColumnWithDomain​(java.lang.String columnName,
                                                  Domain domain)
      • parseFloatType

        private TypeInfo parseFloatType()
      • parseNumericType

        private TypeInfo parseNumericType​(boolean decimal)
      • parseDecfloatType

        private TypeInfo parseDecfloatType()
      • getInvalidNumericPrecisionException

        private static DbException getInvalidNumericPrecisionException​(long precision)
      • parseTimeType

        private TypeInfo parseTimeType()
      • parseTimestampType

        private TypeInfo parseTimestampType()
      • parseDateTimeType

        private TypeInfo parseDateTimeType​(boolean smallDateTime)
      • readIntervalQualifier

        private TypeInfo readIntervalQualifier()
      • intervalQualifierError

        private DbException intervalQualifierError()
      • intervalDayError

        private DbException intervalDayError()
      • intervalHourError

        private DbException intervalHourError()
      • parseEnumType

        private TypeInfo parseEnumType()
      • parseGeometryType

        private TypeInfo parseGeometryType()
      • parseRowType

        private TypeInfo parseRowType()
      • readPrecision

        private long readPrecision​(int valueType)
      • parseCreate

        private Prepared parseCreate()
      • addRoleOrRight

        private boolean addRoleOrRight​(GrantRevoke command)
        Returns:
        true if we expect to see a TABLE clause
      • parseGrantRevoke

        private GrantRevoke parseGrantRevoke​(int operationType)
      • parseValuesRow

        private java.util.ArrayList<Expression> parseValuesRow​(java.util.ArrayList<Expression> row)
      • parseCall

        private Call parseCall()
      • parseCreateRole

        private CreateRole parseCreateRole()
      • parseCreateSchema

        private CreateSchema parseCreateSchema()
      • readTableEngineParams

        private java.util.ArrayList<java.lang.String> readTableEngineParams()
      • readIfNotExists

        private boolean readIfNotExists()
      • parseCreateAggregate

        private CreateAggregate parseCreateAggregate​(boolean force)
      • parseCreateDomain

        private CreateDomain parseCreateDomain()
      • parseCreateTrigger

        private CreateTrigger parseCreateTrigger​(boolean force)
      • parseCreateUser

        private CreateUser parseCreateUser()
      • parseCreateFunctionAlias

        private CreateFunctionAlias parseCreateFunctionAlias​(boolean force)
      • readStringOrIdentifier

        private java.lang.String readStringOrIdentifier()
      • isReservedFunctionName

        private boolean isReservedFunctionName​(java.lang.String name)
      • parseWith

        private Prepared parseWith()
      • parseWith1

        private Prepared parseWith1​(java.util.List<TableView> viewsCreated)
      • parseWithQuery

        private Prepared parseWithQuery()
      • parseSingleCommonTableExpression

        private TableView parseSingleCommonTableExpression​(boolean isTemporary)
      • createCTEView

        private TableView createCTEView​(java.lang.String cteViewName,
                                        java.lang.String querySQL,
                                        java.util.List<Column> columnTemplateList,
                                        boolean allowRecursiveQueryDetection,
                                        boolean addViewToSession,
                                        boolean isTemporary)
      • parseCreateView

        private CreateView parseCreateView​(boolean force,
                                           boolean orReplace)
      • parseAlter

        private Prepared parseAlter()
      • checkSchema

        private void checkSchema​(Schema old)
      • parseAlterSchema

        private Prepared parseAlterSchema()
      • parseAlterSequence

        private AlterSequence parseAlterSequence()
      • parseSequenceOptions

        private boolean parseSequenceOptions​(SequenceOptions options,
                                             CreateSequence command,
                                             boolean allowDataType,
                                             boolean forAlterColumn)
      • parseCreateSequenceOption

        private boolean parseCreateSequenceOption​(CreateSequence command)
      • parseBasicSequenceOption

        private boolean parseBasicSequenceOption​(SequenceOptions options)
      • parseAlterUser

        private AlterUser parseAlterUser()
      • readIfEqualOrTo

        private void readIfEqualOrTo()
      • parseSet

        private Prepared parseSet()
      • parseSetTransactionMode

        private Prepared parseSetTransactionMode()
      • readExpressionOrIdentifier

        private Expression readExpressionOrIdentifier()
      • parseUse

        private Prepared parseUse()
      • parseSetCollation

        private Set parseSetCollation()
      • isDualTable

        private boolean isDualTable​(java.lang.String tableName)
        Is this the Oracle DUAL table or the IBM/DB2 SYSIBM table?
        Parameters:
        tableName - table name.
        Returns:
        true if the table is DUAL special table. Otherwise returns false.
        See Also:
        Wikipedia: DUAL table
      • readTableOrView

        private Table readTableOrView()
      • readTableOrView

        private Table readTableOrView​(java.lang.String tableName)
      • getTableOrViewNotFoundDbException

        private DbException getTableOrViewNotFoundDbException​(java.lang.String tableName)
      • getTableOrViewNotFoundDbException

        private DbException getTableOrViewNotFoundDbException​(java.lang.String schemaName,
                                                              java.lang.String tableName)
      • getTableOrViewNotFoundDbException

        private DbException getTableOrViewNotFoundDbException​(java.util.Set<java.lang.String> schemaNames,
                                                              java.lang.String tableName)
      • findTableNameCandidates

        private void findTableNameCandidates​(java.lang.String schemaName,
                                             java.lang.String tableName,
                                             java.util.Set<java.lang.String> candidates)
      • findUserDefinedFunctionWithinPath

        private UserDefinedFunction findUserDefinedFunctionWithinPath​(Schema schema,
                                                                      java.lang.String name)
      • findSequence

        private Sequence findSequence​(java.lang.String schema,
                                      java.lang.String sequenceName)
      • readSequence

        private Sequence readSequence()
      • parseAlterTable

        private Prepared parseAlterTable()
      • parseAlterTableAlter

        private Prepared parseAlterTableAlter​(Schema schema,
                                              java.lang.String tableName,
                                              boolean ifTableExists)
      • getAlterTableAlterColumnDropDefaultExpression

        private Prepared getAlterTableAlterColumnDropDefaultExpression​(Schema schema,
                                                                       java.lang.String tableName,
                                                                       boolean ifTableExists,
                                                                       Column column,
                                                                       int type)
      • parseAlterTableAlterColumnIdentity

        private Prepared parseAlterTableAlterColumnIdentity​(Schema schema,
                                                            java.lang.String tableName,
                                                            boolean ifTableExists,
                                                            Column column)
      • parseAlterTableAlterColumnSet

        private Prepared parseAlterTableAlterColumnSet​(Schema schema,
                                                       java.lang.String tableName,
                                                       boolean ifTableExists,
                                                       boolean ifExists,
                                                       java.lang.String columnName,
                                                       Column column)
      • parseAlterTableDrop

        private Prepared parseAlterTableDrop​(Schema schema,
                                             java.lang.String tableName,
                                             boolean ifTableExists)
      • parseAlterTableDropCompatibility

        private Prepared parseAlterTableDropCompatibility​(Schema schema,
                                                          java.lang.String tableName,
                                                          boolean ifTableExists)
      • parseAlterTableRename

        private Prepared parseAlterTableRename​(Schema schema,
                                               java.lang.String tableName,
                                               boolean ifTableExists)
      • parseAlterTableSet

        private Prepared parseAlterTableSet​(Schema schema,
                                            java.lang.String tableName,
                                            boolean ifTableExists)
      • parseAlterTableCompatibility

        private Prepared parseAlterTableCompatibility​(Schema schema,
                                                      java.lang.String tableName,
                                                      boolean ifTableExists,
                                                      Mode mode)
      • tableIfTableExists

        private Table tableIfTableExists​(Schema schema,
                                         java.lang.String tableName,
                                         boolean ifTableExists)
      • columnIfTableExists

        private Column columnIfTableExists​(Schema schema,
                                           java.lang.String tableName,
                                           java.lang.String columnName,
                                           boolean ifTableExists,
                                           boolean ifExists)
      • commandIfTableExists

        private Prepared commandIfTableExists​(Schema schema,
                                              java.lang.String tableName,
                                              boolean ifTableExists,
                                              Prepared commandIfTableExists)
      • parseAlterTableAlterColumnType

        private AlterTableAlterColumn parseAlterTableAlterColumnType​(Schema schema,
                                                                     java.lang.String tableName,
                                                                     java.lang.String columnName,
                                                                     boolean ifTableExists,
                                                                     boolean ifExists,
                                                                     boolean preserveNotNull)
      • parseAlterTableAlterColumnDataType

        private AlterTableAlterColumn parseAlterTableAlterColumnDataType​(Schema schema,
                                                                         java.lang.String tableName,
                                                                         java.lang.String columnName,
                                                                         boolean ifTableExists,
                                                                         boolean ifExists)
      • parseAlterTableAddColumn

        private AlterTableAlterColumn parseAlterTableAddColumn​(java.lang.String tableName,
                                                               Schema schema,
                                                               boolean ifTableExists)
      • parseTableConstraintIf

        private DefineCommand parseTableConstraintIf​(java.lang.String tableName,
                                                     Schema schema,
                                                     boolean ifTableExists)
      • parseCreateLinkedTable

        private CreateLinkedTable parseCreateLinkedTable​(boolean temp,
                                                         boolean globalTemp,
                                                         boolean force)
      • parseCreateTable

        private CreateTable parseCreateTable​(boolean temp,
                                             boolean globalTemp,
                                             boolean persistIndexes)
      • parseTableColumnDefinition

        private void parseTableColumnDefinition​(CommandWithColumns command,
                                                Schema schema,
                                                java.lang.String tableName,
                                                boolean forCreateTable)
      • newPrimaryKeyConstraintCommand

        public static AlterTableAddConstraint newPrimaryKeyConstraintCommand​(SessionLocal session,
                                                                             Schema schema,
                                                                             java.lang.String tableName,
                                                                             Column column)
        Create a new alter table command.
        Parameters:
        session - the session
        schema - the schema
        tableName - the table
        column - the column
        Returns:
        the command
      • readColumnConstraints

        private void readColumnConstraints​(CommandWithColumns command,
                                           Schema schema,
                                           java.lang.String tableName,
                                           Column column)
      • parseCompatibilityIdentity

        private boolean parseCompatibilityIdentity​(Column column,
                                                   Mode mode)
      • parseCreateTableMySQLTableOptions

        private void parseCreateTableMySQLTableOptions​(CreateTable command)
      • readMySQLCharset

        private void readMySQLCharset()
      • parseCreateSynonym

        private CreateSynonym parseCreateSynonym​(boolean orReplace)
      • getCompareType

        private static int getCompareType​(int tokenType)
      • quoteIdentifier

        public static java.lang.String quoteIdentifier​(java.lang.String s,
                                                       int sqlFlags)
        Add double quotes around an identifier if required.
        Parameters:
        s - the identifier
        sqlFlags - formatting flags
        Returns:
        the quoted identifier
      • setLiteralsChecked

        public void setLiteralsChecked​(boolean literalsChecked)
      • setRightsChecked

        public void setRightsChecked​(boolean rightsChecked)
      • setSuppliedParameters

        public void setSuppliedParameters​(java.util.ArrayList<Parameter> suppliedParameters)
      • parseExpression

        public Expression parseExpression​(java.lang.String sql)
        Parse a SQL code snippet that represents an expression.
        Parameters:
        sql - the code snippet
        Returns:
        the expression object
      • parseDomainConstraintExpression

        public Expression parseDomainConstraintExpression​(java.lang.String sql)
        Parse a SQL code snippet that represents an expression for a domain constraint.
        Parameters:
        sql - the code snippet
        Returns:
        the expression object
      • parseTableName

        public Table parseTableName​(java.lang.String sql)
        Parse a SQL code snippet that represents a table name.
        Parameters:
        sql - the code snippet
        Returns:
        the table object
      • parseColumnList

        public java.lang.Object parseColumnList​(java.lang.String sql,
                                                int offset)
        Parses a list of column names or numbers in parentheses.
        Parameters:
        sql - the source SQL
        offset - the initial offset
        Returns:
        the array of column names (String[]) or numbers (int[])
        Throws:
        DbException - on syntax error
      • getLastParseIndex

        public int getLastParseIndex()
        Returns the last parse index.
        Returns:
        the last parse index
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object