v0.13.0
Changelog
New Features
- cba958c: feat(ch-bench-read): add
Series
benchmark (@tdakkota) - c5422c3: feat(ch-bench-read): add option to set benchmark runs (@tdakkota)
- a2414c4: feat(ch-bench-read): add script to run benchmark locally (@tdakkota)
- 3fcc6d7: feat(chsql): add
IsSingleToken
to check whether string is a token (@tdakkota) - 24a5d8d: feat(chsql): add
ORDER BY
expression (@tdakkota) - 3473bf0: feat(chsql): add
PREWHERE
(@tdakkota) - cef5f8f: feat(chsql): add
hasToken
andlike
functions (@tdakkota) - 703a3e5: feat(chsql): add more helpers to build predicates (@tdakkota)
- ab07bf6: feat(chsql): add query builder package (@tdakkota)
- f9f9048: feat(chsql): add subquery support (@tdakkota)
- 2428d85: feat(chsql): use
simpleJSONHas
to find attributes (@tdakkota) - 40896e2: feat(chstorage): lookup attribute scope before querying data (@tdakkota)
- a78de4d: feat(chstorage): offload
Series
(@tdakkota) - ca0d905: feat(chstorage): query only labels when possible (@tdakkota)
- 2140e95: feat(iterators): add
Reset
method toSliceIterator
(@tdakkota) - 96619b4: feat(logql): implement
fmt.Stringer
forSelector
(@tdakkota) - a8580d9: feat(logqlbench): add LogQL benchmark tool (@tdakkota)
- 6010beb: feat(otelbench): add
logql analyze
command (@tdakkota) - ed30e30: feat(otelbench): add option to seed log generator (@tdakkota)
- 86e10ec: feat(otelbench): collect received bytes and rows too (@tdakkota)
- ac16a14: feat(otelbench): teach
promql analyze
to print reports in benchstat format (@tdakkota) - 459d963: feat(promhandler): do
Labels
/LabelValues
queries in parallel (@tdakkota) - c9e455e: feat(promhandler): query series concurrently (@tdakkota)
- 4a37f01: feat(promhandler): use optimized API for
Series
queries (@tdakkota) - 1c77c7c: feat(traceql): implement stringer for
Autocomplete
(@tdakkota) - 8c3dad8: feat(xattribute): add
Duration
to pass duration attribute (@tdakkota) - 567c14c: feat(xattribute): add unix timestamp attribute (@tdakkota)
Bug fixes
- 1794195: fix(ch-bench-read): remove unnecessary
-O
flag (@tdakkota) - 19bcf51: fix(chsql): convert expression to
DateTime64
before comparing (@tdakkota) - 6604bc7: fix(chsql): convert timestamp to
DateTime64
before comparing (@tdakkota) - b11d586: fix(chsql): do not wrap where/prewhere expression (@tdakkota)
- 36c3572: fix(chsql): ensure time is not zero in
InTimeRange
(@tdakkota) - 7b7ddd0: fix(chsql): pass proper columns to results (@tdakkota)
- 5eb101c: fix(chsql): properly handle column aliasing (@tdakkota)
- 6c319ad: fix(chsql): put binary expression into parenthesis (@tdakkota)
- 84f90e9: fix(chstorage): add
DISTINCT
to series query (@tdakkota) - 5665fe3: fix(chstorage): check for MinTime/MaxTime when querying exemplars (@tdakkota)
- 94ff446: fix(chstorage): convert log abel value to string (@tdakkota)
- 73773f0: fix(chstorage): do not return
__name__
label if there is no match (@tdakkota) - a7e6f79: fix(chstorage): do not return empty label names in log series (@tdakkota)
- d77b43b: fix(chstorage): do not return high cardinality labels as part of series (@tdakkota)
- f75bd30: fix(chstorage): do not skip
level
log label when returning series (@tdakkota) - 4ad0b3a: fix(chstorage): filter root span names, when
rootName
is queried (@tdakkota) - 2184b0a: fix(chstorage): handle autocompelete query when getting span names (@tdakkota)
- 01b5d25: fix(chstorage): handle trace-to-logs line filter properly (@tdakkota)
- fa245c7: fix(chstorage): hash exemplar scope attributes too (@tdakkota)
- 0a08770: fix(chstorage): lookup by scope labels too (@tdakkota)
- a37910e: fix(chstorage): lookup by stringified attribute value (@tdakkota)
- 8c264c8: fix(chstorage): make
trace_id
/span_id
case-insensitive (@tdakkota) - 80c232c: fix(chstorage): make label limit configurable (@tdakkota)
- 8a0c014: fix(chstorage): properly handle Prometheus min/max time (@tdakkota)
- cdb9ae0: fix(chstorage): properly handle matchers in
LabelNames
(@tdakkota) - a130d78: fix(chstorage): properly handle matchers in
LabelValues
(@tdakkota) - a62d8ad: fix(chstorage): properly negate matchers (@tdakkota)
- cedd89d: fix(chstorage): query scope attributes (@tdakkota)
- 1550ef9: fix(chstorage): remove trailing comma in migration table DDL (@tdakkota)
- d214c03: fix(chstorage): remove unnecessary label conversion (@tdakkota)
- a976b34: fix(chstorage): respect
query
parameter when selecting log label values (@tdakkota) - e3116c5: fix(chstorage): save metrics scope attributes (@tdakkota)
- 64e7127: fix(chstorage): sort attributes keys before encoding (@tdakkota)
- ae6e549: fix(chstorage): sort log labels and label values before returning (@tdakkota)
- 9f3598e: fix(chstorage): sort metric labels and label values before returning (@tdakkota)
- 7be284b: fix(chstorage): use
chsql
forgetMetricsLabelMapping
too (@tdakkota) - d637972: fix(chstorage): use normalized metric name to lookup (@tdakkota)
- bedbddf: fix(chstorage): use right column name for
service.namespace
(@tdakkota) - 878b7f6: fix(dev): pass a proper image name when building (@tdakkota)
- 306b12d: fix(lokihandler): parse
query
parameter (@tdakkota) - 48fc0a5: fix(lokihandler): use engine's parsing options (@tdakkota)
- fdc0ba4: fix(otelbench): avoid data race when collecting PromQL queries (@tdakkota)
- d912283: fix(otelbench): disallow positional arguments to avoid confusion (@tdakkota)
- d4ba238: fix(otelbench): return proper benchstat units (@tdakkota)
- 3adaf57: fix(otelbench): use query title to output, if available (@tdakkota)
- 17b6361: fix(promhandler): sort labels and label values after merge (@tdakkota)
- e430f2c: fix(promhandler): sort series before merging (@tdakkota)
- 4971482: fix(tempohandler): sort traces before returning (@tdakkota)
- a1a5a49: fix(traceqlengine): sort traces before returning (@tdakkota)
Performance updates
- 7e7fe5a: perf(chstorage): use
hasToken
to skip blocks (@tdakkota) - 2082cc7: perf(logqlabels): use stack-allocated slices for keys (@tdakkota)
- d760d30: perf(logqlengine): re-use key buffer (@tdakkota)
- b085670: perf(logqlengine): use index map to avoid result slice allocation (@tdakkota)
Documentation updates
- b50f638: docs(ch-bench-read): describe how to compare changes (@tdakkota)
- 10af804: docs(integration): describe how to get debug traces for tests (@tdakkota)
Benchmarking tooling changes
- a9cc7fe: ci(bench): disable
CheckBenchAPI
until it fixed (@tdakkota) - 7122c98: ci(ch-log-bench-read): add LogQL benchmark setup (@tdakkota)
CI/CD updates
- 11e62f4: ci(deploy): disable deploy until it fixed (@tdakkota)
- 02721b1: ci: increase deploy timeouts (@ernado)
Updates to tests
- b7e9bd8: test(chstorage): ensure that attributes are
simpleJSON
-compatible (@tdakkota) - 137e1fb: test(logql): do not fail test unconditionally (@tdakkota)
- 2ebd4a4: test(logqlables): add
groupEntries
benchmark and test (@tdakkota) - 60fcf9a: test(logqlengine): reduce cardinality in
groupEntries
benchmark (@tdakkota) - dcc1bae: test(lokie2e): add
Series
test (@tdakkota) - 9d3d55b: test(lokie2e): add more
LabelValues
tests (@tdakkota) - cb3c479: test(lokie2e): ensure labels and label values are sorted (@tdakkota)
- 5b020d6: test(lokie2e): mixed case trace-to-logs query (@tdakkota)
- 2b1847d: test(lokie2e): update tests due to chstorage changes (@tdakkota)
- 15d7f59: test(prome2e): add more
LabelNames
tests (@tdakkota) - dd187a4: test(prome2e): add more
LabelValues
tests (@tdakkota) - cad68f2: test(prome2e): add more label values tests (@tdakkota)
- e0f6934: test(prome2e): add test to query label outside range (@tdakkota)
- 7a0eafc: test(prome2e): check exemplars API (@tdakkota)
- 1433b63: test(prome2e): ensure
no match
case is properly handled (@tdakkota) - f76761e: test(prome2e): ensure labels and label values are sorted (@tdakkota)
- 3fb15ba: test(tempoe2e): add autocomplete query test (@tdakkota)
- 2dde5ad: test(tempoe2e): ensure only root span names returned, when required (@tdakkota)
- 2415db2: test(tempoe2e): ensure scope parameter is handled properly (@tdakkota)
- 0572689: test(tempoe2e): query materialized attributes (@tdakkota)
- d4db6c0: test(traceql): add fuzzer for
ParseAutocomplete
(@tdakkota)
Other work
- e924a78: refactor(chstorage): use
chsql
to build queries (@tdakkota) - bbf64e2: refactor(chtracker): move benchmark query tracking to separate package (@tdakkota)
- f67c15c: refactor(logqlengine): use
xattribute.UnixNano
(@tdakkota) - b0069f1: refactor(logstorage): use
time.Time
(@tdakkota) - 28b3a72: refactor(promapi): move
MinTime
andMaxTime
(@tdakkota) - 88c0b79: refactor(traceql): extract
SpanMatcher
s from autocomplete queries (@tdakkota) - b8b29ff: refactor(traceqlengine): use
xattribute.UnixNano
(@tdakkota) - 9390fcc: refactor(tracestorage): use
time.Time
(@tdakkota)
Docker images
ghcr.io/go-faster/oteldb:v0.13.0