pgsql/src/interfaces/jdbc/org/postgresql Conne ... - Mailing list pgsql-committers

From Bruce Momjian - CVS
Subject pgsql/src/interfaces/jdbc/org/postgresql Conne ...
Date
Msg-id 200108041932.f74JW4n73111@hub.org
Whole thread Raw
List pgsql-committers
CVSROOT:    /home/projects/pgsql/cvsroot
Module name:    pgsql
Changes by:    momjian@hub.org    01/08/04 15:32:04

Modified files:
    src/interfaces/jdbc/org/postgresql: Connection.java
    src/interfaces/jdbc/org/postgresql/jdbc1: DatabaseMetaData.java
    src/interfaces/jdbc/org/postgresql/jdbc2: DatabaseMetaData.java

Log message:
    Attached is a patch that does the following:

    1) improves performance of commit/rollback by reducing number of round
    trips to the server
    2) uses 7.1 functionality for setting the transaction isolation level
    3) backs out a patch from 11 days ago because that code failed to
    compile under jdk1.1

    Details:

    1)  The old code was doing the following for each commit:
    commit
    begin
    set transaction isolation level xxx
    thus a call to commit was performing three round trips to the database.
    The new code does this in one round trip as:
    commit; begin; set transaction isolation level xxx

    In a simple test program that performs 1000 transactions (where each
    transaction does one simple select inside that transaction) has the
    following before and after timings:

    Client and Server on same machine

    old         new
    ---         ---
    1.877sec    1.405sec   25.1% improvement

    Client and Server on different machines
    old         new
    ---         ---
    4.184sec    2.927sec   34.3% improvement

    (all timings are an average of four different runs)

    2)  The driver was using 'set transaction isolation level xxx' at the
    begining of each transaction, instead of using the new 7.1 syntax of
    'set session characteristics as transaction isolation level xxx' which
    only needs to be done once instead of for each transaction.  This is
    done conditionally (i.e. if server is 7.0 or older do the old behaviour,
    else do the new behaviour) to not break backward compatibility.  This
    also required the movement of some code to check/test database version
    numbers from the DatabaseMetaData object to the Connection object.

    3) Finally while testing, I discovered that the code that was checked in
    11 days ago actually didn't compile.  The code in the patch for
    Connection.setCatalog() used Properties.setProperty() which only exists
    in JDK1.2 or higher.  Thus compiling the JDBC1 driver failed as this
    method doesn't exist.  Thus I backed out that patch.

    Barry Lind


pgsql-committers by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: pgsql/src/interfaces/libpq win32.mak
Next
From: Bruce Momjian - CVS
Date:
Subject: pgsql/src/interfaces/odbc convert.c