9.2.3
QuestDB 9.2.3 is a patch release bringing the usual swathe of fixes, performance enhancements, and a few new features. You'll see higher QPS, faster GROUP BY queries, and better performance for high-contention materialized views.
There will be one more release before Christmas, bringing the new WINDOW JOIN syntax. Stay tuned!
For any questions or feedback, please join us on Slack or on Discourse.
See also our prettier release notes page.
Highlights
- Materialized Views
- Faster updates under high contention: views which update frequently (multiple times per second) will now use significantly less resources and have reduced refresh latency.
- Faster historical refreshes: views with very small
SAMPLE BYunits will now refresh much more quickly, especially for historical or full refreshes.
- TTL
- Additional safety checks: TTL will now use
min(maxTimestamp, wallClockTime)as the predicate for dropping old partitions, rather than justmaxTimestamp. This avoids accidental partition drops when erroneous timestamps are written to the table.
- Additional safety checks: TTL will now use
- SQL
- Faster (de)allocations: Memory deallocations have been sped up significantly, with
jemallocnow enabled by default on Linux builds. This particularly helps for reducing query tail latencies. - Faster query compilation: Query parsing performance has been improved by around ~4x. This reduces latency for lightweight and fast-to-execute queries, and maximises concurrent QPS when prepared statements are not used.
- Faster single-key
GROUP BY:GROUP BYqueries that group by a single key will now execute ~2-3x faster.- e.g.
SELECT symbol, count() as count FROM trades GROUP BY symbol ORDER BY count DESC LIMIT 10;
- e.g.
- Faster non-keyed averages: Keyless
GROUP BYqueries will now execute ~1.3x faster.- e.g.
SELECT AVG(price) FROM trades;
- e.g.
- Decimal fills:
SAMPLE BYwithFILLnow properly supports the newDECIMALtype.
- Faster (de)allocations: Memory deallocations have been sped up significantly, with
Changelist
- fix(core): fix missing partition dir on table reader open when writing identical data with dedup by @ideoma in https://github.com/questdb/questdb/pull/6479
- fix(sql): crash when using parallel ORDER BY with LIMIT and JIT filter by @puzpuzpuz in https://github.com/questdb/questdb/pull/6482
- fix(ui): remove line ending declarations from web console assembly descriptor by @emrberk in https://github.com/questdb/questdb/pull/6490
- feat(core): hints for handling histogram out of bounds error for approx_percentile()/approx_median() by @peter007-cmd in https://github.com/questdb/questdb/pull/6446
- perf(sql): use unordered maps only in single-column case by @puzpuzpuz in https://github.com/questdb/questdb/pull/6481
- fix(sql): fix parquet export bug when SQL contains
now()function by @kafka1991 in https://github.com/questdb/questdb/pull/6499 - fix(sql): fix empty result set from limit queries by @bluestreak01 in https://github.com/questdb/questdb/pull/6504
- fix(sql): fix potential crash when
ORDER BYsymbol column added viaALTER TABLE ADD COLUMNby @kafka1991 in https://github.com/questdb/questdb/pull/6505 - fix(sql): improve refresh step estimation for sparse data with small
sample byinterval by @kafka1991 in https://github.com/questdb/questdb/pull/6517 - chore(utils): update async-profiler to 4.2.1 by @jerrinot in https://github.com/questdb/questdb/pull/6473
- fix(core): data corruption after range replace on column top partition by @puzpuzpuz in https://github.com/questdb/questdb/pull/6519
- fix(http): correct HTTP content length for JSON responses by @kafka1991 in https://github.com/questdb/questdb/pull/6520
- perf(core): optimize mat view writing by skipping transactions that are fully replaced by future commits or full refresh (2) by @ideoma in https://github.com/questdb/questdb/pull/6495
- fix(core): fix bad connection state after TLS session initialization failure by @jerrinot in https://github.com/questdb/questdb/pull/6529
- fix(sql): fix potential unexpected exception when parquet file schema changed in
read_parquet()by @kafka1991 in https://github.com/questdb/questdb/pull/6513 - feat(core): use wall clock for TTL to prevent accidental data loss by @bluestreak01 in https://github.com/questdb/questdb/pull/6531
- fix(sql): support for decimal types in group by fill and selected cursor by @RaphDal in https://github.com/questdb/questdb/pull/6532
- fix(sql): not to ignore outer limit if a subquery has a filter and another limit by @glasstiger in https://github.com/questdb/questdb/pull/6533
- perf(sql): reduce query latency from memory deallocation overhead on Linux x86_64 by @jerrinot in https://github.com/questdb/questdb/pull/6477
New Contributors
- @peter007-cmd made their first contribution in https://github.com/questdb/questdb/pull/6446
Full Changelog: https://github.com/questdb/questdb/compare/9.2.2...9.2.3