Skip to content

feat(logsql): support the json_array_concat pipe (VL v1.51+)#482

Open
szibis wants to merge 1 commit into
mainfrom
feat/logsql-json-array-concat
Open

feat(logsql): support the json_array_concat pipe (VL v1.51+)#482
szibis wants to merge 1 commit into
mainfrom
feat/logsql-json-array-concat

Conversation

@szibis

@szibis szibis commented Jul 22, 2026

Copy link
Copy Markdown
Collaborator

What

Adds internal/logsql support for VictoriaLogs' json_array_concat pipe:

| json_array_concat [delimiter] [from <src_field>] [as <result_field>]

PipeJSONArrayConcat AST node + parser + round-trip String(), mirroring the existing PipeSplit (all parts optional).

Why

VictoriaLogs added this pipe upstream (v1.51), which made the Check VL upstream AST coverage job start failing repo-wide (new construct not in scripts/vl-ast-coverage.json). This closes that gap and lets the proxy parse/round-trip user LogsQL that uses the pipe.

Verification

  • go build ./... ✅, go vet ✅, go test ./internal/logsql/
  • FuzzParseRoundTrip 6M execs, no crash ✅
  • scripts/check-vl-ast-coverage.py"No gaps found" ✅ (was reporting json_array_concat as a new construct)

First of the VictoriaLogs v1.52 native-feature series.

VictoriaLogs added the json_array_concat pipe upstream, which made the
"Check VL upstream AST coverage" job fail (new construct not in the
registry). Add the PipeJSONArrayConcat AST node, parser and round-trip
String() covering:

  | json_array_concat [delimiter] [from <src_field>] [as <result_field>]

All parts are optional, mirroring the existing PipeSplit. Updates
scripts/vl-ast-coverage.json and adds coverage + parser round-trip tests.
The coverage check now reports no gaps.
@github-actions github-actions Bot added size/M Medium change scope/docs Documentation scope/tests Tests feature New feature labels Jul 22, 2026
@github-actions

Copy link
Copy Markdown
Contributor

PR Quality Report

Compared against base branch main.

Coverage and tests

Signal Base PR Delta
Test count 4795 4801 6
Coverage 85.0% 85.1% +0.1% (stable)

Compatibility

Track Base PR Delta
Loki API 100.0% 11/11 (100.0%) 0.0% (stable)
Logs Drilldown 100.0% 17/17 (100.0%) 0.0% (stable)
VictoriaLogs 100.0% 11/11 (100.0%) 0.0% (stable)

Performance smoke

Lower CPU cost (ns/op) is better. Lower benchmark memory cost (B/op, allocs/op) is better. Higher throughput is better. Lower load-test memory growth is better. Benchmark rows are medians from repeated samples.

Signal Base PR Delta
QueryRange cache-hit CPU cost 2970.0 ns/op 2944.0 ns/op -0.9% (stable)
QueryRange cache-hit memory 1184.0 B/op 1184.0 B/op 0.0% (stable)
QueryRange cache-hit allocations 29.0 allocs/op 29.0 allocs/op 0.0% (stable)
QueryRange cache-bypass CPU cost 3186.0 ns/op 3176.0 ns/op -0.3% (stable)
QueryRange cache-bypass memory 1245.0 B/op 1245.0 B/op 0.0% (stable)
QueryRange cache-bypass allocations 30.0 allocs/op 30.0 allocs/op 0.0% (stable)
Labels cache-hit CPU cost 703.3 ns/op 674.8 ns/op -4.1% (stable)
Labels cache-hit memory 48.0 B/op 48.0 B/op 0.0% (stable)
Labels cache-hit allocations 3.0 allocs/op 3.0 allocs/op 0.0% (stable)
Labels cache-bypass CPU cost 1275.0 ns/op 1247.0 ns/op -2.2% (stable)
Labels cache-bypass memory 391.0 B/op 391.0 B/op 0.0% (stable)
Labels cache-bypass allocations 14.0 allocs/op 14.0 allocs/op 0.0% (stable)

State

  • Coverage, compatibility, and sampled performance are reported here from the same PR workflow.
  • This is a delta report, not a release gate by itself. Required checks still decide merge safety.
  • Performance is a smoke comparison, not a full benchmark lab run.
  • Delta states use the same noise guards as the quality gate (percent + absolute + low-baseline checks), so report labels match merge-gate behavior.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature New feature scope/docs Documentation scope/tests Tests size/M Medium change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant