Skip site navigation (1) Skip section navigation (2)

Re: exec_execute_message crush

From: Kris Jurka <books(at)ejurka(dot)com>
To: Tatsuo Ishii <ishii(at)postgresql(dot)org>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: exec_execute_message crush
Date: 2009-12-29 05:49:19
Message-ID: alpine.BSO.2.00.0912290043330.25395@leary.csoft.net (view raw or flat)
Thread:
Lists: pgsql-hackers

On Tue, 29 Dec 2009, Tatsuo Ishii wrote:

> parse
> bind
> describe
> execute
> <normaly done>
> parse invalid SQL thus abort a transaction
> bind (error)
> describe (error)
> execute (crush)
>
> Please note that without pgpool backend does not crush. This is
> because JDBC driver does not do execute() if prior parse, bind
> etc. failed, I think.

The JDBC driver will fire away parse, bind, and execute all at once before 
a sync, to avoid network roundtrips, so your assumption of what's going on 
here without pgpool doesn't seem accurate.  Attached is a test case that 
tries to duplicate what you've described and it errors out normally. 
Below is the JDBC driver's protocol level logging.

21:41:39.407 (1)  FE=> Parse(stmt=S_1,query="BEGIN",oids={})
21:41:39.407 (1)  FE=> Bind(stmt=S_1,portal=null)
21:41:39.407 (1)  FE=> Execute(portal=null,limit=0)
21:41:39.408 (1)  FE=> Parse(stmt=null,query="SELECT $1 ",oids={23})
21:41:39.408 (1)  FE=> Bind(stmt=null,portal=null,$1=<'1'>)
21:41:39.408 (1)  FE=> Describe(portal=null)
21:41:39.408 (1)  FE=> Execute(portal=null,limit=0)
21:41:39.408 (1)  FE=> Parse(stmt=null,query=" SELECT SELECT $1 
",oids={23})
21:41:39.408 (1)  FE=> Bind(stmt=null,portal=null,$1=<'2'>)
21:41:39.409 (1)  FE=> Describe(portal=null)
21:41:39.409 (1)  FE=> Execute(portal=null,limit=0)
21:41:39.409 (1)  FE=> Sync
21:41:39.443 (1)  <=BE ParseComplete [S_1]
21:41:39.443 (1)  <=BE BindComplete [null]
21:41:39.443 (1)  <=BE CommandStatus(BEGIN)
21:41:39.443 (1)  <=BE ParseComplete [null]
21:41:39.443 (1)  <=BE BindComplete [null]
21:41:39.444 (1)  <=BE RowDescription(1)
21:41:39.444 (1)  <=BE DataRow
21:41:39.444 (1)  <=BE CommandStatus(SELECT)
21:41:39.454 (1)  <=BE ErrorMessage(ERROR: syntax error at or near 
"SELECT"
   Position: 9)

So this shows everything working as expected.  Perhaps enabling this 
logging on your JDBC client would show more clearly what it is trying to 
do.

Kris Jurka

Attachment: Crash.java
Description: text/plain (453 bytes)

In response to

Responses

pgsql-hackers by date

Next:From: Tatsuo IshiiDate: 2009-12-29 06:22:31
Subject: Re: exec_execute_message crush
Previous:From: Tatsuo IshiiDate: 2009-12-29 04:07:43
Subject: Re: exec_execute_message crush

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group