From 472cb7eead599f16a98d4abede0b902fae31dd32 Mon Sep 17 00:00:00 2001 From: Arne Juul Date: Tue, 9 Mar 2021 09:40:57 +0000 Subject: check cell types instead of asserting * cell type may change from input(s) to result (in more cases) in the future. * we will skip these optimizers when cell type changes, just run the generic code instead. --- .../src/vespa/eval/instruction/remove_trivial_dimension_optimizer.cpp | 4 ++-- eval/src/vespa/eval/instruction/sparse_full_overlap_join_function.cpp | 2 +- eval/src/vespa/eval/instruction/sparse_no_overlap_join_function.cpp | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/eval/src/vespa/eval/instruction/remove_trivial_dimension_optimizer.cpp b/eval/src/vespa/eval/instruction/remove_trivial_dimension_optimizer.cpp index bd0534e1d7d..06c3fb886b5 100644 --- a/eval/src/vespa/eval/instruction/remove_trivial_dimension_optimizer.cpp +++ b/eval/src/vespa/eval/instruction/remove_trivial_dimension_optimizer.cpp @@ -30,9 +30,9 @@ RemoveTrivialDimensionOptimizer::optimize(const TensorFunction &expr, Stash &sta const TensorFunction &child = reduce->child(); if (expr.result_type().has_dimensions() && aggr::is_ident(reduce->aggr()) && - is_trivial_dim_list(child.result_type(), reduce->dimensions())) + is_trivial_dim_list(child.result_type(), reduce->dimensions()) && + (expr.result_type().cell_type() == child.result_type().cell_type())) { - assert(expr.result_type().cell_type() == child.result_type().cell_type()); return ReplaceTypeFunction::create_compact(expr.result_type(), child, stash); } } diff --git a/eval/src/vespa/eval/instruction/sparse_full_overlap_join_function.cpp b/eval/src/vespa/eval/instruction/sparse_full_overlap_join_function.cpp index 85ccfd69871..2072555bb3d 100644 --- a/eval/src/vespa/eval/instruction/sparse_full_overlap_join_function.cpp +++ b/eval/src/vespa/eval/instruction/sparse_full_overlap_join_function.cpp @@ -107,12 +107,12 @@ bool SparseFullOverlapJoinFunction::compatible_types(const ValueType &res, const ValueType &lhs, const ValueType &rhs) { if ((lhs.cell_type() == rhs.cell_type()) && + (res.cell_type() == lhs.cell_type()) && is_sparse_like(lhs) && is_sparse_like(rhs) && (res.count_mapped_dimensions() == lhs.count_mapped_dimensions()) && (res.count_mapped_dimensions() == rhs.count_mapped_dimensions())) { assert(is_sparse_like(res)); - assert(res.cell_type() == lhs.cell_type()); return true; } return false; diff --git a/eval/src/vespa/eval/instruction/sparse_no_overlap_join_function.cpp b/eval/src/vespa/eval/instruction/sparse_no_overlap_join_function.cpp index e8e0bc212e0..9c82b1f7bcd 100644 --- a/eval/src/vespa/eval/instruction/sparse_no_overlap_join_function.cpp +++ b/eval/src/vespa/eval/instruction/sparse_no_overlap_join_function.cpp @@ -113,11 +113,11 @@ bool SparseNoOverlapJoinFunction::compatible_types(const ValueType &res, const ValueType &lhs, const ValueType &rhs) { if ((lhs.cell_type() == rhs.cell_type()) && + (res.cell_type() == lhs.cell_type()) && is_sparse_like(lhs) && is_sparse_like(rhs) && (res.count_mapped_dimensions() == (lhs.count_mapped_dimensions() + rhs.count_mapped_dimensions()))) { assert(is_sparse_like(res)); - assert(res.cell_type() == lhs.cell_type()); return true; } return false; -- cgit v1.2.3