Repository: ambari Updated Branches: refs/heads/branch-2.5 777434efb -> 52980df6f
AMBARI-21363 ORA-00911 error during Ambari server schema upgrade due to incorrect syntax of Update statement (dgrinenko) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/52980df6 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/52980df6 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/52980df6 Branch: refs/heads/branch-2.5 Commit: 52980df6f7ac8ee22895c2b102f4c5fe6346a12b Parents: 777434e Author: Dmytro Grinenko <[email protected]> Authored: Thu Jun 29 15:15:23 2017 +0300 Committer: Dmytro Grinenko <[email protected]> Committed: Thu Jun 29 15:15:23 2017 +0300 ---------------------------------------------------------------------- .../ambari/server/orm/DBAccessorImpl.java | 43 +++++++++++--------- .../orm/helpers/dbms/GenericDbmsHelper.java | 2 +- 2 files changed, 25 insertions(+), 20 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/52980df6/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 f3250b8..2256d44 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 @@ -204,6 +204,27 @@ public class DBAccessorImpl implements DBAccessor { return objectName; } + /** + * Setting arguments for prepared statement + * + * @param preparedStatement {@link PreparedStatement} object + * @param arguments array of arguments + * + * @throws SQLException + */ + private void setArgumentsForPreparedStatement(PreparedStatement preparedStatement, Object[] arguments) throws SQLException{ + for (int i = 0; i < arguments.length; i++) { + if (arguments[i] instanceof byte[]) { + byte[] binaryData = (byte[]) arguments[i]; + + // JDBC drivers supports only this function signature + preparedStatement.setBinaryStream(i+1, new ByteArrayInputStream(binaryData), binaryData.length); + } else { + preparedStatement.setObject(i+1, arguments[i]); + } + } + } + @Override public boolean tableExists(String tableName) throws SQLException { boolean result = false; @@ -878,16 +899,8 @@ public class DBAccessorImpl implements DBAccessor { LOG.info("Executing prepared query: {}", query); PreparedStatement preparedStatement = getConnection().prepareStatement(query); + setArgumentsForPreparedStatement(preparedStatement, arguments); - for (int i = 0; i < arguments.length; i++) { - if (arguments[i] instanceof byte[]) { - byte[] binaryData = (byte[]) arguments[i]; - // JDBC drivers supports only this function signature - preparedStatement.setBinaryStream(i+1, new ByteArrayInputStream(binaryData), binaryData.length); - } else { - preparedStatement.setObject(i+1, arguments[i]); - } - } try { preparedStatement.execute(); } catch (SQLException e) { @@ -908,7 +921,7 @@ public class DBAccessorImpl implements DBAccessor { {@inheritDoc} */ public void executePreparedUpdate(String query, Object...arguments) throws SQLException { - executePreparedQuery(query, false, arguments); + executePreparedUpdate(query, false, arguments); } /** @@ -918,16 +931,8 @@ public class DBAccessorImpl implements DBAccessor { LOG.info("Executing prepared query: {}", query); PreparedStatement preparedStatement = getConnection().prepareStatement(query); + setArgumentsForPreparedStatement(preparedStatement, arguments); - for (int i = 0; i <= arguments.length; i++) { - if (arguments[i] instanceof byte[]) { - byte[] binaryData = (byte[]) arguments[i]; - // JDBC drivers supports only this function signature - preparedStatement.setBinaryStream(i+1, new ByteArrayInputStream(binaryData), binaryData.length); - } else { - preparedStatement.setObject(i+1, arguments[i]); - } - } try { preparedStatement.executeUpdate(); } catch (SQLException e) { http://git-wip-us.apache.org/repos/asf/ambari/blob/52980df6/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 4b4ce8d..11cbcf9 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 @@ -280,7 +280,7 @@ public class GenericDbmsHelper implements DbmsHelper { */ @Override public String getColumnUpdateStatementWhereColumnIsNull(String tableName, String setColumnName, String conditionColumnName){ - return "UPDATE " + tableName + " SET " + setColumnName + "=? WHERE " + conditionColumnName + " IS NULL;"; + return "UPDATE " + tableName + " SET " + setColumnName + "=? WHERE " + conditionColumnName + " IS NULL"; } /**
