diff --git a/mysql-test/main/vector2.result b/mysql-test/main/vector2.result index 73125c1224c..be0f0e8315d 100644 --- a/mysql-test/main/vector2.result +++ b/mysql-test/main/vector2.result @@ -356,3 +356,16 @@ a vec_totext(v) 8 [33] 9 [33] drop table t1; +# +# MDEV-35296 DESC does not work in ORDER BY with vector key +# +create table t (v vector(1) not null, vector(v)); +insert into t select vec_fromtext(concat('[',seq,']')) FROM seq_1_to_10; +select vec_totext(v) from t order by vec_distance_euclidean(v,vec_fromtext('[0]')) desc limit 5; +vec_totext(v) +[10] +[9] +[8] +[7] +[6] +drop table t; diff --git a/mysql-test/main/vector2.test b/mysql-test/main/vector2.test index 5e112f8a392..58319b675f5 100644 --- a/mysql-test/main/vector2.test +++ b/mysql-test/main/vector2.test @@ -257,3 +257,11 @@ update t1 set v = vec_fromtext(concat('[33]')) where a <= 15; --sorted_result select a, vec_totext(v) from t1 order by vec_distance_euclidean(v,vec_fromtext('[33]')) limit 25; drop table t1; + +--echo # +--echo # MDEV-35296 DESC does not work in ORDER BY with vector key +--echo # +create table t (v vector(1) not null, vector(v)); +insert into t select vec_fromtext(concat('[',seq,']')) FROM seq_1_to_10; +select vec_totext(v) from t order by vec_distance_euclidean(v,vec_fromtext('[0]')) desc limit 5; +drop table t; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 9d390ebe531..9dda4edd168 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -26486,7 +26486,7 @@ static int test_if_order_by_key(JOIN *join, ORDER *order, TABLE *table, if ((*order->item)->real_item()->type() != Item::FIELD_ITEM) { - if (order->next) + if (order->next || order->direction != ORDER::ORDER_ASC) DBUG_RETURN(0); DBUG_RETURN((*order->item)->part_of_sortkey().is_set(idx));