| From: | Dave Cramer <pg(at)fastcrypt(dot)com> | 
|---|---|
| To: | Vladimir Stankovic <V(dot)Stankovic(at)city(dot)ac(dot)uk> | 
| Cc: | "pgsql-jdbc(at)postgresql(dot)org" <pgsql-jdbc(at)postgresql(dot)org> | 
| Subject: | Re: No exception with concurrent updates | 
| Date: | 2004-07-14 18:54:54 | 
| Message-ID: | 1089831294.1549.31.camel@localhost.localdomain | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-jdbc | 
Vladimir,
Have you read how concurrency works in postgresql ?
Dave
On Wed, 2004-07-14 at 12:59, Vladimir Stankovic wrote:
> Dear all,
> 
> I wrote (extremely) simple programme in Java (jsdk1.4.2) to examine the 
> PostgreSQL's (v7.2.4, I know, rather obsolete) handling of concurrent 
> updates and I'm confused with the fact that the server (running on a remote 
> machine with Red Hat Linux 6.0) does not give me any kind of exception when 
> I execute the following code on the client machine running Win 2000. While 
> running the programme in the debug mode the excution just hangs when the 
> UPDATE query of the transaction2() is executed. Using setQueryTimeout() 
> won't help much since it is available as of 7.3 version, isn't it. I set 
> autocommit off and specify TRANSACTION_SERIALIZABLE on the Connection 
> objects. I'm using the pg73jdbc3.jar and NetBeans 3.5.
> 
> /*
>  * ConcurencyTest.java
>  * Created on 09 July 2004, 15:39
>  */
> import java.sql.*;
> 
> public class ConcurrencyTest 
> {    
>     Connection con1, con2; 
>     
>     public ConcurrencyTest()
>     {
>         /*
>           ConnectionManager object creates Connection and the
>           GetConnection() method returns the reference. Value of
>           128 specifies the JDBC connection (rather than ODBC).
>          */
>         con1 = new ConnectionManager(128).GetConnection();
>         con2 = new ConnectionManager(128).GetConnection();
>         
>         transaction1();
>         transaction2();      
>         
>         try 
>         {
>            con2.commit();
>            con1.commit();
>            //con1.close();
>            //con2.close();
>         }
>         catch (SQLException sqle)
>         {
>             System.out.println("Could not close the connection");
>         }
>         
>     }    
>     
>     public void transaction1()
>     {
>         try
>         {
>             con1.commit();
>             Statement sta1 = con1.createStatement();
>             sta1.setQueryTimeout(5);
> 
>             rs_1 = sta1.executeQuery("SELECT * FROM Orderline WHERE ol_o_id 
> = 1 AND ol_d_id = 1 AND ol_w_id = 1 AND ol_number = 4");
> 
>             while (rs_1.next())
>                 System.out.println(rs_1.getInt(8) + "\tT1");
>             rs_1.close();
>             
>             sta1.executeUpdate("UPDATE Orderline SET ol_quantity = 10 WHERE 
> ol_o_id = 1 AND ol_d_id = 1 AND ol_w_id = 1 AND ol_number = 4");
>             
>             sta1.close();
>         }
>         catch (SQLException sqle)
>         {
>             System.out.println("Error in Transaction 1: " + sqle);
>         }
>         
>     }
>     
>     public void transaction2()
>     {
>         try
>         {
>             con2.commit();
>             Statement sta2 = con2.createStatement();
>             sta2.setQueryTimeout(5);
> 
>             ResultSet rs_2 = sta2.executeQuery("SELECT * FROM Orderline 
> WHERE ol_o_id = 1 AND ol_d_id = 1 AND ol_w_id = 1 AND ol_number = 4");
>             while (rs_2.next())
>                 System.out.println(rs_2.getInt(8) + "\tT2");
>             rs_2.close();
>             
>             
>             sta2.executeUpdate("UPDATE Orderline SET ol_quantity = 20 WHERE 
> ol_o_id = 1 AND ol_d_id = 1 AND ol_w_id = 1 AND ol_number = 4");
> 
>             
>             sta2.close();
>         }
>         catch (SQLException sqle)
>         {
>             System.out.println("Error in Transaction 2: " + sqle);
>            
>         }
>         
>     }
>     
>     public static void main(String args[])
>     {
>         new ConcurrencyTest();
>     }
> }
> 
> 
> 
> 
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 9: the planner will ignore your desire to choose an index scan if your
>       joining column's datatypes do not match
> 
> 
> 
> !DSPAM:40f57e51167398493720393!
> 
> 
-- 
Dave Cramer
519 939 0336
ICQ # 14675561
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Vladimir Stankovic | 2004-07-14 19:10:16 | Re: No exception with concurrent updates | 
| Previous Message | Vladimir Stankovic | 2004-07-14 16:59:25 | No exception with concurrent updates |