Releases: timescale/timescaledb-toolkit
1.18.0
1.17.0
1.16.0
Bug fixes
- #733: Fix a bug when rolling up overlapping heartbeat_aggs
- #740: When interpolating an 'locf' time weighted average, extend last point to interpolation boundary
- #742: Ignore incoming NULL values in hyperloglog rollup
Stabilized features
- #741: Stabilize
approx_count_distinct
- #748: Stabilize
approx_percentile_array
- #745: Stabilize date utility functions
- #751: Stabilize
min_n
/max_n
/min_n_by
/max_n_by
- #752: Stabilize
mcv_agg
, this was previously ourtopn_agg
Other notable changes
- #743: Remove support for direct upgrades from toolkit versions more than 1 year old. Toolkit versions 1.4.x and 1.5.x will have to upgrade to an intermediate version before upgrading to 1.16.0.
- #744: Fix nightly CI failures from building TimescaleDB on Enterprise Linux
- #749: Added num_live_ranges, num_gaps, and trim_to accessors for heartbeat aggregates
Full Changelog: 1.15.0...1.16.0
1.15.0
Stabilized features
- #722: Stabilize heartbeat aggregate (
heartbeat_agg
). - #724: Stabilize
integral
andinterpolated_integral
for time-weighted-average (time_weight
). - #723: Stabilize state aggregate (
state_agg
). Note that this was previously known astimeline_agg
before version 1.14.0.
Bug fixes
- #715: Fix out-of-bounds indexing error in
state_agg
rollup.
Other notable changes
- #716: Add arrow operator support for counter aggregate and time-weighted aggregate interpolated accessors.
- #716: Remove experimental versions of interpolated accessors for counter aggregate and time-weighted aggregates. The stable versions introduced in 1.14.0 should be used instead.
- #723: Add
state_at
function forstate_agg
. - #709: Update pgx version to 0.7.1.
Full Changelog: 1.14.0...1.15.0
1.14.0
1.14.0 (2023-02-09)
Stabilized features
- #701: Stabilize
candlestick
family of functions. - #650: Stabilize
interpolated_delta
&interpolated_rate
for counter aggregate, andinterpolated_average
for time-weighted aggregate.
Bug fixes
- #660: Heartbeat aggregate rollup should interpolate aggregates
- #679: Heartbeat aggregate rollup producing invalid aggregates.
Other notable changes
- #696 : Add
rollup
forfreq_agg
andtopn_agg
. - #692: Support specifying a range (start and end parameters) to
duration_in
for the state_agg. - #692: Removed
next
parameter from interpolated state aggregate functions. - #692: Renamed
state_agg
tocompact_state_agg
andtimeline_agg
tostate_agg
. - #699:
interpolated_duration_in
/duration_in
/interpolated_state_periods
/state_periods
have the first two arguments swapped: now the aggregate is first and the state is second to be aligned with our established convention. - #699:
into_values
/into_int_values
now returns a table with intervals instead of microseconds.
Shout-outs
- @gugu for requesting adding
rollup
tofreq_agg
andtopn_agg
.
Full Changelog: 1.13.1...1.14.0
1.13.1
1.13.0
New experimental features
-
#615: Heartbeat aggregate
Users can use the newheartbeat_agg(timestamp, start_time, agg_interval, heartbeat_interval)
to track the liveness of a system in the range (start_time
,start_time
+agg_interval
). Each timestamp seen in that range is assumed to indicate system liveness for the followingheartbeat_interval
.Once constructed, users can query heartbeat aggregates for
uptime
anddowntime
, as well as query forlive_ranges
ordead_ranges
. Users can also check forlive_at(timestamp)
.Heartbeat aggregates can also interpolated to better see behavior around the boundaries of the individual aggregates.
-
#620: Expose TDigest type
This is a prototype for building
TDigest
objects client-side, forINSERT
into tables.This is a lightly tested prototype; try it out at your own risk!
-
#635:
asof
joins for timevectorsThis allows users to join two timevectors with the following semantics
timevectorA -> asof(timevectorB)
. This will return records with the LOCF value from timevectorA at the timestamps from timevectorB. Specifically the returned records contain, for each value in timevectorB, {the LOCF value from timevectorA, the value from timevectorB, the timestamp from timevectorB}. -
#609: New
approx_percentile_array()
functionUsers can use the new
toolkit_experimental.approx_percentile_array(percentiles)
to generate an array of percentile results instead of having to call and rebuild the aggregate multiple times. -
#636: New
timeline_agg
aggregate, which is similar tostate_agg
but tracks the entire state timeline instead of just the duration in each state. -
#640: Support
rollup
forstate_agg
andtimeline_agg
. -
#640: Support integer states for
state_agg
andtimeline_agg
. -
#638: Introducing Time Vector Templates.
Users can use the new experimental function
toolkit_experimental.to_text(timevector(time, value),format_string)
to render a formatted text representation of their time vector series. These changes also includetoolkit_experimental.to_plotly(timevector(time, value))
, which will render your time vector series in a format suitable for use with plotly.
Bug fixes
- #644: Fix bug in Candlestick aggregate and reenable partial aggregation.
Other notable changes
Full Changelog: 1.12.1...1.13.0
1.12.1
Bug fixes
- #624: Remove partial aggregation for Candlestick aggregates. We've determined that the cause for the bad results lives somewhere in the functions that are used to support partial aggregation. We can at least prevent folks from running the candlestick aggregates in parallel mode and hitting this bug by dropping support for partial aggregation until we've resolved the issue.
1.12.0
New experimental features
-
#596: Introduce Candlestick Aggregate.
Users can use either thetoolkit_experimental.candlestick_agg(timestamp, price, volume)
aggregate or thetoolkit_experimental.candlestick(timestamp, open, high, low, close, volume)
function, depending on whether they are starting from tick data or already aggregated data.
Both the aggregate form and the function form ofCandlestick
support the following (experimental) accessors (in addition to being re-aggregated viarollup
):
open
,high
,low
,close
,open_time
,high_time
,low_time
,close_time
,volume
,vwap
(Volume Weighted Average Price)NOTE:
- This functionality improves upon and replaces the need for
toolkit_experimental.ohlc
which might be removed in the next release. - This functionality is not safe to run in parallel mode yet.
- This functionality improves upon and replaces the need for
-
#590: New
min_n
/max_n
functions and relatedmin_n_by
/max_n_by
.
The former is used to get the top N values from a column while the later will also track some additional data, such as another column or even the entire row.
These should give the same results as aSELECT ... ORDER BY ... LIMIT n
, except they can be composed and combined like other toolkit aggregates.
Bug fixes
- #568: Allow
approx_count
accessor function to take NULL inputs. - #574: Add default unit to interpolated_integral.
Other notable changes
- RPM packages for CentOS 7 have returned.
- New Homebrew formula available for macOS installation:
brew install timescale/tap/timescaledb-toolkit
. - #547: Update pgx to 0.5.0. This is necessary for adding Postgres 15 support coming soon.
- #571: Update CI docker image for pgx 0.5.0.
- #599: Reduce floating point error when using
stats_agg
in moving aggregate mode. - #589: Update pgx to 0.5.4.
- #594: Verify that pgx doesn't generate CREATE OR REPLACE FUNCTION.
- #592: Add build script option to install in release mode.
Shout-outs
- @zyro for reporting null handling issue on
count_min_sketch
.
Full Changelog: 1.11.0...1.12.0
1.11.0
New Experimental Features:
- arm64/aarch64 DEB packages are now available for Ubuntu 20.04 (focal) & 22.04 (jammy), and Debian 10 (buster) & 11 (bulleye). @epgts
- #526: Add
integral
andinterpolated_integral
functions for the time_weight aggregate. Makestrapezoidal
an alias forlinear
intime_weight
as it might be a more familiar numeric integral method for some. @Smittyvb - #517: Add a gap preserving
lttb
namedgp_lttb
to handle downsampling of data with large gaps. @WireBaron - #513: Add
first_val
,last_val
,first_time
andlast_time
totime_weight
andcounter_agg
to access the first and the last data points within the aggregate data structures. @rtwalker - #527: Rename
{open, high, low, close}_at
as{open, high, low, close}_time
to be consistent with newly addedfirst_time
andlast_time
accessor functions. @rtwalker
Stabilizing Features:
- #498: Stabilize
asap_smooth
aggregate. @WireBaron
Bug Fixes:
- #509, #531: Fix bugs in
hyperloglog
. Error rates are now significantly more consistent when the number of buckets are close to the actual cardinality. @BenSandeen @davidkohn88 @WireBaron @jerryxwu - #514: Fix a bug in
toolkit_experimental.interpolated_delta
@WireBaron - #503: Fix bitwise logic in timevector combine @WireBaron
- #507: Fix a typo in
approx_count_distinct
@jeremyhaberman
Other Notable Changes:
- DEB packages for Ubuntu 18.04 (Bionic) on amd64 are now available.
- #536: Document requirement to use same compiler for cargo-pgx and Toolkit
- #535: Make tests pass in Canadian locales @Smittyvb
- #537: Enforce
cargo fmt
in CI @Smittyvb - #524: Updating Toolkit To Start Using Cargo Fmt @thatzopoulos
- #522: Move update-tester tests to markdown files @thatzopoulos
Shout-outs:
- @BenSandeen for fixing typos and errors in the hyperloglog++ implementation
- @jaskij for reporting security advisories and suggestion on documenting support for PG14
- @jeremyhaberman for fixing a typo in
APPROX_COUNT_DISTINCT_DEFAULT_SIZE
- @jledentu for reporting an error on
interpolated_delta
- @stevedrip for a very detailed bug report on hyperloglog++ and suggestions for fixing it
Full Changelog: 1.10.1...1.11.0