From: | Oliver Jowett <oliver(at)opencloud(dot)com> |
---|---|
To: | pgsql-patches(at)postgresql(dot)org |
Subject: | delayed planning of unnamed statements |
Date: | 2004-05-24 15:03:29 |
Message-ID: | 40B20EC1.9050702@opencloud.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-patches |
Per discussion on -hackers
(http://archives.postgresql.org/pgsql-hackers/2004-05/msg00990.php)
here is a first cut at delaying query planning for unnamed statements
until we have concrete parameters (i.e. at Bind).
This passes 'make check' (not particularly informative since that
doesn't exercise the extended query protocol path). It also passes the
JDBC driver's regression tests when using a modified driver that uses
the extended query protocol and parameterized queries.
Also attached is a python script that talks the V3 protocol directly and
does some simple tests of various bind/rebind cases with named and
unnamed statements (beware, that code is very ad-hoc!).
With these changes the JDBC driver gets performance similar to the
unparameterized case when using the unnamed statement:
> FE=> Parse(stmt=null,query="SELECT count(*) FROM test_big WHERE value = 2",oids={})
> FE=> Bind(stmt=null,portal=null)
> FE=> Describe(portal=null)
> FE=> Execute(portal=null,limit=0)
> FE=> Sync
> <=BE ParseComplete [null]
> <=BE BindComplete [null]
> <=BE RowDescription(1)
> <=BE DataRow
> <=BE CommandStatus(SELECT)
> <=BE ReadyForQuery(I)
> <<<<< END
> Elapsed: 54ms
> Result: 1
> FE=> Parse(stmt=S_1,query="SELECT count(*) FROM test_big WHERE value = $1",oids={23})
> FE=> Bind(stmt=S_1,portal=null,$1=<2>)
> FE=> Describe(portal=null)
> FE=> Execute(portal=null,limit=0)
> FE=> Sync
> <=BE ParseComplete [S_1]
> <=BE BindComplete [null]
> <=BE RowDescription(1)
> <=BE DataRow
> <=BE CommandStatus(SELECT)
> <=BE ReadyForQuery(I)
> <<<<< END
> Elapsed: 1484ms
> Result: 1
> FE=> Parse(stmt=null,query="SELECT count(*) FROM test_big WHERE value = $1",oids={23})
> FE=> Bind(stmt=null,portal=null,$1=<2>)
> FE=> Describe(portal=null)
> FE=> Execute(portal=null,limit=0)
> FE=> Sync
> <=BE ParseComplete [null]
> <=BE BindComplete [null]
> <=BE RowDescription(1)
> <=BE DataRow
> <=BE CommandStatus(SELECT)
> <=BE ReadyForQuery(I)
> <<<<< END
> Elapsed: 65ms
> Result: 1
-O
Attachment | Content-Type | Size |
---|---|---|
pgsql-server-delay-plan.txt | text/plain | 42.6 KB |
v3test.py | text/x-python | 5.6 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Fabien COELHO | 2004-05-24 15:52:12 | pgxs: build infrastructure for extensions v1 |
Previous Message | Gaetano Mendola | 2004-05-24 14:46:10 | Re: updated list rewrite |