[Pljava-dev] Problem with primary key

From: Eric(dot)Boyer at insa-toulouse(dot)fr (Eric BOYER)
To:
Subject: [Pljava-dev] Problem with primary key
Date: 2006-05-18 07:14:43
Message-ID: 446C1EE3.2030605@insa-toulouse.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pljava-dev

Thomas Hallgren a ?crit :

>Eric,
>You say that you re-throw the exception in your catch. Yet, in your
>example you don't do that. Also, to do an e.printStackTrace() might be a
>bad idea sometimes. If the postmaster runs as a service, there will be
>no System.out assigned.
>
>
It was a simple test. In reality, we use log4j !

>Try using the logger instead. Or even better, don't catch the exception
>at all. Let PL/Java catch it for you. It will print it using the logger.
>If you set the log_min_messages to DEBUG1, you will get the full
>stack-trace. Setting the client_min_messages to DEBUG1 means that you'll
>get the messages propagated to your client.
>
>
OK but we wan't catch exception for different reasons ...

>I.e.:
>
>public static void traiter(TriggerData td) throws SQLException {
> Connection conn = DriverManager.getConnection("jdbc:default:connection");
> Statement stmt = conn.createStatement();
> stmt.execute("insert into test (lib) values('monlib')");
>}
>
>and then do:
>
>SET client_min_messages TO DEBUG1;
>INSERT INTO test VALUES('monlib');
>
>Regards,
>Thomas Hallgren
>
>Eric BOYER wrote:
>
>
>>Hello,
>>
>>I have a problem with primary key !
>>
>>I have a simple table like :
>>
>> Table "public.test"
>> Column | Type | Modifiers
>>--------+------+-----------
>> lib | text | not null
>>Indexes:
>> "test_pkey" PRIMARY KEY, btree (lib)
>>
>>I have a fonction :
>> List of functions
>> Schema | Name | Result data type | Argument data types
>>--------+-----------------+------------------+---------------------
>> public | allominitrigger | "trigger" |
>>(1 row)
>>
>>My code for this fonction is :
>>public static void traiter(TriggerData td) {
>> try {
>> Connection conn =
>>DriverManager.getConnection("jdbc:default:connection");
>> Statement stmt = conn.createStatement();
>> stmt.execute("insert into test (lib) values('monlib')");
>> }
>> catch (Exception e) {
>> e.printStackTrace();
>> }
>>}
>>
>>I have the trigger :
>>trigtest AFTER INSERT ON test FOR EACH ROW EXECUTE PROCEDURE
>>allominitrigger()
>>
>>---------
>>My test is :
>>I want insert a row and in my fonction, i wan't to insert the same row
>>to test the primary key control
>>
>>I insert :
>>insert into test values('monlib');
>>
>>And I have :
>>WARNING: buffer refcount leak: [003] (rel=1663/16922/164335,
>>blockNum=1, flags=0x27, refcount=1 1)
>>WARNING: relcache reference leak: relation "pk_test" not closed
>>WARNING: relcache reference leak: relation "test" not closed
>>WARNING: transaction left non-empty SPI stack
>>HINT: Check for missing "SPI_finish" calls.
>>
>>And When I select values :
>>SELECT * from test;
>> lib
>>--------
>> monlib
>> monlib
>>(2 rows)
>>
>>My primary key is duplicate !
>>
>>Is it normal ?
>>
>>Of course, if in my catch I have :
>>
>>catch (Exception e) {
>> e.printStackTrace();
>> throw e;
>> }
>>
>>All is OK, postgres doesn't duplicate the primary key !
>>
>>
>>Thanks for your point of vue !
>>
>>eric.
>>_______________________________________________
>>Pljava-dev mailing list
>>Pljava-dev at gborg.postgresql.org
>>http://gborg.postgresql.org/mailman/listinfo/pljava-dev
>>
>>
>>
>
>_______________________________________________
>Pljava-dev mailing list
>Pljava-dev at gborg.postgresql.org
>http://gborg.postgresql.org/mailman/listinfo/pljava-dev
>
>
>

In response to

Responses

Browse pljava-dev by date

  From Date Subject
Next Message Thomas Hallgren 2006-05-18 07:35:33 [Pljava-dev] Problem with primary key
Previous Message Eric BOYER 2006-05-18 07:12:36 [Pljava-dev] Problem with primary key