Skip to content

3.0.0

Compare
Choose a tag to compare
@amunra amunra released this 22 Sep 16:20
· 26 commits to main since this release
fa10c59

What's Changed

The new release 3.0 brings a number of minor improvements and some (small) breaking API changes.

  • Fixed a bug where timestamp columns could not accept values before Jan 1st 1970 UTC.
  • TCP connections now use SO_KEEPALIVE. This should ensure that connections don't drop after a period of inactivity.
  • Upgraded dependencies to newer library versions. This also includes the latest webpki-roots crate.
  • Disabled compiling tests and examples in the default built from CMake (C and C++) reducing the amount of code that gets built when using the questdb client as a dependency: These are now hidden behind an option. Should improve compile times.
  • Disabled code generation of additional tests in the default build. This should fix some reported built time issues and improve compile times.
  • Updated to the newer version of the CMake corrosion library to compile the Rust code from CMake.
  • Fixed a Windows build linker issue. This was introduced as the dependencies were not pinned.
  • Pinned the dependencies so builds are more reproducible, avoiding issues like the aforementioned linker error.
  • General code cleanup in Rust with fmt and clippy.
  • System tests now use the latest QuestDB version: 7.3.2.
  • Updated documentation to emphasize good practices.
  • Improvements in timestamp handling.
  • In Rust, optional support for chrono::DateTime via the chrono_timestamp feature.
  • New APIs to get the current timestamp as micros or nanos in Rust, C and C++.

Breaking Changes

Here are the changes that may require some minor code changes.
This release does not change the minimum supported QuestDB server version.

Rust

  • The .at(..) and .column_ts(..) methods now can take either TimestampNanos or TimestampMicros timestamps, depending on what is most convenient. It should be noted that - as of writing - QuestDB stores (regardless) all timestamps as micros. This statement holds true also for the designated timestamp.
  • In earlier versions, the .at(..) and .column_ts(..) methods also accepted std::time::SystemTime. This is no longer the case, as it cause confusion on the precision that was being used for the conversion.
  • To compensate, both TimestampNanos and TimestampMicros types support new conversion "constructor" methods that take std::time::SystemTime or chrono::DateTime (if the chrono_timestamp feature is enabled).

C

  • The include has been renamed from #include <questdb/ilp/line_sender.h> to #include <questdb/ingress/line_sender.h>.
  • The line_sender_buffer_column_ts and line_sender_buffer_at functions are now removed. Replacements:
    • line_sender_buffer_column_ts_micros (equivalent to old function) and line_sender_buffer_column_ts_nanos.
    • line_sender_buffer_at_nanos (equivalent to old function) and line_sender_buffer_at_micros.
  • You can get the current system time via the new line_sender_now_micros and line_sender_now_nanos functions.

C++

  • The include has been renamed from #include <questdb/ilp/line_sender.hpp> to #include <questdb/ingress/line_sender.hpp>.
  • The new namespace is questdb::ingress instead of questdb::ilp.
  • The .column() and .at() methods can now accept both timestamp_nanos and timestamp_micros
  • These same methods no longer accept std::chrono::time_point, but you can still pass in a time_point by first creating a timestamp_nanos or timestamp_micros object from it first.
  • You can get the current system time via the new timestamp_micros::now() and timestamp_nanos::now() static "constructor" functions.

Full Changelog: 2.1.3...3.0.0