content/flux/v0/release-notes.md
influxdb source.github.com/benbjohnson/immutable.github.com/SAP/go-hdb.histogramQuantile()
correctly handle cases of zero samples.iox.sqlInterval().onNonmonotonic parameter to histogramQuantile()
to define behavior when bin counts are not monotonically increasing.contrib/qxip/hash package:
use-after-free in optimized String array.geo.totalDistance()
to aggregate total distance of consecutive points.iox.sqlInterval() to
convert Flux durations to SQL interval strings.contrib/qxip/hash package
which includes hashing functions.contrib/qxip/logql package
which provides functions for working with
Grafana Loki and LogQL.contrib/qxip/clickhouse
package which provides functions for querying data from
Clickhouse.PartialOrd and Ord to ast::Position.salsaDatabase to list of feature passed to Rust.testing.ShouldError should error when no error occurs.holtWinters to improve performance.types.isNumeric() to test for numeric values.experimental.unpivot(), don't add the _field column to the
group key by default.dynamic.isType() function.dynamic.asArray() function.iox.sql() function.toUInt() test to use the correct conversion behavior.Run source helper._vecFloat.contrib packages:
stacker dependency.array package.sort limit to skips chunks with no rows.array.from().experimental.unpivot()
for non-field and non-group-key columns.experimental.diff().fluxtest.experimental.unpivot() to
work when the _time column is missing.function package to register a source or transformation.fillValueTime.logicalVectorEvaluator.experimental.diff().experimental/polyline package
for downsampling data.Spec package in the "headless" REPL.test,
consequent, or alternate.float() as _vectorizedFloat().Stringify utility function for table.Chunk.testing.diff() to use experimental.diff() permanently.float() builtin function.fluxtest to use package name with test and skip flags.testing.shouldError() to use regular expression matching instead of string matching.buildinfo documnentation comments to match latest go fmt.apiKey parameter in zenoss.event()
and zenoss.endpoint().vectorizedConst feature flag.date/boundaries package in favor of experimental/date/boundaries.pagerduty.sendEvent().strings.substring() to check bounds using rune array instead of string length.map().location option
in the boundaries package.testing.diff() to use
experimental.diff() as its base.map().aggregateWindow()
to correctly handle null values when using sum or mean.to() and
wideTo() to skip empty tag
values.experimental.to() to
influxdata.influxdb.wideTo().attributes
to contribute to
formatter
details.experimental.catch().testing.shouldError().httpWriter struct to skip invalid floats.join() to validate group keys.covariance().experimental.http.get.experimental.csv.from().experimental.array into the
array package:
experimental.http.requests into the
http.requests package:
experimental.bitwise into the bitwise
package.Test statements. New statements are written with TestCase.joinjoin
package such as join.full().initialZero
parameter to the derivative function.Symbol from PackageExports.time to the date
package to convert any timeable into datetime.testing.load()
from testutil.yield().findColumn()
to handle multi-buffer tables.testing.loadStorage().FromStr to allow the Flux LSP (language server protocol) CLI to run with
optional Flux features.From implementations for Node/NodeMut.lsp-types.pretty.rs-based MonoType formatter.map() to properly handle shadowed columns._status tag to PagerDuty records.json tags for the transport profiles in statistics.Metadata in Flux statistics.movingAverage() and
cumulativeSum() optimizations
by default.map().hourSelection().date.scale() to allow for dynamic duration changes.experimental.preview().date.add() and date.sub() to work correctly with timezones enabled.hourSelection() to support overnight time ranges.table.fill is present.MultiplicativeOperator in MultiplicativeExpression.Expr node to the visitor API.JoinOpSpec.TableNames in favor of JoinOpSpec.params to stay
consistent inside tableFind().SortLimit for empty input group.testcase extension.map().date.truncate().flux CLI.EquiJoinPredicateRule.map() test case to include a range.BaseLocation.file to Some("").strings.joinStr panic when it receives a null value.go generate statement.prometheus.scrape type signature to correctly return a stream.finish.cffi feature to reduce WASM binary size.flux CLI with a new flux CLI that starts a Flux REPL by
default or executes a Flux script via stdin.SetFinalizer.addDuration() and
subDuration() from the experimental
package to the date package.cffi feature.strings.substring().concurrencyLimit feature flag and keep it in the dependencies.internal package.join() to properly handle divergent schemas.testcase format to prevent unnecessarily nesting the
body of a test case.strings.substring() check bounds correctly.testcase a semantic check instead of an error.finish state to parallel-merge and always protect with a mutex lock.gosnowflake library to prevent file transfers.universe package.map() test.fill() to use narrow transformation.Record::fields iterator.estimate_tdigest method in quantile() to process any numeric value.aggregateWindow() for specific aggregate transformations.map() to handle missing columns.Makefile.cargo doc build errors.iox.from() and generate.from() to use proper stream annotation.[A], [A:B] etc means in errors.buckets() function return a stream.TableObject guards.TagColumns in to() that may get modified into the transformation.stop parameter to InfluxDB schema functions.os.Exit calls and allow defer executor.Close to run.requests.peek() to
return HTTP response data in a table.display() to represent any value as a string.map() that is columnar and supports vectorization.values package.flux.Bounds to plan/execute.Bounds.experimental/http/requests package
to support generic HTTP requests.experimental/iox package and a
placeholder for the iox.from() function.MonoType::parameter and MonoType::field.http provider.die builtin in the universe package.Get methods to metadata.sort |> limit operations.location option support to the date package.Symbol.unify call.to transformation to use
narrow transformation.codespan.internal/debug.opaque function.experimental.addDuration()
and experimental.subDuration().Invalid.union() transformation.timeShift() transformation.union transformation.Len().geo.filterRows tests.pkg-config to support aarch64-apple-darwin.epsilon parameter for testing.diff to 0.000001.semantic::Error.FunctionExpr.GOPATH in Dockerfile_build.rust-toolchain.difference()
to ensure increase() returns more accurate results on counter reset.sort() and derivative() by default.fluxdoc error messages.length() is given a stream of tables.json.encode() is given a stream of tables.experimental/geo package.is_type to query the runtime type.Context._).<-) in fluxdoc.cargo doc.fluxdoc formatting documentation.runtime.now() and related updates.fill() to return tables unchanged
when using usePrevious to fill a non-existent column.runtime.now() to return the same time throughout a script execution.sql package.fluxdoc.mqtt.flux CLI that starts the REPL if no argument is given.contrib/bonitoo-io/servicenow package
and support for ServiceNow events.component and customDetails parameters to pagerduty.sendEvent().fluxdoc parser to capture more data.contrib/bonitoo-io/servicenow to the list of fluxdoc exceptions.http provider.map().fluxdoc dump command.libflux.timezone package with fixed offset location.record.get() function to
dynamically retrieve record properties.prometheus.histogramQuantile()
to support multiple histograms and metric format versions.window(),
aggregateWindow(), and
experimental.window().interval package.mqtt.publish() function.retain parameter to
mqtt.to.range() before window() to set query time bounds in tests.Fresher instance for each package.time package.Vector monotype.derivative() transformation.sample.alignToNow().Staticcheck linter in executetest.doc package.derivative() from attempt to replicate a non-existent bug.events.duration()
to properly handle multiple buffers.group to use new GroupTransformation interface.experimental/record package.contrib/bonitoo-io/hex package
to work with hexadecimal string values.allowAllFiles parameter
in MySQL DSNs.repeat function.flux-dump-docs use a nested documentation structure.boolean package to prelude.unknown type panic when using difference().sampledata package with basic sample datasets.GroupTransformation transport.FormatDuration method that can be exported in other repositories.flux wasm crate and moved it to lsp._time to status sorting.unknown type invalid in reduce() function.limit() correctly resets the offset after processing a partial buffer.stdlib documentation and updated WASM functions.transport in aggregate transformations.flux_types issue.fill() function fails when the specified fill column doesn't exist.link parameter to function structs.filter() to use narrow transformation.strings package.regexp package.die error code to invalid.contrib/sranka/webexteams package.join() to produce columns of equivalent length when combining mismatched schemas.sortedPivot and update sortedPivot kind.Copy on ast::Position.to() function to properly close the writer on error.libflux include paths to use pkg-config.extends parameter.sleep() function.pivot() transformation.table.fill() when aggregateWindow(createEmpty: true) is used.--skip flag to the flux test command to skip specific tests.experimental.to()
to use the Flux influxdb provider.math.atan2() parameters.stdlib.testcase should not use testing.load().movingAverage() creates columns with the same length when n is the size of the input.distinct() appends null values without creating invalid tables.exclude parameter to pagerduty.dedupKey()._value column.FunctionLiteral precedence to preserve parentheses.tabstop processing from formatter.map type error as user error.group_no_agg_table acceptance test to run in a consistent order.xcc.sh release dependency.staticcheck linter failures.to() function
writes to a remote InfluxDB instance.Assert_eq! output.comrak dependency.CARGO_HOME after removing privileges.9999 to 8086.flux fmt step to the continuous integration pipeline.window implementation to use interval.Window.today() function.if expressions.table.fill() function
to fill empty tables with a single row.dict type.0.0.0.0 to URL validator.stdlib/testing.mssqldb dependency for Go 1.16.stdlib.debug.slurp() and debug.sink().experimental/influxdb
and experimental/usage packages.fmt subcommand to the flux CLI to apply formatting to Flux files.stdlib and stdlib/testing.codecov job.astutil package for AST utilities such as formatting.group_no_agg_table.Comment fields to Go AST structs to preserve comments in the AST.testing.load for using raw tables in tests.buildinfo.derive helper attribute after derive macro.FnvHasher for hash maps.tickscript package.if else statement in aggregate.window().done.libflux.as_user parameter from slack.message payload.experimental.kaufmansAMA() function signature.extends capability to testcase block to extend tests using a relative path to another file.NoHeader configuration for the csv decoder.interval package and documentation.integral() function signature.window() function signature.HashMap to BTreeMap in the conversion functions from AST to semantic.tdigest.interval package to window transformation.IsZero method on time windows.testing/expect package for test expectations../stdlib to ..fluxdoc command to generate JSON and HTML from Flux source code.xxhash.Value.interval package.Control function.test command to be used by external libraries..tar and .zip archives.csv.from() only returns one result.extern parsing code to return a more descriptive error message.now option before running a Flux script.testcase AST into pure flux.Dockerfile_build.testcase statement.tabwriter to vertically align tab stops.fluxinit package as an alternative to importing builtin.cardinality() function to InfluxDB package.pivot() does not exist.operator profiler.events package.tableFind and related functions with profiler results.orTime parameter
of lastSuccess().operator profiler is not enabled.write_string.influxdata/influxdb/tasks package with new location of execute dependencies.Dockerfile_build.experimental.join.builtin statements in code formatting.v1 package to schema package.ast.TextPart is properly escaped when formatting.source.Run.Aggregate.window for an alternative windowing aggregate.range() function and update type signature.lastSuccess() in the tasks package.aggregateWindow.sql package.TypeExpression to BuiltinStmt and fix tests.timeWeightedAvg() function).integral()
with linear interpolation.integral().tasks.lastSuccess function
to retrieve the time of the last successful run of an InfluxDB task.profiler package.nulls parameter to gen.tables().array.from() function to convert Flux values into a table.correlationKey parameter from geo.toRows and geo.shapeData.MonoType and TypeExpression.rows.map.map() function (user-contributed /contrib/jsternberg/rows package).influxdb.select() function (user-contributed).parse_function in parser/mod.rs.parse_record to return MonoType for consistent results from functions
used by parse_monotype.mod.rs with parse_record.mod.rs with parse_constraints.mod.rs with ArrayType and add Array to the Monotype enumeration.do calls will fail with an empty table.discord.endpoint() function.mod.rs with parse_type_expression and other supporting functions.Find_var_type() API.stringify method for a table and a diff utility.universe.filterfrom() to use Timeable.diff output to release script on error.bad_sqlite_path1 test.every is non-negative.Timeable constraint to integer type to support integer values in
time-related function parameters.http.pathEscape() function.date functions to accept time and duration types.now in execution dependencies for tableFind().Timeable constraint for time and duration types.sql package.sql package.with operator is used.stdlib Flux dependencies from the Flux build.rs.libflux.json.parse().go generate call to libflux in stdlib.libflux.json.parse() test.json.parse() function.date package.This version of Flux introduces an updated type inference system that improves performance, error messaging, and usability of the Flux Language Server Protocol (LSP).
group() function.fieldKeys() and
measurementFieldKeys()
to v1 package.plantest.RuleTestCase.experimental.chain() function.findColumn()
and findRecord() functions.false if contains() is called with an empty set.buckets() and v1.databases() calls.influxdb source.pkg-config.Eval() and EvalAST() use libflux for parsing and analysis.lookuptype function for stdlib builtins.TimeBounds for influxdb.fromRemote.NewDefaultClient.filter() function.filter() transformation.WindowProcedureSpec in Copy().go generate on libflux when go generate is run on stdlib.map() overwrites group column.StringExpression.null.null keyword in extern field.RemoveTrivialFilterRule.HashMap in semantic package to BTreeMap.flatbuffers dependency.merge_packages allow no package clauses.CheckKind when evaluating logical expressions.go generate.test-bench config for Circle CI.JoinStr returns a string, not an empty record.map().component field from API.map() tests with null values.make generate to generate stdlib.TableObject test.LocalRange on nil scope.length() tests.union().holtWinters() to make seasonality optional.ScopeComparer with ScopeTransformer.LocalRange in compile tests.to().TableObject test case to compile.TableObjects to type Array.tableFind() to use.system.time() checks context for override.alignTime() tests.epsilon parameter to testing.diff().experimental.alignTime() function.execute.Source.testing.diff().GroupLookup.experimental.join() function.shapeData() function to Geo package.stateChanges() function.set -x in the xcc script.elapsed() aggregate.cumulative_sum().csv package.compiler.compilerScope with a nil value.Scope as base.geo package.tableFind does not have an execution context.rate() function.query package.derivative() works properly across multiple buffers.tripleExponentialDerivative().window() function.stdlib package.libflux and liblibstd for flux-config.libstd into the lib directory instead of libflux.stdlib when using a module.uuid library to improve security.derivative() works properly across multiple buffers.tags line from local tags.libflux and libstd for flux-config.libstd into the lib directory instead of libflux.stdlib when using a module.limit() transformation.group() transformation.onEmpty parameter for filter().count builtin type.experimental.set builtin type.influxdb.to to be a passthrough.fill builtin type.scan_with_regex.timeout parameter to experimental http.get().flux-config when no version is present._) in type expressions.BufferedTable.pivot() function.libflux.<= and >= are comparable AND equatable.PartialEq for polytypes.Semantic.Walk._field.walk_rc public.Visitor uses Rc for nodes.EvalOptions.µs..flux tests in-place.prometheus.scrape() to be used by histogramQuantile().sql.from(), sql.to(), and socket.from().keep() and drop() throw an error if merging tables with different schemas.experimental/prometheus package._time.data parameter in monitor.check().universe package to use flux errors throughout.filter() to pass through tables when possible.benchmark() function to the testing package.sql.from() connection leak.mqtt.to() topic parameter.internal/promql/quantile behavior match PromQL quantile aggregate.join() reject input tables lacking on columns.Hex.Dump to hex.EncodeToString.to use URL validator.token parameter from pagerduty.endpoint.http.post respects the context.from().pagerduty.severityFromLevel() helper function.CheckKind in memberEvaluator.http.basicAuth function.monitor.from and monitor.logs.stateChanges function.map.http.post requests.secrets.get function.reset() check for non-nil data before calling Release().notify function.holtWinters panic.interpreter.function.holtWinters() panic.interpreter.function.http and json to prelude.alerts.check() function.alerts.notify function.kaufmansER() and kaufmansAMA() functions.experimental.to() function.experimental.set() function to update entire object.experimental.objectKeys() function.tripleExponentialDerivative() function.json.encode() function.mqtt.to() function.mode() now properly considers nulls when calculating the mode.http and json to prelude._test.flux.{{% warn %}}
In Flux 0.39.0, holtWinters() can cause the query engine to panic.
Flux 0.40.2 resolves this panic.
{{% /warn %}}
tail() function.http.post() function.deadman() function.group() function with mode extend.chandeMomentumOscillator() function.hourSelection() function.date.year() functionsql.to().relativeStrengthIndex() transformation.doubleEMA() and tripleEMA()).holtWinters() transformation.keepFirst parameter to difference().keep() to run regardless of nonexistent columns.
If all columns given are nonexistent, keep() returns an empty table.exponentialMovingAverage().null.range call to some end-to-end tests.strings.replaceAll.movingAverage() and added timedMovingAverage.elapsed() function.mode() function.sleep() function.difference() so that it returns an error instead of panicking when given a _time column.map() error if return type is not an object.ColListTableBuilder.with.movingAverage() to timedMovingAverage and added new
movingAverage() implementation.mergeKey parameter to map() in deprecated state.mergeKey parameter from the map() function.sql.to() function.movingAverage() function.strlen() and substring() functions to the strings package.mergeKey parameter from the map() function.strings.Replace instead of strings.ReplaceAll for compatibility.regexp functions to Flux.strings library to Flux.joinStr, including adding an EndToEnd Test.string_trimLeft and string_trimRight so that they pass in InfluxDB.on a required parameter to join().tableFind(),
getRecord(),
getColumn()
).(*Query).Done method.column parameter to median().median to work with aggregateWindow().pivot() now uses the correct column type when filling nulls.stddev().reduce() so it resets the reduce value to the neutral element value for each new group key
and reports an error when two reducers write to the same destination group key.trimSuffix and trimPrefix functions to the strings package.tagKeys should include a call to distinct.column parameter. columns not used.if/then/else syntax to Flux parser.duplicate() will now overwrite a column if the as label already exists.json tag so go vet passes.Program.Start start execution synchronously.staticcheck passes.csv.from return decode error.and, or) precedence.percentile() function to quantile().reduce() function and supporting go API for implementation.from() must send deep table copies to its downstream transformations.window() parameters match SPEC.contains() function to check for membership in lists.test keyword.aggregateWindow() to include createEmpty as parameter to allow for null results.assertEquals.assertEquals did not check tables without a match in both streams.columns() function.from() |> keys().makefile for generating the scanner after clean was incorrect.assertEquals function to transformations.