DBZ-7693 Move MySQL-specific behavior to MySQL impl

This commit is contained in:
Chris Cranford 2024-03-29 10:03:31 -04:00 committed by Jiri Pechanec
parent 1a8cbfc915
commit 23677ba2cb
2 changed files with 18 additions and 17 deletions

View File

@ -16,6 +16,7 @@
import org.antlr.v4.runtime.CharStream; import org.antlr.v4.runtime.CharStream;
import org.antlr.v4.runtime.CommonTokenStream; import org.antlr.v4.runtime.CommonTokenStream;
import org.antlr.v4.runtime.misc.Interval;
import org.antlr.v4.runtime.tree.ParseTree; import org.antlr.v4.runtime.tree.ParseTree;
import com.mysql.cj.CharsetMapping; import com.mysql.cj.CharsetMapping;
@ -31,6 +32,8 @@
import io.debezium.ddl.parser.mysql.generated.MySqlParser; import io.debezium.ddl.parser.mysql.generated.MySqlParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParser.CharsetNameContext; import io.debezium.ddl.parser.mysql.generated.MySqlParser.CharsetNameContext;
import io.debezium.ddl.parser.mysql.generated.MySqlParser.CollationNameContext; import io.debezium.ddl.parser.mysql.generated.MySqlParser.CollationNameContext;
import io.debezium.ddl.parser.mysql.generated.MySqlParser.RenameTableClauseContext;
import io.debezium.ddl.parser.mysql.generated.MySqlParser.RenameTableContext;
import io.debezium.relational.Column; import io.debezium.relational.Column;
import io.debezium.relational.ColumnEditor; import io.debezium.relational.ColumnEditor;
import io.debezium.relational.SystemVariables; import io.debezium.relational.SystemVariables;
@ -463,4 +466,19 @@ else if (collationNode != null && collationNode.getText() != null) {
} }
return charsetName; return charsetName;
} }
/**
* Signal an alter table event to ddl changes listener.
*
* @param id the table identifier; may not be null
* @param previousId the previous name of the view if it was renamed, or null if it was not renamed
* @param ctx the start of the statement; may not be null
*/
public void signalAlterTable(TableId id, TableId previousId, RenameTableClauseContext ctx) {
final RenameTableContext parent = (RenameTableContext) ctx.getParent();
Interval interval = new Interval(ctx.getParent().start.getStartIndex(),
parent.renameTableClause().get(0).start.getStartIndex() - 1);
String prefix = ctx.getParent().start.getInputStream().getText(interval);
signalAlterTable(id, previousId, prefix + getText(ctx));
}
} }

View File

@ -20,8 +20,6 @@
import org.antlr.v4.runtime.tree.ParseTree; import org.antlr.v4.runtime.tree.ParseTree;
import org.antlr.v4.runtime.tree.ParseTreeWalker; import org.antlr.v4.runtime.tree.ParseTreeWalker;
import io.debezium.ddl.parser.mysql.generated.MySqlParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParser.RenameTableContext;
import io.debezium.relational.TableId; import io.debezium.relational.TableId;
import io.debezium.relational.Tables; import io.debezium.relational.Tables;
import io.debezium.relational.ddl.AbstractDdlParser; import io.debezium.relational.ddl.AbstractDdlParser;
@ -242,21 +240,6 @@ public void signalCreateTable(TableId id, ParserRuleContext ctx) {
signalCreateTable(id, getText(ctx)); signalCreateTable(id, getText(ctx));
} }
/**
* Signal an alter table event to ddl changes listener.
*
* @param id the table identifier; may not be null
* @param previousId the previous name of the view if it was renamed, or null if it was not renamed
* @param ctx the start of the statement; may not be null
*/
public void signalAlterTable(TableId id, TableId previousId, MySqlParser.RenameTableClauseContext ctx) {
final RenameTableContext parent = (RenameTableContext) ctx.getParent();
Interval interval = new Interval(ctx.getParent().start.getStartIndex(),
parent.renameTableClause().get(0).start.getStartIndex() - 1);
String prefix = ctx.getParent().start.getInputStream().getText(interval);
signalAlterTable(id, previousId, prefix + getText(ctx));
}
/** /**
* Signal an alter table event to ddl changes listener. * Signal an alter table event to ddl changes listener.
* *