Marc Herbert wrote:
Tom Lane <tg...@sss.pgh.pa.us> writes:
No, it would take a protocol change to add such a thing out-of-line
(that is, not as a LIMIT clause in the query text). The reason is that
the planning is done at PARSE time, or at the latest BIND time. The
row limit field in the EXECUTE message comes far too late to affect the
query plan.
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. We also avoid an extra round-trip by doing it at that point.
If you're interested in the details of this, the driver source code is
really your best reference..
-O