private void fill(final ConstraintDefinitionSegment sqlSegment, final AlterTableStatement alterTableStatement, final ShardingTableMetaData shardingTableMetaData) { for (String each : sqlSegment.getPrimaryKeyColumnNames()) { Optional<ColumnDefinitionSegment> modifiedColumn = alterTableStatement.findColumnDefinition(each, shardingTableMetaData); if (modifiedColumn.isPresent()) { modifiedColumn.get().setPrimaryKey(true); alterTableStatement.getModifiedColumnDefinitions().put(each, modifiedColumn.get()); } } } }
@Override public void fill(final RenameColumnSegment sqlSegment, final SQLStatement sqlStatement, final String sql, final ShardingRule shardingRule, final ShardingTableMetaData shardingTableMetaData) { AlterTableStatement alterTableStatement = (AlterTableStatement) sqlStatement; Optional<ColumnDefinitionSegment> oldColumnDefinition = alterTableStatement.findColumnDefinition(sqlSegment.getOldColumnName(), shardingTableMetaData); if (!oldColumnDefinition.isPresent()) { return; } oldColumnDefinition.get().setColumnName(sqlSegment.getColumnName()); alterTableStatement.getModifiedColumnDefinitions().put(sqlSegment.getOldColumnName(), oldColumnDefinition.get()); } }
@Override public void fill(final ModifyColumnDefinitionSegment sqlSegment, final SQLStatement sqlStatement, final String sql, final ShardingRule shardingRule, final ShardingTableMetaData shardingTableMetaData) { AlterTableStatement alterTableStatement = (AlterTableStatement) sqlStatement; Optional<String> oldColumnName = sqlSegment.getOldColumnName(); if (oldColumnName.isPresent()) { Optional<ColumnDefinitionSegment> oldColumnDefinition = alterTableStatement.findColumnDefinition(oldColumnName.get(), shardingTableMetaData); if (!oldColumnDefinition.isPresent()) { return; } oldColumnDefinition.get().setColumnName(sqlSegment.getColumnDefinition().getColumnName()); if (null != sqlSegment.getColumnDefinition().getDataType()) { oldColumnDefinition.get().setDataType(sqlSegment.getColumnDefinition().getDataType()); } alterTableStatement.getModifiedColumnDefinitions().put(oldColumnName.get(), oldColumnDefinition.get()); } else { alterTableStatement.getModifiedColumnDefinitions().put(sqlSegment.getColumnDefinition().getColumnName(), sqlSegment.getColumnDefinition()); } if (sqlSegment.getColumnPosition().isPresent()) { alterTableStatement.getChangedPositionColumns().add(sqlSegment.getColumnPosition().get()); } } }