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: diff --git a/docs/VictoriaLogs/logsql-examples.md b/docs/VictoriaLogs/logsql-examples.md index 740dc52684..29bba01d54 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: @@ -294,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). 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`},