DBZ-252 resolve todos
This commit is contained in:
parent
c3b65ac2c3
commit
b8191963f7
@ -964,12 +964,11 @@ public static DdlParsingMode parse(String value, String defaultValue) {
|
||||
.withEnum(DdlParsingMode.class, DdlParsingMode.LEGACY)
|
||||
.withWidth(Width.SHORT)
|
||||
.withImportance(Importance.MEDIUM)
|
||||
// TODO rkuchar: change description
|
||||
.withDescription("Time, date, and timestamps can be represented with different kinds of precisions, including:"
|
||||
+ "'adaptive_time_microseconds' (the default) like 'adaptive' mode, but TIME fields always use microseconds precision;"
|
||||
+ "'adaptive' (deprecated) bases the precision of time, date, and timestamp values on the database column's precision; "
|
||||
+ "'connect' always represents time, date, and timestamp values using Kafka Connect's built-in representations for Time, Date, and Timestamp, "
|
||||
+ "which uses millisecond precision regardless of the database columns' precision.");
|
||||
.withDescription("MySQL ddl statements can be parsed in different ways:" +
|
||||
"'legacy' (the default) parsing is creating a TokenStream and comparing token by token with an expected values." +
|
||||
"The decisions are made by matched token values." +
|
||||
"'antlr' uses generated parser from MySQL grammar using ANTLR v4 tool which use ALL(*) algorithm for parsing." +
|
||||
"This parser creates a parsing tree for DDL statement, then walks trough it and apply changes by node types in parsed tree.");
|
||||
|
||||
/**
|
||||
* Method that generates a Field for specifying that string columns whose names match a set of regular expressions should
|
||||
|
@ -35,6 +35,7 @@ public void enterCreateIndex(MySqlParser.CreateIndexContext ctx) {
|
||||
if (tableEditor != null) {
|
||||
if (!tableEditor.hasPrimaryKey()) {
|
||||
parserCtx.parsePrimaryIndexColumnNames(ctx.indexColumnNames(), tableEditor);
|
||||
parserCtx.signalCreateIndex(parserCtx.parseName(ctx.uid()), null, ctx);
|
||||
}
|
||||
}
|
||||
else {
|
||||
@ -42,8 +43,6 @@ public void enterCreateIndex(MySqlParser.CreateIndexContext ctx) {
|
||||
+ "Query: " + getText(ctx));
|
||||
}
|
||||
}
|
||||
// TODO rkuchar fixed together with MySql legacy parser bug.
|
||||
parserCtx.signalAlterTable(null, null, ctx);
|
||||
super.enterCreateIndex(ctx);
|
||||
}
|
||||
}
|
||||
|
@ -32,15 +32,12 @@
|
||||
public class MySqlAntlrDdlParserListener extends MySqlParserBaseListener implements AntlrDdlParserListener {
|
||||
|
||||
private List<ParseTreeListener> listeners = new CopyOnWriteArrayList<>();
|
||||
private final MySqlAntlrDdlParser parserCtx;
|
||||
|
||||
private boolean skipNodes;
|
||||
private int skippedNodesCount = 0;
|
||||
private Collection<ParsingException> errors = new ArrayList<>();
|
||||
|
||||
public MySqlAntlrDdlParserListener(MySqlAntlrDdlParser parserCtx) {
|
||||
this.parserCtx = parserCtx;
|
||||
|
||||
listeners.add(new DatabaseOptionsParserListener(parserCtx));
|
||||
listeners.add(new DropDatabaseParserListener(parserCtx));
|
||||
listeners.add(new CreateTableParserListener(parserCtx, listeners));
|
||||
@ -107,16 +104,4 @@ public void enterRoutineBody(MySqlParser.RoutineBodyContext ctx) {
|
||||
skipNodes = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exitSqlStatement(MySqlParser.SqlStatementContext ctx) {
|
||||
// TODO rkuchar figure out how to log the easiest way
|
||||
// if (!skippedQuery) {
|
||||
// parserCtx.debugParsed(ctx);
|
||||
// }
|
||||
// else {
|
||||
// parserCtx.debugSkipped(ctx);
|
||||
// }
|
||||
super.exitSqlStatement(ctx);
|
||||
}
|
||||
|
||||
}
|
@ -822,8 +822,9 @@ public void shouldParseIntegrationTestSchema() {
|
||||
public void shouldParseCreateStatements() {
|
||||
parser.parse(readFile("ddl/mysql-test-create.ddl"), tables);
|
||||
Testing.print(tables);
|
||||
int numberOfCreatedIndexesWhichNotMakeChangeOnTablesModel = 49;
|
||||
assertThat(tables.size()).isEqualTo(57);
|
||||
assertThat(listener.total()).isEqualTo(144);
|
||||
assertThat(listener.total()).isEqualTo(144 - numberOfCreatedIndexesWhichNotMakeChangeOnTablesModel);
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -850,10 +851,11 @@ public void shouldParseTestStatements() {
|
||||
int numberOfAlteredTablesWhichDoesNotExists = parser.getParsingExceptionsFromWalker().size();
|
||||
// legacy parser was signaling all created index
|
||||
// antlr is parsing only those, which will make any model changes
|
||||
int numberOfNonUniqueIndexesCreated = 2;
|
||||
int numberOfCreatedIndexesWhichNotMakeChangeOnTablesModel = 5;
|
||||
int numberOfAlterViewStatements = 6;
|
||||
int numberOfDroppedViews = 7;
|
||||
assertThat(listener.total()).isEqualTo(58 - numberOfAlteredTablesWhichDoesNotExists
|
||||
- numberOfNonUniqueIndexesCreated + numberOfAlterViewStatements);
|
||||
- numberOfCreatedIndexesWhichNotMakeChangeOnTablesModel + numberOfAlterViewStatements + numberOfDroppedViews);
|
||||
listener.forEach(this::printEvent);
|
||||
}
|
||||
|
||||
@ -862,7 +864,9 @@ public void shouldParseSomeLinesFromCreateStatements() {
|
||||
parser.parse(readLines(189, "ddl/mysql-test-create.ddl"), tables);
|
||||
assertThat(tables.size()).isEqualTo(39);
|
||||
int numberOfAlteredTablesWhichDoesNotExists = parser.getParsingExceptionsFromWalker().size();
|
||||
assertThat(listener.total()).isEqualTo(120 - numberOfAlteredTablesWhichDoesNotExists);
|
||||
int numberOfCreatedIndexesWhichNotMakeChangeOnTablesModel = 42;
|
||||
assertThat(listener.total()).isEqualTo(120 - numberOfAlteredTablesWhichDoesNotExists
|
||||
- numberOfCreatedIndexesWhichNotMakeChangeOnTablesModel);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
Loading…
Reference in New Issue
Block a user