void Condition::Simplify() { int size = int(descriptors.size()); for(int i = 0; i < size; i++) { if(descriptors[i].op == O_OR_TREE) { BHASSERT_WITH_NO_PERFORMANCE_IMPACT(descriptors[i].tree); Descriptor desc; do { if((descriptors[i].op != O_OR_TREE)) break; desc = descriptors[i].tree->ExtractDescriptor(); if(!desc.IsEmpty()) { descriptors[i].Simplify(true); //true required not to simplify parameters desc.CalculateJoinType(); desc.CoerceColumnTypes(); descriptors.push_back(desc); } } while(!desc.IsEmpty()); } } }