Class MySqlAntlrDdlParser
- java.lang.Object
-
- io.debezium.relational.ddl.AbstractDdlParser
-
- io.debezium.antlr.AntlrDdlParser<MySqlLexer,MySqlParser>
-
- io.debezium.connector.mysql.antlr.MySqlAntlrDdlParser
-
- All Implemented Interfaces:
DdlParser
public class MySqlAntlrDdlParser extends AntlrDdlParser<MySqlLexer,MySqlParser>
An ANTLR based parser for MySQL DDL statements.- Author:
- Roman Kuchár
.
-
-
Field Summary
Fields Modifier and Type Field Description private ConcurrentMap<String,String>
charsetNameForDatabase
private MySqlValueConverters
converters
private Tables.TableFilter
tableFilter
-
Fields inherited from class io.debezium.antlr.AntlrDdlParser
databaseTables, dataTypeResolver
-
Fields inherited from class io.debezium.relational.ddl.AbstractDdlParser
ddlChanges, logger, skipComments, skipViews, systemVariables
-
-
Constructor Summary
Constructors Constructor Description MySqlAntlrDdlParser()
MySqlAntlrDdlParser(boolean throwErrorsFromTreeWalk, boolean includeViews, boolean includeComments, MySqlValueConverters converters, Tables.TableFilter tableFilter)
MySqlAntlrDdlParser(MySqlValueConverters converters)
MySqlAntlrDdlParser(MySqlValueConverters converters, Tables.TableFilter tableFilter)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description String
charsetForTable(TableId tableId)
Get the name of the character set for the give table name.ConcurrentMap<String,String>
charsetNameForDatabase()
Provides a map of default character sets by database/schema name.protected MySqlLexer
createNewLexerInstance(org.antlr.v4.runtime.CharStream charStreams)
protected MySqlParser
createNewParserInstance(org.antlr.v4.runtime.CommonTokenStream commonTokenStream)
protected SystemVariables
createNewSystemVariablesInstance()
protected AntlrDdlParserListener
createParseTreeWalkerListener()
String
currentDatabaseCharset()
Get the name of the character set for the current database, via the "character_set_database" system property.static String
escapeOption(String option)
String
extractCharset(MySqlParser.CharsetNameContext charsetNode, MySqlParser.CollationNameContext collationNode)
Obtains the charset name either form charset if present or from collation.static List<String>
extractEnumAndSetOptions(List<String> enumValues)
Extracts the enumeration values properly parsed and escaped.MySqlValueConverters
getConverters()
Tables.TableFilter
getTableFilter()
protected DataTypeResolver
initializeDataTypeResolver()
protected boolean
isGrammarInUpperCase()
String
parseName(MySqlParser.UidContext uidContext)
Parse a name fromMySqlParser.UidContext
.void
parsePrimaryIndexColumnNames(MySqlParser.IndexColumnNamesContext indexColumnNamesContext, TableEditor tableEditor)
Parse column names for primary index fromMySqlParser.IndexColumnNamesContext
.TableId
parseQualifiedTableId(MySqlParser.FullIdContext fullIdContext)
Parse qualified table identification fromMySqlParser.FullIdContext
.protected org.antlr.v4.runtime.tree.ParseTree
parseTree(MySqlParser parser)
void
runIfNotNull(Runnable function, Object... nullableObjects)
Runs a function if all given object are not null.-
Methods inherited from class io.debezium.antlr.AntlrDdlParser
databaseTables, dataTypeResolver, debugParsed, debugSkipped, getParsingExceptionsFromWalker, getText, getText, parse, signalAlterDatabase, signalAlterTable, signalAlterTable, signalAlterView, signalCreateDatabase, signalCreateIndex, signalCreateTable, signalCreateView, signalDropDatabase, signalDropIndex, signalDropTable, signalDropTable, signalDropView, signalSetVariable, signalTruncateTable, signalUseDatabase, skipComments, skipViews, withoutQuotes
-
Methods inherited from class io.debezium.relational.ddl.AbstractDdlParser
accumulateParsingFailure, accumulateParsingFailure, commentParsed, createColumnFromConstant, currentSchema, debugParsed, debugSkipped, getDdlChanges, isQuote, isQuoted, removeLineFeeds, resolveTableId, setCurrentDatabase, setCurrentSchema, setTypeInfoForConstant, signalAlterDatabase, signalAlterTable, signalAlterView, signalChangeEvent, signalCreateDatabase, signalCreateIndex, signalCreateTable, signalCreateView, signalDropDatabase, signalDropIndex, signalDropView, signalSetVariable, signalTruncateTable, signalUseDatabase, systemVariables, terminator, withoutQuotes
-
-
-
-
Field Detail
-
charsetNameForDatabase
private final ConcurrentMap<String,String> charsetNameForDatabase
-
converters
private final MySqlValueConverters converters
-
tableFilter
private final Tables.TableFilter tableFilter
-
-
Constructor Detail
-
MySqlAntlrDdlParser
public MySqlAntlrDdlParser()
-
MySqlAntlrDdlParser
public MySqlAntlrDdlParser(MySqlValueConverters converters)
-
MySqlAntlrDdlParser
public MySqlAntlrDdlParser(MySqlValueConverters converters, Tables.TableFilter tableFilter)
-
MySqlAntlrDdlParser
public MySqlAntlrDdlParser(boolean throwErrorsFromTreeWalk, boolean includeViews, boolean includeComments, MySqlValueConverters converters, Tables.TableFilter tableFilter)
-
-
Method Detail
-
parseTree
protected org.antlr.v4.runtime.tree.ParseTree parseTree(MySqlParser parser)
- Specified by:
parseTree
in classAntlrDdlParser<MySqlLexer,MySqlParser>
-
createParseTreeWalkerListener
protected AntlrDdlParserListener createParseTreeWalkerListener()
- Specified by:
createParseTreeWalkerListener
in classAntlrDdlParser<MySqlLexer,MySqlParser>
-
createNewLexerInstance
protected MySqlLexer createNewLexerInstance(org.antlr.v4.runtime.CharStream charStreams)
- Specified by:
createNewLexerInstance
in classAntlrDdlParser<MySqlLexer,MySqlParser>
-
createNewParserInstance
protected MySqlParser createNewParserInstance(org.antlr.v4.runtime.CommonTokenStream commonTokenStream)
- Specified by:
createNewParserInstance
in classAntlrDdlParser<MySqlLexer,MySqlParser>
-
createNewSystemVariablesInstance
protected SystemVariables createNewSystemVariablesInstance()
- Specified by:
createNewSystemVariablesInstance
in classAbstractDdlParser
-
isGrammarInUpperCase
protected boolean isGrammarInUpperCase()
- Specified by:
isGrammarInUpperCase
in classAntlrDdlParser<MySqlLexer,MySqlParser>
-
initializeDataTypeResolver
protected DataTypeResolver initializeDataTypeResolver()
- Specified by:
initializeDataTypeResolver
in classAntlrDdlParser<MySqlLexer,MySqlParser>
-
charsetNameForDatabase
public ConcurrentMap<String,String> charsetNameForDatabase()
Provides a map of default character sets by database/schema name.- Returns:
- map of default character sets.
-
parseName
public String parseName(MySqlParser.UidContext uidContext)
Parse a name fromMySqlParser.UidContext
.- Parameters:
uidContext
- uid context- Returns:
- name without quotes.
-
parseQualifiedTableId
public TableId parseQualifiedTableId(MySqlParser.FullIdContext fullIdContext)
Parse qualified table identification fromMySqlParser.FullIdContext
.AbstractDdlParser.currentSchema()
will be used if definition of schema name is not part of the context.- Parameters:
fullIdContext
- full id context.- Returns:
- qualified
TableId
.
-
parsePrimaryIndexColumnNames
public void parsePrimaryIndexColumnNames(MySqlParser.IndexColumnNamesContext indexColumnNamesContext, TableEditor tableEditor)
Parse column names for primary index fromMySqlParser.IndexColumnNamesContext
. This method will updates column to be not optional and set primary key column names to table.- Parameters:
indexColumnNamesContext
- primary key index column names context.tableEditor
- editor for table where primary key index is parsed.
-
currentDatabaseCharset
public String currentDatabaseCharset()
Get the name of the character set for the current database, via the "character_set_database" system property.- Returns:
- the name of the character set for the current database, or null if not known ...
-
charsetForTable
public String charsetForTable(TableId tableId)
Get the name of the character set for the give table name.- Returns:
- the name of the character set for the given table, or null if not known ...
-
runIfNotNull
public void runIfNotNull(Runnable function, Object... nullableObjects)
Runs a function if all given object are not null.- Parameters:
function
- function to run; may not be nullnullableObjects
- object to be tested, if they are null.
-
extractEnumAndSetOptions
public static List<String> extractEnumAndSetOptions(List<String> enumValues)
Extracts the enumeration values properly parsed and escaped.- Parameters:
enumValues
- the raw enumeration values from the parsed column definition- Returns:
- the list of options allowed for the
ENUM
orSET
; never null.
-
getConverters
public MySqlValueConverters getConverters()
-
getTableFilter
public Tables.TableFilter getTableFilter()
-
extractCharset
public String extractCharset(MySqlParser.CharsetNameContext charsetNode, MySqlParser.CollationNameContext collationNode)
Obtains the charset name either form charset if present or from collation.- Parameters:
charsetNode
-collationNode
-- Returns:
- character set
-
-