2. Change log#

2.1. 3.14.1 - “Seneca” - 01/22/2024#

(From 3.14.0)

  • Protocol version 48

  • [arm64] Optimized several functions to leverage ARM Neon SIMD

  • [compression] Slight improvement in (de)compression speed

  • [daemon] Upsert now properly replaces all duplicates

  • [kernel] Add support for TTL in tables

  • [kernel] General availability of AGGREGATED tables (streaming analytics)

  • [kernel] Overall improvement of insertion performance across the board

  • [linux] Fixed stack trace symbol dump

  • [orderbook] Can now generate order books on a list of timestamps and offsets

  • [orderbook] Significant performance improvement of the Currenex order book engine

  • [orderbook] The account ID column is now properly displayed

  • [query] Add round, ceil, and floor functions

  • [query] Add support for complex ASOF joins across multiple tables

  • [query] Add support for count($timestamp)

  • [query] Add support for interpolation in GROUP BY queries

  • [query] Add support for JSON operators

  • [query] Add support for LEAD() and LAG() for sliding window queries

  • [query] Add support for WHERE IN

  • [query] ASOF now has a consistent behavior when there are NULL values

  • [query] Can now drop a column that has a name made of a single character

  • [query] Columns with different symbol tables can now be compared

  • [query] Fix invalid first() and last() result for certain complex queries

  • [query] Significant improvement for GROUP BY spanning thousands of tables

  • [query] Support composition for correlation

  • [query] Support for HAVING with PIVOT

2.2. 3.14.0 - “Seneca” - 08/28/2023#

(From 3.13.7)

  • Protocol version 48

  • [api] Add a function to trim a single entry

  • [client] Compiler, build, cpu, and allocator are now in the –version output

  • [daemon] Add support for multiple instances over the same S3 bucket (one writer, many readers)

  • [daemon] Add support for short-term credentials for S3 authentication

  • [daemon] Sensitive parameters are now hidden from the log

  • [daemon] Significantly increased S3 backup speed

  • [daemon] Trimming multiple entries is now done in a dedicated background thread

  • [kernel] Fix an issue where old buckets could not be updated after a new column was added to a table

  • [kernel] Trimming a timeseries now includes the root

  • [odbc] Add support for log size limit and rotation

  • [odbc] Log verbosity is now configurable, and the default value has been lowered

  • [orderbook] Currenex ORDERBOOK function is more tolerant of errors

  • [orderbook] Fix a bug related to time ranges and Currenex data

  • [orderbook] Greatly improved the performance of the ORDERBOOK functions for Currenex data

  • [persistence] Reduces the chances for data loss in case of an operating system failure during a trimming operation

  • [persistence] S3 Backups can now be done using multiple threads

  • [query] Initial support for Windowing functions (SQL OVER())

2.3. 3.13.7 - “Seneca” - 04/25/2023#

(From 3.13.6)

  • Protocol version 48

  • [api] Add non-transactional removal in the batch

  • [api] Add a faster, non-transactional, remove

  • [api] Add a function to coalesce batch operations

  • [api] Add support for doubles and timestamps in the batch

  • [api] Fix a performance issue when network issues would occur during a qdb_ts_batch_push

  • [api] Massive performance speed up for large detagging

  • [daemon] Add support for log rotation

  • [daemon] Add statistics for micro indexes

  • [daemon] Bootstrapping peers now accept hostnames

  • [daemon] Cluster trim now properly trims every single key when requested

  • [daemon] Compaction now happens in a dedicated background thread

  • [daemon] If a license is provided, and the license is invalid or expired, the daemon will not start

  • [daemon] Support for selective compaction

  • [python] A file can be specified instead of a string for authentication purposes

  • [query] Doubles and timestamps will no longer be skipped when using FIND() in a WHERE clause

  • [query] Greatly improved AS_TABLES performance

  • [query] Greatly improved the speed of SHOW TABLES for cluster with a large number of tables

  • [query] Improved find performance

  • [query] Improved multi-threaded aggregations performance

  • [query] RSI and MACD now accept a custom number of periods

  • [query] The WHERE clause now accepts $timestamp for more flexibility

  • [shell] Add more context to several error messages

  • [shell] Add support for every single direct command

  • [shell] Add support for key/value operations no doubles, strings, and timestamps in the shell

  • [shell] Performance trace in the shell has more context and information

2.4. 3.13.6 - “Seneca” - 11/28/2022#

(From 3.13.5)

  • Protocol version 48

  • [api] Add support for strings natively in the key-value store

  • [api] Add support for timestamps natively in the key-value store

  • [api] Batch inserts now support upserts

  • [api] Deduplication can now be done only on the timestamp

  • [api] Fix potential race conditions in continuous queries

  • [api] On a failed batch push, will no longer automatically retry

  • [api] Support multithreading of aggregation queries

  • [daemon] All configuration settings can now be passed by the command line, a configuration file, or environment variables

  • [daemon] Better error reporting of invalid configurations

  • [daemon] Can now use custom S3 endpoints

  • [daemon] Greatly improve eviction performance and reliability

  • [daemon] Greatly improve S3 caching performance

  • [daemon] Massive improvement to aggregation performance accross the board

  • [daemon] Statistics snapshots are no longer stored

  • [java] Add support for drop duplicates in the batch writer API

  • [java] Greatly reduced memory footprint of the batch writer

  • [net] Improved batch writer performance

  • [net] New connection pool

  • [persistence] Asynchronous writes will now retry at least once when encountering I/O errors

  • [persistence] Full support for S3 backups

  • [persistence] Writes are now much more resistent to catastrophic failures such as hardware errors and unexpected terminations

  • [python] Add support for PyArrow

  • [query] Add DATETIME support to SELECT

  • [query] Add support for GROUP BY $timestamp

  • [query] Add support for INTERPOLATE with ASOF JOIN RANGE

  • [query] Add support for LOG(x, base), LOG2, and LOG10

  • [query] Add support for POWER, EXP, LN, and SQRT

  • [query] Fix a performance issue when SELECT * expands to a high number of columns

  • [query] Fix CUMSUM() being interpreted as an aggregation with GROUP BY queries

  • [query] Fix several HAVING related bugs

  • [query] Increased the efficiency of ALTER TABLE

  • [query] Support composed functions in HAVING

  • [railgun] Parse timezone information properly when selecting the ISO8601 parser

  • [railgun] Railgun is now statically linked to the Quasar API

  • [railgun] Support for symbol columns

  • [rest] Add a health check function

  • [rest] Add a status page

  • [rest] Increased resilience in low-connectivity environment

  • [rest] Log queries duration

  • [rest] Return a 401 error when the token has expired

  • [rest] Support for Quasar API parallelism

  • [shell] New command to check the status of an ongoing backup

2.5. 3.13.5 - “Seneca” - 7/29/2022#

(From 3.13.4)

  • Protocol version 48

  • [api] Add support for ARRAY_ACCUM results for Apache Arrow conversion

  • [api] Add support for double natively in the key-value store

  • [api] Implement all missing “write” direct API functions

  • [daemon] Change the configuration parameter log_file_time_to_roll from seconds to milliseconds

  • [daemon] Check on startup that the volume complies with license restrictions

  • [daemon] More granular configuration of RocksDB’s column family memory options

  • [net] Add support for ARRAY_ACCUM

  • [net] Improve performance of the batch writer

  • [query] $timestamp columns must now be explicitly selected

  • [query] Add support for PUT (key/value) in queries

  • [query] Extend the support for ASOF and aggregations

  • [query] Fix DESC performance regression introduced in 3.13.4

  • [query] Fix internal error for HAVING with empty columns

  • [query] Further improve HAVING query speed

  • [query] GROUP BY no longer requires a time range

  • [query] Improve DELETE FROM query speed

  • [shell] New “get_full_metadata” shell command to get all versions of an entry

2.6. 3.13.4 - “Seneca” - 7/12/2022#

(From 3.13.3)

  • Protocol version 48

  • [api] Continous queries can now be paced

  • [api] Correctly parse column names starting with “nan”

  • [api] Optimize client-side processing of queries for improved performance

  • [api] Support ORDERBOOK and SLIPPAGE in continuous queries

  • [daemon] Add more asynchronous pipelines statistics

  • [daemon] Better error messages when the CPU is missing required features

  • [daemon] Greatly reduce memory usage and improve eviction heuristics

  • [daemon] Improve the accuracy of memory statistics, and introduce new ones

  • [daemon] Initial support for hot backups

  • [ingress] Support none values when doing “insert deduplicate.”

  • [logging] Logs now use ISO8601 timestamps

  • [net] Add support for continuous queries

  • [net] Improve .NET general compatibility

  • [osx] Improve general compatibility

  • [persistence] Allow for the rotation of RocksDB logs

  • [persistence] Improve default settings for better performance out of the box

  • [persistence] Optimize storage layout to improve lookup of cold data

  • [python] Made API fully zero-copy wherever possible for up to 20X performance improvement

  • [query] Can now RESTRICT TO on multiple columns

  • [query] Enhance ORDERBOOK levels customization

  • [query] Enhance RESTRICT TO syntax to allow for more flexibility

  • [query] Fix corner cases related to the comparison with NULL

  • [query] Greatly improve deduplication performance

  • [query] Greatly improve ORDERBOOK performance

  • [query] Greatly optimize queries with LIMIT statements

  • [query] Make the behavior of first/last/min/max coherent with other aggregations

  • [query] Make the “slope” aggregation work with GROUP BY statements

  • [query] PREWHERE is now applied before RESTRICT TO

  • [query] RESTRICT TO is now applied before the WHERE statement

2.7. 3.13.3 - “Seneca” - 4/4/2022#

(From 3.13.2)

  • Protocol version 48

  • [daemon] Add built-in automatic version check

  • [daemon] Improve performance for very short lived queries

  • [nodejs] Fix several stability issues in the nodejs API

  • [protocol] Improve backward compatibility with new versioning logic

  • [query] Add support for ARRAY_ACCUM

  • [query] Add support for AS_TABLES (virtual tables built on keys)

  • [query] Add support for Coinbase market data in the ORDERBOOK function

  • [query] Add support for Relative Strength Index (RSI)

  • [query] Add support for RESTRICT TO (multi version management)

  • [query] Add support for SLIPPAGE (order book slippage computation)

  • [query] Add support for suffix in FIND

  • [query] Add support for TOP and FULL computation in the ORDERBOOK

  • [query] Fix several minor issues related to moving averages and exponential moving averages

  • [query] Fix subquery bug when parent and child share selected columns

  • [query] Changed the syntax of the ORDERBOOK function

2.8. 3.13.2 - “Seneca” - 2/21/2022#

(From 3.13.1)

Warning

The license format is no longer compatible with previous releases. Please contact Quasar support for an updated license.

  • Protocol version 46

  • [api] Query results can optionally return Apache Arrow structures

  • [api] Remove deprecated bulk inserter

  • [api] Simplify symbol API

  • [api] The batch inserter can optionally accept Apache Arrow structures for input

  • [client] Greatly improve multithreading performance

  • [crypto] Low latency crypto feed handler with native Coinbase support

  • [kernel] Greatly improve cache heuristics for lower I/O usage

  • [query] Add support for “infinite” shard size

  • [query] Add support for escaped characters in quoted strings

  • [query] Add support for Exponential Moving Average (EMA)

  • [query] Add support for Moving Average Convergence Difference (MACD)

  • [query] Add support for ORDERBOOK for real-time order book reconstruction

  • [query] Fix a bug where GROUP BY + WHERE could incorrectly split a range

  • [query] Fix an edge case with last aggregations on certain GROUP BY queries

  • [query] Greatly improve the performance of DELETE WHERE DUPLICATE

  • [query] Greatly increased WHERE performance across the board

  • [security] Add support for transitive permissions on tags

  • [shell] Add a command to reload the user configuration manually

2.9. 3.10.2 - “Marcus Aurelius” - 1/5/2022#

(From 3.10.1)

  • Protocol version 37

  • [daemon] Fix a performance issue with ALTER TABLE ADD

  • [daemon] Properly take hierarchical cgroup memory limits into account

  • [java] Fix several stability issues

  • [query] Full support for moving averages

2.10. 3.13.1 - “Seneca” - 12/29/2021#

(From 3.13.0)

2.10.1. Changes in this version#

  • Protocol version 46

  • [api] Fix a client-side data corruption when pushing multiple symbol columns at the same time

  • [api] Fix an issue with symbol and batch API parameters

  • [daemon] Fix a performance issue with ALTER TABLE ADD

  • [daemon] Properly take hierarchical cgroup memory limits into account

  • [java] Fix several stability issues

  • [query] Add support for ALTER TABLE DROP column

  • [query] Add support for ASOF INTERPOLATE and LOOKBACK

  • [query] Add support for direction for ASOF LOOKBACK

  • [query] Full support for moving averages

2.11. 3.10.1 - “Marcus Aurelius” - 12/10/2021#

2.11.1. Changes in this version#

(From 3.10.0)

  • Protocol version 37

  • [daemon] Add support for cgroups v2

  • [daemon] Add support for rate limit

  • [daemon] Add support for user configuration reloading and update

  • [daemon] Fix rare permission error in transactions

  • [net] Add support for the new batch API

  • [net] Fix several stability issues

  • [query] Accept ip() in INSERT/UPDATE

  • [query] Add support for % operator

  • [query] Add support for ASOF INTERPOLATE and LOOKBACK

  • [query] Add support for DATEPART

  • [query] Add support for TRIM TABLE

  • [query] Fix LOOKUP error on aggregation

  • [query] Fix several ASOF + GROUP BY errors

  • [query] Improve cast syntax flexibility

2.12. 3.13.0 - “Seneca” - 12/3/2021#

From`Wikipedia <https://en.wikipedia.org/wiki/Main_Page>`_, the free encyclopedia:

`Lucius Annaeus Seneca the Younger <https://en.wikipedia.org/wiki/Seneca_the_Younger`_ usually known as Seneca, was a Roman Stoic philosopher, statesman, dramatist, and in one work, satirist, from the post-Augustan age of Latin literature. […] His prose works include a dozen essays and one hundred twenty-four letters dealing with moral issues. These writings constitute one of the most important bodies of primary material for ancient Stoicism.

2.12.1. Special notes#

This version introduces major breaking changes both in persistence and the network protocol.

2.12.2. Changes in this version#

(From 3.10.0)

  • Protocol version 45

  • [daemon] Add support for cgroups v2

  • [daemon] Add support for user configuration remote

  • [daemon] Upgraded to RocksDB 6.14.6

  • [kernel] Add more statistics for improved monitoring

  • [kernel] Add support for continuous queries (e.g. push notifications)

  • [kernel] Add support for priorities on asynchronous queues (disabled by default)

  • [kernel] Greatly improved ingestion rate for asynchronous writes (up to 10X)

  • [kernel] Native support for “symbols” column type (e.g. “infinite” enums)

  • [net] Add support for the new batch API

  • [odbc] Improve ODBC compatibility

  • [persistence] Improve compression, up to double the efficiency!

  • [persistence] Improve tiered storage support

  • [persistence] New indexes and data layout which can deliver up to 20X speed improvement on cold data

  • [query] Add support for DATEPART

  • [query] Add support for TRIM TABLE

  • [query] Improve DELETE speed

  • [query] Improve disk size computation accuracy

  • [query] Support for subqueries

2.13. 3.10.0 - “Marcus Aurelius” - 10/1/2021#

2.13.1. Changes in this version#

(From 3.9.9)

  • Protocol version 37

  • [daemon] Add statistics for slow operations

  • [daemon] Change the configuration of sessions and multithreading to improve clarity

  • [daemon] Fix “alias not found” bug after changing a table schema

  • [daemon] Fix data duplication bug

  • [daemon] Fix DELETE … WHERE DUPLICATE performance bug

  • [daemon] Greatly improve statistics collection performance

  • [daemon] Overall query performance improvement and memory usage

  • [daemon] Properly honor the “disable WAL” RocksDB setting

  • [daemon] Slight compression performance upgrade, both in speed and ratio

  • [persistence] Added more configuration parameters

  • [query] Add LIMIT to SHOW TABLES

  • [query] Add support for slope

  • [query] Add support for sum of absolute changes and sum of absolute values

  • [query] Extend GROUP BY capabilities

  • [query] Fix LOOKUP parsing ambiguity

  • [query] Greatly improve qualified FIND performance

  • [query] Improve FIND() capabilities

  • [query] New, zero copy, ultra-high-performance, batch insert API (the old API is still available)

  • [shell] Correctly parse timeouts with the units

  • [shell] Do not print footer in CSV mode

  • [shell] Fix column layout print issues

2.14. 3.9.9 - “Marcus Aurelius” - 7/6/2021#

2.14.1. Known bugs#

  • Frequent updates of the same bucket with “push fast” may result in data being duplicated and never deleted

2.14.2. Changes in this version#

  • Protocol version 37

  • [api] The C API is now versioned through macros

  • [clone] Initial release of the qdb_clone utility

  • [daemon] Add bucket operations statistics

  • [daemon] Can log operations that take an excessive amount of time

  • [daemon] Fix the evict_all speed problem on Windows

  • [daemon] Greatly reduce memory usage on all platforms

  • [daemon] Improve the caching algorithm heuristics for greater performance

  • [daemon] Improve multithreading model for even more scalability

  • [daemon] Log an error when shard sizes become too large

  • [daemon] Remove an invalid log error message that could create confusion

  • [lookup] LOOKUP now supports any kind of string

  • [query] Add support for $table in LOOKUP

  • [query] Add support for the string concatenation operator ||

  • [query] Fix aggregation computation when multiple empty values are present in a column

  • [query] Greatly improve performance of more complex queries, especially when multiple tables are selected

  • [query] Properly delete rounded doubles when doing DELETE WHERE DUPLICATE

  • [query] Support arithmetic cast for timestamps

  • [query] Support for AS for LOOKUP

  • [query] Support for non-blob values in LOOKUP

  • [query] Support for the combination of GROUP BY and ASOF

  • [query] Support for the combination of LOOKUP and arithmetic operators

  • [query] Support for the combination of PIVOT and ORDER BY

  • [query] Support for the combination of PIVOT, ASOF, GROUP BY, and PREWHERE

  • [shell] Add prefix_count and suffix_count to shell

  • [shell] The location of the history file is now by default the home directory (and can be configured)

2.15. 3.8.11 - “Crates” - 5/12/2021#

2.15.1. Changes in this version#

  • Protocol version 35

  • [api] Added a new compaction mode that is slower, but uses less disk

  • [api] Added an API call to enable or disable auto-compaction dynamically

  • [api] Trimming and compaction are now two distinct API calls

  • [daemon] Add an operation to nuke a corrupted bucket without shutting down the server remotely

  • [daemon] Correctly support dates before 1970 and beyond 5000

  • [daemon] Greatly improve asynchronous pipelines performance and memory usage

  • [daemon] Improve intra-node recovery on error for ACL permissions lookup

  • [daemon] Log when buckets are too large

  • [daemon] Make the persisted firehose shard size configurable

  • [query] Add support for duplicate rows deletion

  • [query] Fix an invalid timestamp returned for certain first/last queries

  • [query] Fix an issue related to DELETE … WHERE queries

  • [query] Fix GROUP BY results that could be returned as blobs when they are in fact strings

  • [query] Fix invalid results for adjacent_count on large queries

  • [query] Fix several GROUP BY issues related to timestamps

  • [query] Fix several incoherences in the way GROUP BY results were given

  • [query] Fixed an issue where rows could be partially removed after a DELETE WHERE

2.16. 3.9.8 - “Marcus Aurelius” - 3/25/2021#

2.16.1. Changes in this version#

  • Protocol version 37

  • This release includes ARM binaries for Linux

  • [api] Add an API to verify data integrity remotely

  • [api] Fix potential invalid results for variance, skewness, and kurtosis

  • [daemon] Add an operation to nuke a corrupted bucket without shutting down the server remotely

  • [daemon] Add statistics for write errors

  • [daemon] Correctly support dates before 1970 and beyond 5000

  • [daemon] Fix descriptor usage on systems with a low descriptor limit

  • [daemon] Log when buckets are too large

  • [daemon] Make disks writes more resilient to major failures such as a server shut down

  • [daemon] Make the persisted firehose shard size configurable

  • [query] Add support for duplicate rows deletion

  • [query] Correctly support WHERE != “”

  • [query] Fix an invalid timestamp returned for certain first/last queries

  • [query] Fix GROUP BY results that could be returned as blobs when they are in fact strings

  • [query] Fix invalid error code returned for certain ASOF JOIN queries

  • [query] Fix invalid results for adjacent_count on large queries

  • [query] Fix several GROUP BY issues related to timestamps

  • [query] Fix several incoherences in the way GROUP BY results were given

  • [query] Support tagging at table creation

  • [railgun] Fix a performance problem when inserting in multiple tables

  • [rest] Fix a potential resource leak

2.17. 3.9.7 - “Marcus Aurelius” - 2/4/2021#

2.17.1. Changes in this version#

  • Protocol version 37

  • [daemon] Add an option to unconditionally uncache entries after write

  • [daemon] Add several statistics related to asynchronous pipelines

  • [daemon] Fix a rare issue, when, during writes, previously cached entries may have not properly reacquired the lock for writing

  • [daemon] Greatly improve asynchronous pipelines performance and memory usage

  • [daemon] Improve intra-node recovery on error for ACL permissions lookup

  • [daemon] Significantly improve memory usage for columns containing strings or blobs

  • [dbtool] Improved safety and clarity of low-level shard operations

  • [query] Add cast to int64 support for timestamps

  • [query] Add support for ALTER TABLE RENAME column

  • [query] Add support for PIVOT on all possible ASOF JOINS

  • [query] Experimental support for results deduplication in queries

  • [query] Fix a GROUP BY issues when querying multiple tables

  • [query] Fix an issue related to DELETE … WHERE queries

  • [query] Fix an issue where empty FIND() results would result in an invalid query

  • [query] Greatly improve the performance FIND() when the number of tables is very high

  • [query] Lookup now works on every column type

2.18. 3.8.10 - “Crates” - 1/7/2021#

2.18.1. Changes in this version#

  • Protocol version 35

  • [api] Properly handle empty partial results

  • [daemon] Add more context to the “invalid depot path” error message

  • [daemon] Fixed a rare issue, when, during writes, previously cached entries may have not properly reacquired the lock for writing

  • [daemon] Name differently the high and low partitions threads

  • [daemon] Properly set the default for the advertized address

  • [daemon] Reset the ACL fetcher on error

  • [daemon] Skip missing buckets when aggregating instead of failing

  • [query] FROM table.column was incorrectly accepted as a valid clause

  • [replication] Properly replicate tags

  • [shell] Fixed a potential segmentation fault when using quotation marks

  • [shell] Fixed invalid format for integers

  • [shell] Log warnings related to the history file instead of displaying them on the console

  • [shell] No output was given when a script file was not properly specified

2.19. 3.9.6 - “Marcus Aurelius” - 12/03/2020#

2.19.1. Changes in this version#

  • Protocol version 37

  • [api] Fixed an internal error when the direct API was used with the wrong URI

  • [daemon] Fixed a a couple of warning/error log messages

  • [query] FIND() can now be used in (PRE)WHERE clauses

  • [shell] List the type along with the name when doing a prefix get

  • [shell] The direct mode is set automatically at startup

2.20. 3.9.5 - “Marcus Aurelius” - 11/11/2020#

2.20.1. Changes in this version#

  • Protocol version 37

  • [api] Added a faster, but approximate, tag counting function

  • [api] Added a new compaction mode that is slower, but uses less disk

  • [api] Added an API call to enable or disable auto-compaction dynamically

  • [api] Fixed an issue where prefix get could return more results than the limit

  • [api] Load balancing is now disabled by default

  • [api] The query engine will now transparently parallelize queries to increase performance

  • [api] Trimming and compaction are now two distinct API calls

  • [daemon] Advertised as address will use by default the value of address

  • [daemon] Statistics are now properly restored on startup

  • [dbtool] A summary of execution time is now printed

  • [query] Added support for DROP TABLE IF EXISTS

  • [query] find() can now be used in PREWHERE and WHERE clauses

  • [query] find(tag=t) can now be recursive

  • [query] Fixed a potential GROUP BY crash.

  • [query] Fixed an issue where rows could be partially removed after a DELETE WHERE

  • [query] Fixed an issue where LIMIT would improperly be applied when a WHERE ORDER BY clause is used

  • [query] SHOW TABLE displays the internal column number

  • [replicate] Tags are now replicated with the data during a manual cluster-to-cluster replication

  • [shell] Some integers could be misformatted

  • [shell] You can now change the maximum results count in get_tagged

2.21. 3.9.4 - “Marcus Aurelius” - 9/23/2020#

2.21.1. Changes in this version#

  • [daemon] If a bucket is corrupted, the data will now be ignored by aggregation functions

  • [daemon] Greatly improve DELETE performance

  • [daemon] Prevent data from being corrupted in case of concurrent insertion and erasure on the same bucket

  • [daemon] Statistics are now grouped by UID

  • [query] Accept unknown unqualified columns in WHERE/PREWHERE clauses

  • [query] Fixed potential invalid get tagged count computation

  • [query] Support for PIVOT (experimental)

  • [api] Added function to explicitly release memory during batch insertion

2.22. 3.8.9 - “Crates” - 9/15/2020#

2.22.1. Changes in this version#

  • [daemon] If a bucket is corrupted, the data will now be ignored by aggregation functions

  • [daemon] Fix a potential deadlock if the database would do a concurrent write, prefix get, and massive eviction

  • [daemon] Greatly improve DELETE performance

  • [daemon] Prevent data from being corrupted in case of concurrent insertion and erasure on the same bucket

  • [query] Data far in the future (100+ years) can now be properly selected

  • [query] Properly dismiss invalid months and days combination at the parsing phase

  • [query] Reject invalid WHERE and aggregation combinations early in the client instead of sending them to the server

2.23. 3.9.1 - “Marcus Aurelius” - 8/25/2020#

2.23.1. Changes in this version#

  • Protocol version 35

  • [query] Optimize client memory usage and speed for large queries

2.24. 3.9.0 - “Marcus Aurelius” - 8/4/2020#

From`Wikipedia <https://en.wikipedia.org/wiki/Main_Page>`_, the free encyclopedia:

Marcus Aurelius was a Roman emperor from 161 to 180 and a Stoic philosopher. He was the last of the rulers known as the Five Good Emperors […], and the last emperor of the Pax Romana, an age of relative peace and stability for the Roman Empire. He served as Roman consul in 140, 145, and 161. Meditations, the writings of “the philosopher” – as contemporary biographers called Marcus, are a significant source of the modern understanding of ancient Stoic philosophy.

2.24.1. Changes in this version#

  • Protocol version 35

  • [community] The community license limits have been raised to 8 GiB of RAM and 32 GiB of storage

  • [persistence] Native support for AWS S3 as a persistence backend

  • [persistence] Greatly improved compaction performance

  • [persistence] Up to 2X cold queries performance increase

  • [daemon] Greatly improved the performance of asynchronous insertions

  • [daemon] Up to 100X performance gain for GROUP BY queries

  • [daemon] Fixed a direct_prefix_get bug

  • [batch] Improve batch inserter performance when writing to mutliple tables

  • [batch] Added support to clone a blob/string into the batch writer

  • [query] Can ASOF JOIN against multiple tables, generated ranges, and find results

  • [query] Support for WHERE clause in DELETE and UPDATE

  • [query] Use single quotes for queries, and double quotes for identifiers

  • [query] Support for .col and table.

  • [query] Add support for IS NULL and IS NOT NULL in WHERE clauses

  • [query] Added experimental support for covariance and correlation computation

2.25. 3.8.7 - “Crates” - 7/30/2020#

2.25.1. Changes in this version#

  • [daemon] Fix a potential deadlock when multiple threads would load the same bucket from cold storage

2.25.2. Known bugs#

  • [query] Null values groups may not be properly counted in aggregations (GROUP BY)

  • [daemon] Subpar aggregation performance for columns with blobs and strings

2.26. 3.8.6 - “Crates” - 7/23/2020#

2.26.1. Changes in this version#

  • [daemon] Greatly improve compression for tables with many columns (> 4)

  • [query] SELECT + WHERE will now properly apply the LIMIT server side

  • [query] Add support for CREATE TABLE IF NOT EXISTS

  • [shell] Log where the history is stored on startup

  • [shell] Do not attempt to read stdin (nohup incompatibility issue)

2.26.2. Known bugs#

  • [query] Null values groups may not be properly counted in aggregations (GROUP BY)

  • [daemon] Subpar aggregation performance for columns with blobs and strings

2.27. 3.8.5 - “Crates” - 7/17/2020#

2.27.1. Changes in this version#

  • [daemon] If the server encounters a corrupted bucket, it will return an empty result instead of failing the complete query

  • [daemon] Fix a bug introduced in 3.8.4 that could prevent the ring from stabilizing

  • [daemon] Fix an insertion bug introduced in 3.7.0 that could insert non-existing null values

  • [dbtool] Correctly print timestamp values

  • [python] Fix an improper UTF-8 string handling

2.27.2. Known bugs#

  • [query] Null values groups may not be properly counted in aggregations (GROUP BY)

  • [daemon] Subpar aggregation performance for columns with blobs and strings

2.28. 3.8.4 - “Crates” - 7/10/2020#

2.28.1. Changes in this version#

  • [daemon] Clustering: allow out of order startup of nodes

  • [daemon] Add an option to disable background replication and migration

  • [daemon] Add chord statistics to monitor cluster stability

  • [daemon] Increase logs verbosity on metadata errors

  • [daemon] No longer migrate data on startup by default

  • [replication] Prevent the replication to create transaction conflicts

  • [dbtool] Add upgrade, dump shard, and repair commands

  • [dbtool] Add a “force” option to force upgrading the indexes

  • [maxcon] Allow the max connection tool to connect to a secure cluster

2.28.2. Known bugs#

  • [query] Null values groups may not be properly counted in aggregations (GROUP BY)

  • [daemon] Subpar aggregation performance for columns with blobs and strings

2.29. 3.8.3 - “Crates” - 6/10/2020#

2.29.1. Changes in this version#

  • [daemon] Increase timeseries bucket I/O efficiency

  • [daemon] direct_prefix_get did not properly match prefixes

  • [daemon] Fix disk usage results

  • [api] Properly return “not implemented” instead of “internal error” for certain GROUP BY queries

  • [shell] Fix invalid alignment of results containing NULL values

  • [shell] Properly retrieve cluster status information on secured clusters

  • [grafana] Properly transform blob and string values

2.29.2. Known bugs#

  • [query] Null values groups may not be properly counted in aggregations (GROUP BY)

  • [daemon] Subpar aggregation performance for columns with blobs and strings

2.30. 3.8.2 - “Crates” - 5/18/2020#

2.30.1. Changes in this version#

  • [daemon] Fixed a bug where the daemon could incorrectly attempt to reaquire a non-recursive mutex, causing a deadlock

  • [daemon] Fixed a bug in the migration code that could cause a segmentation fault

  • [daemon] Fixed a hash computation bug in RocksDB that could cause a segmentation fault for files larger than 2 GiB

  • [daemon] Downgraded to RocksDB 6.5.3 due to a regression introduced by 6.7.3 that could cause a segmentation fault during compaction

  • [client] Fixed several ASOF related issues

  • [client] Fixed a memory leak in the client

  • [client] Fixed a bug in the client that could cause aggregation results to be incorrectly merged

  • [client] Fixed a bug in the client that would cause some queries to allocate too much memory and cause and “internal error”

2.30.2. Known bugs#

  • [query] Null values groups may not be properly counted in aggregations (GROUP BY)

  • [daemon] Subpar aggregation performance for columns with blobs and strings

2.31. 3.8.1 - “Crates” - 4/20/2020#

2.31.1. Changes in this version#

  • [daemon] Fixes a bug in timeseries deserializations (for blobs and strings) that could cause a memory corruption

  • [dbtool] Fixes a bug in dbtool that could cause a division by zero when scanning a database with less than 100 entries

2.32. 3.8.0 - “Crates” - 4/6/2020#

From`Wikipedia <https://en.wikipedia.org/wiki/Main_Page>`_, the free encyclopedia:

Crates of Mallus was a Greek language grammarian and Stoic philosopher, leader of the literary school and head of the library of Pergamum. […] His chief work was a critical and exegetical commentary on Homer. He is also famous for constructing the earliest known globe of the Earth.

2.32.1. Changes in this version#

  • [query] Support for INSERT TRUNCATE

  • [query] Significant performance improvement to GROUP BY queries for high-cardinality results

  • [daemon] Code is now optimized for Haswell architectures (use Core2 builds for older architectures)

  • [daemon] Properly honor cgroups memory restrictions (docker and kubernetes)

  • [daemon] Fixed backtrace functions log in Linux

  • [daemon] Upgraded to RocksDB 6.7.3

  • [client] Optimized client/server communications for better performance

2.33. 3.7.0 - “Apollodorus” - 3/2/2020#

From`Wikipedia <https://en.wikipedia.org/wiki/Main_Page>`_, the free encyclopedia:

Apollodorus of Seleucia was a Stoic philosopher, and a pupil of Diogenes of Babylon. Apollodorus is famous for describing Cynicism as “the short path to virtue”, and he may have been the first Stoic after the time of Zeno to systematically attempt to reconcile Stoicism with Cynicism.

2.33.1. Changes in this version#

  • Protocol version 34

  • [daemon] Blob on-disk and in-memory speed and size optimizations (up to X4 more memory efficient, X2 faster insertions)

  • [daemon] Improve eviction and overall memory usage

  • [daemon] Removed a bottleneck on concurrent read-only operations on the same table

  • [query] Support for timestamp comparisons in WHERE clauses

  • [query] New function to count adjacent differences in a column

  • [query] Allow to insert NULL strings in INSERT INTO statements

  • [query] Allow WHERE (t.)col1 = (t.)col2 with multiple tables (e.g. with a find statement)

  • [client] Auto-stabilization is now disabled by default

  • [client] The get last error API call is now per handle

2.34. 3.6.0 - “Antipater” - 2/3/2020#

From`Wikipedia <https://en.wikipedia.org/wiki/Main_Page>`_, the free encyclopedia:

Antipater of Tarsus was a Stoic philosopher. He was the pupil and successor of Diogenes of Babylon as leader of the Stoic school, and was the teacher of Panaetius. He wrote works on the gods and on divination, and in ethics he took a higher moral ground than that of his teacher Diogenes.

2.34.1. Changes in this version#

  • Protocol version 33

  • [query] New STRING type

  • [query] Properly handle NULL values in GROUP BY

  • [query] Support for ASOF against a generated time range

  • [query] Increase the flexibility of WHERE to allow for column to column comparisons

  • [query] Allow for function composition in the SELECT clause

  • [api] New call to get more context information about the last error

  • [api] Protocol version mismatch are no longer considered as “internal errors”

  • [api] Ensure that network and timeout errors are always returned as network errors and not “internal errors”

  • [shell] An aggressive optimization could make the shell display non-existing null values

  • [daemon] Blobs could be stored in the wrong column family resulting in unexpected “alias not found” errors

  • [daemon] Greatly improve eviction heuristics in the case of bulk insertion

  • [daemon] License expiration time is now available in the statistics

  • [daemon] Upgrade to RocksDB 6.5.3

  • [daemon] Fix signal handling to prevent deadlocks on SIGABRT or SIGSEGV

  • [daemon] Default timeout values have been increased

  • [daemon] Configuration is logged at startup

2.35. 3.5.0 - “Posidonius” - 12/23/2019#

From Wikipedia, the free encyclopedia:

Posidonius “of Apameia” or “of Rhodes”, as a Greek Stoic philosopher, politician, astronomer, geographer, historian and teacher native to Apamea, Syria. He was acclaimed as the greatest polymath of his age. His vast body of work exists today only in fragments.

2.35.1. Changes in this version#

  • Protocol version 32

  • Official Prometheus connector

  • [query] Support for LEFT, RIGHT, and FULL ASOF joins between time series

  • [query] Support for HAVING clause

  • [query] Faster GROUP BY/WHERE for single table queries

  • [query] In addition to finding by tag, the FIND() keywork support find by prefix.

  • [query] Query results are no longer grouped by table by default

  • [query] Fix find tags for grant, revoke, and ‘show’ related queries

  • [daemon] Newer and faster statistics collection engine

  • [daemon] Chord communications happen in separate, higher priority partitions (important change see cluster networking configuration).

  • [daemon] Persistent cache to leverage a local NVMe/SSD disk when data is stored in a remote storage

  • [daemon] Detect ungraceful shutdown

  • [daemon] Fixed erasure related bugs

  • [daemon] Improved background compaction

  • [daemon] Improved timeseries data compression

  • [daemon] Reduced background migration/replication memory usage

  • [daemon] Reworked eviction algorithms and configuration for better performance and lower latency updates

  • [daemon] Significantly reduced trim all memory usage

  • [daemon] Better error context for log messages

  • [daemon] Explicit error message for configuration file errors

  • [tools] dbtool can now do offline scanning and repair of timeseries buckets

  • [api/daemon] Support for task kill

  • [api] If a value and a null value share the same timestamp, ensure their ordering is always preserved

  • [api] New explicit error code for invalid network buffer size.

  • [api] Properly account the case sensitivity of regex queries

  • [api] Properly null terminate prefix results

  • [api] Full stream encryption is now automatically enabled or disabled on the client side

2.36. 3.4.3 - “Mnesarchus” - 10/15/2019#

From Wikipedia, the free encyclopedia:

Mnesarchus of Athens, was a Stoic philosopher, who lived c. 160-c. 85 BC. After the death of Panaetius (109 BC), the Stoic school at Athens seems to have fragmented, and Mnesarchus was probably one of several leading Stoics teaching in this era.

2.36.1. Changes in this version#

  • Protocol version 31

  • [daemon] Properly manage timeseries erasure during transaction

  • [daemon] Tune RocksDB to avoid re-write

  • [daemon] Improve transaction speed

  • [daemon] Avoid unnecessary migrations

2.37. 3.4.2 - “Mnesarchus” - 09/17/2019#

From Wikipedia, the free encyclopedia:

Mnesarchus of Athens, was a Stoic philosopher, who lived c. 160-c. 85 BC. After the death of Panaetius (109 BC), the Stoic school at Athens seems to have fragmented, and Mnesarchus was probably one of several leading Stoics teaching in this era.

2.37.1. Changes in this version#

  • Protocol version 31

  • [api] Updated .NET API to support int64 and timestamp columns

  • [api] Updated Node.js API to support nanosecond-precision timestamp

  • [daemon] Trimming, replicating and erasing no longer pollute the cache

  • [daemon] Changed default allocator to TBB

  • [daemon] Changed network buffer recycling strategy

  • [daemon] Improved log messages

2.38. 3.4.1 - “Mnesarchus” - 08/12/2019#

From Wikipedia, the free encyclopedia:

Mnesarchus of Athens, was a Stoic philosopher, who lived c. 160-c. 85 BC. After the death of Panaetius (109 BC), the Stoic school at Athens seems to have fragmented, and Mnesarchus was probably one of several leading Stoics teaching in this era.

2.38.1. Changes in this version#

  • Protocol version 31

  • [api] Updated NodeJS API to support authenticated connection and queries

  • [api] New function to load security credentials directly from a file

  • [query] Fixed a bug introduced in 3.4.0 with regards to the now() function

2.39. 3.4.0 - “Mnesarchus” - 07/23/2019#

From Wikipedia, the free encyclopedia:

Mnesarchus of Athens, was a Stoic philosopher, who lived c. 160-c. 85 BC. After the death of Panaetius (109 BC), the Stoic school at Athens seems to have fragmented, and Mnesarchus was probably one of several leading Stoics teaching in this era.

2.39.1. Changes in this version#

  • Protocol version 31

  • [daemon] New, queryiable, configurable, audit trail that stores every update to the database

  • [daemon] Increased efficiency of automatic entries trimming

  • [daemon] Automatically adjust memory usage when it exceeds the authorized license

  • [daemon] All durations in the configuration are now in milliseconds

  • [daemon] Fixed several insertion and erasure issues that could occur in heavy write workloads

  • [query] Support for DELETE

  • [query] DROP and ALTER can now work on multiple tables

  • [query] Fixed parsing issues where ORDER BY would not be allowed with WHERE clauses

  • [tools] New cluster-to-cluster replication tool that can be used for synchronization and migration

  • [api] Significant speed improvements to the batch inserter

  • [shell] Better, more contextual, error reporting

  • [shell] Various cosmetic improvements

  • [protocol] The client API can now more accurately inform the user if it connects to a server that is not a QuasarDB cluster

2.40. 3.3.0 - “Panaetius” - 05/13/2019#

From Wikipedia, the free encyclopedia:

Panaetius of Rhodes was a Stoic philosopher. […] With Panaetius, Stoicism became much more eclectic. His most famous work was his On Duties, the principal source used by Cicero in his own work of the same name.

2.40.1. Changes in this version#

  • Protocol version 30

  • [query] New aggregation to query the size of a timeseries on disk

  • [api] Can expire timeseries data to reach a certain given size

  • [shell] More explicit and user-friendly error messages

  • [daemon] Brand new statistics mechanics for live-monitoring and performance diagnostics

2.41. 3.2.0 - “Hierocles” - 03/29/2019#

From Wikipedia, the free encyclopedia:

Hierocles was a Stoic philosopher. […] Hierocles is famous for a book called Elements of Ethics.

2.41.1. Changes in this version#

  • Protocol version 30

  • [security] Fine-grained access control.

  • [security] Support for default user privileges.

  • [query] Support for ALTER TABLE.

  • [query] Support for SHOW GRANTS.

  • [query] Support for SHOW TABLES.

  • [query] GROUP BY performance improvements.

  • [query] Fixed multiple GROUP BY related bugs.

  • [query] Support for moving average, minimum, and maximum.

  • [query] Support for cumulative sum and distinct count.

  • [query] Greatly improved the performance of the lookup function.

  • [daemon] Optimize ORDER BY and LIMIT processing.

  • [daemon] Switched memory allocator to jemalloc.

  • [daemon] Fixed a clustering bug when the cluster was using stream encryption.

  • [API] Reworked Python API packaging.

  • [API] Python API pandas integration.

  • [API] Greatly improved batch insertion API performance.

  • [API] New low-level, high-performance interface for batch insertion.

  • [import] Greatly improved TSV/CSV importing tool performance and heuristics.

  • [export] New data exporting tool to export timeseries data to CSV files.

  • [REST] Various bugs and documentation fixes.

  • [REST] New configuration file format.

  • [shell] Display the shard size when displaying the time series information with SHOW.

  • [network] Reused sockets could ignore buffering parameters.

2.42. 3.1.0 - “Diodotus ” - 01/08/2019#

From Wikipedia, the free encyclopedia:

Diodotus was a Stoic philosopher, and was a friend of Cicero. […] He instructed Cicero in Stoic philosophy and especially Logic.

2.42.1. Changes in this version#

  • Protocol version 30

  • [query] Support for ALTER TABLE and schema migration

  • [query] LIMIT is now supported with OFFSET and ORDER BY

  • [query] Extended support for WHERE clause in GROUP BY

  • [query] Support for client-side lookup

  • [shell] Added option to manage network buffer size in the shell

  • [shell] Fixed display result order for ORDER BY

  • [daemon] Major performance update for insertion speed in synchronous and asynchronous mode

  • [daemon] Significantly reduced memory usage of the asynchronous timeseries insertion

  • [daemon] Clarified persistence options

  • [daemon] Added more customization options to the Helium persistence layer

2.43. 3.0.0 - “Posidonius” - 11/21/2018#

From Wikipedia, the free encyclopedia:

Posidonius was a Greek Stoic philosopher, politician, astronomer, geographer, historian and teacher native to Apamea, Syria. He was acclaimed as the greatest polymath of his age. His vast body of work exists today only in fragments.

2.43.1. Changes in this version#

  • Protocol version 30

  • [REST] New REST API bridge.

  • [GUI] New administration console.

  • [query] Support for arbitrary aggregations in addition to time aggregations with “GROUP BY”.

  • [query] New “TIME_JOIN” feature.

  • [query] Support for “CREATE”, “INSERT”, and “DROP”.

  • [query] Support for “ORDER BY”

  • [query] Support for fully qualified columns.

  • [query] Added support for “geohash64” function.

  • [shell] Fixed various results display bugs.

  • [daemon] Server side profiling.

  • [daemon] Improved indexes for better speed and disk usage.

  • [daemon] Internal changes in the protocol to deliver lower latencies for all queries.

  • [daemon] Compression optimizations.

  • [daemon] Purging the cache will now also purge the filesystem cache on Windows and Linux.

  • [daemon] Changed default parameters so that it can run on a default Linux installation.

  • [daemon] Anti DoS feature: limit the amount of data a single request may send.

  • [API] New batch insert API with optional asynchronous disk writing for very high disk throughputs.

  • [API] Built-in, configurable, automatic transactions retryer.

  • [API] Performance API to retrieve the server performance data.

  • [API] Optional, detailed, error message in the query result.

  • [packaging] Official ARM32 and ARM64 support.

  • [persistence] Upgraded to Helium 3.1.2

  • [persistence] Upgraded to RocksDB 5.14.2

2.44. 2.7.0 - “Eratosthenes” - 07/02/2018#

From Wikipedia, the free encyclopedia:

Eratosthenes was a Greek mathematician, geographer, poet, astronomer, and music theorist. He was a man of learning, becoming the chief librarian at the Library of Alexandria. He invented the discipline of geography, including the terminology used today.

2.44.1. Changes in this version#

  • Protocol version 20

  • [daemon] Compression optimizations.

  • [daemon] Better docker and NAT support. The daemon can advertise an address different from the one it listens to.

  • [daemon] Significant performance improvement to the first() aggregation function.

  • [daemon] Fixed an issue where timeseries were not automatically trimmed.

  • [query] Support for parsing IPv4 addresses as 64-bit integers.

  • [query] Support for aliases.

  • [query] Support for sub-ranges. You can now select months, days, and time from a larger range for precise ranges.

  • [shell] Fixed several bugs which could result in unaligned tables being displayed.

  • [api] Published Java API on Maven Central.

2.45. 2.6.0 - “Cleomedes” - 06/01/2018#

From Wikipedia, the free encyclopedia:

Cleomedes was a Greek astronomer who is known chiefly for his book On the Circular Motions of the Celestial Bodies.

2.45.1. Changes in this version#

  • Protocol version 20

  • [api] Official R API

  • [api] Official Grafana support

  • [api] High performance multi table bulk insert

  • [query] Gregorian calendar support

  • [query] A WHERE clause can now be applied on aggregations

  • [query] Support for regular expressions in blob comparisons

  • [query] Support for bitwise “and” operator in integer comparisons

  • [daemon] Greatly improved bulk insertion speed

  • [api] Removed obsolete filter in the API

  • [query] Fixed count related issues on blobs and timestamps columns

  • [query] SELECT count(*) now returns a valid result in all cases

  • [query] geometric mean is now properly accepted by SELECT

  • [query] Allows optional “;” at the end of queries

  • [daemon] Added more systemtap probes for finer tuning

2.46. 2.5.0 - “Theodosius” - 04/20/2018#

From Wikipedia, the free encyclopedia:

Theodosius of Bithynia was a Greek astronomer and mathematician who wrote the Sphaerics, a book on the geometry of the sphere.

2.46.1. Changes in this version#

  • Protocol version 20

  • [query] A WHERE clause can now have an arbitrary number of columns.

  • [query] The WHERE clause now supports comparisons for blobs.

  • [persistence] Optimized data storage and compression algorithms resulting in significant savings for timeseries with more than three (3) columns.

  • [daemon] Greatly reduced the probability of conflicts during time series insertions.

  • [api] When a cluster is unstable, the API will now wait a configurable amount of time for stabilization.

  • [api] hset are no longer exposed in the API.

  • [shell] Added a new command to display the current status of a cluster.

  • [web bridge] The query API is now available through REST.

  • [packaging] New Core2 build. The Core2 build enables you to run quasarDB on older generation of Intel-compatible processors. The default build requires a Westmere or better micro-architecture.

  • [packaging] We successfully built quasardb for the ARM64 architecture. Build available upon request.

  • [licensing] We’ve updated the licensing system. Previously attributed licenses will no longer work. Contact you quasarDB Solutions Architect for an updated license. This does not change the price or the validity of your current license.

2.47. 2.4.0 - “Aratus” - 03/11/2018#

From Wikipedia, the free encyclopedia:

Aratus was a Greek didactic poet. His major extant work is his hexameter poem Phenomena, the first half of which is a verse setting of a lost work of the same name by Eudoxus of Cnidus. It describes the constellations and other celestial phenomena. The second half is called the Diosemeia , and is chiefly about weather lore.`

2.47.1. Changes in this version#

  • Protocol version 20

  • [query] Support for arithmetic expressions in SELECT statements

  • [query] Support for multiple ranges in SELECT statements

  • [query] Initial support for WHERE clause - only single column queries are currently supported

  • [persistence] Greatly improved data compression (up to 5x)

  • [aggregations] Added specific SSE 4.2 optimizations for machines without AVX and AVX2

  • [aggregations] Significantly increased the speed of integer 64-bit aggregations (up to 6x)

  • [aggregations] Significantly increased the speed of sum_of_squares and product aggregations functions (up to 4x)

  • [python] Exposed query API

  • [shell] Fixed a bug where the columns would be displayed in the wrong order for a star SELECT

2.48. 2.3.0 - “Epictetus” - 02/15/2018#

From Wikipedia, the free encyclopedia:

Epictetus was a Greek Stoic philosopher. He was born a slave at Hierapolis, Phrygia (present day Pamukkale, Turkey) and lived in Rome until his banishment, when he went to Nicopolis in northwestern Greece for the rest of his life. […] Epictetus taught that philosophy is a way of life and not just a theoretical discipline. To Epictetus, all external events are beyond our control; we should accept calmly and dispassionately whatever happens. However, individuals are responsible for their own actions, which they can examine and control through rigorous self-discipline.

2.48.1. Changes in this version#

  • Protocol version 20

  • Queries can now leverage the result of tag based lookup

  • Fixed a bug where skewness computation could be invalid on very large time series

  • [api] The query language is now available through the API

  • [api] Some asynchronous operations did not properly retry on error, resulting in sporadic network errors popped back to the user

  • [admin] Adding an existing user will fail instead of overwritting the old one

  • [packaging] The libc++ API is now bundled on MacOS and FreeBSD for greater compatibility

  • [kernel] Accross the board performance improvements and memory usage reduction

  • [kernel] Upgraded to Boost 1.66

  • [persistence] Upgraded to RocksDB 5.9.2

2.49. 2.2.0 - “Chrysippus” - 12/21/2017#

From Wikipedia, the free encyclopedia:

Chrysippus of Soli was a Greek Stoic philosopher. He was a native of Soli, Cilicia, but moved to Athens as a young man, where he became a pupil of Cleanthes in the Stoic school. When Cleanthes died, around 230 BC, Chrysippus became the third head of the school. A prolific writer, Chrysippus expanded the fundamental doctrines of Zeno of Citium, the founder of the school, which earned him the title of Second Founder of Stoicism.

2.49.1. Changes in this version#

  • Protocol version 20

  • Brand new query language! Available as a preview in the shell. Try select arithmetic_mean(volume) from stocks in range(now(), -1d) group by hour now! :-)

  • Two new timeseries column types are supported: signed 64-bit integers and nanosecond timestamps

  • Increased memory limit of the community edition from 2 GiB to 4 GiB

  • Greatly improved timeseries insertion speed when data is interleaved

  • Fixed bug in kurtosis computation

  • Fixed a bug where erasing an empty range could result in an uncommitted transaction

  • [api] Support for row-level bulk get and insertion

  • [api] Transparently retry connection on asynchronous requests

  • [api] Make it possible to query the currently configured timeout

  • [shell] Persists command history

  • [shell] Support for syntax highlighting and better completion

  • [shell] Added command for suffix get

  • [persistence] Mounting a Helium volume will now be significantly faster on Windows

2.50. 2.1.0 - “Cleanthes” - 11/01/2017#

From Wikipedia, the free encyclopedia:

Cleanthes, of Assos, was a Greek Stoic philosopher and successor to Zeno of Citium as the second head (scholarch) of the Stoic school in Athens. Originally a boxer, he came to Athens where he took up philosophy, listening to Zeno’s lectures. He supported himself by working as a water-carrier at night. […] He originated new ideas in Stoic physics, and developed Stoicism in accordance with the principles of materialism and pantheism.

2.50.1. Changes in this version#

  • Protocol version 20

  • This build now targets the Westmere micro-architecture

  • Native support for distributed time series and server-side aggregation (with AVX support when available)

  • Cryptographically strong authentication (enabled by default)

  • Full network traffic encryption using AES GCM 256 (disabled by default)

  • Levyx Helium persistence layer for high performance storage

  • New querying language with support for distributed joins over tags

  • New API to count prefixes and suffixes

  • Empty entries are now allowed in deques

  • C API: Unified memory management functions for more convenience

  • Improved web bridge error messages logging

  • Improved performance for blob read operations

  • Reduced the impact on cluster performance when a node joins the ring

  • Improved eviction and trimming performance

  • The qdbsh output is colored on terminals that support it

  • New API calls: cluster_purge_cache and cluster_wait_for_stabilization

2.51. 2.0.0 - “Aristotle” - 01/17/2017#

From Wikipedia, the free encyclopedia:

Aristotle was a Greek philosopher and scientist born in the city of Stagira, Chalkidice, on the northern periphery of Classical Greece. […] His writings cover many subjects – including physics, biology, zoology, metaphysics, logic, ethics, aesthetics, poetry, theater, music, rhetoric, linguistics, politics and government – and constitute the first comprehensive system of Western philosophy

Building on the solid foundation of quasardb 1.2, quasardb 2.0 is now fully transactional and support distributed secondary indexes while managing to push the performance limits even further.

2.51.1. Changes in this version#

  • Protocol version 20

  • Distributed ACID transactions

  • Distributed secondary-indexes (tags)

  • Distributed double-ended queues (deques)

  • Native atomic signed 64-bit integers operations

  • Native support for Mac OS X

  • Many usability improvements in all tools

  • Switched from LevelDB to a customized RocksDB persistence layer

  • New APIs: Node.js and PHP

  • Greatly improved .NET and Java APIs

  • Performance level: ludicrous

  • And so much more!

2.51.2. Changes in the version#

2.52. 1.2.1 - “Anaximander” - 05/05/2015#

This release is our most scalable release ever and has been tested with up to 25,000 concurrent connections on a single node running on an entry-level dedicated server.

This release is fully compatible with 1.2.0 and the whole 1.1.x “Pythagoras” line.

2.52.1. Changes in this version#

  • Protocol version: 14

  • Increased default TCP listen queue to 16,384 on all platforms

  • Stabilization is now less agressive in case of node failures, delivering an even better availability

  • Multi-connect is now done in a random order

  • Removed network usage graphs from the administration console

  • Fixed minor bugs in the configuration generation tool (https://quasardb.net/confgen/)

2.53. 1.2.0 - “Anaximander” - 02/09/2015#

From Wikipedia, the free encyclopedia:

Anaximander was a pre-Socratic Greek philosopher who lived in Miletus,[3] a city of Ionia (in modern-day Turkey). […] He was an early proponent of science and tried to observe and explain different aspects of the universe, with a particular interest in its origins, claiming that nature is ruled by laws, just like human societies, and anything that disturbs the balance of nature does not last long.

This release unlocks even more performance with a brand new load-balancing algorithm. Without any configuration, reads will be done on the nearest, most available replica, resulting is better network usage and reduced latency.

We are also pleased to announce a brand new PHP API. Millions of websites accross the world can now benefit from quasardb unrivaled performance.

This release is fully compatible with the 1.1.x “Pythagoras” line.

2.53.1. Changes in this version#

  • Protocol version: 14

  • New API: PHP

  • Reads are now automatically balanced, taking distance and load into account

  • When no licence is available, quasardb now runs in “free” mode for evaluation purposes

  • Fixed several glitches in the administration console and improved overall responsiveness

  • Fixed a condition where an invalid time stamp could be displayed in the log file

  • Web bridge: added an error message when the listening port isn’t available

2.54. 1.1.5 - “Pythagoras” - 12/15/2014#

The release features significant improvements to the administration console and now persists the statistics.

This release is fully compatible with 1.1.0, 1.1.1, 1.1.2, 1.1.3 and 1.1.4.

2.54.1. Changes in this version#

  • Protocol version: 14

  • Major improvements to the administration console

  • Statistics are now persisted within quasardb

  • Fixed a retro-compatibility issue where 1.1.3 clients requests could be misunderstood by 1.1.4+ servers

  • Fixed a reconciliation issue where a partitioned node rejoining a cluster could not correctly propagate an update

  • The shell now displays a meaningful error message when no remote daemon is available

  • All binaries and all platforms except FreeBSD now statically link against the libc++1 library for convenience

  • A warning is now emitted when a node reaches 90% of its quota

  • Java API : the multi-connect feature is now supported

  • FreeBSD installations now require FreeBSD 10 and Clang 3.5.

  • Windows clients now require Visual Studio 2013 Update 4.

  • Upgraded to Intel TBB

  • Upgraded to Boost 1.57.0

  • Upgraded to LevelDB 1.18

2.55. 1.1.4 - “Pythagoras” - 06/30/2014#

This release features a brand new .NET API and various improvements to the administration interface.

This release is fully compatible with 1.1.0, 1.1.1, 1.1.2 and 1.1.3.

2.55.1. Changes in this version#

  • Protocol version: 14

  • Reduced the dependencies of all binaries through static linking on all platforms

  • .NET API: Fully functionnal .NET 4.0 API

  • Administration console: added more information, fixed numerous glitches and greatly reduced memory usage

  • Daemon: greatly reduced inter-node traffic in a stable cluster

  • Shell: greatly improved online help

  • Linux: upgraded to gcc 4.8.2

  • Upgraded to Intel TBB 4.2 Update 4

  • Upgraded to LevelDB 1.17

2.56. 1.1.3 - “Pythagoras” - 04/29/2014#

This maintenance release features a brand new administration interface, enabling users to monitor small to large clusters in just a couple of clicks!

This release is fully compatible with 1.1.0, 1.1.1 and 1.1.2.

2.56.1. Changes in this version#

  • Protocol version: 14

  • Administration console: brand new administration console with many exciting features

  • Daemon and web bridge: support for file based configuration

  • Daemon: fixed a race condition where an error could be returned to successful long standing batch operations

  • Web bridge: added CPU, disk and memory usage information

  • Java API: it is now possible to specify an expiry for all write operations

  • Comparison tool: fixed progress display

  • Upgraded to LevelDB 1.16

2.57. 1.1.2 - “Pythagoras” - 02/03/2014#

2.57.1. About#

This maintenance release focuses on disk usage control. It is now possible to limit the persisted size. When the limit is reached, any operation which would result in a size increase will be aborted and an error will be returned.

This release is fully compatible with 1.1.0 and 1.1.1.

2.57.2. Changes in this version#

  • Protocol version: 14

  • Daemon: added option to limit the persisted size

  • Daemon: fixed long log paths parsing

  • Web bridge: added network usage information

  • Comparison tool: new put (only) command

  • Comparison tool: added progress bar

  • Shell: fixed space related parsing bug

  • Upgraded to LevelDB 1.15

2.58. 1.1.1 - “Pythagoras” - 01/07/2014#

2.58.1. About#

This maintenance release comes with many new features and performance improvements. It is fully compatible with release 1.1.0.

2.58.2. Changes in this version#

  • Protocol version: 14

  • Daemon: various optimizations to reduce latency

  • Comparison tool: support for multithreaded benchmarks

  • C/C++ API: Added client-side logging

  • C++ API: Batch and prefix operations can now be chained

  • Java API: Support for batch operations

  • Java API: Support for expiry

  • Python API: Support for batch operations

  • Upgraded to LevelDB 1.14

  • Upgraded to TBB 4.2

  • Upgraded to Boost 1.55.0

2.59. 1.1.0 - “Pythagoras” - 09/16/2013#

2.59.1. About#

From Wikipedia, the free encyclopedia:

Pythagoras of Samos was an Ionian Greek philosopher, mathematician, and founder of the religious movement called Pythagoreanism. […] Pythagoras made influential contributions to philosophy and religious teaching in the late 6th century BC. He is often revered as a great mathematician, mystic and scientist, but he is best known for the Pythagorean theorem which bears his name.

This release brings major new features. quasardb now support prefix based research, configurable expiration and batch operations. These features are brought to you without compromising on performance or reliability.

2.59.2. Changes in this version#

  • Protocol version: 14

  • API: Support for prefix-based research

  • API: Support for configurable expiration

  • API: Support for batch operations (C/C++ only)

  • API: Deprecated streaming API

  • Upgraded to LevelDB 1.13

2.60. 1.0.1 SR1 - “Zeno” - 09/11/2013#

2.60.1. About#

This version is 100 % compatible with quasardb 1.0.1 “Zeno” and only includes important fixes.

2.60.2. Changes in this version#

  • Protocol version: 13

  • Windows API: reliability fix The unability to securely generate an unique path could result in an ungraceful failure of qdb_open

  • Daemon: Clarified many error messages

  • Daemon, web bridge: Daemonization command switch on UNIXes

  • Daemon, web bridge: The HUP signal is now ignored on UNIXes

  • FreeBSD: upgraded to Clang 3.3

  • Upgraded to Boost 1.54.0

2.61. 1.0.1 - “Zeno” - 07/08/2013#

2.61.1. About#

This maintenance release includes an important security fix.

No new functionnality has been added.

2.61.2. Changes in this version#

  • Protocol version: 13

  • Daemon: security fix Carefully crafted messages could cause the server to allocate an excessive amount of memory resulting in a denial of service

  • Console: Fixed glitches introduced in 1.0.0

  • API: The reported persisted size is now much more accurate

  • Daemon: Greatly improved performance for all status APIs

  • Daemon: Reworded some network error messages for clarity

  • Daemon: Minor performance improvement (less than 5%) for requests smaller than 1 KiB

  • Upgraded to Visual Studio 2012 Update 3

  • Upgraded to TBB 4.1 update 4

  • Upgraded to LevelDB 1.12

2.62. 1.0.0 - “Zeno” - 06/10/2013#

2.62.1. About#

From Wikipedia, the free encyclopedia:

Zeno of Citium was the founder of the Stoic school of philosophy, which he taught in Athens from about 300 BC. […] Stoicism laid great emphasis on goodness and peace of mind gained from living a life of Virtue in accordance with Nature.

After years of research and developement it is an overwhelming pleasure to annonce the availability of version 1.0.0. The last eighteen months have been dedicated to the everlasting quest of performance and stability. It is now time for the version number to reflect the level of quality and trustworthiness that quasardb delivers.

A big thank you to all our families, friends, partners and customers for their continued support that helped make quasardb a reality.

2.62.2. Changes in this version#

  • Protocol version: 12

  • API: New atomical conditional remove (remove_if) operation

  • API: New atomical get and remove (get_remove) operation

  • API: Can now iterate on entries

  • Daemon: Replica do not stay hot in memory to reduce memory usage

  • Daemon: Timeout for inter-node communications is now properly accounted on all platforms

  • Daemon: Fixed a race condition where a session could be freed twice during shutdown

  • Upgraded to TBB 4.1 update 3

  • Upgraded to LevelDB 1.10

2.63. 0.7.4 - 03/18/2013#

2.63.1. Changes in this version#

  • API: Can now retrieve a remote node’s configuration in JSON format

  • API: Can now retrieve a remote node’s topology in JSON format

  • API: Can now remotely stop a node

  • C/C++ API: Added a qdb_e_uninitialized value to the error enumeration

  • Python API: Improved documentation and added examples

  • Web bridge: Richer global status information

  • Web bridge: More verbose logging

  • Daemon: In case of a critical error a detailled status will be dumped to a separate file on disk (in addition to previously existing log errors)

  • Daemon: Stabilization is one order of magnitude faster in case of failure

  • Daemon: Improved eviction speed in all cases

  • Daemon: The daemon now exits right away if the listening port is unavailable

  • Daemon: Better and more coherent network log messages

  • Daemon: A node that was started with incoherent parameters will now be forced out of the ring

  • Daemon: Fixed ignored remove_all requests issue

  • FreeBSD: upgraded to clang 3.2 and libc++ 1

  • Upgraded to Boost 1.53.0

2.64. 0.7.3 - 02/11/2013#

2.64.1. Changes in this version#

  • New C++ API!

  • C and Java API: Added qdb_error to translate an error code into a meaningful message

  • C/C++ API: Can connect to multiple remote hosts at a time for increased client-side resilience

  • Java API: Added support for get_update and compare_and_swap operations

  • Console: Now display statistics for get_update and compare_and_swap operations

  • Daemon: Fixed invalid replication parameter logging

  • Daemon: Fixed invalid total size reporting

  • Daemon: Improved replication factor documentation

2.65. 0.7.2 - 01/14/2013#

2.65.1. Changes in this version#

  • Now officially named quasardb!

  • Daemon: Minimized thread switching to reduce latency

  • Various minor optimizations and improvements

  • Windows: Upgraded to Visual Studio 2012

  • Upgraded to Boost 1.52.0

  • Upgraded to TBB 4.1 SP1

  • Upgraded to LevelDB 1.9

2.66. 0.7.1 - 10/15/2012#

2.66.1. Changes in this version#

  • Daemon: Integrated licensing mechanism

  • Daemon: Fixed invalid statistics update

  • Upgraded to Boost 1.51.0

2.67. 0.7.0 - 09/04/2012#

2.67.1. Changes in this version#

  • Daemon: Automatic, integrated and distributed replication up to 4 copies

  • Daemon: Support for global configuration

  • Daemon: Fixed bug that could cause a connection reset between two nodes if they were using a half-duplex channel

  • Benchmarking tool: Added Redis support

  • Client API: Fixed bug that prevented the 32-bit Windows API to add entries larger than 4 GiB

  • Java API: Greatly improved performances, up to 100%!

  • Greatly improved the documentation

  • Upgraded to Boost 1.50.0

  • Known bug: the eviction, pagein and size counts reported in the administration console are invalid

2.68. 0.6.66 - 07/02/2012#

2.68.1. Changes in this version#

  • Client API: New streaming API (C only)

  • Client API: New compare and swap operation (C only)

  • Client API: remove_all is no longer experimental

  • Daemon: Faster lookup on clusters with more than 20 nodes

  • Daemon: Faster stabilization on clusters with more than 5 nodes

  • Daemon: Automatically detects the best memory eviction threshold (can be overriden)

  • Daemon: changed the default port from 5909 to 2836 (can be overriden)

  • Java API: Fixed invalid method name (delete instead of remove)

  • Upgraded to LevelDB 1.5

2.69. 0.6.5 - 06/08/2012#

2.69.1. Changes in this version#

  • Client API: Major performance increase (up to 100%) for small entries (below 1 KiB)

  • Client API: Added more error codes

  • Client API: Added status query function

  • Client API: Added new, atomic, get_and_update function

  • Client API: Added experimental remove_all function

  • Daemon: Greatly improved scalability for machines with more than 4 physical cores

  • Daemon: Removed obsolete options

  • Daemon: Improved Windows console logging performance

  • FreeBSD: Now requires FreeBSD 9.0 or later

  • FreeBSD: switched from gcc to Clang

  • Upgraded to LevelDB 1.4

  • Upgraded to Boost 1.49.0

  • Upgraded to TBB 4.0 SP4

2.70. 0.6.0 - 01/16/2012#

2.70.1. Changes in this version#

  • Python API: Brand new Python API!

  • Daemon: new “transient” option

  • Daemon: Improved memory management

  • Daemon: Improved performance for large entries

  • Daemon: Reduced latency

  • Upgraded LevelDB

2.71. 0.5.2 - 11/14/2011#

2.71.1. Changes in this version#

  • Windows: Digital signatures now include a timestamp.

  • Web bridge: Improved the internal data exchange format.

  • Daemon: When exiting under heavy load, the daemon could deadlock.

  • Daemon: Slight performance increase.

  • Client API: Improved performance on unreliable networks.

  • Upgraded LevelDB

  • Upgraded to TBB 4.0 SP1

2.72. 0.5.1 - 10/01/2011#

2.72.1. Changes in this version#

  • Java API: Major rework, better and easier than before!

  • Daemon: Added an icon in the Windows binary.

  • Daemon: Properly account the idle session parameter.

  • Daemon: Exit with an appropriate error message when the listening port is unavailable.

  • Client API: Made the connection process more resilient.

  • Upgraded LevelDB

2.73. 0.5.0 - 08/01/2011#

2.73.1. Changes in this version#

  • Peer-to-peer network distribution

  • Web bridge with JSON/JSONP interfaces

  • Java API

  • New persistence layer based on LevelDB

  • Lightweight HTML5 monitoring console

  • Reduced overall memory load

  • Improved performance by 10-20 %

  • Removed legacy code and API

  • Documentation!

  • The quasardb shell now handles binary input and output

  • Upgraded Linux and FreeBSD compilers to gcc 4.6.1

  • Upgraded to Boost 1.47.0

2.74. 0.4.2 - 05/26/2011#

2.74.1. Changes in this version#

  • Increased reliability

  • Major performance improvements for entries larger than 50 MiB

  • More verbose logging (if requested)

  • Reduced latency under extreme load

  • Reduced memory footprint

  • fix: The 0.4.1 Linux API could not be linked to due to a misconfiguration on our build machine

2.75. 0.4.1 - 05/07/2011#

2.75.1. Changes in this version#

  • Multiplatform Python API package with installer

  • Fixed FreeBSD invalid rpath

  • qdbsh can now process standard input and output

2.76. 0.4.0 - 04/22/2011#

2.76.1. Changes in this version#

  • Python API

  • Improved server network code

  • API and server are now available as two distinct packages

  • Fixed file logging date format

  • Installer for Windows version

  • Upgraded to Boost 1.46.1

  • Upgraded TBB to version 3.0 Update 6

  • Upgraded Windows compiler to Visual Studio 2010 SP1

  • Upgraded Linux and FreeBSD compilers to gcc 4.6.0

2.77. 0.3.2 - 02/26/2011#

2.77.1. Changes in this version#

  • Windows binaries are now digitally signed.

  • High-performance slab allocator is now used for logging.

  • Fixed a minor memory leak.

  • The Linux and FreeBSD binaries now have a rpath to automatically load libraries present in quasardb’s lib subdirectory.

  • Upgraded TBB to version 3.0 Update 5

2.78. 0.3.1 - 02/22/2011#

2.78.1. Changes in this version#

  • Asynchronous standalone TCP (IPv4 and IPv6) server

  • Fast monte carlo eviction

  • New high-performance slab memory allocator

  • Shell client

  • New API

  • May contain up to 1% of awesomeness

2.79. 0.2.0 - 11/11/2010#

2.79.1. Changes in this version#

  • Update and remove now accessible via the C API

  • More efficient logging

  • Improved internal memory model

  • Internal statistics

2.80. 0.1.0 - 07/26/2010#

2.80.1. Changes in this version#

  • First official beta version!

  • nginx support

  • User may add/generate/query through the C API

  • High performance asynchronous log

  • High performance query

  • Flat-file “trivial” serialization

  • Db maintenance tool