@Override public void exitAlterByAddColumns(MySqlParser.AlterByAddColumnsContext ctx) { parser.runIfNotNull(() -> { columnEditors.forEach(columnEditor -> tableEditor.addColumn(columnEditor.create())); listeners.remove(columnDefinitionListener); }, tableEditor, columnEditors); super.exitAlterByAddColumns(ctx); }
@Override public void exitColumnDeclaration(MySqlParser.ColumnDeclarationContext ctx) { parser.runIfNotNull(() -> { tableEditor.addColumn(columnDefinitionListener.getColumn()); }, tableEditor, columnDefinitionListener); super.exitColumnDeclaration(ctx); }
@Override public void exitColumnDefinition(MySqlParser.ColumnDefinitionContext ctx) { parser.runIfNotNull(() -> { if (columnEditors != null) { // column editor list is not null when a multiple columns are parsed in one statement if (columnEditors.size() > parsingColumnIndex) { // assign next column editor to parse another column definition columnDefinitionListener.setColumnEditor(columnEditors.get(parsingColumnIndex++)); } else { // all columns parsed // reset global variables for next parsed statement columnEditors.forEach(columnEditor -> tableEditor.addColumn(columnEditor.create())); columnEditors = null; parsingColumnIndex = STARTING_INDEX; } } }, tableEditor, columnEditors); super.exitColumnDefinition(ctx); }
private void addColumnFromTable(TableEditor table, String columnName, String newColumnName, Table selectedTable) { for (Column column : selectedTable.columns()) { if (column.name().equals(columnName)) { table.addColumn(column.edit().name(newColumnName).create()); break; } } } }
@Override public void exitAlterByRenameColumn(MySqlParser.AlterByRenameColumnContext ctx) { parser.runIfNotNull(() -> { Column column = columnDefinitionListener.getColumn(); tableEditor.addColumn(column); String newColumnName = parser.parseName(ctx.newColumn); if (newColumnName != null && !column.name().equalsIgnoreCase(newColumnName)) { tableEditor.renameColumn(column.name(), newColumnName); } listeners.remove(columnDefinitionListener); }, tableEditor, columnDefinitionListener); super.exitAlterByRenameColumn(ctx); } }
@Override public void enterUniqueKeyColumnConstraint(MySqlParser.UniqueKeyColumnConstraintContext ctx) { if (!tableEditor.hasPrimaryKey()) { // take the first unique constrain if no primary key is set tableEditor.addColumn(columnEditor.create()); tableEditor.setPrimaryKeyNames(columnEditor.name()); } super.enterUniqueKeyColumnConstraint(ctx); }
@Override public void enterPrimaryKeyColumnConstraint(MySqlParser.PrimaryKeyColumnConstraintContext ctx) { // this rule will be parsed only if no primary key is set in a table // otherwise the statement can't be executed due to multiple primary key error columnEditor.optional(false); tableEditor.addColumn(columnEditor.create()); tableEditor.setPrimaryKeyNames(columnEditor.name()); super.enterPrimaryKeyColumnConstraint(ctx); }
@Override public void enterCreateView(MySqlParser.CreateViewContext ctx) { if (!parser.skipViews()) { tableEditor = parser.databaseTables().editOrCreateTable(parser.parseQualifiedTableId(ctx.fullId())); // create new columns just with specified name for now if (ctx.uidList() != null) { ctx.uidList().uid().stream().map(parser::parseName).forEach(columnName -> { tableEditor.addColumn(Column.editor().name(columnName).create()); }); } selectColumnsListener = new ViewSelectedColumnsParserListener(tableEditor, parser); listeners.add(selectColumnsListener); } super.enterCreateView(ctx); }
@Override public void enterAlterView(MySqlParser.AlterViewContext ctx) { if (!parser.skipViews()) { TableId tableId = parser.parseQualifiedTableId(ctx.fullId()); tableEditor = parser.databaseTables().editTable(tableId); if (tableEditor == null) { throw new ParsingException(null, "Trying to alter view " + tableId.toString() + ", which does not exist. Query:" + AntlrDdlParser.getText(ctx)); } // alter view will override existing columns for a new one tableEditor.columnNames().forEach(tableEditor::removeColumn); // create new columns just with specified name for now if (ctx.uidList() != null) { ctx.uidList().uid().stream().map(parser::parseName).forEach(columnName -> { tableEditor.addColumn(Column.editor().name(columnName).create()); }); } selectColumnsListener = new ViewSelectedColumnsParserListener(tableEditor, parser); listeners.add(selectColumnsListener); } super.enterAlterView(ctx); }
@Override public void exitAlterByChangeColumn(MySqlParser.AlterByChangeColumnContext ctx) { parser.runIfNotNull(() -> { Column column = columnDefinitionListener.getColumn(); tableEditor.addColumn(column); String newColumnName = parser.parseName(ctx.newColumn); if (newColumnName != null && !column.name().equalsIgnoreCase(newColumnName)) { tableEditor.renameColumn(column.name(), newColumnName); } if (ctx.FIRST() != null) { tableEditor.reorderColumn(newColumnName, null); } else if (ctx.afterColumn != null) { tableEditor.reorderColumn(newColumnName, parser.parseName(ctx.afterColumn)); } listeners.remove(columnDefinitionListener); }, tableEditor, columnDefinitionListener); super.exitAlterByChangeColumn(ctx); }
@Override public void exitAlterByAddColumn(MySqlParser.AlterByAddColumnContext ctx) { parser.runIfNotNull(() -> { Column column = columnDefinitionListener.getColumn(); tableEditor.addColumn(column); String columnName = column.name(); if (ctx.FIRST() != null) { tableEditor.reorderColumn(columnName, null); } else if (ctx.AFTER() != null) { String afterColumn = parser.parseName(ctx.uid(1)); tableEditor.reorderColumn(columnName, afterColumn); } listeners.remove(columnDefinitionListener); }, tableEditor, columnDefinitionListener); super.exitAlterByAddColumn(ctx); }
@Override public void exitAlterByModifyColumn(MySqlParser.AlterByModifyColumnContext ctx) { parser.runIfNotNull(() -> { Column column = columnDefinitionListener.getColumn(); tableEditor.addColumn(column); if (ctx.FIRST() != null) { tableEditor.reorderColumn(column.name(), null); } else if (ctx.AFTER() != null) { String afterColumn = parser.parseName(ctx.uid(1)); tableEditor.reorderColumn(column.name(), afterColumn); } listeners.remove(columnDefinitionListener); }, tableEditor, columnDefinitionListener); super.exitAlterByModifyColumn(ctx); }
ce.unsetDefaultValue(); tableEditor.addColumn(ce.create());
table.addColumn(Column.editor().name(name).create()); });
table.addColumn(newColumnDefn); if (isPrimaryKey.get()) { table.setPrimaryKeyNames(newColumnDefn.name());
ce.unsetDefaultValue(); table.addColumn(ce.create());
.addColumn(Column.editor() .name("first") .jdbcType(Types.VARCHAR)
table.addColumn(Column.editor().name(name).create()); });
table.addColumn(newColumnDefn); if (isPrimaryKey.get()) { table.setPrimaryKeyNames(newColumnDefn.name());