Skip to content

Commit b3bf03b

Browse files
authored
Merge pull request #117 from carlopi/main
Bump to DuckDB v1.1.0
2 parents 5551098 + d850a22 commit b3bf03b

File tree

1,388 files changed

+152126
-61934
lines changed

Some content is hidden

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

1,388 files changed

+152126
-61934
lines changed

.github/workflows/NodeJS.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ jobs:
243243

244244
win-nodejs:
245245
name: node.js Windows
246-
runs-on: windows-latest
246+
runs-on: windows-2019
247247
needs: set-up-npm
248248
continue-on-error: ${{ matrix.node != '18' && matrix.node != '20' && matrix.node != '21' }}
249249
env:

binding.gyp

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
"src/duckdb/ub_src_common_row_operations.cpp",
2727
"src/duckdb/ub_src_common_serializer.cpp",
2828
"src/duckdb/ub_src_common_sort.cpp",
29+
"src/duckdb/ub_src_common_tree_renderer.cpp",
2930
"src/duckdb/ub_src_common_types.cpp",
3031
"src/duckdb/ub_src_common_types_column.cpp",
3132
"src/duckdb/ub_src_common_types_row.cpp",
@@ -243,6 +244,7 @@
243244
"src/duckdb/extension/parquet/parquet_writer.cpp",
244245
"src/duckdb/extension/parquet/serialize_parquet.cpp",
245246
"src/duckdb/extension/parquet/zstd_file_system.cpp",
247+
"src/duckdb/extension/parquet/geo_parquet.cpp",
246248
"src/duckdb/third_party/parquet/parquet_constants.cpp",
247249
"src/duckdb/third_party/parquet/parquet_types.cpp",
248250
"src/duckdb/third_party/thrift/thrift/protocol/TProtocol.cpp",
@@ -272,6 +274,37 @@
272274
"src/duckdb/third_party/zstd/compress/zstd_ldm.cpp",
273275
"src/duckdb/third_party/zstd/compress/zstd_opt.cpp",
274276
"src/duckdb/third_party/lz4/lz4.cpp",
277+
"src/duckdb/third_party/brotli/common/constants.cpp",
278+
"src/duckdb/third_party/brotli/common/context.cpp",
279+
"src/duckdb/third_party/brotli/common/dictionary.cpp",
280+
"src/duckdb/third_party/brotli/common/platform.cpp",
281+
"src/duckdb/third_party/brotli/common/shared_dictionary.cpp",
282+
"src/duckdb/third_party/brotli/common/transform.cpp",
283+
"src/duckdb/third_party/brotli/dec/bit_reader.cpp",
284+
"src/duckdb/third_party/brotli/dec/decode.cpp",
285+
"src/duckdb/third_party/brotli/dec/huffman.cpp",
286+
"src/duckdb/third_party/brotli/dec/state.cpp",
287+
"src/duckdb/third_party/brotli/enc/backward_references.cpp",
288+
"src/duckdb/third_party/brotli/enc/backward_references_hq.cpp",
289+
"src/duckdb/third_party/brotli/enc/bit_cost.cpp",
290+
"src/duckdb/third_party/brotli/enc/block_splitter.cpp",
291+
"src/duckdb/third_party/brotli/enc/brotli_bit_stream.cpp",
292+
"src/duckdb/third_party/brotli/enc/cluster.cpp",
293+
"src/duckdb/third_party/brotli/enc/command.cpp",
294+
"src/duckdb/third_party/brotli/enc/compound_dictionary.cpp",
295+
"src/duckdb/third_party/brotli/enc/compress_fragment.cpp",
296+
"src/duckdb/third_party/brotli/enc/compress_fragment_two_pass.cpp",
297+
"src/duckdb/third_party/brotli/enc/dictionary_hash.cpp",
298+
"src/duckdb/third_party/brotli/enc/encode.cpp",
299+
"src/duckdb/third_party/brotli/enc/encoder_dict.cpp",
300+
"src/duckdb/third_party/brotli/enc/entropy_encode.cpp",
301+
"src/duckdb/third_party/brotli/enc/fast_log.cpp",
302+
"src/duckdb/third_party/brotli/enc/histogram.cpp",
303+
"src/duckdb/third_party/brotli/enc/literal_cost.cpp",
304+
"src/duckdb/third_party/brotli/enc/memory.cpp",
305+
"src/duckdb/third_party/brotli/enc/metablock.cpp",
306+
"src/duckdb/third_party/brotli/enc/static_dict.cpp",
307+
"src/duckdb/third_party/brotli/enc/utf8_util.cpp",
275308
"src/duckdb/extension/icu/./icu-table-range.cpp",
276309
"src/duckdb/extension/icu/./icu-makedate.cpp",
277310
"src/duckdb/extension/icu/./icu-list-range.cpp",
@@ -313,6 +346,10 @@
313346
"src/duckdb/third_party/libpg_query",
314347
"src/duckdb/third_party/libpg_query/include",
315348
"src/duckdb/third_party/lz4",
349+
"src/duckdb/third_party/brotli/include",
350+
"src/duckdb/third_party/brotli/common",
351+
"src/duckdb/third_party/brotli/dec",
352+
"src/duckdb/third_party/brotli/enc",
316353
"src/duckdb/third_party/mbedtls",
317354
"src/duckdb/third_party/mbedtls/include",
318355
"src/duckdb/third_party/mbedtls/library",
@@ -328,6 +365,10 @@
328365
"src/duckdb/third_party/parquet",
329366
"src/duckdb/third_party/thrift",
330367
"src/duckdb/third_party/lz4",
368+
"src/duckdb/third_party/brotli/include",
369+
"src/duckdb/third_party/brotli/common",
370+
"src/duckdb/third_party/brotli/dec",
371+
"src/duckdb/third_party/brotli/enc",
331372
"src/duckdb/third_party/snappy",
332373
"src/duckdb/third_party/zstd/include",
333374
"src/duckdb/third_party/mbedtls",

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,13 +101,15 @@ timestamp_t ICUCalendarAdd::Operation(timestamp_t timestamp, interval_t interval
101101
calendar->add(UCAL_MINUTE, interval_m, status);
102102
CalendarAddHour(calendar, interval_h, status);
103103

104-
calendar->add(UCAL_DATE, interval.days, status);
104+
// PG Adds months before days
105105
calendar->add(UCAL_MONTH, interval.months, status);
106+
calendar->add(UCAL_DATE, interval.days, status);
106107
} else {
107-
// Add interval fields from highest to lowest (ragged to non-ragged)
108+
// PG Adds months before days
108109
calendar->add(UCAL_MONTH, interval.months, status);
109110
calendar->add(UCAL_DATE, interval.days, status);
110111

112+
// Add interval fields from highest to lowest (ragged to non-ragged)
111113
CalendarAddHour(calendar, interval_h, status);
112114
calendar->add(UCAL_MINUTE, interval_m, status);
113115
calendar->add(UCAL_SECOND, interval_s, status);

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,10 @@ unique_ptr<FunctionData> ICUDateFunc::Bind(ClientContext &context, ScalarFunctio
7373

7474
void ICUDateFunc::SetTimeZone(icu::Calendar *calendar, const string_t &tz_id) {
7575
auto tz = icu_66::TimeZone::createTimeZone(icu::UnicodeString::fromUTF8(icu::StringPiece(tz_id.GetString())));
76+
if (*tz == icu::TimeZone::getUnknown()) {
77+
delete tz;
78+
throw NotImplementedException("Unknown TimeZone '%s'", tz_id.GetString());
79+
}
7680
calendar->adoptTimeZone(tz);
7781
}
7882

@@ -83,7 +87,7 @@ timestamp_t ICUDateFunc::GetTimeUnsafe(icu::Calendar *calendar, uint64_t micros)
8387
if (U_FAILURE(status)) {
8488
throw InternalException("Unable to get ICU calendar time.");
8589
}
86-
return timestamp_t(millis * Interval::MICROS_PER_MSEC + micros);
90+
return timestamp_t(millis * Interval::MICROS_PER_MSEC + int64_t(micros));
8791
}
8892

8993
bool ICUDateFunc::TryGetTime(icu::Calendar *calendar, uint64_t micros, timestamp_t &result) {
@@ -98,7 +102,7 @@ bool ICUDateFunc::TryGetTime(icu::Calendar *calendar, uint64_t micros, timestamp
98102
if (!TryMultiplyOperator::Operation<int64_t, int64_t, int64_t>(millis, Interval::MICROS_PER_MSEC, millis)) {
99103
return false;
100104
}
101-
if (!TryAddOperator::Operation<int64_t, int64_t, int64_t>(millis, micros, millis)) {
105+
if (!TryAddOperator::Operation<int64_t, int64_t, int64_t>(millis, int64_t(micros), millis)) {
102106
return false;
103107
}
104108

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

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,17 @@ struct ICUCalendarDiff : public ICUDateFunc {
209209
return sub_func(calendar, start_date, end_date);
210210
}
211211

212+
static part_trunc_t DiffTruncationFactory(DatePartSpecifier type) {
213+
switch (type) {
214+
case DatePartSpecifier::WEEK:
215+
// Weeks are computed without anchors
216+
return TruncationFactory(DatePartSpecifier::DAY);
217+
default:
218+
break;
219+
}
220+
return TruncationFactory(type);
221+
}
222+
212223
template <typename T>
213224
static void ICUDateDiffFunction(DataChunk &args, ExpressionState &state, Vector &result) {
214225
D_ASSERT(args.ColumnCount() == 3);
@@ -229,7 +240,7 @@ struct ICUCalendarDiff : public ICUDateFunc {
229240
} else {
230241
const auto specifier = ConstantVector::GetData<string_t>(part_arg)->GetString();
231242
const auto part = GetDatePartSpecifier(specifier);
232-
auto trunc_func = TruncationFactory(part);
243+
auto trunc_func = DiffTruncationFactory(part);
233244
auto sub_func = SubtractFactory(part);
234245
BinaryExecutor::ExecuteWithNulls<T, T, int64_t>(
235246
startdate_arg, enddate_arg, result, args.size(),
@@ -248,7 +259,7 @@ struct ICUCalendarDiff : public ICUDateFunc {
248259
[&](string_t specifier, T start_date, T end_date, ValidityMask &mask, idx_t idx) {
249260
if (Timestamp::IsFinite(start_date) && Timestamp::IsFinite(end_date)) {
250261
const auto part = GetDatePartSpecifier(specifier.GetString());
251-
auto trunc_func = TruncationFactory(part);
262+
auto trunc_func = DiffTruncationFactory(part);
252263
auto sub_func = SubtractFactory(part);
253264
return DifferenceFunc<T>(calendar, start_date, end_date, trunc_func, sub_func);
254265
} else {

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,15 +68,15 @@ struct ICUStrptime : public ICUDateFunc {
6868
}
6969

7070
// Now get the parts in the given time zone
71-
uint64_t micros = 0;
71+
uint64_t micros = parsed.GetMicros();
7272
calendar->set(UCAL_EXTENDED_YEAR, parsed.data[0]); // strptime doesn't understand eras
7373
calendar->set(UCAL_MONTH, parsed.data[1] - 1);
7474
calendar->set(UCAL_DATE, parsed.data[2]);
7575
calendar->set(UCAL_HOUR_OF_DAY, parsed.data[3]);
7676
calendar->set(UCAL_MINUTE, parsed.data[4]);
7777
calendar->set(UCAL_SECOND, parsed.data[5]);
78-
calendar->set(UCAL_MILLISECOND, parsed.data[6] / Interval::MICROS_PER_MSEC);
79-
micros = parsed.data[6] % Interval::MICROS_PER_MSEC;
78+
calendar->set(UCAL_MILLISECOND, micros / Interval::MICROS_PER_MSEC);
79+
micros %= Interval::MICROS_PER_MSEC;
8080

8181
// This overrides the TZ setting, so only use it if an offset was parsed.
8282
// Note that we don't bother/worry about the DST setting because the two just combine.
@@ -158,7 +158,7 @@ struct ICUStrptime : public ICUDateFunc {
158158
}
159159
}
160160

161-
static bind_scalar_function_t bind_strptime;
161+
static bind_scalar_function_t bind_strptime; // NOLINT
162162

163163
static duckdb::unique_ptr<FunctionData> StrpTimeBindFunction(ClientContext &context, ScalarFunction &bound_function,
164164
vector<duckdb::unique_ptr<Expression>> &arguments) {
@@ -194,7 +194,7 @@ struct ICUStrptime : public ICUDateFunc {
194194
throw InvalidInputException("strptime format list must not be empty");
195195
}
196196
vector<StrpTimeFormat> formats;
197-
bool has_tz = true;
197+
bool has_tz = false;
198198
for (const auto &child : children) {
199199
format_string = child.ToString();
200200
format.format_specifier = format_string;
@@ -341,7 +341,7 @@ struct ICUStrptime : public ICUDateFunc {
341341
}
342342
};
343343

344-
bind_scalar_function_t ICUStrptime::bind_strptime = nullptr;
344+
bind_scalar_function_t ICUStrptime::bind_strptime = nullptr; // NOLINT
345345

346346
struct ICUStrftime : public ICUDateFunc {
347347
static void ParseFormatSpecifier(string_t &format_str, StrfTimeFormat &format) {

0 commit comments

Comments
 (0)