github questdb/questdb 7.4.2

11 days ago

Choice is essential. But isn't it nice when a clear, happy path emerges?

To that tune, we're pleased to announce QuestDB 7.4.2, with the usual mix of features, fixes and improvements.

In focus this week is the refinement of our updated ingestion clients. Built atop the InfluxDB Line Protocol (ILP) and leveraging HTTP instead of TCP, our clients and core database now offer a primary ingestion path that is robust, responsive and fast. They're available in popular languages, including Rust, Python, Java, Go, C & C++, and more.

It is quicker, cleaner and clearer to both get started and refine.

New Features 🐣

Fresh goods.

  • Added bind variable support for long256 and IPv4 operators, milliseconds and microseconds support to datediff and dateadd.

  • Enabled FILL(LINEAR) to support ALIGN TO CALENDAR.

Performance 🚀

Always a category unto its own.

  • ILP: Optimized data ingestion for tables with a large number of columns.

  • Core: Improved hash table lookup for small string keys and optimized memory usage to reduce OS kills.

  • SQL: Faster SQL COPY and REST API CSV import, optimized binary search corner cases, and fixed the stuck parallel GROUP BY queries via better query timeout handling.

Bug Fixes 🥾

Squished, squashed & kiboshed.

  • ILP: Addressed 'maximum buffer size exceeded' in ILP client and made config adjustments to disable individual flush types and support auto_flush_bytes. also corrected client processing of data received before TLS close_notification.

  • SQL: Fixed incorrect results from lower, upper, substring functions when executed in parallel, erroneous SAMPLE BY behavior mixing asterisks, errors in CASE statements when ELSE branch is missing, incorrect results in GROUP BY queries, and SAMPLE BY queries with functions in the SELECT clause.

    Also fixed a bug for negative upper bound in BETWEEN operator, issues with null string insertions as designated timestamps, and inaccurate double comparisons. Finally, resolved stuck parallel group by queries due to incorrect timeout handling.

  • Core: Addressed a rare segmentation fault during o3 commit of a non-WAL table, potential error rebuilding nascent data index, and incorrect partition size after an update.

New Contributors 🎉

@hoangsvit and @sivukhin made their first contributions. Thanks, both of you. 🙏

Pull requests

  • fix(core): remove table 'lock' file on drop by @ideoma in #4341
  • fix(sql): fix incorrect results returned when executing lower/upper/substring functions in parallel by @puzpuzpuz in #4337
  • fix(sql): SAMPLE BY not to mix multiplication asterisk with wildcard column by @glasstiger in #4351
  • perf(core): improve hash table lookup performance for small string keys such as column names and symbols by @puzpuzpuz in #4348
  • fix(core): rare segfault during o3 commit of a non-wal table by @jerrinot in #4354
  • fix(sql): fix error in some CASE statements when ELSE branch is missing by @bluestreak01 in #4367
  • feat(core): optimise memory usage to reduce OS kills by @ideoma in #4368
  • perf(ilp): optimize ingestion for tables with large number of columns by @puzpuzpuz in #4371
  • fix(ilp): fix 'maximum buffer size exceeded' in ILP client by @jerrinot in #4372
  • fix(sql): bug for negative upper bound (second argument) in BETWEEN operator by @sivukhin in #4375
  • feat(ilp): sender config string can disable individual flush types separately by @jerrinot in #4385
  • feat(ilp): client configuration string supports auto_flush_bytes by @jerrinot in #4391
  • fix(sql): constant in explicit group by should not remove parallel optimisation by @nwoolmer in #4384
  • fix(core): fix potential error rebuilding nascent data index by @bluestreak01 in #4383
  • perf(sql): speed up SQL COPY and REST API CSV import by @puzpuzpuz in #4381
  • feat(sql): add bind variable support for long256 and IPv4 operators by @puzpuzpuz in #4282
  • feat(sql): add milliseconds and microseconds support to datediff by @javier in #4398
  • feat(sql): add milliseconds and microseconds support to dateadd by @javier in #4396
  • fix(http): client to process data received before TLS close_notification by @jerrinot in #4397
  • fix(sql): fix incorrect results returned by GROUP BY queries with int or symbol key by @puzpuzpuz in #4353
  • perf(chore): optimize binary search corner cases by @sivukhin in #4402
  • fix(sql): fix incorrect results for parallel group by with symbol like filter by @puzpuzpuz in #4411
  • fix(sql): internal error when inserting null string as a designated timestamp by @jerrinot in #4408
  • fix(sql): fix stuck parallel group by query due to incorrect query timeout handling by @puzpuzpuz in #4420
  • fix(core): fix possible issue with incorrect partition size after update by @bluestreak01 in #4412
  • fix(sql): fix SAMPLE BY queries with functions in SELECT clause by @ideoma in #4404
  • fix(sql): FILL(LINEAR) now supports ALIGN TO CALENDAR by @nwoolmer in #4392
  • fix(sql): fix stuck parallel group by query due to incorrect query timeout handling by @puzpuzpuz in #4420
  • fix(sql): fix inaccurate double comparison by @bluestreak01 and @eugenels in #4417

New Contributors

Full Changelog: 7.4.0...7.4.2

Don't miss a new questdb release

NewReleases is sending notifications on new releases.