Update dependency org.questdb:questdb to v9.2.2 #319
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
9.0.3->9.2.2Release Notes
questdb/questdb (org.questdb:questdb)
v9.2.2Compare Source
QuestDB 9.2.2 is another stability release, primarily fixing some query snags. With this, we've packaged a performance improvement for vertically-scaled machines, and some new SQL functions.
For any questions or feedback, please join us on Slack or on Discourse.
See also our prettier release notes page.
Breaking changes 💥
cairo.txn.scoreboard.format=1), it will no longer take effect, but the instance will boot and function as normal.MANUAL PERIODviews will now only be refreshed by manual trigger, and not also automatically when the time period ends.MANUALview should refresh automatically.SQL
New weighted statistics functions
weighted_avg(DD)- computes the weighted average based on a 'value' column and a 'weights' column.weighted_stddev_rel(DD)- computes the weighted standard deviation based a 'value' column and a 'reliability weights' column.weighted_stddev_freq(DD)- computes the weighted standard deviation based on a 'value' column and a 'frequency weights' column.Changelist
INclauses with INT/LONG columns containing-1return incorrect results. by @kafka1991 in #6439Full Changelog: questdb/questdb@9.2.1...9.2.2
v9.2.1Compare Source
QuestDB 9.2.1 is a stability release, bringing a number of fixes, and some key performance enhancements, including markout horizon
CROSS JOINupgrades, and improvements to SQL query latencies across the board.For any questions or feedback, please join us on Slack or on Discourse.
See also our prettier release notes page.
Highlights
Materialized Views
Materialized Views now have simplified syntax for building views with only-complete buckets, by specifying that the refresh period should match the sample by interval.
In addition,
PERIODviews now supported intervals in seconds.CROSS JOIN
We've released a new optimisation for certain
CROSS JOINqueries, specifically for markout analysis. This is a new query hint, which drastically speeds up building a market horizon table. Here is an example:On an
r7a.4xlargeinstance:This is part of a series of features focused around optimising post-trade analysis, and driven directly by user feedback, so keep it coming!
Performance
GROUP BY/SAMPLE BYqueries.count_distinct()has been sped up, up to2xbased on standard benchmarks.munmapusage:cairo.file.async.unmap.enabled=trueSQL
files(s)andglob(s)for scanning and filtering the server's filesystem.glob(Ss)function, an alternative toLIKEand~that uses glob-style syntax.first_not_null(array)andlast_not_null(array)group by functions./api/v1/sql/validate.Changelist
size()by @kafka1991 in #6409files(s),glob(s)andglob(Ss)functions by @nwoolmer in #6391questdb_json_queries_connectionsgauge by @nwoolmer in #6444New Contributors
Full Changelog: questdb/questdb@9.2.0...9.2.1
v9.2.0Compare Source
✨ QuestDB 9.2: Native DECIMAL Type
QuestDB 9.2.0 brings the long-awaited
DECIMALtype, a bespoke decimal type, declared usingDECIMAL(precision, scale). Under the hood, the database automatically selects an optimal storage size, fromDECIMAL8(1 byte) up toDECIMAL256(32 bytes). All of our usual arithmetical operations are supported out-of-the-box, making it easy to adopt and avoid precision loss.With this new
DECIMALtype, and our recently released support for nanosecond timestamps (TIMESTAMP_NS), QuestDB has never been a better fit for capital markets!This release also brings upgrades to our already-fast
ASOF JOINqueries, with a newDensealgorithm optimised for distant row matching. This marks our fourthASOF JOINalgorithm, helping you to ensure your temporal join queries stay performant, regardless of your underlying data distribution.For any questions or feedback, please join us on Slack or on Discourse.
See also our prettier release notes page.
Highlights
DECIMAL(precision, scale)High-precision arithmetic
DECIMALallows for arithmetic without precision loss, and only a slightly performance cost (2x forDECIMAL64vsDOUBLE); aoperations which would silently lose precision withDOUBLEwill instead warn the user, preserving data integrity.Configurable scale
Configure precision and scale directly, without worrying about the underlying data type, with support for up to
76digits!API compatibility
DECIMALis supported over PG Wire, ILP and HTTP APIs, with parquet support coming very soon.Use cases
See the decimal concepts documentation for more information.
Dense ASOF JOIN
QuestDB 9.2.0 introduces a new 'dense'
ASOF JOINalgorithm, optimised for datasets where the matching rows are likely to be far apart. This complements the existingASOF JOINalgorithms to ensure that your queries can achieve the best performance regardless of your data distribution.The choice of which algorithm to use is important, and explained in detail in the optimizer hints documentation.
Here is a summary of the algorithms:
Fast; optimised for closely matching rows, using a binary-search and backwards scans.Memoized; the same asFast, but more tolerant of occassional distant matches.Light; optimised when the RHS table has a highly selective filter, using forward-only scan on RHS table.Dense; optimised for distant matches, using a binary-search, bidirectional scans and memoized results.We will continue to iterate on this feature in conjunction with the upcoming performance optimisations for markout analysis.
Changelist
ColumnTypeTagenum by @RaphDal in #6382CharSequence->inthash map forWalWritersymbols by @RaphDal in #6371Full Changelog: questdb/questdb@9.1.1...9.2.0
v9.1.1Compare Source
QuestDB 9.1.1
QuestDB 9.1.1 focuses on data interoperability, nanosecond precision, and analytical performance.
This release introduces Parquet export, a faster ASOF JOIN for sparse symbol data, and several engine optimizations improving both query throughput and stability.
Highlights
Data Interoperability
COPY TOnow supports exporting query results directly to Parquet format for seamless integration with data-lake and analytics tools such as Spark, Snowflake, and Athena (#6008).read_parquet()recognizes timestamp-sorted data, significantly accelerating ingest for large, time-ordered datasets (#6079).Precision
rnd_symbol_zipfn()function produces high-cardinality symbol distributions following a Zipf / Power Law — ideal for testing realistic workloads (#6227).Performance
count_distinct()now uses a lazy merge strategy, reducing memory usage (#6268).🧱 Parquet Export
QuestDB now supports exporting tables or queries to Parquet format using the
COPYcommand — enabling direct data exchange with data lakes and analytics pipelines.Users can also parquet data ad-hoc using
/exp?fmt=parquet(and omittingCOPY).Benefits
🧮 New SQL Functions
rnd_symbol_zipfn()– generates high-cardinality symbols following a Power Law distribution (#6227).last(array)– returns the last element from an array expression (#6291).nanosfunctions and improvedCASTbehavior for date types (#6247).⚙️ SQL & Query Engine
read_parquet()for faster imports (#6079).GROUP BYon joined tables (#6275, #6332).GROUP BYandSAMPLE BYto avoid duplicate group keys (#6275).SAMPLE BYwith mixed timestamp / aggregate expressions (#6254).SAMPLE BY(#6306).WHERE sym1 = sym2filters (#6321).NullPointerExceptionissues in window and optimizer code paths (#6264, #6265).📥 Ingestion (ILP)
LineHttpSenderLoggingTeststability issue (#6315).🧩 Core & Operations
Resource & Reliability
NullPointerExceptioninColumnPurgeJob(#6274).HTTP Server
Web Console
⚡ Performance & Stability
GroupByArraySinkfor optimized aggregation (#6237).count_distinct()memory usage via lazy merge (#6268).🛠 Build & Infrastructure
gosuin Dockerfile to address CVE-2023-28642 (#6252).👩💻 Developer Experience
🌟 New Contributors
GroupByArraySinkand array aggregation functions🔗 Full Changelog
Compare 9.1.0 → 9.1.1 on GitHub
✅ Summary
QuestDB 9.1.1 extends the database’s analytical performance and interoperability, introducing Parquet export, nanosecond ingestion, and numerous query engine optimizations.
This release strengthens QuestDB’s position as a high-performance, open, and developer-friendly time-series database for real-world workloads.
What's Changed
SqlOptimiser::rewriteOrderByby @kafka1991 in #6265PARQUETfunctionality toCOPYby @nwoolmer in #6008v9.1.0Compare Source
QuestDB 9.1.0 is now available. It is a feature-rich release bringing nanosecond timestamp data type, performance and stability improvements.
Highlights
TIMESTAMP_NStype adds nanosecond precision to time-series data (#5685).SHOW COLUMNS(#6130, #6128).IN (...)queries on large lists (breaking change 💥).Nanosecond timestamp support 🛡️
QuestDB now supports nanosecond precision with a new data type:
TIMESTAMP_NS.TIMESTAMPtype remains microsecond precision and is unchanged.TIMESTAMP_NScan be used in all contexts whereTIMESTAMPis valid (columns, functions, joins, ordering, etc.).TIMESTAMP(microsecond).TIMESTAMP_NS, you can safely roll back to QuestDB 9.0.3 or earlier.TIMESTAMP_NS, older versions will not recognize this type. Such tables must be dropped before rolling back.TIMESTAMP_NSis supported by existing QuestDB drivers (JDBC, Go, Python, etc.), provided you are on a recent release of the driver. No protocol upgrade or client code changes are required.Symbol map auto-scaling (opt-in)
Symbol column map capacity now scales automatically with the number of distinct values, removing one of the biggest friction points in high-ingestion workloads.
Before: symbol map capacity was fixed at table creation.
Now: with auto-scaling enabled, symbol capacity grows dynamically:
Backward compatibility:
Opt-in instructions:
Enable via configuration property, system's restart is not required:
Continuous profiling support (opt-in)
QuestDB now ships with the Async Profiler integrated out-of-the-box. This dramatically reduces friction when diagnosing performance issues such as high CPU usage or queries that appear slow.
Examples
Start a 30s CPU profiling session and generate an interactive HTML flamegraph:
SQL & Query Engine
Ingestion (ILP)
Core & Operations
Continuous profiling support
QuestDB now integrates the Async Profiler for low-overhead performance diagnostics.
questdb.sh start -p)Threading and resource usage
Reliability fixes
writerTxn(#6090)Path(#6124)Breaking change 💥
INlist queries now use hash-based lookups instead of binary search, delivering significant performance gains for large lists.INvalues.cairo.sql.jit.max.in.list.size.threshold(default: 10,000).Migration guidance:
cairo.sql.jit.max.in.list.size.threshold.INlists out of the box.This change matters most for queries with very large
INlists (thousands of values), often seen in data filtering, batch imports, or security/ACL checks. These workloads will now execute much faster by default.What's Changed
timestampandlongwindow functions by @bluestreak01 in #6130doublecolumningest to symbol column by @kafka1991 in #6143INSERT INTO SELECTqueries that rely on implicit casting by @nwoolmer in #5586EXPLAINcommand by @glasstiger in #6200rnd_symbol_zipf()function for generating skewed symbol distributions by @bluestreak01 in #6217New Contributors
Full Changelog: questdb/questdb@9.0.3...9.1
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.