Search in sources :

Example 11 with Marker

use of io.debezium.text.TokenStream.Marker in project debezium by debezium.

the class DdlParserSql2003 method parseCreateTable.

protected void parseCreateTable(Marker start) {
    tokens.canConsumeAnyOf("GLOBAL", "LOCAL", "TEMPORARY");
    tokens.consume("TABLE");
    TableId tableId = parseQualifiedTableName(start);
    TableEditor table = databaseTables.editOrCreateTable(tableId);
    if (tokens.matches('(')) {
        // Is either a subquery clause preceded by column name list, or table element list...
        Marker tableContentStart = tokens.mark();
        try {
            parseAsSubqueryClause(start, table);
        } catch (ParsingException e) {
            tokens.rewind(tableContentStart);
            parseTableElementList(start, table);
        }
    } else if (tokens.canConsume("OF")) {
        // Read the qualified name ...
        parseSchemaQualifiedName(start);
        if (tokens.canConsume("UNDER")) {
            // parent table name ...
            parseSchemaQualifiedName(start);
        }
        if (tokens.matches('(')) {
            parseTableElementList(start, table);
        }
    } else if (tokens.canConsume("AS")) {
        parseAsSubqueryClause(start, table);
    }
    if (tokens.canConsume("ON", "COMMIT")) {
        tokens.canConsume("PRESERVE");
        tokens.canConsume("DELETE");
        tokens.consume("ROWS");
    }
    // Update the table definition ...
    databaseTables.overwriteTable(table.create());
    signalCreateTable(tableId, start);
}
Also used : TableId(io.debezium.relational.TableId) ParsingException(io.debezium.text.ParsingException) Marker(io.debezium.text.TokenStream.Marker) TableEditor(io.debezium.relational.TableEditor)

Aggregations

Marker (io.debezium.text.TokenStream.Marker)11 ParsingException (io.debezium.text.ParsingException)7 ArrayList (java.util.ArrayList)3 Column (io.debezium.relational.Column)2 Table (io.debezium.relational.Table)2 TableEditor (io.debezium.relational.TableEditor)2 TableId (io.debezium.relational.TableId)2 DataType (io.debezium.relational.ddl.DataType)1 DataTypePattern (io.debezium.relational.ddl.DataTypeGrammarParser.DataTypePattern)1 MultipleParsingExceptions (io.debezium.text.MultipleParsingExceptions)1 LinkedHashMap (java.util.LinkedHashMap)1 LinkedList (java.util.LinkedList)1 List (java.util.List)1 AtomicReference (java.util.concurrent.atomic.AtomicReference)1