Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 40 additions & 40 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -350,44 +350,44 @@ set(DUCKDB_SRC_FILES
src/duckdb/extension/core_functions/lambda_functions.cpp
src/duckdb/extension/core_functions/function_list.cpp
src/duckdb/extension/core_functions/core_functions_extension.cpp
src/duckdb/ub_extension_core_functions_aggregate_holistic.cpp
src/duckdb/ub_extension_core_functions_aggregate_algebraic.cpp
src/duckdb/ub_extension_core_functions_aggregate_distributive.cpp
src/duckdb/ub_extension_core_functions_aggregate_regression.cpp
src/duckdb/ub_extension_core_functions_aggregate_nested.cpp
src/duckdb/ub_extension_core_functions_scalar_math.cpp
src/duckdb/ub_extension_core_functions_scalar_date.cpp
src/duckdb/ub_extension_core_functions_scalar_list.cpp
src/duckdb/ub_extension_core_functions_scalar_generic.cpp
src/duckdb/ub_extension_core_functions_scalar_blob.cpp
src/duckdb/ub_extension_core_functions_scalar_random.cpp
src/duckdb/ub_extension_core_functions_aggregate_regression.cpp
src/duckdb/ub_extension_core_functions_aggregate_algebraic.cpp
src/duckdb/ub_extension_core_functions_aggregate_holistic.cpp
src/duckdb/ub_extension_core_functions_scalar_string.cpp
src/duckdb/ub_extension_core_functions_scalar_array.cpp
src/duckdb/ub_extension_core_functions_scalar_map.cpp
src/duckdb/ub_extension_core_functions_scalar_union.cpp
src/duckdb/ub_extension_core_functions_scalar_bit.cpp
src/duckdb/ub_extension_core_functions_scalar_operators.cpp
src/duckdb/ub_extension_core_functions_scalar_enum.cpp
src/duckdb/ub_extension_core_functions_scalar_bit.cpp
src/duckdb/ub_extension_core_functions_scalar_debug.cpp
src/duckdb/ub_extension_core_functions_scalar_map.cpp
src/duckdb/ub_extension_core_functions_scalar_random.cpp
src/duckdb/ub_extension_core_functions_scalar_math.cpp
src/duckdb/ub_extension_core_functions_scalar_union.cpp
src/duckdb/ub_extension_core_functions_scalar_generic.cpp
src/duckdb/ub_extension_core_functions_scalar_struct.cpp
src/duckdb/extension/parquet/parquet_metadata.cpp
src/duckdb/extension/parquet/serialize_parquet.cpp
src/duckdb/extension/parquet/parquet_file_metadata_cache.cpp
src/duckdb/extension/parquet/column_writer.cpp
src/duckdb/extension/parquet/parquet_timestamp.cpp
src/duckdb/ub_extension_core_functions_scalar_list.cpp
src/duckdb/ub_extension_core_functions_scalar_array.cpp
src/duckdb/ub_extension_core_functions_scalar_debug.cpp
src/duckdb/ub_extension_core_functions_scalar_blob.cpp
src/duckdb/ub_extension_core_functions_scalar_date.cpp
src/duckdb/extension/parquet/parquet_writer.cpp
src/duckdb/extension/parquet/zstd_file_system.cpp
src/duckdb/extension/parquet/parquet_crypto.cpp
src/duckdb/extension/parquet/parquet_reader.cpp
src/duckdb/extension/parquet/parquet_timestamp.cpp
src/duckdb/extension/parquet/parquet_float16.cpp
src/duckdb/extension/parquet/parquet_statistics.cpp
src/duckdb/extension/parquet/zstd_file_system.cpp
src/duckdb/extension/parquet/parquet_writer.cpp
src/duckdb/extension/parquet/parquet_multi_file_info.cpp
src/duckdb/extension/parquet/column_reader.cpp
src/duckdb/extension/parquet/geo_parquet.cpp
src/duckdb/extension/parquet/parquet_extension.cpp
src/duckdb/extension/parquet/column_reader.cpp
src/duckdb/extension/parquet/parquet_multi_file_info.cpp
src/duckdb/extension/parquet/parquet_float16.cpp
src/duckdb/extension/parquet/parquet_reader.cpp
src/duckdb/extension/parquet/column_writer.cpp
src/duckdb/extension/parquet/parquet_file_metadata_cache.cpp
src/duckdb/extension/parquet/serialize_parquet.cpp
src/duckdb/extension/parquet/parquet_metadata.cpp
src/duckdb/ub_extension_parquet_decoder.cpp
src/duckdb/ub_extension_parquet_reader.cpp
src/duckdb/ub_extension_parquet_reader_variant.cpp
src/duckdb/ub_extension_parquet_decoder.cpp
src/duckdb/ub_extension_parquet_writer.cpp
src/duckdb/third_party/parquet/parquet_types.cpp
src/duckdb/third_party/thrift/thrift/protocol/TProtocol.cpp
Expand Down Expand Up @@ -427,32 +427,32 @@ set(DUCKDB_SRC_FILES
src/duckdb/third_party/brotli/enc/metablock.cpp
src/duckdb/third_party/brotli/enc/static_dict.cpp
src/duckdb/third_party/brotli/enc/utf8_util.cpp
src/duckdb/extension/icu/./icu-datesub.cpp
src/duckdb/extension/icu/./icu-datefunc.cpp
src/duckdb/extension/icu/./icu_extension.cpp
src/duckdb/extension/icu/./icu-strptime.cpp
src/duckdb/extension/icu/./icu-makedate.cpp
src/duckdb/extension/icu/./icu-datepart.cpp
src/duckdb/extension/icu/./icu-table-range.cpp
src/duckdb/extension/icu/./icu-timezone.cpp
src/duckdb/extension/icu/./icu-list-range.cpp
src/duckdb/extension/icu/./icu-datetrunc.cpp
src/duckdb/extension/icu/./icu-makedate.cpp
src/duckdb/extension/icu/./icu-datefunc.cpp
src/duckdb/extension/icu/./icu-current.cpp
src/duckdb/extension/icu/./icu-timezone.cpp
src/duckdb/extension/icu/./icu-table-range.cpp
src/duckdb/extension/icu/./icu-dateadd.cpp
src/duckdb/extension/icu/./icu_extension.cpp
src/duckdb/extension/icu/./icu-timebucket.cpp
src/duckdb/extension/icu/./icu-datesub.cpp
src/duckdb/extension/icu/./icu-datetrunc.cpp
src/duckdb/extension/icu/./icu-list-range.cpp
src/duckdb/ub_extension_icu_third_party_icu_common.cpp
src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp
src/duckdb/extension/icu/third_party/icu/stubdata/stubdata.cpp
src/duckdb/extension/json/json_multi_file_info.cpp
src/duckdb/extension/json/json_enums.cpp
src/duckdb/extension/json/serialize_json.cpp
src/duckdb/extension/json/json_reader.cpp
src/duckdb/extension/json/json_functions.cpp
src/duckdb/extension/json/json_extension.cpp
src/duckdb/extension/json/json_scan.cpp
src/duckdb/extension/json/json_functions.cpp
src/duckdb/extension/json/json_serializer.cpp
src/duckdb/extension/json/json_deserializer.cpp
src/duckdb/extension/json/json_multi_file_info.cpp
src/duckdb/extension/json/json_enums.cpp
src/duckdb/extension/json/serialize_json.cpp
src/duckdb/extension/json/json_common.cpp
src/duckdb/extension/json/json_deserializer.cpp
src/duckdb/extension/json/json_serializer.cpp
src/duckdb/ub_extension_json_json_functions.cpp)

set(JEMALLOC_SRC_FILES
Expand Down
6 changes: 3 additions & 3 deletions src/duckdb/src/function/table/version/pragma_version.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#ifndef DUCKDB_PATCH_VERSION
#define DUCKDB_PATCH_VERSION "2-dev114"
#define DUCKDB_PATCH_VERSION "2-dev121"
#endif
#ifndef DUCKDB_MINOR_VERSION
#define DUCKDB_MINOR_VERSION 4
Expand All @@ -8,10 +8,10 @@
#define DUCKDB_MAJOR_VERSION 1
#endif
#ifndef DUCKDB_VERSION
#define DUCKDB_VERSION "v1.4.2-dev114"
#define DUCKDB_VERSION "v1.4.2-dev121"
#endif
#ifndef DUCKDB_SOURCE_ID
#define DUCKDB_SOURCE_ID "ff0e9d39e0"
#define DUCKDB_SOURCE_ID "9069f5363c"
#endif
#include "duckdb/function/table/system_functions.hpp"
#include "duckdb/main/database.hpp"
Expand Down
24 changes: 10 additions & 14 deletions src/duckdb/src/include/duckdb/optimizer/filter_pullup.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ class FilterPullup {
// only pull up filters when there is a fork
bool can_pullup = false;

// identifiy case the branch is a set operation (INTERSECT or EXCEPT)
// identify case the branch is a set operation (INTERSECT or EXCEPT)
bool can_add_column = false;

private:
Expand All @@ -40,30 +40,26 @@ class FilterPullup {

//! Pull up a LogicalFilter op
unique_ptr<LogicalOperator> PullupFilter(unique_ptr<LogicalOperator> op);

//! Pull up filter in a LogicalProjection op
unique_ptr<LogicalOperator> PullupProjection(unique_ptr<LogicalOperator> op);

//! Pull up filter in a LogicalCrossProduct op
unique_ptr<LogicalOperator> PullupCrossProduct(unique_ptr<LogicalOperator> op);

//! Pullup a filter in a LogicalJoin
unique_ptr<LogicalOperator> PullupJoin(unique_ptr<LogicalOperator> op);

// PPullup filter in a left join
//! Pullup filter in a left join
unique_ptr<LogicalOperator> PullupFromLeft(unique_ptr<LogicalOperator> op);

// Pullup filter in a inner join
//! Pullup filter in an inner join
unique_ptr<LogicalOperator> PullupInnerJoin(unique_ptr<LogicalOperator> op);

// Pullup filter in LogicalIntersect or LogicalExcept op
//! Pullup filter through a distinct
unique_ptr<LogicalOperator> PullupDistinct(unique_ptr<LogicalOperator> op);
//! Pullup filter in LogicalIntersect or LogicalExcept op
unique_ptr<LogicalOperator> PullupSetOperation(unique_ptr<LogicalOperator> op);

//! Pullup filter in both sides of a join
unique_ptr<LogicalOperator> PullupBothSide(unique_ptr<LogicalOperator> op);

// Finish pull up at this operator
//! Finish pull up at this operator
unique_ptr<LogicalOperator> FinishPullup(unique_ptr<LogicalOperator> op);

// special treatment for SetOperations and projections
//! special treatment for SetOperations and projections
void ProjectSetOperation(LogicalProjection &proj);

}; // end FilterPullup
Expand Down
14 changes: 14 additions & 0 deletions src/duckdb/src/optimizer/filter_pullup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include "duckdb/planner/operator/logical_comparison_join.hpp"
#include "duckdb/planner/operator/logical_cross_product.hpp"
#include "duckdb/planner/operator/logical_join.hpp"
#include "duckdb/planner/operator/logical_distinct.hpp"

namespace duckdb {

Expand All @@ -26,6 +27,7 @@ unique_ptr<LogicalOperator> FilterPullup::Rewrite(unique_ptr<LogicalOperator> op
case LogicalOperatorType::LOGICAL_EXCEPT:
return PullupSetOperation(std::move(op));
case LogicalOperatorType::LOGICAL_DISTINCT:
return PullupDistinct(std::move(op));
case LogicalOperatorType::LOGICAL_ORDER_BY: {
// we can just pull directly through these operations without any rewriting
op->children[0] = Rewrite(std::move(op->children[0]));
Expand Down Expand Up @@ -115,6 +117,18 @@ unique_ptr<LogicalOperator> FilterPullup::PullupCrossProduct(unique_ptr<LogicalO
return PullupBothSide(std::move(op));
}

unique_ptr<LogicalOperator> FilterPullup::PullupDistinct(unique_ptr<LogicalOperator> op) {
const auto &distinct = op->Cast<LogicalDistinct>();
if (distinct.distinct_type == DistinctType::DISTINCT) {
// Can pull up through a DISTINCT
op->children[0] = Rewrite(std::move(op->children[0]));
return op;
}
// Cannot pull up through a DISTINCT ON (see #19327)
D_ASSERT(distinct.distinct_type == DistinctType::DISTINCT_ON);
return FinishPullup(std::move(op));
}

unique_ptr<LogicalOperator> FilterPullup::GeneratePullupFilter(unique_ptr<LogicalOperator> child,
vector<unique_ptr<Expression>> &expressions) {
unique_ptr<LogicalFilter> filter = make_uniq<LogicalFilter>();
Expand Down
3 changes: 1 addition & 2 deletions src/duckdb/src/planner/expression_binder/having_binder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
#include "duckdb/parser/expression/columnref_expression.hpp"
#include "duckdb/parser/expression/window_expression.hpp"
#include "duckdb/planner/binder.hpp"
#include "duckdb/planner/expression_binder/aggregate_binder.hpp"
#include "duckdb/common/string_util.hpp"
#include "duckdb/planner/query_node/bound_select_node.hpp"

Expand Down Expand Up @@ -91,7 +90,7 @@ BindResult HavingBinder::BindColumnRef(unique_ptr<ParsedExpression> &expr_ptr, i
}

BindResult HavingBinder::BindWindow(WindowExpression &expr, idx_t depth) {
return BindResult(BinderException::Unsupported(expr, "HAVING clause cannot contain window functions!"));
throw BinderException::Unsupported(expr, "HAVING clause cannot contain window functions!");
}

} // namespace duckdb
Loading