mirror of
https://github.com/hibernate/hibernate-orm
synced 2025-02-08 04:08:19 +00:00
HHH-12271 - SchemaDropperImpl does not drop constraints with IF EXISTS
This commit is contained in:
parent
e92f350e22
commit
6bf2869355
@ -21,7 +21,7 @@
|
|||||||
* @author Steve Ebersole
|
* @author Steve Ebersole
|
||||||
*/
|
*/
|
||||||
public class StandardForeignKeyExporter implements Exporter<ForeignKey> {
|
public class StandardForeignKeyExporter implements Exporter<ForeignKey> {
|
||||||
private static final String COLUMN_MISMATCH_MSG = "Number of referencing columns [%s] did not " +
|
private static final String COLUMN_MISMATCH_MSG = "Number of referencing columns [%s] did not " +
|
||||||
"match number of referenced columns [%s] in foreign-key [%s] from [%s] to [%s]";
|
"match number of referenced columns [%s] in foreign-key [%s] from [%s] to [%s]";
|
||||||
|
|
||||||
private final Dialect dialect;
|
private final Dialect dialect;
|
||||||
@ -32,11 +32,11 @@ public StandardForeignKeyExporter(Dialect dialect) {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getSqlCreateStrings(ForeignKey foreignKey, Metadata metadata) {
|
public String[] getSqlCreateStrings(ForeignKey foreignKey, Metadata metadata) {
|
||||||
if ( ! dialect.hasAlterTable() ) {
|
if ( !dialect.hasAlterTable() ) {
|
||||||
return NO_COMMANDS;
|
return NO_COMMANDS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ! foreignKey.isCreationEnabled() ) {
|
if ( !foreignKey.isCreationEnabled() ) {
|
||||||
return NO_COMMANDS;
|
return NO_COMMANDS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -45,8 +45,8 @@ public String[] getSqlCreateStrings(ForeignKey foreignKey, Metadata metadata) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final int numberOfColumns = foreignKey.getColumnSpan();
|
final int numberOfColumns = foreignKey.getColumnSpan();
|
||||||
final String[] columnNames = new String[ numberOfColumns ];
|
final String[] columnNames = new String[numberOfColumns];
|
||||||
final String[] targetColumnNames = new String[ numberOfColumns ];
|
final String[] targetColumnNames = new String[numberOfColumns];
|
||||||
|
|
||||||
final Iterator targetItr;
|
final Iterator targetItr;
|
||||||
if ( foreignKey.isReferenceToPrimaryKey() ) {
|
if ( foreignKey.isReferenceToPrimaryKey() ) {
|
||||||
@ -127,11 +127,11 @@ public String[] getSqlCreateStrings(ForeignKey foreignKey, Metadata metadata) {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getSqlDropStrings(ForeignKey foreignKey, Metadata metadata) {
|
public String[] getSqlDropStrings(ForeignKey foreignKey, Metadata metadata) {
|
||||||
if ( ! dialect.hasAlterTable() ) {
|
if ( !dialect.hasAlterTable() ) {
|
||||||
return NO_COMMANDS;
|
return NO_COMMANDS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ! foreignKey.isCreationEnabled() ) {
|
if ( !foreignKey.isCreationEnabled() ) {
|
||||||
return NO_COMMANDS;
|
return NO_COMMANDS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -145,8 +145,21 @@ public String[] getSqlDropStrings(ForeignKey foreignKey, Metadata metadata) {
|
|||||||
dialect
|
dialect
|
||||||
);
|
);
|
||||||
return new String[] {
|
return new String[] {
|
||||||
dialect.getAlterTableString( sourceTableName )
|
getSqlDropStrings( sourceTableName, foreignKey, dialect )
|
||||||
+ dialect.getDropForeignKeyString() + foreignKey.getName()
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String getSqlDropStrings(String tableName, ForeignKey foreignKey, Dialect dialect) {
|
||||||
|
final StringBuilder buf = new StringBuilder( dialect.getAlterTableString( tableName ) );
|
||||||
|
buf.append( dialect.getDropForeignKeyString() );
|
||||||
|
if ( dialect.supportsIfExistsBeforeConstraintName() ) {
|
||||||
|
buf.append( "if exists " );
|
||||||
|
}
|
||||||
|
buf.append( dialect.quote( foreignKey.getName() ) );
|
||||||
|
if ( dialect.supportsIfExistsAfterConstraintName() ) {
|
||||||
|
buf.append( " if exists" );
|
||||||
|
}
|
||||||
|
return buf.toString();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user