@@ -834,3 +834,37 @@ EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i % '{}';
834834(2 rows)
835835
836836DROP INDEX idx_array;
837+ /*
838+ * Check ordering using distance operator
839+ */
840+ CREATE TABLE test_array_order (
841+ i int2[]
842+ );
843+ \copy test_array_order(i) from 'data/rum_array.data';
844+ CREATE INDEX idx_array_order ON test_array_order USING rum (i rum_anyarray_ops);
845+ EXPLAIN (COSTS OFF)
846+ SELECT *, i <=> '{51}' from test_array_order WHERE i @> '{23,20}' order by i <=> '{51}';
847+ QUERY PLAN
848+ ------------------------------------------------------
849+ Index Scan using idx_array_order on test_array_order
850+ Index Cond: (i @> '{23,20}'::smallint[])
851+ Order By: (i <=> '{51}'::smallint[])
852+ (3 rows)
853+
854+ SELECT *, i <=> '{51}' from test_array_order WHERE i @> '{23,20}' order by i <=> '{51}';
855+ i | ?column?
856+ ---------------------+------------------
857+ {20,23,51} | 1.73205080756888
858+ {33,51,20,77,23,65} | 2.44948974278318
859+ {23,76,34,23,2,20} | Infinity
860+ {20,60,45,23,29} | Infinity
861+ {23,89,38,20,40,95} | Infinity
862+ {23,20,72} | Infinity
863+ {73,23,20} | Infinity
864+ {6,97,20,89,23} | Infinity
865+ {20,98,30,23,1,66} | Infinity
866+ {57,23,39,46,50,20} | Infinity
867+ {81,20,26,22,23} | Infinity
868+ {18,23,10,90,15,20} | Infinity
869+ (12 rows)
870+
0 commit comments