Skip to content

Commit 70ececd

Browse files
duckdblabs-botbrianwyka
authored andcommitted
Update vendored DuckDB sources to 85336ac
1 parent b195171 commit 70ececd

File tree

71 files changed

+13298
-12739
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+13298
-12739
lines changed

src/duckdb/extension/core_functions/aggregate/holistic/mad.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ AggregateFunction GetTypedMedianAbsoluteDeviationAggregateFunction(const Logical
276276
return fun;
277277
}
278278

279-
AggregateFunction GetMedianAbsoluteDeviationAggregateFunction(const LogicalType &type) {
279+
AggregateFunction GetMedianAbsoluteDeviationAggregateFunctionInternal(const LogicalType &type) {
280280
switch (type.id()) {
281281
case LogicalTypeId::FLOAT:
282282
return GetTypedMedianAbsoluteDeviationAggregateFunction<float, float, float>(type, type);
@@ -314,6 +314,12 @@ AggregateFunction GetMedianAbsoluteDeviationAggregateFunction(const LogicalType
314314
}
315315
}
316316

317+
AggregateFunction GetMedianAbsoluteDeviationAggregateFunction(const LogicalType &type) {
318+
auto result = GetMedianAbsoluteDeviationAggregateFunctionInternal(type);
319+
result.errors = FunctionErrors::CAN_THROW_RUNTIME_ERROR;
320+
return result;
321+
}
322+
317323
unique_ptr<FunctionData> BindMedianAbsoluteDeviationDecimal(ClientContext &context, AggregateFunction &function,
318324
vector<unique_ptr<Expression>> &arguments) {
319325
function = GetMedianAbsoluteDeviationAggregateFunction(arguments[0]->return_type);

src/duckdb/extension/core_functions/scalar/array/array_functions.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,9 +210,13 @@ template <class OP>
210210
static void AddArrayFoldFunction(ScalarFunctionSet &set, const LogicalType &type) {
211211
const auto array = LogicalType::ARRAY(type, optional_idx());
212212
if (type.id() == LogicalTypeId::FLOAT) {
213-
set.AddFunction(ScalarFunction({array, array}, type, ArrayGenericFold<float, OP>, ArrayGenericBinaryBind));
213+
ScalarFunction function({array, array}, type, ArrayGenericFold<float, OP>, ArrayGenericBinaryBind);
214+
BaseScalarFunction::SetReturnsError(function);
215+
set.AddFunction(function);
214216
} else if (type.id() == LogicalTypeId::DOUBLE) {
215-
set.AddFunction(ScalarFunction({array, array}, type, ArrayGenericFold<double, OP>, ArrayGenericBinaryBind));
217+
ScalarFunction function({array, array}, type, ArrayGenericFold<double, OP>, ArrayGenericBinaryBind);
218+
BaseScalarFunction::SetReturnsError(function);
219+
set.AddFunction(function);
216220
} else {
217221
throw NotImplementedException("Array function not implemented for type %s", type.ToString());
218222
}
@@ -267,6 +271,9 @@ ScalarFunctionSet ArrayCrossProductFun::GetFunctions() {
267271
ScalarFunction({float_array, float_array}, float_array, ArrayFixedCombine<float, CrossProductOp, 3>));
268272
set.AddFunction(
269273
ScalarFunction({double_array, double_array}, double_array, ArrayFixedCombine<double, CrossProductOp, 3>));
274+
for (auto &func : set.functions) {
275+
BaseScalarFunction::SetReturnsError(func);
276+
}
270277
return set;
271278
}
272279

src/duckdb/extension/core_functions/scalar/bit/bitstring.cpp

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ ScalarFunctionSet BitStringFun::GetFunctions() {
4646
ScalarFunction({LogicalType::VARCHAR, LogicalType::INTEGER}, LogicalType::BIT, BitStringFunction<true>));
4747
bitstring.AddFunction(
4848
ScalarFunction({LogicalType::BIT, LogicalType::INTEGER}, LogicalType::BIT, BitStringFunction<false>));
49+
for (auto &func : bitstring.functions) {
50+
BaseScalarFunction::SetReturnsError(func);
51+
}
4952
return bitstring;
5053
}
5154

@@ -64,8 +67,10 @@ struct GetBitOperator {
6467
};
6568

6669
ScalarFunction GetBitFun::GetFunction() {
67-
return ScalarFunction({LogicalType::BIT, LogicalType::INTEGER}, LogicalType::INTEGER,
68-
ScalarFunction::BinaryFunction<string_t, int32_t, int32_t, GetBitOperator>);
70+
ScalarFunction func({LogicalType::BIT, LogicalType::INTEGER}, LogicalType::INTEGER,
71+
ScalarFunction::BinaryFunction<string_t, int32_t, int32_t, GetBitOperator>);
72+
BaseScalarFunction::SetReturnsError(func);
73+
return func;
6974
}
7075

7176
//===--------------------------------------------------------------------===//
@@ -90,8 +95,10 @@ static void SetBitOperation(DataChunk &args, ExpressionState &state, Vector &res
9095
}
9196

9297
ScalarFunction SetBitFun::GetFunction() {
93-
return ScalarFunction({LogicalType::BIT, LogicalType::INTEGER, LogicalType::INTEGER}, LogicalType::BIT,
94-
SetBitOperation);
98+
ScalarFunction function({LogicalType::BIT, LogicalType::INTEGER, LogicalType::INTEGER}, LogicalType::BIT,
99+
SetBitOperation);
100+
BaseScalarFunction::SetReturnsError(function);
101+
return function;
95102
}
96103

97104
//===--------------------------------------------------------------------===//

src/duckdb/extension/core_functions/scalar/blob/base64.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,9 @@ ScalarFunction ToBase64Fun::GetFunction() {
3939
}
4040

4141
ScalarFunction FromBase64Fun::GetFunction() {
42-
return ScalarFunction({LogicalType::VARCHAR}, LogicalType::BLOB, Base64DecodeFunction);
42+
ScalarFunction function({LogicalType::VARCHAR}, LogicalType::BLOB, Base64DecodeFunction);
43+
BaseScalarFunction::SetReturnsError(function);
44+
return function;
4345
}
4446

4547
} // namespace duckdb

src/duckdb/extension/core_functions/scalar/blob/encode.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,9 @@ ScalarFunction EncodeFun::GetFunction() {
3434
}
3535

3636
ScalarFunction DecodeFun::GetFunction() {
37-
return ScalarFunction({LogicalType::BLOB}, LogicalType::VARCHAR, DecodeFunction);
37+
ScalarFunction function({LogicalType::BLOB}, LogicalType::VARCHAR, DecodeFunction);
38+
BaseScalarFunction::SetReturnsError(function);
39+
return function;
3840
}
3941

4042
} // namespace duckdb

src/duckdb/extension/core_functions/scalar/date/date_part.cpp

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1705,6 +1705,9 @@ ScalarFunctionSet GetGenericDatePartFunction(scalar_function_t date_func, scalar
17051705
operator_set.AddFunction(ScalarFunction({LogicalType::TIMESTAMP}, LogicalType::BIGINT, std::move(ts_func), nullptr,
17061706
nullptr, ts_stats, DATE_CACHE));
17071707
operator_set.AddFunction(ScalarFunction({LogicalType::INTERVAL}, LogicalType::BIGINT, std::move(interval_func)));
1708+
for (auto &func : operator_set.functions) {
1709+
BaseScalarFunction::SetReturnsError(func);
1710+
}
17081711
return operator_set;
17091712
}
17101713

@@ -2019,7 +2022,11 @@ ScalarFunctionSet QuarterFun::GetFunctions() {
20192022
}
20202023

20212024
ScalarFunctionSet DayOfWeekFun::GetFunctions() {
2022-
return GetDatePartFunction<DatePart::DayOfWeekOperator>();
2025+
auto set = GetDatePartFunction<DatePart::DayOfWeekOperator>();
2026+
for (auto &func : set.functions) {
2027+
BaseScalarFunction::SetReturnsError(func);
2028+
}
2029+
return set;
20232030
}
20242031

20252032
ScalarFunctionSet ISODayOfWeekFun::GetFunctions() {
@@ -2046,9 +2053,14 @@ ScalarFunctionSet TimezoneFun::GetFunctions() {
20462053
auto operator_set = GetDatePartFunction<DatePart::TimezoneOperator>();
20472054

20482055
// PG also defines timezone(INTERVAL, TIME_TZ) => TIME_TZ
2049-
operator_set.AddFunction(
2050-
ScalarFunction({LogicalType::INTERVAL, LogicalType::TIME_TZ}, LogicalType::TIME_TZ,
2051-
DatePart::TimezoneOperator::BinaryFunction<interval_t, dtime_tz_t, dtime_tz_t>));
2056+
ScalarFunction function({LogicalType::INTERVAL, LogicalType::TIME_TZ}, LogicalType::TIME_TZ,
2057+
DatePart::TimezoneOperator::BinaryFunction<interval_t, dtime_tz_t, dtime_tz_t>);
2058+
2059+
operator_set.AddFunction(function);
2060+
2061+
for (auto &func : operator_set.functions) {
2062+
BaseScalarFunction::SetReturnsError(func);
2063+
}
20522064

20532065
return operator_set;
20542066
}
@@ -2241,6 +2253,10 @@ ScalarFunctionSet DatePartFun::GetFunctions() {
22412253
date_part.AddFunction(StructDatePart::GetFunction<interval_t>(LogicalType::INTERVAL));
22422254
date_part.AddFunction(StructDatePart::GetFunction<dtime_tz_t>(LogicalType::TIME_TZ));
22432255

2256+
for (auto &func : date_part.functions) {
2257+
BaseScalarFunction::SetReturnsError(func);
2258+
}
2259+
22442260
return date_part;
22452261
}
22462262

src/duckdb/extension/core_functions/scalar/date/date_trunc.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -728,6 +728,9 @@ ScalarFunctionSet DateTruncFun::GetFunctions() {
728728
DateTruncFunction<date_t, timestamp_t>, DateTruncBind));
729729
date_trunc.AddFunction(ScalarFunction({LogicalType::VARCHAR, LogicalType::INTERVAL}, LogicalType::INTERVAL,
730730
DateTruncFunction<interval_t, interval_t>));
731+
for (auto &func : date_trunc.functions) {
732+
BaseScalarFunction::SetReturnsError(func);
733+
}
731734
return date_trunc;
732735
}
733736

src/duckdb/extension/core_functions/scalar/date/make_date.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,12 +140,17 @@ ScalarFunctionSet MakeDateFun::GetFunctions() {
140140
{"year", LogicalType::BIGINT}, {"month", LogicalType::BIGINT}, {"day", LogicalType::BIGINT}};
141141
make_date.AddFunction(
142142
ScalarFunction({LogicalType::STRUCT(make_date_children)}, LogicalType::DATE, ExecuteStructMakeDate<int64_t>));
143+
for (auto &func : make_date.functions) {
144+
BaseScalarFunction::SetReturnsError(func);
145+
}
143146
return make_date;
144147
}
145148

146149
ScalarFunction MakeTimeFun::GetFunction() {
147-
return ScalarFunction({LogicalType::BIGINT, LogicalType::BIGINT, LogicalType::DOUBLE}, LogicalType::TIME,
148-
ExecuteMakeTime<int64_t>);
150+
ScalarFunction function({LogicalType::BIGINT, LogicalType::BIGINT, LogicalType::DOUBLE}, LogicalType::TIME,
151+
ExecuteMakeTime<int64_t>);
152+
BaseScalarFunction::SetReturnsError(function);
153+
return function;
149154
}
150155

151156
ScalarFunctionSet MakeTimestampFun::GetFunctions() {
@@ -155,6 +160,10 @@ ScalarFunctionSet MakeTimestampFun::GetFunctions() {
155160
LogicalType::TIMESTAMP, ExecuteMakeTimestamp<int64_t>));
156161
operator_set.AddFunction(
157162
ScalarFunction({LogicalType::BIGINT}, LogicalType::TIMESTAMP, ExecuteMakeTimestamp<int64_t>));
163+
164+
for (auto &func : operator_set.functions) {
165+
BaseScalarFunction::SetReturnsError(func);
166+
}
158167
return operator_set;
159168
}
160169

src/duckdb/extension/core_functions/scalar/date/time_bucket.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,9 @@ ScalarFunctionSet TimeBucketFun::GetFunctions() {
364364
LogicalType::DATE, TimeBucketOriginFunction<date_t>));
365365
time_bucket.AddFunction(ScalarFunction({LogicalType::INTERVAL, LogicalType::TIMESTAMP, LogicalType::TIMESTAMP},
366366
LogicalType::TIMESTAMP, TimeBucketOriginFunction<timestamp_t>));
367+
for (auto &func : time_bucket.functions) {
368+
BaseScalarFunction::SetReturnsError(func);
369+
}
367370
return time_bucket;
368371
}
369372

src/duckdb/extension/core_functions/scalar/date/to_interval.cpp

Lines changed: 52 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -165,68 +165,94 @@ struct ToMicroSecondsOperator {
165165
};
166166

167167
ScalarFunction ToMillenniaFun::GetFunction() {
168-
return ScalarFunction({LogicalType::INTEGER}, LogicalType::INTERVAL,
169-
ScalarFunction::UnaryFunction<int32_t, interval_t, ToMillenniaOperator>);
168+
ScalarFunction function({LogicalType::INTEGER}, LogicalType::INTERVAL,
169+
ScalarFunction::UnaryFunction<int32_t, interval_t, ToMillenniaOperator>);
170+
BaseScalarFunction::SetReturnsError(function);
171+
return function;
170172
}
171173

172174
ScalarFunction ToCenturiesFun::GetFunction() {
173-
return ScalarFunction({LogicalType::INTEGER}, LogicalType::INTERVAL,
174-
ScalarFunction::UnaryFunction<int32_t, interval_t, ToCenturiesOperator>);
175+
ScalarFunction function({LogicalType::INTEGER}, LogicalType::INTERVAL,
176+
ScalarFunction::UnaryFunction<int32_t, interval_t, ToCenturiesOperator>);
177+
BaseScalarFunction::SetReturnsError(function);
178+
return function;
175179
}
176180

177181
ScalarFunction ToDecadesFun::GetFunction() {
178-
return ScalarFunction({LogicalType::INTEGER}, LogicalType::INTERVAL,
179-
ScalarFunction::UnaryFunction<int32_t, interval_t, ToDecadesOperator>);
182+
ScalarFunction function({LogicalType::INTEGER}, LogicalType::INTERVAL,
183+
ScalarFunction::UnaryFunction<int32_t, interval_t, ToDecadesOperator>);
184+
BaseScalarFunction::SetReturnsError(function);
185+
return function;
180186
}
181187

182188
ScalarFunction ToYearsFun::GetFunction() {
183-
return ScalarFunction({LogicalType::INTEGER}, LogicalType::INTERVAL,
184-
ScalarFunction::UnaryFunction<int32_t, interval_t, ToYearsOperator>);
189+
ScalarFunction function({LogicalType::INTEGER}, LogicalType::INTERVAL,
190+
ScalarFunction::UnaryFunction<int32_t, interval_t, ToYearsOperator>);
191+
BaseScalarFunction::SetReturnsError(function);
192+
return function;
185193
}
186194

187195
ScalarFunction ToQuartersFun::GetFunction() {
188-
return ScalarFunction({LogicalType::INTEGER}, LogicalType::INTERVAL,
189-
ScalarFunction::UnaryFunction<int32_t, interval_t, ToQuartersOperator>);
196+
ScalarFunction function({LogicalType::INTEGER}, LogicalType::INTERVAL,
197+
ScalarFunction::UnaryFunction<int32_t, interval_t, ToQuartersOperator>);
198+
BaseScalarFunction::SetReturnsError(function);
199+
return function;
190200
}
191201

192202
ScalarFunction ToMonthsFun::GetFunction() {
193-
return ScalarFunction({LogicalType::INTEGER}, LogicalType::INTERVAL,
194-
ScalarFunction::UnaryFunction<int32_t, interval_t, ToMonthsOperator>);
203+
ScalarFunction function({LogicalType::INTEGER}, LogicalType::INTERVAL,
204+
ScalarFunction::UnaryFunction<int32_t, interval_t, ToMonthsOperator>);
205+
BaseScalarFunction::SetReturnsError(function);
206+
return function;
195207
}
196208

197209
ScalarFunction ToWeeksFun::GetFunction() {
198-
return ScalarFunction({LogicalType::INTEGER}, LogicalType::INTERVAL,
199-
ScalarFunction::UnaryFunction<int32_t, interval_t, ToWeeksOperator>);
210+
ScalarFunction function({LogicalType::INTEGER}, LogicalType::INTERVAL,
211+
ScalarFunction::UnaryFunction<int32_t, interval_t, ToWeeksOperator>);
212+
BaseScalarFunction::SetReturnsError(function);
213+
return function;
200214
}
201215

202216
ScalarFunction ToDaysFun::GetFunction() {
203-
return ScalarFunction({LogicalType::INTEGER}, LogicalType::INTERVAL,
204-
ScalarFunction::UnaryFunction<int32_t, interval_t, ToDaysOperator>);
217+
ScalarFunction function({LogicalType::INTEGER}, LogicalType::INTERVAL,
218+
ScalarFunction::UnaryFunction<int32_t, interval_t, ToDaysOperator>);
219+
BaseScalarFunction::SetReturnsError(function);
220+
return function;
205221
}
206222

207223
ScalarFunction ToHoursFun::GetFunction() {
208-
return ScalarFunction({LogicalType::BIGINT}, LogicalType::INTERVAL,
209-
ScalarFunction::UnaryFunction<int64_t, interval_t, ToHoursOperator>);
224+
ScalarFunction function({LogicalType::BIGINT}, LogicalType::INTERVAL,
225+
ScalarFunction::UnaryFunction<int64_t, interval_t, ToHoursOperator>);
226+
BaseScalarFunction::SetReturnsError(function);
227+
return function;
210228
}
211229

212230
ScalarFunction ToMinutesFun::GetFunction() {
213-
return ScalarFunction({LogicalType::BIGINT}, LogicalType::INTERVAL,
214-
ScalarFunction::UnaryFunction<int64_t, interval_t, ToMinutesOperator>);
231+
ScalarFunction function({LogicalType::BIGINT}, LogicalType::INTERVAL,
232+
ScalarFunction::UnaryFunction<int64_t, interval_t, ToMinutesOperator>);
233+
BaseScalarFunction::SetReturnsError(function);
234+
return function;
215235
}
216236

217237
ScalarFunction ToSecondsFun::GetFunction() {
218-
return ScalarFunction({LogicalType::DOUBLE}, LogicalType::INTERVAL,
219-
ScalarFunction::UnaryFunction<double, interval_t, ToSecondsOperator>);
238+
ScalarFunction function({LogicalType::DOUBLE}, LogicalType::INTERVAL,
239+
ScalarFunction::UnaryFunction<double, interval_t, ToSecondsOperator>);
240+
BaseScalarFunction::SetReturnsError(function);
241+
return function;
220242
}
221243

222244
ScalarFunction ToMillisecondsFun::GetFunction() {
223-
return ScalarFunction({LogicalType::DOUBLE}, LogicalType::INTERVAL,
224-
ScalarFunction::UnaryFunction<double, interval_t, ToMilliSecondsOperator>);
245+
ScalarFunction function({LogicalType::DOUBLE}, LogicalType::INTERVAL,
246+
ScalarFunction::UnaryFunction<double, interval_t, ToMilliSecondsOperator>);
247+
BaseScalarFunction::SetReturnsError(function);
248+
return function;
225249
}
226250

227251
ScalarFunction ToMicrosecondsFun::GetFunction() {
228-
return ScalarFunction({LogicalType::BIGINT}, LogicalType::INTERVAL,
229-
ScalarFunction::UnaryFunction<int64_t, interval_t, ToMicroSecondsOperator>);
252+
ScalarFunction function({LogicalType::BIGINT}, LogicalType::INTERVAL,
253+
ScalarFunction::UnaryFunction<int64_t, interval_t, ToMicroSecondsOperator>);
254+
BaseScalarFunction::SetReturnsError(function);
255+
return function;
230256
}
231257

232258
} // namespace duckdb

0 commit comments

Comments
 (0)