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,
