Skip to content

Commit d16550d

Browse files
jacques-nchaojun-zhang
authored andcommitted
feat: upgrade substrait to 0.23.0
1 parent 590af58 commit d16550d

File tree

5 files changed

+66
-105
lines changed

5 files changed

+66
-105
lines changed

include/substrait/type/Type.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,12 @@ class ParameterizedType {
189189
/// Deserialize substrait raw type string into Substrait extension type.
190190
/// @param rawType - substrait extension raw string type
191191
static std::shared_ptr<const ParameterizedType> decode(
192-
const std::string& rawType);
192+
const std::string& rawType){
193+
return decode(rawType, true);
194+
}
195+
196+
static std::shared_ptr<const ParameterizedType> decode(
197+
const std::string& rawType,bool isParameterized);
193198

194199
[[nodiscard]] const bool& nullable() const {
195200
return nullable_;

scripts/setup-macos.sh

Lines changed: 0 additions & 89 deletions
This file was deleted.

substrait/function/Extension.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ bool decodeFunctionVariant(
1717
std::string lastReturnType;
1818
while (std::getline(ss, lastReturnType, '\n')) {
1919
}
20-
function.returnType = io::substrait::Type::decode(lastReturnType);
20+
function.returnType = io::substrait::ParameterizedType::decode(lastReturnType);
2121
}
2222
const auto& args = node["args"];
2323
if (args && args.IsSequence()) {
@@ -77,7 +77,7 @@ struct YAML::convert<io::substrait::ValueArgument> {
7777
const auto& value = node["value"];
7878
if (value && value.IsScalar()) {
7979
auto valueType = value.as<std::string>();
80-
argument.type = io::substrait::Type::decode(valueType);
80+
argument.type = io::substrait::ParameterizedType::decode(valueType);
8181
return true;
8282
}
8383
return false;

substrait/type/Type.cpp

Lines changed: 57 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
#include <algorithm>
44
#include <sstream>
55
#include <stdexcept>
6-
#include "substrait/type/Type.h"
76
#include "substrait/common/Exceptions.h"
7+
#include "substrait/type/Type.h"
88

99
namespace io::substrait {
1010

@@ -27,7 +27,7 @@ size_t findNextComma(const std::string& str, size_t start) {
2727

2828
} // namespace
2929

30-
ParameterizedTypePtr ParameterizedType::decode(const std::string& rawType) {
30+
ParameterizedTypePtr ParameterizedType::decode(const std::string& rawType, bool isParameterized) {
3131
std::string matchingType = rawType;
3232
std::transform(
3333
matchingType.begin(),
@@ -97,38 +97,83 @@ ParameterizedTypePtr ParameterizedType::decode(const std::string& rawType) {
9797
auto commaPos = findNextComma(rawType, prevPos);
9898
while (commaPos != std::string::npos) {
9999
auto token = rawType.substr(prevPos, commaPos - prevPos);
100-
nestedTypes.emplace_back(decode(token));
100+
nestedTypes.emplace_back(decode(token,isParameterized));
101101
prevPos = commaPos + 1;
102102
commaPos = findNextComma(rawType, prevPos);
103103
}
104104
auto token = rawType.substr(prevPos, rightAngleBracketPos - prevPos);
105-
nestedTypes.emplace_back(decode(token));
105+
nestedTypes.emplace_back(decode(token,isParameterized));
106106

107107
if (TypeTraits<TypeKind::kList>::typeString == baseType) {
108-
return std::make_shared<ParameterizedList>(nestedTypes[0], nullable);
108+
if (isParameterized) {
109+
return std::make_shared<ParameterizedList>(nestedTypes[0], nullable);
110+
} else {
111+
return std::make_shared<List>(
112+
std::dynamic_pointer_cast<const Type>(nestedTypes[0]), nullable);
113+
}
109114
} else if (TypeTraits<TypeKind::kMap>::typeString == baseType) {
110-
return std::make_shared<ParameterizedMap>(
111-
nestedTypes[0], nestedTypes[1], nullable);
115+
if (isParameterized) {
116+
return std::make_shared<ParameterizedMap>(
117+
nestedTypes[0], nestedTypes[1], nullable);
118+
} else {
119+
return std::make_shared<Map>(
120+
std::dynamic_pointer_cast<const Type>(nestedTypes[0]),
121+
std::dynamic_pointer_cast<const Type>(nestedTypes[1]),
122+
nullable);
123+
}
124+
112125
} else if (TypeTraits<TypeKind::kStruct>::typeString == baseType) {
113-
return std::make_shared<ParameterizedStruct>(nestedTypes, nullable);
126+
if (isParameterized) {
127+
return std::make_shared<const ParameterizedStruct>(
128+
nestedTypes, nullable);
129+
} else {
130+
std::vector<TypePtr> types;
131+
types.reserve(nestedTypes.size());
132+
for (int i = 0; i < nestedTypes.size(); i++) {
133+
types.emplace_back(
134+
std::dynamic_pointer_cast<const Type>(nestedTypes.at(i)));
135+
}
136+
return std::make_shared<Struct>(types, nullable);
137+
}
114138
} else if (TypeTraits<TypeKind::kDecimal>::typeString == baseType) {
115139
StringLiteralPtr precision =
116140
std::dynamic_pointer_cast<const StringLiteral>(nestedTypes[0]);
117141
StringLiteralPtr scale =
118142
std::dynamic_pointer_cast<const StringLiteral>(nestedTypes[1]);
119-
return std::make_shared<ParameterizedDecimal>(precision, scale, nullable);
143+
if (isParameterized) {
144+
return std::make_shared<ParameterizedDecimal>(
145+
precision, scale, nullable);
146+
} else {
147+
return std::make_shared<Decimal>(
148+
std::stoi(precision->value()), std::stoi(scale->value()), nullable);
149+
}
120150
} else if (TypeTraits<TypeKind::kVarchar>::typeString == baseType) {
121151
auto length =
122152
std::dynamic_pointer_cast<const StringLiteral>(nestedTypes[0]);
123-
return std::make_shared<ParameterizedVarchar>(length, nullable);
153+
if (isParameterized) {
154+
return std::make_shared<ParameterizedVarchar>(length, nullable);
155+
} else {
156+
return std::make_shared<Varchar>(std::stoi(length->value()), nullable);
157+
}
158+
124159
} else if (TypeTraits<TypeKind::kFixedChar>::typeString == baseType) {
125160
auto length =
126161
std::dynamic_pointer_cast<const StringLiteral>(nestedTypes[0]);
127-
return std::make_shared<ParameterizedFixedChar>(length, nullable);
162+
if (isParameterized) {
163+
return std::make_shared<ParameterizedFixedChar>(length, nullable);
164+
} else {
165+
return std::make_shared<FixedChar>(
166+
std::stoi(length->value()), nullable);
167+
}
128168
} else if (TypeTraits<TypeKind::kFixedBinary>::typeString == baseType) {
129169
auto length =
130170
std::dynamic_pointer_cast<const StringLiteral>(nestedTypes[0]);
131-
return std::make_shared<ParameterizedFixedBinary>(length, nullable);
171+
if (isParameterized) {
172+
return std::make_shared<ParameterizedFixedBinary>(length, nullable);
173+
} else {
174+
return std::make_shared<FixedBinary>(
175+
std::stoi(length->value()), nullable);
176+
}
132177
} else {
133178
SUBSTRAIT_UNSUPPORTED("Unsupported type: " + rawType);
134179
}

third_party/fmt

Submodule fmt updated 86 files

0 commit comments

Comments
 (0)