Example #1
0
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());
		}
	}
}