Skip to content

Commit 5d2b20f

Browse files
committed
Misc
1 parent 3782f55 commit 5d2b20f

File tree

3 files changed

+13
-24
lines changed

3 files changed

+13
-24
lines changed

src/dsql/BoolNodes.cpp

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ TriState BinaryBoolNode::executeAnd(thread_db* tdbb, Request* request) const
281281

282282
if (value1.isAssigned())
283283
{
284-
if (!value1.asBool())
284+
if (value1 != TriState(true))
285285
return TriState(false);
286286

287287
return arg2->execute(tdbb, request);
@@ -863,12 +863,12 @@ TriState ComparativeBoolNode::execute(thread_db* tdbb, Request* request) const
863863
case blr_between:
864864
desc[1] = EVL_expr(tdbb, request, arg3);
865865
if (!desc[1])
866-
return !null2 && comparison < 0 ? TriState(false) : TriState::empty();
866+
return (!null2 && comparison < 0) ? TriState(false) : TriState::empty();
867867

868868
{
869869
// arg1 <= arg3
870870
const bool cmp1_3 = (MOV_compare(tdbb, desc[0], desc[1]) <= 0);
871-
return null2 && cmp1_3 ? TriState::empty() : TriState(cmp1_3);
871+
return (null2 && cmp1_3) ? TriState::empty() : TriState(cmp1_3);
872872
}
873873

874874
case blr_containing:
@@ -1050,24 +1050,21 @@ TriState ComparativeBoolNode::stringBoolean(thread_db* tdbb, Request* request,
10501050
else
10511051
{
10521052
if (blrOp == blr_containing)
1053-
return TriState(obj->contains(*tdbb->getDefaultPool(),
1054-
str, strLen, patternStr, patternLen));
1053+
return TriState(obj->contains(*tdbb->getDefaultPool(), str, strLen, patternStr, patternLen));
10551054
else if (blrOp == blr_starting)
1056-
return TriState(obj->starts(*tdbb->getDefaultPool(),
1057-
str, strLen, patternStr, patternLen));
1055+
return TriState(obj->starts(*tdbb->getDefaultPool(), str, strLen, patternStr, patternLen));
10581056
else if (blrOp == blr_like)
1057+
{
10591058
return TriState(obj->like(*tdbb->getDefaultPool(), str, strLen,
10601059
patternStr, patternLen, escapeStr, escapeLen));
1060+
}
10611061
else if (blrOp == blr_similar)
10621062
{
10631063
return TriState(obj->similarTo(tdbb, *tdbb->getDefaultPool(),
10641064
str, strLen, patternStr, patternLen, escapeStr, escapeLen));
10651065
}
10661066
else // blr_matching
1067-
{
1068-
return TriState(obj->matches(*tdbb->getDefaultPool(),
1069-
str, strLen, patternStr, patternLen));
1070-
}
1067+
return TriState(obj->matches(*tdbb->getDefaultPool(), str, strLen, patternStr, patternLen));
10711068
}
10721069
}
10731070

src/jrd/fun.epp

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -419,11 +419,7 @@ void FUN_evaluate(thread_db* tdbb, const Function* function, const NestValueArra
419419
// doesn't carry the null flag in the descriptor. Why Borland didn't
420420
// set on such flag is maybe because it only has local meaning.
421421
// This closes SF Bug #728839.
422-
if (!(input && (input->dsc_flags & DSC_null)))
423-
*arg_ptr++ = nullptr;
424-
else
425-
*arg_ptr++ = input;
426-
422+
*arg_ptr++ = (input && !input->isNull()) ? input : nullptr;
427423
continue;
428424
}
429425

src/jrd/recsrc/FilteredStream.cpp

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ bool FilteredStream::internalGetRecord(thread_db* tdbb) const
9898
if (!(impure->irsb_flags & irsb_open))
9999
return false;
100100

101-
if (!evaluateBoolean(tdbb).asBool())
101+
if (evaluateBoolean(tdbb) != TriState(true))
102102
{
103103
invalidateRecords(request);
104104
return false;
@@ -246,11 +246,9 @@ Firebird::TriState FilteredStream::evaluateBoolean(thread_db* tdbb) const
246246
else
247247
{
248248
// select for ANY/ALL processing
249-
const bool select_value = select_node->execute(tdbb, request).asBool();
250-
251249
// see if any record in select stream
252250

253-
if (select_value)
251+
if (select_node->execute(tdbb, request).asBool())
254252
{
255253
// see if any record is null
256254

@@ -301,8 +299,7 @@ Firebird::TriState FilteredStream::evaluateBoolean(thread_db* tdbb) const
301299
if (select_node)
302300
{
303301
// select for ANY/ALL processing
304-
const bool select_value = select_node->execute(tdbb, request).asBool();
305-
if (select_value)
302+
if (select_node->execute(tdbb, request).asBool())
306303
{
307304
any_false = true;
308305
break;
@@ -338,8 +335,7 @@ Firebird::TriState FilteredStream::evaluateBoolean(thread_db* tdbb) const
338335
if (select_node)
339336
{
340337
// select for ANY/ALL processing
341-
const bool select_value = select_node->execute(tdbb, request).asBool();
342-
if (select_value)
338+
if (select_node->execute(tdbb, request).asBool())
343339
{
344340
any_false = true;
345341
break;

0 commit comments

Comments
 (0)