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);

Reply via email to