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 +1 -1
- package/src/duckdb.cpp +40 -34
- package/src/duckdb.hpp +2 -2
- package/src/parquet-amalgamation.cpp +37715 -37715
package/package.json
CHANGED
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(
|
|
55415
|
-
ListVector::GetEntry(right).Flatten(
|
|
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 =
|
|
107786
|
-
auto values =
|
|
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
|
|
108806
|
-
child_vector.ToUnifiedFormat(list_size,
|
|
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)
|
|
108827
|
-
|
|
108828
|
-
|
|
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
|
-
|
|
108831
|
-
|
|
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
|
-
|
|
108836
|
-
|
|
108837
|
-
idx_t
|
|
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 "
|
|
15
|
-
#define DUCKDB_VERSION "v0.5.2-
|
|
14
|
+
#define DUCKDB_SOURCE_ID "80ef5caa5b"
|
|
15
|
+
#define DUCKDB_VERSION "v0.5.2-dev1347"
|
|
16
16
|
//===----------------------------------------------------------------------===//
|
|
17
17
|
// DuckDB
|
|
18
18
|
//
|