Repository: ambari Updated Branches: refs/heads/trunk 6c900f784 -> 21076d7d9
AMBARI-6193. Upgrading schema' failed during upgrading to 1.6.1. (mpapirkovskyy) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/21076d7d Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/21076d7d Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/21076d7d Branch: refs/heads/trunk Commit: 21076d7d99a1da4821236160bbda999ff1305384 Parents: 6c900f7 Author: Myroslav Papirkovskyy <mpapyrkovs...@hortonworks.com> Authored: Thu Jun 19 02:25:40 2014 +0300 Committer: Myroslav Papirkovskyy <mpapyrkovs...@hortonworks.com> Committed: Thu Jun 19 02:26:38 2014 +0300 ---------------------------------------------------------------------- .../ambari/server/orm/DBAccessorImpl.java | 18 +++------- .../server/upgrade/UpgradeCatalog161.java | 36 +++++++++++++++----- .../main/resources/Ambari-DDL-MySQL-CREATE.sql | 4 ++- .../main/resources/Ambari-DDL-Oracle-CREATE.sql | 6 ++-- .../resources/Ambari-DDL-Postgres-CREATE.sql | 9 +++-- .../Ambari-DDL-Postgres-EMBEDDED-CREATE.sql | 11 +++--- .../server/upgrade/UpgradeCatalog161Test.java | 26 +++++++------- 7 files changed, 66 insertions(+), 44 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/21076d7d/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java index fd39cf0..b39008e 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java @@ -221,13 +221,8 @@ public class DBAccessorImpl implements DBAccessor { @Override public boolean tableHasForeignKey(String tableName, String fkName) throws SQLException { DatabaseMetaData metaData = getDatabaseMetaData(); - String schemaFilter = null; - if (getDbType().equals(Configuration.ORACLE_DB_NAME)) { - // Optimization to not query everything - schemaFilter = configuration.getDatabaseUser(); - } - ResultSet rs = metaData.getImportedKeys(null, convertObjectName(schemaFilter), convertObjectName(tableName)); + ResultSet rs = metaData.getImportedKeys(null, null, convertObjectName(tableName)); if (rs != null) { try { @@ -241,6 +236,8 @@ public class DBAccessorImpl implements DBAccessor { } } + LOG.warn("FK {} not found for table {}", convertObjectName(fkName), convertObjectName(tableName)); + return false; } @@ -254,16 +251,11 @@ public class DBAccessorImpl implements DBAccessor { public boolean tableHasForeignKey(String tableName, String referenceTableName, String[] keyColumns, String[] referenceColumns) throws SQLException { DatabaseMetaData metaData = getDatabaseMetaData(); - String schemaFilter = null; - if (getDbType().equals(Configuration.ORACLE_DB_NAME)) { - // Optimization to not query everything - schemaFilter = configuration.getDatabaseUser(); - } //NB: reference table contains pk columns while key table contains fk columns - ResultSet rs = metaData.getCrossReference(null, convertObjectName(schemaFilter), convertObjectName(referenceTableName), - null, convertObjectName(schemaFilter), convertObjectName(tableName)); + ResultSet rs = metaData.getCrossReference(null, null, convertObjectName(referenceTableName), + null, null, convertObjectName(tableName)); List<String> pkColumns = new ArrayList<String>(referenceColumns.length); for (String referenceColumn : referenceColumns) { http://git-wip-us.apache.org/repos/asf/ambari/blob/21076d7d/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog161.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog161.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog161.java index 2763b86..a038194 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog161.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog161.java @@ -93,15 +93,18 @@ public class UpgradeCatalog161 extends AbstractUpgradeCatalog { new DBAccessor.DBColumnInfo("user_name", String.class, 255, " ", false)); dbAccessor.dropConstraint("viewinstancedata", "FK_viewinstdata_view_name"); + dbAccessor.dropConstraint("viewinstanceproperty", "FK_viewinstprop_view_name"); + dbAccessor.dropConstraint("viewentity", "FK_viewentity_view_name"); //modify primary key of viewinstancedata if (Configuration.ORACLE_DB_NAME.equals(getDbType()) || - Configuration.MYSQL_DB_NAME.equals(getDbType())) { - dbAccessor.executeQuery("alter table viewinstance drop primary key", true); - dbAccessor.executeQuery("alter table viewinstancedata drop primary key", true); + Configuration.MYSQL_DB_NAME.equals(getDbType()) || + Configuration.DERBY_DB_NAME.equals(getDbType())) { + dbAccessor.executeQuery("ALTER TABLE viewinstance DROP PRIMARY KEY", true); + dbAccessor.executeQuery("ALTER TABLE viewinstancedata DROP PRIMARY KEY", true); }else if (Configuration.POSTGRES_DB_NAME.equals(getDbType())) { - dbAccessor.executeQuery("alter table viewinstance drop constraint viewinstance_pkey", true); - dbAccessor.executeQuery("alter table viewinstancedata drop constraint viewinstancedata_pkey", true); + dbAccessor.executeQuery("ALTER TABLE viewinstance DROP CONSTRAINT viewinstance_pkey CASCADE", true); + dbAccessor.executeQuery("ALTER TABLE viewinstancedata DROP CONSTRAINT viewinstancedata_pkey CASCADE", true); } @@ -130,7 +133,7 @@ public class UpgradeCatalog161 extends AbstractUpgradeCatalog { }else if (Configuration.POSTGRES_DB_NAME.equals(getDbType())) { if (dbAccessor.tableHasData("viewinstance")) { //window functions like row_number were added in 8.4, workaround for earlier versions (redhat/centos 5) - dbAccessor.executeQuery("CREATE sequence temp_seq START WITH 1"); + dbAccessor.executeQuery("CREATE SEQUENCE temp_seq START WITH 1"); dbAccessor.executeQuery("UPDATE viewinstance SET view_instance_id = nextval('temp_seq')"); dbAccessor.dropSequence("temp_seq"); } @@ -138,15 +141,30 @@ public class UpgradeCatalog161 extends AbstractUpgradeCatalog { } + if (Configuration.DERBY_DB_NAME.equals(getDbType())) { + dbAccessor.executeQuery("ALTER TABLE viewinstance ALTER COLUMN view_instance_id DEFAULT 0"); + dbAccessor.executeQuery("ALTER TABLE viewinstance ALTER COLUMN view_instance_id NOT NULL"); + dbAccessor.executeQuery("ALTER TABLE viewinstancedata ALTER COLUMN view_instance_id DEFAULT 0"); + dbAccessor.executeQuery("ALTER TABLE viewinstancedata ALTER COLUMN view_instance_id NOT NULL"); + dbAccessor.executeQuery("ALTER TABLE viewinstancedata ALTER COLUMN user_name DEFAULT ' '"); + dbAccessor.executeQuery("ALTER TABLE viewinstancedata ALTER COLUMN user_name NOT NULL"); + } + dbAccessor.executeQuery("alter table viewinstance add primary key (view_instance_id)"); dbAccessor.executeQuery("ALTER TABLE viewinstance ADD CONSTRAINT UQ_viewinstance_name UNIQUE (view_name, name)", true); + dbAccessor.executeQuery("ALTER TABLE viewinstance ADD CONSTRAINT UQ_viewinstance_name_id UNIQUE (view_instance_id, view_name, name)", true); + + dbAccessor.addFKConstraint("viewinstanceproperty", "FK_viewinstprop_view_name", + new String[]{"view_name", "view_instance_name"}, "viewinstance", new String[]{"view_name", "name"}, true); + dbAccessor.addFKConstraint("viewentity", "FK_viewentity_view_name", + new String[]{"view_name", "view_instance_name"}, "viewinstance", new String[]{"view_name", "name"}, true); if (Configuration.POSTGRES_DB_NAME.equals(getDbType())) { dbAccessor.executeQuery("UPDATE viewinstancedata AS vid SET view_instance_id = vi.view_instance_id " + "FROM viewinstance AS vi WHERE vi.name = vid.view_instance_name AND vi.view_name = vid.view_name"); } else if (Configuration.ORACLE_DB_NAME.equals(getDbType())) { - dbAccessor.executeQuery("UPDATE viewinstancedata AS vid SET view_instance_id = (" + - "SELECT view_instance_id FROM viewinstance AS vi WHERE vi.name = vid.view_instance_name AND vi.view_name = vid.view_name)"); + dbAccessor.executeQuery("UPDATE viewinstancedata vid SET view_instance_id = (" + + "SELECT view_instance_id FROM viewinstance vi WHERE vi.name = vid.view_instance_name AND vi.view_name = vid.view_name)"); }else if (Configuration.MYSQL_DB_NAME.equals(getDbType())) { dbAccessor.executeQuery("UPDATE viewinstancedata AS vid JOIN viewinstance AS vi " + "ON vi.name = vid.view_instance_name AND vi.view_name = vid.view_name " + @@ -156,7 +174,7 @@ public class UpgradeCatalog161 extends AbstractUpgradeCatalog { dbAccessor.executeQuery("alter table viewinstancedata add primary key (view_instance_id, name, user_name)"); dbAccessor.addFKConstraint("viewinstancedata", "FK_viewinstdata_view_name", new String[]{"view_instance_id", "view_name", "view_instance_name"}, - "viewinstance", new String[]{"view_instance_id", "view_name", "name"}, false); + "viewinstance", new String[]{"view_instance_id", "view_name", "name"}, true); long count = 1; http://git-wip-us.apache.org/repos/asf/ambari/blob/21076d7d/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql index 2e7b913..de7c3a6 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql @@ -106,13 +106,14 @@ ALTER TABLE blueprint_configuration ADD CONSTRAINT FK_cfg_blueprint_name FOREIGN ALTER TABLE hostgroup_configuration ADD CONSTRAINT FK_hg_cfg_bp_hg_name FOREIGN KEY (blueprint_name, hostgroup_name) REFERENCES hostgroup (blueprint_name, name); ALTER TABLE requestresourcefilter ADD CONSTRAINT FK_reqresfilter_req_id FOREIGN KEY (request_id) REFERENCES request (request_id); ALTER TABLE requestoperationlevel ADD CONSTRAINT FK_req_op_level_req_id FOREIGN KEY (request_id) REFERENCES request (request_id); +ALTER TABLE viewinstance ADD CONSTRAINT UQ_viewinstance_name UNIQUE (view_name, name); +ALTER TABLE viewinstance ADD CONSTRAINT UQ_viewinstance_name_id UNIQUE (view_instance_id, view_name, name); ALTER TABLE viewparameter ADD CONSTRAINT FK_viewparam_view_name FOREIGN KEY (view_name) REFERENCES viewmain(view_name); ALTER TABLE viewresource ADD CONSTRAINT FK_viewres_view_name FOREIGN KEY (view_name) REFERENCES viewmain(view_name); ALTER TABLE viewinstance ADD CONSTRAINT FK_viewinst_view_name FOREIGN KEY (view_name) REFERENCES viewmain(view_name); ALTER TABLE viewinstanceproperty ADD CONSTRAINT FK_viewinstprop_view_name FOREIGN KEY (view_name, view_instance_name) REFERENCES viewinstance(view_name, name); ALTER TABLE viewinstancedata ADD CONSTRAINT FK_viewinstdata_view_name FOREIGN KEY (view_instance_id, view_name, view_instance_name) REFERENCES viewinstance(view_instance_id, view_name, name); ALTER TABLE viewentity ADD CONSTRAINT FK_viewentity_view_name FOREIGN KEY (view_name, view_instance_name) REFERENCES viewinstance(view_name, name); -ALTER TABLE viewinstance ADD CONSTRAINT UQ_viewinstance_name UNIQUE (view_name, name); INSERT INTO ambari_sequences(sequence_name, value) values ('cluster_id_seq', 1); @@ -123,6 +124,7 @@ INSERT INTO ambari_sequences(sequence_name, value) values ('requestschedule_id_s INSERT INTO ambari_sequences(sequence_name, value) values ('resourcefilter_id_seq', 1); INSERT INTO ambari_sequences(sequence_name, value) values ('viewentity_id_seq', 0); INSERT INTO ambari_sequences(sequence_name, value) values ('operation_level_id_seq', 1); +INSERT INTO ambari_sequences(sequence_name, value) values ('view_instance_id_seq', 1) insert into roles(role_name) select 'admin' http://git-wip-us.apache.org/repos/asf/ambari/blob/21076d7d/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql index 62ce77a..870d066 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql @@ -54,7 +54,7 @@ CREATE TABLE blueprint_configuration (blueprint_name VARCHAR2(255) NOT NULL, typ CREATE TABLE hostgroup_configuration (blueprint_name VARCHAR2(255) NOT NULL, hostgroup_name VARCHAR2(255) NOT NULL, type_name VARCHAR2(255) NOT NULL, config_data CLOB NOT NULL, PRIMARY KEY(blueprint_name, hostgroup_name, type_name)); CREATE TABLE viewmain (view_name VARCHAR(255) NOT NULL, label VARCHAR(255), version VARCHAR(255), icon VARCHAR(255), icon64 VARCHAR(255), archive VARCHAR(255), PRIMARY KEY(view_name)); CREATE TABLE viewinstancedata (view_instance_id NUMBER(19), view_name VARCHAR(255) NOT NULL, view_instance_name VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, user_name VARCHAR(255) NOT NULL, value VARCHAR(2000) NOT NULL, PRIMARY KEY(view_instance_id, name, user_name)); -CREATE TABLE viewinstance (view_instance_id NUMBER(19), view_name VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, label VARCHAR(255), description VARCHAR(255), visible CHAR(1), icon VARCHAR(255), icon64 VARCHAR(255), PRIMARY KEY(view_name, name)); +CREATE TABLE viewinstance (view_instance_id NUMBER(19), view_name VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, label VARCHAR(255), description VARCHAR(255), visible CHAR(1), icon VARCHAR(255), icon64 VARCHAR(255), PRIMARY KEY(view_instance_id)); CREATE TABLE viewinstanceproperty (view_name VARCHAR(255) NOT NULL, view_instance_name VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, value VARCHAR(2000) NOT NULL, PRIMARY KEY(view_name, view_instance_name, name)); CREATE TABLE viewparameter (view_name VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, description VARCHAR(255), required CHAR(1), PRIMARY KEY(view_name, name)); CREATE TABLE viewresource (view_name VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, plural_name VARCHAR(255), id_property VARCHAR(255), subResource_names VARCHAR(255), provider VARCHAR(255), service VARCHAR(255), "resource" VARCHAR(255), PRIMARY KEY(view_name, name)); @@ -96,13 +96,14 @@ ALTER TABLE blueprint_configuration ADD CONSTRAINT FK_cfg_blueprint_name FOREIGN ALTER TABLE hostgroup_configuration ADD CONSTRAINT FK_hg_cfg_bp_hg_name FOREIGN KEY (blueprint_name, hostgroup_name) REFERENCES hostgroup(blueprint_name, name); ALTER TABLE requestresourcefilter ADD CONSTRAINT FK_reqresfilter_req_id FOREIGN KEY (request_id) REFERENCES request (request_id); ALTER TABLE requestoperationlevel ADD CONSTRAINT FK_req_op_level_req_id FOREIGN KEY (request_id) REFERENCES request (request_id); +ALTER TABLE viewinstance ADD CONSTRAINT UQ_viewinstance_name UNIQUE (view_name, name); +ALTER TABLE viewinstance ADD CONSTRAINT UQ_viewinstance_name_id UNIQUE (view_instance_id, view_name, name); ALTER TABLE viewparameter ADD CONSTRAINT FK_viewparam_view_name FOREIGN KEY (view_name) REFERENCES viewmain(view_name); ALTER TABLE viewresource ADD CONSTRAINT FK_viewres_view_name FOREIGN KEY (view_name) REFERENCES viewmain(view_name); ALTER TABLE viewinstance ADD CONSTRAINT FK_viewinst_view_name FOREIGN KEY (view_name) REFERENCES viewmain(view_name); ALTER TABLE viewinstanceproperty ADD CONSTRAINT FK_viewinstprop_view_name FOREIGN KEY (view_name, view_instance_name) REFERENCES viewinstance(view_name, name); ALTER TABLE viewinstancedata ADD CONSTRAINT FK_viewinstdata_view_name FOREIGN KEY (view_instance_id, view_name, view_instance_name) REFERENCES viewinstance(view_instance_id, view_name, name); ALTER TABLE viewentity ADD CONSTRAINT FK_viewentity_view_name FOREIGN KEY (view_name, view_instance_name) REFERENCES viewinstance(view_name, name); -ALTER TABLE viewinstance ADD CONSTRAINT UQ_viewinstance_name UNIQUE (view_name, name); INSERT INTO ambari_sequences(sequence_name, value) values ('host_role_command_id_seq', 0); INSERT INTO ambari_sequences(sequence_name, value) values ('user_id_seq', 1); @@ -112,6 +113,7 @@ INSERT INTO ambari_sequences(sequence_name, value) values ('requestschedule_id_s INSERT INTO ambari_sequences(sequence_name, value) values ('resourcefilter_id_seq', 1); INSERT INTO ambari_sequences(sequence_name, value) values ('viewentity_id_seq', 0); INSERT INTO ambari_sequences(sequence_name, value) values ('operation_level_id_seq', 1); +INSERT INTO ambari_sequences(sequence_name, value) values ('view_instance_id_seq', 1) INSERT INTO metainfo("metainfo_key", "metainfo_value") values ('version', '${ambariVersion}'); insert into Roles(role_name) http://git-wip-us.apache.org/repos/asf/ambari/blob/21076d7d/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql index f2a41c6..0b8f686 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql @@ -87,7 +87,7 @@ CREATE TABLE hostgroup_configuration (blueprint_name VARCHAR(255) NOT NULL, host CREATE TABLE viewmain (view_name VARCHAR(255) NOT NULL, label VARCHAR(255), version VARCHAR(255), icon VARCHAR(255), icon64 VARCHAR(255), archive VARCHAR(255), PRIMARY KEY(view_name)); CREATE TABLE viewinstancedata (view_instance_id BIGINT, view_name VARCHAR(255) NOT NULL, view_instance_name VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, user_name VARCHAR(255) NOT NULL, value VARCHAR(2000) NOT NULL, PRIMARY KEY(view_instance_id, name, user_name)); -CREATE TABLE viewinstance (view_instance_id BIGINT, view_name VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, label VARCHAR(255), description VARCHAR(255), visible CHAR(1), icon VARCHAR(255), icon64 VARCHAR(255), PRIMARY KEY(view_name, name)); +CREATE TABLE viewinstance (view_instance_id BIGINT, view_name VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, label VARCHAR(255), description VARCHAR(255), visible CHAR(1), icon VARCHAR(255), icon64 VARCHAR(255), PRIMARY KEY(view_instance_id)); CREATE TABLE viewinstanceproperty (view_name VARCHAR(255) NOT NULL, view_instance_name VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, value VARCHAR(2000) NOT NULL, PRIMARY KEY(view_name, view_instance_name, name)); CREATE TABLE viewparameter (view_name VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, description VARCHAR(255), required CHAR(1), PRIMARY KEY(view_name, name)); CREATE TABLE viewresource (view_name VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, plural_name VARCHAR(255), id_property VARCHAR(255), subResource_names VARCHAR(255), provider VARCHAR(255), service VARCHAR(255), resource VARCHAR(255), PRIMARY KEY(view_name, name)); @@ -128,13 +128,14 @@ ALTER TABLE blueprint_configuration ADD CONSTRAINT FK_cfg_blueprint_name FOREIGN ALTER TABLE hostgroup_configuration ADD CONSTRAINT FK_hg_cfg_bp_hg_name FOREIGN KEY (blueprint_name, hostgroup_name) REFERENCES hostgroup (blueprint_name, name); ALTER TABLE requestresourcefilter ADD CONSTRAINT FK_reqresfilter_req_id FOREIGN KEY (request_id) REFERENCES request (request_id); ALTER TABLE requestoperationlevel ADD CONSTRAINT FK_req_op_level_req_id FOREIGN KEY (request_id) REFERENCES request (request_id); +ALTER TABLE viewinstance ADD CONSTRAINT UQ_viewinstance_name UNIQUE (view_name, name); +ALTER TABLE viewinstance ADD CONSTRAINT UQ_viewinstance_name_id UNIQUE (view_instance_id, view_name, name); ALTER TABLE viewparameter ADD CONSTRAINT FK_viewparam_view_name FOREIGN KEY (view_name) REFERENCES viewmain(view_name); ALTER TABLE viewresource ADD CONSTRAINT FK_viewres_view_name FOREIGN KEY (view_name) REFERENCES viewmain(view_name); ALTER TABLE viewinstance ADD CONSTRAINT FK_viewinst_view_name FOREIGN KEY (view_name) REFERENCES viewmain(view_name); ALTER TABLE viewinstanceproperty ADD CONSTRAINT FK_viewinstprop_view_name FOREIGN KEY (view_name, view_instance_name) REFERENCES viewinstance(view_name, name); ALTER TABLE viewinstancedata ADD CONSTRAINT FK_viewinstdata_view_name FOREIGN KEY (view_instance_id, view_name, view_instance_name) REFERENCES viewinstance(view_instance_id, view_name, name); ALTER TABLE viewentity ADD CONSTRAINT FK_viewentity_view_name FOREIGN KEY (view_name, view_instance_name) REFERENCES viewinstance(view_name, name); -ALTER TABLE viewinstance ADD CONSTRAINT UQ_viewinstance_name UNIQUE (view_name, name); ---------inserting some data----------- @@ -154,7 +155,9 @@ BEGIN; union all select 'viewentity_id_seq', 0 union all - select 'operation_level_id_seq', 1; + select 'operation_level_id_seq', 1 + union all + select 'view_instance_id_seq', 1; INSERT INTO Roles (role_name) SELECT 'admin' http://git-wip-us.apache.org/repos/asf/ambari/blob/21076d7d/ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql index 6cc2d34..84215e3 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql @@ -133,8 +133,8 @@ GRANT ALL PRIVILEGES ON TABLE ambari.blueprint_configuration TO :username; GRANT ALL PRIVILEGES ON TABLE ambari.hostgroup_configuration TO :username; CREATE TABLE ambari.viewmain (view_name VARCHAR(255) NOT NULL, label VARCHAR(255), version VARCHAR(255), icon VARCHAR(255), icon64 VARCHAR(255), archive VARCHAR(255), PRIMARY KEY(view_name)); -CREATE TABLE ambari.viewinstancedata (view_instance_data_id BIGINT, view_name VARCHAR(255) NOT NULL, view_instance_name VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, user_name VARCHAR(255) NOT NULL, value VARCHAR(2000) NOT NULL, PRIMARY KEY(view_instance_data_id)); -CREATE TABLE ambari.viewinstance (view_name VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, label VARCHAR(255), description VARCHAR(255), visible CHAR(1), icon VARCHAR(255), icon64 VARCHAR(255), PRIMARY KEY(view_name, name)); +CREATE TABLE ambari.viewinstancedata (view_instance_id BIGINT, view_name VARCHAR(255) NOT NULL, view_instance_name VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, user_name VARCHAR(255) NOT NULL, value VARCHAR(2000) NOT NULL, PRIMARY KEY(view_instance_id, name, user_name)); +CREATE TABLE ambari.viewinstance (view_instance_id BIGINT, view_name VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, label VARCHAR(255), description VARCHAR(255), visible CHAR(1), icon VARCHAR(255), icon64 VARCHAR(255), PRIMARY KEY(view_instance_id)); CREATE TABLE ambari.viewinstanceproperty (view_name VARCHAR(255) NOT NULL, view_instance_name VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, value VARCHAR(2000) NOT NULL, PRIMARY KEY(view_name, view_instance_name, name)); CREATE TABLE ambari.viewparameter (view_name VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, description VARCHAR(255), required CHAR(1), PRIMARY KEY(view_name, name)); CREATE TABLE ambari.viewresource (view_name VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, plural_name VARCHAR(255), id_property VARCHAR(255), subResource_names VARCHAR(255), provider VARCHAR(255), service VARCHAR(255), resource VARCHAR(255), PRIMARY KEY(view_name, name)); @@ -183,13 +183,14 @@ ALTER TABLE ambari.blueprint_configuration ADD CONSTRAINT FK_cfg_blueprint_name ALTER TABLE ambari.hostgroup_configuration ADD CONSTRAINT FK_hg_cfg_bp_hg_name FOREIGN KEY (blueprint_name, hostgroup_name) REFERENCES ambari.hostgroup (blueprint_name, name); ALTER TABLE ambari.requestresourcefilter ADD CONSTRAINT FK_reqresfilter_req_id FOREIGN KEY (request_id) REFERENCES ambari.request (request_id); ALTER TABLE ambari.requestoperationlevel ADD CONSTRAINT FK_req_op_level_req_id FOREIGN KEY (request_id) REFERENCES ambari.request (request_id); +ALTER TABLE ambari.viewinstance ADD CONSTRAINT UQ_viewinstance_name UNIQUE (view_name, name); +ALTER TABLE ambari.viewinstance ADD CONSTRAINT UQ_viewinstance_name_id UNIQUE (view_instance_id, view_name, name); ALTER TABLE ambari.viewparameter ADD CONSTRAINT FK_viewparam_view_name FOREIGN KEY (view_name) REFERENCES ambari.viewmain(view_name); ALTER TABLE ambari.viewresource ADD CONSTRAINT FK_viewres_view_name FOREIGN KEY (view_name) REFERENCES ambari.viewmain(view_name); ALTER TABLE ambari.viewinstance ADD CONSTRAINT FK_viewinst_view_name FOREIGN KEY (view_name) REFERENCES ambari.viewmain(view_name); ALTER TABLE ambari.viewinstanceproperty ADD CONSTRAINT FK_viewinstprop_view_name FOREIGN KEY (view_name, view_instance_name) REFERENCES ambari.viewinstance(view_name, name); ALTER TABLE ambari.viewinstancedata ADD CONSTRAINT FK_viewinstdata_view_name FOREIGN KEY (view_instance_id, view_name, view_instance_name) REFERENCES ambari.viewinstance(view_instance_id, view_name, name); ALTER TABLE ambari.viewentity ADD CONSTRAINT FK_viewentity_view_name FOREIGN KEY (view_name, view_instance_name) REFERENCES ambari.viewinstance(view_name, name); -ALTER TABLE ambari.viewinstance ADD CONSTRAINT UQ_viewinstance_name UNIQUE (view_name, name); ---------inserting some data----------- @@ -209,7 +210,9 @@ INSERT INTO ambari.ambari_sequences (sequence_name, "value") union all select 'viewentity_id_seq', 0 union all - select 'operation_level_id_seq', 1; + select 'operation_level_id_seq', 1 + union all + select 'view_instance_id_seq', 1; INSERT INTO ambari.Roles (role_name) http://git-wip-us.apache.org/repos/asf/ambari/blob/21076d7d/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog161Test.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog161Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog161Test.java index 7f3c37f..284fd99 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog161Test.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog161Test.java @@ -35,6 +35,7 @@ import javax.persistence.EntityManager; import javax.persistence.EntityTransaction; import javax.persistence.TypedQuery; import java.lang.reflect.Field; +import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; @@ -42,15 +43,7 @@ import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertNull; import static junit.framework.Assert.assertTrue; -import static org.easymock.EasyMock.capture; -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.createMockBuilder; -import static org.easymock.EasyMock.createNiceMock; -import static org.easymock.EasyMock.createStrictMock; -import static org.easymock.EasyMock.eq; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.easymock.EasyMock.verify; +import static org.easymock.EasyMock.*; /** * UpgradeCatalog161 unit tests. @@ -62,6 +55,7 @@ public class UpgradeCatalog161Test { final DBAccessor dbAccessor = createNiceMock(DBAccessor.class); Configuration configuration = createNiceMock(Configuration.class); + ResultSet resultSet = createNiceMock(ResultSet.class); expect(configuration.getDatabaseUrl()).andReturn(Configuration.JDBC_IN_MEMORY_URL).anyTimes(); Capture<DBAccessor.DBColumnInfo> provisioningStateColumnCapture = new Capture<DBAccessor.DBColumnInfo>(); @@ -77,9 +71,17 @@ public class UpgradeCatalog161Test { setClustersConfigExpectations(dbAccessor, provisioningStateColumnCapture); setOperationLevelEntityConfigExpectations(dbAccessor, operationLevelEntityColumnCapture); setViewExpectations(dbAccessor, viewIconColumnCapture, viewIcon64ColumnCapture); + dbAccessor.addColumn(eq("viewinstance"), + anyObject(DBAccessor.DBColumnInfo.class)); setViewInstanceExpectations(dbAccessor, labelColumnCapture, descriptionColumnCapture, visibleColumnCapture, instanceIconColumnCapture, instanceIcon64ColumnCapture); - - replay(dbAccessor, configuration); + dbAccessor.executeSelect(anyObject(String.class)); + expectLastCall().andReturn(resultSet).anyTimes(); + resultSet.next(); + expectLastCall().andReturn(false).anyTimes(); + resultSet.close(); + expectLastCall().anyTimes(); + + replay(dbAccessor, configuration, resultSet); AbstractUpgradeCatalog upgradeCatalog = getUpgradeCatalog(dbAccessor); Class<?> c = AbstractUpgradeCatalog.class; Field f = c.getDeclaredField("configuration"); @@ -87,7 +89,7 @@ public class UpgradeCatalog161Test { f.set(upgradeCatalog, configuration); upgradeCatalog.executeDDLUpdates(); - verify(dbAccessor, configuration); + verify(dbAccessor, configuration, resultSet); assertClusterColumns(provisioningStateColumnCapture); assertOperationLevelEntityColumns(operationLevelEntityColumnCapture);