Skip to content


Choose a tag to compare
@bluestreak01 bluestreak01 released this 22 Mar 17:41
· 54 commits to master since this release

馃尭 QuestDB 7.4 Release Notes

Ahh, Spring! Sunshine, flowers, all that nice stuff.

As the wheels of the seasons turn, so to the wheels of the applications we're all busy building.

Hopefully good things bloom for us all.

QuestDB is pleased to release version 7.4!

As you've come to expect, this release further improves core database performance. Also as per usual, several bugs and rough edges have been addressed. In important addition, there are note-able breaking changes that will provide a smoother overall experience and set us up well for future changes. Please address them prior to upgrade, and reach out to us if you run into any issues.

鈿狅笍 New Features with breaking changes

  • SAMPLE BY queries now use ALIGN TO CALENDAR by default. As such, if you're using SAMPLE BY and expecting ALIGN TO FIRST OBSERVATION, you'll need to update your queries to specify that syntax.

  • Java client: The ILP Sender used in our first-party Java client now requires an explicit selection of Transport, (HTTP or TCP) for enhanced reliability and clarity in data ingestion workflows. You will need to pass this value forward. See the PR for more information. If you do not use the Java client, but use another language client, see your respective language client repository and update if needed.

  • CREATE TABLE AS and INSERT INTO SELECT statements now operate non-atomically and are batched by default. If you require an atomic table, you can now use the very powerful sounding: CREATE ATOMIC TABLE. For more information, checkout the docs.

馃殌 Performance Improvements

This release improves parallel GROUP BY query performance and also makes SAMPLE BY queries more efficient. In addition, we've reduced thread-local allocator overhead in single-threaded GROUP BY & SAMPLE BY queries. The first/last aggregate functions for string columns have also been optimized.

馃悰 Bug Fixes

  • Resolved issues leading to segmentation faults and incorrect results in certain SQL queries involving GROUP BY and SAMPLE BY clauses.
  • Addressed a bug that could cause a table to be omitted from snapshots after significant DDL changes.
  • Fixed HTTP request handling to prevent rejections when content-length is set to 0.
  • Solved potential TLS handshake stalls on MacOS.
  • Corrected the behavior of altering tables to add indexes that could inadvertently remove deduplication keys.
  • Eliminated a crash during ingestion and various other stability issues.

What's Changed

  • fix(sql): potential incorrect results in non-keyed parallel GROUP BY query by @puzpuzpuz in #4234
  • fix(sql): segfault when running SAMPLE BY query with index-based filter and last/first functions by @puzpuzpuz in #4233
  • fix(core): fix an issue where a table was not being included in the snapshot due to significant DDL changes being applied. by @ideoma in #4245
  • fix(http): fix rejects of HTTP GET requests when content-length set to 0 by @ideoma in #4242
  • fix(core): TLS handshake might occasionally get stuck on MacOS by @jerrinot in #4269
  • fix(sql): fix incorrect unordered map creation check by @puzpuzpuz in #4255
  • perf(sql): parallel GROUP BY support for first/last functions by @puzpuzpuz in #4267
  • fix(sql): fix altering table to add index can remove dedup key by @ideoma in #4270
  • feat(sql): parallel sample by implementation by @bluestreak01 in #4259
  • perf(sql): speed up first/last aggregate functions for string columns by @puzpuzpuz in #4276
  • fix(sql): fix a bug in indexed symbol comparison by @mtopolnik in #4273
  • fix(core): fix wal table is suspended after invalid drop partition SQL by @ideoma in #4272
  • fix(core): fix double-free in text loader by @bluestreak01 in #4278
  • perf(sql): avoid redundant parsing of UUID bind variables by @puzpuzpuz in #4281
  • feat(sql): breaking change馃挜 - change default behaviour of SAMPLE BY to ALIGN TO CALENDAR instead of ALIGN TO FIRST OBSERVATION by @nwoolmer in #4277
  • fix(core): fix possible crash during ingestion (fuzz) by @mtopolnik in #4286
  • fix(sql): qualified names in ORDER BY join queries no longer cause AssertionError by @nwoolmer in #4274
  • perf(sql): remove thread-local allocator access overhead in single-threaded GROUP BY/SAMPLE BY queries by @puzpuzpuz in #4271
  • feat(ilp): breaking change馃挜 - ILP Sender requires explicit Transport selection by @jerrinot in #4293
  • fix(core): fix ignored JVM arguments in AMI by @petr-tichy in #4258
  • fix(http): send http timeout response instead of disconnect on long csv export by @ideoma in #4300
  • feat(sql): breaking change馃挜 - change default behaviour of CREATE TABLE AS/INSERT INTO SELECT statements to be non-atomic and batched by @nwoolmer in #4287
  • fix(sql): fix potentially incorrect values produced by LPad/RPad functions by @eugenels in #4327
  • fix(sql): fix ILIKE for upper case non-ASCII patterns by @puzpuzpuz in #4321
  • fix(sql): fix occasional failures with first()/last()/first_not_null()/last_not_null() direct string function by @jerrinot in #4324

New Contributors

Full Changelog: 7.3.10...7.4.0