Обсуждение: JDBC Driver - Connection.getTransactionIsolationLevel
The results of a show command are output as a query result in 7.3, not
as a notice. This patch changes the return handling of "SHOW
TRANSACTION ISOLATION LEVEL"
Kris Jurka
Index: src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Connection.java
===================================================================
RCS file: /projects/cvsroot/pgsql-server/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Connection.java,v
retrieving revision 1.8
diff -c -r1.8 AbstractJdbc1Connection.java
*** src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Connection.java 2002/09/06 21:23:05 1.8
--- src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Connection.java 2002/09/09 21:09:11
***************
*** 982,1002 ****
*/
public int getTransactionIsolation() throws SQLException
{
! clearWarnings();
! ExecSQL("show transaction isolation level");
!
! SQLWarning warning = getWarnings();
! if (warning != null)
! {
! String message = warning.getMessage();
clearWarnings();
! if (message.indexOf("READ COMMITTED") != -1)
return java.sql.Connection.TRANSACTION_READ_COMMITTED;
! else if (message.indexOf("READ UNCOMMITTED") != -1)
return java.sql.Connection.TRANSACTION_READ_UNCOMMITTED;
! else if (message.indexOf("REPEATABLE READ") != -1)
return java.sql.Connection.TRANSACTION_REPEATABLE_READ;
! else if (message.indexOf("SERIALIZABLE") != -1)
return java.sql.Connection.TRANSACTION_SERIALIZABLE;
}
return java.sql.Connection.TRANSACTION_READ_COMMITTED;
--- 982,1013 ----
*/
public int getTransactionIsolation() throws SQLException
{
! String sql = "show transaction isolation level";
! String level = null;
! if (haveMinimumServerVersion("7.3")) {
! ResultSet rs = ExecSQL(sql);
! if (rs.next()) {
! level = rs.getString(1);
! }
! rs.close();
! } else {
clearWarnings();
! ExecSQL(sql);
! SQLWarning warning = getWarnings();
! if (warning != null)
! {
! level = warning.getMessage();
! }
! clearWarnings();
! }
! if (level != null) {
! if (level.indexOf("READ COMMITTED") != -1)
return java.sql.Connection.TRANSACTION_READ_COMMITTED;
! else if (level.indexOf("READ UNCOMMITTED") != -1)
return java.sql.Connection.TRANSACTION_READ_UNCOMMITTED;
! else if (level.indexOf("REPEATABLE READ") != -1)
return java.sql.Connection.TRANSACTION_REPEATABLE_READ;
! else if (level.indexOf("SERIALIZABLE") != -1)
return java.sql.Connection.TRANSACTION_SERIALIZABLE;
}
return java.sql.Connection.TRANSACTION_READ_COMMITTED;
Patch applied.
--Barry
Kris Jurka wrote:
> The results of a show command are output as a query result in 7.3, not
> as a notice. This patch changes the return handling of "SHOW
> TRANSACTION ISOLATION LEVEL"
>
> Kris Jurka
>
>
> ------------------------------------------------------------------------
>
> Index: src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Connection.java
> ===================================================================
> RCS file: /projects/cvsroot/pgsql-server/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Connection.java,v
> retrieving revision 1.8
> diff -c -r1.8 AbstractJdbc1Connection.java
> *** src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Connection.java 2002/09/06 21:23:05 1.8
> --- src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Connection.java 2002/09/09 21:09:11
> ***************
> *** 982,1002 ****
> */
> public int getTransactionIsolation() throws SQLException
> {
> ! clearWarnings();
> ! ExecSQL("show transaction isolation level");
> !
> ! SQLWarning warning = getWarnings();
> ! if (warning != null)
> ! {
> ! String message = warning.getMessage();
> clearWarnings();
> ! if (message.indexOf("READ COMMITTED") != -1)
> return java.sql.Connection.TRANSACTION_READ_COMMITTED;
> ! else if (message.indexOf("READ UNCOMMITTED") != -1)
> return java.sql.Connection.TRANSACTION_READ_UNCOMMITTED;
> ! else if (message.indexOf("REPEATABLE READ") != -1)
> return java.sql.Connection.TRANSACTION_REPEATABLE_READ;
> ! else if (message.indexOf("SERIALIZABLE") != -1)
> return java.sql.Connection.TRANSACTION_SERIALIZABLE;
> }
> return java.sql.Connection.TRANSACTION_READ_COMMITTED;
> --- 982,1013 ----
> */
> public int getTransactionIsolation() throws SQLException
> {
> ! String sql = "show transaction isolation level";
> ! String level = null;
> ! if (haveMinimumServerVersion("7.3")) {
> ! ResultSet rs = ExecSQL(sql);
> ! if (rs.next()) {
> ! level = rs.getString(1);
> ! }
> ! rs.close();
> ! } else {
> clearWarnings();
> ! ExecSQL(sql);
> ! SQLWarning warning = getWarnings();
> ! if (warning != null)
> ! {
> ! level = warning.getMessage();
> ! }
> ! clearWarnings();
> ! }
> ! if (level != null) {
> ! if (level.indexOf("READ COMMITTED") != -1)
> return java.sql.Connection.TRANSACTION_READ_COMMITTED;
> ! else if (level.indexOf("READ UNCOMMITTED") != -1)
> return java.sql.Connection.TRANSACTION_READ_UNCOMMITTED;
> ! else if (level.indexOf("REPEATABLE READ") != -1)
> return java.sql.Connection.TRANSACTION_REPEATABLE_READ;
> ! else if (level.indexOf("SERIALIZABLE") != -1)
> return java.sql.Connection.TRANSACTION_SERIALIZABLE;
> }
> return java.sql.Connection.TRANSACTION_READ_COMMITTED;
>
>
> ------------------------------------------------------------------------
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org