basic version of coalesce function
This commit is contained in:
@@ -34,6 +34,13 @@ std::unique_ptr<ValueNode> USql::date_add_function(const std::vector<std::unique
|
||||
}
|
||||
|
||||
|
||||
std::unique_ptr<ValueNode> USql::lower_function(const std::vector<std::unique_ptr<ValueNode>> &evaluatedPars) {
|
||||
std::string str = evaluatedPars[0]->getStringValue();
|
||||
std::transform(str.begin(), str.end(), str.begin(), [](unsigned char c) -> unsigned char { return tolower(c); });
|
||||
|
||||
return std::make_unique<StringValueNode>(str);
|
||||
}
|
||||
|
||||
std::unique_ptr<ValueNode> USql::upper_function(const std::vector<std::unique_ptr<ValueNode>> &evaluatedPars) {
|
||||
std::string str = evaluatedPars[0]->getStringValue();
|
||||
std::transform(str.begin(), str.end(), str.begin(), [](unsigned char c) -> unsigned char { return toupper(c); });
|
||||
@@ -41,11 +48,21 @@ std::unique_ptr<ValueNode> USql::upper_function(const std::vector<std::unique_pt
|
||||
return std::make_unique<StringValueNode>(str);
|
||||
}
|
||||
|
||||
std::unique_ptr<ValueNode> USql::lower_function(const std::vector<std::unique_ptr<ValueNode>> &evaluatedPars) {
|
||||
std::string str = evaluatedPars[0]->getStringValue();
|
||||
std::transform(str.begin(), str.end(), str.begin(), [](unsigned char c) -> unsigned char { return tolower(c); });
|
||||
|
||||
return std::make_unique<StringValueNode>(str);
|
||||
std::unique_ptr<ValueNode> USql::coalesce_function(const std::vector<std::unique_ptr<ValueNode>> &evaluatedPars) {
|
||||
for(const auto & par : evaluatedPars) {
|
||||
if (!par->isNull()) {
|
||||
// TODO implement rest and take it out as a function
|
||||
if (par->node_type == NodeType::int_value)
|
||||
return std::make_unique<IntValueNode>(par->getIntegerValue());
|
||||
if (par->node_type == NodeType::float_value)
|
||||
return std::make_unique<DoubleValueNode>(par->getDoubleValue());
|
||||
if (par->node_type == NodeType::string_value)
|
||||
return std::make_unique<StringValueNode>(par->getStringValue());
|
||||
if (par->node_type == NodeType::bool_value)
|
||||
return std::make_unique<BooleanValueNode>(par->getBooleanValue());
|
||||
}
|
||||
}
|
||||
return std::make_unique<NullValueNode>();
|
||||
}
|
||||
|
||||
std::unique_ptr<ValueNode> USql::pp_function(const std::vector<std::unique_ptr<ValueNode>> &evaluatedPars) {
|
||||
|
||||
Reference in New Issue
Block a user