Class AbstractDdlParser

java.lang.Object
io.debezium.relational.ddl.AbstractDdlParser
All Implemented Interfaces:
DdlParser

public abstract class AbstractDdlParser extends Object implements DdlParser
Author:
Roman Kuchár <[email protected]>.
  • Field Details

    • skipViews

      protected final boolean skipViews
    • skipComments

      protected final boolean skipComments
    • ddlChanges

      protected DdlChanges ddlChanges
    • systemVariables

      protected SystemVariables systemVariables
    • logger

      protected final org.slf4j.Logger logger
    • currentSchema

      private String currentSchema
  • Constructor Details

    • AbstractDdlParser

      public AbstractDdlParser(boolean includeViews, boolean includeComments)
      Create a new parser.
      Parameters:
      includeViews - true if view definitions should be included, or false if they should be skipped
      includeComments - true if table and column's comment definitions should be included, or false if they should be skipped
  • Method Details

    • setCurrentSchema

      public void setCurrentSchema(String schemaName)
      Description copied from interface: DdlParser
      Set the name of the current schema.
      Specified by:
      setCurrentSchema in interface DdlParser
      Parameters:
      schemaName - the name of the current schema; may be null
    • setCurrentDatabase

      public void setCurrentDatabase(String databaseName)
      Specified by:
      setCurrentDatabase in interface DdlParser
    • getDdlChanges

      public DdlChanges getDdlChanges()
      Specified by:
      getDdlChanges in interface DdlParser
    • systemVariables

      public SystemVariables systemVariables()
      Specified by:
      systemVariables in interface DdlParser
    • createNewSystemVariablesInstance

      protected abstract SystemVariables createNewSystemVariablesInstance()
    • currentSchema

      public String currentSchema()
      Get the name of the current schema.
      Returns:
      the current schema name, or null if the current schema name has not been set
    • resolveTableId

      public TableId resolveTableId(String schemaName, String tableName)
      Create a TableId from the supplied schema and table names. By default, this method uses the supplied schema name as the TableId's catalog, which often matches the catalog name in JDBC database metadata.
      Parameters:
      schemaName - the name of the schema; may be null if not specified
      tableName - the name of the table; should not be null
      Returns:
      the table identifier; never null
    • skipComments

      protected boolean skipComments()
      Determine whether parsing should exclude comments from the token stream. By default, this method returns true.
      Returns:
      true if comments should be skipped/excluded, or false if they should not be skipped
    • signalChangeEvent

      protected void signalChangeEvent(DdlParserListener.Event event)
      Signal an event to ddl changes listener.
      Parameters:
      event - the event; may not be null
    • signalSetVariable

      protected void signalSetVariable(String variableName, String variableValue, int order, String statement)
    • signalUseDatabase

      protected void signalUseDatabase(String statement)
    • signalCreateDatabase

      protected void signalCreateDatabase(String databaseName, String statement)
      Signal a create database event to ddl changes listener.
      Parameters:
      databaseName - the database name; may not be null
      statement - the DDL statement; may not be null
    • signalAlterDatabase

      protected void signalAlterDatabase(String databaseName, String previousDatabaseName, String statement)
      Signal an alter database event to ddl changes listener.
      Parameters:
      databaseName - the database name; may not be null
      previousDatabaseName - the previous name of the database if it was renamed, or null if it was not renamed
      statement - the DDL statement; may not be null
    • signalDropDatabase

      protected void signalDropDatabase(String databaseName, String statement)
      Signal a drop database event to ddl changes listener.
      Parameters:
      databaseName - the database name; may not be null
      statement - the DDL statement; may not be null
    • signalCreateTable

      protected void signalCreateTable(TableId id, String statement)
      Signal a create table event to ddl changes listener.
      Parameters:
      id - the table identifier; may not be null
      statement - the DDL statement; may not be null
    • signalAlterTable

      protected void signalAlterTable(TableId id, TableId previousId, String statement)
      Signal an alter table event to ddl changes listener.
      Parameters:
      id - the table identifier; may not be null
      previousId - the previous name of the view if it was renamed, or null if it was not renamed
      statement - the DDL statement; may not be null
    • signalDropTable

      protected void signalDropTable(TableId id, String statement)
      Signal a drop table event to ddl changes listener.
      Parameters:
      id - the table identifier; may not be null
      statement - the statement; may not be null
    • signalTruncateTable

      protected void signalTruncateTable(TableId id, String statement)
      Signal a truncate table event to ddl changes listener.
      Parameters:
      id - the table identifier; may not be null
      statement - the statement; may not be null
    • signalCreateView

      protected void signalCreateView(TableId id, String statement)
      Signal a create view event to ddl changes listener.
      Parameters:
      id - the table identifier; may not be null
      statement - the DDL statement; may not be null
    • signalAlterView

      protected void signalAlterView(TableId id, TableId previousId, String statement)
      Signal an alter view event to ddl changes listener.
      Parameters:
      id - the table identifier; may not be null
      previousId - the previous name of the view if it was renamed, or null if it was not renamed
      statement - the DDL statement; may not be null
    • signalDropView

      protected void signalDropView(TableId id, String statement)
      Signal a drop view event to ddl changes listener.
      Parameters:
      id - the table identifier; may not be null
      statement - the statement; may not be null
    • signalCreateIndex

      protected void signalCreateIndex(String indexName, TableId id, String statement)
      Signal a create index event to ddl changes listener.
      Parameters:
      indexName - the name of the index; may not be null
      id - the table identifier; may be null if the index does not apply to a single table
      statement - the DDL statement; may not be null
    • signalDropIndex

      protected void signalDropIndex(String indexName, TableId id, String statement)
      Signal a drop index event to ddl changes listener.
      Parameters:
      indexName - the name of the index; may not be null
      id - the table identifier; may not be null
      statement - the DDL statement; may not be null
    • removeLineFeeds

      protected String removeLineFeeds(String input)
      Removes line feeds from input string.
      Parameters:
      input - input with possible line feeds
      Returns:
      input string without line feeds
    • withoutQuotes

      public static String withoutQuotes(String possiblyQuoted)
      Cut out the string surrounded with single, double and reversed quotes.
      Parameters:
      possiblyQuoted - string with possible quotes
      Returns:
      string without quotes
    • isQuoted

      public static boolean isQuoted(String possiblyQuoted)
      Check if the string is enclosed in quotes.
      Parameters:
      possiblyQuoted - string with possible quotes
      Returns:
      true if the string is quoted, false otherwise
    • isQuote

      public static boolean isQuote(char c)
      Check if the char is quote.
      Parameters:
      c - possible quote char
      Returns:
      true if the char is quote false otherwise
    • accumulateParsingFailure

      public static Collection<ParsingException> accumulateParsingFailure(ParsingException e, Collection<ParsingException> list)
      Utility method to accumulate a parsing exception.
      Parameters:
      e - the parsing exception
      list - the list of previous parsing exceptions; may be null
      Returns:
      the list of previous and current parsing exceptions; if e is null then always list, but otherwise non-null list
    • accumulateParsingFailure

      protected Collection<ParsingException> accumulateParsingFailure(MultipleParsingExceptions e, Collection<ParsingException> list)
      Utility method to accumulate a parsing exception.
      Parameters:
      e - the multiple parsing exceptions
      list - the list of previous parsing exceptions; may be null
      Returns:
      the list of previous and current parsing exceptions; if e is null then always list, but otherwise non-null list
    • createColumnFromConstant

      protected Column createColumnFromConstant(String columnName, String constantValue)
    • setTypeInfoForConstant

      protected void setTypeInfoForConstant(String constantValue, ColumnEditor column)
    • debugParsed

      protected void debugParsed(String statement)
    • debugSkipped

      protected void debugSkipped(String statement)
    • commentParsed

      protected void commentParsed(String comment)