From c71ad6d0e359387f6fbb18dfde1119c676670579 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Tue, 4 Jun 2024 02:10:48 +0200 Subject: [PATCH 1/4] docs/VictoriaLogs/logsql-examples.md: typo fix --- docs/VictoriaLogs/logsql-examples.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/VictoriaLogs/logsql-examples.md b/docs/VictoriaLogs/logsql-examples.md index 740dc52684..59d42ba78c 100644 --- a/docs/VictoriaLogs/logsql-examples.md +++ b/docs/VictoriaLogs/logsql-examples.md @@ -25,6 +25,7 @@ the returned logs by some field (usually [`_time` field](https://docs.victoriame ```logsql _time:5m | sort by (_time) +``` If the number of returned logs is too big, it may be limited with the [`limit` pipe](https://docs.victoriametrics.com/victorialogs/logsql/#limit-pipe). For example, the following query returns 10 most recent logs, which were ingested during the last 5 minutes: From 49be53518efe8aa9555c491e3ae00f4fa2b26ff4 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Tue, 4 Jun 2024 02:17:52 +0200 Subject: [PATCH 2/4] docs/VictoriaLogs/logsql-examples.md: typo fix --- docs/VictoriaLogs/logsql-examples.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/VictoriaLogs/logsql-examples.md b/docs/VictoriaLogs/logsql-examples.md index 59d42ba78c..29bba01d54 100644 --- a/docs/VictoriaLogs/logsql-examples.md +++ b/docs/VictoriaLogs/logsql-examples.md @@ -295,7 +295,7 @@ See also: ## How to parse JSON inside log message? It is better from performance and resource usage PoV to avoid storing JSON inside [log message](https://docs.victoriametrics.com/victorialogs/keyconcepts/#message-field). -It is recommended storing individual JSON fields and log fields instead according to [VictoriaLogs data model](https://docs.victoriametrics.com/victorialogs/keyconcepts/#data-model). +It is recommended storing individual JSON fields as log fields instead according to [VictoriaLogs data model](https://docs.victoriametrics.com/victorialogs/keyconcepts/#data-model). If you have to store JSON inside log message or inside any other [log fields](https://docs.victoriametrics.com/victorialogs/keyconcepts/#data-model), then the stored JSON can be parsed during query time via [`unpack_json` pipe](https://docs.victoriametrics.com/victorialogs/logsql/#unpack_json-pipe). From 68c07b0599538b2d090f34f8349c4f63d6b20421 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Tue, 4 Jun 2024 02:21:00 +0200 Subject: [PATCH 3/4] docs/VictoriaLogs/Roadmap.md: remove LogsQL transformations from roadmap, since they are already implemented --- docs/VictoriaLogs/Roadmap.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/VictoriaLogs/Roadmap.md b/docs/VictoriaLogs/Roadmap.md index 52c4b2b3a4..07787bc967 100644 --- a/docs/VictoriaLogs/Roadmap.md +++ b/docs/VictoriaLogs/Roadmap.md @@ -35,7 +35,6 @@ The following functionality is planned in the future versions of VictoriaLogs: - Syslog - Journald (systemd) - Add missing functionality to [LogsQL](https://docs.victoriametrics.com/victorialogs/logsql/): - - [Transformation functions](https://docs.victoriametrics.com/victorialogs/logsql/#transformations). - [Stream context](https://docs.victoriametrics.com/victorialogs/logsql/#stream-context). - Live tailing for [LogsQL filters](https://docs.victoriametrics.com/victorialogs/logsql/#filters) aka `tail -f`. - Web UI with the following abilities: From 96c29ab4031b4107811b20a71866508d65ca83a6 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Tue, 4 Jun 2024 02:29:10 +0200 Subject: [PATCH 4/4] lib/logstorage: allow typing `asc` in `sort` pipe for the sake of consistency with `desc` --- lib/logstorage/pipe_sort.go | 10 ++++++++-- lib/logstorage/pipe_sort_test.go | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/logstorage/pipe_sort.go b/lib/logstorage/pipe_sort.go index 1bcee3670f..a1c9b00441 100644 --- a/lib/logstorage/pipe_sort.go +++ b/lib/logstorage/pipe_sort.go @@ -725,9 +725,12 @@ func parsePipeSort(lex *lexer) (*pipeSort, error) { ps.byFields = bfs } - if lex.isKeyword("desc") { + switch { + case lex.isKeyword("desc"): lex.nextToken() ps.isDesc = true + case lex.isKeyword("asc"): + lex.nextToken() } for { @@ -797,9 +800,12 @@ func parseBySortFields(lex *lexer) ([]*bySortField, error) { bf := &bySortField{ name: fieldName, } - if lex.isKeyword("desc") { + switch { + case lex.isKeyword("desc"): lex.nextToken() bf.isDesc = true + case lex.isKeyword("asc"): + lex.nextToken() } bfs = append(bfs, bf) switch { diff --git a/lib/logstorage/pipe_sort_test.go b/lib/logstorage/pipe_sort_test.go index 10b6564fbd..f14a0d2aa4 100644 --- a/lib/logstorage/pipe_sort_test.go +++ b/lib/logstorage/pipe_sort_test.go @@ -60,7 +60,7 @@ func TestPipeSort(t *testing.T) { }) // Sort by a single field - f("sort by (a)", [][]Field{ + f("sort by (a asc) asc", [][]Field{ { {"_msg", `abc`}, {"a", `2`},