# Manticore Search 28.6.6: UUID document IDs, ordered GROUP_CONCAT(), and 16 fixes

Manticore Search 28.6.6 adds UUID document IDs for real-time tables and ordered, limited GROUP_CONCAT(), plus 16 fixes across backups, replication, query processing, SQL compatibility, and secondary indexes.

Manticore Search 28.6.6 has been released. The headline additions are UUID document IDs for real-time tables and ordered, limited `GROUP_CONCAT()` for grouped queries. The release also includes 16 fixes for backups, replication, query processing, SQL compatibility, and secondary indexes.

This post covers everything shipped from **28.4.5 through 28.6.6**.

---

## Upgrade notes

There are no new mandatory data migrations in this release. UUID IDs are an opt-in table definition: existing numeric-ID tables keep working as they are. If you want UUID identifiers, create a real-time table with `id uuid`; `ALTER TABLE` cannot convert an existing table between numeric and UUID IDs.

Two fixes are particularly useful for production installations. Successful backups now always unfreeze real-time tables when they finish (previously in rare cases they didn't), rather than leaving writes blocked. And authenticated replication can again add an existing populated RT table with `ALTER CLUSTER ... ADD`.

---

## UUID document IDs for real-time tables

Applications often already have UUID identifiers from the system of record. Until now, using them with Manticore Search meant maintaining a separate numeric ID mapping. Real-time tables can now use [UUID document IDs](https://manual.manticoresearch.com/Creating_a_table/Data_types#UUID-document-IDs) directly:

```sql
CREATE TABLE products_uuid(id uuid, title text, price int);
```

Manticore accepts an explicit UUID string, or generates one when `id` is omitted from an insert or replace. UUID equality and `IN` filters work in queries, and UUID IDs can be used with `REPLACE`, `UPDATE`, and `DELETE`.

This is currently a real-time-table capability, including columnar and replicated RT tables. Plain, percolate, and sharded tables continue to use their existing ID models.

## Ordered and limited GROUP_CONCAT()

Grouped results often need a compact preview of the most relevant values in each group. `GROUP_CONCAT()` can now sort values and retain only the requested number of them in explicit SQL `GROUP BY` queries:

```sql
SELECT category,
       GROUP_CONCAT(title ORDER BY price DESC SEPARATOR ', ' LIMIT 3)
FROM products
GROUP BY category;
```

The new `ORDER BY`, `SEPARATOR`, and `LIMIT` options let the query return the top values in the requested order instead of concatenating an arbitrary-sized set and sorting it again in application code. See the [GROUP_CONCAT() reference](https://manual.manticoresearch.com/Searching/Grouping#GROUP_CONCAT%28field%29) for the full syntax.

---

## Safer table, backup, and cluster maintenance

A few changes remove failures that tend to appear during routine operations rather than ordinary searches:

- [Manticore Backup](https://github.com/manticoresoftware/manticoresearch-backup) 1.10.2 fixes a path where a successful backup could leave an RT table frozen and future writes blocked.
- Authenticated replication state transfer now works when `ALTER CLUSTER ... ADD` is used to add a populated RT table.
- RT lifecycle operations now remove obsolete external files after `ALTER`, `TRUNCATE`, chunk removal, and optimization. The same release preserves Jieba settings during unrelated `ALTER TABLE` operations and rejects unsupported effective setting changes explicitly.
- [OPTIMIZE TABLE](https://manual.manticoresearch.com/Securing_and_compacting_a_table/Compacting_a_table#OPTIMIZE-TABLE) accepts qualified `system.<table>` names, so physical sharded tables can be optimized.

---

## Query processing and client compatibility

The fixes are broad, but several stand out for busy search services:

- [CALL SNIPPETS](https://manual.manticoresearch.com/Searching/Highlighting#CALL-SNIPPETS) no longer spends seconds simplifying some complex boolean queries before highlighting them when `boolean_simplify` is enabled.
- Long exact and phrase-like queries no longer risk a query-stack underestimate that could corrupt memory or crash `searchd`; repeated keyword statistics are also deduplicated for `local_df` work on multi-chunk RT and distributed tables.
- The updated columnar library fixes a StreamVByte decoder over-read that could crash secondary-index queries, including `GROUP BY` on JSON fields. `indextool --check` now reports corrupted secondary-index files instead of crashing.
- `USER()` remains usable after `USER` became an authentication keyword, restoring MySQL client `status` command compatibility. `SHOW INDEX ... STATUS` is also protected from a concurrent percentile-calculation race.
- Document-ID `IN(...)` filters correctly accept valid unsigned 64-bit IDs above `Long.MAX_VALUE`, and a `LEFT JOIN` with multiple `FACET` clauses no longer crashes.

The release also fixes a SphinxQL SSL connection-handling race that could consume workers at 100% CPU, and fixes PHP API response parsing and the Ruby API fixture so valid response chunks ending in `"0"` are preserved.

For the complete list, see the [Version 28.6.6 changelog](https://manual.manticoresearch.com/Changelog#Version-28.6.6).

---

## Get Manticore Search 28.6.6

Install or upgrade Manticore Search with the [installation guide](/install/). If you are upgrading an authenticated or replicated deployment, review the existing [authentication rollout checklist](/blog/manticore-auth-migration-hardening-checklist/) before changing production traffic.

## Need help or want to connect?

- Join our [Slack](https://slack.manticoresearch.com)
- Visit the [Forum](https://forum.manticoresearch.com)
- Report issues or suggest features on [GitHub](https://github.com/manticoresoftware/manticoresearch/issues)
- Email us at `contact@manticoresearch.com`
