mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-01-22 22:43:03 +01:00
Fixed assert reported by Vlad more some related problem.
This commit is contained in:
parent
94aaa1a208
commit
d684e4a2f5
@ -1324,6 +1324,7 @@ BoolExprNode* ComparativeBoolNode::createRseNode(DsqlCompilerScratch* dsqlScratc
|
||||
const DsqlContextStack::iterator baseUnion(dsqlScratch->unionContext);
|
||||
|
||||
RseNode* rse = PASS1_rse(dsqlScratch, select_expr, NULL);
|
||||
rse->flags |= RseNode::FLAG_DSQL_COMPARATIVE;
|
||||
|
||||
// Create a conjunct to be injected.
|
||||
|
||||
|
@ -179,7 +179,6 @@ public:
|
||||
|
||||
virtual bool dsqlAggregateFinder(AggregateFinder& visitor)
|
||||
{
|
||||
fb_assert(blrOp != blr_any && blrOp != blr_ansi_any && blrOp != blr_ansi_all);
|
||||
return visitor.ignoreSubSelects ? false : BoolExprNode::dsqlAggregateFinder(visitor);
|
||||
}
|
||||
|
||||
|
@ -2182,14 +2182,14 @@ bool RseNode::dsqlAggregate2Finder(Aggregate2Finder& visitor)
|
||||
return visitor.visit(dsqlWhere) | visitor.visit(dsqlSelectList) | visitor.visit(dsqlStreams);
|
||||
}
|
||||
|
||||
bool RseNode::dsqlInvalidReferenceFinder(InvalidReferenceFinder& /*visitor*/)
|
||||
bool RseNode::dsqlInvalidReferenceFinder(InvalidReferenceFinder& visitor)
|
||||
{
|
||||
return false;
|
||||
return (flags & FLAG_DSQL_COMPARATIVE) && RecordSourceNode::dsqlInvalidReferenceFinder(visitor);
|
||||
}
|
||||
|
||||
bool RseNode::dsqlSubSelectFinder(SubSelectFinder& /*visitor*/)
|
||||
bool RseNode::dsqlSubSelectFinder(SubSelectFinder& visitor)
|
||||
{
|
||||
return true;
|
||||
return !(flags & FLAG_DSQL_COMPARATIVE) || RecordSourceNode::dsqlSubSelectFinder(visitor);
|
||||
}
|
||||
|
||||
bool RseNode::dsqlFieldFinder(FieldFinder& visitor)
|
||||
|
@ -572,10 +572,11 @@ private:
|
||||
class RseNode : public TypedNode<RecordSourceNode, RecordSourceNode::TYPE_RSE>
|
||||
{
|
||||
public:
|
||||
static const unsigned FLAG_VARIANT = 0x1; // variant (not invariant?)
|
||||
static const unsigned FLAG_SINGULAR = 0x2; // singleton select
|
||||
static const unsigned FLAG_WRITELOCK = 0x4; // locked for write
|
||||
static const unsigned FLAG_SCROLLABLE = 0x8; // scrollable cursor
|
||||
static const unsigned FLAG_VARIANT = 0x01; // variant (not invariant?)
|
||||
static const unsigned FLAG_SINGULAR = 0x02; // singleton select
|
||||
static const unsigned FLAG_WRITELOCK = 0x04; // locked for write
|
||||
static const unsigned FLAG_SCROLLABLE = 0x08; // scrollable cursor
|
||||
static const unsigned FLAG_DSQL_COMPARATIVE = 0x10; // transformed from DSQL ComparativeBoolNode
|
||||
|
||||
explicit RseNode(MemoryPool& pool)
|
||||
: TypedNode<RecordSourceNode, RecordSourceNode::TYPE_RSE>(pool),
|
||||
|
Loading…
Reference in New Issue
Block a user