better support for booleans

This commit is contained in:
2021-09-07 23:50:34 +02:00
parent 427a3a9f04
commit 0db976f471
8 changed files with 90 additions and 26 deletions

View File

@@ -404,12 +404,12 @@ bool USql::eval_relational_operator(const RelationalOperatorNode &filter, Table
(left_value->node_type == NodeType::float_value && right_value->node_type == NodeType::int_value) ||
(left_value->node_type == NodeType::float_value && right_value->node_type == NodeType::float_value)) {
comparator = left_value->getDoubleValue() - right_value->getDoubleValue();
} else if (left_value->node_type == NodeType::string_value || right_value->node_type == NodeType::string_value) {
comparator = left_value->getStringValue().compare(right_value->getStringValue());
} else if (left_value->node_type == NodeType::bool_value && right_value->node_type == NodeType::bool_value) {
} else if (left_value->node_type == NodeType::bool_value || right_value->node_type == NodeType::bool_value) {
bool bl = left_value->getBooleanValue();
bool br = right_value->getBooleanValue();
comparator = bl == br ? 0 : 1;
} else if (left_value->node_type == NodeType::string_value || right_value->node_type == NodeType::string_value) {
comparator = left_value->getStringValue().compare(right_value->getStringValue());
// date values are essentially int values so handled above
} else {
throw Exception("Undefined combination of types");