Сортировка внутри GROUP_CONCAT()

Имея запрос вида (пример запроса показан ниже), можно ли как-то сортировать внутри сгруппированных значений? Например как это сделано в MySQL
Чтобы 29216 и 28964 поменялись местами.

MySQL [(none)]> select group_concat(id) as `ids`, groupby() as `group_id` from products_type_1134 where group_id = 114 group by `group_id`;
+-------------+----------+
| ids         | group_id |
+-------------+----------+
| 28964,29216 |      114 |
+-------------+----------+
1 row in set (0.001 sec)

Именно через group_concat() нельзя. Но можно через GROUP N BY и WITHIN GROUP ORDER BY :

snikolaev@dev:~$ docker run --name manticore --rm -d manticoresearch/manticore && docker exec -it manticore mysql && docker stop manticore
1277f54736f7d9b708d9ff5f3a0961cb37a8e2641059f3758c9eb860758ee878
mysql> create table t(f text, group_id int);
mysql> insert into t values(28964,'a',114);
mysql> insert into t values(29216,'a',114);
mysql> select id, groupby() as `group_id` from t where group_id = 114 group 2 by `group_id` within group order by id asc;
+-------+----------+
| id    | group_id |
+-------+----------+
| 28964 |      114 |
| 29216 |      114 |
+-------+----------+
mysql> select id, groupby() as `group_id` from t where group_id = 114 group 2 by `group_id` within group order by id desc;
+-------+----------+
| id    | group_id |
+-------+----------+
| 29216 |      114 |
| 28964 |      114 |
+-------+----------+

На group_concat() WITHIN GROUP ORDER BY, к сожалению, не действует:

mysql> select group_concat(id) as `ids`, groupby() as `group_id` from t where group_id = 114 group by `group_id` within group order by id asc;
+-------------+----------+
| ids         | group_id |
+-------------+----------+
| 29216,28964 |      114 |
+-------------+----------+
mysql> select group_concat(id) as `ids`, groupby() as `group_id` from t where group_id = 114 group by `group_id` within group order by id desc;
+-------------+----------+
| ids         | group_id |
+-------------+----------+
| 29216,28964 |      114 |
+-------------+----------+

Хотя теоретически это было бы полезно в плане функционала (либо же сделать отдельный ORDER BY, как в MySQL), но пока такого функционала нет.

Действует, но немного не так, как ожидается вами. Пример:

MySQL [(none)]> select group_concat(`id`) as `ids`, groupby() as `group_id`, similar.28963 as similar_order from `products_type_1134` where (`similar_order` is not null) group by `group_id` within group order by similar.28963 asc order by `similar_order` asc limit 2; select group_concat(`id`) as `ids`, groupby() as `group_id`, similar.28963 as similar_order from `products_type_1134` where (`similar_order` is not null) group by `group_id` within group order by similar.28963 desc order by `similar_order` asc limit 2;
+-------------+----------+---------------+
| ids         | group_id | similar_order |
+-------------+----------+---------------+
| 28964,29216 |      114 | 0000          |
| 28955       |      105 | 0002          |
+-------------+----------+---------------+
2 rows in set (0.002 sec)

+-------------+----------+---------------+
| ids         | group_id | similar_order |
+-------------+----------+---------------+
| 28964,29216 |      114 | 0001          |
| 28955       |      105 | 0002          |
+-------------+----------+---------------+
2 rows in set (0.001 sec)

MySQL [(none)]> select id, similar.28963 from products_type_1134 where id in (28964,29216);
+-------+---------------+
| id    | similar.28963 |
+-------+---------------+
| 28964 | 0001          |
| 29216 | 0000          |
+-------+---------------+

Обратите внимание на результат колонки similar_order для группы 114 - он разный.

Скажите, пожалуйста, есть ли возможность добавить в план? Если - да, то может есть примерные сроки на реализацию таких фич?

Даже примерных сроков сейчас сказать не могу, к сожалению. Должно быть возможно реализовать нужное поведение через UDF.

Очень полезная опция, если была бы сортировка для GROUP_CONCAT().
Как это сделано для MySQL
GROUP_CONCAT ( [DISTINCT] col_name1 [ORDER BY clause] [SEPARATOR str_val] )

К примеру, такой запрос ниже не сортирует значения для GROUP_CONCAT с учётом WEIGHT()

SELECT GROUP_CONCAT(product_id) as id_list 
FROM my_index
WHERE MATCH('@search *search_key*') 
ORDER BY WEIGHT() DESC

Для решения задачи получается необходимо отказаться от GROUP_CONCAT() и перебирать все записи из запроса для эмуляции функции GROUP_CONCAT(), чтобы получить список значений в нужном порядке.
Рассмотрите пожалуйста добавление такого функционала, спасибо.

есть такой feature request в GitHub#430 - вы можете подписатся там на нотификации, чтобы быть в курсе прогресса