

![]() | Start a set with this search |
![]() | Include this search in one of my sets |
![]() | Exclude this search from one of my sets |
![]() | Permalink to these results Paste this link in email or IM: |
| Atom feed for tracking future search results Paste this URL into your reader: |
24 messages in org.postgresql.pgsql-jdbcRe: Limit vs setMaxRows issue| From | Sent On | Attachments |
|---|---|---|
| Sebastiaan van Erk | Jun 21, 2006 2:11 am | |
| Dave Cramer | Jun 21, 2006 7:56 am | |
| Sebastiaan van Erk | Jun 21, 2006 8:48 am | |
| Kris Jurka | Jun 21, 2006 8:59 am | |
| A.M. | Jun 21, 2006 9:09 am | |
| Tom Lane | Jun 21, 2006 9:46 am | |
| Oliver Jowett | Jun 21, 2006 3:52 pm | |
| Sebastiaan van Erk | Jun 22, 2006 1:35 am | |
| Mark Lewis | Jun 22, 2006 9:15 am | |
| David Wall | Jun 22, 2006 9:36 am | |
| Sebastiaan van Erk | Jun 22, 2006 1:13 pm | |
| Marc Herbert | Jul 10, 2006 1:50 am | |
| Marc Herbert | Jul 10, 2006 1:59 am | |
| Marc Herbert | Jul 10, 2006 2:05 am | |
| Oliver Jowett | Jul 10, 2006 11:32 pm | |
| Oliver Jowett | Jul 10, 2006 11:37 pm | |
| Marc Herbert | Jul 11, 2006 2:48 am | |
| Marc Herbert | Jul 11, 2006 3:00 am | |
| Oliver Jowett | Jul 11, 2006 3:45 am | |
| Marc Herbert | Jul 11, 2006 5:14 am | |
| Oliver Jowett | Jul 11, 2006 10:01 pm | |
| Marc Herbert | Jul 12, 2006 3:22 am | |
| Markus Schaber | Jul 12, 2006 3:59 am | |
| Marc Herbert | Jul 20, 2006 11:52 am |

![]() | Permalink for this message Paste this link in email or IM: |
![]() | Permalink for this thread Paste this link in email or IM: |
| Atom feed for this thread Paste this URL into your reader: |
| Subject: | Re: Limit vs setMaxRows issue | Actions... |
|---|---|---|
| From: | Marc Herbert (Marc...@continuent.com) | |
| Date: | Jul 11, 2006 5:14:35 am | |
| List: | org.postgresql.pgsql-jdbc | |
Oliver Jowett <oli...@opencloud.com> writes:
Marc Herbert wrote:
Oliver Jowett <oli...@opencloud.com> writes:
the query is parsed and planned immediately before execution.
Hum, interesting. Looks like "lazy prepared" statement, no pre-compilation? If you delay parsing & planning then of course you would not need to go back in time to add late optimizations...
I don't know what you mean by "lazy prepared" statements. We give the statement to the server for parsing and planning at the point when we know both the query and the parameter types -- which, because of the JDBC API design, means just before execution.
OK thanks, now I think I got it: it seems like the JDBC API does not assume you need parameter types to plan the query.
Connection.preparedStatement()
* If the driver supports precompilation, * the method <code>prepareStatement</code> will send * the statement to the database for precompilation.
No word about parameter types. If you do not need the datatypes, then you can send/plan the query way earlier (not "lazy"), at PreparedStatement object construction time.
I should have noticed this issue from here <http://www.postgresql.org/docs/8.1/interactive/sql-prepare.html> Looks like we have an API mismatch here.
Is this parameter types issue specific to PostgreSQL, or is just the JDBC API badly designed on this point?
Another approach could be for the server to infer the types from the query string?
If not 100% reliably, then in an optimistic way?
We retain the parse/plan results on the server side when it looks like the statement will be reused (using a simple "how many times has this statement already been reused?" metric), otherwise we reparse/replan on each execution.
Could this be compatible with any setMaxRows() optimization? I guess yes, provided the maxRows parameter is considered in preparedstatement matching, just like datatypes seem to be... Maybe this is already the case for non-JDBC PREPARE + LIMIT?
Thanks again for all these answers.







