3.0.0
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
andclippy
. - 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 thechrono_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 eitherTimestampNanos
orTimestampMicros
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 acceptedstd::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
andTimestampMicros
types support new conversion "constructor" methods that takestd::time::SystemTime
orchrono::DateTime
(if thechrono_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
andline_sender_buffer_at
functions are now removed. Replacements:line_sender_buffer_column_ts_micros
(equivalent to old function) andline_sender_buffer_column_ts_nanos
.line_sender_buffer_at_nanos
(equivalent to old function) andline_sender_buffer_at_micros
.
- You can get the current system time via the new
line_sender_now_micros
andline_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 ofquestdb::ilp
. - The
.column()
and.at()
methods can now accept bothtimestamp_nanos
andtimestamp_micros
- These same methods no longer accept
std::chrono::time_point
, but you can still pass in atime_point
by first creating atimestamp_nanos
ortimestamp_micros
object from it first. - You can get the current system time via the new
timestamp_micros::now()
andtimestamp_nanos::now()
static "constructor" functions.
Full Changelog: 2.1.3...3.0.0