You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ab...@apache.org on 2017/06/30 13:38:40 UTC
[50/63] [abbrv] ambari git commit: AMBARI-21362. Ambari upgrade not
idempotent due to column move
AMBARI-21362. Ambari upgrade not idempotent due to column move
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/5c874ccb
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/5c874ccb
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/5c874ccb
Branch: refs/heads/branch-feature-logsearch-ui
Commit: 5c874ccb40b282e5074588906cb7de1f7eeae614
Parents: a3681c0
Author: Attila Doroszlai <ad...@hortonworks.com>
Authored: Tue Jun 27 14:33:27 2017 +0200
Committer: Attila Doroszlai <ad...@hortonworks.com>
Committed: Wed Jun 28 18:31:49 2017 +0200
----------------------------------------------------------------------
.../ambari/server/orm/DBAccessorImpl.java | 5 +++-
.../ambari/server/orm/DBAccessorImplTest.java | 29 ++++++++++++++++++++
2 files changed, 33 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c874ccb/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 13e7d7d..83ea8e1 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
@@ -1411,7 +1411,10 @@ public class DBAccessorImpl implements DBAccessor {
public void moveColumnToAnotherTable(String sourceTableName, DBColumnInfo sourceColumn, String sourceIDFieldName,
String targetTableName, DBColumnInfo targetColumn, String targetIDFieldName, Object initialValue) throws SQLException {
- if (this.tableHasColumn(sourceTableName, sourceIDFieldName)) {
+ if (tableHasColumn(sourceTableName, sourceIDFieldName) &&
+ tableHasColumn(sourceTableName, sourceColumn.getName()) &&
+ tableHasColumn(targetTableName, targetIDFieldName)
+ ) {
final String moveSQL = dbmsHelper.getCopyColumnToAnotherTableStatement(sourceTableName, sourceColumn.getName(),
sourceIDFieldName, targetTableName, targetColumn.getName(),targetIDFieldName);
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c874ccb/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 ca2674c..b4ffbf1 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
@@ -638,4 +638,33 @@ public class DBAccessorImplTest {
}
}
+
+ @Test
+ public void testMoveNonexistentColumnIsNoop() throws Exception {
+ DBAccessorImpl dbAccessor = injector.getInstance(DBAccessorImpl.class);
+ String sourceTableName = getFreeTableName();
+ String targetTableName = getFreeTableName();
+ int testRowAmount = 10;
+
+ createMyTable(sourceTableName, "col1");
+ createMyTable(targetTableName, "col1", "col2");
+
+ for (Integer i=0; i < testRowAmount; i++){
+ dbAccessor.insertRow(sourceTableName,
+ new String[] {"id", "col1"},
+ new String[]{i.toString(), String.format("'source,1,%s'", i)}, false);
+
+ dbAccessor.insertRow(targetTableName,
+ new String[] {"id", "col1", "col2"},
+ new String[]{i.toString(), String.format("'target,1,%s'", i), String.format("'target,2,%s'", i)}, false);
+ }
+
+ DBColumnInfo sourceColumn = new DBColumnInfo("col2", String.class, null, null, false);
+ DBColumnInfo targetColumn = new DBColumnInfo("col2", String.class, null, null, false);
+
+ dbAccessor.moveColumnToAnotherTable(sourceTableName, sourceColumn, "id",
+ targetTableName, targetColumn, "id", "initial");
+
+ // should not result in exception due to unknown column in source table
+ }
}