@@ -2058,16 +2058,20 @@ BoolExprNode* RseBoolNode::convertNeqAllToNotAny(thread_db* tdbb, CompilerScratc
2058
2058
2059
2059
andNode->arg1 = missNode;
2060
2060
2061
+ RseNode* newInnerRse1 = innerRse->clone (csb->csb_pool );
2062
+ newInnerRse1->flags |= RseNode::FLAG_SUB_QUERY;
2063
+
2061
2064
RseBoolNode* rseBoolNode = FB_NEW_POOL (csb->csb_pool ) RseBoolNode (csb->csb_pool , blr_any);
2062
- rseBoolNode->rse = innerRse ;
2065
+ rseBoolNode->rse = newInnerRse1 ;
2063
2066
rseBoolNode->ownSavepoint = this ->ownSavepoint ;
2064
2067
2065
2068
andNode->arg2 = rseBoolNode;
2066
2069
2067
- RseNode* newInnerRse = innerRse->clone (csb->csb_pool );
2070
+ RseNode* newInnerRse2 = innerRse->clone (csb->csb_pool );
2071
+ newInnerRse2->flags |= RseNode::FLAG_SUB_QUERY;
2068
2072
2069
2073
rseBoolNode = FB_NEW_POOL (csb->csb_pool ) RseBoolNode (csb->csb_pool , blr_any);
2070
- rseBoolNode->rse = newInnerRse ;
2074
+ rseBoolNode->rse = newInnerRse2 ;
2071
2075
rseBoolNode->ownSavepoint = this ->ownSavepoint ;
2072
2076
2073
2077
orNode->arg2 = rseBoolNode;
@@ -2083,16 +2087,16 @@ BoolExprNode* RseBoolNode::convertNeqAllToNotAny(thread_db* tdbb, CompilerScratc
2083
2087
outerRseNeq->blrOp = blr_eql;
2084
2088
2085
2089
// If there was a boolean on the stream, append (AND) the new one
2086
- if (newInnerRse ->rse_boolean )
2090
+ if (newInnerRse2 ->rse_boolean )
2087
2091
{
2088
2092
andNode = FB_NEW_POOL (csb->csb_pool ) BinaryBoolNode (csb->csb_pool , blr_and);
2089
2093
2090
- andNode->arg1 = newInnerRse ->rse_boolean ;
2094
+ andNode->arg1 = newInnerRse2 ->rse_boolean ;
2091
2095
andNode->arg2 = boolean;
2092
2096
boolean = andNode;
2093
2097
}
2094
2098
2095
- newInnerRse ->rse_boolean = boolean;
2099
+ newInnerRse2 ->rse_boolean = boolean;
2096
2100
2097
2101
SubExprNodeCopier copier (csb->csb_pool , csb);
2098
2102
return copier.copy (tdbb, static_cast <BoolExprNode*>(newNode));
0 commit comments