github questdb/questdb 4.0.0

latest releases: 7.4.2, 7.4.1, 7.4.0...
4 years ago

Welcome to QuestDB 4.0.0 Release Notes

Before you continue, some keywords we used and their meaning:

CAIRO - storage engine
GRIFFIN - SQL engine
STD - QuestDB standard libraries

Whats new?

  • PostgresSQL wire server implementation (BETA)

  • GRIFFIN: new algo for sample by .. fill none without key. It executes a little faster than generic algo.

  • GRIFFIN: order by implementation for cursors without random access to rows.

  • GRIFFIN: group by implementation

  • GRIFFIN: support multiple columns in latest by clause

  • GRIFFIN: renamed to_char for date and timestamp to to_str to make them easier to find

  • GRIFFIN: optimised and and or operators to recognise constant conditions better and avoid unnecessary data processing.

  • GRIFFIN: = implementation for SYMBOL = CHAR and STRING = CHAR

  • GRIFFIN: 'sum' performance optimisation

  • Network: ability to set multicast TTL and bind port for unicast

  • GRIFFIN: "insert into ... values" implementation

  • GRIFFIN: implementation of 'select count() from table' that would use result of base.size() when its available. This speed up exploratory 'count()' queries dramatically

  • GRIFFIN: UNION and UNION ALL implementations and tests

  • GRIFFIN: "splice join" implementation

  • GRIFFIN: alter table drop column SQL implementation

  • GRIFFIN: SQL limit implementation

  • GRIFFIN: INNER, OUTER, AS OF join implementation

  • CAIRO: "remove partition" API on TableWriter

  • CAIRO: new LONG256 data type

  • STD: ARM64 Linux support and binary

  • HTTP server implementation. The server is able to send and receive unlimited amount of data from and to data store.

  • STD: Os.currentTimeNanos() system clock in nanosecond resolution (not to be confused with System.nanoTime())

  • STD: (network) set/get TCP_NODELAY

  • STD: (network) implementation of interrupt for blocking accept()

  • STD: (network) bridge to native IP_MULTICAST_LOOP and IP_MULTICAST_IF

  • STD: (network) connect() and configureNoLinger() bridges

  • STD: (network) SO_REUSEADDR and SO_REUSEPORT bridges

  • STD: (log) implemented log writer that can roll files on size and/or date.

  • LineProtoSender can now be bound to a specific interface. It also receives IP addresses as inti n order to offload dealing with address parsing errors somewhere else.

  • STD: (threading) available() method is made available only on SP- and SC- sequences. available() is new to SPSequence and allows bulk publishing and enables higher queue throughput STD: Worker can have CPU affinity now

Whats changed?

  • new top level package name! This is a breaking change. We wanted to make package name consistent with our product web site.

What did we fix?

  • logging OS error code whenever close(fd) fails.
  • null for symbol value now corresponds to null for int. This removes unnecessary complexity around implementing getInt()
  • fixed transactional behaviour of TableWriter.truncate(). TableReader will now process this event correctly.
  • CAIRO: TableWriter maintains minTimestamp so that TableReader doesn't have to count directories to determine data interval
  • CAIRO: TableReader no longer relies on partition directories to be removed in order to remove logical data chunk. This is necessary for Windows where open files cannot be removed.
  • CAIRO: ByteSequence could allow reading beyond the size of the blob.
  • get/set lastModified on Windows could set incorrect time
  • fixed TextImportProcessor resume function
  • Files.exists() does not use Files.getLastModified() anymore
  • network send() and recv() on Linux did not handle errors correctly, which sometimes results in broken wire protocols.
  • Numbers.parseInt() could overflow without throwing exception
  • Removed garbage-generating lambdas.
  • CAIRO: SymbolTable reload could produce an exception

Don't miss a new questdb release

NewReleases is sending notifications on new releases.