Skip to content
Merged
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 @@ -36,6 +36,7 @@ public class CreateTable implements Statement {
private boolean selectParenthesis;
private boolean ifNotExists = false;
private boolean orReplace = false;
private TablePartitioning partitioning;

private RowMovement rowMovement;

Expand Down Expand Up @@ -148,6 +149,14 @@ public void setOrReplace(boolean orReplace) {
this.orReplace = orReplace;
}

public TablePartitioning getPartitioning() {
return partitioning;
}

public void setPartitioning(TablePartitioning partitioning) {
this.partitioning = partitioning;
}

public boolean isSelectParenthesis() {
return selectParenthesis;
}
Expand Down Expand Up @@ -216,6 +225,9 @@ private void appendTableOptions(StringBuilder b) {
if (options != null && options.length() > 0) {
b.append(" ").append(options);
}
if (partitioning != null) {
b.append(" ").append(partitioning);
}
}

private void appendTableProperties(StringBuilder b) {
Expand Down Expand Up @@ -272,6 +284,11 @@ public CreateTable withIfNotExists(boolean ifNotExists) {
return this;
}

public CreateTable withPartitioning(TablePartitioning partitioning) {
this.setPartitioning(partitioning);
return this;
}

public CreateTable withRowMovement(RowMovement rowMovement) {
this.setRowMovement(rowMovement);
return this;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,51 @@
import net.sf.jsqlparser.statement.select.PlainSelect;

public class PartitionDefinition implements Serializable {

public enum ValueOperator {
LESS_THAN("VALUES LESS THAN"), IN("VALUES IN");

private final String sql;

ValueOperator(String sql) {
this.sql = sql;
}

@Override
public String toString() {
return sql;
}
}

private String partitionName;
private String partitionOperation;
private List<String> values;
private String storageEngine;
private ValueOperator valueOperator;
private boolean maxValue;
private boolean subPartition;
private boolean storageKeyword;
private boolean storageEngineUseEquals = true;
private String comment;
private boolean commentUseEquals;
private String dataDirectory;
private boolean dataDirectoryUseEquals;
private String indexDirectory;
private boolean indexDirectoryUseEquals;
private String maxRows;
private boolean maxRowsUseEquals;
private String minRows;
private boolean minRowsUseEquals;
private String tablespace;
private boolean tablespaceUseEquals;
private List<PartitionDefinition> subPartitionDefinitions;

public PartitionDefinition() {}

public PartitionDefinition(String partitionName, String partitionOperation,
List<String> values, String storageEngine) {
this.partitionName = partitionName;
this.partitionOperation = partitionOperation;
setPartitionOperation(partitionOperation);
this.values = values;
this.storageEngine = storageEngine;
}
Expand All @@ -41,6 +77,13 @@ public String getPartitionOperation() {

public void setPartitionOperation(String partitionOperation) {
this.partitionOperation = partitionOperation;
if (ValueOperator.LESS_THAN.toString().equalsIgnoreCase(partitionOperation)) {
valueOperator = ValueOperator.LESS_THAN;
} else if (ValueOperator.IN.toString().equalsIgnoreCase(partitionOperation)) {
valueOperator = ValueOperator.IN;
} else {
valueOperator = null;
}
}

public List<String> getValues() {
Expand All @@ -59,16 +102,186 @@ public void setStorageEngine(String storageEngine) {
this.storageEngine = storageEngine;
}

public ValueOperator getValueOperator() {
return valueOperator;
}

public void setValueOperator(ValueOperator valueOperator) {
this.valueOperator = valueOperator;
this.partitionOperation = valueOperator != null ? valueOperator.toString() : null;
}

public boolean isMaxValue() {
return maxValue;
}

public void setMaxValue(boolean maxValue) {
this.maxValue = maxValue;
}

public boolean isSubPartition() {
return subPartition;
}

public void setSubPartition(boolean subPartition) {
this.subPartition = subPartition;
}

public boolean isStorageKeyword() {
return storageKeyword;
}

public void setStorageKeyword(boolean storageKeyword) {
this.storageKeyword = storageKeyword;
}

public boolean isStorageEngineUseEquals() {
return storageEngineUseEquals;
}

public void setStorageEngineUseEquals(boolean storageEngineUseEquals) {
this.storageEngineUseEquals = storageEngineUseEquals;
}

public String getComment() {
return comment;
}

public void setComment(String comment) {
this.comment = comment;
}

public boolean isCommentUseEquals() {
return commentUseEquals;
}

public void setCommentUseEquals(boolean commentUseEquals) {
this.commentUseEquals = commentUseEquals;
}

public String getDataDirectory() {
return dataDirectory;
}

public void setDataDirectory(String dataDirectory) {
this.dataDirectory = dataDirectory;
}

public boolean isDataDirectoryUseEquals() {
return dataDirectoryUseEquals;
}

public void setDataDirectoryUseEquals(boolean dataDirectoryUseEquals) {
this.dataDirectoryUseEquals = dataDirectoryUseEquals;
}

public String getIndexDirectory() {
return indexDirectory;
}

public void setIndexDirectory(String indexDirectory) {
this.indexDirectory = indexDirectory;
}

public boolean isIndexDirectoryUseEquals() {
return indexDirectoryUseEquals;
}

public void setIndexDirectoryUseEquals(boolean indexDirectoryUseEquals) {
this.indexDirectoryUseEquals = indexDirectoryUseEquals;
}

public String getMaxRows() {
return maxRows;
}

public void setMaxRows(String maxRows) {
this.maxRows = maxRows;
}

public boolean isMaxRowsUseEquals() {
return maxRowsUseEquals;
}

public void setMaxRowsUseEquals(boolean maxRowsUseEquals) {
this.maxRowsUseEquals = maxRowsUseEquals;
}

public String getMinRows() {
return minRows;
}

public void setMinRows(String minRows) {
this.minRows = minRows;
}

public boolean isMinRowsUseEquals() {
return minRowsUseEquals;
}

public void setMinRowsUseEquals(boolean minRowsUseEquals) {
this.minRowsUseEquals = minRowsUseEquals;
}

public String getTablespace() {
return tablespace;
}

public void setTablespace(String tablespace) {
this.tablespace = tablespace;
}

public boolean isTablespaceUseEquals() {
return tablespaceUseEquals;
}

public void setTablespaceUseEquals(boolean tablespaceUseEquals) {
this.tablespaceUseEquals = tablespaceUseEquals;
}

public List<PartitionDefinition> getSubPartitionDefinitions() {
return subPartitionDefinitions;
}

public void setSubPartitionDefinitions(
List<PartitionDefinition> subPartitionDefinitions) {
this.subPartitionDefinitions = subPartitionDefinitions;
}

@Override
public String toString() {
StringBuilder b = new StringBuilder();
b.append("PARTITION ").append(partitionName)
.append(" ").append(partitionOperation)
.append(" (").append(PlainSelect.getStringList(values))
.append(")");
b.append(subPartition ? "SUBPARTITION " : "PARTITION ").append(partitionName);
if (partitionOperation != null) {
b.append(" ").append(partitionOperation);
if (maxValue) {
b.append(" MAXVALUE");
} else {
b.append(" (").append(PlainSelect.getStringList(values)).append(")");
}
}
if (storageEngine != null) {
b.append(" ENGINE = ").append(storageEngine);
if (storageKeyword) {
b.append(" STORAGE");
}
appendOption(b, "ENGINE", storageEngine, storageEngineUseEquals);
}
appendOption(b, "COMMENT", comment, commentUseEquals);
appendOption(b, "DATA DIRECTORY", dataDirectory, dataDirectoryUseEquals);
appendOption(b, "INDEX DIRECTORY", indexDirectory, indexDirectoryUseEquals);
appendOption(b, "MAX_ROWS", maxRows, maxRowsUseEquals);
appendOption(b, "MIN_ROWS", minRows, minRowsUseEquals);
appendOption(b, "TABLESPACE", tablespace, tablespaceUseEquals);
if (subPartitionDefinitions != null && !subPartitionDefinitions.isEmpty()) {
b.append(" ").append(PlainSelect.getStringList(subPartitionDefinitions, true, true));
}
return b.toString();
}

private static void appendOption(StringBuilder builder, String name, String value,
boolean useEquals) {
if (value != null) {
builder.append(" ").append(name).append(useEquals ? " = " : " ").append(value);
}
}
}
Loading
Loading