duckdb 0.5.2-dev1345.0 → 0.5.2-dev1347.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.5.2-dev1345.0",
5
+ "version": "0.5.2-dev1347.0",
6
6
  "description": "DuckDB node.js API",
7
7
  "gypfile": true,
8
8
  "dependencies": {
package/src/duckdb.cpp CHANGED
@@ -36004,6 +36004,7 @@ void RadixScatterListVector(Vector &v, UnifiedVectorFormat &vdata, const Selecti
36004
36004
  auto list_data = ListVector::GetData(v);
36005
36005
  auto &child_vector = ListVector::GetEntry(v);
36006
36006
  auto list_size = ListVector::GetListSize(v);
36007
+ child_vector.Flatten(list_size);
36007
36008
 
36008
36009
  // serialize null values
36009
36010
  if (has_null) {
@@ -55411,8 +55412,8 @@ static idx_t DistinctSelectList(Vector &left, Vector &right, idx_t count, const
55411
55412
  SelectionVector lcursor(count);
55412
55413
  SelectionVector rcursor(count);
55413
55414
 
55414
- ListVector::GetEntry(left).Flatten(count);
55415
- ListVector::GetEntry(right).Flatten(count);
55415
+ ListVector::GetEntry(left).Flatten(ListVector::GetListSize(left));
55416
+ ListVector::GetEntry(right).Flatten(ListVector::GetListSize(right));
55416
55417
  Vector lchild(ListVector::GetEntry(left), lcursor, count);
55417
55418
  Vector rchild(ListVector::GetEntry(right), rcursor, count);
55418
55419
 
@@ -107782,8 +107783,8 @@ static void TemplatedContainsOrPosition(DataChunk &args, ExpressionState &state,
107782
107783
  value_vector.ToUnifiedFormat(count, value_data);
107783
107784
 
107784
107785
  // not required for a comparison of nested types
107785
- auto child_value = FlatVector::GetData<CHILD_TYPE>(child_vector);
107786
- auto values = FlatVector::GetData<CHILD_TYPE>(value_vector);
107786
+ auto child_value = (CHILD_TYPE *)child_data.data;
107787
+ auto values = (CHILD_TYPE *)value_data.data;
107787
107788
 
107788
107789
  for (idx_t i = 0; i < count; i++) {
107789
107790
  auto list_index = list_data.sel->get_index(i);
@@ -108802,8 +108803,8 @@ namespace duckdb {
108802
108803
  template <class T, bool HEAP_REF = false, bool VALIDITY_ONLY = false>
108803
108804
  void ListExtractTemplate(idx_t count, UnifiedVectorFormat &list_data, UnifiedVectorFormat &offsets_data,
108804
108805
  Vector &child_vector, idx_t list_size, Vector &result) {
108805
- UnifiedVectorFormat child_data;
108806
- child_vector.ToUnifiedFormat(list_size, child_data);
108806
+ UnifiedVectorFormat child_format;
108807
+ child_vector.ToUnifiedFormat(list_size, child_format);
108807
108808
 
108808
108809
  T *result_data;
108809
108810
 
@@ -108820,40 +108821,46 @@ void ListExtractTemplate(idx_t count, UnifiedVectorFormat &list_data, UnifiedVec
108820
108821
 
108821
108822
  // this is lifted from ExecuteGenericLoop because we can't push the list child data into this otherwise
108822
108823
  // should have gone with GetValue perhaps
108824
+ auto child_data = (T *)child_format.data;
108823
108825
  for (idx_t i = 0; i < count; i++) {
108824
108826
  auto list_index = list_data.sel->get_index(i);
108825
108827
  auto offsets_index = offsets_data.sel->get_index(i);
108826
- if (list_data.validity.RowIsValid(list_index) && offsets_data.validity.RowIsValid(offsets_index)) {
108827
- auto list_entry = ((list_entry_t *)list_data.data)[list_index];
108828
- auto offsets_entry = ((int64_t *)offsets_data.data)[offsets_index];
108828
+ if (!list_data.validity.RowIsValid(list_index)) {
108829
+ result_mask.SetInvalid(i);
108830
+ continue;
108831
+ }
108832
+ if (!offsets_data.validity.RowIsValid(offsets_index)) {
108833
+ result_mask.SetInvalid(i);
108834
+ continue;
108835
+ }
108836
+ auto list_entry = ((list_entry_t *)list_data.data)[list_index];
108837
+ auto offsets_entry = ((int64_t *)offsets_data.data)[offsets_index];
108829
108838
 
108830
- // 1-based indexing
108831
- if (offsets_entry == 0) {
108839
+ // 1-based indexing
108840
+ if (offsets_entry == 0) {
108841
+ result_mask.SetInvalid(i);
108842
+ continue;
108843
+ }
108844
+ offsets_entry = (offsets_entry > 0) ? offsets_entry - 1 : offsets_entry;
108845
+
108846
+ idx_t child_offset;
108847
+ if (offsets_entry < 0) {
108848
+ if ((idx_t)-offsets_entry > list_entry.length) {
108832
108849
  result_mask.SetInvalid(i);
108833
108850
  continue;
108834
108851
  }
108835
- offsets_entry = (offsets_entry > 0) ? offsets_entry - 1 : offsets_entry;
108836
-
108837
- idx_t child_offset;
108838
- if (offsets_entry < 0) {
108839
- if ((idx_t)-offsets_entry > list_entry.length) {
108840
- result_mask.SetInvalid(i);
108841
- continue;
108842
- }
108843
- child_offset = list_entry.offset + list_entry.length + offsets_entry;
108844
- } else {
108845
- if ((idx_t)offsets_entry >= list_entry.length) {
108846
- result_mask.SetInvalid(i);
108847
- continue;
108848
- }
108849
- child_offset = list_entry.offset + offsets_entry;
108850
- }
108851
- if (child_data.validity.RowIsValid(child_offset)) {
108852
- if (!VALIDITY_ONLY) {
108853
- result_data[i] = ((T *)child_data.data)[child_offset];
108854
- }
108855
- } else {
108852
+ child_offset = list_entry.offset + list_entry.length + offsets_entry;
108853
+ } else {
108854
+ if ((idx_t)offsets_entry >= list_entry.length) {
108856
108855
  result_mask.SetInvalid(i);
108856
+ continue;
108857
+ }
108858
+ child_offset = list_entry.offset + offsets_entry;
108859
+ }
108860
+ auto child_index = child_format.sel->get_index(child_offset);
108861
+ if (child_format.validity.RowIsValid(child_index)) {
108862
+ if (!VALIDITY_ONLY) {
108863
+ result_data[i] = child_data[child_index];
108857
108864
  }
108858
108865
  } else {
108859
108866
  result_mask.SetInvalid(i);
@@ -109200,6 +109207,7 @@ static void ListLambdaFunction(DataChunk &args, ExpressionState &state, Vector &
109200
109207
  // get the child vector and child data
109201
109208
  auto lists_size = ListVector::GetListSize(lists);
109202
109209
  auto &child_vector = ListVector::GetEntry(lists);
109210
+ child_vector.Flatten(lists_size);
109203
109211
  UnifiedVectorFormat child_data;
109204
109212
  child_vector.ToUnifiedFormat(lists_size, child_data);
109205
109213
 
@@ -109284,10 +109292,8 @@ static void ListLambdaFunction(DataChunk &args, ExpressionState &state, Vector &
109284
109292
 
109285
109293
  // iterate list elements and create transformed expression columns
109286
109294
  for (idx_t child_idx = 0; child_idx < list_entry.length; child_idx++) {
109287
-
109288
109295
  // reached STANDARD_VECTOR_SIZE elements
109289
109296
  if (elem_cnt == STANDARD_VECTOR_SIZE) {
109290
-
109291
109297
  lambda_chunk.Reset();
109292
109298
  ExecuteExpression(types, result_types, elem_cnt, sel, sel_vectors, input_chunk, lambda_chunk,
109293
109299
  child_vector, args, expr_executor);
package/src/duckdb.hpp CHANGED
@@ -11,8 +11,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
11
11
  #pragma once
12
12
  #define DUCKDB_AMALGAMATION 1
13
13
  #define DUCKDB_AMALGAMATION_EXTENDED 1
14
- #define DUCKDB_SOURCE_ID "6aa8bb2cff"
15
- #define DUCKDB_VERSION "v0.5.2-dev1345"
14
+ #define DUCKDB_SOURCE_ID "80ef5caa5b"
15
+ #define DUCKDB_VERSION "v0.5.2-dev1347"
16
16
  //===----------------------------------------------------------------------===//
17
17
  // DuckDB
18
18
  //