duckdb 0.7.2-dev2320.0 → 0.7.2-dev2410.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/data_chunk.cpp +1 -1
- package/src/duckdb/extension/icu/icu-extension.cpp +2 -2
- package/src/duckdb/extension/icu/icu-makedate.cpp +52 -0
- package/src/duckdb/extension/icu/icu-strptime.cpp +1 -1
- package/src/duckdb/extension/icu/third_party/icu/i18n/calendar.cpp +4 -0
- package/src/duckdb/extension/icu/third_party/icu/i18n/dangical.cpp +28 -28
- package/src/duckdb/extension/icu/third_party/icu/i18n/dangical.h +4 -4
- package/src/duckdb/extension/json/include/json_common.hpp +1 -1
- package/src/duckdb/extension/json/json_functions/json_create.cpp +1 -1
- package/src/duckdb/extension/json/json_functions/json_transform.cpp +1 -1
- package/src/duckdb/extension/json/json_functions.cpp +2 -2
- package/src/duckdb/extension/json/json_serializer.cpp +1 -1
- package/src/duckdb/extension/parquet/column_reader.cpp +1 -1
- package/src/duckdb/extension/parquet/column_writer.cpp +3 -3
- package/src/duckdb/src/catalog/catalog_entry/scalar_macro_catalog_entry.cpp +2 -2
- package/src/duckdb/src/common/arrow/arrow_appender.cpp +2 -2
- package/src/duckdb/src/common/enums/physical_operator_type.cpp +2 -0
- package/src/duckdb/src/common/file_buffer.cpp +8 -0
- package/src/duckdb/src/common/operator/cast_operators.cpp +24 -25
- package/src/duckdb/src/common/radix_partitioning.cpp +34 -0
- package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +2 -2
- package/src/duckdb/src/common/row_operations/row_scatter.cpp +1 -1
- package/src/duckdb/src/common/sort/partition_state.cpp +44 -124
- package/src/duckdb/src/common/sort/sorted_block.cpp +1 -1
- package/src/duckdb/src/common/types/bit.cpp +18 -18
- package/src/duckdb/src/common/types/blob.cpp +7 -7
- package/src/duckdb/src/common/types/column/column_data_allocator.cpp +1 -1
- package/src/duckdb/src/common/types/column/column_data_collection.cpp +1 -1
- package/src/duckdb/src/common/types/hash.cpp +1 -1
- package/src/duckdb/src/common/types/hyperloglog.cpp +1 -1
- package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +2 -2
- package/src/duckdb/src/common/types/string_heap.cpp +2 -2
- package/src/duckdb/src/common/types/string_type.cpp +2 -2
- package/src/duckdb/src/common/types/timestamp.cpp +1 -1
- package/src/duckdb/src/common/types/vector.cpp +7 -7
- package/src/duckdb/src/execution/index/art/art_key.cpp +2 -2
- package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +144 -31
- package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +698 -0
- package/src/duckdb/src/execution/operator/persistent/base_csv_reader.cpp +1 -1
- package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +1 -1
- package/src/duckdb/src/execution/physical_plan/plan_asof_join.cpp +7 -1
- package/src/duckdb/src/function/aggregate/distributive/arg_min_max.cpp +2 -2
- package/src/duckdb/src/function/aggregate/distributive/bitagg.cpp +2 -2
- package/src/duckdb/src/function/aggregate/distributive/bitstring_agg.cpp +2 -2
- package/src/duckdb/src/function/aggregate/distributive/first.cpp +2 -2
- package/src/duckdb/src/function/aggregate/distributive/kurtosis.cpp +3 -2
- package/src/duckdb/src/function/aggregate/distributive/minmax.cpp +2 -2
- package/src/duckdb/src/function/aggregate/distributive/skew.cpp +5 -1
- package/src/duckdb/src/function/aggregate/distributive/string_agg.cpp +1 -1
- package/src/duckdb/src/function/cast/list_casts.cpp +1 -1
- package/src/duckdb/src/function/cast/struct_cast.cpp +1 -1
- package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +3 -3
- package/src/duckdb/src/function/scalar/bit/bitstring.cpp +1 -1
- package/src/duckdb/src/function/scalar/blob/encode.cpp +1 -1
- package/src/duckdb/src/function/scalar/date/strftime.cpp +3 -3
- package/src/duckdb/src/function/scalar/generic/current_setting.cpp +1 -1
- package/src/duckdb/src/function/scalar/list/list_sort.cpp +30 -56
- package/src/duckdb/src/function/scalar/string/ascii.cpp +1 -1
- package/src/duckdb/src/function/scalar/string/caseconvert.cpp +2 -2
- package/src/duckdb/src/function/scalar/string/concat.cpp +6 -6
- package/src/duckdb/src/function/scalar/string/contains.cpp +2 -2
- package/src/duckdb/src/function/scalar/string/damerau_levenshtein.cpp +2 -2
- package/src/duckdb/src/function/scalar/string/hex.cpp +4 -4
- package/src/duckdb/src/function/scalar/string/instr.cpp +1 -1
- package/src/duckdb/src/function/scalar/string/jaccard.cpp +1 -1
- package/src/duckdb/src/function/scalar/string/jaro_winkler.cpp +5 -5
- package/src/duckdb/src/function/scalar/string/length.cpp +1 -1
- package/src/duckdb/src/function/scalar/string/levenshtein.cpp +2 -2
- package/src/duckdb/src/function/scalar/string/like.cpp +10 -11
- package/src/duckdb/src/function/scalar/string/mismatches.cpp +2 -2
- package/src/duckdb/src/function/scalar/string/nfc_normalize.cpp +1 -1
- package/src/duckdb/src/function/scalar/string/pad.cpp +3 -3
- package/src/duckdb/src/function/scalar/string/prefix.cpp +2 -2
- package/src/duckdb/src/function/scalar/string/printf.cpp +1 -1
- package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +4 -4
- package/src/duckdb/src/function/scalar/string/repeat.cpp +1 -1
- package/src/duckdb/src/function/scalar/string/replace.cpp +3 -3
- package/src/duckdb/src/function/scalar/string/reverse.cpp +1 -1
- package/src/duckdb/src/function/scalar/string/starts_with.cpp +2 -2
- package/src/duckdb/src/function/scalar/string/string_split.cpp +3 -3
- package/src/duckdb/src/function/scalar/string/strip_accents.cpp +2 -2
- package/src/duckdb/src/function/scalar/string/substring.cpp +3 -3
- package/src/duckdb/src/function/scalar/string/suffix.cpp +2 -2
- package/src/duckdb/src/function/scalar/string/translate.cpp +3 -3
- package/src/duckdb/src/function/scalar/string/trim.cpp +3 -3
- package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +1 -1
- package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +5 -7
- package/src/duckdb/src/function/scalar/union/union_extract.cpp +1 -1
- package/src/duckdb/src/function/table/copy_csv.cpp +1 -1
- package/src/duckdb/src/function/table/system/duckdb_functions.cpp +2 -2
- package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
- package/src/duckdb/src/include/duckdb/common/crypto/md5.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/enums/debug_initialize.hpp +17 -0
- package/src/duckdb/src/include/duckdb/common/enums/order_type.hpp +8 -0
- package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/file_buffer.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/radix.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/radix_partitioning.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/sort/partition_state.hpp +11 -60
- package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +8 -6
- package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/join/outer_join_marker.hpp +6 -1
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_asof_join.hpp +93 -0
- package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/macro_function.hpp +17 -0
- package/src/duckdb/src/include/duckdb/function/scalar/regexp.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/scalar_macro_function.hpp +3 -0
- package/src/duckdb/src/include/duckdb/function/table_macro_function.hpp +3 -0
- package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/client_config.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/config.hpp +7 -2
- package/src/duckdb/src/include/duckdb/main/settings.hpp +13 -3
- package/src/duckdb/src/include/duckdb/optimizer/cse_optimizer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +4 -2
- package/src/duckdb/src/include/duckdb/parser/transformer.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/binder.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression_binder/aggregate_binder.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression_binder/alter_binder.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression_binder/base_select_binder.hpp +4 -3
- package/src/duckdb/src/include/duckdb/planner/expression_binder/check_binder.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression_binder/constant_binder.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression_binder/group_binder.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression_binder/having_binder.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/expression_binder/index_binder.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression_binder/insert_binder.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression_binder/lateral_binder.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/expression_binder/qualify_binder.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/expression_binder/relation_binder.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression_binder/returning_binder.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression_binder/table_function_binder.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression_binder/update_binder.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression_binder/where_binder.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +12 -9
- package/src/duckdb/src/include/duckdb/storage/block_manager.hpp +1 -0
- package/src/duckdb/src/include/duckdb/storage/in_memory_block_manager.hpp +3 -0
- package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/single_file_block_manager.hpp +11 -5
- package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +1 -1
- package/src/duckdb/src/main/capi/cast/from_decimal-c.cpp +1 -1
- package/src/duckdb/src/main/capi/result-c.cpp +2 -2
- package/src/duckdb/src/main/config.cpp +26 -0
- package/src/duckdb/src/main/settings/settings.cpp +31 -8
- package/src/duckdb/src/optimizer/cse_optimizer.cpp +9 -8
- package/src/duckdb/src/parser/expression/subquery_expression.cpp +1 -1
- package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +2 -0
- package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +33 -29
- package/src/duckdb/src/planner/binder/expression/bind_aggregate_expression.cpp +8 -10
- package/src/duckdb/src/planner/binder/expression/bind_cast_expression.cpp +1 -1
- package/src/duckdb/src/planner/binder/expression/bind_collate_expression.cpp +2 -2
- package/src/duckdb/src/planner/binder/expression/bind_columnref_expression.cpp +1 -1
- package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +8 -7
- package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +2 -2
- package/src/duckdb/src/planner/binder/expression/bind_macro_expression.cpp +6 -6
- package/src/duckdb/src/planner/binder/expression/bind_operator_expression.cpp +2 -2
- package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +1 -1
- package/src/duckdb/src/planner/binder/expression/bind_window_expression.cpp +6 -14
- package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +2 -5
- package/src/duckdb/src/planner/binder/query_node/bind_table_macro_node.cpp +1 -1
- package/src/duckdb/src/planner/binder/query_node/plan_select_node.cpp +8 -8
- package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +5 -5
- package/src/duckdb/src/planner/binder/statement/bind_create.cpp +2 -2
- package/src/duckdb/src/planner/binder/statement/bind_delete.cpp +1 -1
- package/src/duckdb/src/planner/binder/statement/bind_update.cpp +2 -2
- package/src/duckdb/src/planner/binder/tableref/plan_expressionlistref.cpp +1 -1
- package/src/duckdb/src/planner/binder/tableref/plan_joinref.cpp +4 -4
- package/src/duckdb/src/planner/expression.cpp +2 -1
- package/src/duckdb/src/planner/expression_binder/aggregate_binder.cpp +2 -2
- package/src/duckdb/src/planner/expression_binder/alter_binder.cpp +2 -2
- package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +4 -4
- package/src/duckdb/src/planner/expression_binder/check_binder.cpp +4 -4
- package/src/duckdb/src/planner/expression_binder/column_alias_binder.cpp +1 -1
- package/src/duckdb/src/planner/expression_binder/constant_binder.cpp +3 -3
- package/src/duckdb/src/planner/expression_binder/group_binder.cpp +2 -2
- package/src/duckdb/src/planner/expression_binder/having_binder.cpp +4 -4
- package/src/duckdb/src/planner/expression_binder/index_binder.cpp +2 -2
- package/src/duckdb/src/planner/expression_binder/insert_binder.cpp +2 -2
- package/src/duckdb/src/planner/expression_binder/lateral_binder.cpp +3 -3
- package/src/duckdb/src/planner/expression_binder/qualify_binder.cpp +4 -4
- package/src/duckdb/src/planner/expression_binder/relation_binder.cpp +2 -2
- package/src/duckdb/src/planner/expression_binder/returning_binder.cpp +2 -2
- package/src/duckdb/src/planner/expression_binder/table_function_binder.cpp +3 -3
- package/src/duckdb/src/planner/expression_binder/update_binder.cpp +2 -2
- package/src/duckdb/src/planner/expression_binder/where_binder.cpp +4 -4
- package/src/duckdb/src/planner/expression_binder.cpp +12 -12
- package/src/duckdb/src/storage/buffer/block_manager.cpp +1 -2
- package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +2 -2
- package/src/duckdb/src/storage/compression/dictionary_compression.cpp +1 -1
- package/src/duckdb/src/storage/compression/fsst.cpp +3 -3
- package/src/duckdb/src/storage/compression/string_uncompressed.cpp +1 -1
- package/src/duckdb/src/storage/meta_block_writer.cpp +4 -0
- package/src/duckdb/src/storage/partial_block_manager.cpp +11 -4
- package/src/duckdb/src/storage/single_file_block_manager.cpp +16 -9
- package/src/duckdb/src/storage/standard_buffer_manager.cpp +5 -2
- package/src/duckdb/src/storage/statistics/string_stats.cpp +2 -2
- package/src/duckdb/src/storage/storage_manager.cpp +7 -2
- package/src/duckdb/src/storage/table/column_checkpoint_state.cpp +21 -1
- package/src/duckdb/ub_src_execution_operator_join.cpp +2 -0
- package/src/statement.cpp +3 -3
@@ -68,10 +68,12 @@ public:
|
|
68
68
|
return GetSize() <= INLINE_LENGTH;
|
69
69
|
}
|
70
70
|
|
71
|
-
|
72
|
-
const char *GetDataUnsafe() const {
|
71
|
+
const char *GetData() const {
|
73
72
|
return IsInlined() ? (const char *)value.inlined.inlined : value.pointer.ptr;
|
74
73
|
}
|
74
|
+
const char *GetDataUnsafe() const {
|
75
|
+
return GetData();
|
76
|
+
}
|
75
77
|
|
76
78
|
char *GetDataWriteable() const {
|
77
79
|
return IsInlined() ? (char *)value.inlined.inlined : value.pointer.ptr;
|
@@ -86,7 +88,7 @@ public:
|
|
86
88
|
}
|
87
89
|
|
88
90
|
string GetString() const {
|
89
|
-
return string(
|
91
|
+
return string(GetData(), GetSize());
|
90
92
|
}
|
91
93
|
|
92
94
|
explicit operator string() const {
|
@@ -108,7 +110,7 @@ public:
|
|
108
110
|
} else {
|
109
111
|
// copy the data into the prefix
|
110
112
|
#ifndef DUCKDB_DEBUG_NO_INLINE
|
111
|
-
auto dataptr = (char *)
|
113
|
+
auto dataptr = (char *)GetData();
|
112
114
|
memcpy(value.pointer.prefix, dataptr, PREFIX_LENGTH);
|
113
115
|
#else
|
114
116
|
memset(value.pointer.prefix, 0, PREFIX_BYTES);
|
@@ -124,7 +126,7 @@ public:
|
|
124
126
|
#ifdef DUCKDB_DEBUG_NO_INLINE
|
125
127
|
if (a.GetSize() != b.GetSize())
|
126
128
|
return false;
|
127
|
-
return (memcmp(a.
|
129
|
+
return (memcmp(a.GetData(), b.GetData(), a.GetSize()) == 0);
|
128
130
|
#endif
|
129
131
|
uint64_t A = Load<uint64_t>((const_data_ptr_t)&a);
|
130
132
|
uint64_t B = Load<uint64_t>((const_data_ptr_t)&b);
|
@@ -177,7 +179,7 @@ public:
|
|
177
179
|
if (A != B)
|
178
180
|
return bswap(A) > bswap(B);
|
179
181
|
#endif
|
180
|
-
auto memcmp_res = memcmp(left.
|
182
|
+
auto memcmp_res = memcmp(left.GetData(), right.GetData(), min_length);
|
181
183
|
return memcmp_res > 0 || (memcmp_res == 0 && left_length > right_length);
|
182
184
|
}
|
183
185
|
};
|
@@ -143,7 +143,7 @@ public:
|
|
143
143
|
return heap.AddString(data);
|
144
144
|
}
|
145
145
|
string_t AddBlob(string_t data) {
|
146
|
-
return heap.AddBlob(data.
|
146
|
+
return heap.AddBlob(data.GetData(), data.GetSize());
|
147
147
|
}
|
148
148
|
string_t EmptyString(idx_t len) {
|
149
149
|
return heap.EmptyString(len);
|
@@ -29,7 +29,7 @@ struct OuterJoinLocalScanState {
|
|
29
29
|
|
30
30
|
class OuterJoinMarker {
|
31
31
|
public:
|
32
|
-
OuterJoinMarker(bool enabled);
|
32
|
+
explicit OuterJoinMarker(bool enabled);
|
33
33
|
|
34
34
|
bool Enabled() {
|
35
35
|
return enabled;
|
@@ -60,6 +60,11 @@ public:
|
|
60
60
|
//! Perform the scan
|
61
61
|
void Scan(OuterJoinGlobalScanState &gstate, OuterJoinLocalScanState &lstate, DataChunk &result);
|
62
62
|
|
63
|
+
//! Read-only matches vector
|
64
|
+
const bool *GetMatches() const {
|
65
|
+
return found_match.get();
|
66
|
+
}
|
67
|
+
|
63
68
|
private:
|
64
69
|
bool enabled;
|
65
70
|
unique_ptr<bool[]> found_match;
|
@@ -0,0 +1,93 @@
|
|
1
|
+
//===----------------------------------------------------------------------===//
|
2
|
+
// DuckDB
|
3
|
+
//
|
4
|
+
// duckdb/execution/operator/join/physical_asof_join.hpp
|
5
|
+
//
|
6
|
+
//
|
7
|
+
//===----------------------------------------------------------------------===//
|
8
|
+
|
9
|
+
#pragma once
|
10
|
+
|
11
|
+
#include "duckdb/execution/operator/join/physical_comparison_join.hpp"
|
12
|
+
#include "duckdb/planner/bound_result_modifier.hpp"
|
13
|
+
|
14
|
+
namespace duckdb {
|
15
|
+
|
16
|
+
//! PhysicalAsOfJoin represents a piecewise merge loop join between
|
17
|
+
//! two tables
|
18
|
+
class PhysicalAsOfJoin : public PhysicalComparisonJoin {
|
19
|
+
public:
|
20
|
+
static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::ASOF_JOIN;
|
21
|
+
|
22
|
+
public:
|
23
|
+
PhysicalAsOfJoin(LogicalComparisonJoin &op, unique_ptr<PhysicalOperator> left, unique_ptr<PhysicalOperator> right);
|
24
|
+
|
25
|
+
vector<LogicalType> join_key_types;
|
26
|
+
vector<column_t> null_sensitive;
|
27
|
+
|
28
|
+
// Equalities
|
29
|
+
vector<unique_ptr<Expression>> lhs_partitions;
|
30
|
+
vector<unique_ptr<Expression>> rhs_partitions;
|
31
|
+
|
32
|
+
// Inequality Only
|
33
|
+
vector<BoundOrderByNode> lhs_orders;
|
34
|
+
vector<BoundOrderByNode> rhs_orders;
|
35
|
+
|
36
|
+
// Projection mappings
|
37
|
+
vector<column_t> right_projection_map;
|
38
|
+
|
39
|
+
public:
|
40
|
+
// Operator Interface
|
41
|
+
unique_ptr<GlobalOperatorState> GetGlobalOperatorState(ClientContext &context) const override;
|
42
|
+
unique_ptr<OperatorState> GetOperatorState(ExecutionContext &context) const override;
|
43
|
+
|
44
|
+
bool ParallelOperator() const override {
|
45
|
+
return true;
|
46
|
+
}
|
47
|
+
|
48
|
+
protected:
|
49
|
+
// CachingOperator Interface
|
50
|
+
OperatorResultType ExecuteInternal(ExecutionContext &context, DataChunk &input, DataChunk &chunk,
|
51
|
+
GlobalOperatorState &gstate, OperatorState &state) const override;
|
52
|
+
|
53
|
+
public:
|
54
|
+
// Source interface
|
55
|
+
unique_ptr<LocalSourceState> GetLocalSourceState(ExecutionContext &context,
|
56
|
+
GlobalSourceState &gstate) const override;
|
57
|
+
unique_ptr<GlobalSourceState> GetGlobalSourceState(ClientContext &context) const override;
|
58
|
+
void GetData(ExecutionContext &context, DataChunk &chunk, GlobalSourceState &gstate,
|
59
|
+
LocalSourceState &lstate) const override;
|
60
|
+
|
61
|
+
bool IsSource() const override {
|
62
|
+
return IsRightOuterJoin(join_type);
|
63
|
+
}
|
64
|
+
bool ParallelSource() const override {
|
65
|
+
return true;
|
66
|
+
}
|
67
|
+
|
68
|
+
public:
|
69
|
+
// Sink Interface
|
70
|
+
unique_ptr<GlobalSinkState> GetGlobalSinkState(ClientContext &context) const override;
|
71
|
+
unique_ptr<LocalSinkState> GetLocalSinkState(ExecutionContext &context) const override;
|
72
|
+
SinkResultType Sink(ExecutionContext &context, GlobalSinkState &state, LocalSinkState &lstate,
|
73
|
+
DataChunk &input) const override;
|
74
|
+
void Combine(ExecutionContext &context, GlobalSinkState &gstate, LocalSinkState &lstate) const override;
|
75
|
+
SinkFinalizeType Finalize(Pipeline &pipeline, Event &event, ClientContext &context,
|
76
|
+
GlobalSinkState &gstate) const override;
|
77
|
+
|
78
|
+
bool IsSink() const override {
|
79
|
+
return true;
|
80
|
+
}
|
81
|
+
bool ParallelSink() const override {
|
82
|
+
return true;
|
83
|
+
}
|
84
|
+
|
85
|
+
private:
|
86
|
+
// resolve joins that output max N elements (SEMI, ANTI, MARK)
|
87
|
+
void ResolveSimpleJoin(ExecutionContext &context, DataChunk &input, DataChunk &chunk, OperatorState &state) const;
|
88
|
+
// resolve joins that can potentially output N*M elements (INNER, LEFT, FULL)
|
89
|
+
OperatorResultType ResolveComplexJoin(ExecutionContext &context, DataChunk &input, DataChunk &chunk,
|
90
|
+
OperatorState &state) const;
|
91
|
+
};
|
92
|
+
|
93
|
+
} // namespace duckdb
|
@@ -199,7 +199,7 @@ public:
|
|
199
199
|
~CachingOperatorState() override {
|
200
200
|
}
|
201
201
|
|
202
|
-
|
202
|
+
void Finalize(const PhysicalOperator &op, ExecutionContext &context) override {
|
203
203
|
}
|
204
204
|
|
205
205
|
unique_ptr<DataChunk> cached_chunk;
|
@@ -44,6 +44,23 @@ public:
|
|
44
44
|
unordered_map<string, unique_ptr<ParsedExpression>> &defaults);
|
45
45
|
|
46
46
|
virtual string ToSQL(const string &schema, const string &name) const;
|
47
|
+
|
48
|
+
public:
|
49
|
+
template <class TARGET>
|
50
|
+
TARGET &Cast() {
|
51
|
+
if (type != TARGET::TYPE) {
|
52
|
+
throw InternalException("Failed to cast macro to type - macro type mismatch");
|
53
|
+
}
|
54
|
+
return (TARGET &)*this;
|
55
|
+
}
|
56
|
+
|
57
|
+
template <class TARGET>
|
58
|
+
const TARGET &Cast() const {
|
59
|
+
if (type != TARGET::TYPE) {
|
60
|
+
throw InternalException("Failed to cast macro to type - macro type mismatch");
|
61
|
+
}
|
62
|
+
return (const TARGET &)*this;
|
63
|
+
}
|
47
64
|
};
|
48
65
|
|
49
66
|
} // namespace duckdb
|
@@ -22,7 +22,7 @@ void ParseRegexOptions(const string &options, duckdb_re2::RE2::Options &result,
|
|
22
22
|
void ParseRegexOptions(ClientContext &context, Expression &expr, RE2::Options &target, bool *global_replace = nullptr);
|
23
23
|
|
24
24
|
inline duckdb_re2::StringPiece CreateStringPiece(const string_t &input) {
|
25
|
-
return duckdb_re2::StringPiece(input.
|
25
|
+
return duckdb_re2::StringPiece(input.GetData(), input.GetSize());
|
26
26
|
}
|
27
27
|
|
28
28
|
inline string_t Extract(const string_t &input, Vector &result, const RE2 &re, const duckdb_re2::StringPiece &rewrite) {
|
@@ -58,7 +58,7 @@ struct LengthFun {
|
|
58
58
|
|
59
59
|
template <class TA, class TR>
|
60
60
|
static inline TR Length(TA input) {
|
61
|
-
auto input_data = input.
|
61
|
+
auto input_data = input.GetData();
|
62
62
|
auto input_length = input.GetSize();
|
63
63
|
TR length = 0;
|
64
64
|
for (idx_t i = 0; i < input_length; i++) {
|
@@ -69,7 +69,7 @@ struct LengthFun {
|
|
69
69
|
|
70
70
|
template <class TA, class TR>
|
71
71
|
static inline TR GraphemeCount(TA input) {
|
72
|
-
auto input_data = input.
|
72
|
+
auto input_data = input.GetData();
|
73
73
|
auto input_length = input.GetSize();
|
74
74
|
for (idx_t i = 0; i < input_length; i++) {
|
75
75
|
if (input_data[i] & 0x80) {
|
@@ -19,6 +19,9 @@
|
|
19
19
|
namespace duckdb {
|
20
20
|
|
21
21
|
class TableMacroFunction : public MacroFunction {
|
22
|
+
public:
|
23
|
+
static constexpr const MacroType TYPE = MacroType::TABLE_MACRO;
|
24
|
+
|
22
25
|
public:
|
23
26
|
explicit TableMacroFunction(unique_ptr<QueryNode> query_node);
|
24
27
|
TableMacroFunction(void);
|
@@ -80,7 +80,7 @@ struct ToCStringCastWrapper {
|
|
80
80
|
Vector result_vector(LogicalType::VARCHAR, nullptr);
|
81
81
|
auto result_string = OP::template Operation<SOURCE_TYPE>(input, result_vector);
|
82
82
|
auto result_size = result_string.GetSize();
|
83
|
-
auto result_data = result_string.
|
83
|
+
auto result_data = result_string.GetData();
|
84
84
|
|
85
85
|
char *allocated_data = (char *)duckdb_malloc(result_size + 1);
|
86
86
|
memcpy(allocated_data, result_data, result_size);
|
@@ -71,6 +71,8 @@ struct ClientConfig {
|
|
71
71
|
bool force_external = false;
|
72
72
|
//! Force disable cross product generation when hyper graph isn't connected, used for testing
|
73
73
|
bool force_no_cross_product = false;
|
74
|
+
//! Force use of IEJoin to implement AsOfJoin, used for testing
|
75
|
+
bool force_asof_iejoin = false;
|
74
76
|
//! If this context should also try to use the available replacement scans
|
75
77
|
//! True by default
|
76
78
|
bool use_replacement_scans = true;
|
@@ -106,8 +106,8 @@ struct DBConfigOptions {
|
|
106
106
|
string collation = string();
|
107
107
|
//! The order type used when none is specified (default: ASC)
|
108
108
|
OrderType default_order_type = OrderType::ASCENDING;
|
109
|
-
//! Null ordering used when none is specified (default: NULLS
|
110
|
-
|
109
|
+
//! Null ordering used when none is specified (default: NULLS LAST)
|
110
|
+
DefaultOrderByNullType default_null_order = DefaultOrderByNullType::NULLS_LAST;
|
111
111
|
//! enable COPY and related commands
|
112
112
|
bool enable_external_access = true;
|
113
113
|
//! Whether or not object cache is used
|
@@ -145,6 +145,8 @@ struct DBConfigOptions {
|
|
145
145
|
bool enable_fsst_vectors = false;
|
146
146
|
//! Start transactions immediately in all attached databases - instead of lazily when a database is referenced
|
147
147
|
bool immediate_transaction_mode = false;
|
148
|
+
//! Debug setting - how to initialize blocks in the storage layer when allocating
|
149
|
+
DebugInitialize debug_initialize = DebugInitialize::NO_INITIALIZE;
|
148
150
|
//! The set of unrecognized (other) options
|
149
151
|
unordered_map<string, Value> unrecognized_options;
|
150
152
|
|
@@ -226,6 +228,9 @@ public:
|
|
226
228
|
void SetDefaultMaxThreads();
|
227
229
|
void SetDefaultMaxMemory();
|
228
230
|
|
231
|
+
OrderType ResolveOrder(OrderType order_type) const;
|
232
|
+
OrderByNullType ResolveNullOrder(OrderType order_type, OrderByNullType null_type) const;
|
233
|
+
|
229
234
|
private:
|
230
235
|
unique_ptr<CompressionFunctionSet> compression_functions;
|
231
236
|
unique_ptr<CastFunctionSet> cast_functions;
|
@@ -66,9 +66,19 @@ struct DebugForceNoCrossProduct {
|
|
66
66
|
};
|
67
67
|
|
68
68
|
struct OrderedAggregateThreshold {
|
69
|
-
static constexpr const char *Name = "ordered_aggregate_threshold";
|
70
|
-
static constexpr const char *Description =
|
71
|
-
|
69
|
+
static constexpr const char *Name = "ordered_aggregate_threshold"; // NOLINT
|
70
|
+
static constexpr const char *Description = // NOLINT
|
71
|
+
"the number of rows to accumulate before sorting, used for tuning";
|
72
|
+
static constexpr const LogicalTypeId InputType = LogicalTypeId::UBIGINT; // NOLINT
|
73
|
+
static void SetLocal(ClientContext &context, const Value ¶meter);
|
74
|
+
static void ResetLocal(ClientContext &context);
|
75
|
+
static Value GetSetting(ClientContext &context);
|
76
|
+
};
|
77
|
+
|
78
|
+
struct DebugAsOfIEJoin {
|
79
|
+
static constexpr const char *Name = "debug_asof_iejoin"; // NOLINT
|
80
|
+
static constexpr const char *Description = "DEBUG SETTING: force use of IEJoin to implement AsOf joins"; // NOLINT
|
81
|
+
static constexpr const LogicalTypeId InputType = LogicalTypeId::BOOLEAN; // NOLINT
|
72
82
|
static void SetLocal(ClientContext &context, const Value ¶meter);
|
73
83
|
static void ResetLocal(ClientContext &context);
|
74
84
|
static Value GetSetting(ClientContext &context);
|
@@ -30,7 +30,7 @@ private:
|
|
30
30
|
//! First iteration: count how many times each expression occurs
|
31
31
|
void CountExpressions(Expression &expr, CSEReplacementState &state);
|
32
32
|
//! Second iteration: perform the actual replacement of the duplicate expressions with common subexpressions nodes
|
33
|
-
void PerformCSEReplacement(unique_ptr<Expression>
|
33
|
+
void PerformCSEReplacement(unique_ptr<Expression> &expr, CSEReplacementState &state);
|
34
34
|
|
35
35
|
//! Main method to extract common subexpressions
|
36
36
|
void ExtractCommonSubExpresions(LogicalOperator &op);
|
@@ -87,8 +87,10 @@ public:
|
|
87
87
|
// Start with function call
|
88
88
|
string result = schema.empty() ? function_name : schema + "." + function_name;
|
89
89
|
result += "(";
|
90
|
-
|
91
|
-
|
90
|
+
if (entry.children.size()) {
|
91
|
+
result += StringUtil::Join(entry.children, entry.children.size(), ", ",
|
92
|
+
[](const unique_ptr<BASE> &child) { return child->ToString(); });
|
93
|
+
}
|
92
94
|
// Lead/Lag extra arguments
|
93
95
|
if (entry.offset_expr.get()) {
|
94
96
|
result += ", ";
|
@@ -184,6 +184,7 @@ private:
|
|
184
184
|
//! Transform a Postgres duckdb_libpgquery::T_PGSelectStmt node into a QueryNode
|
185
185
|
unique_ptr<QueryNode> TransformSelectNode(duckdb_libpgquery::PGSelectStmt *node);
|
186
186
|
unique_ptr<QueryNode> TransformSelectInternal(duckdb_libpgquery::PGSelectStmt *node);
|
187
|
+
void TransformModifiers(duckdb_libpgquery::PGSelectStmt &stmt, QueryNode &node);
|
187
188
|
|
188
189
|
//===--------------------------------------------------------------------===//
|
189
190
|
// Expression Transform
|
@@ -321,7 +321,7 @@ private:
|
|
321
321
|
|
322
322
|
unique_ptr<LogicalOperator> PlanFilter(unique_ptr<Expression> condition, unique_ptr<LogicalOperator> root);
|
323
323
|
|
324
|
-
void PlanSubqueries(unique_ptr<Expression>
|
324
|
+
void PlanSubqueries(unique_ptr<Expression> &expr, unique_ptr<LogicalOperator> &root);
|
325
325
|
unique_ptr<Expression> PlanSubquery(BoundSubqueryExpression &expr, unique_ptr<LogicalOperator> &root);
|
326
326
|
unique_ptr<LogicalOperator> PlanLateralJoin(unique_ptr<LogicalOperator> left, unique_ptr<LogicalOperator> right,
|
327
327
|
vector<CorrelatedColumnInfo> &correlated_columns,
|
@@ -21,7 +21,7 @@ public:
|
|
21
21
|
AggregateBinder(Binder &binder, ClientContext &context);
|
22
22
|
|
23
23
|
protected:
|
24
|
-
BindResult BindExpression(unique_ptr<ParsedExpression>
|
24
|
+
BindResult BindExpression(unique_ptr<ParsedExpression> &expr_ptr, idx_t depth,
|
25
25
|
bool root_expression = false) override;
|
26
26
|
|
27
27
|
string UnsupportedAggregateMessage() override;
|
@@ -24,7 +24,7 @@ public:
|
|
24
24
|
vector<LogicalIndex> &bound_columns;
|
25
25
|
|
26
26
|
protected:
|
27
|
-
BindResult BindExpression(unique_ptr<ParsedExpression>
|
27
|
+
BindResult BindExpression(unique_ptr<ParsedExpression> &expr_ptr, idx_t depth,
|
28
28
|
bool root_expression = false) override;
|
29
29
|
|
30
30
|
BindResult BindColumn(ColumnRefExpression &expr);
|
@@ -40,10 +40,11 @@ public:
|
|
40
40
|
}
|
41
41
|
|
42
42
|
protected:
|
43
|
-
BindResult BindExpression(unique_ptr<ParsedExpression>
|
43
|
+
BindResult BindExpression(unique_ptr<ParsedExpression> &expr_ptr, idx_t depth,
|
44
44
|
bool root_expression = false) override;
|
45
45
|
|
46
|
-
BindResult BindAggregate(FunctionExpression &expr, AggregateFunctionCatalogEntry
|
46
|
+
BindResult BindAggregate(FunctionExpression &expr, optional_ptr<AggregateFunctionCatalogEntry> function,
|
47
|
+
idx_t depth) override;
|
47
48
|
|
48
49
|
bool inside_window;
|
49
50
|
bool bound_aggregate = false;
|
@@ -53,7 +54,7 @@ protected:
|
|
53
54
|
case_insensitive_map_t<idx_t> alias_map;
|
54
55
|
|
55
56
|
protected:
|
56
|
-
BindResult BindColumnRef(unique_ptr<ParsedExpression>
|
57
|
+
BindResult BindColumnRef(unique_ptr<ParsedExpression> &expr_ptr, idx_t depth);
|
57
58
|
BindResult BindGroupingFunction(OperatorExpression &op, idx_t depth) override;
|
58
59
|
BindResult BindWindow(WindowExpression &expr, idx_t depth);
|
59
60
|
|
@@ -25,7 +25,7 @@ public:
|
|
25
25
|
physical_index_set_t &bound_columns;
|
26
26
|
|
27
27
|
protected:
|
28
|
-
BindResult BindExpression(unique_ptr<ParsedExpression>
|
28
|
+
BindResult BindExpression(unique_ptr<ParsedExpression> &expr_ptr, idx_t depth,
|
29
29
|
bool root_expression = false) override;
|
30
30
|
|
31
31
|
BindResult BindCheckColumn(ColumnRefExpression &expr);
|
@@ -21,7 +21,7 @@ public:
|
|
21
21
|
string clause;
|
22
22
|
|
23
23
|
protected:
|
24
|
-
BindResult BindExpression(unique_ptr<ParsedExpression>
|
24
|
+
BindResult BindExpression(unique_ptr<ParsedExpression> &expr, idx_t depth, bool root_expression = false) override;
|
25
25
|
|
26
26
|
string UnsupportedAggregateMessage() override;
|
27
27
|
};
|
@@ -27,7 +27,7 @@ public:
|
|
27
27
|
idx_t bind_index;
|
28
28
|
|
29
29
|
protected:
|
30
|
-
BindResult BindExpression(unique_ptr<ParsedExpression>
|
30
|
+
BindResult BindExpression(unique_ptr<ParsedExpression> &expr_ptr, idx_t depth, bool root_expression) override;
|
31
31
|
|
32
32
|
string UnsupportedAggregateMessage() override;
|
33
33
|
|
@@ -21,11 +21,11 @@ public:
|
|
21
21
|
case_insensitive_map_t<idx_t> &alias_map, AggregateHandling aggregate_handling);
|
22
22
|
|
23
23
|
protected:
|
24
|
-
BindResult BindExpression(unique_ptr<ParsedExpression>
|
24
|
+
BindResult BindExpression(unique_ptr<ParsedExpression> &expr_ptr, idx_t depth,
|
25
25
|
bool root_expression = false) override;
|
26
26
|
|
27
27
|
private:
|
28
|
-
BindResult BindColumnRef(unique_ptr<ParsedExpression>
|
28
|
+
BindResult BindColumnRef(unique_ptr<ParsedExpression> &expr_ptr, idx_t depth, bool root_expression);
|
29
29
|
|
30
30
|
ColumnAliasBinder column_alias_binder;
|
31
31
|
AggregateHandling aggregate_handling;
|
@@ -23,7 +23,7 @@ public:
|
|
23
23
|
optional_ptr<CreateIndexInfo> info = nullptr);
|
24
24
|
|
25
25
|
protected:
|
26
|
-
BindResult BindExpression(unique_ptr<ParsedExpression>
|
26
|
+
BindResult BindExpression(unique_ptr<ParsedExpression> &expr_ptr, idx_t depth,
|
27
27
|
bool root_expression = false) override;
|
28
28
|
string UnsupportedAggregateMessage() override;
|
29
29
|
|
@@ -18,7 +18,7 @@ public:
|
|
18
18
|
InsertBinder(Binder &binder, ClientContext &context);
|
19
19
|
|
20
20
|
protected:
|
21
|
-
BindResult BindExpression(unique_ptr<ParsedExpression>
|
21
|
+
BindResult BindExpression(unique_ptr<ParsedExpression> &expr_ptr, idx_t depth,
|
22
22
|
bool root_expression = false) override;
|
23
23
|
|
24
24
|
string UnsupportedAggregateMessage() override;
|
@@ -29,13 +29,13 @@ public:
|
|
29
29
|
static void ReduceExpressionDepth(LogicalOperator &op, const vector<CorrelatedColumnInfo> &info);
|
30
30
|
|
31
31
|
protected:
|
32
|
-
BindResult BindExpression(unique_ptr<ParsedExpression>
|
32
|
+
BindResult BindExpression(unique_ptr<ParsedExpression> &expr_ptr, idx_t depth,
|
33
33
|
bool root_expression = false) override;
|
34
34
|
|
35
35
|
string UnsupportedAggregateMessage() override;
|
36
36
|
|
37
37
|
private:
|
38
|
-
BindResult BindColumnRef(unique_ptr<ParsedExpression>
|
38
|
+
BindResult BindColumnRef(unique_ptr<ParsedExpression> &expr_ptr, idx_t depth, bool root_expression);
|
39
39
|
void ExtractCorrelatedColumns(Expression &expr);
|
40
40
|
|
41
41
|
private:
|
@@ -20,11 +20,11 @@ public:
|
|
20
20
|
case_insensitive_map_t<idx_t> &alias_map);
|
21
21
|
|
22
22
|
protected:
|
23
|
-
BindResult BindExpression(unique_ptr<ParsedExpression>
|
23
|
+
BindResult BindExpression(unique_ptr<ParsedExpression> &expr_ptr, idx_t depth,
|
24
24
|
bool root_expression = false) override;
|
25
25
|
|
26
26
|
private:
|
27
|
-
BindResult BindColumnRef(unique_ptr<ParsedExpression>
|
27
|
+
BindResult BindColumnRef(unique_ptr<ParsedExpression> &expr_ptr, idx_t depth, bool root_expression);
|
28
28
|
|
29
29
|
ColumnAliasBinder column_alias_binder;
|
30
30
|
};
|
@@ -20,7 +20,7 @@ public:
|
|
20
20
|
string op;
|
21
21
|
|
22
22
|
protected:
|
23
|
-
BindResult BindExpression(unique_ptr<ParsedExpression>
|
23
|
+
BindResult BindExpression(unique_ptr<ParsedExpression> &expr_ptr, idx_t depth,
|
24
24
|
bool root_expression = false) override;
|
25
25
|
|
26
26
|
string UnsupportedAggregateMessage() override;
|
@@ -18,7 +18,7 @@ public:
|
|
18
18
|
ReturningBinder(Binder &binder, ClientContext &context);
|
19
19
|
|
20
20
|
protected:
|
21
|
-
BindResult BindExpression(unique_ptr<ParsedExpression>
|
21
|
+
BindResult BindExpression(unique_ptr<ParsedExpression> &expr_ptr, idx_t depth,
|
22
22
|
bool root_expression = false) override;
|
23
23
|
};
|
24
24
|
|
@@ -19,7 +19,7 @@ public:
|
|
19
19
|
|
20
20
|
protected:
|
21
21
|
BindResult BindColumnReference(ColumnRefExpression &expr, idx_t depth, bool root_expression);
|
22
|
-
BindResult BindExpression(unique_ptr<ParsedExpression>
|
22
|
+
BindResult BindExpression(unique_ptr<ParsedExpression> &expr, idx_t depth, bool root_expression = false) override;
|
23
23
|
|
24
24
|
string UnsupportedAggregateMessage() override;
|
25
25
|
};
|
@@ -18,7 +18,7 @@ public:
|
|
18
18
|
UpdateBinder(Binder &binder, ClientContext &context);
|
19
19
|
|
20
20
|
protected:
|
21
|
-
BindResult BindExpression(unique_ptr<ParsedExpression>
|
21
|
+
BindResult BindExpression(unique_ptr<ParsedExpression> &expr_ptr, idx_t depth,
|
22
22
|
bool root_expression = false) override;
|
23
23
|
|
24
24
|
string UnsupportedAggregateMessage() override;
|
@@ -20,13 +20,13 @@ public:
|
|
20
20
|
WhereBinder(Binder &binder, ClientContext &context, optional_ptr<ColumnAliasBinder> column_alias_binder = nullptr);
|
21
21
|
|
22
22
|
protected:
|
23
|
-
BindResult BindExpression(unique_ptr<ParsedExpression>
|
23
|
+
BindResult BindExpression(unique_ptr<ParsedExpression> &expr_ptr, idx_t depth,
|
24
24
|
bool root_expression = false) override;
|
25
25
|
|
26
26
|
string UnsupportedAggregateMessage() override;
|
27
27
|
|
28
28
|
private:
|
29
|
-
BindResult BindColumnRef(unique_ptr<ParsedExpression>
|
29
|
+
BindResult BindColumnRef(unique_ptr<ParsedExpression> &expr_ptr, idx_t depth, bool root_expression);
|
30
30
|
|
31
31
|
optional_ptr<ColumnAliasBinder> column_alias_binder;
|
32
32
|
};
|
@@ -63,7 +63,7 @@ public:
|
|
63
63
|
optional_ptr<vector<DummyBinding>> lambda_bindings;
|
64
64
|
|
65
65
|
public:
|
66
|
-
unique_ptr<Expression> Bind(unique_ptr<ParsedExpression> &expr, LogicalType
|
66
|
+
unique_ptr<Expression> Bind(unique_ptr<ParsedExpression> &expr, optional_ptr<LogicalType> result_type = nullptr,
|
67
67
|
bool root_expression = true);
|
68
68
|
|
69
69
|
//! Returns whether or not any columns have been bound by the expression binder
|
@@ -74,7 +74,7 @@ public:
|
|
74
74
|
return bound_columns;
|
75
75
|
}
|
76
76
|
|
77
|
-
string Bind(unique_ptr<ParsedExpression>
|
77
|
+
string Bind(unique_ptr<ParsedExpression> &expr, idx_t depth, bool root_expression = false);
|
78
78
|
|
79
79
|
unique_ptr<ParsedExpression> CreateStructExtract(unique_ptr<ParsedExpression> base, string field_name);
|
80
80
|
unique_ptr<ParsedExpression> CreateStructPack(ColumnRefExpression &colref);
|
@@ -103,7 +103,7 @@ public:
|
|
103
103
|
|
104
104
|
//! Bind the given expresion. Unlike Bind(), this does *not* mute the given ParsedExpression.
|
105
105
|
//! Exposed to be used from sub-binders that aren't subclasses of ExpressionBinder.
|
106
|
-
virtual BindResult BindExpression(unique_ptr<ParsedExpression>
|
106
|
+
virtual BindResult BindExpression(unique_ptr<ParsedExpression> &expr_ptr, idx_t depth,
|
107
107
|
bool root_expression = false);
|
108
108
|
|
109
109
|
void ReplaceMacroParametersRecursive(unique_ptr<ParsedExpression> &expr);
|
@@ -117,7 +117,7 @@ protected:
|
|
117
117
|
BindResult BindExpression(ComparisonExpression &expr, idx_t depth);
|
118
118
|
BindResult BindExpression(ConjunctionExpression &expr, idx_t depth);
|
119
119
|
BindResult BindExpression(ConstantExpression &expr, idx_t depth);
|
120
|
-
BindResult BindExpression(FunctionExpression &expr, idx_t depth, unique_ptr<ParsedExpression>
|
120
|
+
BindResult BindExpression(FunctionExpression &expr, idx_t depth, unique_ptr<ParsedExpression> &expr_ptr);
|
121
121
|
BindResult BindExpression(LambdaExpression &expr, idx_t depth, const bool is_lambda,
|
122
122
|
const LogicalType &list_child_type);
|
123
123
|
BindResult BindExpression(OperatorExpression &expr, idx_t depth);
|
@@ -134,12 +134,15 @@ protected:
|
|
134
134
|
|
135
135
|
protected:
|
136
136
|
virtual BindResult BindGroupingFunction(OperatorExpression &op, idx_t depth);
|
137
|
-
virtual BindResult BindFunction(FunctionExpression &expr, ScalarFunctionCatalogEntry
|
138
|
-
|
139
|
-
virtual BindResult
|
137
|
+
virtual BindResult BindFunction(FunctionExpression &expr, optional_ptr<ScalarFunctionCatalogEntry> function,
|
138
|
+
idx_t depth);
|
139
|
+
virtual BindResult BindLambdaFunction(FunctionExpression &expr, optional_ptr<ScalarFunctionCatalogEntry> function,
|
140
|
+
idx_t depth);
|
141
|
+
virtual BindResult BindAggregate(FunctionExpression &expr, optional_ptr<AggregateFunctionCatalogEntry> function,
|
142
|
+
idx_t depth);
|
140
143
|
virtual BindResult BindUnnest(FunctionExpression &expr, idx_t depth, bool root_expression);
|
141
|
-
virtual BindResult BindMacro(FunctionExpression &expr, ScalarMacroCatalogEntry
|
142
|
-
unique_ptr<ParsedExpression>
|
144
|
+
virtual BindResult BindMacro(FunctionExpression &expr, optional_ptr<ScalarMacroCatalogEntry> macro, idx_t depth,
|
145
|
+
unique_ptr<ParsedExpression> &expr_ptr);
|
143
146
|
|
144
147
|
virtual string UnsupportedAggregateMessage();
|
145
148
|
virtual string UnsupportedUnnestMessage();
|