A method, system, and computer program product to make query processing
more robust in the face of optimization errors. The invention validates
the statistics and assumptions used for compiling a query as the query is
executed and, when necessary, progressively re-optimizes the query in
mid-execution based on the knowledge learned during its partial
execution. The invention selectively places a number of CHECK operators
in a query execution plan to validate the optimizer's cardinality
estimates against actual cardinalities. Errors beyond a threshold trigger
re-optimization, and the optimizer decides whether the old plan is still
optimal and whether to re-use previously computed results. The invention
addresses arbitrary SQL queries whose plans can contain sub-queries,
updates, trigger checking, and view maintenance operations. The invention
can handle concurrent update transactions or updates of common
sub-expressions in a query execution plan without compromising
consistency and isolation as locking information is tied to the record
ID.