Skip to content

Commit 25c7873

Browse files
Update vendored DuckDB sources to 2e8ebca
1 parent 2e8ebca commit 25c7873

File tree

197 files changed

+707
-617
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

197 files changed

+707
-617
lines changed

src/duckdb/extension/core_functions/scalar/generic/alias.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ namespace duckdb {
55

66
static void AliasFunction(DataChunk &args, ExpressionState &state, Vector &result) {
77
auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
8-
Value v(state.expr.alias.empty() ? func_expr.children[0]->GetName() : state.expr.alias);
8+
Value v(state.expr.GetAlias().empty() ? func_expr.children[0]->GetName() : state.expr.GetAlias());
99
result.Reference(v);
1010
}
1111

src/duckdb/extension/core_functions/scalar/generic/least.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ unique_ptr<FunctionData> BindLeastGreatest(ClientContext &context, ScalarFunctio
179179
for (idx_t i = 1; i < arguments.size(); i++) {
180180
auto arg_type = ExpressionBinder::GetExpressionReturnType(*arguments[i]);
181181
if (!LogicalType::TryGetMaxLogicalType(context, child_type, arg_type, child_type)) {
182-
throw BinderException(arguments[i]->query_location,
182+
throw BinderException(arguments[i]->GetQueryLocation(),
183183
"Cannot combine types of %s and %s - an explicit cast is required",
184184
child_type.ToString(), arg_type.ToString());
185185
}

src/duckdb/extension/core_functions/scalar/list/list_filter.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ static unique_ptr<FunctionData> ListFilterBind(ClientContext &context, ScalarFun
1010

1111
// the list column and the bound lambda expression
1212
D_ASSERT(arguments.size() == 2);
13-
if (arguments[1]->expression_class != ExpressionClass::BOUND_LAMBDA) {
13+
if (arguments[1]->GetExpressionClass() != ExpressionClass::BOUND_LAMBDA) {
1414
throw BinderException("Invalid lambda expression!");
1515
}
1616

src/duckdb/extension/core_functions/scalar/list/list_reduce.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ static unique_ptr<FunctionData> ListReduceBind(ClientContext &context, ScalarFun
184184

185185
// the list column and the bound lambda expression
186186
D_ASSERT(arguments.size() == 2);
187-
if (arguments[1]->expression_class != ExpressionClass::BOUND_LAMBDA) {
187+
if (arguments[1]->GetExpressionClass() != ExpressionClass::BOUND_LAMBDA) {
188188
throw BinderException("Invalid lambda expression!");
189189
}
190190

src/duckdb/extension/core_functions/scalar/list/list_transform.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ static unique_ptr<FunctionData> ListTransformBind(ClientContext &context, Scalar
1010

1111
// the list column and the bound lambda expression
1212
D_ASSERT(arguments.size() == 2);
13-
if (arguments[1]->expression_class != ExpressionClass::BOUND_LAMBDA) {
13+
if (arguments[1]->GetExpressionClass() != ExpressionClass::BOUND_LAMBDA) {
1414
throw BinderException("Invalid lambda expression!");
1515
}
1616

src/duckdb/extension/core_functions/scalar/list/list_value.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -156,10 +156,10 @@ static unique_ptr<FunctionData> ListValueBind(ClientContext &context, ScalarFunc
156156
auto error =
157157
StringUtil::Format("Cannot unpivot columns of types %s and %s - an explicit cast is required",
158158
child_type.ToString(), arg_type.ToString());
159-
throw BinderException(arguments[i]->query_location,
159+
throw BinderException(arguments[i]->GetQueryLocation(),
160160
QueryErrorContext::Format(list_arguments, error, error_index, false));
161161
} else {
162-
throw BinderException(arguments[i]->query_location,
162+
throw BinderException(arguments[i]->GetQueryLocation(),
163163
"Cannot create a list of types %s and %s - an explicit cast is required",
164164
child_type.ToString(), arg_type.ToString());
165165
}

src/duckdb/extension/core_functions/scalar/struct/struct_insert.cpp

+5-5
Original file line numberDiff line numberDiff line change
@@ -58,14 +58,14 @@ static unique_ptr<FunctionData> StructInsertBind(ClientContext &context, ScalarF
5858
// Loop through the additional arguments (name/value pairs)
5959
for (idx_t i = 1; i < arguments.size(); i++) {
6060
auto &child = arguments[i];
61-
if (child->alias.empty()) {
61+
if (child->GetAlias().empty()) {
6262
throw BinderException("Need named argument for struct insert, e.g., a := b");
6363
}
64-
if (name_collision_set.find(child->alias) != name_collision_set.end()) {
65-
throw BinderException("Duplicate struct entry name \"%s\"", child->alias);
64+
if (name_collision_set.find(child->GetAlias()) != name_collision_set.end()) {
65+
throw BinderException("Duplicate struct entry name \"%s\"", child->GetAlias());
6666
}
67-
name_collision_set.insert(child->alias);
68-
new_children.push_back(make_pair(child->alias, arguments[i]->return_type));
67+
name_collision_set.insert(child->GetAlias());
68+
new_children.push_back(make_pair(child->GetAlias(), arguments[i]->return_type));
6969
}
7070

7171
bound_function.return_type = LogicalType::STRUCT(new_children);

src/duckdb/extension/core_functions/scalar/union/union_value.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,13 @@ static unique_ptr<FunctionData> UnionValueBind(ClientContext &context, ScalarFun
4444
}
4545
auto &child = arguments[0];
4646

47-
if (child->alias.empty()) {
47+
if (child->GetAlias().empty()) {
4848
throw BinderException("Need named argument for union tag, e.g. UNION_VALUE(a := b)");
4949
}
5050

5151
child_list_t<LogicalType> union_members;
5252

53-
union_members.push_back(make_pair(child->alias, child->return_type));
53+
union_members.push_back(make_pair(child->GetAlias(), child->return_type));
5454

5555
bound_function.return_type = LogicalType::UNION(std::move(union_members));
5656
return make_uniq<VariableReturnBindData>(bound_function.return_type);

src/duckdb/extension/json/json_functions/copy_json.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ static BoundStatement CopyToJSONPlan(Binder &binder, CopyStatement &stmt) {
9191
strftime_children.emplace_back(make_uniq<ConstantExpression>(timestamp_format));
9292
column = make_uniq<FunctionExpression>("strftime", std::move(strftime_children));
9393
}
94-
column->alias = name;
94+
column->SetAlias(name);
9595
select_list.emplace_back(std::move(column));
9696
}
9797

src/duckdb/extension/json/json_functions/json_serialize_plan.cpp

+7-6
Original file line numberDiff line numberDiff line change
@@ -63,33 +63,34 @@ static unique_ptr<FunctionData> JsonSerializePlanBind(ClientContext &context, Sc
6363
if (!arg->IsFoldable()) {
6464
throw BinderException("json_serialize_plan: arguments must be constant");
6565
}
66-
if (arg->alias == "skip_null") {
66+
auto &alias = arg->GetAlias();
67+
if (alias == "skip_null") {
6768
if (arg->return_type.id() != LogicalTypeId::BOOLEAN) {
6869
throw BinderException("json_serialize_plan: 'skip_null' argument must be a boolean");
6970
}
7071
skip_if_null = BooleanValue::Get(ExpressionExecutor::EvaluateScalar(context, *arg));
71-
} else if (arg->alias == "skip_empty") {
72+
} else if (alias == "skip_empty") {
7273
if (arg->return_type.id() != LogicalTypeId::BOOLEAN) {
7374
throw BinderException("json_serialize_plan: 'skip_empty' argument must be a boolean");
7475
}
7576
skip_if_empty = BooleanValue::Get(ExpressionExecutor::EvaluateScalar(context, *arg));
76-
} else if (arg->alias == "skip_default") {
77+
} else if (alias == "skip_default") {
7778
if (arg->return_type.id() != LogicalTypeId::BOOLEAN) {
7879
throw BinderException("json_serialize_plan: 'skip_default' argument must be a boolean");
7980
}
8081
skip_if_default = BooleanValue::Get(ExpressionExecutor::EvaluateScalar(context, *arg));
81-
} else if (arg->alias == "format") {
82+
} else if (alias == "format") {
8283
if (arg->return_type.id() != LogicalTypeId::BOOLEAN) {
8384
throw BinderException("json_serialize_plan: 'format' argument must be a boolean");
8485
}
8586
format = BooleanValue::Get(ExpressionExecutor::EvaluateScalar(context, *arg));
86-
} else if (arg->alias == "optimize") {
87+
} else if (alias == "optimize") {
8788
if (arg->return_type.id() != LogicalTypeId::BOOLEAN) {
8889
throw BinderException("json_serialize_plan: 'optimize' argument must be a boolean");
8990
}
9091
optimize = BooleanValue::Get(ExpressionExecutor::EvaluateScalar(context, *arg));
9192
} else {
92-
throw BinderException(StringUtil::Format("json_serialize_plan: Unknown argument '%s'", arg->alias.c_str()));
93+
throw BinderException(StringUtil::Format("json_serialize_plan: Unknown argument '%s'", alias));
9394
}
9495
}
9596
return make_uniq<JsonSerializePlanBindData>(skip_if_null, skip_if_empty, skip_if_default, format, optimize);

src/duckdb/extension/json/json_functions/json_serialize_sql.cpp

+6-5
Original file line numberDiff line numberDiff line change
@@ -54,28 +54,29 @@ static unique_ptr<FunctionData> JsonSerializeBind(ClientContext &context, Scalar
5454
if (!arg->IsFoldable()) {
5555
throw BinderException("json_serialize_sql: arguments must be constant");
5656
}
57-
if (arg->alias == "skip_null") {
57+
auto &alias = arg->GetAlias();
58+
if (alias == "skip_null") {
5859
if (arg->return_type.id() != LogicalTypeId::BOOLEAN) {
5960
throw BinderException("json_serialize_sql: 'skip_null' argument must be a boolean");
6061
}
6162
skip_if_null = BooleanValue::Get(ExpressionExecutor::EvaluateScalar(context, *arg));
62-
} else if (arg->alias == "skip_empty") {
63+
} else if (alias == "skip_empty") {
6364
if (arg->return_type.id() != LogicalTypeId::BOOLEAN) {
6465
throw BinderException("json_serialize_sql: 'skip_empty' argument must be a boolean");
6566
}
6667
skip_if_empty = BooleanValue::Get(ExpressionExecutor::EvaluateScalar(context, *arg));
67-
} else if (arg->alias == "format") {
68+
} else if (alias == "format") {
6869
if (arg->return_type.id() != LogicalTypeId::BOOLEAN) {
6970
throw BinderException("json_serialize_sql: 'format' argument must be a boolean");
7071
}
7172
format = BooleanValue::Get(ExpressionExecutor::EvaluateScalar(context, *arg));
72-
} else if (arg->alias == "skip_default") {
73+
} else if (alias == "skip_default") {
7374
if (arg->return_type.id() != LogicalTypeId::BOOLEAN) {
7475
throw BinderException("json_serialize_sql: 'skip_default' argument must be a boolean");
7576
}
7677
skip_if_default = BooleanValue::Get(ExpressionExecutor::EvaluateScalar(context, *arg));
7778
} else {
78-
throw BinderException(StringUtil::Format("json_serialize_sql: Unknown argument '%s'", arg->alias));
79+
throw BinderException(StringUtil::Format("json_serialize_sql: Unknown argument '%s'", alias));
7980
}
8081
}
8182
return make_uniq<JsonSerializeBindData>(skip_if_null, skip_if_empty, skip_if_default, format);

src/duckdb/extension/parquet/parquet_extension.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -1586,7 +1586,7 @@ static vector<unique_ptr<Expression>> ParquetWriteSelect(CopyToSelectInput &inpu
15861586
for (auto &expr : input.select_list) {
15871587

15881588
const auto &type = expr->return_type;
1589-
const auto &name = expr->alias;
1589+
const auto &name = expr->GetAlias();
15901590

15911591
// Spatial types need to be encoded into WKB when writing GeoParquet.
15921592
// But dont perform this conversion if this is a EXPORT DATABASE statement
@@ -1597,7 +1597,7 @@ static vector<unique_ptr<Expression>> ParquetWriteSelect(CopyToSelectInput &inpu
15971597
wkb_blob_type.SetAlias("WKB_BLOB");
15981598

15991599
auto cast_expr = BoundCastExpression::AddCastToType(context, std::move(expr), wkb_blob_type, false);
1600-
cast_expr->alias = name;
1600+
cast_expr->SetAlias(name);
16011601
result.push_back(std::move(cast_expr));
16021602
any_change = true;
16031603
}
@@ -1609,7 +1609,7 @@ static vector<unique_ptr<Expression>> ParquetWriteSelect(CopyToSelectInput &inpu
16091609

16101610
// Cast the column to the new type
16111611
auto cast_expr = BoundCastExpression::AddCastToType(context, std::move(expr), new_type, false);
1612-
cast_expr->alias = name;
1612+
cast_expr->SetAlias(name);
16131613
result.push_back(std::move(cast_expr));
16141614
any_change = true;
16151615
}
@@ -1622,7 +1622,7 @@ static vector<unique_ptr<Expression>> ParquetWriteSelect(CopyToSelectInput &inpu
16221622
});
16231623

16241624
auto cast_expr = BoundCastExpression::AddCastToType(context, std::move(expr), new_type, false);
1625-
cast_expr->alias = name;
1625+
cast_expr->SetAlias(name);
16261626
result.push_back(std::move(cast_expr));
16271627
any_change = true;
16281628
}

src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ void DuckTableEntry::UndoAlter(ClientContext &context, AlterInfo &info) {
243243
}
244244

245245
static void RenameExpression(ParsedExpression &expr, RenameColumnInfo &info) {
246-
if (expr.type == ExpressionType::COLUMN_REF) {
246+
if (expr.GetExpressionType() == ExpressionType::COLUMN_REF) {
247247
auto &colref = expr.Cast<ColumnRefExpression>();
248248
if (colref.column_names.back() == info.old_name) {
249249
colref.column_names.back() = info.new_name;

src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ string TableCatalogEntry::ColumnsToSQL(const ColumnList &columns, const vector<u
148148
if (column_type.id() != LogicalTypeId::ANY) {
149149
// We artificially add a cast if the type is specified, need to strip it
150150
auto &expr = generated_expression.get();
151-
D_ASSERT(expr.type == ExpressionType::OPERATOR_CAST);
151+
D_ASSERT(expr.GetExpressionType() == ExpressionType::OPERATOR_CAST);
152152
auto &cast_expr = expr.Cast<CastExpression>();
153153
D_ASSERT(cast_expr.cast_type.id() == column_type.id());
154154
generated_expression = *cast_expr.child;

src/duckdb/src/common/error_data.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ void ErrorData::AddQueryLocation(QueryErrorContext error_context) {
137137
}
138138

139139
void ErrorData::AddQueryLocation(const ParsedExpression &ref) {
140-
AddQueryLocation(ref.query_location);
140+
AddQueryLocation(ref.GetQueryLocation());
141141
}
142142

143143
void ErrorData::AddQueryLocation(const TableRef &ref) {

src/duckdb/src/common/exception.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -169,11 +169,11 @@ ExceptionType Exception::StringToExceptionType(const string &type) {
169169
}
170170

171171
unordered_map<string, string> Exception::InitializeExtraInfo(const Expression &expr) {
172-
return InitializeExtraInfo(expr.query_location);
172+
return InitializeExtraInfo(expr.GetQueryLocation());
173173
}
174174

175175
unordered_map<string, string> Exception::InitializeExtraInfo(const ParsedExpression &expr) {
176-
return InitializeExtraInfo(expr.query_location);
176+
return InitializeExtraInfo(expr.GetQueryLocation());
177177
}
178178

179179
unordered_map<string, string> Exception::InitializeExtraInfo(const QueryErrorContext &error_context) {

src/duckdb/src/common/exception/binder_exception.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ BinderException BinderException::NoMatchingFunction(const string &name, const ve
4545
}
4646

4747
BinderException BinderException::Unsupported(ParsedExpression &expr, const string &message) {
48-
auto extra_info = Exception::InitializeExtraInfo("UNSUPPORTED", expr.query_location);
48+
auto extra_info = Exception::InitializeExtraInfo("UNSUPPORTED", expr.GetQueryLocation());
4949
return BinderException(message, extra_info);
5050
}
5151

src/duckdb/src/common/hive_partitioning.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ GetKnownColumnValues(const string &filename, const HivePartitioningFilterInfo &f
5151
static void ConvertKnownColRefToConstants(ClientContext &context, unique_ptr<Expression> &expr,
5252
const unordered_map<column_t, PartitioningColumnValue> &known_column_values,
5353
idx_t table_index) {
54-
if (expr->type == ExpressionType::BOUND_COLUMN_REF) {
54+
if (expr->GetExpressionType() == ExpressionType::BOUND_COLUMN_REF) {
5555
auto &bound_colref = expr->Cast<BoundColumnRefExpression>();
5656

5757
// This bound column ref is for another table

src/duckdb/src/execution/aggregate_hashtable.cpp

+16-2
Original file line numberDiff line numberDiff line change
@@ -627,10 +627,17 @@ idx_t GroupedAggregateHashTable::FindOrCreateGroupsInternal(DataChunk &groups, V
627627
// and precompute the hash salts for faster comparison below
628628
const auto ht_offsets = FlatVector::GetData<uint64_t>(state.ht_offsets);
629629
const auto hash_salts = FlatVector::GetData<hash_t>(state.hash_salts);
630+
631+
// We also compute the occupied count, which is essentially useless.
632+
// However, this loop is branchless, while the main lookup loop below is not.
633+
// So, by doing the lookups here, we better amortize cache misses.
634+
idx_t occupied_count = 0;
630635
for (idx_t r = 0; r < chunk_size; r++) {
631636
const auto &hash = hashes[r];
632-
ht_offsets[r] = ApplyBitMask(hash);
633-
D_ASSERT(ht_offsets[r] == hash % capacity);
637+
auto &ht_offset = ht_offsets[r];
638+
ht_offset = ApplyBitMask(hash);
639+
occupied_count += entries[ht_offset].IsOccupied(); // Lookup
640+
D_ASSERT(ht_offset == hash % capacity);
634641
hash_salts[r] = ht_entry_t::ExtractSalt(hash);
635642
}
636643

@@ -671,6 +678,13 @@ idx_t GroupedAggregateHashTable::FindOrCreateGroupsInternal(DataChunk &groups, V
671678
}
672679
}
673680

681+
if (DUCKDB_UNLIKELY(occupied_count > new_entry_count + need_compare_count)) {
682+
// We use the useless occupied_count we summed above here so the variable is used,
683+
// and the compiler cannot optimize away the vectorized lookups above. This should never be triggered.
684+
throw InternalException("Internal validation failed in GroupedAggregateHashTable");
685+
}
686+
occupied_count = 0; // Have to set to 0 for next iterations
687+
674688
if (new_entry_count != 0) {
675689
// Append everything that belongs to an empty group
676690
optional_ptr<PartitionedTupleData> data;

src/duckdb/src/execution/column_binding_resolver.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -156,13 +156,13 @@ unique_ptr<Expression> ColumnBindingResolver::VisitReplace(BoundColumnRefExpress
156156
// in verification mode
157157
return nullptr;
158158
}
159-
return make_uniq<BoundReferenceExpression>(expr.alias, expr.return_type, i);
159+
return make_uniq<BoundReferenceExpression>(expr.GetAlias(), expr.return_type, i);
160160
}
161161
}
162162
// LCOV_EXCL_START
163163
// could not bind the column reference, this should never happen and indicates a bug in the code
164164
// generate an error message
165-
throw InternalException("Failed to bind column reference \"%s\" [%d.%d] (bindings: %s)", expr.alias,
165+
throw InternalException("Failed to bind column reference \"%s\" [%d.%d] (bindings: %s)", expr.GetAlias(),
166166
expr.binding.table_index, expr.binding.column_index,
167167
LogicalOperator::ColumnBindingsToString(bindings));
168168
// LCOV_EXCL_STOP

src/duckdb/src/execution/expression_executor.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ void ExpressionExecutor::Verify(const Expression &expr, Vector &vector, idx_t co
141141

142142
unique_ptr<ExpressionState> ExpressionExecutor::InitializeState(const Expression &expr,
143143
ExpressionExecutorState &state) {
144-
switch (expr.expression_class) {
144+
switch (expr.GetExpressionClass()) {
145145
case ExpressionClass::BOUND_REF:
146146
return InitializeState(expr.Cast<BoundReferenceExpression>(), state);
147147
case ExpressionClass::BOUND_BETWEEN:
@@ -191,7 +191,7 @@ void ExpressionExecutor::Execute(const Expression &expr, ExpressionState *state,
191191
"ExpressionExecutor::Execute called with a result vector of type %s that does not match expression type %s",
192192
result.GetType(), expr.return_type);
193193
}
194-
switch (expr.expression_class) {
194+
switch (expr.GetExpressionClass()) {
195195
case ExpressionClass::BOUND_BETWEEN:
196196
Execute(expr.Cast<BoundBetweenExpression>(), state, sel, count, result);
197197
break;
@@ -235,7 +235,7 @@ idx_t ExpressionExecutor::Select(const Expression &expr, ExpressionState *state,
235235
}
236236
D_ASSERT(true_sel || false_sel);
237237
D_ASSERT(expr.return_type.id() == LogicalTypeId::BOOLEAN);
238-
switch (expr.expression_class) {
238+
switch (expr.GetExpressionClass()) {
239239
#ifndef DUCKDB_SMALLER_BINARY
240240
case ExpressionClass::BOUND_BETWEEN:
241241
return Select(expr.Cast<BoundBetweenExpression>(), state, sel, count, true_sel, false_sel);

src/duckdb/src/execution/expression_executor/execute_cast.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@ void ExpressionExecutor::Execute(const BoundCastExpression &expr, ExpressionStat
3333
if (expr.try_cast) {
3434
string error_message;
3535
CastParameters parameters(expr.bound_cast.cast_data.get(), false, &error_message, lstate);
36-
parameters.query_location = expr.query_location;
36+
parameters.query_location = expr.GetQueryLocation();
3737
expr.bound_cast.function(child, result, count, parameters);
3838
} else {
3939
// cast it to the type specified by the cast expression
4040
D_ASSERT(result.GetType() == expr.return_type);
4141
CastParameters parameters(expr.bound_cast.cast_data.get(), false, nullptr, lstate);
42-
parameters.query_location = expr.query_location;
42+
parameters.query_location = expr.GetQueryLocation();
4343
expr.bound_cast.function(child, result, count, parameters);
4444
}
4545
}

src/duckdb/src/execution/expression_executor/execute_comparison.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ void ExpressionExecutor::Execute(const BoundComparisonExpression &expr, Expressi
2929
Execute(*expr.left, state->child_states[0].get(), sel, count, left);
3030
Execute(*expr.right, state->child_states[1].get(), sel, count, right);
3131

32-
switch (expr.type) {
32+
switch (expr.GetExpressionType()) {
3333
case ExpressionType::COMPARE_EQUAL:
3434
VectorOperations::Equals(left, right, result, count);
3535
break;
@@ -357,7 +357,7 @@ idx_t ExpressionExecutor::Select(const BoundComparisonExpression &expr, Expressi
357357
Execute(*expr.left, state->child_states[0].get(), sel, count, left);
358358
Execute(*expr.right, state->child_states[1].get(), sel, count, right);
359359

360-
switch (expr.type) {
360+
switch (expr.GetExpressionType()) {
361361
case ExpressionType::COMPARE_EQUAL:
362362
return VectorOperations::Equals(left, right, sel, count, true_sel, false_sel);
363363
case ExpressionType::COMPARE_NOTEQUAL:

0 commit comments

Comments
 (0)