Daniel John Debrunner wrote:
The required steps would be something like

1) During parse phase convert every ConstantNode to a ParameterNode
somehow storing the associated value (and setting the type of the
ParameterNode)

2) Generate a text form of the SQL statement from the current modified
tree, where the constants are replaced with question marks.

3) Re-compile statement, looking in cache etc.

4) Somehow get the saved parameter values and set them into the
parameter set of the newly compiled statement. Somehow hide the
parameters from the user's JDBC object (e.g. PreparedStatement)

5) Finally execute :-)

You're taking the suggestion too literally ;-)

It would be easier and cleaner to build support for this optimization directly into the query compiler.
So that any statement with constants in it would compile into a compiled
execution plan with constant parameters... the same plan, no matter the values of parameters.
Make it automatically treat any constants in the SQL as "internal" parameters. Don't let this stuff overflow outside into JDBC and other unrelated stuff.


Jan

Reply via email to