[jOOQ/jOOQ#8528] More improvements
This commit is contained in:
parent
39bb771e1b
commit
5c8fe53c1f
@ -270,21 +270,25 @@ final class AlterTableImpl extends AbstractRowCountQuery implements
|
||||
this.ifExists = ifExists;
|
||||
}
|
||||
|
||||
final Table<?> $table() { return table; }
|
||||
final boolean $ifExists() { return ifExists; }
|
||||
final boolean $ifExistsColumn() { return ifExistsColumn; }
|
||||
final boolean $ifNotExistsColumn() { return ifNotExistsColumn; }
|
||||
final Field<?> $addColumn() { return addColumn; }
|
||||
final DataType<?> $addColumnType() { return addColumnType; }
|
||||
final boolean $addFirst() { return addFirst; }
|
||||
final Field<?> $addBefore() { return addBefore; }
|
||||
final Field<?> $addAfter() { return addAfter; }
|
||||
final Table<?> $renameTo() { return renameTo; }
|
||||
final Field<?> $renameColumn() { return renameColumn; }
|
||||
final Field<?> $renameColumnTo() { return renameColumnTo; }
|
||||
final List<Field<?>> $dropColumns() { return dropColumns; };
|
||||
final Constraint $dropConstraint() { return dropConstraint; }
|
||||
final ConstraintType $dropConstraintType() { return dropConstraintType; }
|
||||
final Table<?> $table() { return table; }
|
||||
final boolean $ifExists() { return ifExists; }
|
||||
final boolean $ifExistsColumn() { return ifExistsColumn; }
|
||||
final boolean $ifNotExistsColumn() { return ifNotExistsColumn; }
|
||||
final Field<?> $addColumn() { return addColumn; }
|
||||
final DataType<?> $addColumnType() { return addColumnType; }
|
||||
final boolean $addFirst() { return addFirst; }
|
||||
final Field<?> $addBefore() { return addBefore; }
|
||||
final Field<?> $addAfter() { return addAfter; }
|
||||
final Field<?> $alterColumn() { return alterColumn; }
|
||||
final Nullability $alterColumnNullability() { return alterColumnNullability; }
|
||||
final DataType<?> $alterColumnType() { return alterColumnType; }
|
||||
final Field<?> $alterColumnDefault() { return alterColumnDefault; }
|
||||
final Table<?> $renameTo() { return renameTo; }
|
||||
final Field<?> $renameColumn() { return renameColumn; }
|
||||
final Field<?> $renameColumnTo() { return renameColumnTo; }
|
||||
final List<Field<?>> $dropColumns() { return dropColumns; };
|
||||
final Constraint $dropConstraint() { return dropConstraint; }
|
||||
final ConstraintType $dropConstraintType() { return dropConstraintType; }
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// XXX: DSL API
|
||||
|
||||
@ -58,6 +58,7 @@ import org.jooq.Meta;
|
||||
import org.jooq.Name;
|
||||
import org.jooq.Name.Quoted;
|
||||
import org.jooq.Named;
|
||||
import org.jooq.Nullability;
|
||||
import org.jooq.Query;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Schema;
|
||||
@ -245,6 +246,12 @@ final class DDLInterpreter {
|
||||
throw objectNotTable(table);
|
||||
|
||||
Field<?> addColumn = query.$addColumn();
|
||||
Field<?> alterColumn = query.$alterColumn();
|
||||
Field<?> alterColumnDefault = query.$alterColumnDefault();
|
||||
Nullability alterColumnNullability = query.$alterColumnNullability();
|
||||
DataType<?> alterColumnType = query.$alterColumnType();
|
||||
boolean ifExistsColumn = query.$ifExistsColumn();
|
||||
boolean ifNotExistsColumn = query.$ifNotExistsColumn();
|
||||
Table<?> renameTo = query.$renameTo();
|
||||
Field<?> renameColumn = query.$renameColumn();
|
||||
Field<?> renameColumnTo = query.$renameColumnTo();
|
||||
@ -260,6 +267,21 @@ final class DDLInterpreter {
|
||||
else
|
||||
existing.fields.add(new MutableField((UnqualifiedName) addColumn.getUnqualifiedName(), existing, query.$addColumnType()));
|
||||
}
|
||||
else if (alterColumn != null) {
|
||||
MutableField existingField = existing.field(alterColumn);
|
||||
|
||||
if (existingField == null) {
|
||||
if (!ifExistsColumn)
|
||||
throw columnNotExists(alterColumn);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (alterColumnNullability != null)
|
||||
existingField.type = existingField.type.nullability(alterColumnNullability);
|
||||
else
|
||||
throw unsupportedQuery(query);
|
||||
}
|
||||
else if (renameTo != null && checkNotExists(schema, renameTo)) {
|
||||
existing.name = (UnqualifiedName) renameTo.getUnqualifiedName();
|
||||
}
|
||||
@ -430,7 +452,18 @@ final class DDLInterpreter {
|
||||
}
|
||||
|
||||
private final void accept0(DropSequenceImpl query) {
|
||||
Sequence<?> sequence = query.$sequence();
|
||||
MutableSchema schema = getSchema(sequence.getSchema());
|
||||
|
||||
MutableSequence existing = schema.sequence(sequence);
|
||||
if (existing == null) {
|
||||
if (!query.$ifExists())
|
||||
throw sequenceNotExists(sequence);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
schema.sequences.remove(existing);
|
||||
}
|
||||
|
||||
private final void accept0(CommentOnImpl query) {
|
||||
@ -489,6 +522,14 @@ final class DDLInterpreter {
|
||||
return new DataDefinitionException("View already exists: " + view.getQualifiedName());
|
||||
}
|
||||
|
||||
private static final DataDefinitionException columnNotExists(Field<?> field) {
|
||||
return new DataDefinitionException("Column does not exist: " + field.getQualifiedName());
|
||||
}
|
||||
|
||||
private static final DataDefinitionException columnAlreadyExists(Field<?> field) {
|
||||
return new DataDefinitionException("Column already exists: " + field.getQualifiedName());
|
||||
}
|
||||
|
||||
private static final DataDefinitionException sequenceNotExists(Sequence<?> sequence) {
|
||||
return new DataDefinitionException("Sequence does not exist: " + sequence.getQualifiedName());
|
||||
}
|
||||
|
||||
@ -92,6 +92,9 @@ final class DropSequenceImpl extends AbstractRowCountQuery implements
|
||||
this.ifExists = ifExists;
|
||||
}
|
||||
|
||||
final Sequence<?> $sequence() { return sequence; }
|
||||
final boolean $ifExists() { return ifExists; }
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// XXX: QueryPart API
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
Loading…
Reference in New Issue
Block a user