mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-01-24 04:03: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:
parent
8af62682b2
commit
e0648e8078
@ -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))
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user