From: <mro...@us...> - 2014-04-28 15:36:46
|
Revision: 59493 http://sourceforge.net/p/firebird/code/59493 Author: mrotteveel Date: 2014-04-28 15:36:43 +0000 (Mon, 28 Apr 2014) Log Message: ----------- Remove unnecessary complexity in addWarning, change setFetchDirection to be a little closer to documented requirements Modified Paths: -------------- client-java/trunk/src/main/org/firebirdsql/jdbc/FBStatement.java Modified: client-java/trunk/src/main/org/firebirdsql/jdbc/FBStatement.java =================================================================== --- client-java/trunk/src/main/org/firebirdsql/jdbc/FBStatement.java 2014-04-28 13:47:30 UTC (rev 59492) +++ client-java/trunk/src/main/org/firebirdsql/jdbc/FBStatement.java 2014-04-28 15:36:43 UTC (rev 59493) @@ -991,26 +991,38 @@ /** * Gives the driver a hint as to the direction in which - * the rows in a result set - * will be processed. The hint applies only to result sets created - * using this <code>Statement</code> object. The default value is - * <code>ResultSet.FETCH_FORWARD</code>. - * <p>Note that this method sets the default fetch direction for + * rows will be processed in <code>ResultSet</code> + * objects created using this <code>Statement</code> object. The + * default value is <code>ResultSet.FETCH_FORWARD</code>. + * <P> + * Note that this method sets the default fetch direction for * result sets generated by this <code>Statement</code> object. * Each result set has its own methods for getting and setting * its own fetch direction. + * * @param direction the initial direction for processing rows - * @exception SQLException if a database access error occurs + * @exception SQLException if a database access error occurs, + * this method is called on a closed <code>Statement</code> * or the given direction * is not one of <code>ResultSet.FETCH_FORWARD</code>, * <code>ResultSet.FETCH_REVERSE</code>, or <code>ResultSet.FETCH_UNKNOWN</code> * @since 1.2 - * @see <a href="package-summary.html#2.0 API">What Is in the JDBC - * 2.0 API</a> + * @see #getFetchDirection */ public void setFetchDirection(int direction) throws SQLException { - if (direction != ResultSet.FETCH_FORWARD) + checkValidity(); + switch (direction) { + case ResultSet.FETCH_FORWARD: + // Value is always FETCH_FORWARD + return; + case ResultSet.FETCH_REVERSE: + case ResultSet.FETCH_UNKNOWN: + // TODO: Documentation suggests that the driver is free to ignore the hint, maybe register as warning instead? throw new FBDriverNotCapableException(); + default: + throw new SQLException(String.format("Invalid fetchDirection, value %d", direction), + FBSQLException.SQL_STATE_INVALID_ARG_VALUE); + } } /** @@ -1370,14 +1382,10 @@ } protected void addWarning(SQLWarning warning){ - if (firstWarning == null) + if (firstWarning == null) { firstWarning = warning; - else{ - SQLWarning lastWarning = firstWarning; - while (lastWarning.getNextWarning() != null){ - lastWarning = lastWarning.getNextWarning(); - } - lastWarning.setNextWarning(warning); + } else { + firstWarning.setNextWarning(warning); } } @@ -1459,6 +1467,6 @@ */ protected enum CompletionReason { COMMIT, - OTHER; + OTHER } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mro...@us...> - 2014-07-11 18:22:32
|
Revision: 59852 http://sourceforge.net/p/firebird/code/59852 Author: mrotteveel Date: 2014-07-11 18:22:22 +0000 (Fri, 11 Jul 2014) Log Message: ----------- Copy Jaybird 2.2 'large' update count implementation Modified Paths: -------------- client-java/trunk/src/main/org/firebirdsql/jdbc/FBStatement.java Modified: client-java/trunk/src/main/org/firebirdsql/jdbc/FBStatement.java =================================================================== --- client-java/trunk/src/main/org/firebirdsql/jdbc/FBStatement.java 2014-07-11 17:58:59 UTC (rev 59851) +++ client-java/trunk/src/main/org/firebirdsql/jdbc/FBStatement.java 2014-07-11 18:22:22 UTC (rev 59852) @@ -1487,6 +1487,107 @@ public Logger getParentLogger() throws SQLFeatureNotSupportedException { throw new FBDriverNotCapableException(); } + + // TODO Implement large update count methods below using SqlCountHolder + + /** + * {@inheritDoc} + * <p> + * Jaybird does not support large update counts, the return value of this method is the same as + * {@link #getUpdateCount()}. + * </p> + */ + public long getLargeUpdateCount() throws SQLException { + return getUpdateCount(); + } + + /** + * {@inheritDoc} + * <p> + * Jaybird does not support maxRows exceeding {@link Integer#MAX_VALUE}, if a larger value is set, Jaybird will + * add a warning to the statement and reset the maximum to 0. + * </p> + */ + public void setLargeMaxRows(long max) throws SQLException { + if (max > Integer.MAX_VALUE) { + addWarning(new SQLWarning( + String.format("Implementation limit: maxRows cannot exceed Integer.MAX_VALUE, value was %d, reset to 0", max), + FBSQLException.SQL_STATE_INVALID_ARG_VALUE)); + max = 0; + } + setMaxRows((int) max); + } + + /** + * {@inheritDoc} + * <p> + * Jaybird does not support maxRows exceeding {@link Integer#MAX_VALUE}, the return value of this method is the + * same as {@link #getMaxRows()}. + * </p> + */ + public long getLargeMaxRows() throws SQLException { + return getMaxRows(); + } + + /** + * {@inheritDoc} + * <p> + * Jaybird does not support update counts exceeding {@link Integer#MAX_VALUE}, this method calls + * {@link #executeBatch()} and converts the int-array to a long-array. + * </p> + */ + public long[] executeLargeBatch() throws SQLException { + int[] updateCountsInt = executeBatch(); + long[] updateCountsLong = new long[updateCountsInt.length]; + for (int i = 0; i < updateCountsInt.length; i++) { + updateCountsLong[i] = updateCountsInt[i]; + } + return updateCountsLong; + } + + /** + * {@inheritDoc} + * <p> + * Jaybird does not support update counts exceeding {@link Integer#MAX_VALUE}, this method calls + * {@link #executeUpdate(String)}. + * </p> + */ + public long executeLargeUpdate(String sql) throws SQLException { + return executeUpdate(sql); + } + + /** + * {@inheritDoc} + * <p> + * Jaybird does not support update counts exceeding {@link Integer#MAX_VALUE}, this method calls + * {@link #executeUpdate(String,int)}. + * </p> + */ + public long executeLargeUpdate(String sql, int autoGeneratedKeys) throws SQLException { + return executeUpdate(sql, autoGeneratedKeys); + } + + /** + * {@inheritDoc} + * <p> + * Jaybird does not support update counts exceeding {@link Integer#MAX_VALUE}, this method calls + * {@link #executeUpdate(String,int[])}. + * </p> + */ + public long executeLargeUpdate(String sql, int[] columnIndexes) throws SQLException { + return executeUpdate(sql, columnIndexes); + } + + /** + * {@inheritDoc} + * <p> + * Jaybird does not support update counts exceeding {@link Integer#MAX_VALUE}, this method calls + * {@link #executeUpdate(String,String[])}. + * </p> + */ + public long executeLargeUpdate(String sql, String[] columnNames) throws SQLException { + return executeUpdate(sql, columnNames); + } /** * Reasons for statement completion. This is intended for the {@link InternalTransactionCoordinator} to This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mro...@us...> - 2014-07-11 18:23:19
|
Revision: 59853 http://sourceforge.net/p/firebird/code/59853 Author: mrotteveel Date: 2014-07-11 18:23:10 +0000 (Fri, 11 Jul 2014) Log Message: ----------- Remove method not actually specified in JDBC Modified Paths: -------------- client-java/trunk/src/main/org/firebirdsql/jdbc/FBStatement.java Modified: client-java/trunk/src/main/org/firebirdsql/jdbc/FBStatement.java =================================================================== --- client-java/trunk/src/main/org/firebirdsql/jdbc/FBStatement.java 2014-07-11 18:22:22 UTC (rev 59852) +++ client-java/trunk/src/main/org/firebirdsql/jdbc/FBStatement.java 2014-07-11 18:23:10 UTC (rev 59853) @@ -1484,10 +1484,6 @@ throw new FBSQLException("Statement is already closed.", FBSQLException.SQL_STATE_INVALID_STATEMENT_ID); } - public Logger getParentLogger() throws SQLFeatureNotSupportedException { - throw new FBDriverNotCapableException(); - } - // TODO Implement large update count methods below using SqlCountHolder /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |