

![]() | 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 2:48:28 am | |
| List: | org.postgresql.pgsql-jdbc | |
Oliver Jowett <oli...@opencloud.com> writes:
Marc Herbert wrote:
If planning is done at time of creation of the PreparedStatement object (reminder: the example given above has no parameters), then the setMaxRows() call will come too late whatever is the protocol change. I mean: no protocol change can go back in time and "optimize" by not doing useless work already done. Thanks in advance for pointing out my mistake(s) here.
We do not special-case the no-parameters case, so it's handled just like all the other cases: the query is parsed and planned immediately before execution.
OK, I should not have put this "reminder" above. I thought I would simplify the discussion but it did not.
According to: http://www.postgresql.org/docs/8.1/interactive/sql-prepare.html as well as to any other non-DB specific, similar documentation, the server is able to plan the query at parse time BEFORE receiving any actual parameter. Connection.preparedStatement()'s Javadoc calls this "pre-compilation" (and it's optional).
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...
However, what about the following executions of the same and now already prepared and planned statement? Now you would have to go back in time to perform any .setMaxRows() optimization, right?
I assume here that it's the query planning phase that would benefit from any .setMaxRows() optimization, correct me if I'm wrong.
We also avoid an extra round-trip by doing it at that point.
Then you also avoid any latency benefit that _could_ arise thanks to pre-compilation. At least for the first execution.
If you're interested in the details of this, the driver source code is really your best reference..
Sure, but for such high-level architectural questions you can easily understand that I prefer to read your enlightning explanations.







