You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by sk...@apache.org on 2021/06/11 17:16:06 UTC
[phoenix] branch 4.x updated: PHOENIX-6454: Add feature to
SchemaTool to get the DDL in specification (Addendum) (#1233)
This is an automated email from the ASF dual-hosted git repository.
skadam pushed a commit to branch 4.x
in repository https://gitbox.apache.org/repos/asf/phoenix.git
The following commit(s) were added to refs/heads/4.x by this push:
new b42a25b PHOENIX-6454: Add feature to SchemaTool to get the DDL in specification (Addendum) (#1233)
b42a25b is described below
commit b42a25b143e9805554dbbc5ab8dc85a8b3b1be2c
Author: Swaroopa Kadam <sw...@gmail.com>
AuthorDate: Fri Jun 11 10:15:58 2021 -0700
PHOENIX-6454: Add feature to SchemaTool to get the DDL in specification (Addendum) (#1233)
---
.../apache/phoenix/parse/CreateTableStatement.java | 15 +++++++
.../apache/phoenix/parse/PrimaryKeyConstraint.java | 10 ++---
.../phoenix/schema/SchemaToolSynthesisIT.java | 48 ++++++++++++++++------
.../it/resources/synthesis/alter_add_property.sql | 3 +-
.../resources/synthesis/alter_change_property.sql | 3 +-
.../src/it/resources/synthesis/alter_table_add.sql | 5 ++-
...alter_table_drop.sql => alter_table_add_pk.sql} | 19 ++++-----
.../it/resources/synthesis/alter_table_drop.sql | 3 +-
.../resources/synthesis/alter_table_multiple.sql | 3 +-
.../{alter_table_add.sql => drop_create_table.sql} | 15 ++++++-
.../resources/synthesis/mismatched_entity_name.sql | 3 +-
.../org/apache/phoenix/schema/SchemaSQLUtil.java | 6 ++-
.../phoenix/schema/SchemaSynthesisProcessor.java | 19 ++++++++-
13 files changed, 113 insertions(+), 39 deletions(-)
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/parse/CreateTableStatement.java b/phoenix-core/src/main/java/org/apache/phoenix/parse/CreateTableStatement.java
index 62c68a0..fb7186a 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/parse/CreateTableStatement.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/parse/CreateTableStatement.java
@@ -60,6 +60,21 @@ public class CreateTableStatement extends MutableStatement {
this.immutableRows = createTable.immutableRows;
}
+ public CreateTableStatement(CreateTableStatement createTable, PrimaryKeyConstraint pkConstraint,
+ List<ColumnDef> columns) {
+ this.tableName = createTable.tableName;
+ this.tableType = createTable.tableType;
+ this.columns = ImmutableList.copyOf(columns);
+ this.pkConstraint = pkConstraint;
+ this.splitNodes = createTable.splitNodes;
+ this.bindCount = createTable.bindCount;
+ this.props = createTable.props;
+ this.ifNotExists = createTable.ifNotExists;
+ this.baseTableName = createTable.baseTableName;
+ this.whereClause = createTable.whereClause;
+ this.immutableRows = createTable.immutableRows;
+ }
+
public CreateTableStatement(CreateTableStatement createTable, ListMultimap<String,Pair<String,Object>> props, List<ColumnDef> columns) {
this.tableName = createTable.tableName;
this.tableType = createTable.tableType;
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/parse/PrimaryKeyConstraint.java b/phoenix-core/src/main/java/org/apache/phoenix/parse/PrimaryKeyConstraint.java
index eac9996..00d632d 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/parse/PrimaryKeyConstraint.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/parse/PrimaryKeyConstraint.java
@@ -36,7 +36,7 @@ public class PrimaryKeyConstraint extends NamedNode {
private final Map<ColumnName, Pair<ColumnName, Boolean>> columnNameToRowTimestamp;
private final int numColumnsWithRowTimestamp;
- PrimaryKeyConstraint(String name, List<ColumnDefInPkConstraint> columnDefs) {
+ public PrimaryKeyConstraint(String name, List<ColumnDefInPkConstraint> columnDefs) {
super(name);
if (columnDefs == null) {
this.columns = Collections.<Pair<ColumnName, SortOrder>>emptyList();
@@ -95,13 +95,13 @@ public class PrimaryKeyConstraint extends NamedNode {
@Override
public String toString() {
StringBuffer sb = new StringBuffer();
- for(Map.Entry<ColumnName, Pair<ColumnName, SortOrder>> entry : columnNameToSortOrder.entrySet()) {
+ for (Pair<ColumnName, SortOrder> entry : columns) {
if(sb.length()!=0) {
sb.append(", ");
}
- sb.append(entry.getKey());
- if(entry.getValue().getSecond() != SortOrder.getDefault()) {
- sb.append(" "+entry.getValue().getSecond());
+ sb.append(entry.getFirst());
+ if(entry.getSecond() != SortOrder.getDefault()) {
+ sb.append(" "+entry.getSecond());
}
}
return sb.toString();
diff --git a/phoenix-tools/src/it/java/org/apache/phoenix/schema/SchemaToolSynthesisIT.java b/phoenix-tools/src/it/java/org/apache/phoenix/schema/SchemaToolSynthesisIT.java
index d41e0ea..b44db32 100644
--- a/phoenix-tools/src/it/java/org/apache/phoenix/schema/SchemaToolSynthesisIT.java
+++ b/phoenix-tools/src/it/java/org/apache/phoenix/schema/SchemaToolSynthesisIT.java
@@ -39,11 +39,11 @@ public class SchemaToolSynthesisIT {
// Adding new column RELATED_COMMAND
public void testCreateTableStatement_addColumn() throws Exception {
String expected = "CREATE TABLE IF NOT EXISTS TEST.SAMPLE_TABLE\n"
- + "(ORG_ID CHAR(15) NOT NULL,\n" + "SOME_ANOTHER_ID BIGINT NOT NULL,\n"
+ + "(ORG_ID CHAR(15) NOT NULL,\n" + "SOME_ANOTHER_ID BIGINT NOT NULL,\n" + "SECOND_ID BIGINT NOT NULL,\n"
+ "TYPE VARCHAR,\n" + "STATUS VARCHAR,\n" + "START_TIMESTAMP BIGINT,\n"
+ "END_TIMESTAMP BIGINT,\n" + "PARAMS VARCHAR,\n" + "RESULT VARCHAR,\n"
- + "RELATED_COMMAND BIGINT\n"
- + "CONSTRAINT PK PRIMARY KEY (ORG_ID, SOME_ANOTHER_ID))\n"
+ + "RELATED_COMMAND BIGINT DEFAULT 100\n"
+ + "CONSTRAINT PK PRIMARY KEY (ORG_ID, SOME_ANOTHER_ID, SECOND_ID))\n"
+ "VERSIONS=1,MULTI_TENANT=false,REPLICATION_SCOPE=1,TTL=31536000";
String baseDDL = filePath+"/alter_table_add.sql";
runAndVerify(expected, baseDDL);
@@ -53,10 +53,10 @@ public class SchemaToolSynthesisIT {
// Dropping TYPE column
public void testCreateTableStatement_dropColumn() throws Exception {
String expected = "CREATE TABLE IF NOT EXISTS TEST.SAMPLE_TABLE\n"
- + "(ORG_ID CHAR(15) NOT NULL,\n" + "SOME_ANOTHER_ID BIGINT NOT NULL,\n"
+ + "(ORG_ID CHAR(15) NOT NULL,\n" + "SOME_ANOTHER_ID BIGINT NOT NULL,\n" + "SECOND_ID BIGINT NOT NULL,\n"
+ "STATUS VARCHAR,\n" + "START_TIMESTAMP BIGINT,\n" + "END_TIMESTAMP BIGINT,\n"
+ "PARAMS VARCHAR,\n" + "RESULT VARCHAR\n"
- + "CONSTRAINT PK PRIMARY KEY (ORG_ID, SOME_ANOTHER_ID))\n"
+ + "CONSTRAINT PK PRIMARY KEY (ORG_ID, SOME_ANOTHER_ID, SECOND_ID))\n"
+ "VERSIONS=1,MULTI_TENANT=false,REPLICATION_SCOPE=1,TTL=31536000";
String baseDDL = filePath+"/alter_table_drop.sql";
runAndVerify(expected, baseDDL);
@@ -66,10 +66,10 @@ public class SchemaToolSynthesisIT {
// Changing REPLICATION SCOPE from 1 to 0
public void testCreateTableStatement_changeProperty() throws Exception {
String expected = "CREATE TABLE IF NOT EXISTS TEST.SAMPLE_TABLE\n"
- + "(ORG_ID CHAR(15) NOT NULL,\n" + "SOME_ANOTHER_ID BIGINT NOT NULL,\n"
+ + "(ORG_ID CHAR(15) NOT NULL,\n" + "SOME_ANOTHER_ID BIGINT NOT NULL,\n" + "SECOND_ID BIGINT NOT NULL,\n"
+ "TYPE VARCHAR,\n" + "STATUS VARCHAR,\n" + "START_TIMESTAMP BIGINT,\n"
+ "END_TIMESTAMP BIGINT,\n" + "PARAMS VARCHAR,\n" + "RESULT VARCHAR\n"
- + "CONSTRAINT PK PRIMARY KEY (ORG_ID, SOME_ANOTHER_ID))\n"
+ + "CONSTRAINT PK PRIMARY KEY (ORG_ID, SOME_ANOTHER_ID, SECOND_ID))\n"
+ "MULTI_TENANT=false,REPLICATION_SCOPE=0,TTL=31536000,VERSIONS=1";
String baseDDL = filePath+"/alter_change_property.sql";
runAndVerify(expected, baseDDL);
@@ -79,10 +79,10 @@ public class SchemaToolSynthesisIT {
// Adding DISABLE_MIGRATION property
public void testCreateTableStatement_addProperty() throws Exception {
String expected = "CREATE TABLE IF NOT EXISTS TEST.SAMPLE_TABLE\n"
- + "(ORG_ID CHAR(15) NOT NULL,\n" + "SOME_ANOTHER_ID BIGINT NOT NULL,\n"
+ + "(ORG_ID CHAR(15) NOT NULL,\n" + "SOME_ANOTHER_ID BIGINT NOT NULL,\n" + "SECOND_ID BIGINT NOT NULL,\n"
+ "TYPE VARCHAR,\n" + "STATUS VARCHAR,\n" + "START_TIMESTAMP BIGINT,\n"
+ "END_TIMESTAMP BIGINT,\n" + "PARAMS VARCHAR,\n" + "RESULT VARCHAR\n"
- + "CONSTRAINT PK PRIMARY KEY (ORG_ID, SOME_ANOTHER_ID))\n"
+ + "CONSTRAINT PK PRIMARY KEY (ORG_ID, SOME_ANOTHER_ID, SECOND_ID))\n"
+ "DISABLE_MIGRATION=true,MULTI_TENANT=false,REPLICATION_SCOPE=1,TTL=31536000,VERSIONS=1";
String baseDDL = filePath+"/alter_add_property.sql";
runAndVerify(expected, baseDDL);
@@ -96,7 +96,7 @@ public class SchemaToolSynthesisIT {
+ "SOME_ID CHAR(15) NOT NULL,\n" + "DOUBLE1 DECIMAL(12,3),\n"
+ "IS_BOOLEAN BOOLEAN,\n" + "RELATE CHAR(15),\n" + "TEXT1 VARCHAR,\n"
+ "TEXT_READ_ONLY VARCHAR,\n" + "NEW_COLUMN VARCHAR(20)\n"
- + "CONSTRAINT PKVIEW PRIMARY KEY (DATE_TIME1 DESC, SOME_ID, INT1))\n"
+ + "CONSTRAINT PKVIEW PRIMARY KEY (DATE_TIME1 DESC, INT1, SOME_ID))\n"
+ "AS SELECT * FROM TEST.SAMPLE_TABLE_VIEW WHERE FILTER_PREFIX = 'abc'";
String baseDDL = filePath+"/alter_view_add.sql";
runAndVerify(expected, baseDDL);
@@ -109,7 +109,7 @@ public class SchemaToolSynthesisIT {
+ "(DATE_TIME1 DATE NOT NULL,\n" + "INT1 BIGINT NOT NULL,\n"
+ "SOME_ID CHAR(15) NOT NULL,\n" + "IS_BOOLEAN BOOLEAN,\n" + "RELATE CHAR(15),\n"
+ "TEXT1 VARCHAR,\n" + "TEXT_READ_ONLY VARCHAR\n"
- + "CONSTRAINT PKVIEW PRIMARY KEY (DATE_TIME1 DESC, SOME_ID, INT1))\n"
+ + "CONSTRAINT PKVIEW PRIMARY KEY (DATE_TIME1 DESC, INT1, SOME_ID))\n"
+ "AS SELECT * FROM TEST.SAMPLE_TABLE_VIEW WHERE FILTER_PREFIX = 'abc'";
String baseDDL = filePath+"/alter_view_drop.sql";
runAndVerify(expected, baseDDL);
@@ -145,6 +145,28 @@ public class SchemaToolSynthesisIT {
@Test
// drop table
+ public void testCreateTableStatement_dropRecreateTable() throws Exception {
+ String expected = "CREATE TABLE IF NOT EXISTS TEST.SAMPLE_TABLE (\n"
+ + " ORG_ID CHAR(15) NOT NULL,\n" + " SOME_ANOTHER_ID BIGINT NOT NULL,\n"
+ + " TYPE VARCHAR,\n" + " STATUS VARCHAR,\n" + " START_TIMESTAMP BIGINT,\n"
+ + " END_TIMESTAMP BIGINT,\n" + " PARAMS VARCHAR, RESULT VARCHAR\n"
+ + " CONSTRAINT PK PRIMARY KEY (ORG_ID, SOME_ANOTHER_ID)\n"
+ + ") VERSIONS=1,MULTI_TENANT=FALSE,REPLICATION_SCOPE=1,TTL=31536000";
+ String baseDDL = filePath+"/drop_create_table.sql";
+ runAndVerify(expected, baseDDL);
+ }
+
+ @Test
+ // drop table
+ public void testCreateTableStatement_add_pk() throws Exception {
+ String expected = "CREATE TABLE IF NOT EXISTS TEST.TABLE_1\n" + "(STATE CHAR(1) NOT NULL,\n"
+ + "SOME_ID VARCHAR\n" + "CONSTRAINT PK PRIMARY KEY (STATE, SOME_ID))";
+ String baseDDL = filePath+"/alter_table_add_pk.sql";
+ runAndVerify(expected, baseDDL);
+ }
+
+ @Test
+ // drop table
public void testCreateIndexStatement_dropIndex() throws Exception {
String expected = "";
String baseDDL = filePath+"/drop_index.sql";
@@ -161,11 +183,11 @@ public class SchemaToolSynthesisIT {
// Alter DDL file can have multiple alter statements
public void testMultipleAlterDDL() throws Exception {
String expected = "CREATE TABLE IF NOT EXISTS TEST.SAMPLE_TABLE\n"
- + "(ORG_ID CHAR(15) NOT NULL,\n" + "SOME_ANOTHER_ID BIGINT NOT NULL,\n"
+ + "(ORG_ID CHAR(15) NOT NULL,\n" + "SOME_ANOTHER_ID BIGINT NOT NULL,\n" + "SECOND_ID BIGINT NOT NULL,\n"
+ "TYPE VARCHAR,\n" + "STATUS VARCHAR,\n" + "START_TIMESTAMP BIGINT,\n"
+ "END_TIMESTAMP BIGINT,\n" + "PARAMS VARCHAR,\n" + "RESULT VARCHAR,\n"
+ "SOME_NEW_COLUMN BIGINT\n"
- + "CONSTRAINT PK PRIMARY KEY (ORG_ID, SOME_ANOTHER_ID))\n"
+ + "CONSTRAINT PK PRIMARY KEY (ORG_ID, SOME_ANOTHER_ID, SECOND_ID))\n"
+ "MULTI_TENANT=false,REPLICATION_SCOPE=1,TTL=2000,VERSIONS=1";
String baseDDL = filePath+"/alter_table_multiple.sql";
runAndVerify(expected, baseDDL);
diff --git a/phoenix-tools/src/it/resources/synthesis/alter_add_property.sql b/phoenix-tools/src/it/resources/synthesis/alter_add_property.sql
index bb436f7..1860c3e 100644
--- a/phoenix-tools/src/it/resources/synthesis/alter_add_property.sql
+++ b/phoenix-tools/src/it/resources/synthesis/alter_add_property.sql
@@ -18,12 +18,13 @@
CREATE TABLE IF NOT EXISTS TEST.SAMPLE_TABLE (
ORG_ID CHAR(15) NOT NULL,
SOME_ANOTHER_ID BIGINT NOT NULL,
+ SECOND_ID BIGINT NOT NULL,
TYPE VARCHAR,
STATUS VARCHAR,
START_TIMESTAMP BIGINT,
END_TIMESTAMP BIGINT,
PARAMS VARCHAR, RESULT VARCHAR
- CONSTRAINT PK PRIMARY KEY (ORG_ID, SOME_ANOTHER_ID)
+ CONSTRAINT PK PRIMARY KEY (ORG_ID, SOME_ANOTHER_ID, SECOND_ID)
) VERSIONS=1,MULTI_TENANT=FALSE,REPLICATION_SCOPE=1,TTL=31536000;
ALTER TABLE TEST.SAMPLE_TABLE SET DISABLE_MIGRATION=true;
\ No newline at end of file
diff --git a/phoenix-tools/src/it/resources/synthesis/alter_change_property.sql b/phoenix-tools/src/it/resources/synthesis/alter_change_property.sql
index 79d42a2..7e01a46 100644
--- a/phoenix-tools/src/it/resources/synthesis/alter_change_property.sql
+++ b/phoenix-tools/src/it/resources/synthesis/alter_change_property.sql
@@ -18,12 +18,13 @@
CREATE TABLE IF NOT EXISTS TEST.SAMPLE_TABLE (
ORG_ID CHAR(15) NOT NULL,
SOME_ANOTHER_ID BIGINT NOT NULL,
+ SECOND_ID BIGINT NOT NULL,
TYPE VARCHAR,
STATUS VARCHAR,
START_TIMESTAMP BIGINT,
END_TIMESTAMP BIGINT,
PARAMS VARCHAR, RESULT VARCHAR
- CONSTRAINT PK PRIMARY KEY (ORG_ID, SOME_ANOTHER_ID)
+ CONSTRAINT PK PRIMARY KEY (ORG_ID, SOME_ANOTHER_ID, SECOND_ID)
) VERSIONS=1,MULTI_TENANT=FALSE,REPLICATION_SCOPE=1,TTL=31536000;
ALTER TABLE TEST.SAMPLE_TABLE SET REPLICATION_SCOPE=0;
\ No newline at end of file
diff --git a/phoenix-tools/src/it/resources/synthesis/alter_table_add.sql b/phoenix-tools/src/it/resources/synthesis/alter_table_add.sql
index a22170f..53ef07d 100644
--- a/phoenix-tools/src/it/resources/synthesis/alter_table_add.sql
+++ b/phoenix-tools/src/it/resources/synthesis/alter_table_add.sql
@@ -18,12 +18,13 @@
CREATE TABLE IF NOT EXISTS TEST.SAMPLE_TABLE (
ORG_ID CHAR(15) NOT NULL,
SOME_ANOTHER_ID BIGINT NOT NULL,
+ SECOND_ID BIGINT NOT NULL,
TYPE VARCHAR,
STATUS VARCHAR,
START_TIMESTAMP BIGINT,
END_TIMESTAMP BIGINT,
PARAMS VARCHAR, RESULT VARCHAR
- CONSTRAINT PK PRIMARY KEY (ORG_ID, SOME_ANOTHER_ID)
+ CONSTRAINT PK PRIMARY KEY (ORG_ID, SOME_ANOTHER_ID, SECOND_ID)
) VERSIONS=1,MULTI_TENANT=FALSE,REPLICATION_SCOPE=1,TTL=31536000;
-ALTER TABLE TEST.SAMPLE_TABLE ADD IF NOT EXISTS RELATED_COMMAND BIGINT NULL;
\ No newline at end of file
+ALTER TABLE TEST.SAMPLE_TABLE ADD IF NOT EXISTS RELATED_COMMAND BIGINT DEFAULT 100;
\ No newline at end of file
diff --git a/phoenix-tools/src/it/resources/synthesis/alter_table_drop.sql b/phoenix-tools/src/it/resources/synthesis/alter_table_add_pk.sql
similarity index 66%
copy from phoenix-tools/src/it/resources/synthesis/alter_table_drop.sql
copy to phoenix-tools/src/it/resources/synthesis/alter_table_add_pk.sql
index 587adb8..5d9a58b 100644
--- a/phoenix-tools/src/it/resources/synthesis/alter_table_drop.sql
+++ b/phoenix-tools/src/it/resources/synthesis/alter_table_add_pk.sql
@@ -15,15 +15,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-CREATE TABLE IF NOT EXISTS TEST.SAMPLE_TABLE (
- ORG_ID CHAR(15) NOT NULL,
- SOME_ANOTHER_ID BIGINT NOT NULL,
- TYPE VARCHAR,
- STATUS VARCHAR,
- START_TIMESTAMP BIGINT,
- END_TIMESTAMP BIGINT,
- PARAMS VARCHAR, RESULT VARCHAR
- CONSTRAINT PK PRIMARY KEY (ORG_ID, SOME_ANOTHER_ID)
-) VERSIONS=1,MULTI_TENANT=FALSE,REPLICATION_SCOPE=1,TTL=31536000;
+CREATE TABLE IF NOT EXISTS TEST.TABLE_1 (
+ STATE CHAR(1) NOT NULL,
+ CONSTRAINT PK PRIMARY KEY
+ (
+ STATE
+ )
+);
-ALTER TABLE TEST.SAMPLE_TABLE DROP COLUMN TYPE;
\ No newline at end of file
+ALTER TABLE TEST.TABLE_1 ADD IF NOT EXISTS SOME_ID VARCHAR NULL PRIMARY KEY;
\ No newline at end of file
diff --git a/phoenix-tools/src/it/resources/synthesis/alter_table_drop.sql b/phoenix-tools/src/it/resources/synthesis/alter_table_drop.sql
index 587adb8..a03a9ef 100644
--- a/phoenix-tools/src/it/resources/synthesis/alter_table_drop.sql
+++ b/phoenix-tools/src/it/resources/synthesis/alter_table_drop.sql
@@ -18,12 +18,13 @@
CREATE TABLE IF NOT EXISTS TEST.SAMPLE_TABLE (
ORG_ID CHAR(15) NOT NULL,
SOME_ANOTHER_ID BIGINT NOT NULL,
+ SECOND_ID BIGINT NOT NULL,
TYPE VARCHAR,
STATUS VARCHAR,
START_TIMESTAMP BIGINT,
END_TIMESTAMP BIGINT,
PARAMS VARCHAR, RESULT VARCHAR
- CONSTRAINT PK PRIMARY KEY (ORG_ID, SOME_ANOTHER_ID)
+ CONSTRAINT PK PRIMARY KEY (ORG_ID, SOME_ANOTHER_ID, SECOND_ID)
) VERSIONS=1,MULTI_TENANT=FALSE,REPLICATION_SCOPE=1,TTL=31536000;
ALTER TABLE TEST.SAMPLE_TABLE DROP COLUMN TYPE;
\ No newline at end of file
diff --git a/phoenix-tools/src/it/resources/synthesis/alter_table_multiple.sql b/phoenix-tools/src/it/resources/synthesis/alter_table_multiple.sql
index 4734722..313b261 100644
--- a/phoenix-tools/src/it/resources/synthesis/alter_table_multiple.sql
+++ b/phoenix-tools/src/it/resources/synthesis/alter_table_multiple.sql
@@ -18,12 +18,13 @@
CREATE TABLE IF NOT EXISTS TEST.SAMPLE_TABLE (
ORG_ID CHAR(15) NOT NULL,
SOME_ANOTHER_ID BIGINT NOT NULL,
+ SECOND_ID BIGINT NOT NULL,
TYPE VARCHAR,
STATUS VARCHAR,
START_TIMESTAMP BIGINT,
END_TIMESTAMP BIGINT,
PARAMS VARCHAR, RESULT VARCHAR
- CONSTRAINT PK PRIMARY KEY (ORG_ID, SOME_ANOTHER_ID)
+ CONSTRAINT PK PRIMARY KEY (ORG_ID, SOME_ANOTHER_ID, SECOND_ID)
) VERSIONS=1,MULTI_TENANT=FALSE,REPLICATION_SCOPE=1,TTL=31536000;
ALTER TABLE TEST.SAMPLE_TABLE SET TTL=2000;
diff --git a/phoenix-tools/src/it/resources/synthesis/alter_table_add.sql b/phoenix-tools/src/it/resources/synthesis/drop_create_table.sql
similarity index 74%
copy from phoenix-tools/src/it/resources/synthesis/alter_table_add.sql
copy to phoenix-tools/src/it/resources/synthesis/drop_create_table.sql
index a22170f..0acc00a 100644
--- a/phoenix-tools/src/it/resources/synthesis/alter_table_add.sql
+++ b/phoenix-tools/src/it/resources/synthesis/drop_create_table.sql
@@ -26,4 +26,17 @@ CREATE TABLE IF NOT EXISTS TEST.SAMPLE_TABLE (
CONSTRAINT PK PRIMARY KEY (ORG_ID, SOME_ANOTHER_ID)
) VERSIONS=1,MULTI_TENANT=FALSE,REPLICATION_SCOPE=1,TTL=31536000;
-ALTER TABLE TEST.SAMPLE_TABLE ADD IF NOT EXISTS RELATED_COMMAND BIGINT NULL;
\ No newline at end of file
+ALTER TABLE TEST.SAMPLE_TABLE ADD IF NOT EXISTS RELATED_COMMAND BIGINT NULL;
+
+DROP TABLE TEST.SAMPLE_TABLE CASCADE;
+
+CREATE TABLE IF NOT EXISTS TEST.SAMPLE_TABLE (
+ ORG_ID CHAR(15) NOT NULL,
+ SOME_ANOTHER_ID BIGINT NOT NULL,
+ TYPE VARCHAR,
+ STATUS VARCHAR,
+ START_TIMESTAMP BIGINT,
+ END_TIMESTAMP BIGINT,
+ PARAMS VARCHAR, RESULT VARCHAR
+ CONSTRAINT PK PRIMARY KEY (ORG_ID, SOME_ANOTHER_ID)
+) VERSIONS=1,MULTI_TENANT=FALSE,REPLICATION_SCOPE=1,TTL=31536000;
\ No newline at end of file
diff --git a/phoenix-tools/src/it/resources/synthesis/mismatched_entity_name.sql b/phoenix-tools/src/it/resources/synthesis/mismatched_entity_name.sql
index fc97d42..2921151 100644
--- a/phoenix-tools/src/it/resources/synthesis/mismatched_entity_name.sql
+++ b/phoenix-tools/src/it/resources/synthesis/mismatched_entity_name.sql
@@ -18,12 +18,13 @@
CREATE TABLE IF NOT EXISTS TEST.SAMPLE_TABLE (
ORG_ID CHAR(15) NOT NULL,
SOME_ANOTHER_ID BIGINT NOT NULL,
+ SECOND_ID BIGINT NOT NULL,
TYPE VARCHAR,
STATUS VARCHAR,
START_TIMESTAMP BIGINT,
END_TIMESTAMP BIGINT,
PARAMS VARCHAR, RESULT VARCHAR
- CONSTRAINT PK PRIMARY KEY (ORG_ID, SOME_ANOTHER_ID)
+ CONSTRAINT PK PRIMARY KEY (ORG_ID, SOME_ANOTHER_ID, SECOND_ID)
) VERSIONS=1,MULTI_TENANT=FALSE,REPLICATION_SCOPE=1,TTL=31536000;
ALTER VIEW TEST.SAMPLE_VIEW ADD NEW_COLUMN VARCHAR(20);
\ No newline at end of file
diff --git a/phoenix-tools/src/main/java/org/apache/phoenix/schema/SchemaSQLUtil.java b/phoenix-tools/src/main/java/org/apache/phoenix/schema/SchemaSQLUtil.java
index ed084e3..ed1bae7 100644
--- a/phoenix-tools/src/main/java/org/apache/phoenix/schema/SchemaSQLUtil.java
+++ b/phoenix-tools/src/main/java/org/apache/phoenix/schema/SchemaSQLUtil.java
@@ -67,7 +67,7 @@ public class SchemaSQLUtil {
sb.append(createStmt.getIndexTableName().getTableName()).append("\n")
.append("ON "+createStmt.getTable().getName())
.append("("+createStmt.getIndexConstraint().toString()).append(")");
- if (createStmt.getIncludeColumns()!=null) {
+ if (createStmt.getIncludeColumns()!=null && !createStmt.getIncludeColumns().isEmpty()) {
sb.append("\nINCLUDE ");
sb.append(getColumnListToString(createStmt.getIncludeColumns()));
}
@@ -137,6 +137,10 @@ public class SchemaSQLUtil {
buf.append(' ');
buf.append("NOT NULL");
}
+ if(cDef.getExpression()!=null) {
+ buf.append(" DEFAULT ");
+ buf.append(cDef.getExpression());
+ }
return buf.toString();
}
diff --git a/phoenix-tools/src/main/java/org/apache/phoenix/schema/SchemaSynthesisProcessor.java b/phoenix-tools/src/main/java/org/apache/phoenix/schema/SchemaSynthesisProcessor.java
index 23b2bbf..1d74f27 100644
--- a/phoenix-tools/src/main/java/org/apache/phoenix/schema/SchemaSynthesisProcessor.java
+++ b/phoenix-tools/src/main/java/org/apache/phoenix/schema/SchemaSynthesisProcessor.java
@@ -23,12 +23,14 @@ import org.apache.hadoop.hbase.util.Pair;
import org.apache.phoenix.parse.AddColumnStatement;
import org.apache.phoenix.parse.BindableStatement;
import org.apache.phoenix.parse.ColumnDef;
+import org.apache.phoenix.parse.ColumnDefInPkConstraint;
import org.apache.phoenix.parse.ColumnName;
import org.apache.phoenix.parse.CreateIndexStatement;
import org.apache.phoenix.parse.CreateTableStatement;
import org.apache.phoenix.parse.DropColumnStatement;
import org.apache.phoenix.parse.DropIndexStatement;
import org.apache.phoenix.parse.DropTableStatement;
+import org.apache.phoenix.parse.PrimaryKeyConstraint;
import org.apache.phoenix.parse.SQLParser;
import java.io.BufferedReader;
@@ -154,7 +156,22 @@ public class SchemaSynthesisProcessor implements SchemaProcessor {
} else {
newColDef.addAll(oldColDef);
newColDef.addAll(addStmt.getColumnDefs());
- newCreateStmt = new CreateTableStatement(createStmt, newColDef);
+ PrimaryKeyConstraint oldPKConstraint = createStmt.getPrimaryKeyConstraint();
+ List<ColumnDefInPkConstraint> pkList = new ArrayList<>();
+ for(Pair<ColumnName, SortOrder> entry : oldPKConstraint.getColumnNames()) {
+ ColumnDefInPkConstraint cd = new
+ ColumnDefInPkConstraint(entry.getFirst(), entry.getSecond(), oldPKConstraint.isColumnRowTimestamp(entry
+ .getFirst()));
+ pkList.add(cd);
+ }
+ for(ColumnDef cd : addStmt.getColumnDefs()) {
+ if(cd.isPK()) {
+ ColumnDefInPkConstraint cdpk = new ColumnDefInPkConstraint(cd.getColumnDefName(), cd.getSortOrder(), cd.isRowTimestamp());
+ pkList.add(cdpk);
+ }
+ }
+ PrimaryKeyConstraint pkConstraint = new PrimaryKeyConstraint(oldPKConstraint.getName(), pkList);
+ newCreateStmt = new CreateTableStatement(createStmt, pkConstraint, newColDef);
}
return newCreateStmt;
}