8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-24 07:23:03 +01:00

These checks don't seem required for the new ODS 11 optimizer logic. But they may cause bad effects, see the second example in CORE-3312: Sub-optimal join plan when the slave table depends on the master one via the OR predicate.

Let's remove them and see whether any regressions arise.
This commit is contained in:
dimitr 2011-01-29 11:30:22 +00:00
parent 8af62682b2
commit e0648e8078

View File

@ -1300,9 +1300,6 @@ InversionCandidate* OptimizerRetrieval::generateInversion(RecordSource** rsb)
// First, handle "AND" comparisons (all nodes except nod_or)
for (OptimizerBlk::opt_conjunct* tail = opt_begin; tail < opt_end; tail++)
{
if (tail->opt_conjunct_flags & opt_conjunct_matched) {
continue;
}
jrd_nod* const node = tail->opt_conjunct_node;
if (!(tail->opt_conjunct_flags & opt_conjunct_used) && node && (node->nod_type != nod_or))
{
@ -1319,9 +1316,6 @@ InversionCandidate* OptimizerRetrieval::generateInversion(RecordSource** rsb)
InversionCandidate* invCandidate = NULL;
for (OptimizerBlk::opt_conjunct* tail = opt_begin; tail < opt_end; tail++)
{
if (tail->opt_conjunct_flags & opt_conjunct_matched) {
continue;
}
jrd_nod* const node = tail->opt_conjunct_node;
if (!(tail->opt_conjunct_flags & opt_conjunct_used) && node && (node->nod_type == nod_or))
{