Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

import java.util.Objects;
import net.sf.jsqlparser.statement.create.table.ConstraintAttributes;
import net.sf.jsqlparser.statement.create.table.ConstraintKind;

/** Changes an existing constraint using the attributes shared with CREATE and ADD. */
public class AlterConstraintAttributes extends AlterExpression {
Expand All @@ -29,6 +30,11 @@ public void setAttributes(ConstraintAttributes attributes) {
this.attributes = Objects.requireNonNull(attributes, "attributes");
}

@Override
public boolean hasActiveTableDefinition() {
return false;
}

@Override
public String getConstraintName() {
return getConstraintSymbol();
Expand All @@ -49,6 +55,11 @@ public void setEnforced(boolean enforced) {
attributes.setEnforced(enforced);
}

@Override
public ConstraintKind getConstraintKind() {
return ConstraintKind.OTHER;
}

@Override
protected void appendBody(StringBuilder builder) {
builder.append("ALTER CONSTRAINT ").append(getConstraintSymbol());
Expand Down
279 changes: 217 additions & 62 deletions src/main/java/net/sf/jsqlparser/statement/alter/AlterExpression.java

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,24 @@
*/
package net.sf.jsqlparser.statement.alter;

import net.sf.jsqlparser.statement.create.table.ConstraintKind;

/**
* Internal subclass for character set and collation operations within ALTER TABLE. Handles CONVERT
* TO CHARACTER SET, DEFAULT CHARACTER SET, CHARACTER SET, and COLLATE.
*/
public class AlterExpressionCharset extends AlterExpression {

@Override
public boolean hasActiveTableDefinition() {
return false;
}

@Override
public ConstraintKind getConstraintKind() {
return ConstraintKind.OTHER;
}

@Override
protected void appendBody(StringBuilder b) {
toStringConvert(b);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,38 @@
*/
package net.sf.jsqlparser.statement.alter;


import net.sf.jsqlparser.statement.select.PlainSelect;
import net.sf.jsqlparser.statement.create.table.ConstraintKind;

/**
* Internal subclass for DROP operations within ALTER TABLE. Handles DROP column, DROP CONSTRAINT,
* DROP INDEX/KEY, DROP PRIMARY KEY, DROP UNIQUE, DROP FOREIGN KEY, and DROP PARTITION.
*/
public class AlterExpressionDrop extends AlterExpression {
@Override
public boolean hasActiveTableDefinition() {
return false;
}

@Override
public ConstraintKind getConstraintKind() {
if (getOperation() == null) {
return ConstraintKind.OTHER;
}
switch (getOperation()) {
case DROP_PRIMARY_KEY:
return ConstraintKind.PRIMARY_KEY;
case DROP_UNIQUE:
return ConstraintKind.UNIQUE;
case DROP_FOREIGN_KEY:
return ConstraintKind.FOREIGN_KEY;
case DROP_CHECK:
return ConstraintKind.CHECK;
default:
return ConstraintKind.OTHER;
}
}

@Override
protected void appendBody(StringBuilder b) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import java.util.function.Consumer;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.statement.select.OrderByElement;
import net.sf.jsqlparser.statement.create.table.ConstraintKind;

/** MySQL ALTER TABLE ORDER BY, using the same mutable order elements as query ordering. */
public class AlterExpressionOrderBy extends AlterExpression {
Expand All @@ -27,6 +28,16 @@ public List<OrderByElement> getOrderByElements() {
return orderByElements;
}

@Override
public boolean hasActiveTableDefinition() {
return false;
}

@Override
public ConstraintKind getConstraintKind() {
return ConstraintKind.OTHER;
}

@Override
protected void appendBody(StringBuilder builder) {
appendOrderBy(builder, builder::append);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import net.sf.jsqlparser.statement.create.table.PartitionDefinition;
import net.sf.jsqlparser.statement.create.table.TablePartitioning;
import net.sf.jsqlparser.statement.select.PlainSelect;
import net.sf.jsqlparser.statement.create.table.ConstraintKind;

/**
* Structured model for partition operations within {@code ALTER TABLE}.
Expand Down Expand Up @@ -146,6 +147,11 @@ public void setCoalescePartitionCount(Integer coalescePartitionCount) {
}
}

@Override
public boolean hasActiveTableDefinition() {
return false;
}

@Override
public void setCoalescePartitionNumber(int coalescePartitionNumber) {
super.setCoalescePartitionNumber(coalescePartitionNumber);
Expand Down Expand Up @@ -292,6 +298,11 @@ public AlterExpressionPartition addPartitionDefinitions(
return withPartitionDefinitions(collection);
}

@Override
public ConstraintKind getConstraintKind() {
return ConstraintKind.OTHER;
}

@Override
protected void appendBody(StringBuilder b) {
appendBody(b, b::append);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,23 +9,36 @@
*/
package net.sf.jsqlparser.statement.alter;

import net.sf.jsqlparser.statement.create.table.IndexOption;
import net.sf.jsqlparser.statement.create.table.KeyElement;
import java.util.Iterator;
import java.util.function.Consumer;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.statement.create.table.Index;
import net.sf.jsqlparser.statement.create.table.KeyConstraint;
import net.sf.jsqlparser.statement.create.table.ConstraintKind;

/**
* CockroachDB's ALTER PRIMARY KEY USING COLUMNS operation. Key elements and storage options are
* available through {@link #getIndex()}; hash sharding and the legacy WITH BUCKET_COUNT expression
* are represented separately.
* available through {@link #getConstraint()}; hash sharding and the legacy WITH BUCKET_COUNT
* expression are represented separately.
*/
public class AlterExpressionPrimaryKey extends AlterExpression {
private boolean usingHash;
private Expression bucketCount;

public AlterExpressionPrimaryKey() {
setOperation(AlterOperation.ALTER_PRIMARY_KEY);
setIndex(new Index().withType("PRIMARY KEY"));
setConstraint(new KeyConstraint().withType("PRIMARY KEY"));
}

@Override
public boolean hasActiveTableDefinition() {
return false;
}

@Override
public KeyConstraint getConstraint() {
return (KeyConstraint) super.getConstraint();
}

public boolean isUsingHash() {
Expand All @@ -44,6 +57,11 @@ public void setBucketCount(Expression bucketCount) {
this.bucketCount = bucketCount;
}

@Override
public ConstraintKind getConstraintKind() {
return ConstraintKind.PRIMARY_KEY;
}

@Override
protected void appendBody(StringBuilder builder) {
appendDefinition(builder, expression -> builder.append(expression));
Expand All @@ -58,8 +76,8 @@ public StringBuilder appendTo(StringBuilder builder, Consumer<Expression> expres

private void appendDefinition(StringBuilder builder, Consumer<Expression> expressionPrinter) {
builder.append("ALTER PRIMARY KEY USING COLUMNS (");
if (getIndex().getColumns() != null) {
for (Iterator<Index.ColumnParams> columns = getIndex().getColumns().iterator(); columns
if (getConstraint().getColumns() != null) {
for (Iterator<KeyElement> columns = getConstraint().getColumns().iterator(); columns
.hasNext();) {
columns.next().appendTo(builder, expressionPrinter);
if (columns.hasNext()) {
Expand All @@ -84,10 +102,10 @@ private void appendSharding(StringBuilder builder, Consumer<Expression> expressi

private void appendStorageOptions(StringBuilder builder,
Consumer<Expression> expressionPrinter) {
if (getIndex().getStorageParameters() != null) {
if (getConstraint().getStorageParameters() != null) {
builder.append(" WITH (");
for (Iterator<Index.Option> options =
getIndex().getStorageParameters().iterator(); options.hasNext();) {
for (Iterator<IndexOption> options =
getConstraint().getStorageParameters().iterator(); options.hasNext();) {
options.next().appendTo(builder, expressionPrinter);
if (options.hasNext()) {
builder.append(", ");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,24 @@
*/
package net.sf.jsqlparser.statement.alter;

import net.sf.jsqlparser.statement.create.table.ConstraintKind;

/**
* Internal subclass for RENAME operations within ALTER TABLE. Handles RENAME COLUMN, RENAME TO
* (table), RENAME INDEX/KEY/CONSTRAINT.
*/
public class AlterExpressionRename extends AlterExpression {

@Override
public boolean hasActiveTableDefinition() {
return false;
}

@Override
public ConstraintKind getConstraintKind() {
return ConstraintKind.OTHER;
}

@Override
protected void appendBody(StringBuilder b) {
switch (getOperation()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
package net.sf.jsqlparser.statement.alter;

import net.sf.jsqlparser.statement.create.table.TableOption;
import net.sf.jsqlparser.statement.create.table.ConstraintKind;

/**
* Internal subclass for table-level option operations within ALTER TABLE. Handles ENGINE,
Expand All @@ -32,6 +33,11 @@ public void setStructuredTableOption(TableOption option) {
super.setUseEqual(false);
}

@Override
public boolean hasActiveTableDefinition() {
return false;
}

@Override
public AlterOperation getOperation() {
if (structuredTableOption != null) {
Expand Down Expand Up @@ -128,6 +134,11 @@ public void setUseEqual(boolean useEqual) {
super.setUseEqual(useEqual);
}

@Override
public ConstraintKind getConstraintKind() {
return ConstraintKind.OTHER;
}

@Override
protected void appendBody(StringBuilder b) {
if (structuredTableOption != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import java.util.function.Consumer;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.statement.create.table.ForeignDataOption;
import net.sf.jsqlparser.statement.create.table.ConstraintKind;

/** Foreign table OPTIONS, optionally applied to one column. */
public class AlterForeignDataOptions extends AlterExpression {
Expand All @@ -39,6 +40,16 @@ public StringBuilder appendTo(StringBuilder builder, Consumer<Expression> expres
return builder;
}

@Override
public boolean hasActiveTableDefinition() {
return false;
}

@Override
public ConstraintKind getConstraintKind() {
return ConstraintKind.OTHER;
}

@Override
protected void appendBody(StringBuilder builder) {
appendTo(builder, builder::append);
Expand Down
Loading
Loading