Repository: ambari
Updated Branches:
  refs/heads/trunk 6691a1742 -> 90e9e811b


AMBARI-10665. Internal Exception: org.postgresql.util.PSQLException: ERROR: 
column config_attributes does not exist (Emil Anca via rlevas)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/90e9e811
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/90e9e811
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/90e9e811

Branch: refs/heads/trunk
Commit: 90e9e811b5eca94d2597069ac5e563285455aa4e
Parents: 6691a17
Author: Emil Anca <[email protected]>
Authored: Thu May 7 15:46:37 2015 -0400
Committer: Robert Levas <[email protected]>
Committed: Thu May 7 15:46:37 2015 -0400

----------------------------------------------------------------------
 .../orm/entities/BlueprintConfigEntity.java     |  3 +-
 .../orm/entities/ClusterConfigEntity.java       |  2 +-
 .../orm/entities/HostGroupConfigEntity.java     |  3 +-
 .../server/upgrade/UpgradeCatalog170.java       | 25 +++++++++++----
 .../main/resources/Ambari-DDL-MySQL-CREATE.sql  |  4 +--
 .../resources/Ambari-DDL-Postgres-CREATE.sql    |  6 ++--
 .../Ambari-DDL-Postgres-EMBEDDED-CREATE.sql     |  6 ++--
 .../resources/Ambari-DDL-SQLServer-CREATE.sql   |  8 ++---
 .../server/upgrade/UpgradeCatalog170Test.java   | 33 +++++++++++++++-----
 9 files changed, 62 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/90e9e811/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/BlueprintConfigEntity.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/BlueprintConfigEntity.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/BlueprintConfigEntity.java
index b27f7ef..24b0ad2 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/BlueprintConfigEntity.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/BlueprintConfigEntity.java
@@ -50,7 +50,8 @@ public class BlueprintConfigEntity implements 
BlueprintConfiguration {
   private String configData;
 
   @Column(name = "config_attributes", nullable = true, insertable = true, 
updatable = false)
-  @Basic
+  @Basic(fetch = FetchType.LAZY)
+  @Lob
   private String configAttributes;
 
   @ManyToOne

http://git-wip-us.apache.org/repos/asf/ambari/blob/90e9e811/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterConfigEntity.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterConfigEntity.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterConfigEntity.java
index 67f804c..8ca2278 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterConfigEntity.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterConfigEntity.java
@@ -77,7 +77,7 @@ public class ClusterConfigEntity {
   private String configJson;
 
   @Basic(fetch = FetchType.LAZY)
-  @Column(name = "config_attributes", nullable = true, insertable = true, 
updatable = false, length = 32000)
+  @Column(name = "config_attributes", nullable = true, insertable = true, 
updatable = false)
   @Lob
   private String configAttributesJson;
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/90e9e811/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostGroupConfigEntity.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostGroupConfigEntity.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostGroupConfigEntity.java
index 49870fe..877f34b 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostGroupConfigEntity.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostGroupConfigEntity.java
@@ -56,7 +56,8 @@ public class HostGroupConfigEntity implements 
BlueprintConfiguration {
   private String configData;
 
   @Column(name = "config_attributes", nullable = true, insertable = true, 
updatable = false)
-  @Basic
+  @Basic(fetch = FetchType.LAZY)
+  @Lob
   private String configAttributes;
 
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/90e9e811/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java
index 879cf31..76b2a46 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java
@@ -257,12 +257,10 @@ public class UpgradeCatalog170 extends 
AbstractUpgradeCatalog {
 
     dbAccessor.insertRow("adminprivilege", new String[]{"privilege_id", 
"permission_id", "resource_id", "principal_id"}, new String[]{"1", "1", "1", 
"1"}, true);
 
-    if (databaseType == DatabaseType.ORACLE) {
-      dbAccessor.executeQuery("ALTER TABLE clusterconfig ADD config_attributes 
CLOB NULL");
-    } else {
-      DBColumnInfo clusterConfigAttributesColumn = new DBColumnInfo(
-          "config_attributes", String.class, 32000, null, true);
-      dbAccessor.addColumn("clusterconfig", clusterConfigAttributesColumn);
+    String [] configAttributesTableNames = {"clusterconfig", 
"hostgroup_configuration", "blueprint_configuration"};
+
+    for(String tableName : configAttributesTableNames) {
+      addConfigAttributesColumn(tableName);
     }
 
     // Add columns
@@ -496,6 +494,21 @@ public class UpgradeCatalog170 extends 
AbstractUpgradeCatalog {
   }
 
   /**
+   * @param tableName
+   * @throws SQLException
+   */
+  private void addConfigAttributesColumn(String tableName) throws SQLException 
{
+    final DatabaseType databaseType = configuration.getDatabaseType();
+    if (databaseType == DatabaseType.ORACLE) {
+      dbAccessor.executeQuery("ALTER TABLE " + tableName + " ADD 
config_attributes CLOB NULL");
+    } else {
+      DBColumnInfo clusterConfigAttributesColumn = new DBColumnInfo(
+          "config_attributes", Character[].class, null, null, true);
+      dbAccessor.addColumn(tableName, clusterConfigAttributesColumn);
+    }
+  }
+
+  /**
    * Note that you can't use dbAccessor.renameColumn(...) here as the column 
name is a reserved word and
    * thus requires custom approach for every database type.
    */

http://git-wip-us.apache.org/repos/asf/ambari/blob/90e9e811/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 3a3c52b..91173a0 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
@@ -413,7 +413,7 @@ CREATE TABLE blueprint_configuration (
   blueprint_name VARCHAR(255) NOT NULL,
   type_name VARCHAR(255) NOT NULL,
   config_data LONGTEXT NOT NULL,
-  config_attributes VARCHAR(32000),
+  config_attributes LONGTEXT,
   PRIMARY KEY(blueprint_name, type_name));
 
 CREATE TABLE hostgroup_configuration (
@@ -421,7 +421,7 @@ CREATE TABLE hostgroup_configuration (
   hostgroup_name VARCHAR(255) NOT NULL,
   type_name VARCHAR(255) NOT NULL,
   config_data LONGTEXT NOT NULL,
-  config_attributes TEXT,
+  config_attributes LONGTEXT,
   PRIMARY KEY(blueprint_name, hostgroup_name, type_name));
 
 CREATE TABLE viewmain (

http://git-wip-us.apache.org/repos/asf/ambari/blob/90e9e811/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 9fb0909..5983bc5 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
@@ -49,7 +49,7 @@ CREATE TABLE clusterconfig (
   cluster_id BIGINT NOT NULL,
   stack_id BIGINT NOT NULL,
   config_data TEXT NOT NULL,
-  config_attributes VARCHAR(32000),
+  config_attributes TEXT,
   create_timestamp BIGINT NOT NULL,
   PRIMARY KEY (config_id),
   FOREIGN KEY (stack_id) REFERENCES stack(stack_id));
@@ -410,7 +410,7 @@ CREATE TABLE blueprint_configuration (
   blueprint_name varchar(255) NOT NULL,
   type_name varchar(255) NOT NULL,
   config_data TEXT NOT NULL,
-  config_attributes varchar(32000),
+  config_attributes TEXT,
   PRIMARY KEY(blueprint_name, type_name));
 
 CREATE TABLE hostgroup_configuration (
@@ -418,7 +418,7 @@ CREATE TABLE hostgroup_configuration (
   hostgroup_name VARCHAR(255) NOT NULL,
   type_name VARCHAR(255) NOT NULL,
   config_data TEXT NOT NULL,
-  config_attributes varchar(32000),
+  config_attributes TEXT,
   PRIMARY KEY(blueprint_name, hostgroup_name, type_name));
 
 CREATE TABLE viewmain (

http://git-wip-us.apache.org/repos/asf/ambari/blob/90e9e811/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 ead0527..defc154 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
@@ -62,7 +62,7 @@ CREATE TABLE ambari.clusterconfig (
   cluster_id BIGINT NOT NULL,
   stack_id BIGINT NOT NULL,
   config_data TEXT NOT NULL,
-  config_attributes VARCHAR(32000),
+  config_attributes TEXT,
   create_timestamp BIGINT NOT NULL,
   PRIMARY KEY (config_id),
   FOREIGN KEY (stack_id) REFERENCES ambari.stack(stack_id));
@@ -458,7 +458,7 @@ CREATE TABLE ambari.blueprint_configuration (
   blueprint_name varchar(255) NOT NULL,
   type_name varchar(255) NOT NULL,
   config_data TEXT NOT NULL,
-  config_attributes varchar(32000),
+  config_attributes TEXT,
   PRIMARY KEY(blueprint_name, type_name));
 
 CREATE TABLE ambari.hostgroup_configuration (
@@ -466,7 +466,7 @@ CREATE TABLE ambari.hostgroup_configuration (
   hostgroup_name VARCHAR(255) NOT NULL,
   type_name VARCHAR(255) NOT NULL,
   config_data TEXT NOT NULL,
-  config_attributes varchar(32000),
+  config_attributes TEXT,
   PRIMARY KEY(blueprint_name, hostgroup_name, type_name));
 
 GRANT ALL PRIVILEGES ON TABLE ambari.blueprint TO :username;

http://git-wip-us.apache.org/repos/asf/ambari/blob/90e9e811/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql 
b/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
index f98fb05..a8cb7c1 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
@@ -475,8 +475,8 @@ CREATE TABLE hostgroup_component (
 CREATE TABLE blueprint_configuration (
   blueprint_name VARCHAR(255) NOT NULL,
   type_name VARCHAR(255) NOT NULL,
-  config_data TEXT NOT NULL,
-  config_attributes VARCHAR(8000),
+  config_data VARCHAR(MAX) NOT NULL,
+  config_attributes VARCHAR(MAX),
   PRIMARY KEY CLUSTERED (
     blueprint_name,
     type_name
@@ -487,8 +487,8 @@ CREATE TABLE hostgroup_configuration (
   blueprint_name VARCHAR(255) NOT NULL,
   hostgroup_name VARCHAR(255) NOT NULL,
   type_name VARCHAR(255) NOT NULL,
-  config_data TEXT NOT NULL,
-  config_attributes TEXT,
+  config_data VARCHAR(MAX) NOT NULL,
+  config_attributes VARCHAR(MAX),
   PRIMARY KEY CLUSTERED (
     blueprint_name,
     hostgroup_name,

http://git-wip-us.apache.org/repos/asf/ambari/blob/90e9e811/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog170Test.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog170Test.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog170Test.java
index 377c0f7..19e721d 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog170Test.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog170Test.java
@@ -185,6 +185,8 @@ public class UpgradeCatalog170Test {
     expectLastCall();
 
     Capture<DBAccessor.DBColumnInfo> clusterConfigAttributesColumnCapture = 
new Capture<DBAccessor.DBColumnInfo>();
+    Capture<DBAccessor.DBColumnInfo> hostgroupConfigAttributesColumnCapture = 
new Capture<DBAccessor.DBColumnInfo>();
+    Capture<DBAccessor.DBColumnInfo> blueprintConfigAttributesColumnCapture = 
new Capture<DBAccessor.DBColumnInfo>();
     Capture<DBAccessor.DBColumnInfo> maskColumnCapture = new 
Capture<DBAccessor.DBColumnInfo>();
     Capture<DBAccessor.DBColumnInfo> systemColumnCapture = new 
Capture<DBAccessor.DBColumnInfo>();
     Capture<DBAccessor.DBColumnInfo> maskedColumnCapture = new 
Capture<DBAccessor.DBColumnInfo>();
@@ -210,7 +212,9 @@ public class UpgradeCatalog170Test {
 
     setViewExpectations(dbAccessor, maskColumnCapture, systemColumnCapture);
     setViewParameterExpectations(dbAccessor, maskedColumnCapture);
-    setClusterConfigExpectations(dbAccessor, 
clusterConfigAttributesColumnCapture);
+    setConfigAttributesColumnExpectations(dbAccessor, 
clusterConfigAttributesColumnCapture, "clusterconfig");
+    setConfigAttributesColumnExpectations(dbAccessor, 
hostgroupConfigAttributesColumnCapture, "hostgroup_configuration");
+    setConfigAttributesColumnExpectations(dbAccessor, 
blueprintConfigAttributesColumnCapture, "blueprint_configuration");
     setStageExpectations(dbAccessor, stageCommandParamsColumnCapture, 
stageHostParamsColumnCapture);
 
     dbAccessor.createTable(eq("alert_definition"),
@@ -266,6 +270,8 @@ public class UpgradeCatalog170Test {
     verify(dbAccessor, configuration, resultSet, connection, stmt);
 
     assertClusterConfigColumns(clusterConfigAttributesColumnCapture);
+    assertHostgroupConfigColumns(hostgroupConfigAttributesColumnCapture);
+    assertBlueprintConfigColumns(blueprintConfigAttributesColumnCapture);
     assertViewColumns(maskColumnCapture, systemColumnCapture);
     assertViewParameterColumns(maskedColumnCapture);
     assertStageColumns(stageCommandParamsColumnCapture, 
stageHostParamsColumnCapture);
@@ -672,18 +678,31 @@ public class UpgradeCatalog170Test {
 
   private void assertClusterConfigColumns(Capture<DBAccessor.DBColumnInfo> 
clusterConfigAttributesColumnCapture) {
     DBAccessor.DBColumnInfo column = 
clusterConfigAttributesColumnCapture.getValue();
+    assertConfigAttriburesColumn(column);
+  }
+
+  private void assertHostgroupConfigColumns(Capture<DBAccessor.DBColumnInfo> 
hostgroupConfigAttributesColumnCapture) {
+    DBAccessor.DBColumnInfo column = 
hostgroupConfigAttributesColumnCapture.getValue();
+    assertConfigAttriburesColumn(column);
+  }
+
+  private void assertBlueprintConfigColumns(Capture<DBAccessor.DBColumnInfo> 
blueprintConfigAttributesColumnCapture) {
+    DBAccessor.DBColumnInfo column = 
blueprintConfigAttributesColumnCapture.getValue();
+    assertConfigAttriburesColumn(column);
+  }
+
+  private void assertConfigAttriburesColumn(DBAccessor.DBColumnInfo column) {
     assertEquals("config_attributes", column.getName());
-    assertEquals(32000, (int) column.getLength());
-    assertEquals(String.class, column.getType());
+    assertEquals(Character[].class, column.getType());
     assertEquals(null, column.getDefaultValue());
     assertTrue(column.isNullable());
   }
 
-  private void setClusterConfigExpectations(DBAccessor dbAccessor,
-                                   Capture<DBAccessor.DBColumnInfo> 
clusterConfigAttributesColumnCapture)
+  private void setConfigAttributesColumnExpectations(DBAccessor dbAccessor,
+                                   Capture<DBAccessor.DBColumnInfo> 
configAttributesColumnCapture, String tableName)
       throws SQLException {
-    dbAccessor.addColumn(eq("clusterconfig"),
-        capture(clusterConfigAttributesColumnCapture));
+    dbAccessor.addColumn(eq(tableName),
+        capture(configAttributesColumnCapture));
   }
 
   private void setStageExpectations(DBAccessor dbAccessor,

Reply via email to