You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by nc...@apache.org on 2015/10/23 16:47:43 UTC
[29/50] [abbrv] ambari git commit: AMBARI-13478 Upgrade path on ORA
1.6.1 -> 2.0.1 -> 2.1.1 (dsen)
AMBARI-13478 Upgrade path on ORA 1.6.1 -> 2.0.1 -> 2.1.1 (dsen)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/bb7ca76d
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/bb7ca76d
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/bb7ca76d
Branch: refs/heads/branch-dev-patch-upgrade
Commit: bb7ca76db357b5c9781818278e008611f9369044
Parents: c4c8338
Author: Dmytro Sen <ds...@apache.org>
Authored: Thu Oct 22 20:51:46 2015 +0300
Committer: Dmytro Sen <ds...@apache.org>
Committed: Thu Oct 22 20:51:46 2015 +0300
----------------------------------------------------------------------
.../ambari/server/orm/DBAccessorImpl.java | 26 ++++++++++++++++++--
.../server/upgrade/UpgradeCatalog210.java | 10 +++++++-
.../ambari/server/orm/DBAccessorImplTest.java | 21 ++++++++++++++++
3 files changed, 54 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/bb7ca76d/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 cd47252..abd05bc 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
@@ -293,6 +293,27 @@ public class DBAccessorImpl implements DBAccessor {
return false;
}
+ public String getCheckedForeignKey(String tableName, String fkName) throws SQLException {
+ DatabaseMetaData metaData = getDatabaseMetaData();
+
+ ResultSet rs = metaData.getImportedKeys(null, null, convertObjectName(tableName));
+
+ if (rs != null) {
+ try {
+ while (rs.next()) {
+ if (StringUtils.equalsIgnoreCase(fkName, rs.getString("FK_NAME"))) {
+ return rs.getString("FK_NAME");
+ }
+ }
+ } finally {
+ rs.close();
+ }
+ }
+
+ LOG.warn("FK {} not found for table {}", convertObjectName(fkName), convertObjectName(tableName));
+
+ return null;
+ }
@Override
public boolean tableHasForeignKey(String tableName, String refTableName,
String columnName, String refColumnName) throws SQLException {
@@ -747,8 +768,9 @@ public class DBAccessorImpl implements DBAccessor {
@Override
public void dropFKConstraint(String tableName, String constraintName, boolean ignoreFailure) throws SQLException {
// ToDo: figure out if name of index and constraint differs
- if (tableHasForeignKey(convertObjectName(tableName), constraintName)) {
- String query = dbmsHelper.getDropFKConstraintStatement(tableName, constraintName);
+ String checkedConstraintName = getCheckedForeignKey(convertObjectName(tableName), constraintName);
+ if (checkedConstraintName != null) {
+ String query = dbmsHelper.getDropFKConstraintStatement(tableName, checkedConstraintName);
executeQuery(query, ignoreFailure);
} else {
LOG.warn("Constraint {} from {} table not found, nothing to drop", constraintName, tableName);
http://git-wip-us.apache.org/repos/asf/ambari/blob/bb7ca76d/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog210.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog210.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog210.java
index 308e7c9..41754d9 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog210.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog210.java
@@ -486,6 +486,14 @@ public class UpgradeCatalog210 extends AbstractUpgradeCatalog {
dbAccessor.dropFKConstraint(HOST_COMPONENT_DESIRED_STATE_TABLE, "hstcmpnntdesiredstatecmpnntnme");
dbAccessor.dropFKConstraint(SERVICE_CONFIG_HOSTS_TABLE, "FK_scvhosts_scv");
+ //These FK's hasn't been deleted previously due to MySQL case sensitivity
+ if (databaseType == Configuration.DatabaseType.MYSQL) {
+ dbAccessor.dropFKConstraint(CONFIG_GROUP_HOST_MAPPING_TABLE, "FK_configgrouphostmapping_config_group_id");
+ dbAccessor.dropFKConstraint(CLUSTER_HOST_MAPPING_TABLE, "FK_ClusterHostMapping_cluster_id");
+ dbAccessor.dropFKConstraint(KERBEROS_PRINCIPAL_HOST_TABLE, "FK_kerberos_principal_host_principal_name");
+ dbAccessor.dropFKConstraint(SERVICE_CONFIG_HOSTS_TABLE, "FK_serviceconfighosts_service_config_id");
+ }
+
if (databaseType == Configuration.DatabaseType.DERBY) {
for (String tableName : tablesWithHostNameInPK) {
String constraintName = getDerbyTableConstraintName("p", tableName);
@@ -1346,7 +1354,7 @@ public class UpgradeCatalog210 extends AbstractUpgradeCatalog {
public void run() {
EntityManager em = getEntityManagerProvider().get();
Query nativeQuery = em.createNativeQuery("UPDATE alert_definition SET alert_source=?1, hash=?2 WHERE " +
- "definition_name=?3");
+ "definition_name=?3");
nativeQuery.setParameter(1, source);
nativeQuery.setParameter(2, newHash);
nativeQuery.setParameter(3, alertName);
http://git-wip-us.apache.org/repos/asf/ambari/blob/bb7ca76d/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 05856b3..c867c9f 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
@@ -320,6 +320,27 @@ public class DBAccessorImplTest {
}
@Test
+ public void testGetCheckedForeignKey() throws Exception {
+ String tableName = getFreeTableName();
+ createMyTable(tableName);
+
+ DBAccessorImpl dbAccessor = injector.getInstance(DBAccessorImpl.class);
+
+ List<DBColumnInfo> columns = new ArrayList<DBColumnInfo>();
+ columns.add(new DBColumnInfo("fid", Long.class, null, null, false));
+ columns.add(new DBColumnInfo("fname", String.class, null, null, false));
+
+ String foreignTableName = getFreeTableName();
+ dbAccessor.createTable(foreignTableName, columns, "fid");
+
+ Statement statement = dbAccessor.getConnection().createStatement();
+ statement.execute("ALTER TABLE " + foreignTableName + " ADD CONSTRAINT FK_test1 FOREIGN KEY (fid) REFERENCES " +
+ tableName + " (id)");
+
+ Assert.assertEquals("FK_TEST1", dbAccessor.getCheckedForeignKey(foreignTableName, "fk_test1"));
+ }
+
+ @Test
public void testTableExists() throws Exception {
DBAccessorImpl dbAccessor = injector.getInstance(DBAccessorImpl.class);