Skip to content

Commit 9118691

Browse files
Update vendored DuckDB sources to 56d42bc46a
1 parent 08a8bf7 commit 9118691

File tree

161 files changed

+3296
-2083
lines changed

Some content is hidden

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

161 files changed

+3296
-2083
lines changed

CMakeLists.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,11 @@ set(DUCKDB_SRC_FILES
178178
src/duckdb/ub_src_main_capi.cpp
179179
src/duckdb/ub_src_main_capi_cast.cpp
180180
src/duckdb/ub_src_main_chunk_scan_state.cpp
181-
src/duckdb/ub_src_main_extension.cpp
181+
src/duckdb/src/main/extension/extension_alias.cpp
182+
src/duckdb/src/main/extension/extension_helper.cpp
183+
src/duckdb/src/main/extension/extension_install.cpp
184+
src/duckdb/src/main/extension/extension_load.cpp
185+
src/duckdb/src/main/extension/extension_util.cpp
182186
src/duckdb/ub_src_main_relation.cpp
183187
src/duckdb/ub_src_main_secret.cpp
184188
src/duckdb/ub_src_main_settings.cpp
@@ -368,6 +372,7 @@ set(DUCKDB_SRC_FILES
368372
src/duckdb/extension/parquet/parquet_writer.cpp
369373
src/duckdb/extension/parquet/parquet_float16.cpp
370374
src/duckdb/extension/parquet/parquet_crypto.cpp
375+
src/duckdb/extension/parquet/parquet_multi_file_info.cpp
371376
src/duckdb/extension/parquet/parquet_metadata.cpp
372377
src/duckdb/extension/parquet/parquet_statistics.cpp
373378
src/duckdb/ub_extension_parquet_decoder.cpp

src/duckdb/extension/icu/icu-dateadd.cpp

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,17 @@
1212

1313
namespace duckdb {
1414

15+
static duckdb::unique_ptr<FunctionData> ICUBindIntervalMonths(ClientContext &context, ScalarFunction &bound_function,
16+
vector<duckdb::unique_ptr<Expression>> &arguments) {
17+
auto result = ICUDateFunc::Bind(context, bound_function, arguments);
18+
auto &info = result->Cast<ICUDateFunc::BindData>();
19+
TZCalendar calendar(*info.calendar, info.cal_setting);
20+
if (!calendar.SupportsIntervals()) {
21+
throw NotImplementedException("INTERVALs do not work with 13 month calendars. Try using DATE_DIFF instead.");
22+
}
23+
return std::move(result);
24+
}
25+
1526
struct ICUCalendarAdd {
1627
template <class TA, class TB, class TR>
1728
static inline TR Operation(TA left, TB right, TZCalendar &calendar_p) {
@@ -228,7 +239,7 @@ struct ICUDateAdd : public ICUDateFunc {
228239
template <typename TA, typename TR, typename OP>
229240
inline static ScalarFunction GetUnaryDateFunction(const LogicalTypeId &left_type,
230241
const LogicalTypeId &result_type) {
231-
return ScalarFunction({left_type}, result_type, ExecuteUnary<TA, TR, OP>, Bind);
242+
return ScalarFunction({left_type}, result_type, ExecuteUnary<TA, TR, OP>, ICUBindIntervalMonths);
232243
}
233244

234245
template <typename TA, typename TB, typename TR, typename OP>
@@ -247,7 +258,8 @@ struct ICUDateAdd : public ICUDateFunc {
247258
template <typename TA, typename TB, typename TR, typename OP>
248259
inline static ScalarFunction GetBinaryDateFunction(const LogicalTypeId &left_type, const LogicalTypeId &right_type,
249260
const LogicalTypeId &result_type) {
250-
return ScalarFunction({left_type, right_type}, result_type, ExecuteBinary<TA, TB, TR, OP>, Bind);
261+
return ScalarFunction({left_type, right_type}, result_type, ExecuteBinary<TA, TB, TR, OP>,
262+
ICUBindIntervalMonths);
251263
}
252264

253265
template <typename TA, typename TB, typename OP>

src/duckdb/extension/icu/icu-timezone.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,8 +165,7 @@ struct ICUFromNaiveTimestamp : public ICUDateFunc {
165165
}
166166
if (input.context->config.disable_timestamptz_casts) {
167167
throw BinderException("Casting from TIMESTAMP to TIMESTAMP WITH TIME ZONE without an explicit time zone "
168-
"has been disabled - use \"AT TIME ZONE ...\"",
169-
LogicalTypeIdToString(source.id()));
168+
"has been disabled - use \"AT TIME ZONE ...\"");
170169
}
171170

172171
auto cast_data = make_uniq<CastData>(make_uniq<BindData>(*input.context));

src/duckdb/extension/icu/include/icu-datefunc.hpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212

1313
#include "duckdb/common/enums/date_part_specifier.hpp"
1414
#include "duckdb/planner/expression/bound_function_expression.hpp"
15-
#include "unicode/calendar.h"
1615
#include "tz_calendar.hpp"
1716

1817
namespace duckdb {

src/duckdb/extension/icu/include/tz_calendar.hpp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
#pragma once
1010

11-
#include "icu-datefunc.hpp"
11+
#include "unicode/calendar.h"
1212
#include "duckdb/common/string_util.hpp"
1313

1414
namespace duckdb {
@@ -18,7 +18,8 @@ using CalendarPtr = duckdb::unique_ptr<icu::Calendar>;
1818
struct TZCalendar {
1919
TZCalendar(icu::Calendar &calendar_p, const string &cal_setting)
2020
: calendar(CalendarPtr(calendar_p.clone())),
21-
is_gregorian(cal_setting.empty() || StringUtil::CIEquals(cal_setting, "gregorian")) {
21+
is_gregorian(cal_setting.empty() || StringUtil::CIEquals(cal_setting, "gregorian")),
22+
supports_intervals(calendar->getMaximum(UCAL_MONTH) < 12) { // 0-based
2223
}
2324

2425
icu::Calendar *GetICUCalendar() {
@@ -27,9 +28,13 @@ struct TZCalendar {
2728
bool IsGregorian() const {
2829
return is_gregorian;
2930
}
31+
bool SupportsIntervals() const {
32+
return supports_intervals;
33+
}
3034

3135
CalendarPtr calendar;
32-
bool is_gregorian;
36+
const bool is_gregorian;
37+
const bool supports_intervals;
3338
};
3439

3540
} // namespace duckdb

src/duckdb/extension/json/json_multi_file_info.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -583,7 +583,6 @@ unique_ptr<NodeStatistics> JSONMultiFileInfo::GetCardinality(const MultiFileBind
583583

584584
void JSONMultiFileInfo::GetVirtualColumns(ClientContext &context, MultiFileBindData &bind_data,
585585
virtual_column_map_t &result) {
586-
result.insert(make_pair(COLUMN_IDENTIFIER_EMPTY, TableColumn("", LogicalType::BOOLEAN)));
587586
}
588587

589588
optional_idx JSONMultiFileInfo::MaxThreads(const MultiFileBindData &bind_data, const MultiFileGlobalState &global_state,

src/duckdb/extension/parquet/column_writer.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ ParquetColumnSchema ColumnWriter::FillParquetSchema(vector<duckdb_parquet::Schem
399399
repeated_element.__isset.num_children = true;
400400
repeated_element.__isset.type = false;
401401
repeated_element.__isset.repetition_type = true;
402-
repeated_element.name = is_list ? "list" : "array";
402+
repeated_element.name = "list";
403403
schemas.push_back(std::move(repeated_element));
404404

405405
ParquetColumnSchema list_column(name, type, max_define, max_repeat, schema_idx, 0);
@@ -494,7 +494,7 @@ ColumnWriter::CreateWriterRecursive(ClientContext &context, ParquetWriter &write
494494
}
495495
if (type.id() == LogicalTypeId::LIST || type.id() == LogicalTypeId::ARRAY) {
496496
auto is_list = type.id() == LogicalTypeId::LIST;
497-
path_in_schema.push_back(is_list ? "list" : "array");
497+
path_in_schema.push_back("list");
498498
auto child_writer = CreateWriterRecursive(context, writer, parquet_schemas, schema.children[0], path_in_schema);
499499
if (is_list) {
500500
return make_uniq<ListColumnWriter>(writer, schema, std::move(path_in_schema), std::move(child_writer),
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
//===----------------------------------------------------------------------===//
2+
// DuckDB
3+
//
4+
// parquet_multi_file_info.hpp
5+
//
6+
//
7+
//===----------------------------------------------------------------------===//
8+
9+
#pragma once
10+
11+
#include "duckdb/common/multi_file/multi_file_function.hpp"
12+
#include "parquet_reader.hpp"
13+
14+
namespace duckdb {
15+
16+
class ParquetFileReaderOptions : public BaseFileReaderOptions {
17+
public:
18+
explicit ParquetFileReaderOptions(ParquetOptions options_p) : options(std::move(options_p)) {
19+
}
20+
explicit ParquetFileReaderOptions(ClientContext &context) : options(context) {
21+
}
22+
23+
ParquetOptions options;
24+
};
25+
26+
struct ParquetMultiFileInfo {
27+
static unique_ptr<BaseFileReaderOptions> InitializeOptions(ClientContext &context,
28+
optional_ptr<TableFunctionInfo> info);
29+
static bool ParseCopyOption(ClientContext &context, const string &key, const vector<Value> &values,
30+
BaseFileReaderOptions &options, vector<string> &expected_names,
31+
vector<LogicalType> &expected_types);
32+
static bool ParseOption(ClientContext &context, const string &key, const Value &val, MultiFileOptions &file_options,
33+
BaseFileReaderOptions &options);
34+
static void FinalizeCopyBind(ClientContext &context, BaseFileReaderOptions &options_p,
35+
const vector<string> &expected_names, const vector<LogicalType> &expected_types);
36+
static void BindReader(ClientContext &context, vector<LogicalType> &return_types, vector<string> &names,
37+
MultiFileBindData &bind_data);
38+
static unique_ptr<TableFunctionData> InitializeBindData(MultiFileBindData &multi_file_data,
39+
unique_ptr<BaseFileReaderOptions> options);
40+
static void FinalizeBindData(MultiFileBindData &multi_file_data);
41+
static void GetBindInfo(const TableFunctionData &bind_data, BindInfo &info);
42+
static optional_idx MaxThreads(const MultiFileBindData &bind_data, const MultiFileGlobalState &global_state,
43+
FileExpandResult expand_result);
44+
static unique_ptr<GlobalTableFunctionState>
45+
InitializeGlobalState(ClientContext &context, MultiFileBindData &bind_data, MultiFileGlobalState &global_state);
46+
static unique_ptr<LocalTableFunctionState> InitializeLocalState(ExecutionContext &, GlobalTableFunctionState &);
47+
static shared_ptr<BaseFileReader> CreateReader(ClientContext &context, GlobalTableFunctionState &gstate,
48+
BaseUnionData &union_data, const MultiFileBindData &bind_data_p);
49+
static shared_ptr<BaseFileReader> CreateReader(ClientContext &context, GlobalTableFunctionState &gstate,
50+
const OpenFileInfo &file, idx_t file_idx,
51+
const MultiFileBindData &bind_data);
52+
static shared_ptr<BaseFileReader> CreateReader(ClientContext &context, const OpenFileInfo &file,
53+
ParquetOptions &options, const MultiFileOptions &file_options);
54+
static shared_ptr<BaseUnionData> GetUnionData(shared_ptr<BaseFileReader> scan_p, idx_t file_idx);
55+
static void FinalizeReader(ClientContext &context, BaseFileReader &reader, GlobalTableFunctionState &);
56+
static void Scan(ClientContext &context, BaseFileReader &reader, GlobalTableFunctionState &global_state,
57+
LocalTableFunctionState &local_state, DataChunk &chunk);
58+
static bool TryInitializeScan(ClientContext &context, shared_ptr<BaseFileReader> &reader,
59+
GlobalTableFunctionState &gstate, LocalTableFunctionState &lstate);
60+
static void FinishFile(ClientContext &context, GlobalTableFunctionState &global_state, BaseFileReader &reader);
61+
static void FinishReading(ClientContext &context, GlobalTableFunctionState &global_state,
62+
LocalTableFunctionState &local_state);
63+
static unique_ptr<NodeStatistics> GetCardinality(const MultiFileBindData &bind_data, idx_t file_count);
64+
static unique_ptr<BaseStatistics> GetStatistics(ClientContext &context, BaseFileReader &reader, const string &name);
65+
static double GetProgressInFile(ClientContext &context, const BaseFileReader &reader);
66+
static void GetVirtualColumns(ClientContext &context, MultiFileBindData &bind_data, virtual_column_map_t &result);
67+
};
68+
69+
class ParquetScanFunction {
70+
public:
71+
static TableFunctionSet GetFunctionSet();
72+
};
73+
74+
} // namespace duckdb

src/duckdb/extension/parquet/include/reader/row_number_column_reader.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ class RowNumberColumnReader : public ColumnReader {
2626

2727
public:
2828
idx_t Read(uint64_t num_values, data_ptr_t define_out, data_ptr_t repeat_out, Vector &result) override;
29+
void Filter(uint64_t num_values, data_ptr_t define_out, data_ptr_t repeat_out, Vector &result_out,
30+
const TableFilter &filter, TableFilterState &filter_state, SelectionVector &sel,
31+
idx_t &approved_tuple_count, bool is_first_filter) override;
2932

3033
void InitializeRead(idx_t row_group_idx_p, const vector<ColumnChunk> &columns, TProtocol &protocol_p) override;
3134

0 commit comments

Comments
 (0)