8
0
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:
asfernandes 2012-09-24 01:40:44 +00:00
parent 94aaa1a208
commit d684e4a2f5
4 changed files with 10 additions and 9 deletions

View File

@ -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.

View File

@ -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);
}

View File

@ -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)

View File

@ -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),