Skip to content

Update vendored DuckDB sources to 3483d12aab #321

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 9 commits into
base: main
Choose a base branch
from
Open
  •  
  •  
  •  
73 changes: 37 additions & 36 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,7 @@ set(DUCKDB_SRC_FILES
src/duckdb/ub_src_transaction.cpp
src/duckdb/src/verification/copied_statement_verifier.cpp
src/duckdb/src/verification/deserialized_statement_verifier.cpp
src/duckdb/src/verification/explain_statement_verifier.cpp
src/duckdb/src/verification/external_statement_verifier.cpp
src/duckdb/src/verification/fetch_row_verifier.cpp
src/duckdb/src/verification/no_operator_caching_verifier.cpp
Expand Down Expand Up @@ -345,46 +346,46 @@ set(DUCKDB_SRC_FILES
src/duckdb/third_party/zstd/dict/fastcover.cpp
src/duckdb/third_party/zstd/dict/zdict.cpp
src/duckdb/extension/core_functions/core_functions_extension.cpp
src/duckdb/extension/core_functions/function_list.cpp
src/duckdb/extension/core_functions/lambda_functions.cpp
src/duckdb/ub_extension_core_functions_scalar_map.cpp
src/duckdb/extension/core_functions/function_list.cpp
src/duckdb/ub_extension_core_functions_scalar_date.cpp
src/duckdb/ub_extension_core_functions_scalar_operators.cpp
src/duckdb/ub_extension_core_functions_scalar_struct.cpp
src/duckdb/ub_extension_core_functions_scalar_list.cpp
src/duckdb/ub_extension_core_functions_scalar_array.cpp
src/duckdb/ub_extension_core_functions_scalar_random.cpp
src/duckdb/ub_extension_core_functions_scalar_string.cpp
src/duckdb/ub_extension_core_functions_scalar_blob.cpp
src/duckdb/ub_extension_core_functions_scalar_union.cpp
src/duckdb/ub_extension_core_functions_scalar_bit.cpp
src/duckdb/ub_extension_core_functions_scalar_array.cpp
src/duckdb/ub_extension_core_functions_scalar_enum.cpp
src/duckdb/ub_extension_core_functions_scalar_math.cpp
src/duckdb/ub_extension_core_functions_scalar_string.cpp
src/duckdb/ub_extension_core_functions_scalar_union.cpp
src/duckdb/ub_extension_core_functions_scalar_map.cpp
src/duckdb/ub_extension_core_functions_scalar_debug.cpp
src/duckdb/ub_extension_core_functions_scalar_enum.cpp
src/duckdb/ub_extension_core_functions_scalar_blob.cpp
src/duckdb/ub_extension_core_functions_scalar_struct.cpp
src/duckdb/ub_extension_core_functions_scalar_generic.cpp
src/duckdb/ub_extension_core_functions_scalar_date.cpp
src/duckdb/ub_extension_core_functions_scalar_list.cpp
src/duckdb/ub_extension_core_functions_aggregate_nested.cpp
src/duckdb/ub_extension_core_functions_aggregate_regression.cpp
src/duckdb/ub_extension_core_functions_aggregate_algebraic.cpp
src/duckdb/ub_extension_core_functions_aggregate_distributive.cpp
src/duckdb/ub_extension_core_functions_aggregate_holistic.cpp
src/duckdb/extension/parquet/parquet_writer.cpp
src/duckdb/ub_extension_core_functions_aggregate_distributive.cpp
src/duckdb/extension/parquet/parquet_metadata.cpp
src/duckdb/extension/parquet/serialize_parquet.cpp
src/duckdb/extension/parquet/geo_parquet.cpp
src/duckdb/extension/parquet/column_reader.cpp
src/duckdb/extension/parquet/parquet_float16.cpp
src/duckdb/extension/parquet/parquet_metadata.cpp
src/duckdb/extension/parquet/parquet_reader.cpp
src/duckdb/extension/parquet/zstd_file_system.cpp
src/duckdb/extension/parquet/parquet_timestamp.cpp
src/duckdb/extension/parquet/parquet_statistics.cpp
src/duckdb/extension/parquet/parquet_file_metadata_cache.cpp
src/duckdb/extension/parquet/parquet_crypto.cpp
src/duckdb/extension/parquet/column_reader.cpp
src/duckdb/extension/parquet/parquet_writer.cpp
src/duckdb/extension/parquet/parquet_multi_file_info.cpp
src/duckdb/extension/parquet/parquet_reader.cpp
src/duckdb/extension/parquet/column_writer.cpp
src/duckdb/extension/parquet/parquet_timestamp.cpp
src/duckdb/extension/parquet/zstd_file_system.cpp
src/duckdb/extension/parquet/parquet_extension.cpp
src/duckdb/extension/parquet/parquet_crypto.cpp
src/duckdb/extension/parquet/parquet_file_metadata_cache.cpp
src/duckdb/extension/parquet/serialize_parquet.cpp
src/duckdb/extension/parquet/parquet_statistics.cpp
src/duckdb/ub_extension_parquet_decoder.cpp
src/duckdb/ub_extension_parquet_reader.cpp
src/duckdb/ub_extension_parquet_reader_variant.cpp
src/duckdb/ub_extension_parquet_decoder.cpp
src/duckdb/ub_extension_parquet_writer.cpp
src/duckdb/third_party/parquet/parquet_types.cpp
src/duckdb/third_party/thrift/thrift/protocol/TProtocol.cpp
Expand Down Expand Up @@ -424,31 +425,31 @@ set(DUCKDB_SRC_FILES
src/duckdb/third_party/brotli/enc/metablock.cpp
src/duckdb/third_party/brotli/enc/static_dict.cpp
src/duckdb/third_party/brotli/enc/utf8_util.cpp
src/duckdb/extension/icu/./icu-list-range.cpp
src/duckdb/extension/icu/./icu-table-range.cpp
src/duckdb/extension/icu/./icu_extension.cpp
src/duckdb/extension/icu/./icu-strptime.cpp
src/duckdb/extension/icu/./icu-current.cpp
src/duckdb/extension/icu/./icu-makedate.cpp
src/duckdb/extension/icu/./icu-datetrunc.cpp
src/duckdb/extension/icu/./icu-datesub.cpp
src/duckdb/extension/icu/./icu-timezone.cpp
src/duckdb/extension/icu/./icu-timebucket.cpp
src/duckdb/extension/icu/./icu-table-range.cpp
src/duckdb/extension/icu/./icu-datefunc.cpp
src/duckdb/extension/icu/./icu-datepart.cpp
src/duckdb/extension/icu/./icu-datetrunc.cpp
src/duckdb/extension/icu/./icu-dateadd.cpp
src/duckdb/extension/icu/./icu-datepart.cpp
src/duckdb/extension/icu/./icu-timezone.cpp
src/duckdb/extension/icu/./icu-current.cpp
src/duckdb/extension/icu/./icu-strptime.cpp
src/duckdb/extension/icu/./icu-makedate.cpp
src/duckdb/extension/icu/./icu-timebucket.cpp
src/duckdb/extension/icu/./icu-list-range.cpp
src/duckdb/ub_extension_icu_third_party_icu_common.cpp
src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp
src/duckdb/extension/icu/third_party/icu/stubdata/stubdata.cpp
src/duckdb/extension/json/json_common.cpp
src/duckdb/extension/json/json_extension.cpp
src/duckdb/extension/json/json_multi_file_info.cpp
src/duckdb/extension/json/json_scan.cpp
src/duckdb/extension/json/json_reader.cpp
src/duckdb/extension/json/serialize_json.cpp
src/duckdb/extension/json/json_extension.cpp
src/duckdb/extension/json/json_enums.cpp
src/duckdb/extension/json/json_scan.cpp
src/duckdb/extension/json/json_functions.cpp
src/duckdb/extension/json/json_reader.cpp
src/duckdb/extension/json/json_common.cpp
src/duckdb/extension/json/json_deserializer.cpp
src/duckdb/extension/json/serialize_json.cpp
src/duckdb/extension/json/json_serializer.cpp
src/duckdb/ub_extension_json_json_functions.cpp)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -455,7 +455,7 @@ unique_ptr<FunctionData> BindDecimalArgMinMax(ClientContext &context, AggregateF
break;
}

auto cast_cost = CastFunctionSet::Get(context).ImplicitCastCost(by_type, by_types[i]);
auto cast_cost = CastFunctionSet::ImplicitCastCost(context, by_type, by_types[i]);
if (cast_cost < 0) {
continue;
}
Expand Down
60 changes: 60 additions & 0 deletions src/duckdb/extension/core_functions/aggregate/distributive/sum.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#include "core_functions/aggregate/distributive_functions.hpp"
#include "core_functions/aggregate/sum_helpers.hpp"
#include "duckdb/common/exception.hpp"
#include "duckdb/common/bignum.hpp"
#include "duckdb/common/types/decimal.hpp"
#include "duckdb/planner/expression/bound_aggregate_expression.hpp"
#include "duckdb/common/serializer/deserializer.hpp"
Expand Down Expand Up @@ -211,6 +212,63 @@ unique_ptr<FunctionData> BindDecimalSum(ClientContext &context, AggregateFunctio
return nullptr;
}

struct BignumState {
bool is_set;
BignumIntermediate value;
};

struct BignumOperation {
template <class STATE>
static void Initialize(STATE &state) {
state.is_set = false;
}

template <class INPUT_TYPE, class STATE, class OP>
static void ConstantOperation(STATE &state, const INPUT_TYPE &input, AggregateUnaryInput &unary_input,
idx_t count) {
for (idx_t i = 0; i < count; i++) {
Operation<INPUT_TYPE, STATE, OP>(state, input, unary_input);
}
}

template <class INPUT_TYPE, class STATE, class OP>
static void Operation(STATE &state, const INPUT_TYPE &input, AggregateUnaryInput &unary_input) {
if (!state.is_set) {
state.is_set = true;
state.value.Initialize(unary_input.input.allocator);
}
BignumIntermediate rhs(input);
state.value.AddInPlace(unary_input.input.allocator, rhs);
}

template <class STATE, class OP>
static void Combine(const STATE &source, STATE &target, AggregateInputData &input) {
if (!source.is_set) {
return;
}
if (!target.is_set) {
target.value = source.value;
target.is_set = true;
return;
}
target.value.AddInPlace(input.allocator, source.value);
target.is_set = true;
}

template <class TARGET_TYPE, class STATE>
static void Finalize(STATE &state, TARGET_TYPE &target, AggregateFinalizeData &finalize_data) {
if (!state.is_set) {
finalize_data.ReturnNull();
} else {
target = state.value.ToBignum(finalize_data.input.allocator);
}
}

static bool IgnoreNull() {
return true;
}
};

} // namespace

AggregateFunctionSet SumFun::GetFunctions() {
Expand All @@ -226,6 +284,8 @@ AggregateFunctionSet SumFun::GetFunctions() {
sum.AddFunction(GetSumAggregate(PhysicalType::INT128));
sum.AddFunction(AggregateFunction::UnaryAggregate<SumState<double>, double, double, NumericSumOperation>(
LogicalType::DOUBLE, LogicalType::DOUBLE));
sum.AddFunction(AggregateFunction::UnaryAggregate<BignumState, bignum_t, bignum_t, BignumOperation>(
LogicalType::BIGNUM, LogicalType::BIGNUM));
return sum;
}

Expand Down
16 changes: 4 additions & 12 deletions src/duckdb/extension/core_functions/aggregate/nested/list.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -182,14 +182,6 @@ void ListCombineFunction(Vector &states_vector, Vector &combined, AggregateInput

unique_ptr<FunctionData> ListBindFunction(ClientContext &context, AggregateFunction &function,
vector<unique_ptr<Expression>> &arguments) {
D_ASSERT(arguments.size() == 1);
D_ASSERT(function.arguments.size() == 1);

if (arguments[0]->return_type.id() == LogicalTypeId::UNKNOWN) {
function.arguments[0] = LogicalTypeId::UNKNOWN;
function.return_type = LogicalType::SQLNULL;
return nullptr;
}

function.return_type = LogicalType::LIST(arguments[0]->return_type);
return make_uniq<ListBindData>(function.return_type);
Expand All @@ -198,10 +190,10 @@ unique_ptr<FunctionData> ListBindFunction(ClientContext &context, AggregateFunct
} // namespace

AggregateFunction ListFun::GetFunction() {
auto func =
AggregateFunction({LogicalType::ANY}, LogicalTypeId::LIST, AggregateFunction::StateSize<ListAggState>,
AggregateFunction::StateInitialize<ListAggState, ListFunction>, ListUpdateFunction,
ListCombineFunction, ListFinalize, nullptr, ListBindFunction, nullptr, nullptr, nullptr);
auto func = AggregateFunction(
{LogicalType::TEMPLATE("T")}, LogicalType::LIST(LogicalType::TEMPLATE("T")),
AggregateFunction::StateSize<ListAggState>, AggregateFunction::StateInitialize<ListAggState, ListFunction>,
ListUpdateFunction, ListCombineFunction, ListFinalize, nullptr, ListBindFunction, nullptr, nullptr, nullptr);

return func;
}
Expand Down
6 changes: 3 additions & 3 deletions src/duckdb/extension/core_functions/function_list.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -243,14 +243,14 @@ static const StaticFunctionDefinition core_functions[] = {
DUCKDB_SCALAR_FUNCTION_SET(ListInnerProductFun),
DUCKDB_SCALAR_FUNCTION_SET_ALIAS(ListNegativeDotProductFun),
DUCKDB_SCALAR_FUNCTION_SET(ListNegativeInnerProductFun),
DUCKDB_SCALAR_FUNCTION_ALIAS(ListPackFun),
DUCKDB_SCALAR_FUNCTION_SET_ALIAS(ListPackFun),
DUCKDB_SCALAR_FUNCTION_SET(ListReduceFun),
DUCKDB_SCALAR_FUNCTION_SET(ListReverseSortFun),
DUCKDB_SCALAR_FUNCTION_SET(ListSliceFun),
DUCKDB_SCALAR_FUNCTION_SET(ListSortFun),
DUCKDB_SCALAR_FUNCTION(ListTransformFun),
DUCKDB_SCALAR_FUNCTION(ListUniqueFun),
DUCKDB_SCALAR_FUNCTION(ListValueFun),
DUCKDB_SCALAR_FUNCTION_SET(ListValueFun),
DUCKDB_AGGREGATE_FUNCTION_SET_ALIAS(ListaggFun),
DUCKDB_SCALAR_FUNCTION(LnFun),
DUCKDB_SCALAR_FUNCTION_SET(LogFun),
Expand All @@ -264,7 +264,7 @@ static const StaticFunctionDefinition core_functions[] = {
DUCKDB_SCALAR_FUNCTION_SET(MakeTimestampFun),
DUCKDB_SCALAR_FUNCTION_SET(MakeTimestampMsFun),
DUCKDB_SCALAR_FUNCTION_SET(MakeTimestampNsFun),
DUCKDB_SCALAR_FUNCTION(MapFun),
DUCKDB_SCALAR_FUNCTION_SET(MapFun),
DUCKDB_SCALAR_FUNCTION(MapConcatFun),
DUCKDB_SCALAR_FUNCTION(MapEntriesFun),
DUCKDB_SCALAR_FUNCTION(MapExtractFun),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -320,8 +320,8 @@ struct QuantileSortTree {
vector<column_t> sort_idx(1, 0);
const auto count = partition.count;

index_tree = make_uniq<WindowIndexTree>(partition.context, order_bys, sort_idx, count);
auto index_state = index_tree->GetLocalState();
index_tree = make_uniq<WindowIndexTree>(partition.context.client, order_bys, sort_idx, count);
auto index_state = index_tree->GetLocalState(partition.context);
auto &local_state = index_state->Cast<WindowIndexTreeLocalState>();

// Build the indirection array by scanning the valid indices
Expand All @@ -338,12 +338,12 @@ struct QuantileSortTree {
filter_sel[filtered++] = i;
}
}
local_state.SinkChunk(sort, row_idx, filter_sel, filtered);
local_state.Sink(partition.context, sort, row_idx, filter_sel, filtered);
} else {
local_state.SinkChunk(sort, row_idx, nullptr, 0);
local_state.Sink(partition.context, sort, row_idx, nullptr, 0);
}
}
local_state.Sort();
local_state.Finalize(partition.context);
}

inline idx_t SelectNth(const SubFrames &frames, size_t n) const {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ struct SumState {

void Initialize() {
this->isset = false;
this->value = 0;
}

void Combine(const SumState<T> &other) {
Expand Down Expand Up @@ -182,7 +183,6 @@ struct BaseSumOperation {
STATEOP::template AddValues<STATE>(state, count);
ADDOP::template AddConstant<STATE, INPUT_TYPE>(state, input, count);
}

static bool IgnoreNull() {
return true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ struct ListValueFun {
static constexpr const char *Example = "list_value(4, 5, 6)";
static constexpr const char *Categories = "list";

static ScalarFunction GetFunction();
static ScalarFunctionSet GetFunctions();
};

struct ListPackFun {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ struct MapFun {
static constexpr const char *Example = "map(['key1', 'key2'], ['val1', 'val2'])";
static constexpr const char *Categories = "";

static ScalarFunction GetFunction();
static ScalarFunctionSet GetFunctions();
};

struct MapEntriesFun {
Expand Down
20 changes: 0 additions & 20 deletions src/duckdb/extension/core_functions/scalar/date/date_part.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1438,26 +1438,6 @@ double DatePart::JulianDayOperator::Operation(date_t input) {
return double(Date::ExtractJulianDay(input));
}

template <>
double DatePart::JulianDayOperator::Operation(interval_t input) {
throw NotImplementedException("interval units \"julian\" not recognized");
}

template <>
double DatePart::JulianDayOperator::Operation(dtime_t input) {
throw NotImplementedException("\"time\" units \"julian\" not recognized");
}

template <>
double DatePart::JulianDayOperator::Operation(dtime_ns_t input) {
return JulianDayOperator::Operation<dtime_t, double>(input.time());
}

template <>
double DatePart::JulianDayOperator::Operation(dtime_tz_t input) {
return JulianDayOperator::Operation<dtime_t, double>(input.time());
}

template <>
void DatePart::StructOperator::Operation(bigint_vec &bigint_values, double_vec &double_values, const dtime_t &input,
const idx_t idx, const part_mask_t mask) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace duckdb {
namespace {

bool CanCastImplicitly(ClientContext &context, const LogicalType &source, const LogicalType &target) {
return CastFunctionSet::Get(context).ImplicitCastCost(source, target) >= 0;
return CastFunctionSet::ImplicitCastCost(context, source, target) >= 0;
}

void CanCastImplicitlyFunction(DataChunk &args, ExpressionState &state, Vector &result) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,11 @@ unique_ptr<FunctionData> CurrentSettingBind(ClientContext &context, ScalarFuncti
auto key = StringUtil::Lower(StringValue::Get(key_val));
Value val;
if (!context.TryGetCurrentSetting(key, val)) {
Catalog::AutoloadExtensionByConfigName(context, key);
auto extension_name = Catalog::AutoloadExtensionByConfigName(context, key);
// If autoloader didn't throw, the config is now available
context.TryGetCurrentSetting(key, val);
if (!context.TryGetCurrentSetting(key, val)) {
throw InternalException("Extension %s did not provide the '%s' config setting", extension_name, key);
}
}

bound_function.return_type = val.type();
Expand Down
Loading
Loading