duckdb 0.5.1-dev13.0 → 0.5.1-dev25.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 +52 -15
- package/src/duckdb.hpp +2 -2
- package/src/parquet-amalgamation.cpp +31432 -31432
package/package.json
CHANGED
package/src/duckdb.cpp
CHANGED
|
@@ -151925,6 +151925,7 @@ unique_ptr<NodeStatistics> StatisticsPropagator::PropagateStatistics(LogicalGet
|
|
|
151925
151925
|
|
|
151926
151926
|
|
|
151927
151927
|
|
|
151928
|
+
|
|
151928
151929
|
namespace duckdb {
|
|
151929
151930
|
|
|
151930
151931
|
void StatisticsPropagator::PropagateStatistics(LogicalComparisonJoin &join, unique_ptr<LogicalOperator> *node_ptr) {
|
|
@@ -151954,10 +151955,15 @@ void StatisticsPropagator::PropagateStatistics(LogicalComparisonJoin &join, uniq
|
|
|
151954
151955
|
// semi or inner join on false; entire node can be pruned
|
|
151955
151956
|
ReplaceWithEmptyResult(*node_ptr);
|
|
151956
151957
|
return;
|
|
151957
|
-
case JoinType::ANTI:
|
|
151958
|
-
//
|
|
151959
|
-
|
|
151958
|
+
case JoinType::ANTI: {
|
|
151959
|
+
// when the right child has data, return the left child
|
|
151960
|
+
// when the right child has no data, return an empty set
|
|
151961
|
+
auto limit = make_unique<LogicalLimit>(1, 0, nullptr, nullptr);
|
|
151962
|
+
limit->AddChild(move(join.children[1]));
|
|
151963
|
+
auto cross_product = LogicalCrossProduct::Create(move(join.children[0]), move(limit));
|
|
151964
|
+
*node_ptr = move(cross_product);
|
|
151960
151965
|
return;
|
|
151966
|
+
}
|
|
151961
151967
|
case JoinType::LEFT:
|
|
151962
151968
|
// anti/left outer join: replace right side with empty node
|
|
151963
151969
|
ReplaceWithEmptyResult(join.children[1]);
|
|
@@ -151985,10 +151991,15 @@ void StatisticsPropagator::PropagateStatistics(LogicalComparisonJoin &join, uniq
|
|
|
151985
151991
|
} else {
|
|
151986
151992
|
// this is the only condition and it is always true: all conditions are true
|
|
151987
151993
|
switch (join.join_type) {
|
|
151988
|
-
case JoinType::SEMI:
|
|
151989
|
-
//
|
|
151990
|
-
|
|
151994
|
+
case JoinType::SEMI: {
|
|
151995
|
+
// when the right child has data, return the left child
|
|
151996
|
+
// when the right child has no data, return an empty set
|
|
151997
|
+
auto limit = make_unique<LogicalLimit>(1, 0, nullptr, nullptr);
|
|
151998
|
+
limit->AddChild(move(join.children[1]));
|
|
151999
|
+
auto cross_product = LogicalCrossProduct::Create(move(join.children[0]), move(limit));
|
|
152000
|
+
*node_ptr = move(cross_product);
|
|
151991
152001
|
return;
|
|
152002
|
+
}
|
|
151992
152003
|
case JoinType::INNER:
|
|
151993
152004
|
case JoinType::LEFT:
|
|
151994
152005
|
case JoinType::RIGHT:
|
|
@@ -152105,6 +152116,7 @@ unique_ptr<NodeStatistics> StatisticsPropagator::PropagateStatistics(LogicalJoin
|
|
|
152105
152116
|
// then propagate into the join conditions
|
|
152106
152117
|
switch (join.type) {
|
|
152107
152118
|
case LogicalOperatorType::LOGICAL_COMPARISON_JOIN:
|
|
152119
|
+
case LogicalOperatorType::LOGICAL_DELIM_JOIN:
|
|
152108
152120
|
PropagateStatistics((LogicalComparisonJoin &)join, node_ptr);
|
|
152109
152121
|
break;
|
|
152110
152122
|
case LogicalOperatorType::LOGICAL_ANY_JOIN:
|
|
@@ -181189,7 +181201,20 @@ BoundStatement Binder::Bind(VacuumStatement &stmt) {
|
|
|
181189
181201
|
auto &get = (LogicalGet &)*ref->get;
|
|
181190
181202
|
columns.insert(columns.end(), get.names.begin(), get.names.end());
|
|
181191
181203
|
}
|
|
181204
|
+
|
|
181205
|
+
case_insensitive_set_t column_name_set;
|
|
181206
|
+
vector<string> non_generated_column_names;
|
|
181192
181207
|
for (auto &col_name : columns) {
|
|
181208
|
+
if (column_name_set.count(col_name) > 0) {
|
|
181209
|
+
throw BinderException("Vacuum the same column twice(same name in column name list)");
|
|
181210
|
+
}
|
|
181211
|
+
column_name_set.insert(col_name);
|
|
181212
|
+
auto &col = ref->table->GetColumn(col_name);
|
|
181213
|
+
// ignore generated column
|
|
181214
|
+
if (col.Generated()) {
|
|
181215
|
+
continue;
|
|
181216
|
+
}
|
|
181217
|
+
non_generated_column_names.push_back(col_name);
|
|
181193
181218
|
ColumnRefExpression colref(col_name, ref->table->name);
|
|
181194
181219
|
auto result = bind_context.BindColumn(colref, 0);
|
|
181195
181220
|
if (result.HasError()) {
|
|
@@ -181197,17 +181222,29 @@ BoundStatement Binder::Bind(VacuumStatement &stmt) {
|
|
|
181197
181222
|
}
|
|
181198
181223
|
select_list.push_back(move(result.expression));
|
|
181199
181224
|
}
|
|
181200
|
-
|
|
181201
|
-
|
|
181202
|
-
|
|
181203
|
-
|
|
181204
|
-
stmt.info->column_id_map[i] = get.column_ids[i];
|
|
181205
|
-
}
|
|
181225
|
+
stmt.info->columns = move(non_generated_column_names);
|
|
181226
|
+
if (!select_list.empty()) {
|
|
181227
|
+
auto table_scan = CreatePlan(*ref);
|
|
181228
|
+
D_ASSERT(table_scan->type == LogicalOperatorType::LOGICAL_GET);
|
|
181206
181229
|
|
|
181207
|
-
|
|
181208
|
-
projection->children.push_back(move(table_scan));
|
|
181230
|
+
auto &get = (LogicalGet &)*table_scan;
|
|
181209
181231
|
|
|
181210
|
-
|
|
181232
|
+
D_ASSERT(select_list.size() == get.column_ids.size());
|
|
181233
|
+
D_ASSERT(stmt.info->columns.size() == get.column_ids.size());
|
|
181234
|
+
for (idx_t i = 0; i < get.column_ids.size(); i++) {
|
|
181235
|
+
stmt.info->column_id_map[i] = ref->table->columns[get.column_ids[i]].StorageOid();
|
|
181236
|
+
}
|
|
181237
|
+
|
|
181238
|
+
auto projection = make_unique<LogicalProjection>(GenerateTableIndex(), move(select_list));
|
|
181239
|
+
projection->children.push_back(move(table_scan));
|
|
181240
|
+
|
|
181241
|
+
root = move(projection);
|
|
181242
|
+
} else {
|
|
181243
|
+
// eg. CREATE TABLE test (x AS (1));
|
|
181244
|
+
// ANALYZE test;
|
|
181245
|
+
// Make it not a SINK so it doesn't have to do anything
|
|
181246
|
+
stmt.info->has_table = false;
|
|
181247
|
+
}
|
|
181211
181248
|
}
|
|
181212
181249
|
auto vacuum = make_unique<LogicalSimple>(LogicalOperatorType::LOGICAL_VACUUM, move(stmt.info));
|
|
181213
181250
|
if (root) {
|
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.1-
|
|
14
|
+
#define DUCKDB_SOURCE_ID "7ebad2075"
|
|
15
|
+
#define DUCKDB_VERSION "v0.5.1-dev25"
|
|
16
16
|
//===----------------------------------------------------------------------===//
|
|
17
17
|
// DuckDB
|
|
18
18
|
//
|