MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / composeInversion

Method composeInversion

src/jrd/optimizer/Retrieval.cpp:204–231  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

202//
203
204InversionNode* Retrieval::composeInversion(InversionNode* node1,
205 InversionNode* node2,
206 InversionNode::Type node_type) const
207{
208 if (!node2)
209 return node1;
210
211 if (!node1)
212 return node2;
213
214 if (node_type == InversionNode::TYPE_OR)
215 {
216 if (node1->type == InversionNode::TYPE_INDEX &&
217 node2->type == InversionNode::TYPE_INDEX &&
218 node1->retrieval->irb_index == node2->retrieval->irb_index)
219 {
220 node_type = InversionNode::TYPE_IN;
221 }
222 else if (node1->type == InversionNode::TYPE_IN &&
223 node2->type == InversionNode::TYPE_INDEX &&
224 node1->node2->retrieval->irb_index == node2->retrieval->irb_index)
225 {
226 node_type = InversionNode::TYPE_IN;
227 }
228 }
229
230 return FB_NEW_POOL(getPool()) InversionNode(node_type, node1, node2);
231}
232
233const string& Retrieval::getAlias()
234{

Callers

nothing calls this directly

Calls 1

InversionNodeClass · 0.70

Tested by

no test coverage detected