AMBARI-7488. setNullable action for MySQL needs to be refactored.(vbrodetskyi)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/0833a91d Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/0833a91d Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/0833a91d Branch: refs/heads/branch-alerts-dev Commit: 0833a91d03a7f8e2fb2e007c1b033450f30a46f4 Parents: 0d22083 Author: Vitaly Brodetskyi <[email protected]> Authored: Thu Sep 25 18:10:55 2014 +0300 Committer: Vitaly Brodetskyi <[email protected]> Committed: Thu Sep 25 18:10:55 2014 +0300 ---------------------------------------------------------------------- .../main/java/org/apache/ambari/server/orm/DBAccessor.java | 6 +++--- .../java/org/apache/ambari/server/orm/DBAccessorImpl.java | 5 ++--- .../org/apache/ambari/server/orm/helpers/dbms/DbmsHelper.java | 7 +++---- .../apache/ambari/server/orm/helpers/dbms/DerbyHelper.java | 4 ++-- .../ambari/server/orm/helpers/dbms/GenericDbmsHelper.java | 7 +++---- .../apache/ambari/server/orm/helpers/dbms/MySqlHelper.java | 5 +++-- .../apache/ambari/server/orm/helpers/dbms/OracleHelper.java | 4 ++-- .../apache/ambari/server/orm/helpers/dbms/PostgresHelper.java | 4 ++-- .../org/apache/ambari/server/upgrade/UpgradeCatalog170.java | 6 +----- .../java/org/apache/ambari/server/orm/DBAccessorImplTest.java | 6 ++++-- 10 files changed, 25 insertions(+), 29 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/0833a91d/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessor.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessor.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessor.java index be18970..9eca8c0 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessor.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessor.java @@ -310,14 +310,14 @@ public interface DBAccessor { * * @param tableName * the name of the table (not {@code null}). - * @param columnName - * the name of the column to alter (not {@code null}). + * @param columnInfo + * the column object to get name and type of column (not {@code null}). * @param nullable * {@code true} to indicate that the column allows {@code NULL} * values, {@code false} otherwise. * @throws SQLException */ - public void setNullable(String tableName, String columnName, boolean nullable) + public void setNullable(String tableName, DBAccessor.DBColumnInfo columnInfo, boolean nullable) throws SQLException; /** http://git-wip-us.apache.org/repos/asf/ambari/blob/0833a91d/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 8586273..f9407f7 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 @@ -587,10 +587,9 @@ public class DBAccessorImpl implements DBAccessor { } @Override - public void setNullable(String tableName, String columnName, boolean nullable) + public void setNullable(String tableName, DBAccessor.DBColumnInfo columnInfo, boolean nullable) throws SQLException { - String statement = dbmsHelper.getSetNullableStatement(tableName, - columnName, nullable); + String statement = dbmsHelper.getSetNullableStatement(tableName, columnInfo, nullable); executeQuery(statement); } http://git-wip-us.apache.org/repos/asf/ambari/blob/0833a91d/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/DbmsHelper.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/DbmsHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/DbmsHelper.java index 52eac62..dcef71c 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/DbmsHelper.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/DbmsHelper.java @@ -77,13 +77,12 @@ public interface DbmsHelper { * * @param tableName * the table (not {@code null}). - * @param columnName - * the column to alert the nullable state of (not {@code null}). + * @param columnInfo + * the column object to get name and type of column (not {@code null}). * @param nullable * {@code true} to indicate that the column allows {@code NULL} * values, {@code false} otherwise. * @return the statement (never {@code null}). */ - String getSetNullableStatement(String tableName, String columnName, - boolean nullable); + String getSetNullableStatement(String tableName, DBAccessor.DBColumnInfo columnInfo, boolean nullable); } http://git-wip-us.apache.org/repos/asf/ambari/blob/0833a91d/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/DerbyHelper.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/DerbyHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/DerbyHelper.java index 5f39509..c012a77 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/DerbyHelper.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/DerbyHelper.java @@ -52,8 +52,8 @@ public class DerbyHelper extends GenericDbmsHelper { @Override public StringBuilder writeSetNullableString(StringBuilder builder, - String tableName, String columnName, boolean nullable) { - builder.append(" ALTER COLUMN ").append(columnName); + String tableName, DBAccessor.DBColumnInfo columnInfo, boolean nullable) { + builder.append(" ALTER COLUMN ").append(columnInfo.getName()); String nullStatement = nullable ? " NULL" : " NOT NULL"; builder.append(nullStatement); return builder; http://git-wip-us.apache.org/repos/asf/ambari/blob/0833a91d/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/GenericDbmsHelper.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/GenericDbmsHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/GenericDbmsHelper.java index a273265..0ee2920 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/GenericDbmsHelper.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/GenericDbmsHelper.java @@ -69,11 +69,10 @@ public class GenericDbmsHelper implements DbmsHelper { } @Override - public String getSetNullableStatement(String tableName, String columnName, - boolean nullable) { + public String getSetNullableStatement(String tableName, DBAccessor.DBColumnInfo columnInfo, boolean nullable) { StringBuilder stringBuilder = new StringBuilder(); writeAlterTableClause(stringBuilder, tableName); - writeSetNullableString(stringBuilder, tableName, columnName, nullable); + writeSetNullableString(stringBuilder, tableName, columnInfo, nullable); return stringBuilder.toString(); } @@ -115,7 +114,7 @@ public class GenericDbmsHelper implements DbmsHelper { } public StringBuilder writeSetNullableString(StringBuilder builder, - String tableName, String columnName, boolean nullable) { + String tableName, DBAccessor.DBColumnInfo columnInfo, boolean nullable) { throw new UnsupportedOperationException( "Column nullable modification not supported for generic DB"); } http://git-wip-us.apache.org/repos/asf/ambari/blob/0833a91d/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/MySqlHelper.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/MySqlHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/MySqlHelper.java index 841a854..4accda9 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/MySqlHelper.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/MySqlHelper.java @@ -54,8 +54,9 @@ public class MySqlHelper extends GenericDbmsHelper { @Override public StringBuilder writeSetNullableString(StringBuilder builder, - String tableName, String columnName, boolean nullable) { - builder.append(" MODIFY ").append(columnName); + String tableName, DBAccessor.DBColumnInfo columnInfo, boolean nullable) { + builder.append(" MODIFY ").append(columnInfo.getName()).append(" "); + writeColumnType(builder, columnInfo); String nullStatement = nullable ? " NULL" : " NOT NULL"; builder.append(nullStatement); return builder; http://git-wip-us.apache.org/repos/asf/ambari/blob/0833a91d/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/OracleHelper.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/OracleHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/OracleHelper.java index 4da8e8f..0059566 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/OracleHelper.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/OracleHelper.java @@ -46,8 +46,8 @@ public class OracleHelper extends GenericDbmsHelper { @Override public StringBuilder writeSetNullableString(StringBuilder builder, - String tableName, String columnName, boolean nullable) { - builder.append(" MODIFY ").append(columnName); + String tableName, DBAccessor.DBColumnInfo columnInfo, boolean nullable) { + builder.append(" MODIFY ").append(columnInfo.getName()); String nullStatement = nullable ? " NULL" : " NOT NULL"; builder.append(nullStatement); return builder; http://git-wip-us.apache.org/repos/asf/ambari/blob/0833a91d/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/PostgresHelper.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/PostgresHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/PostgresHelper.java index c3ad9c5..9de073a 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/PostgresHelper.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/PostgresHelper.java @@ -46,8 +46,8 @@ public class PostgresHelper extends GenericDbmsHelper { @Override public StringBuilder writeSetNullableString(StringBuilder builder, - String tableName, String columnName, boolean nullable) { - builder.append(" ALTER COLUMN ").append(columnName); + String tableName, DBAccessor.DBColumnInfo columnInfo, boolean nullable) { + builder.append(" ALTER COLUMN ").append(columnInfo.getName()); String nullStatement = nullable ? " SET NULL" : " SET NOT NULL"; builder.append(nullStatement); return builder; http://git-wip-us.apache.org/repos/asf/ambari/blob/0833a91d/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 7e7738c..35e80ff 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 @@ -366,11 +366,7 @@ public class UpgradeCatalog170 extends AbstractUpgradeCatalog { populateConfigVersions(); - if (Configuration.MYSQL_DB_NAME.equals(dbType)) { - dbAccessor.executeQuery("ALTER TABLE clusterconfig MODIFY version BIGINT NOT NULL"); - } else { - dbAccessor.setNullable("clusterconfig", "version", false); - } + dbAccessor.setNullable("clusterconfig", new DBColumnInfo("version", Long.class, null), false); dbAccessor.executeQuery("ALTER TABLE clusterconfig ADD CONSTRAINT UQ_config_type_tag UNIQUE (cluster_id, type_name, version_tag)", true); dbAccessor.executeQuery("ALTER TABLE clusterconfig ADD CONSTRAINT UQ_config_type_version UNIQUE (cluster_id, type_name, version)", true); http://git-wip-us.apache.org/repos/asf/ambari/blob/0833a91d/ambari-server/src/test/java/org/apache/ambari/server/orm/DBAccessorImplTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/DBAccessorImplTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/DBAccessorImplTest.java index 8abadea..7ad7638 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/orm/DBAccessorImplTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/DBAccessorImplTest.java @@ -332,7 +332,8 @@ public class DBAccessorImplTest { statement.close(); - dbAccessor.setNullable(tableName, "isNullable", false); + dbAccessor.setNullable(tableName, new DBColumnInfo("isNullable", + String.class, 1000, "test", false), false); statement = dbAccessor.getConnection().createStatement(); resultSet = statement.executeQuery("SELECT isNullable FROM " + tableName); rsmd = resultSet.getMetaData(); @@ -340,7 +341,8 @@ public class DBAccessorImplTest { statement.close(); - dbAccessor.setNullable(tableName, "isNullable", true); + dbAccessor.setNullable(tableName, new DBColumnInfo("isNullable", + String.class, 1000, "test", false), true); statement = dbAccessor.getConnection().createStatement(); resultSet = statement.executeQuery("SELECT isNullable FROM " + tableName); rsmd = resultSet.getMetaData();
