duckdb 0.6.2-dev1368.0 → 0.6.2-dev1372.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "duckdb",
3
3
  "main": "./lib/duckdb.js",
4
4
  "types": "./lib/duckdb.d.ts",
5
- "version": "0.6.2-dev1368.0",
5
+ "version": "0.6.2-dev1372.0",
6
6
  "description": "DuckDB node.js API",
7
7
  "gypfile": true,
8
8
  "dependencies": {
@@ -53,6 +53,10 @@ static inline void CalendarAddHour(icu::Calendar *calendar, int64_t interval_hou
53
53
 
54
54
  template <>
55
55
  timestamp_t ICUCalendarAdd::Operation(timestamp_t timestamp, interval_t interval, icu::Calendar *calendar) {
56
+ if (!Timestamp::IsFinite(timestamp)) {
57
+ return timestamp;
58
+ }
59
+
56
60
  int64_t millis = timestamp.value / Interval::MICROS_PER_MSEC;
57
61
  int64_t micros = timestamp.value % Interval::MICROS_PER_MSEC;
58
62
 
@@ -257,13 +257,15 @@ unique_ptr<ColumnReader> ParquetReader::CreateReaderRecursive(const FileMetaData
257
257
  auto &s_ele = file_meta_data->schema[next_schema_idx];
258
258
  auto this_idx = next_schema_idx;
259
259
 
260
- if (s_ele.__isset.repetition_type) {
261
- if (s_ele.repetition_type != FieldRepetitionType::REQUIRED) {
262
- max_define++;
263
- }
264
- if (s_ele.repetition_type == FieldRepetitionType::REPEATED) {
265
- max_repeat++;
266
- }
260
+ auto repetition_type = FieldRepetitionType::REQUIRED;
261
+ if (s_ele.__isset.repetition_type && this_idx > 0) {
262
+ repetition_type = s_ele.repetition_type;
263
+ }
264
+ if (repetition_type != FieldRepetitionType::REQUIRED) {
265
+ max_define++;
266
+ }
267
+ if (repetition_type == FieldRepetitionType::REPEATED) {
268
+ max_repeat++;
267
269
  }
268
270
 
269
271
  if (!s_ele.__isset.type) { // inner node
@@ -290,7 +292,7 @@ unique_ptr<ColumnReader> ParquetReader::CreateReaderRecursive(const FileMetaData
290
292
  unique_ptr<ColumnReader> result;
291
293
  LogicalType result_type;
292
294
 
293
- bool is_repeated = s_ele.repetition_type == FieldRepetitionType::REPEATED;
295
+ bool is_repeated = repetition_type == FieldRepetitionType::REPEATED;
294
296
  bool is_list = s_ele.__isset.converted_type && s_ele.converted_type == ConvertedType::LIST;
295
297
  bool is_map = s_ele.__isset.converted_type && s_ele.converted_type == ConvertedType::MAP;
296
298
  bool is_map_kv = s_ele.__isset.converted_type && s_ele.converted_type == ConvertedType::MAP_KEY_VALUE;
@@ -366,6 +368,13 @@ unique_ptr<ColumnReader> ParquetReader::CreateReader(const duckdb_parquet::forma
366
368
  idx_t next_schema_idx = 0;
367
369
  idx_t next_file_idx = 0;
368
370
 
371
+ if (file_meta_data->schema.empty()) {
372
+ throw IOException("Parquet reader: no schema elements found");
373
+ }
374
+ if (file_meta_data->schema[0].num_children == 0) {
375
+ throw IOException("Parquet reader: root schema element has no children");
376
+ }
377
+
369
378
  auto ret = CreateReaderRecursive(file_meta_data, 0, 0, 0, next_schema_idx, next_file_idx);
370
379
  D_ASSERT(next_schema_idx == file_meta_data->schema.size() - 1);
371
380
  D_ASSERT(file_meta_data->row_groups.empty() || next_file_idx == file_meta_data->row_groups[0].columns.size());
@@ -1,8 +1,8 @@
1
1
  #ifndef DUCKDB_VERSION
2
- #define DUCKDB_VERSION "0.6.2-dev1368"
2
+ #define DUCKDB_VERSION "0.6.2-dev1372"
3
3
  #endif
4
4
  #ifndef DUCKDB_SOURCE_ID
5
- #define DUCKDB_SOURCE_ID "a27022be67"
5
+ #define DUCKDB_SOURCE_ID "3da63b49a7"
6
6
  #endif
7
7
  #include "duckdb/function/table/system_functions.hpp"
8
8
  #include "duckdb/main/database.hpp"