initial support for is null and is not null

will nedd some work, but just for now
This commit is contained in:
2021-09-08 18:34:11 +02:00
parent 0db976f471
commit 61f3af90af
6 changed files with 30 additions and 5 deletions

View File

@@ -398,7 +398,15 @@ bool USql::eval_relational_operator(const RelationalOperatorNode &filter, Table
double comparator;
if (left_value->node_type == NodeType::int_value && right_value->node_type == NodeType::int_value) {
if (left_value->node_type == NodeType::null_value || right_value->node_type == NodeType::null_value) {
bool all_null = left_value->isNull() && right_value->node_type == NodeType::null_value ||
right_value->isNull() && left_value->node_type == NodeType::null_value;
if (filter.op == RelationalOperatorType::is)
return all_null;
if (filter.op == RelationalOperatorType::is_not)
return !all_null;
return false;
} else if (left_value->node_type == NodeType::int_value && right_value->node_type == NodeType::int_value) {
comparator = left_value->getIntegerValue() - right_value->getIntegerValue();
} else if ((left_value->node_type == NodeType::int_value && right_value->node_type == NodeType::float_value) ||
(left_value->node_type == NodeType::float_value && right_value->node_type == NodeType::int_value) ||