Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
81 changes: 39 additions & 42 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ set(DUCKDB_INCLUDE_DIRS
src/duckdb/third_party/brotli/common
src/duckdb/third_party/brotli/dec
src/duckdb/third_party/brotli/enc
src/duckdb/third_party/mbedtls
src/duckdb/third_party/mbedtls/include
src/duckdb/third_party/mbedtls/library
src/duckdb/third_party/miniz
Expand Down Expand Up @@ -104,7 +105,6 @@ set(DUCKDB_SRC_FILES
src/duckdb/ub_src_common_crypto.cpp
src/duckdb/ub_src_common_enums.cpp
src/duckdb/ub_src_common_exception.cpp
src/duckdb/ub_src_common_multi_file.cpp
src/duckdb/ub_src_common_operator.cpp
src/duckdb/ub_src_common_progress_bar.cpp
src/duckdb/ub_src_common_row_operations.cpp
Expand Down Expand Up @@ -279,27 +279,29 @@ set(DUCKDB_SRC_FILES
src/duckdb/third_party/libpg_query/src_backend_parser_scansup.cpp
src/duckdb/third_party/libpg_query/src_common_keywords.cpp
src/duckdb/third_party/mbedtls/library/aes.cpp
src/duckdb/third_party/mbedtls/library/aria.cpp
src/duckdb/third_party/mbedtls/library/asn1parse.cpp
src/duckdb/third_party/mbedtls/library/asn1write.cpp
src/duckdb/third_party/mbedtls/library/base64.cpp
src/duckdb/third_party/mbedtls/library/bignum.cpp
src/duckdb/third_party/mbedtls/library/bignum_core.cpp
src/duckdb/third_party/mbedtls/library/camellia.cpp
src/duckdb/third_party/mbedtls/library/cipher.cpp
src/duckdb/third_party/mbedtls/library/cipher_wrap.cpp
src/duckdb/third_party/mbedtls/library/constant_time.cpp
src/duckdb/third_party/mbedtls/library/entropy.cpp
src/duckdb/third_party/mbedtls/library/entropy_poll.cpp
src/duckdb/third_party/mbedtls/library/gcm.cpp
src/duckdb/third_party/mbedtls/library/md.cpp
src/duckdb/third_party/mbedtls/library/oid.cpp
src/duckdb/third_party/mbedtls/library/pem.cpp
src/duckdb/third_party/mbedtls/library/pk.cpp
src/duckdb/third_party/mbedtls/library/pk_wrap.cpp
src/duckdb/third_party/mbedtls/library/pkparse.cpp
src/duckdb/third_party/mbedtls/library/platform.cpp
src/duckdb/third_party/mbedtls/library/platform_util.cpp
src/duckdb/third_party/mbedtls/library/rsa.cpp
src/duckdb/third_party/mbedtls/library/rsa_alt_helpers.cpp
src/duckdb/third_party/mbedtls/library/sha1.cpp
src/duckdb/third_party/mbedtls/library/sha256.cpp
src/duckdb/third_party/mbedtls/library/sha512.cpp
src/duckdb/third_party/mbedtls/mbedtls_wrapper.cpp
src/duckdb/third_party/yyjson/yyjson.cpp
src/duckdb/third_party/zstd/common/debug.cpp
Expand Down Expand Up @@ -334,45 +336,41 @@ set(DUCKDB_SRC_FILES
src/duckdb/third_party/zstd/dict/divsufsort.cpp
src/duckdb/third_party/zstd/dict/fastcover.cpp
src/duckdb/third_party/zstd/dict/zdict.cpp
src/duckdb/extension/core_functions/lambda_functions.cpp
src/duckdb/extension/core_functions/core_functions_extension.cpp
src/duckdb/extension/core_functions/lambda_functions.cpp
src/duckdb/extension/core_functions/function_list.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_regression.cpp
src/duckdb/ub_extension_core_functions_aggregate_nested.cpp
src/duckdb/ub_extension_core_functions_aggregate_holistic.cpp
src/duckdb/ub_extension_core_functions_aggregate_algebraic.cpp
src/duckdb/ub_extension_core_functions_scalar_union.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_scalar_struct.cpp
src/duckdb/ub_extension_core_functions_scalar_generic.cpp
src/duckdb/ub_extension_core_functions_scalar_enum.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_array.cpp
src/duckdb/ub_extension_core_functions_scalar_map.cpp
src/duckdb/ub_extension_core_functions_scalar_enum.cpp
src/duckdb/ub_extension_core_functions_scalar_bit.cpp
src/duckdb/ub_extension_core_functions_scalar_math.cpp
src/duckdb/ub_extension_core_functions_scalar_debug.cpp
src/duckdb/ub_extension_core_functions_scalar_list.cpp
src/duckdb/ub_extension_core_functions_scalar_string.cpp
src/duckdb/ub_extension_core_functions_scalar_random.cpp
src/duckdb/ub_extension_core_functions_scalar_date.cpp
src/duckdb/ub_extension_core_functions_scalar_struct.cpp
src/duckdb/ub_extension_core_functions_scalar_debug.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_operators.cpp
src/duckdb/ub_extension_core_functions_scalar_bit.cpp
src/duckdb/ub_extension_core_functions_scalar_union.cpp
src/duckdb/ub_extension_core_functions_scalar_map.cpp
src/duckdb/extension/parquet/column_reader.cpp
src/duckdb/extension/parquet/column_writer.cpp
src/duckdb/extension/parquet/serialize_parquet.cpp
src/duckdb/extension/parquet/parquet_float16.cpp
src/duckdb/extension/parquet/parquet_crypto.cpp
src/duckdb/extension/parquet/parquet_extension.cpp
src/duckdb/extension/parquet/parquet_metadata.cpp
src/duckdb/extension/parquet/parquet_reader.cpp
src/duckdb/extension/parquet/parquet_statistics.cpp
src/duckdb/extension/parquet/parquet_timestamp.cpp
src/duckdb/extension/parquet/parquet_writer.cpp
src/duckdb/extension/parquet/serialize_parquet.cpp
src/duckdb/extension/parquet/zstd_file_system.cpp
src/duckdb/extension/parquet/parquet_crypto.cpp
src/duckdb/extension/parquet/parquet_extension.cpp
src/duckdb/extension/parquet/column_reader.cpp
src/duckdb/extension/parquet/geo_parquet.cpp
src/duckdb/extension/parquet/parquet_metadata.cpp
src/duckdb/extension/parquet/parquet_timestamp.cpp
src/duckdb/ub_extension_parquet_writer.cpp
src/duckdb/ub_extension_parquet_reader.cpp
src/duckdb/ub_extension_parquet_decoder.cpp
src/duckdb/third_party/parquet/parquet_types.cpp
src/duckdb/third_party/thrift/thrift/protocol/TProtocol.cpp
src/duckdb/third_party/thrift/thrift/transport/TTransportException.cpp
Expand Down Expand Up @@ -411,32 +409,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-timezone.cpp
src/duckdb/extension/icu/./icu-current.cpp
src/duckdb/extension/icu/./icu-datepart.cpp
src/duckdb/extension/icu/./icu-timebucket.cpp
src/duckdb/extension/icu/./icu-strptime.cpp
src/duckdb/extension/icu/./icu-datefunc.cpp
src/duckdb/extension/icu/./icu_extension.cpp
src/duckdb/extension/icu/./icu-table-range.cpp
src/duckdb/extension/icu/./icu-datesub.cpp
src/duckdb/extension/icu/./icu-list-range.cpp
src/duckdb/extension/icu/./icu-makedate.cpp
src/duckdb/extension/icu/./icu-datetrunc.cpp
src/duckdb/extension/icu/./icu-datepart.cpp
src/duckdb/extension/icu/./icu-current.cpp
src/duckdb/extension/icu/./icu-strptime.cpp
src/duckdb/extension/icu/./icu-datesub.cpp
src/duckdb/extension/icu/./icu-timezone.cpp
src/duckdb/extension/icu/./icu_extension.cpp
src/duckdb/extension/icu/./icu-dateadd.cpp
src/duckdb/extension/icu/./icu-list-range.cpp
src/duckdb/extension/icu/./icu-table-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_multi_file_info.cpp
src/duckdb/extension/json/json_deserializer.cpp
src/duckdb/extension/json/buffered_json_reader.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/serialize_json.cpp
src/duckdb/extension/json/json_common.cpp
src/duckdb/extension/json/json_reader.cpp
src/duckdb/extension/json/json_extension.cpp
src/duckdb/extension/json/json_common.cpp
src/duckdb/extension/json/json_functions.cpp
src/duckdb/extension/json/json_scan.cpp
src/duckdb/extension/json/json_serializer.cpp
src/duckdb/extension/json/json_deserializer.cpp
src/duckdb/extension/json/serialize_json.cpp
src/duckdb/ub_extension_json_json_functions.cpp)

set(JEMACLLOC_SRC_FILES
Expand Down
114 changes: 0 additions & 114 deletions src/duckdb/extension/core_functions/aggregate/algebraic/avg.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#include "core_functions/aggregate/algebraic_functions.hpp"
#include "core_functions/aggregate/sum_helpers.hpp"
#include "duckdb/common/types/hugeint.hpp"
#include "duckdb/common/types/time.hpp"
#include "duckdb/common/exception.hpp"
#include "duckdb/function/function_set.hpp"
#include "duckdb/planner/expression.hpp"
Expand All @@ -23,21 +22,6 @@ struct AvgState {
}
};

struct IntervalAvgState {
int64_t count;
interval_t value;

void Initialize() {
this->count = 0;
this->value = interval_t();
}

void Combine(const IntervalAvgState &other) {
this->count += other.count;
this->value = AddOperator::Operation<interval_t, interval_t, interval_t>(this->value, other.value);
}
};

struct KahanAvgState {
uint64_t count;
double value;
Expand Down Expand Up @@ -121,20 +105,6 @@ struct IntegerAverageOperationHugeint : public BaseSumOperation<AverageSetOperat
}
};

struct DiscreteAverageOperation : public BaseSumOperation<AverageSetOperation, AddToHugeint> {
template <class T, class STATE>
static void Finalize(STATE &state, T &target, AggregateFinalizeData &finalize_data) {
if (state.count == 0) {
finalize_data.ReturnNull();
} else {
hugeint_t remainder;
target = Hugeint::Cast<T>(Hugeint::DivMod(state.value, state.count, remainder));
// Round the result
target += (remainder > (state.count / 2));
}
}
};

struct HugeintAverageOperation : public BaseSumOperation<AverageSetOperation, HugeintAdd> {
template <class T, class STATE>
static void Finalize(STATE &state, T &target, AggregateFinalizeData &finalize_data) {
Expand Down Expand Up @@ -169,74 +139,6 @@ struct KahanAverageOperation : public BaseSumOperation<AverageSetOperation, Kaha
}
};

struct IntervalAverageOperation : public BaseSumOperation<AverageSetOperation, IntervalAdd> {
// Override BaseSumOperation::Initialize because
// IntervalAvgState does not have an assignment constructor from 0
static void Initialize(IntervalAvgState &state) {
AverageSetOperation::Initialize<IntervalAvgState>(state);
}

template <class RESULT_TYPE, class STATE>
static void Finalize(STATE &state, RESULT_TYPE &target, AggregateFinalizeData &finalize_data) {
if (state.count == 0) {
finalize_data.ReturnNull();
} else {
// DivideOperator does not borrow fractions right,
// TODO: Maybe it should?
// Copy PG implementation.
const auto &value = state.value;
const auto count = UnsafeNumericCast<int64_t>(state.count);

target.months = value.months / count;
auto months_remainder = value.months % count;

target.days = value.days / count;
auto days_remainder = value.days % count;

target.micros = value.micros / count;
auto micros_remainder = value.micros % count;

// Shift the remainders right
months_remainder *= Interval::DAYS_PER_MONTH;
target.days += months_remainder / count;
days_remainder += months_remainder % count;

days_remainder *= Interval::MICROS_PER_DAY;
micros_remainder += days_remainder / count;
target.micros += micros_remainder;
}
}
};

struct TimeTZAverageOperation : public BaseSumOperation<AverageSetOperation, AddToHugeint> {
template <class INPUT_TYPE, class STATE, class OP>
static void Operation(STATE &state, const INPUT_TYPE &input, AggregateUnaryInput &aggr_unary) {
const auto micros = Time::NormalizeTimeTZ(input).micros;
AverageSetOperation::template AddValues<STATE>(state, 1);
AddToHugeint::template AddNumber<STATE, int64_t>(state, micros);
}

template <class INPUT_TYPE, class STATE, class OP>
static void ConstantOperation(STATE &state, const INPUT_TYPE &input, AggregateUnaryInput &aggr_unary, idx_t count) {
const auto micros = Time::NormalizeTimeTZ(input).micros;
AverageSetOperation::template AddValues<STATE>(state, count);
AddToHugeint::template AddConstant<STATE, int64_t>(state, micros, count);
}

template <class T, class STATE>
static void Finalize(STATE &state, T &target, AggregateFinalizeData &finalize_data) {
if (state.count == 0) {
finalize_data.ReturnNull();
} else {
uint64_t remainder;
auto micros = Hugeint::Cast<int64_t>(Hugeint::DivModPositive(state.value, state.count, remainder));
// Round the result
micros += (remainder > (state.count / 2));
target = dtime_tz_t(dtime_t(micros), 0);
}
}
};

AggregateFunction GetAverageAggregate(PhysicalType type) {
switch (type) {
case PhysicalType::INT16: {
Expand All @@ -255,10 +157,6 @@ AggregateFunction GetAverageAggregate(PhysicalType type) {
return AggregateFunction::UnaryAggregate<AvgState<hugeint_t>, hugeint_t, double, HugeintAverageOperation>(
LogicalType::HUGEINT, LogicalType::DOUBLE);
}
case PhysicalType::INTERVAL: {
return AggregateFunction::UnaryAggregate<IntervalAvgState, interval_t, interval_t, IntervalAverageOperation>(
LogicalType::INTERVAL, LogicalType::INTERVAL);
}
default:
throw InternalException("Unimplemented average aggregate");
}
Expand All @@ -285,20 +183,8 @@ AggregateFunctionSet AvgFun::GetFunctions() {
avg.AddFunction(GetAverageAggregate(PhysicalType::INT32));
avg.AddFunction(GetAverageAggregate(PhysicalType::INT64));
avg.AddFunction(GetAverageAggregate(PhysicalType::INT128));
avg.AddFunction(GetAverageAggregate(PhysicalType::INTERVAL));
avg.AddFunction(AggregateFunction::UnaryAggregate<AvgState<double>, double, double, NumericAverageOperation>(
LogicalType::DOUBLE, LogicalType::DOUBLE));

avg.AddFunction(AggregateFunction::UnaryAggregate<AvgState<hugeint_t>, int64_t, int64_t, DiscreteAverageOperation>(
LogicalType::TIMESTAMP, LogicalType::TIMESTAMP));
avg.AddFunction(AggregateFunction::UnaryAggregate<AvgState<hugeint_t>, int64_t, int64_t, DiscreteAverageOperation>(
LogicalType::TIMESTAMP_TZ, LogicalType::TIMESTAMP_TZ));
avg.AddFunction(AggregateFunction::UnaryAggregate<AvgState<hugeint_t>, int64_t, int64_t, DiscreteAverageOperation>(
LogicalType::TIME, LogicalType::TIME));
avg.AddFunction(
AggregateFunction::UnaryAggregate<AvgState<hugeint_t>, dtime_tz_t, dtime_tz_t, TimeTZAverageOperation>(
LogicalType::TIME_TZ, LogicalType::TIME_TZ));

return avg;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -545,8 +545,8 @@ class ArgMinMaxNState {
BinaryAggregateHeap<K, V, COMPARATOR> heap;

bool is_initialized = false;
void Initialize(ArenaAllocator &allocator, idx_t nval) {
heap.Initialize(allocator, nval);
void Initialize(idx_t nval) {
heap.Initialize(nval);
is_initialized = true;
}
};
Expand Down Expand Up @@ -601,7 +601,7 @@ static void ArgMinMaxNUpdate(Vector inputs[], AggregateInputData &aggr_input, id
if (nval >= MAX_N) {
throw InvalidInputException("Invalid input for arg_min/arg_max: n value must be < %d", MAX_N);
}
state.Initialize(aggr_input.allocator, UnsafeNumericCast<idx_t>(nval));
state.Initialize(UnsafeNumericCast<idx_t>(nval));
}

// Now add the input to the heap
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ namespace duckdb {
template <class T>
static void FillExtraInfo(const StaticFunctionDefinition &function, T &info) {
info.internal = true;
info.alias_of = function.alias_of;
FillFunctionDescriptions(function, info);
info.on_conflict = OnCreateConflict::ALTER_ON_CONFLICT;
}
Expand Down
Loading
Loading