Thread: JDBC Driver - Connection.getTransactionIsolationLevel

JDBC Driver - Connection.getTransactionIsolationLevel

From
Kris Jurka
Date:
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;

Re: JDBC Driver - Connection.getTransactionIsolationLevel

From
Barry Lind
Date:
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