[jOOQ/jOOQ#8528] Interpret ALTER TABLE .. RENAME CONSTRAINT

This commit is contained in:
Lukas Eder 2019-10-15 17:37:12 +02:00
parent 45a1c8da55
commit a50d75c9a6
2 changed files with 18 additions and 2 deletions

View File

@ -290,6 +290,8 @@ final class AlterTableImpl extends AbstractRowCountQuery implements
final Table<?> $renameTo() { return renameTo; }
final Field<?> $renameColumn() { return renameColumn; }
final Field<?> $renameColumnTo() { return renameColumnTo; }
final Constraint $renameConstraint() { return renameConstraint; }
final Constraint $renameConstraintTo() { return renameConstraintTo; }
final List<Field<?>> $dropColumns() { return dropColumns; };
final Constraint $dropConstraint() { return dropConstraint; }
final ConstraintType $dropConstraintType() { return dropConstraintType; }

View File

@ -295,6 +295,8 @@ final class DDLInterpreter {
Table<?> renameTo = query.$renameTo();
Field<?> renameColumn = query.$renameColumn();
Field<?> renameColumnTo = query.$renameColumnTo();
Constraint renameConstraint = query.$renameConstraint();
Constraint renameConstraintTo = query.$renameConstraintTo();
List<Field<?>> dropColumns = query.$dropColumns();
Constraint dropConstraint = query.$dropConstraint();
ConstraintType dropConstraintType = query.$dropConstraintType();
@ -355,12 +357,24 @@ final class DDLInterpreter {
existing.name = (UnqualifiedName) renameTo.getUnqualifiedName();
}
else if (renameColumn != null) {
if (existing.field(renameColumn) == null)
MutableField mf = existing.field(renameColumn);
if (mf == null)
throw fieldNotExists(renameColumn);
else if (existing.field(renameColumnTo) != null)
throw fieldAlreadyExists(renameColumnTo);
else
existing.field(renameColumn).name = (UnqualifiedName) renameColumnTo.getUnqualifiedName();
mf.name = (UnqualifiedName) renameColumnTo.getUnqualifiedName();
}
else if (renameConstraint != null) {
MutableKey mk = existing.constraint(renameConstraint);
if (mk == null)
throw constraintNotExists(renameConstraint);
else if (existing.constraint(renameConstraintTo) != null)
throw constraintAlreadyExists(renameConstraintTo);
else
mk.name = (UnqualifiedName) renameConstraintTo.getUnqualifiedName();
}
else if (dropColumns != null) {
// TODO Implement cascade