Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 916958 Details for
Bug 948337
app-admin/lnav-0.11.2 fails tests
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
1-test-suite.log
1-test-suite.log (text/plain), 692.85 KB, created by
Agostino Sarubbo
on 2025-01-18 10:39:35 UTC
(
hide
)
Description:
1-test-suite.log
Filename:
MIME Type:
Creator:
Agostino Sarubbo
Created:
2025-01-18 10:39:35 UTC
Size:
692.85 KB
patch
obsolete
>====================================== > lnav 0.11.2: test/test-suite.log >====================================== > ># TOTAL: 42 ># PASS: 28 ># SKIP: 0 ># XFAIL: 0 ># FAIL: 14 ># XPASS: 0 ># ERROR: 0 > >.. contents:: :depth: 2 > >FAIL: test_format_loader.sh >=========================== > > >2025-01-17T20:39:30+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -W -C -I {test_dir}/bad-config-json >[0;32mBEGIN[0m test_format_loader.sh_fca6c1fb9f3aaa69b3ffb2d1a8a86434b2f4a247.out >[0;32mEND[0m test_format_loader.sh_fca6c1fb9f3aaa69b3ffb2d1a8a86434b2f4a247.out >[0;31mBEGIN[0m test_format_loader.sh_fca6c1fb9f3aaa69b3ffb2d1a8a86434b2f4a247.err >[1m[31mâ error[0m: invalid JSON >[36m --> [0m[1m{test_dir}/bad-config-json/formats/invalid-json/format.json[0m:4 >[36m | [0mparse error: object key and value must be separated by a colon (':') >[36m | [0m ar_log": { "abc" } } >[36m | [0m (right here) ------^ >[36m | [0m >[33mâ warning[0m: format file is missing â[1m$schema[0mâ property >[36m --> [0m[1m{test_dir}/bad-config-json/formats/invalid-json/format.json[0m >[36m =[0m [36mnote[0m: the schema specifies the supported format version and can be used with editors to automatically validate the file >[36m =[0m [36mhelp[0m: add the following property to the top-level JSON object: > [37m[40m "$schema": "https://lnav.org/schemas/format-v1.schema.json",[0m >[1m[31mâ error[0m: âabc(â is not a valid regular expression > [1m[31mreason[0m: missing closing parenthesis >[36m --> [0m[1m/invalid_key_log/level-pointer[0m >[36m | [0m[37m[40mabc[0m[1m[7m[32m[40m([0m[37m[40m [0m >[36m | [0m[37m[40m [0m[1m[31m[40m^ [0m[1m[31m[40mmissing closing parenthesis[0m[37m[40m [0m >[36m --> [0m[1m{test_dir}/bad-config-json/formats/invalid-key/format.json[0m:4 >[36m | [0m[37m[40m "level-pointer": "abc(", [0m >[36m =[0m [36mhelp[0m: [1mProperty Synopsis[0m > [1m/invalid_key_log/level-pointer[0m > [1mDescription[0m > A regular-expression that matches the JSON-pointer of the level property >[1m[31mâ error[0m: âdef[ghiâ is not a valid regular expression > [1m[31mreason[0m: missing terminating ] for character class >[36m --> [0m[1m/invalid_key_log/file-pattern[0m >[36m | [0m[37m[40mdef[0m[1m[7m[32m[40m[[0m[37m[40mghi [0m >[36m | [0m[37m[40m [0m[1m[31m[40m^ [0m[1m[31m[40mmissing terminating ] for character class[0m >[36m --> [0m[1m{test_dir}/bad-config-json/formats/invalid-key/format.json[0m:5 >[36m | [0m[37m[40m "file-pattern": "def[ghi", [0m >[36m =[0m [36mhelp[0m: [1mProperty Synopsis[0m > [1m/invalid_key_log/file-pattern[0m > [1mDescription[0m > A regular expression that restricts this format to log files with a matching name >[33mâ warning[0m: unexpected value for property â[1m/invalid_key_log/value/test/identifiers[0mâ >[36m --> [0m[1m{test_dir}/bad-config-json/formats/invalid-key/format.json[0m:14 >[36m | [0m[37m[40m "identifiers": true [0m >[36m =[0m [36mhelp[0m: [1mAvailable Properties[0m > [1mkind[0m [4m<data-type>[0m > [1mcollate[0m [4m<function>[0m > [1munit[0m[1m/[0m > [1midentifier[0m [4m<bool>[0m > [1mforeign-key[0m [4m<bool>[0m > [1mhidden[0m [4m<bool>[0m > [1maction-list[0m [4m<string>[0m > [1mrewriter[0m [4m<command>[0m > [1mdescription[0m [4m<string>[0m >[1m[31mâ error[0m: â-1.2â is not a valid value for â[1m/invalid_key_log/timestamp-divisor[0mâ > [1m[31mreason[0m: value cannot be less than or equal to zero >[36m --> [0m[1m{test_dir}/bad-config-json/formats/invalid-key/format.json[0m:25 >[36m | [0m[37m[40m "timestamp-divisor": -1.2 [0m >[36m =[0m [36mhelp[0m: [1mProperty Synopsis[0m > [1m/invalid_key_log/timestamp-divisor[0m [4m<number>[0m > [1mDescription[0m > The value to divide a numeric timestamp by in a JSON log. >[1m[31mâ error[0m: â[1mfoobar_log[0mâ is not a valid log format > [1m[31mreason[0m: no regexes specified >[36m --> [0m[1m{test_dir}/bad-config-json/formats/invalid-json/format.json[0m:3 >[1m[31mâ error[0m: â[1mfoobar_log[0mâ is not a valid log format > [1m[31mreason[0m: log message samples must be included in a format definition >[36m --> [0m[1m{test_dir}/bad-config-json/formats/invalid-json/format.json[0m:3 >[1m[31mâ error[0m: â[1minvalid_key_log[0mâ is not a valid log format > [1m[31mreason[0m: structured logs cannot have regexes >[36m --> [0m[1m{test_dir}/bad-config-json/formats/invalid-key/format.json[0m:4 >[1m[31mâ error[0m: invalid line format element â[1m/invalid_key_log/line-format/0/field[0mâ > [1m[31mreason[0m: ânon-existentâ is not a defined value >[36m --> [0m[1m{test_dir}/bad-config-json/formats/invalid-key/format.json[0m:22 >[0;31mEND[0m test_format_loader.sh_fca6c1fb9f3aaa69b3ffb2d1a8a86434b2f4a247.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: env LC_ALL=C ../src/lnav-test -W -C -I {test_dir}/bad-config >[0;32mBEGIN[0m test_format_loader.sh_5992e2695b7e6cf1f3520dbb87af8fc2b8f27088.out >[0;32mEND[0m test_format_loader.sh_5992e2695b7e6cf1f3520dbb87af8fc2b8f27088.out >[0;31mBEGIN[0m test_format_loader.sh_5992e2695b7e6cf1f3520dbb87af8fc2b8f27088.err >lnav-test: sqlite3.c:84160: sqlite3ValueText: Assertion `pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.2539.log >========================= >[0;31mEND[0m test_format_loader.sh_5992e2695b7e6cf1f3520dbb87af8fc2b8f27088.err >ERR: test: env LC_ALL=C ../src/lnav-test -W -C -I {test_dir}/bad-config >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_format_loader.sh_5992e2695b7e6cf1f3520dbb87af8fc2b8f27088.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_format_loader.sh_5992e2695b7e6cf1f3520dbb87af8fc2b8f27088.err 2025-01-17 20:39:31.065224479 +0100 >@@ -1,215 +1,9 @@ >-[1m[31mâ error[0m: invalid value for option â[1m/bad_json_log/line-format#/timestamp-format[0mâ >- [1m[31mreason[0m: empty values are not allowed >-[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-json-format/format.json[0m:11 >-[36m | [0m[37m[40m "timestamp-format": "" [0m >-[36m =[0m [36mhelp[0m: [1mProperty Synopsis[0m >- [1m/bad_json_log/line-format#/timestamp-format[0m [4m<string>[0m >- [1mDescription[0m >- The strftime(3) format for this field >-[33mâ warning[0m: unexpected value for property â[1m/bad-name-log/title[0mâ >-[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-name/format.json[0m:4 >-[36m | [0m[37m[40m "title": "bad-format", [0m >-[36m =[0m [36mhelp[0m: [1mAvailable Properties[0m >- [1m$schema[0m [4mThe URI of the schema for this file[0m >- [1m(\w+)[0m[1m/[0m >-[33mâ warning[0m: unexpected value for property â[1m/bad-name-log/description[0mâ >-[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-name/format.json[0m:5 >-[36m | [0m[37m[40m "description": "Log format with a name that has invalid characters",[0m >-[36m =[0m [36mhelp[0m: [1mAvailable Properties[0m >- [1m$schema[0m [4mThe URI of the schema for this file[0m >- [1m(\w+)[0m[1m/[0m >-[33mâ warning[0m: unexpected value for property â[1m/bad-name-log/json[0mâ >-[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-name/format.json[0m:6 >-[36m | [0m[37m[40m "json": true [0m >-[36m =[0m [36mhelp[0m: [1mAvailable Properties[0m >- [1m$schema[0m [4mThe URI of the schema for this file[0m >- [1m(\w+)[0m[1m/[0m >-[1m[31mâ error[0m: âinvalid(abcâ is not a valid regular expression >- [1m[31mreason[0m: missing closing parenthesis >-[36m --> [0m[1m/invalid_props_log/tags/badtag3/pattern[0m >-[36m | [0m[37m[40minvalid[0m[1m[7m[32m[40m([0m[37m[40mabc [0m >-[36m | [0m[37m[40m [0m[1m[31m[40m^ [0m[1m[31m[40mmissing closing parenthesis[0m >-[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-properties/format.json[0m:36 >-[36m | [0m[37m[40m "pattern": "invalid(abc"[0m >-[36m =[0m [36mhelp[0m: [1mProperty Synopsis[0m >- [1m/invalid_props_log/tags/badtag3/pattern[0m [4m<regex>[0m >- [1mDescription[0m >- The regular expression to match against the body of the log message >- [1mExample[0m >- \w+ is down >-[1m[31mâ error[0m: âabc(defâ is not a valid regular expression >- [1m[31mreason[0m: missing closing parenthesis >-[36m --> [0m[1m/invalid_props_log/search-table/bad_table_regex/pattern[0m >-[36m | [0m[37m[40mabc[0m[1m[7m[32m[40m([0m[37m[40mdef [0m >-[36m | [0m[37m[40m [0m[1m[31m[40m^ [0m[1m[31m[40mmissing closing parenthesis[0m[37m[40m [0m >-[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-properties/format.json[0m:41 >-[36m | [0m[37m[40m "pattern": "abc(def" [0m >-[36m =[0m [36mhelp[0m: [1mProperty Synopsis[0m >- [1m/invalid_props_log/search-table/bad_table_regex/pattern[0m [4m<regex>[0m >- [1mDescription[0m >- The regular expression for this search table. >-[1m[31mâ error[0m: â^(?<timestamp>\d+: (?<body>.*)$â is not a valid regular expression >- [1m[31mreason[0m: missing closing parenthesis >-[36m --> [0m[1m/bad_regex_log/regex/std/pattern[0m >-[36m | [0m[1m[36m[40m^[0m[1m[7m[32m[40m([0m[1m[32m[40m?[0m[1m[36m[40m<[0m[37m[40mtimestamp>[0m[1m[37m[40m\d[0m[1m[36m[40m+[0m[37m[40m: [0m[1m[32m[40m([0m[1m[32m[40m?[0m[1m[36m[40m<[0m[37m[40mbody>[0m[1m[36m[40m.[0m[1m[36m[40m*[0m[1m[32m[40m)[0m[1m[36m[40m$[0m[37m[40m [0m >-[36m | [0m[37m[40m [0m[1m[31m[40m^ [0m[1m[31m[40mmissing closing parenthesis[0m >-[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-regex/format.json[0m:6 >-[36m | [0m[37m[40m "pattern": "^(?<timestamp>\\d+: (?<body>.*)$"[0m >-[36m =[0m [36mhelp[0m: [1mProperty Synopsis[0m >- [1m/bad_regex_log/regex/std/pattern[0m [4m<message-regex>[0m >- [1mDescription[0m >- The regular expression to match a log message and capture fields. >-[1m[31mâ error[0m: â(fooâ is not a valid regular expression >- [1m[31mreason[0m: missing closing parenthesis >-[36m --> [0m[1mpattern[0m >-[36m | [0m[1m[7m[32m[40m([0m[37m[40mfoo [0m >-[36m | [0m[37m[40m [0m[1m[31m[40m^ [0m[1m[31m[40mmissing closing parenthesis[0m[37m[40m [0m >-[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-regex/format.json[0m:13 >-[36m | [0m[37m[40m "error": "(foo" [0m >-[36m =[0m [36mhelp[0m: [1mProperty Synopsis[0m >- [1m/bad_regex_log/level/error[0m [4m<pattern|integer>[0m >- [1mDescription[0m >- The regular expression used to match the log text for this level. For JSON logs with numeric levels, this should be the number for the corresponding level. >-[1m[31mâ error[0m: âabc(â is not a valid regular expression >- [1m[31mreason[0m: missing closing parenthesis >-[36m --> [0m[1m/bad_regex_log/highlights/foobar/pattern[0m >-[36m | [0m[37m[40mabc[0m[1m[7m[32m[40m([0m[37m[40m [0m >-[36m | [0m[37m[40m [0m[1m[31m[40m^ [0m[1m[31m[40mmissing closing parenthesis[0m[37m[40m [0m >-[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-regex/format.json[0m:25 >-[36m | [0m[37m[40m "pattern": "abc(" [0m >-[36m =[0m [36mhelp[0m: [1mProperty Synopsis[0m >- [1m/bad_regex_log/highlights/foobar/pattern[0m [4m<regex>[0m >- [1mDescription[0m >- A regular expression to highlight in logs of this format. >-[33mâ warning[0m: format file is missing â[1m$schema[0mâ property >-[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-regex/format.json[0m >-[36m =[0m [36mnote[0m: the schema specifies the supported format version and can be used with editors to automatically validate the file >-[36m =[0m [36mhelp[0m: add the following property to the top-level JSON object: >- [37m[40m "$schema": "https://lnav.org/schemas/format-v1.schema.json",[0m >-[1m[31mâ error[0m: âfooâ is not a valid value for option â[1m/bad_sample_log/value/pid/kind[0mâ >-[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-sample/format.json[0m:24 >-[36m | [0m[37m[40m "kind": "foo" [0m >-[36m =[0m [36mhelp[0m: [1mProperty Synopsis[0m >- [1m/bad_sample_log/value/pid/kind[0m [4m<data-type>[0m >- [1mDescription[0m >- The type of data in the field >- [1mAllowed Values[0m >- [1mstring[0m, [1minteger[0m, [1mfloat[0m, [1mboolean[0m, [1mjson[0m, [1mstruct[0m, [1mquoted[0m, [1mxml[0m >-[1m[31mâ error[0m: '[1mbad[0m' is not a supported log format $schema version >-[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-schema/format.json[0m:2 >-[36m | [0m[37m[40m "$schema": "bad" [0m >-[36m =[0m [36mnote[0m: expecting one of the following $schema values: >- [1m https://lnav.org/schemas/format-v1.schema.json[0m >-[36m =[0m [36mhelp[0m: [1mProperty Synopsis[0m >- [1m/$schema[0m [4mThe URI of the schema for this file[0m >- [1mDescription[0m >- Specifies the type of this file >-[1m[31mâ error[0m: invalid line format element â[1m/bad_json_log/line-format/0/field[0mâ >- [1m[31mreason[0m: ââ is not a defined value >-[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-json-format/format.json[0m:7 >-[1m[31mâ error[0m: invalid pattern: â[1mincomplete-match[0mâ >- [1m[31mreason[0m: pattern does not match entire message >-[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-regex/format.json[0m:20 >-[36m | [0m[37m[40m1428634687123; foo [0m >-[36m | [0m[37m[40m [0m[1m[31m[40m^ matched up to here[0m[37m[40m [0m >-[36m =[0m [36mnote[0m: [1mincomplete-match[0m = [1m[36m^[0m[1m[32m([0m[1m[32m?[0m[1m[36m<[0mtimestamp>[1m\d[0m[1m[36m+[0m[1m[32m)[0m; >-[36m =[0m [36mhelp[0m: update the regular expression to fully capture the sample message >-[1m[31mâ error[0m: invalid sample log message: "abc: foo" >- [1m[31mreason[0m: unrecognized timestamp -- abc >-[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-sample/format.json[0m:34 >-[36m =[0m [36mnote[0m: the following custom formats were tried: >- abc >- [36m^ [0mâ[1m%i[0mâ[36m matched up to here[0m >-[36m =[0m [36mhelp[0m: If the timestamp format is not supported by default, you can add a custom format with the â[1mtimestamp-format[0mâ property >-[1m[31mâ error[0m: invalid sample log message: "1428634687123| debug hello" >- [1m[31mreason[0m: â[1mdebug[0mâ does not match the expected level of â[1minfo[0mâ >-[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-sample/format.json[0m:37 >-[36m =[0m [36mnote[0m: matched regex = [1mwith-level[0m >- captured level = âdebugâ >- level regular expression match results: >- [1m/bad_sample_log/level/debug[0m = debug >- debug >- [36m^[0m[36m---[0m[36m^[0m >- [1m/bad_sample_log/level/info[0m = info >- [33mno match[0m >-[36m =[0m [36mhelp[0m: Level regexes are not anchored to the start/end of the string. Prepend â[1m^[0mâ to the expression to match from the start of the string and append â[1m$[0mâ to match up to the end of the string. >-[1m[31mâ error[0m: invalid pattern: â[1mwith-level[0mâ >- [1m[31mreason[0m: pattern does not match entire multiline sample message >-[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-sample/format.json[0m:41 >-[36m =[0m [36mnote[0m: [1mwith-level[0m = [1m[36m^[0m[1m[32m([0m[1m[32m?[0m[1m[36m<[0mtimestamp>[1m\d[0m[1m[36m+[0m[1m[32m)[0m\| [1m[32m([0m[1m[32m?[0m[1m[36m<[0mlevel>[1m\w[0m[1m[36m+[0m[1m[32m)[0m [1m[32m([0m[1m[32m?[0m[1m[36m<[0mbody>[1m\w[0m[1m[36m+[0m[1m[32m)[0m[1m[36m$[0m >-[36m =[0m [36mhelp[0m: use â.*â to match new-lines >-[1m[31mâ error[0m: invalid sample log message: "1428634687123; foo bar" >- [1m[31mreason[0m: sample does not match any patterns >-[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-sample/format.json[0m:45 >-[36m =[0m [36mnote[0m: the following shows how each pattern matched this sample: >- [37m[40m1428634687123; foo bar[0m >- [36m^ [0m[1mbad-time[0m[36m matched up to here[0m >- [36m^ [0m[1msemi[0m[36m matched up to here[0m >- [36m^ [0m[1mstd[0m[36m matched up to here[0m >- [36m^ [0m[1mwith-level[0m[36m matched up to here[0m >-[36m =[0m [36mnote[0m: [1mbad-time [0m = â[1m[36m^[0m[1m[32m([0m[1m[32m?[0m[1m[36m<[0mtimestamp>[1m\w[0m[1m[36m+[0m[1m[32m)[0m: [1m[32m([0m[1m[32m?[0m[1m[36m<[0mbody>[1m\w[0m[1m[36m+[0m[1m[32m)[0m[1m[36m$[0mâ >- [1msemi [0m = â[1m[36m^[0m[1m[32m([0m[1m[32m?[0m[1m[36m<[0mtimestamp>[1m\d[0m[1m[36m+[0m[1m[32m)[0m; [1m[32m([0m[1m[32m?[0m[1m[36m<[0mbody>[1m\w[0m[1m[36m+[0m[1m[32m)[0m[1m[36m$[0mâ >- [1mstd [0m = â[1m[36m^[0m[1m[32m([0m[1m[32m?[0m[1m[36m<[0mtimestamp>[1m\d[0m[1m[36m+[0m[1m[32m)[0m: [1m[32m([0m[1m[32m?[0m[1m[36m<[0mpid>[1m\w[0m[1m[36m+[0m[1m[32m)[0m [1m[32m([0m[1m[32m?[0m[1m[36m<[0mbody>[1m[36m.[0m[1m[36m*[0m[1m[32m)[0m[1m[36m$[0mâ >- [1mwith-level[0m = â[1m[36m^[0m[1m[32m([0m[1m[32m?[0m[1m[36m<[0mtimestamp>[1m\d[0m[1m[36m+[0m[1m[32m)[0m\| [1m[32m([0m[1m[32m?[0m[1m[36m<[0mlevel>[1m\w[0m[1m[36m+[0m[1m[32m)[0m [1m[32m([0m[1m[32m?[0m[1m[36m<[0mbody>[1m\w[0m[1m[36m+[0m[1m[32m)[0m[1m[36m$[0mâ >+lnav-test: sqlite3.c:84160: sqlite3ValueText: Assertion `pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex)' failed. > >-[33mâ warning[0m: invalid pattern: â[1m/bad_sample_log/regex/semi[0mâ >- [33mreason[0m: pattern does not match any samples >-[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-sample/format.json[0m:10 >-[36m =[0m [36mhelp[0m: every pattern should have at least one sample that it matches >-[33mâ warning[0m: invalid pattern: â[1m/bad_sample_log/regex/std[0mâ >- [33mreason[0m: pattern does not match any samples >-[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-sample/format.json[0m:7 >-[36m =[0m [36mhelp[0m: every pattern should have at least one sample that it matches >-[33mâ warning[0m: invalid value â[1m/invalid_props_log/value/non-existent[0mâ >- [33mreason[0m: no patterns have a capture named ânon-existentâ >-[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-properties/format.json[0m:4 >-[36m =[0m [36mnote[0m: the following captures are available: >- [1mbody[0m, [1mpid[0m, [1mtimestamp[0m >-[36m =[0m [36mhelp[0m: values are populated from captures in patterns, so at least one pattern must have a capture with this value name >-[1m[31mâ error[0m: invalid tag definition â[1m/invalid_props_log/tags/badtag[0mâ >- [1m[31mreason[0m: tag definitions must have a non-empty pattern >-[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-properties/format.json[0m:4 >-[1m[31mâ error[0m: invalid tag definition â[1m/invalid_props_log/tags/badtag2[0mâ >- [1m[31mreason[0m: tag definitions must have a non-empty pattern >-[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-properties/format.json[0m:4 >-[1m[31mâ error[0m: invalid tag definition â[1m/invalid_props_log/tags/badtag3[0mâ >- [1m[31mreason[0m: tag definitions must have a non-empty pattern >-[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-properties/format.json[0m:4 >-[1m[31mâ error[0m: â[1minvalid_props_log[0mâ is not a valid log format >- [1m[31mreason[0m: â[1msubsecond-unit[0mâ must be set when â[1msubsecond-field[0mâ is used >-[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-properties/format.json[0m:4 >-[1m[31mâ error[0m: invalid value for property â[1m/invalid_props_log/timestamp-field[0mâ >- [1m[31mreason[0m: âtsâ was not found in the pattern at [1m/invalid_props_log/regex/std[0m >-[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-properties/format.json[0m:4 >-[36m =[0m [36mnote[0m: the following captures are available: >- [1mbody[0m, [1mpid[0m, [1mtimestamp[0m >-[1m[31mâ error[0m: ânot a colorâ is not a valid color value for property â[1m/invalid_props_log/highlights/hl1/color[0mâ >- [1m[31mreason[0m: Unknown color: 'not a color'. See https://jonasjacek.github.io/colors/ for a list of supported color names >-[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-properties/format.json[0m:24 >-[1m[31mâ error[0m: âalso not a colorâ is not a valid color value for property â[1m/invalid_props_log/highlights/hl1/background-color[0mâ >- [1m[31mreason[0m: Unknown color: 'also not a color'. See https://jonasjacek.github.io/colors/ for a list of supported color names >-[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-properties/format.json[0m:25 >-[1m[31mâ error[0m: â[1mno_regexes_log[0mâ is not a valid log format >- [1m[31mreason[0m: no regexes specified >-[36m --> [0m[1m{test_dir}/bad-config/formats/no-regexes/format.json[0m:4 >-[1m[31mâ error[0m: â[1mno_regexes_log[0mâ is not a valid log format >- [1m[31mreason[0m: log message samples must be included in a format definition >-[36m --> [0m[1m{test_dir}/bad-config/formats/no-regexes/format.json[0m:4 >-[1m[31mâ error[0m: â[1mno_sample_log[0mâ is not a valid log format >- [1m[31mreason[0m: log message samples must be included in a format definition >-[36m --> [0m[1m{test_dir}/bad-config/formats/no-samples/format.json[0m:4 >-[1m[31mâ error[0m: failed to compile SQL statement >- [1m[31mreason[0m: near "TALE": syntax error >-[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-sql/init.sql[0m:4 >-[36m | [0m[32m[40m-- comment test [0m >-[36m | [0m[1m[36m[40mCREATE[0m[37m[40m [0m[37m[40mTALE[0m[37m[40m [0m[1m[37m[40minvalid[0m[1m[37m[40m [0m[37m[40m([0m[37m[40mx[0m[37m[40m [0m[37m[40my[0m[37m[40m [0m[37m[40mz[0m[37m[40m); [0m >-[36m | [0m[37m[40m [0m[36m[40m^ [0m[1m[31m[40mnear "TALE": syntax error[0m[37m[40m [0m >-[1m[31mâ error[0m: failed to execute SQL statement >- [1m[31mreason[0m: [1m[31mâ error[0m: âabc(â is not a valid regular expression >-[1m[31m | [0m [1m[31mreason[0m: missing closing parenthesis >-[1m[31m | [0m [36m --> [0m[1marg[0m >-[1m[31m | [0m [36m | [0m[37m[40mabc[0m[1m[7m[32m[40m([0m[37m[40m [0m >-[1m[31m | [0m [36m | [0m[37m[40m [0m[1m[31m[40m^ [0m[1m[31m[40mmissing closing parenthesis[0m >-[36m --> [0m[1m{test_dir}/bad-config/formats/invalid-sql/init2.sql[0m >-[36m | [0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mregexp_match[0m[1m[7m[31m[40m([0m[35m[40m'abc('[0m[37m[40m, [0m[35m[40m'123'[0m[37m[40m) [0m >-[36m | [0m[1m[36m[40mFROM[0m[37m[40m [0m[37m[40msqlite_master[0m[37m[40m; [0m >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.2539.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -I {test_dir} -c ;select * from leveltest_log -c :write-csv-to - {test_dir}/logfile_leveltest.0 >[0;32mBEGIN[0m test_format_loader.sh_15e861d2327512a721fd42ae51dc5427689e0bb6.out >[0;32mEND[0m test_format_loader.sh_15e861d2327512a721fd42ae51dc5427689e0bb6.out >OUT: test: ../src/lnav-test -n -I {test_dir} -c ;select * from leveltest_log -c :write-csv-to - {test_dir}/logfile_leveltest.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_format_loader.sh_15e861d2327512a721fd42ae51dc5427689e0bb6.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_format_loader.sh_15e861d2327512a721fd42ae51dc5427689e0bb6.out 2025-01-17 20:39:31.185229295 +0100 >@@ -1,9 +0,0 @@ >-log_line,log_part,log_time,log_idle_msecs,log_level,log_mark,log_comment,log_tags,log_filters >-0,<NULL>,2016-06-30 12:00:01.000,0,trace,0,<NULL>,<NULL>,<NULL> >-1,<NULL>,2016-06-30 12:00:02.000,1000,debug,0,<NULL>,<NULL>,<NULL> >-2,<NULL>,2016-06-30 12:00:03.000,1000,debug2,0,<NULL>,<NULL>,<NULL> >-3,<NULL>,2016-06-30 12:00:04.000,1000,debug3,0,<NULL>,<NULL>,<NULL> >-4,<NULL>,2016-06-30 12:00:05.000,1000,info,0,<NULL>,<NULL>,<NULL> >-5,<NULL>,2016-06-30 12:00:06.000,1000,warning,0,<NULL>,<NULL>,<NULL> >-6,<NULL>,2016-06-30 12:00:07.000,1000,fatal,0,<NULL>,<NULL>,<NULL> >-7,<NULL>,2016-06-30 12:00:08.000,1000,info,0,<NULL>,<NULL>,<NULL> >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_format_loader.sh_15e861d2327512a721fd42ae51dc5427689e0bb6.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.3052.log >========================= >[0;31mEND[0m test_format_loader.sh_15e861d2327512a721fd42ae51dc5427689e0bb6.err >ERR: test: ../src/lnav-test -n -I {test_dir} -c ;select * from leveltest_log -c :write-csv-to - {test_dir}/logfile_leveltest.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_format_loader.sh_15e861d2327512a721fd42ae51dc5427689e0bb6.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_format_loader.sh_15e861d2327512a721fd42ae51dc5427689e0bb6.err 2025-01-17 20:39:31.198229817 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.3052.log >+========================= >FAIL! EXPECTED ERR DIFF >FAIL test_format_loader.sh (exit status: 1) > >FAIL: test_cmds.sh >================== > > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :switch-to-view help {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_b6a3bb78e9d60e5e1f5ce5b18e40d2f1662707ab.out > >[1m[35mlnav[0m > >A fancy log file viewer for the terminal. > >[1mOverview[0m > >The Logfile Navigator, [1mlnav[0m, is an enhanced log file viewer that takes >advantage of any semantic information that can be gleaned from the >files being viewed, such as timestamps and log levels. Using this >extra semantic information, lnav can do things like interleaving >messages from different files, generate histograms of messages over >time, and providing hotkeys for navigating through the file. It is >hoped that these features will allow the user to quickly and >efficiently zero in on problems. > >[1mOpening Paths/URLs[0m > >The main arguments to lnav are the local/remote files, directories, >glob patterns, or URLs to be viewed. If no arguments are given, the >default syslog file for your system will be opened. These arguments >will be polled periodically so that any new data or files will be >automatically loaded. If a previously loaded file is removed or >replaced, it will be closed and the replacement opened. > >Note: When opening SFTP URLs, if the password is not provided for the >host, the SSH agent can be used to do authentication. > >[1mOptions[0m > >Lnav takes a list of files to view and/or you can use the flag >arguments to load well-known log files, such as the syslog log files. >The flag arguments are: > > [33mâ¢[0m [37m[40m -a [0m Load all of the most recent log file types. > [33mâ¢[0m [37m[40m -r [0m Recursively load files from the given directory > hierarchies. > [33mâ¢[0m [37m[40m -R [0m Load older rotated log files as well. > >When using the flag arguments, lnav will look for the files relative >to the current directory and its parent directories. In other words, >if you are working within a directory that has the well-known log >files, those will be preferred over any others. > >If you do not want the default syslog file to be loaded when no files >are specified, you can pass the [37m[40m -N [0m flag. > >Any files given on the command-line are scanned to determine their log >file format and to create an index for each line in the file. You do >not have to manually specify the log file format. The currently >supported formats are: syslog, apache, strace, tcsh history, and >generic log files with timestamps. > >Lnav will also display data piped in on the standard input. The >following options are available when doing so: > > [33mâ¢[0m [37m[40m -t [0m Prepend timestamps to the lines of data being read > in on the standard input. > [33mâ¢[0m [37m[40m -w file [0m Write the contents of the standard input to > this file. > >To automatically execute queries or lnav commands after the files have >been loaded, you can use the following options: > > [33mâ¢[0m [37m[40m -c cmd [0m A command, query, or file to execute. The > first character determines the type of operation: a colon > ([37m[40m : [0m) is used for the built-in commands; a semi-colon ([37m[40m ;[0m > ) for SQL queries; and a pipe symbol ([37m[40m | [0m) for executing > a file containing other commands. For example, to open > the file "foo.log" and go to the tenth line in the file, > you can do: > > â[37m[40mlnav -c [0m[35m[40m':goto 10'[0m[37m[40m foo.log [0m > > This option can be given multiple times to execute > multiple operations in sequence. > [33mâ¢[0m [37m[40m -f file [0m A file that contains commands, queries, or > files to execute. This option is a shortcut for [37m[40m -c '|file'[0m > . You can use a dash ([37m[40m - [0m) to execute commands from the > standard input. > >To execute commands/queries without opening the interactive text UI, >you can pass the [37m[40m -n [0m option. This combination of options allows you >to write scripts for processing logs with lnav. For example, to get a >list of IP addresses that dhclient has bound to in CSV format: > > â[32m[40m#! /usr/bin/lnav -nf [0m > â[37m[40m [0m > â[32m[40m# Usage: dhcp_ip.lnav /var/log/messages [0m > â[32m[40m# Only include lines that look like: [0m > â[32m[40m# Apr 29 00:31:56 example-centos5 dhclient: bound to 10.1.10.103 -- renewal in 9938 seconds. [0m > â[37m[40m [0m > â[37m[40m:[0m[1m[36m[40mfilter-in[0m[37m[40m dhclient: bound to [0m > â[37m[40m [0m > â[32m[40m# The log message parser will extract the IP address [0m > â[32m[40m# as col_0, so we select that and alias it to "dhcp_ip". [0m > â[37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[36m[40mDISTINCT[0m[37m[40m [0m[37m[40mcol_0[0m[37m[40m [0m[1m[36m[40mAS[0m[37m[40m [0m[37m[40mdhcp_ip[0m[37m[40m [0m[1m[36m[40mFROM[0m[37m[40m [0m[37m[40mlogline[0m[37m[40m; [0m > â[37m[40m [0m > â[32m[40m# Finally, write the results of the query to stdout. [0m > â[37m[40m:[0m[1m[36m[40mwrite-csv-to[0m[37m[40m - [0m > >[1mDisplay[0m > >The main part of the display shows the log lines from the files >interleaved based on time-of-day. New lines are automatically loaded >as they are appended to the files and, if you are viewing the bottom >of the files, lnav will scroll down to display the new lines, much >like [37m[40m tail -f [0m. > >On color displays, the lines will be highlighted as follows: > > [33mâ¢[0m Errors will be colored in [31mred[0m; > [33mâ¢[0m warnings will be [33myellow[0m; > [33mâ¢[0m boundaries between days will be [4munderlined[0m; and > [33mâ¢[0m various color highlights will be applied to: IP > addresses, SQL keywords, XML tags, file and line numbers > in Java backtraces, and quoted strings. > >To give you an idea of where you are spatially, the right side of the >display has a proportionally sized 'scroll bar' that indicates your >current position in the files. The scroll bar will also show areas of >the file where warnings or errors are detected by coloring the bar >yellow or red, respectively. Tick marks will also be added to the left >and right-hand side of the bar, for search hits and bookmarks. > >The bar on the left side indicates the file the log message is from. A >break in the bar means that the next log message comes from a >different file. The color of the bar is derived from the file name. >Pressing the left-arrow or [37m[40m h [0m will reveal the source file names for >each message and pressing again will show the full paths. > >Above and below the main body are status lines that display a variety >of information. The top line displays: > > [33mâ¢[0m The current time, configurable by the [37m[40m /ui/clock-format [0m > property. > [33mâ¢[0m The highest priority message from the [37m[40m lnav_user_notifications [0m > table. You can insert rows into this table to display > your own status messages. The default message displayed > on startup explains how to focus on the next status line > at the top, which is an interactive breadcrumb bar. > >The second status line at the top display breadcrumbs for the top line >in the main view. Pressing [37m[40m ENTER [0m will focus input on the breadcrumb >bar, the cursor keys can be used to select a breadcrumb. The common >breadcrumbs are: > > [33mâ¢[0m The name of the current view. > [33mâ¢[0m In the log view, the timestamp of the top log message. > [33mâ¢[0m In the log view, the format of the log file the top log > message is from. > [33mâ¢[0m The name of the file the top line was pulled from. > [33mâ¢[0m If the top line is within a larger chunk of structured > data, the path to the value in the top line will be > shown. > >Notes: > > [33m1.[0m Pressing [37m[40m CTRL-A [0m/[37m[40m CTRL-E [0m will select the first/last > breadcrumb. > [33m2.[0m Typing text while a breadcrumb is selected will > perform a fuzzy search on the possibilities. > >The bottom status bar displays: > > [33mâ¢[0m The line number for the top line in the display. > [33mâ¢[0m The current search hit, the total number of hits, and > the search term. > >If the view supports filtering, there will be a status line showing >the following: > > [33mâ¢[0m The number of enabled filters and the total number of > filters. > [33mâ¢[0m The number of lines not displayed because of filtering. > >To edit the filters, you can press TAB to change the focus from the >main view to the filter editor. The editor allows you to create, >enable/disable, and delete filters easily. > >Along with filters, a "Files" panel will also be available for viewing >and controlling the files that lnav is currently monitoring. > >Finally, the last line on the display is where you can enter search >patterns and execute internal commands, such as converting a >unix-timestamp into a human-readable date. The command-line is >implemented using the readline library, so the usual set of keyboard >shortcuts are available. Most commands and searches also support >tab-completion. > >The body of the display is also used to display other content, such >as: the help file, histograms of the log messages over time, and SQL >results. The views are organized into a stack so that any time you >activate a new view with a key press or command, the new view is >pushed onto the stack. Pressing the same key again will pop the view >off of the stack and return you to the previous view. Note that you >can always use [37m[40m q [0m to pop the top view off of the stack. > >[1mDefault Key Bindings[0m > >[4mViews[0m > > Key(s) Action >âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > [1m?[0m View/leave this help message. > [1mq[0m Leave the current view or quit the program when in > the log file view. > Q Similar to [37m[40m q [0m, except it will try to sync the top > time between the current and former views. For > example, when leaving the spectrogram view with [37m[40m Q[0m > , the top time in that view will be matched to the > top time in the log view. > TAB Toggle focusing on the filter editor or the main > view. > ENTER Focus on the breadcrumb bar. > a/A Restore the view that was previously popped with [37m[40m q[0m > /[37m[40m Q [0m. The [37m[40m A [0m hotkey will try to match the top > times between the two views. > X Close the current text file or log file. > >[4mSpatial Navigation[0m > > Key(s) Action >âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > g/Home Move to the top of the file. > G/End Move to the end of the file. If the view is > already at the end, it will move to the last line. > SPACE/PgDn Move down a page. > CTRL+d Move down by half a page. > b/PgUp Move up a page. > CTRL+u Move up by half a page. > j/â Move down a line. > k/â Move up a line. > h/â Move to the left. In the log view, moving left > will reveal the source log file names for each > line. Pressing again will reveal the full path. > l/â Move to the right. > H/Shift â Move to the left by a smaller increment. > L/Shift â Move to the right by a smaller increment. > e/E Move to the next/previous error. > w/W Move to the next/previous warning. > n/N Move to the next/previous search hit. When pressed > repeatedly within a short time, the view will move > at least a full page at a time instead of moving > to the next hit. > f/F Move to the next/previous file. In the log view, > this moves to the next line from a different file. > In the text view, this rotates the view to the > next file. > >/< Move horizontally to the next/previous search hit. > o/O Move forward/backward to the log message with a > matching 'operation ID' (opid) field. > u/U Move forward/backward through any user bookmarks > you have added using the 'm' key. This hotkey will > also jump to the start of any log partitions that > have been created with the 'partition-name' > command. > s/S Move to the next/previous "slow down" in the log > message rate. A slow down is detected by measuring > how quickly the message rate has changed over the > previous several messages. For example, if one > message is logged every second for five seconds > and then the last message arrives five seconds > later, the last message will be highlighted as a > slow down. > {/} Move to the previous/next location in history. > Whenever you jump to a new location in the view, > the location will be added to the history. The > history is not updated when using only the arrow > keys. > >[4mChronological Navigation[0m > > Key(s) Action >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > d/D Move forward/backward 24 hours from the current > position in the log file. > 1-6/Shift 1-6 Move to the next/previous n'th ten minute of the > hour. For example, '4' would move to the first log > line in the fortieth minute of the current hour in > the log. And, '6' would move to the next hour > boundary. > 7/8 Move to the previous/next minute. > 0/Shift 0 Move to the next/previous day boundary. > r/R Move forward/backward based on the relative time > that was last used with the 'goto' command. For > example, executing ':goto a minute later' will > move the log view forward a minute and then > pressing 'r' will move it forward a minute again. > Pressing 'R' will then move the view in the > opposite direction, so backwards a minute. > >[4mBookmarks[0m > > Key(s) Action >âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > m Mark/unmark the line at the top of the display. > The line will be highlighted with reverse video to > indicate that it is a user bookmark. You can use > the [37m[40m u [0m hotkey to iterate through marks you have > added. > M Mark/unmark all the lines between the top of the > display and the last line marked/unmarked. > J Mark/unmark the next line after the previously > marked line. > K Like [37m[40m J [0m except it toggles the mark on the > previous line. > c Copy the marked text to the X11 selection buffer > or OS X clipboard. > C Clear all marked lines. > >[4mDisplay options[0m > > Key(s) Action >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > P Switch to/from the pretty-printed view of the log > or text files currently displayed. In this view, > structured data, such as XML, will be reformatted > to make it easier to read. > t Switch to/from the text file view. The text file > view is for any files that are not recognized as > log files. > = Pause/unpause loading of new file data. > Ctrl-L (Lo-fi mode) Exit screen-mode and write the > displayed log lines in plain text to the terminal > until a key is pressed. Useful for copying long > lines from the terminal without picking up any of > the extra decorations. > T Toggle the display of the "elapsed time" column > that shows the time elapsed since the beginning of > the logs or the offset from the previous bookmark. > Sharp changes in the message rate are highlighted > by coloring the separator between the time column > and the log message. A red highlight means the > message rate has slowed down and green means it > has sped up. You can use the "s/S" hotkeys to scan > through the slow downs. > i View/leave a histogram of the log messages over > time. The histogram counts the number of displayed > log lines for each bucket of time. The bars are > layed out horizontally with colored segments > representing the different log levels. You can use > the [37m[40m z [0m hotkey to change the size of the time > buckets (e.g. ten minutes, one hour, one day). > I Switch between the log and histogram views while > keeping the time displayed at the top of each view > in sync. For example, if the top line in the log > view is "11:40", hitting [37m[40m I [0m will switch to the > histogram view and scrolled to display "11:00" at > the top (if the zoom level is hours). > z/Shift Z Zoom in or out one step in the histogram view. > v Switch to/from the SQL result view. > V Switch between the log and SQL result views while > keeping the top line number in the log view in > sync with the log_line column in the SQL view. For > example, doing a query that selects for > "log_idle_msecs" and "log_line", you can move the > top of the SQL view to a line and hit 'V' to > switch to the log view and move to the line number > that was selected in the "log_line" column. If > there is no "log_line" column, lnav will find the > first column with a timestamp and move to > corresponding time in the log view. > TAB/Shift TAB In the SQL result view, cycle through the columns > that are graphed. Initially, all number values are > displayed in a stacked graph. Pressing TAB will > change the display to only graph the first column. > Repeatedly pressing TAB will cycle through the > columns until they are all graphed again. > p In the log view: enable or disable the display of > the fields that the log message parser knows about > or has discovered. This overlay is temporarily > enabled when the semicolon key (;) is pressed so > that it is easier to write queries. > In the DB view: enable or disable the display of > values in columns containing JSON-encoded values > in the top row. The overlay will display the > JSON-Pointer reference and value for all fields in > the JSON data. > CTRL-W Toggle word-wrapping. > CTRL-P Show/hide the data preview panel that may be > opened when entering commands or SQL queries. > CTRL-F Toggle the enabled/disabled state of all filters > in the current view. > x Toggle the hiding of log message fields. The > hidden fields will be replaced with three bullets > and highlighted in yellow. > CTRL-X Toggle the cursor mode. Allows moving the selected > line instead of keeping it fixed at the top of the > current screen. > F2 Toggle mouse support. > >[4mQuery[0m > > Key(s) Action >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > [1m/[0m[4mregexp[0m Start a search for the given regular expression. > The search is live, so when there is a pause in > typing, the currently running search will be > canceled and a new one started. The first ten > lines that match the search will be displayed in > the preview window at the bottom of the view. > History is maintained for your searches so you can > rerun them easily. Words that are currently > displayed are also available for tab-completion, > so you can easily search for values without > needing to copy-and-paste the string. If there is > an error encountered while trying to interpret the > expression, the error will be displayed in red on > the status line. While the search is active, the > 'hits' field in the status line will be green, > when finished it will turn back to black. > [1m:[0m<command> Execute an internal command. The commands are > listed below. History is also supported in this > context as well as tab-completion for commands and > some arguments. The result of the command replaces > the command you typed. > [1m;[0m<sql> Execute an SQL query. Most supported log file > formats provide a sqlite virtual table backend > that can be used in queries. See the SQL section > below for more information. > [1m|[0m<script> [arg1...] Execute an lnav script contained in a format > directory (e.g. ~/.lnav/formats/default). The > script can contain lines starting with [37m[40m : [0m, [37m[40m ; [0m, > or [37m[40m | [0m to execute commands, SQL queries or execute > other files in lnav. Any values after the script > name are treated as arguments can be referenced in > the script using [37m[40m $1 [0m, [37m[40m $2 [0m, and so on, like in a > shell script. > CTRL+], ESCAPE Abort command-line entry started with [37m[40m / [0m, [37m[40m : [0m, [37m[40m ;[0m > , or [37m[40m | [0m. > > â[1mNote[0m: The regular expression format used by lnav is [4mPCRE[1][0m > â(Perl-Compatible Regular Expressions). > â > â â[1] - http://perldoc.perl.org/perlre.html > â > âIf the search string is not valid PCRE, a search is done for > âthe exact string instead of doing a regex search. > >[1mSession[0m > > Key(s) Action >âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > CTRL-R Reset the session state. This will save the > current session state (filters, highlights) and > then reset the state to the factory default. > >[1mFilter Editor[0m > >The following hotkeys are only available when the focus is on the >filter editor. You can change the focus by pressing TAB. > > Key(s) Action >âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > q Switch the focus back to the main view. > j/â Select the next filter. > k/â Select the previous filter. > o Create a new "out" filter. > i Create a new "in" filter . > SPACE Toggle the enabled/disabled state of the currently > selected filter. > t Toggle the type of filter between "in" and "out". > ENTER Edit the selected filter. > D Delete the selected filter. > >[1mMouse Support (experimental)[0m > >If you are using Xterm, or a compatible terminal, you can use the >mouse to mark lines of text and move the view by grabbing the >scrollbar. > >NOTE: You need to manually enable this feature by setting the LNAV_EXP >environment variable to "mouse". F2 toggles mouse support. > >[1mSQL Queries (experimental)[0m > >Lnav has support for performing SQL queries on log files using the >Sqlite3 "virtual" table feature. For all supported log file types, >lnav will create tables that can be queried using the subset of SQL >that is supported by Sqlite3. For example, to get the top ten URLs >being accessed in any loaded Apache log files, you can execute: > > â[37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[37m[40mcs_uri_stem[0m[37m[40m, [0m[1m[37m[40mcount[0m[37m[40m([0m[1m[37m[40m*[0m[37m[40m) [0m[1m[36m[40mAS[0m[37m[40m [0m[37m[40mtotal[0m[37m[40m [0m[1m[36m[40mFROM[0m[37m[40m [0m[37m[40maccess_log[0m[37m[40m [0m > â[37m[40m [0m[1m[36m[40mGROUP[0m[37m[40m [0m[1m[36m[40mBY[0m[37m[40m [0m[37m[40mcs_uri_stem[0m[37m[40m [0m[1m[36m[40mORDER[0m[37m[40m [0m[1m[36m[40mBY[0m[37m[40m [0m[37m[40mtotal[0m[37m[40m [0m[1m[36m[40mDESC[0m[37m[40m [0m[1m[36m[40mLIMIT[0m[37m[40m [0m[1m[37m[40m10[0m[37m[40m; [0m > >The query result view shows the results and graphs any numeric values >found in the result, much like the histogram view. > >The builtin set of log tables are listed below. Note that only the log >messages that match a particular format can be queried by a particular >table. You can find the file format and table name for the top log >message by looking in the upper right hand corner of the log file >view. > >Some commonly used format tables are: > > Name Description >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > access_log Apache common access log format > syslog_log Syslog format > strace_log Strace log format > generic_log 'Generic' log format. This table contains messages > from files that have a very simple format with a > leading timestamp followed by the message. > >NOTE: You can get a dump of the schema for the internal tables, and >any attached databases, by running the [37m[40m .schema [0m SQL command. > >The columns available for the top log line in the view will >automatically be displayed after pressing the semicolon ([37m[40m ; [0m) key. All >log tables contain at least the following columns: > > Column Description >âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > log_line The line number in the file, starting at zero. > log_part The name of the partition. You can change this > column using an UPDATE SQL statement or with the > 'partition-name' command. After a value is set, > the following log messages will have the same > partition name up until another name is set. > log_time The time of the log entry. > log_idle_msecs The amount of time, in milliseconds, between the > current log message and the previous one. > log_level The log level (e.g. info, error, etc...). > log_mark The bookmark status for the line. This column can > be written to using an UPDATE query. > log_path The full path to the file. > log_text The raw line of text. Note that this column is > not included in the result of a 'select *', but it > does exist. > >The following tables include the basic columns as listed above and >include a few more columns since the log file format is more >structured. > > [33mâ¢[0m [37m[40m syslog_log [0m > > Column Description > âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > log_hostname The hostname the message was received from. > log_procname The name of the process that sent the message. > log_pid The process ID of the process that sent the > message. > [33mâ¢[0m [37m[40m access_log [0m (The column names are the same as those in > the Microsoft LogParser tool.) > > Column Description > ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > c_ip The client IP address. > cs_username The client user name. > cs_method The HTTP method. > cs_uri_stem The stem portion of the URI. > cs_uri_query The query portion of the URI. > cs_version The HTTP version string. > sc_status The status number returned to the client. > sc_bytes The number of bytes sent to the client. > cs_referrer The URL of the referring page. > cs_user_agent The user agent string. > [33mâ¢[0m [37m[40m strace_log [0m (Currently, you need to run strace with > the [37m[40m -tt -T [0moptions so there are timestamps for each > function call.) > > Column Description > âââââââââââââââââââââââââââââââââââââââââââââââââââââââ > funcname The name of the syscall. > result The result code. > duration The amount of time spent in the syscall. > arg0 - arg9 The arguments passed to the syscall. > >These tables are created dynamically and not stored in memory or on >disk. If you would like to persist some information from the tables, >you can attach another database and create tables in that database. >For example, if you wanted to save the results from the earlier >example of a top ten query into the "/tmp/topten.db" file, you can do: > > â[37m[40m;[0m[1m[36m[40mATTACH[0m[37m[40m [0m[1m[36m[40mDATABASE[0m[37m[40m [0m[35m[40m'/tmp/topten.db'[0m[37m[40m [0m[1m[36m[40mAS[0m[37m[40m [0m[37m[40mtopten[0m[37m[40m; [0m > â[37m[40m;[0m[1m[36m[40mCREATE[0m[37m[40m [0m[1m[36m[40mTABLE[0m[37m[40m [0m[37m[40mtopten[0m[37m[40m.[0m[37m[40mfoo[0m[37m[40m [0m[1m[36m[40mAS[0m[37m[40m [0m[1m[36m[40mSELECT[0m[37m[40m [0m[37m[40mcs_uri_stem[0m[37m[40m, [0m[1m[37m[40mcount[0m[37m[40m([0m[1m[37m[40m*[0m[37m[40m) [0m[1m[36m[40mAS[0m[37m[40m [0m[37m[40mtotal[0m[37m[40m [0m > â[37m[40m [0m[1m[36m[40mFROM[0m[37m[40m [0m[37m[40maccess_log[0m[37m[40m [0m[1m[36m[40mGROUP[0m[37m[40m [0m[1m[36m[40mBY[0m[37m[40m [0m[37m[40mcs_uri_stem[0m[37m[40m [0m[1m[36m[40mORDER[0m[37m[40m [0m[1m[36m[40mBY[0m[37m[40m [0m[37m[40mtotal[0m[37m[40m [0m[1m[36m[40mDESC[0m[37m[40m [0m > â[37m[40m [0m[1m[36m[40mLIMIT[0m[37m[40m [0m[1m[37m[40m10[0m[37m[40m; [0m > >[1mDynamic logline Table (experimental)[0m > >(NOTE: This feature is still very new and not completely reliable yet, >use with care.) > >For log formats that lack message structure, lnav can parse the log >message and attempt to extract any data fields that it finds. This >feature is available through the [37m[40m logline [0m log table. This table is >dynamically created and defined based on the message at the top of the >log view. For example, given the following log message from "sudo", >lnav will create the "logline" table with columns for "TTY", "PWD", >"USER", and "COMMAND": > > â[37m[40mMay 24 06:48:38 Tim-Stacks-iMac.local sudo[76387]: stack : TTY=ttys003 ; PWD=/Users/stack/github/lbuild ; USER=root ; COMMAND=/bin/echo Hello, World! [0m > >Queries executed against this table will then only return results for >other log messages that have the same format. So, if you were to >execute the following query while viewing the above line, you might >get the following results: > > â[37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[37m[40mUSER[0m[37m[40m,[0m[37m[40mCOMMAND[0m[37m[40m [0m[1m[36m[40mFROM[0m[37m[40m [0m[37m[40mlogline[0m[37m[40m; [0m > > USER COMMAND >âââââââââââââââââââââââââââââââââ > root /bin/echo Hello, World! > mal /bin/echo Goodbye, World! > >The log parser works by examining each message for key/value pairs >separated by an equal sign (=) or a colon (:). For example, in the >previous example of a "sudo" message, the parser sees the "USER=root" >string as a pair where the key is "USER" and the value is "root". If >no pairs can be found, then anything that looks like a value is >extracted and assigned a numbered column. For example, the following >line is from "dhcpd": > > â[37m[40mSep 16 22:35:57 drill dhcpd: DHCPDISCOVER from 00:16:ce:54:4e:f3 via hme3 [0m > >In this case, the lnav parser recognizes that "DHCPDISCOVER", the MAC >address and the "hme3" device name are values and not normal words. >So, it builds a table with three columns for each of these values. The >regular words in the message, like "from" and "via", are then used to >find other messages with a similar format. > >If you would like to execute queries against log messages of different >formats at the same time, you can use the 'create-logline-table' >command to permanently create a table using the top line of the log >view as a template. > >[1mOther SQL Features[0m > >Environment variables can be used in SQL statements by prefixing the >variable name with a dollar-sign ($). For example, to read the value >of the [37m[40m HOME [0m variable, you can do: > > â[37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[37m[40m$HOME[0m[37m[40m; [0m > >To select the syslog messages that have a hostname field that is equal >to the [37m[40m HOSTNAME [0m variable: > > â[37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40m*[0m[37m[40m [0m[1m[36m[40mFROM[0m[37m[40m [0m[37m[40msyslog_log[0m[37m[40m [0m[1m[36m[40mWHERE[0m[37m[40m [0m[37m[40mlog_hostname[0m[37m[40m [0m[1m[37m[40m=[0m[37m[40m [0m[37m[40m$HOSTNAME[0m[37m[40m; [0m > >NOTE: Variable substitution is done for fields in the query and is not >a plain text substitution. For example, the following statement WILL >NOT WORK: > > â[37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40m*[0m[37m[40m [0m[1m[36m[40mFROM[0m[37m[40m [0m[37m[40m$TABLE_NAME[0m[37m[40m; [0m[32m[40m-- Syntax error[0m[37m[40m [0m > >Access to lnav's environment variables is also available via the >"environ" table. The table has two columns (name, value) and can be >read and written to using SQL SELECT, INSERT, UPDATE, and DELETE >statements. For example, to set the "FOO" variable to the value "BAR": > > â[37m[40m;[0m[1m[36m[40mINSERT[0m[37m[40m [0m[1m[36m[40mINTO[0m[37m[40m [0m[37m[40menviron[0m[37m[40m [0m[1m[36m[40mSELECT[0m[37m[40m [0m[35m[40m'FOO'[0m[37m[40m, [0m[35m[40m'BAR'[0m[37m[40m; [0m > >As a more complex example, you can set the variable "LAST" to the last >syslog line number by doing: > > â[37m[40m;[0m[1m[36m[40mINSERT[0m[37m[40m [0m[1m[36m[40mINTO[0m[37m[40m [0m[37m[40menviron[0m[37m[40m [0m[1m[36m[40mSELECT[0m[37m[40m [0m[35m[40m'LAST'[0m[37m[40m, ([0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mmax[0m[37m[40m([0m[37m[40mlog_line[0m[37m[40m) [0m[1m[36m[40mFROM[0m[37m[40m [0m[37m[40msyslog_log[0m[37m[40m); [0m > >A delete will unset the environment variable: > > â[37m[40m;[0m[1m[36m[40mDELETE[0m[37m[40m [0m[1m[36m[40mFROM[0m[37m[40m [0m[37m[40menviron[0m[37m[40m [0m[1m[36m[40mWHERE[0m[37m[40m [0m[37m[40mname[0m[1m[37m[40m=[0m[35m[40m'LAST'[0m[37m[40m; [0m > >The table allows you to easily use the results of a SQL query in lnav >commands, which is especially useful when scripting lnav. > >[1mContact[0m > >For more information, visit the lnav website at: > >http://lnav.org > >For support questions, email: > > [33mâ¢[0m lnav@googlegroups.com > [33mâ¢[0m support@lnav.org > >[1mCommand Reference[0m > >[4m:[0m[1m[4madjust-log-time[0m[4m [0m[4mtimestamp[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Change the timestamps of the top file to be relative to the given > date >[4mParameter[0m > [4mtimestamp[0m The new timestamp for the top line in the > view > >[4mExamples[0m >#1 To set the top timestamp to a given date: > [37m[40m:[0m[1m[36m[40madjust-log-time[0m[37m[40m 2017-01-02T05:33:00 [0m > > >#2 To set the top timestamp back an hour: > [37m[40m:[0m[1m[36m[40madjust-log-time[0m[37m[40m -1h [0m > > > >[4m:[0m[1m[4malt-msg[0m[4m [0m[4mmsg[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Display a message in the alternate command position >[4mParameter[0m > [4mmsg[0m The message to display >[4mSee Also[0m > [1m:echo[0m, [1m:eval[0m, [1m:export-session-to[0m, [1m:rebuild[0m, [1m:redirect-to[0m, > [1m:write-csv-to[0m, [1m:write-json-to[0m, [1m:write-jsonlines-to[0m, [1m:write-raw-to[0m, > [1m:write-screen-to[0m, [1m:write-table-to[0m, [1m:write-to[0m, [1m:write-view-to[0m >[4mExample[0m >#1 To display 'Press t to switch to the text view' on the bottom right: > [37m[40m:[0m[1m[36m[40malt-msg[0m[37m[40m Press t to switch to the text view [0m > > > >[4m:[0m[1m[4mappend-to[0m[4m [0m[4mpath[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Append marked lines in the current view to the given file >[4mParameter[0m > [4mpath[0m The path to the file to append to >[4mSee Also[0m > [1m:echo[0m, [1m:export-session-to[0m, [1m:pipe-line-to[0m, [1m:pipe-to[0m, [1m:redirect-to[0m, > [1m:write-csv-to[0m, [1m:write-json-to[0m, [1m:write-jsonlines-to[0m, [1m:write-raw-to[0m, > [1m:write-screen-to[0m, [1m:write-table-to[0m, [1m:write-to[0m, [1m:write-view-to[0m, [1mecholn()[0m >[4mExample[0m >#1 To append marked lines to the file /tmp/interesting-lines.txt: > [37m[40m:[0m[1m[36m[40mappend-to[0m[37m[40m /tmp/interesting-lines.txt [0m > > > >[4m:[0m[1m[4mclear-comment[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Clear the comment attached to the top log line >[4mSee Also[0m > [1m:comment[0m, [1m:tag[0m > >[4m:[0m[1m[4mclear-filter-expr[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Clear the filter expression >[4mSee Also[0m > [1m:filter-expr[0m, [1m:filter-in[0m, [1m:filter-out[0m, [1m:hide-lines-after[0m, > [1m:hide-lines-before[0m, [1m:hide-unmarked-lines[0m, [1m:toggle-filtering[0m > >[4m:[0m[1m[4mclear-highlight[0m[4m [0m[4mpattern[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Remove a previously set highlight regular expression >[4mParameter[0m > [4mpattern[0m The regular expression previously used with > :highlight >[4mSee Also[0m > [1m:enable-word-wrap[0m, [1m:hide-fields[0m, [1m:highlight[0m >[4mExample[0m >#1 To clear the highlight with the pattern 'foobar': > [37m[40m:[0m[1m[36m[40mclear-highlight[0m[37m[40m foobar [0m > > > >[4m:[0m[1m[4mclear-mark-expr[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Clear the mark expression >[4mSee Also[0m > [1m:hide-unmarked-lines[0m, [1m:mark[0m, [1m:mark-expr[0m, [1m:next-mark[0m, [1m:prev-mark[0m > >[4m:[0m[1m[4mclear-partition[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Clear the partition the top line is a part of > > >[4m:[0m[1m[4mclose[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Close the top file in the view > > >[4m:[0m[1m[4mcomment[0m[4m [0m[4mtext[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Attach a comment to the top log line. The comment will be displayed > right below the log message it is associated with. The comment can > be formatted using markdown and you can add new-lines with '\n'. >[4mParameter[0m > [4mtext[0m The comment text >[4mSee Also[0m > [1m:clear-comment[0m, [1m:tag[0m >[4mExample[0m >#1 To add the comment 'This is where it all went wrong' to the top line: > [37m[40m:[0m[1m[36m[40mcomment[0m[37m[40m This is where it all went wrong [0m > > > >[4m:[0m[1m[4mconfig[0m[4m [0m[4moption[0m[4m [[0m[4mvalue[0m[4m][0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Read or write a configuration option >[4mParameters[0m > [4moption[0m The path to the option to read or write > [4mvalue[0m The value to write. If not given, the current > value is returned >[4mSee Also[0m > [1m:reset-config[0m >[4mExamples[0m >#1 To read the configuration of the '/ui/clock-format' option: > [37m[40m:[0m[1m[36m[40mconfig[0m[37m[40m /ui/clock-format [0m > > >#2 To set the '/ui/dim-text' option to 'false': > [37m[40m:[0m[1m[36m[40mconfig[0m[37m[40m /ui/dim-text false [0m > > > >[4m:[0m[1m[4mcreate-logline-table[0m[4m [0m[4mtable-name[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Create an SQL table using the top line of the log view as a template >[4mParameter[0m > [4mtable-name[0m The name for the new table >[4mSee Also[0m > [1m:create-search-table[0m, [1m:create-search-table[0m, [1m:write-csv-to[0m, > [1m:write-json-to[0m, [1m:write-jsonlines-to[0m, [1m:write-raw-to[0m, [1m:write-screen-to[0m, > [1m:write-table-to[0m, [1m:write-view-to[0m >[4mExample[0m >#1 To create a logline-style table named 'task_durations': > [37m[40m:[0m[1m[36m[40mcreate-logline-table[0m[37m[40m task_durations [0m > > > >[4m:[0m[1m[4mcreate-search-table[0m[4m [0m[4mtable-name[0m[4m [[0m[4mpattern[0m[4m][0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Create an SQL table based on a regex search >[4mParameters[0m > [4mtable-name[0m The name of the table to create > [4mpattern[0m The regular expression used to capture the > table columns. If not given, the current search > pattern is used. >[4mSee Also[0m > [1m:create-logline-table[0m, [1m:create-logline-table[0m, [1m:delete-search-table[0m, > [1m:delete-search-table[0m, [1m:write-csv-to[0m, [1m:write-json-to[0m, > [1m:write-jsonlines-to[0m, [1m:write-raw-to[0m, [1m:write-screen-to[0m, [1m:write-table-to[0m, > [1m:write-view-to[0m >[4mExample[0m >#1 To create a table named 'task_durations' that matches log messages with the pattern > 'duration=(?<duration>\d+)': > [37m[40m:[0m[1m[36m[40mcreate-search-table[0m[37m[40m task_durations duration=[0m[1m[32m[40m([0m[1m[32m[40m?[0m[1m[36m[40m<[0m[37m[40mduration[0m[1m[36m[40m>[0m[1m[37m[40m\d[0m[1m[36m[40m+[0m[1m[32m[40m)[0m > > > >[4m:[0m[1m[4mcurre[0m[1m[4mnt-time[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Print the current time in human-readable form and seconds since the > epoch > > >[4m:[0m[1m[4mdelete-filter[0m[4m [0m[4mpattern[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Delete the filter created with [1m:filter-in[0m or [1m:filter-out[0m >[4mParameter[0m > [4mpattern[0m The regular expression to match >[4mSee Also[0m > [1m:filter-in[0m, [1m:filter-out[0m, [1m:hide-lines-after[0m, [1m:hide-lines-before[0m, > [1m:hide-unmarked-lines[0m, [1m:toggle-filtering[0m >[4mExample[0m >#1 To delete the filter with the pattern 'last message repeated': > [37m[40m:[0m[1m[36m[40mdelete-filter[0m[37m[40m last message repeated [0m > > > >[4m:[0m[1m[4mdelete-logline-table[0m[4m [0m[4mtable-name[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Delete a table created with create-logline-table >[4mParameter[0m > [4mtable-name[0m The name of the table to delete >[4mSee Also[0m > [1m:create-logline-table[0m, [1m:create-logline-table[0m, [1m:create-search-table[0m, > [1m:create-search-table[0m, [1m:write-csv-to[0m, [1m:write-json-to[0m, > [1m:write-jsonlines-to[0m, [1m:write-raw-to[0m, [1m:write-screen-to[0m, [1m:write-table-to[0m, > [1m:write-view-to[0m >[4mExample[0m >#1 To delete the logline-style table named 'task_durations': > [37m[40m:[0m[1m[36m[40mdelete-logline-table[0m[37m[40m task_durations [0m > > > >[4m:[0m[1m[4mdelete-search-table[0m[4m [0m[4mtable-name[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Create an SQL table based on a regex search >[4mParameter[0m > [4mtable-name[0m The name of the table to create >[4mSee Also[0m > [1m:create-logline-table[0m, [1m:create-logline-table[0m, [1m:create-search-table[0m, > [1m:create-search-table[0m, [1m:write-csv-to[0m, [1m:write-json-to[0m, > [1m:write-jsonlines-to[0m, [1m:write-raw-to[0m, [1m:write-screen-to[0m, [1m:write-table-to[0m, > [1m:write-view-to[0m >[4mExample[0m >#1 To delete the search table named 'task_durations': > [37m[40m:[0m[1m[36m[40mdelete-search-table[0m[37m[40m task_durations [0m > > > >[4m:[0m[1m[4mdelete-tags[0m[4m [0m[4mtag[0m[4m1[0m[4m [[0m[4m...[0m[4m [0m[4mtag[0m[4mN[0m[4m][0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Remove the given tags from all log lines >[4mParameter[0m > [4mtag[0m The tags to delete >[4mSee Also[0m > [1m:comment[0m, [1m:tag[0m >[4mExample[0m >#1 To remove the tags '#BUG123' and '#needs-review' from all log lines: > [37m[40m:[0m[1m[36m[40mdelete-tags[0m[37m[40m [0m[37m[40m#BUG123[0m[37m[40m [0m[37m[40m#needs-review[0m[37m[40m [0m > > > >[4m:[0m[1m[4mdisable-filter[0m[4m [0m[4mpattern[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Disable a filter created with filter-in/filter-out >[4mParameter[0m > [4mpattern[0m The regular expression used in the filter > command >[4mSee Also[0m > [1m:enable-filter[0m, [1m:filter-in[0m, [1m:filter-out[0m, [1m:hide-lines-after[0m, > [1m:hide-lines-before[0m, [1m:hide-unmarked-lines[0m, [1m:toggle-filtering[0m >[4mExample[0m >#1 To disable the filter with the pattern 'last message repeated': > [37m[40m:[0m[1m[36m[40mdisable-filter[0m[37m[40m last message repeated [0m > > > >[4m:[0m[1m[4mdisable-word-wrap[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Disable word-wrapping for the current view >[4mSee Also[0m > [1m:enable-word-wrap[0m, [1m:hide-fields[0m, [1m:highlight[0m > >[4m:[0m[1m[4mecho[0m[4m [[0m[4m-n[0m[4m] [0m[4mmsg[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Echo the given message to the screen or, if :redirect-to has been > called, to output file specified in the redirect. Variable > substitution is performed on the message. Use a backslash to escape > any special characters, like '$' >[4mParameters[0m > [4m-n[0m Do not print a line-feed at the end of the output > [4mmsg[0m The message to display >[4mSee Also[0m > [1m:alt-msg[0m, [1m:append-to[0m, [1m:eval[0m, [1m:export-session-to[0m, [1m:export-session-to[0m, > [1m:pipe-line-to[0m, [1m:pipe-to[0m, [1m:rebuild[0m, [1m:redirect-to[0m, [1m:redirect-to[0m, > [1m:write-csv-to[0m, [1m:write-csv-to[0m, [1m:write-json-to[0m, [1m:write-json-to[0m, > [1m:write-jsonlines-to[0m, [1m:write-jsonlines-to[0m, [1m:write-raw-to[0m, [1m:write-raw-to[0m, > [1m:write-screen-to[0m, [1m:write-screen-to[0m, [1m:write-table-to[0m, [1m:write-table-to[0m, > [1m:write-to[0m, [1m:write-to[0m, [1m:write-view-to[0m, [1m:write-view-to[0m, [1mecholn()[0m >[4mExample[0m >#1 To output 'Hello, World!': > [37m[40m:[0m[1m[36m[40mecho[0m[37m[40m Hello, World! [0m > > > >[4m:[0m[1m[4menable-filter[0m[4m [0m[4mpattern[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Enable a previously created and disabled filter >[4mParameter[0m > [4mpattern[0m The regular expression used in the filter > command >[4mSee Also[0m > [1m:filter-in[0m, [1m:filter-out[0m, [1m:hide-lines-after[0m, [1m:hide-lines-before[0m, > [1m:hide-unmarked-lines[0m, [1m:toggle-filtering[0m >[4mExample[0m >#1 To enable the disabled filter with the pattern 'last message repeated': > [37m[40m:[0m[1m[36m[40menable-filter[0m[37m[40m last message repeated [0m > > > >[4m:[0m[1m[4menable-word-wrap[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Enable word-wrapping for the current view >[4mSee Also[0m > [1m:disable-word-wrap[0m, [1m:hide-fields[0m, [1m:highlight[0m > >[4m:[0m[1m[4meval[0m[4m [0m[4mcommand[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Evaluate the given command/query after doing environment variable > substitution >[4mParameter[0m > [4mcommand[0m The command or query to perform substitution on. >[4mSee Also[0m > [1m:alt-msg[0m, [1m:echo[0m, [1m:export-session-to[0m, [1m:rebuild[0m, [1m:redirect-to[0m, > [1m:write-csv-to[0m, [1m:write-json-to[0m, [1m:write-jsonlines-to[0m, [1m:write-raw-to[0m, > [1m:write-screen-to[0m, [1m:write-table-to[0m, [1m:write-to[0m, [1m:write-view-to[0m >[4mExample[0m >#1 To substitute the table name from a variable: > [37m[40m:[0m[1m[36m[40meval[0m[37m[40m ;SELECT * FROM [0m[1m[37m[40m${[0m[37m[40mtable[0m[1m[37m[40m}[0m[37m[40m [0m > > > >[4m:[0m[1m[4mexport-session-to[0m[4m [0m[4mpath[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Export the current lnav state to an executable lnav script file that > contains the commands needed to restore the current session >[4mParameter[0m > [4mpath[0m The path to the file to write >[4mSee Also[0m > [1m:alt-msg[0m, [1m:append-to[0m, [1m:echo[0m, [1m:echo[0m, [1m:eval[0m, [1m:pipe-line-to[0m, [1m:pipe-to[0m, > [1m:rebuild[0m, [1m:redirect-to[0m, [1m:redirect-to[0m, [1m:write-csv-to[0m, [1m:write-csv-to[0m, > [1m:write-json-to[0m, [1m:write-json-to[0m, [1m:write-jsonlines-to[0m, > [1m:write-jsonlines-to[0m, [1m:write-raw-to[0m, [1m:write-raw-to[0m, [1m:write-screen-to[0m, > [1m:write-screen-to[0m, [1m:write-table-to[0m, [1m:write-table-to[0m, [1m:write-to[0m, > [1m:write-to[0m, [1m:write-view-to[0m, [1m:write-view-to[0m, [1mecholn()[0m > >[4m:[0m[1m[4mfilter-expr[0m[4m [0m[4mexpr[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Set the filter expression >[4mParameter[0m > [4mexpr[0m The SQL expression to evaluate for each log message. > The message values can be accessed using column names > prefixed with a colon >[4mSee Also[0m > [1m:clear-filter-expr[0m, [1m:filter-in[0m, [1m:filter-out[0m, [1m:hide-lines-after[0m, > [1m:hide-lines-before[0m, [1m:hide-unmarked-lines[0m, [1m:toggle-filtering[0m >[4mExamples[0m >#1 To set a filter expression that matched syslog messages from 'syslogd': > [37m[40m:[0m[1m[36m[40mfilter-expr[0m[37m[40m [0m[37m[40m:log_procname[0m[37m[40m [0m[1m[37m[40m=[0m[37m[40m [0m[35m[40m'syslogd'[0m[37m[40m [0m > > >#2 To set a filter expression that matches log messages where 'id' is followed by a > number and contains the string 'foo': > [37m[40m:[0m[1m[36m[40mfilter-expr[0m[37m[40m [0m[37m[40m:log_body[0m[37m[40m [0m[1m[36m[40mREGEXP[0m[37m[40m [0m[35m[40m'id\d+'[0m[37m[40m [0m[1m[36m[40mAND[0m[37m[40m [0m[37m[40m:log_body[0m[37m[40m [0m[1m[36m[40mREGEXP[0m[37m[40m [0m[35m[40m'foo'[0m > > > >[4m:[0m[1m[4mfilter-in[0m[4m [0m[4mpattern[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Only show lines that match the given regular expression in the > current view >[4mParameter[0m > [4mpattern[0m The regular expression to match >[4mSee Also[0m > [1m:delete-filter[0m, [1m:disable-filter[0m, [1m:filter-out[0m, [1m:hide-lines-after[0m, > [1m:hide-lines-before[0m, [1m:hide-unmarked-lines[0m, [1m:toggle-filtering[0m >[4mExample[0m >#1 To filter out log messages that do not have the string 'dhclient': > [37m[40m:[0m[1m[36m[40mfilter-in[0m[37m[40m dhclient [0m > > > >[4m:[0m[1m[4mfilter-out[0m[4m [0m[4mpattern[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Remove lines that match the given regular expression in the current > view >[4mParameter[0m > [4mpattern[0m The regular expression to match >[4mSee Also[0m > [1m:delete-filter[0m, [1m:disable-filter[0m, [1m:filter-in[0m, [1m:hide-lines-after[0m, > [1m:hide-lines-before[0m, [1m:hide-unmarked-lines[0m, [1m:toggle-filtering[0m >[4mExample[0m >#1 To filter out log messages that contain the string 'last message repeated': > [37m[40m:[0m[1m[36m[40mfilter-out[0m[37m[40m last message repeated [0m > > > >[4m:[0m[1m[4mgoto[0m[4m [0m[4mline#|N%|timestamp|#anchor[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Go to the given location in the top view >[4mParameter[0m > [4mline#|N%|timestamp|#anchor[0m A line > number, percent into the file, > timestamp, or an anchor in a text file >[4mSee Also[0m > [1m:next-location[0m, [1m:next-mark[0m, [1m:prev-location[0m, [1m:prev-mark[0m, [1m:relative-goto[0m >[4mExamples[0m >#1 To go to line 22: > [37m[40m:[0m[1m[36m[40mgoto[0m[37m[40m 22 [0m > > >#2 To go to the line 75% of the way into the view: > [37m[40m:[0m[1m[36m[40mgoto[0m[37m[40m 75% [0m > > >#3 To go to the first message on the first day of 2017: > [37m[40m:[0m[1m[36m[40mgoto[0m[37m[40m 2017-01-01 [0m > > >#4 To go to the Screenshots section: > [37m[40m:[0m[1m[36m[40mgoto[0m[37m[40m #screenshots [0m > > > >[4m:[0m[1m[4mhelp[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Open the help text view > > >[4m:[0m[1m[4mhide-fields[0m[4m [0m[4mfield-name[0m[4m1[0m[4m [[0m[4m...[0m[4m [0m[4mfield-name[0m[4mN[0m[4m][0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Hide log message fields by replacing them with an ellipsis >[4mParameter[0m > [4mfield-name[0m The name of the field to hide in the > format for the top log line. A qualified name can be > used where the field name is prefixed by the format > name and a dot to hide any field. >[4mSee Also[0m > [1m:enable-word-wrap[0m, [1m:highlight[0m, [1m:show-fields[0m >[4mExamples[0m >#1 To hide the log_procname fields in all formats: > [37m[40m:[0m[1m[36m[40mhide-fields[0m[37m[40m log_procname [0m > > >#2 To hide only the log_procname field in the syslog format: > [37m[40m:[0m[1m[36m[40mhide-fields[0m[37m[40m syslog_log.log_procname [0m > > > >[4m:[0m[1m[4mhide-file[0m[4m [0m[4mpath[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Hide the given file(s) and skip indexing until it is shown again. > If no path is given, the current file in the view is hidden >[4mParameter[0m > [4mpath[0m A path or glob pattern that specifies the files to > hide > > >[4m:[0m[1m[4mhide-lines-after[0m[4m [0m[4mdate[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Hide lines that come after the given date >[4mParameter[0m > [4mdate[0m An absolute or relative date >[4mSee Also[0m > [1m:filter-in[0m, [1m:filter-out[0m, [1m:hide-lines-before[0m, [1m:hide-unmarked-lines[0m, > [1m:show-lines-before-and-after[0m, [1m:toggle-filtering[0m >[4mExamples[0m >#1 To hide the lines after the top line in the view: > [37m[40m:[0m[1m[36m[40mhide-lines-after[0m[37m[40m here [0m > > >#2 To hide the lines after 6 AM today: > [37m[40m:[0m[1m[36m[40mhide-lines-after[0m[37m[40m 6am [0m > > > >[4m:[0m[1m[4mhide-lines-before[0m[4m [0m[4mdate[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Hide lines that come before the given date >[4mParameter[0m > [4mdate[0m An absolute or relative date >[4mSee Also[0m > [1m:filter-in[0m, [1m:filter-out[0m, [1m:hide-lines-after[0m, [1m:hide-unmarked-lines[0m, > [1m:show-lines-before-and-after[0m, [1m:toggle-filtering[0m >[4mExamples[0m >#1 To hide the lines before the top line in the view: > [37m[40m:[0m[1m[36m[40mhide-lines-before[0m[37m[40m here [0m > > >#2 To hide the log messages before 6 AM today: > [37m[40m:[0m[1m[36m[40mhide-lines-before[0m[37m[40m 6am [0m > > > >[4m:[0m[1m[4mhide-unmarked-lines[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Hide lines that have not been bookmarked >[4mSee Also[0m > [1m:filter-in[0m, [1m:filter-out[0m, [1m:hide-lines-after[0m, [1m:hide-lines-before[0m, [1m:mark[0m, > [1m:next-mark[0m, [1m:prev-mark[0m, [1m:toggle-filtering[0m > >[4m:[0m[1m[4mhighlight[0m[4m [0m[4mpattern[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Add coloring to log messages fragments that match the given regular > expression >[4mParameter[0m > [4mpattern[0m The regular expression to match >[4mSee Also[0m > [1m:clear-highlight[0m, [1m:enable-word-wrap[0m, [1m:hide-fields[0m >[4mExample[0m >#1 To highlight numbers with three or more digits: > [37m[40m:[0m[1m[36m[40mhighlight[0m[37m[40m [0m[1m[37m[40m\d[0m[1m[32m[40m{[0m[37m[40m3,[0m[1m[32m[40m}[0m[37m[40m [0m > > > >[4m:[0m[1m[4mload-session[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Load the latest session state > > >[4m:[0m[1m[4mmark[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Toggle the bookmark state for the top line in the current view >[4mSee Also[0m > [1m:hide-unmarked-lines[0m, [1m:next-mark[0m, [1m:prev-mark[0m > >[4m:[0m[1m[4mmark-expr[0m[4m [0m[4mexpr[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Set the bookmark expression >[4mParameter[0m > [4mexpr[0m The SQL expression to evaluate for each log message. > The message values can be accessed using column names > prefixed with a colon >[4mSee Also[0m > [1m:clear-mark-expr[0m, [1m:hide-unmarked-lines[0m, [1m:mark[0m, [1m:next-mark[0m, [1m:prev-mark[0m >[4mExample[0m >#1 To mark lines from 'dhclient' that mention 'eth0': > [37m[40m:[0m[1m[36m[40mmark-expr[0m[37m[40m [0m[37m[40m:log_procname[0m[37m[40m [0m[1m[37m[40m=[0m[37m[40m [0m[35m[40m'dhclient'[0m[37m[40m [0m[1m[36m[40mAND[0m[37m[40m [0m[37m[40m:log_body[0m[37m[40m [0m[1m[36m[40mLIKE[0m[37m[40m [0m[35m[40m'%eth0%'[0m > > > >[4m:[0m[1m[4mnext-location[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Move to the next position in the location history >[4mSee Also[0m > [1m:goto[0m, [1m:next-mark[0m, [1m:prev-location[0m, [1m:prev-mark[0m, [1m:relative-goto[0m > >[4m:[0m[1m[4mnext-mark[0m[4m [0m[4mtype[0m[4m1[0m[4m [[0m[4m...[0m[4m [0m[4mtype[0m[4mN[0m[4m][0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Move to the next bookmark of the given type in the current view >[4mParameter[0m > [4mtype[0m The type of bookmark -- error, warning, search, user, > file, meta >[4mSee Also[0m > [1m:goto[0m, [1m:hide-unmarked-lines[0m, [1m:mark[0m, [1m:next-location[0m, [1m:prev-location[0m, > [1m:prev-mark[0m, [1m:prev-mark[0m, [1m:relative-goto[0m >[4mExample[0m >#1 To go to the next error: > [37m[40m:[0m[1m[36m[40mnext-mark[0m[37m[40m error [0m > > > >[4m:[0m[1m[4mopen[0m[4m [0m[4mpath[0m[4m1[0m[4m [[0m[4m...[0m[4m [0m[4mpath[0m[4mN[0m[4m][0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Open the given file(s) in lnav. Opening files on machines > accessible via SSH can be done using the syntax: > [user@]host:/path/to/logs >[4mParameter[0m > [4mpath[0m The path to the file to open > >[4mExamples[0m >#1 To open the file '/path/to/file': > [37m[40m:[0m[1m[36m[40mopen[0m[37m[40m /path/to/file [0m > > >#2 To open the remote file '/var/log/syslog.log': > [37m[40m:[0m[1m[36m[40mopen[0m[37m[40m dean@host1.example.com:/var/log/syslog.log [0m > > > >[4m:[0m[1m[4mpartition-name[0m[4m [0m[4mname[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Mark the top line in the log view as the start of a new partition > with the given name >[4mParameter[0m > [4mname[0m The name for the new partition > >[4mExample[0m >#1 To mark the top line as the start of the partition named 'boot #1': > [37m[40m:[0m[1m[36m[40mpartition-name[0m[37m[40m boot #1 [0m > > > >[4m:[0m[1m[4mpipe-line-to[0m[4m [0m[4mshell-cmd[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Pipe the top line to the given shell command >[4mParameter[0m > [4mshell-cmd[0m The shell command-line to execute >[4mSee Also[0m > [1m:append-to[0m, [1m:echo[0m, [1m:export-session-to[0m, [1m:pipe-to[0m, [1m:redirect-to[0m, > [1m:write-csv-to[0m, [1m:write-json-to[0m, [1m:write-jsonlines-to[0m, [1m:write-raw-to[0m, > [1m:write-screen-to[0m, [1m:write-table-to[0m, [1m:write-to[0m, [1m:write-view-to[0m, [1mecholn()[0m >[4mExample[0m >#1 To write the top line to 'sed' for processing: > [37m[40m:[0m[1m[36m[40mpipe-line-to[0m[37m[40m sed -e 's/foo/bar/g' [0m > > > >[4m:[0m[1m[4mpipe-to[0m[4m [0m[4mshell-cmd[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Pipe the marked lines to the given shell command >[4mParameter[0m > [4mshell-cmd[0m The shell command-line to execute >[4mSee Also[0m > [1m:append-to[0m, [1m:echo[0m, [1m:export-session-to[0m, [1m:pipe-line-to[0m, [1m:redirect-to[0m, > [1m:write-csv-to[0m, [1m:write-json-to[0m, [1m:write-jsonlines-to[0m, [1m:write-raw-to[0m, > [1m:write-screen-to[0m, [1m:write-table-to[0m, [1m:write-to[0m, [1m:write-view-to[0m, [1mecholn()[0m >[4mExample[0m >#1 To write marked lines to 'sed' for processing: > [37m[40m:[0m[1m[36m[40mpipe-to[0m[37m[40m sed -e s/foo/bar/g [0m > > > >[4m:[0m[1m[4mprev-location[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Move to the previous position in the location history >[4mSee Also[0m > [1m:goto[0m, [1m:next-location[0m, [1m:next-mark[0m, [1m:prev-mark[0m, [1m:relative-goto[0m > >[4m:[0m[1m[4mprev-mark[0m[4m [0m[4mtype[0m[4m1[0m[4m [[0m[4m...[0m[4m [0m[4mtype[0m[4mN[0m[4m][0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Move to the previous bookmark of the given type in the current view >[4mParameter[0m > [4mtype[0m The type of bookmark -- error, warning, search, user, > file, meta >[4mSee Also[0m > [1m:goto[0m, [1m:hide-unmarked-lines[0m, [1m:mark[0m, [1m:next-location[0m, [1m:next-mark[0m, > [1m:next-mark[0m, [1m:prev-location[0m, [1m:relative-goto[0m >[4mExample[0m >#1 To go to the previous error: > [37m[40m:[0m[1m[36m[40mprev-mark[0m[37m[40m error [0m > > > >[4m:[0m[1m[4mprompt[0m[4m [0m[4mtype[0m[4m [[0m[4m--alt[0m[4m] [[0m[4mprompt[0m[4m] [[0m[4minitial-value[0m[4m][0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Open the given prompt >[4mParameters[0m > [4mtype[0m The type of prompt -- command, > script, search, sql, user > [4m--alt[0m Perform the alternate action for > this prompt by default > [4mprompt[0m The prompt to display > [4minitial-value[0m The initial value to fill in for the > prompt > >[4mExamples[0m >#1 To open the command prompt with 'filter-in' already filled in: > [37m[40m:[0m[1m[36m[40mprompt[0m[37m[40m command : 'filter-in ' [0m > > >#2 To ask the user a question: > [37m[40m:[0m[1m[36m[40mprompt[0m[37m[40m user 'Are you sure? ' [0m > > > >[4m:[0m[1m[4mquit[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Quit lnav > > >[4m:[0m[1m[4mquit[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Quit lnav > > >[4m:[0m[1m[4mquit[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Quit lnav > > >[4m:[0m[1m[4mrebuild[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Forcefully rebuild file indexes >[4mSee Also[0m > [1m:alt-msg[0m, [1m:echo[0m, [1m:eval[0m, [1m:export-session-to[0m, [1m:redirect-to[0m, > [1m:write-csv-to[0m, [1m:write-json-to[0m, [1m:write-jsonlines-to[0m, [1m:write-raw-to[0m, > [1m:write-screen-to[0m, [1m:write-table-to[0m, [1m:write-to[0m, [1m:write-view-to[0m > >[4m:[0m[1m[4mredirect-to[0m[4m [[0m[4mpath[0m[4m][0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Redirect the output of commands that write to stdout to the given > file >[4mParameter[0m > [4mpath[0m The path to the file to write. If not specified, the > current redirect will be cleared >[4mSee Also[0m > [1m:alt-msg[0m, [1m:append-to[0m, [1m:echo[0m, [1m:echo[0m, [1m:eval[0m, [1m:export-session-to[0m, > [1m:export-session-to[0m, [1m:pipe-line-to[0m, [1m:pipe-to[0m, [1m:rebuild[0m, [1m:write-csv-to[0m, > [1m:write-csv-to[0m, [1m:write-json-to[0m, [1m:write-json-to[0m, [1m:write-jsonlines-to[0m, > [1m:write-jsonlines-to[0m, [1m:write-raw-to[0m, [1m:write-raw-to[0m, [1m:write-screen-to[0m, > [1m:write-screen-to[0m, [1m:write-table-to[0m, [1m:write-table-to[0m, [1m:write-to[0m, > [1m:write-to[0m, [1m:write-view-to[0m, [1m:write-view-to[0m, [1mecholn()[0m >[4mExample[0m >#1 To write the output of lnav commands to the file /tmp/script-output.txt: > [37m[40m:[0m[1m[36m[40mredirect-to[0m[37m[40m /tmp/script-output.txt [0m > > > >[4m:[0m[1m[4mredraw[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Do a full redraw of the screen > > >[4m:[0m[1m[4mrelative-goto[0m[4m [0m[4mline-count|N%[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Move the current view up or down by the given amount >[4mParameter[0m > [4mline-count|N%[0m The amount to move the view by. >[4mSee Also[0m > [1m:goto[0m, [1m:next-location[0m, [1m:next-mark[0m, [1m:prev-location[0m, [1m:prev-mark[0m >[4mExamples[0m >#1 To move 22 lines down in the view: > [37m[40m:[0m[1m[36m[40mrelative-goto[0m[37m[40m +22 [0m > > >#2 To move 10 percent back in the view: > [37m[40m:[0m[1m[36m[40mrelative-goto[0m[37m[40m -10% [0m > > > >[4m:[0m[1m[4mreset-config[0m[4m [0m[4moption[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Reset the configuration option to its default value >[4mParameter[0m > [4moption[0m The path to the option to reset >[4mSee Also[0m > [1m:config[0m >[4mExample[0m >#1 To reset the '/ui/clock-format' option back to the builtin default: > [37m[40m:[0m[1m[36m[40mreset-config[0m[37m[40m /ui/clock-format [0m > > > >[4m:[0m[1m[4mreset-session[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Reset the session state, clearing all filters, highlights, and > bookmarks > > >[4m:[0m[1m[4msave-session[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Save the current state as a session > > >[4m:[0m[1m[4msession[0m[4m [0m[4mlnav-command[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Add the given command to the session file (~/.lnav/session) >[4mParameter[0m > [4mlnav-command[0m The lnav command to save. > >[4mExample[0m >#1 To add the command ':highlight foobar' to the session file: > [37m[40m:[0m[1m[36m[40msession[0m[37m[40m :highlight foobar [0m > > > >[4m:[0m[1m[4mset-min-log-level[0m[4m [0m[4mlog-level[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Set the minimum log level to display in the log view >[4mParameter[0m > [4mlog-level[0m The new minimum log level > >[4mExample[0m >#1 To set the minimum log level displayed to error: > [37m[40m:[0m[1m[36m[40mset-min-log-level[0m[37m[40m error [0m > > > >[4m:[0m[1m[4mshow-fields[0m[4m [0m[4mfield-name[0m[4m1[0m[4m [[0m[4m...[0m[4m [0m[4mfield-name[0m[4mN[0m[4m][0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Show log message fields that were previously hidden >[4mParameter[0m > [4mfield-name[0m The name of the field to show >[4mSee Also[0m > [1m:enable-word-wrap[0m, [1m:hide-fields[0m, [1m:highlight[0m >[4mExample[0m >#1 To show all the log_procname fields in all formats: > [37m[40m:[0m[1m[36m[40mshow-fields[0m[37m[40m log_procname [0m > > > >[4m:[0m[1m[4mshow-file[0m[4m [0m[4mpath[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Show the given file(s) and resume indexing. >[4mParameter[0m > [4mpath[0m The path or glob pattern that specifies the files to > show > > >[4m:[0m[1m[4mshow-lines-before-and-after[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Show lines that were hidden by the 'hide-lines' commands >[4mSee Also[0m > [1m:filter-in[0m, [1m:filter-out[0m, [1m:hide-lines-after[0m, [1m:hide-lines-before[0m, > [1m:hide-unmarked-lines[0m, [1m:toggle-filtering[0m > >[4m:[0m[1m[4mshow-only-this-file[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Show only the file for the top line in the view > > >[4m:[0m[1m[4mshow-unmarked-lines[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Show lines that have not been bookmarked >[4mSee Also[0m > [1m:filter-in[0m, [1m:filter-out[0m, [1m:hide-lines-after[0m, [1m:hide-lines-before[0m, > [1m:hide-unmarked-lines[0m, [1m:hide-unmarked-lines[0m, [1m:mark[0m, [1m:next-mark[0m, > [1m:prev-mark[0m, [1m:toggle-filtering[0m > >[4m:[0m[1m[4mspectrogram[0m[4m [0m[4mfield-name[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Visualize the given message field or database column using a > spectrogram >[4mParameter[0m > [4mfield-name[0m The name of the numeric field to > visualize. > >[4mExample[0m >#1 To visualize the sc_bytes field in the access_log format: > [37m[40m:[0m[1m[36m[40mspectrogram[0m[37m[40m sc_bytes [0m > > > >[4m:[0m[1m[4msummarize[0m[4m [0m[4mcolumn-name[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Execute a SQL query that computes the characteristics of the values > in the given column >[4mParameter[0m > [4mcolumn-name[0m The name of the column to analyze. > >[4mExample[0m >#1 To get a summary of the sc_bytes column in the access_log table: > [37m[40m:[0m[1m[36m[40msummarize[0m[37m[40m sc_bytes [0m > > > >[4m:[0m[1m[4mswitch-to-view[0m[4m [0m[4mview-name[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Switch to the given view >[4mParameter[0m > [4mview-name[0m The name of the view to switch to. > >[4mExample[0m >#1 To switch to the 'schema' view: > [37m[40m:[0m[1m[36m[40mswitch-to-view[0m[37m[40m schema [0m > > > >[4m:[0m[1m[4mtag[0m[4m [0m[4mtag[0m[4m1[0m[4m [[0m[4m...[0m[4m [0m[4mtag[0m[4mN[0m[4m][0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Attach tags to the top log line >[4mParameter[0m > [4mtag[0m The tags to attach >[4mSee Also[0m > [1m:comment[0m, [1m:delete-tags[0m, [1m:untag[0m >[4mExample[0m >#1 To add the tags '#BUG123' and '#needs-review' to the top line: > [37m[40m:[0m[1m[36m[40mtag[0m[37m[40m [0m[37m[40m#BUG123[0m[37m[40m [0m[37m[40m#needs-review[0m[37m[40m [0m > > > >[4m:[0m[1m[4mtoggle-filtering[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Toggle the filtering flag for the current view >[4mSee Also[0m > [1m:filter-in[0m, [1m:filter-out[0m, [1m:hide-lines-after[0m, [1m:hide-lines-before[0m, > [1m:hide-unmarked-lines[0m > >[4m:[0m[1m[4mtoggle-view[0m[4m [0m[4mview-name[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Switch to the given view or, if it is already displayed, switch to > the previous view >[4mParameter[0m > [4mview-name[0m The name of the view to toggle the display > of. > >[4mExample[0m >#1 To switch to the 'schema' view if it is not displayed or switch back to the previous > view: > [37m[40m:[0m[1m[36m[40mtoggle-view[0m[37m[40m schema [0m > > > >[4m:[0m[1m[4munix-time[0m[4m [0m[4mseconds[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Convert epoch time to a human-readable form >[4mParameter[0m > [4mseconds[0m The epoch timestamp to convert > >[4mExample[0m >#1 To convert the epoch time 1490191111: > [37m[40m:[0m[1m[36m[40munix-time[0m[37m[40m 1490191111 [0m > > > >[4m:[0m[1m[4muntag[0m[4m [0m[4mtag[0m[4m1[0m[4m [[0m[4m...[0m[4m [0m[4mtag[0m[4mN[0m[4m][0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Detach tags from the top log line >[4mParameter[0m > [4mtag[0m The tags to detach >[4mSee Also[0m > [1m:comment[0m, [1m:tag[0m >[4mExample[0m >#1 To remove the tags '#BUG123' and '#needs-review' from the top line: > [37m[40m:[0m[1m[36m[40muntag[0m[37m[40m [0m[37m[40m#BUG123[0m[37m[40m [0m[37m[40m#needs-review[0m[37m[40m [0m > > > >[4m:[0m[1m[4mwrite-table-to[0m[4m [[0m[4m--anonymize[0m[4m] [0m[4mpath[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Write SQL results to the given file in a tabular format >[4mParameters[0m > [4m--anonymize[0m Anonymize the table contents > [4mpath[0m The path to the file to write >[4mSee Also[0m > [1m:alt-msg[0m, [1m:append-to[0m, [1m:create-logline-table[0m, [1m:create-search-table[0m, > [1m:echo[0m, [1m:echo[0m, [1m:eval[0m, [1m:export-session-to[0m, [1m:export-session-to[0m, > [1m:pipe-line-to[0m, [1m:pipe-to[0m, [1m:rebuild[0m, [1m:redirect-to[0m, [1m:redirect-to[0m, > [1m:write-csv-to[0m, [1m:write-csv-to[0m, [1m:write-csv-to[0m, [1m:write-json-to[0m, > [1m:write-json-to[0m, [1m:write-json-to[0m, [1m:write-jsonlines-to[0m, > [1m:write-jsonlines-to[0m, [1m:write-jsonlines-to[0m, [1m:write-raw-to[0m, [1m:write-raw-to[0m, > [1m:write-raw-to[0m, [1m:write-screen-to[0m, [1m:write-screen-to[0m, [1m:write-screen-to[0m, > [1m:write-to[0m, [1m:write-to[0m, [1m:write-view-to[0m, [1m:write-view-to[0m, [1m:write-view-to[0m, > [1mecholn()[0m >[4mExample[0m >#1 To write SQL results as text to /tmp/table.txt: > [37m[40m:[0m[1m[36m[40mwrite-table-to[0m[37m[40m /tmp/table.txt [0m > > > >[4m:[0m[1m[4mwrite-csv-to[0m[4m [[0m[4m--anonymize[0m[4m] [0m[4mpath[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Write SQL results to the given file in CSV format >[4mParameters[0m > [4m--anonymize[0m Anonymize the row contents > [4mpath[0m The path to the file to write >[4mSee Also[0m > [1m:alt-msg[0m, [1m:append-to[0m, [1m:create-logline-table[0m, [1m:create-search-table[0m, > [1m:echo[0m, [1m:echo[0m, [1m:eval[0m, [1m:export-session-to[0m, [1m:export-session-to[0m, > [1m:pipe-line-to[0m, [1m:pipe-to[0m, [1m:rebuild[0m, [1m:redirect-to[0m, [1m:redirect-to[0m, > [1m:write-json-to[0m, [1m:write-json-to[0m, [1m:write-json-to[0m, [1m:write-jsonlines-to[0m, > [1m:write-jsonlines-to[0m, [1m:write-jsonlines-to[0m, [1m:write-raw-to[0m, [1m:write-raw-to[0m, > [1m:write-raw-to[0m, [1m:write-screen-to[0m, [1m:write-screen-to[0m, [1m:write-screen-to[0m, > [1m:write-table-to[0m, [1m:write-table-to[0m, [1m:write-table-to[0m, [1m:write-to[0m, > [1m:write-to[0m, [1m:write-view-to[0m, [1m:write-view-to[0m, [1m:write-view-to[0m, [1mecholn()[0m >[4mExample[0m >#1 To write SQL results as CSV to /tmp/table.csv: > [37m[40m:[0m[1m[36m[40mwrite-csv-to[0m[37m[40m /tmp/table.csv [0m > > > >[4m:[0m[1m[4mwrite-json-to[0m[4m [[0m[4m--anonymize[0m[4m] [0m[4mpath[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Write SQL results to the given file in JSON format >[4mParameters[0m > [4m--anonymize[0m Anonymize the JSON values > [4mpath[0m The path to the file to write >[4mSee Also[0m > [1m:alt-msg[0m, [1m:append-to[0m, [1m:create-logline-table[0m, [1m:create-search-table[0m, > [1m:echo[0m, [1m:echo[0m, [1m:eval[0m, [1m:export-session-to[0m, [1m:export-session-to[0m, > [1m:pipe-line-to[0m, [1m:pipe-to[0m, [1m:rebuild[0m, [1m:redirect-to[0m, [1m:redirect-to[0m, > [1m:write-csv-to[0m, [1m:write-csv-to[0m, [1m:write-csv-to[0m, [1m:write-jsonlines-to[0m, > [1m:write-jsonlines-to[0m, [1m:write-jsonlines-to[0m, [1m:write-raw-to[0m, [1m:write-raw-to[0m, > [1m:write-raw-to[0m, [1m:write-screen-to[0m, [1m:write-screen-to[0m, [1m:write-screen-to[0m, > [1m:write-table-to[0m, [1m:write-table-to[0m, [1m:write-table-to[0m, [1m:write-to[0m, > [1m:write-to[0m, [1m:write-view-to[0m, [1m:write-view-to[0m, [1m:write-view-to[0m, [1mecholn()[0m >[4mExample[0m >#1 To write SQL results as JSON to /tmp/table.json: > [37m[40m:[0m[1m[36m[40mwrite-json-to[0m[37m[40m /tmp/table.json [0m > > > >[4m:[0m[1m[4mwrite-jsonlines-to[0m[4m [[0m[4m--anonymize[0m[4m] [0m[4mpath[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Write SQL results to the given file in JSON Lines format >[4mParameters[0m > [4m--anonymize[0m Anonymize the JSON values > [4mpath[0m The path to the file to write >[4mSee Also[0m > [1m:alt-msg[0m, [1m:append-to[0m, [1m:create-logline-table[0m, [1m:create-search-table[0m, > [1m:echo[0m, [1m:echo[0m, [1m:eval[0m, [1m:export-session-to[0m, [1m:export-session-to[0m, > [1m:pipe-line-to[0m, [1m:pipe-to[0m, [1m:rebuild[0m, [1m:redirect-to[0m, [1m:redirect-to[0m, > [1m:write-csv-to[0m, [1m:write-csv-to[0m, [1m:write-csv-to[0m, [1m:write-json-to[0m, > [1m:write-json-to[0m, [1m:write-json-to[0m, [1m:write-raw-to[0m, [1m:write-raw-to[0m, > [1m:write-raw-to[0m, [1m:write-screen-to[0m, [1m:write-screen-to[0m, [1m:write-screen-to[0m, > [1m:write-table-to[0m, [1m:write-table-to[0m, [1m:write-table-to[0m, [1m:write-to[0m, > [1m:write-to[0m, [1m:write-view-to[0m, [1m:write-view-to[0m, [1m:write-view-to[0m, [1mecholn()[0m >[4mExample[0m >#1 To write SQL results as JSON Lines to /tmp/table.json: > [37m[40m:[0m[1m[36m[40mwrite-jsonlines-to[0m[37m[40m /tmp/table.json [0m > > > >[4m:[0m[1m[4mwrite-raw-to[0m[4m [[0m[4m--view={log,db}[0m[4m] [[0m[4m--anonymize[0m[4m] [0m[4mpath[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > In the log view, write the original log file content of the marked > messages to the file. In the DB view, the contents of the cells are > written to the output file. >[4mParameters[0m > [4m--view={log,db}[0m The view to use as the source of > data > [4m--anonymize[0m Anonymize the lines > [4mpath[0m The path to the file to write >[4mSee Also[0m > [1m:alt-msg[0m, [1m:append-to[0m, [1m:create-logline-table[0m, [1m:create-search-table[0m, > [1m:echo[0m, [1m:echo[0m, [1m:eval[0m, [1m:export-session-to[0m, [1m:export-session-to[0m, > [1m:pipe-line-to[0m, [1m:pipe-to[0m, [1m:rebuild[0m, [1m:redirect-to[0m, [1m:redirect-to[0m, > [1m:write-csv-to[0m, [1m:write-csv-to[0m, [1m:write-csv-to[0m, [1m:write-json-to[0m, > [1m:write-json-to[0m, [1m:write-json-to[0m, [1m:write-jsonlines-to[0m, > [1m:write-jsonlines-to[0m, [1m:write-jsonlines-to[0m, [1m:write-screen-to[0m, > [1m:write-screen-to[0m, [1m:write-screen-to[0m, [1m:write-table-to[0m, [1m:write-table-to[0m, > [1m:write-table-to[0m, [1m:write-to[0m, [1m:write-to[0m, [1m:write-view-to[0m, [1m:write-view-to[0m, > [1m:write-view-to[0m, [1mecholn()[0m >[4mExample[0m >#1 To write the marked lines in the log view to /tmp/table.txt: > [37m[40m:[0m[1m[36m[40mwrite-raw-to[0m[37m[40m /tmp/table.txt [0m > > > >[4m:[0m[1m[4mwrite-screen-to[0m[4m [[0m[4m--anonymize[0m[4m] [0m[4mpath[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Write the displayed text or SQL results to the given file without > any formatting >[4mParameters[0m > [4m--anonymize[0m Anonymize the lines > [4mpath[0m The path to the file to write >[4mSee Also[0m > [1m:alt-msg[0m, [1m:append-to[0m, [1m:create-logline-table[0m, [1m:create-search-table[0m, > [1m:echo[0m, [1m:echo[0m, [1m:eval[0m, [1m:export-session-to[0m, [1m:export-session-to[0m, > [1m:pipe-line-to[0m, [1m:pipe-to[0m, [1m:rebuild[0m, [1m:redirect-to[0m, [1m:redirect-to[0m, > [1m:write-csv-to[0m, [1m:write-csv-to[0m, [1m:write-csv-to[0m, [1m:write-json-to[0m, > [1m:write-json-to[0m, [1m:write-json-to[0m, [1m:write-jsonlines-to[0m, > [1m:write-jsonlines-to[0m, [1m:write-jsonlines-to[0m, [1m:write-raw-to[0m, [1m:write-raw-to[0m, > [1m:write-raw-to[0m, [1m:write-table-to[0m, [1m:write-table-to[0m, [1m:write-table-to[0m, > [1m:write-to[0m, [1m:write-to[0m, [1m:write-view-to[0m, [1m:write-view-to[0m, [1m:write-view-to[0m, > [1mecholn()[0m >[4mExample[0m >#1 To write only the displayed text to /tmp/table.txt: > [37m[40m:[0m[1m[36m[40mwrite-screen-to[0m[37m[40m /tmp/table.txt [0m > > > >[4m:[0m[1m[4mwrite-table-to[0m[4m [[0m[4m--anonymize[0m[4m] [0m[4mpath[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Write SQL results to the given file in a tabular format >[4mParameters[0m > [4m--anonymize[0m Anonymize the table contents > [4mpath[0m The path to the file to write >[4mSee Also[0m > [1m:alt-msg[0m, [1m:append-to[0m, [1m:create-logline-table[0m, [1m:create-search-table[0m, > [1m:echo[0m, [1m:echo[0m, [1m:eval[0m, [1m:export-session-to[0m, [1m:export-session-to[0m, > [1m:pipe-line-to[0m, [1m:pipe-to[0m, [1m:rebuild[0m, [1m:redirect-to[0m, [1m:redirect-to[0m, > [1m:write-csv-to[0m, [1m:write-csv-to[0m, [1m:write-csv-to[0m, [1m:write-json-to[0m, > [1m:write-json-to[0m, [1m:write-json-to[0m, [1m:write-jsonlines-to[0m, > [1m:write-jsonlines-to[0m, [1m:write-jsonlines-to[0m, [1m:write-raw-to[0m, [1m:write-raw-to[0m, > [1m:write-raw-to[0m, [1m:write-screen-to[0m, [1m:write-screen-to[0m, [1m:write-screen-to[0m, > [1m:write-to[0m, [1m:write-to[0m, [1m:write-view-to[0m, [1m:write-view-to[0m, [1m:write-view-to[0m, > [1mecholn()[0m >[4mExample[0m >#1 To write SQL results as text to /tmp/table.txt: > [37m[40m:[0m[1m[36m[40mwrite-table-to[0m[37m[40m /tmp/table.txt [0m > > > >[4m:[0m[1m[4mwrite-to[0m[4m [[0m[4m--anonymize[0m[4m] [0m[4mpath[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Overwrite the given file with any marked lines in the current view >[4mParameters[0m > [4m--anonymize[0m Anonymize the lines > [4mpath[0m The path to the file to write >[4mSee Also[0m > [1m:alt-msg[0m, [1m:append-to[0m, [1m:echo[0m, [1m:echo[0m, [1m:eval[0m, [1m:export-session-to[0m, > [1m:export-session-to[0m, [1m:pipe-line-to[0m, [1m:pipe-to[0m, [1m:rebuild[0m, [1m:redirect-to[0m, > [1m:redirect-to[0m, [1m:write-csv-to[0m, [1m:write-csv-to[0m, [1m:write-json-to[0m, > [1m:write-json-to[0m, [1m:write-jsonlines-to[0m, [1m:write-jsonlines-to[0m, > [1m:write-raw-to[0m, [1m:write-raw-to[0m, [1m:write-screen-to[0m, [1m:write-screen-to[0m, > [1m:write-table-to[0m, [1m:write-table-to[0m, [1m:write-view-to[0m, [1m:write-view-to[0m, > [1mecholn()[0m >[4mExample[0m >#1 To write marked lines to the file /tmp/interesting-lines.txt: > [37m[40m:[0m[1m[36m[40mwrite-to[0m[37m[40m /tmp/interesting-lines.txt [0m > > > >[4m:[0m[1m[4mwrite-view-to[0m[4m [[0m[4m--anonymize[0m[4m] [0m[4mpath[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Write the text in the top view to the given file without any > formatting >[4mParameters[0m > [4m--anonymize[0m Anonymize the lines > [4mpath[0m The path to the file to write >[4mSee Also[0m > [1m:alt-msg[0m, [1m:append-to[0m, [1m:create-logline-table[0m, [1m:create-search-table[0m, > [1m:echo[0m, [1m:echo[0m, [1m:eval[0m, [1m:export-session-to[0m, [1m:export-session-to[0m, > [1m:pipe-line-to[0m, [1m:pipe-to[0m, [1m:rebuild[0m, [1m:redirect-to[0m, [1m:redirect-to[0m, > [1m:write-csv-to[0m, [1m:write-csv-to[0m, [1m:write-csv-to[0m, [1m:write-json-to[0m, > [1m:write-json-to[0m, [1m:write-json-to[0m, [1m:write-jsonlines-to[0m, > [1m:write-jsonlines-to[0m, [1m:write-jsonlines-to[0m, [1m:write-raw-to[0m, [1m:write-raw-to[0m, > [1m:write-raw-to[0m, [1m:write-screen-to[0m, [1m:write-screen-to[0m, [1m:write-screen-to[0m, > [1m:write-table-to[0m, [1m:write-table-to[0m, [1m:write-table-to[0m, [1m:write-to[0m, > [1m:write-to[0m, [1mecholn()[0m >[4mExample[0m >#1 To write the top view to /tmp/table.txt: > [37m[40m:[0m[1m[36m[40mwrite-view-to[0m[37m[40m /tmp/table.txt [0m > > > >[4m:[0m[1m[4mzoom-to[0m[4m [0m[4mzoom-level[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Zoom the histogram view to the given level >[4mParameter[0m > [4mzoom-level[0m The zoom level > >[4mExample[0m >#1 To set the zoom level to '1-week': > [37m[40m:[0m[1m[36m[40mzoom-to[0m[37m[40m 1-week [0m > > >[1mSQL Reference[0m > >[1m[4mCAST[0m[4m([0m[4mexpr[0m[4m [0m[1m[4mAS[0m[4m [0m[4mtype-name[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Convert the value of the given expression to a different storage > class specified by type-name. >[4mParameters[0m > [4mexpr[0m The value to convert. > [4mtype-name[0m The name of the type to convert to. > >[4mExample[0m >#1 To cast the value 1.23 as an integer: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[36m[40mCAST[0m[37m[40m([0m[1m[37m[40m1.23[0m[37m[40m [0m[1m[36m[40mAS[0m[37m[40m [0m[37m[40mINTEGER[0m[37m[40m) [0m > > > >[1mOVER[0m([[4mbase-window-name[0m] [1mPARTITION BY[0m [4mexpr[0m, ... [1mORDER BY[0m [4mexpr[0m, ..., >[4m [0m[4m[[0m[4mframe-spec[0m[4m])[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Executes the preceding function over a window >[4mParameters[0m > [4mbase-window-name[0m The name of the window > definition > [4mexpr[0m The values to use for > partitioning > [4mexpr[0m The values used to order the > rows in the window > [4mframe-spec[0m Determines which output rows > are read by an aggregate window function > > >[1m[4mabs[0m[4m([0m[4mx[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Return the absolute value of the argument >[4mParameter[0m > [4mx[0m The number to convert >[4mSee Also[0m > [1macos()[0m, [1macosh()[0m, [1masin()[0m, [1masinh()[0m, [1matan()[0m, [1matan2()[0m, [1matanh()[0m, [1matn2()[0m, > [1mavg()[0m, [1mceil()[0m, [1mdegrees()[0m, [1mexp()[0m, [1mfloor()[0m, [1mlog()[0m, [1mlog10()[0m, [1mmax()[0m, [1mmin()[0m, > [1mpi()[0m, [1mpower()[0m, [1mradians()[0m, [1mround()[0m, [1msign()[0m, [1msquare()[0m, [1msum()[0m, [1mtotal()[0m >[4mExample[0m >#1 To get the absolute value of -1: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mabs[0m[37m[40m([0m[1m[37m[40m-1[0m[37m[40m) [0m > > > >[1m[4macos[0m[4m([0m[4mnum[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the arccosine of a number, in radians >[4mParameter[0m > [4mnum[0m A cosine value that is between -1 and 1 >[4mSee Also[0m > [1mabs()[0m, [1macosh()[0m, [1masin()[0m, [1masinh()[0m, [1matan()[0m, [1matan2()[0m, [1matanh()[0m, [1matn2()[0m, > [1mavg()[0m, [1mceil()[0m, [1mdegrees()[0m, [1mexp()[0m, [1mfloor()[0m, [1mlog()[0m, [1mlog10()[0m, [1mmax()[0m, [1mmin()[0m, > [1mpi()[0m, [1mpower()[0m, [1mradians()[0m, [1mround()[0m, [1msign()[0m, [1msquare()[0m, [1msum()[0m, [1mtotal()[0m >[4mExample[0m >#1 To get the arccosine of 0.2: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40macos[0m[37m[40m([0m[1m[37m[40m0.2[0m[37m[40m) [0m > > > >[1m[4macosh[0m[4m([0m[4mnum[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the hyperbolic arccosine of a number >[4mParameter[0m > [4mnum[0m A number that is one or more >[4mSee Also[0m > [1mabs()[0m, [1macos()[0m, [1masin()[0m, [1masinh()[0m, [1matan()[0m, [1matan2()[0m, [1matanh()[0m, [1matn2()[0m, > [1mavg()[0m, [1mceil()[0m, [1mdegrees()[0m, [1mexp()[0m, [1mfloor()[0m, [1mlog()[0m, [1mlog10()[0m, [1mmax()[0m, [1mmin()[0m, > [1mpi()[0m, [1mpower()[0m, [1mradians()[0m, [1mround()[0m, [1msign()[0m, [1msquare()[0m, [1msum()[0m, [1mtotal()[0m >[4mExample[0m >#1 To get the hyperbolic arccosine of 1.2: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40macosh[0m[37m[40m([0m[1m[37m[40m1.2[0m[37m[40m) [0m > > > >[1m[4manonymize[0m[4m([0m[4mvalue[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Replace identifying information with random values. >[4mParameter[0m > [4mvalue[0m The text to anonymize >[4mSee Also[0m > [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, [1mextract()[0m, > [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, > [1mparse_url()[0m, [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, > [1mregexp_capture_into_json()[0m, [1mregexp_match()[0m, [1mregexp_replace()[0m, > [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, > [1mspooky_hash()[0m, [1mstartswith()[0m, [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, > [1munparse_url()[0m, [1mupper()[0m, [1mxpath()[0m >[4mExample[0m >#1 To anonymize an IP address: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40manonymize[0m[37m[40m([0m[35m[40m'Hello, 192.168.1.2'[0m[37m[40m) [0m > > > >[1m[4masin[0m[4m([0m[4mnum[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the arcsine of a number, in radians >[4mParameter[0m > [4mnum[0m A sine value that is between -1 and 1 >[4mSee Also[0m > [1mabs()[0m, [1macos()[0m, [1macosh()[0m, [1masinh()[0m, [1matan()[0m, [1matan2()[0m, [1matanh()[0m, [1matn2()[0m, > [1mavg()[0m, [1mceil()[0m, [1mdegrees()[0m, [1mexp()[0m, [1mfloor()[0m, [1mlog()[0m, [1mlog10()[0m, [1mmax()[0m, [1mmin()[0m, > [1mpi()[0m, [1mpower()[0m, [1mradians()[0m, [1mround()[0m, [1msign()[0m, [1msquare()[0m, [1msum()[0m, [1mtotal()[0m >[4mExample[0m >#1 To get the arcsine of 0.2: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40masin[0m[37m[40m([0m[1m[37m[40m0.2[0m[37m[40m) [0m > > > >[1m[4masinh[0m[4m([0m[4mnum[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the hyperbolic arcsine of a number >[4mParameter[0m > [4mnum[0m The number >[4mSee Also[0m > [1mabs()[0m, [1macos()[0m, [1macosh()[0m, [1masin()[0m, [1matan()[0m, [1matan2()[0m, [1matanh()[0m, [1matn2()[0m, > [1mavg()[0m, [1mceil()[0m, [1mdegrees()[0m, [1mexp()[0m, [1mfloor()[0m, [1mlog()[0m, [1mlog10()[0m, [1mmax()[0m, [1mmin()[0m, > [1mpi()[0m, [1mpower()[0m, [1mradians()[0m, [1mround()[0m, [1msign()[0m, [1msquare()[0m, [1msum()[0m, [1mtotal()[0m >[4mExample[0m >#1 To get the hyperbolic arcsine of 0.2: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40masinh[0m[37m[40m([0m[1m[37m[40m0.2[0m[37m[40m) [0m > > > >[1m[4matan[0m[4m([0m[4mnum[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the arctangent of a number, in radians >[4mParameter[0m > [4mnum[0m The number >[4mSee Also[0m > [1mabs()[0m, [1macos()[0m, [1macosh()[0m, [1masin()[0m, [1masinh()[0m, [1matan2()[0m, [1matanh()[0m, [1matn2()[0m, > [1mavg()[0m, [1mceil()[0m, [1mdegrees()[0m, [1mexp()[0m, [1mfloor()[0m, [1mlog()[0m, [1mlog10()[0m, [1mmax()[0m, [1mmin()[0m, > [1mpi()[0m, [1mpower()[0m, [1mradians()[0m, [1mround()[0m, [1msign()[0m, [1msquare()[0m, [1msum()[0m, [1mtotal()[0m >[4mExample[0m >#1 To get the arctangent of 0.2: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40matan[0m[37m[40m([0m[1m[37m[40m0.2[0m[37m[40m) [0m > > > >[1m[4matan2[0m[4m([0m[4my[0m[4m, [0m[4mx[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the angle in the plane between the positive X axis and the > ray from (0, 0) to the point (x, y) >[4mParameters[0m > [4my[0m The y coordinate of the point > [4mx[0m The x coordinate of the point >[4mSee Also[0m > [1mabs()[0m, [1macos()[0m, [1macosh()[0m, [1masin()[0m, [1masinh()[0m, [1matan()[0m, [1matanh()[0m, [1matn2()[0m, > [1mavg()[0m, [1mceil()[0m, [1mdegrees()[0m, [1mexp()[0m, [1mfloor()[0m, [1mlog()[0m, [1mlog10()[0m, [1mmax()[0m, [1mmin()[0m, > [1mpi()[0m, [1mpower()[0m, [1mradians()[0m, [1mround()[0m, [1msign()[0m, [1msquare()[0m, [1msum()[0m, [1mtotal()[0m >[4mExample[0m >#1 To get the angle, in degrees, for the point at (5, 5): > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mdegrees[0m[37m[40m([0m[1m[37m[40matan2[0m[37m[40m([0m[1m[37m[40m5[0m[37m[40m, [0m[1m[37m[40m5[0m[37m[40m)) [0m > > > >[1m[4matanh[0m[4m([0m[4mnum[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the hyperbolic arctangent of a number >[4mParameter[0m > [4mnum[0m The number >[4mSee Also[0m > [1mabs()[0m, [1macos()[0m, [1macosh()[0m, [1masin()[0m, [1masinh()[0m, [1matan()[0m, [1matan2()[0m, [1matn2()[0m, > [1mavg()[0m, [1mceil()[0m, [1mdegrees()[0m, [1mexp()[0m, [1mfloor()[0m, [1mlog()[0m, [1mlog10()[0m, [1mmax()[0m, [1mmin()[0m, > [1mpi()[0m, [1mpower()[0m, [1mradians()[0m, [1mround()[0m, [1msign()[0m, [1msquare()[0m, [1msum()[0m, [1mtotal()[0m >[4mExample[0m >#1 To get the hyperbolic arctangent of 0.2: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40matanh[0m[37m[40m([0m[1m[37m[40m0.2[0m[37m[40m) [0m > > > >[1m[4matn2[0m[4m([0m[4my[0m[4m, [0m[4mx[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the angle in the plane between the positive X axis and the > ray from (0, 0) to the point (x, y) >[4mParameters[0m > [4my[0m The y coordinate of the point > [4mx[0m The x coordinate of the point >[4mSee Also[0m > [1mabs()[0m, [1macos()[0m, [1macosh()[0m, [1masin()[0m, [1masinh()[0m, [1matan()[0m, [1matan2()[0m, [1matanh()[0m, > [1mavg()[0m, [1mceil()[0m, [1mdegrees()[0m, [1mexp()[0m, [1mfloor()[0m, [1mlog()[0m, [1mlog10()[0m, [1mmax()[0m, [1mmin()[0m, > [1mpi()[0m, [1mpower()[0m, [1mradians()[0m, [1mround()[0m, [1msign()[0m, [1msquare()[0m, [1msum()[0m, [1mtotal()[0m >[4mExample[0m >#1 To get the angle, in degrees, for the point at (5, 5): > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mdegrees[0m[37m[40m([0m[1m[37m[40matn2[0m[37m[40m([0m[1m[37m[40m5[0m[37m[40m, [0m[1m[37m[40m5[0m[37m[40m)) [0m > > > >[1m[4mavg[0m[4m([0m[4mX[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the average value of all non-NULL numbers within a group. >[4mParameter[0m > [4mX[0m The value to compute the average of. >[4mSee Also[0m > [1mabs()[0m, [1macos()[0m, [1macosh()[0m, [1masin()[0m, [1masinh()[0m, [1matan()[0m, [1matan2()[0m, [1matanh()[0m, > [1matn2()[0m, [1mceil()[0m, [1mdegrees()[0m, [1mexp()[0m, [1mfloor()[0m, [1mlog()[0m, [1mlog10()[0m, [1mmax()[0m, > [1mmin()[0m, [1mpi()[0m, [1mpower()[0m, [1mradians()[0m, [1mround()[0m, [1msign()[0m, [1msquare()[0m, [1msum()[0m, > [1mtotal()[0m >[4mExamples[0m >#1 To get the average of the column 'ex_duration' from the table 'lnav_example_log': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mavg[0m[37m[40m([0m[37m[40mex_duration[0m[37m[40m) [0m[1m[36m[40mFROM[0m[37m[40m [0m[37m[40mlnav_example_log[0m[37m[40m [0m > > >#2 To get the average of the column 'ex_duration' from the table 'lnav_example_log' > when grouped by 'ex_procname': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[37m[40mex_procname[0m[37m[40m, [0m[1m[37m[40mavg[0m[37m[40m([0m[37m[40mex_duration[0m[37m[40m) [0m[1m[36m[40mFROM[0m[37m[40m [0m[37m[40mlnav_example_log[0m[37m[40m [0m[1m[36m[40mGROUP[0m[37m[40m [0m[1m[36m[40mBY[0m[37m[40m [0m[37m[40mex_procname[0m > > > >[1m[4mbasename[0m[4m([0m[4mpath[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Extract the base portion of a pathname. >[4mParameter[0m > [4mpath[0m The path >[4mSee Also[0m > [1mdirname()[0m, [1mjoinpath()[0m, [1mreadlink()[0m, [1mrealpath()[0m >[4mExamples[0m >#1 To get the base of a plain file name: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mbasename[0m[37m[40m([0m[35m[40m'foobar'[0m[37m[40m) [0m > > >#2 To get the base of a path: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mbasename[0m[37m[40m([0m[35m[40m'foo/bar'[0m[37m[40m) [0m > > >#3 To get the base of a directory: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mbasename[0m[37m[40m([0m[35m[40m'foo/bar/'[0m[37m[40m) [0m > > >#4 To get the base of an empty string: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mbasename[0m[37m[40m([0m[35m[40m''[0m[37m[40m) [0m > > >#5 To get the base of a Windows path: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mbasename[0m[37m[40m([0m[35m[40m'foo\bar'[0m[37m[40m) [0m > > >#6 To get the base of the root directory: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mbasename[0m[37m[40m([0m[35m[40m'/'[0m[37m[40m) [0m > > > >[1m[4mceil[0m[4m([0m[4mnum[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the smallest integer that is not less than the argument >[4mParameter[0m > [4mnum[0m The number to raise to the ceiling >[4mSee Also[0m > [1mabs()[0m, [1macos()[0m, [1macosh()[0m, [1masin()[0m, [1masinh()[0m, [1matan()[0m, [1matan2()[0m, [1matanh()[0m, > [1matn2()[0m, [1mavg()[0m, [1mdegrees()[0m, [1mexp()[0m, [1mfloor()[0m, [1mlog()[0m, [1mlog10()[0m, [1mmax()[0m, [1mmin()[0m, > [1mpi()[0m, [1mpower()[0m, [1mradians()[0m, [1mround()[0m, [1msign()[0m, [1msquare()[0m, [1msum()[0m, [1mtotal()[0m >[4mExample[0m >#1 To get the ceiling of 1.23: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mceil[0m[37m[40m([0m[1m[37m[40m1.23[0m[37m[40m) [0m > > > >[1m[4mchanges[0m[4m()[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > The number of database rows that were changed, inserted, or deleted > by the most recent statement. > > >[1m[4mchar[0m[4m([0m[4mX[0m[4m, ...)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns a string composed of characters having the given unicode > code point values >[4mParameter[0m > [4mX[0m The unicode code point values >[4mSee Also[0m > [1manonymize()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, [1mextract()[0m, > [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, > [1mparse_url()[0m, [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, > [1mregexp_capture_into_json()[0m, [1mregexp_match()[0m, [1mregexp_replace()[0m, > [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, > [1mspooky_hash()[0m, [1mstartswith()[0m, [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, > [1munparse_url()[0m, [1mupper()[0m, [1mxpath()[0m >[4mExample[0m >#1 To get a string with the code points 0x48 and 0x49: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mchar[0m[37m[40m([0m[1m[37m[40m0[0m[37m[40mx48[0m[37m[40m, [0m[1m[37m[40m0[0m[37m[40mx49[0m[37m[40m) [0m > > > >[1m[4mcharindex[0m[4m([0m[4mneedle[0m[4m, [0m[4mhaystack[0m[4m, [[0m[4mstart[0m[4m])[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Finds the first occurrence of the needle within the haystack and > returns the number of prior characters plus 1, or 0 if Y is nowhere > found within X >[4mParameters[0m > [4mneedle[0m The string to look for in the haystack > [4mhaystack[0m The string to search within > [4mstart[0m The one-based index within the haystack to > start the search >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, [1mextract()[0m, > [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, > [1mparse_url()[0m, [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, > [1mregexp_capture_into_json()[0m, [1mregexp_match()[0m, [1mregexp_replace()[0m, > [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, > [1mspooky_hash()[0m, [1mstartswith()[0m, [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, > [1munparse_url()[0m, [1mupper()[0m, [1mxpath()[0m >[4mExamples[0m >#1 To search for the string 'abc' within 'abcabc' and starting at position 2: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mcharindex[0m[37m[40m([0m[35m[40m'abc'[0m[37m[40m, [0m[35m[40m'abcabc'[0m[37m[40m, [0m[1m[37m[40m2[0m[37m[40m) [0m > > >#2 To search for the string 'abc' within 'abcdef' and starting at position 2: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mcharindex[0m[37m[40m([0m[35m[40m'abc'[0m[37m[40m, [0m[35m[40m'abcdef'[0m[37m[40m, [0m[1m[37m[40m2[0m[37m[40m) [0m > > > >[1m[4mcoalesce[0m[4m([0m[4mX[0m[4m, [0m[4mY[0m[4m, ...)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns a copy of its first non-NULL argument, or NULL if all > arguments are NULL >[4mParameters[0m > [4mX[0m A value to check for NULL-ness > [4mY[0m A value to check for NULL-ness > >[4mExample[0m >#1 To get the first non-null value from three parameters: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mcoalesce[0m[37m[40m([0m[1m[36m[40mnull[0m[37m[40m, [0m[1m[37m[40m0[0m[37m[40m, [0m[1m[36m[40mnull[0m[37m[40m) [0m > > > >[1m[4mcount[0m[4m([0m[4mX[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > If the argument is '*', the total number of rows in the group is > returned. Otherwise, the number of times the argument is non-NULL. >[4mParameter[0m > [4mX[0m The value to count. > >[4mExamples[0m >#1 To get the count of the non-NULL rows of 'lnav_example_log': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mcount[0m[37m[40m([0m[1m[37m[40m*[0m[37m[40m) [0m[1m[36m[40mFROM[0m[37m[40m [0m[37m[40mlnav_example_log[0m[37m[40m [0m > > >#2 To get the count of the non-NULL values of 'log_part' from 'lnav_example_log': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mcount[0m[37m[40m([0m[37m[40mlog_part[0m[37m[40m) [0m[1m[36m[40mFROM[0m[37m[40m [0m[37m[40mlnav_example_log[0m[37m[40m [0m > > > >[1m[4mcume_dist[0m[4m()[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the cumulative distribution >[4mSee Also[0m > [1mdense_rank()[0m, [1mfirst_value()[0m, [1mlag()[0m, [1mlast_value()[0m, [1mlead()[0m, [1mnth_value()[0m, > [1mntile()[0m, [1mpercent_rank()[0m, [1mrank()[0m, [1mrow_number()[0m > >[1m[4mdate[0m[4m([0m[4mtimestring[0m[4m, [0m[4mmodifier[0m[4m, ...)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the date in this format: YYYY-MM-DD. >[4mParameters[0m > [4mtimestring[0m The string to convert to a date. > [4mmodifier[0m A transformation that is applied to the > value to the left. >[4mSee Also[0m > [1mdatetime()[0m, [1mhumanize_duration()[0m, [1mjulianday()[0m, [1mstrftime()[0m, [1mtime()[0m, > [1mtimediff()[0m, [1mtimeslice()[0m >[4mExamples[0m >#1 To get the date portion of the timestamp '2017-01-02T03:04:05': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mdate[0m[37m[40m([0m[35m[40m'2017-01-02T03:04:05'[0m[37m[40m) [0m > > >#2 To get the date portion of the timestamp '2017-01-02T03:04:05' plus one day: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mdate[0m[37m[40m([0m[35m[40m'2017-01-02T03:04:05'[0m[37m[40m, [0m[35m[40m'+1 day'[0m[37m[40m) [0m > > >#3 To get the date portion of the epoch timestamp 1491341842: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mdate[0m[37m[40m([0m[1m[37m[40m1491341842[0m[37m[40m, [0m[35m[40m'unixepoch'[0m[37m[40m) [0m > > > >[1m[4mdatetime[0m[4m([0m[4mtimestring[0m[4m, [0m[4mmodifier[0m[4m, ...)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the date and time in this format: YYYY-MM-DD HH:MM:SS. >[4mParameters[0m > [4mtimestring[0m The string to convert to a date with time. > [4mmodifier[0m A transformation that is applied to the > value to the left. >[4mSee Also[0m > [1mdate()[0m, [1mhumanize_duration()[0m, [1mjulianday()[0m, [1mstrftime()[0m, [1mtime()[0m, > [1mtimediff()[0m, [1mtimeslice()[0m >[4mExamples[0m >#1 To get the date and time portion of the timestamp '2017-01-02T03:04:05': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mdatetime[0m[37m[40m([0m[35m[40m'2017-01-02T03:04:05'[0m[37m[40m) [0m > > >#2 To get the date and time portion of the timestamp '2017-01-02T03:04:05' plus one > minute: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mdatetime[0m[37m[40m([0m[35m[40m'2017-01-02T03:04:05'[0m[37m[40m, [0m[35m[40m'+1 minute'[0m[37m[40m)[0m > > >#3 To get the date and time portion of the epoch timestamp 1491341842: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mdatetime[0m[37m[40m([0m[1m[37m[40m1491341842[0m[37m[40m, [0m[35m[40m'unixepoch'[0m[37m[40m) [0m > > > >[1m[4mdecode[0m[4m([0m[4mvalue[0m[4m, [0m[4malgorithm[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Decode the value using the given algorithm >[4mParameters[0m > [4mvalue[0m The value to decode > [4malgorithm[0m One of the following encoding algorithms: > base64, hex, uri >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mencode()[0m, [1mendswith()[0m, [1mextract()[0m, > [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, > [1mparse_url()[0m, [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, > [1mregexp_capture_into_json()[0m, [1mregexp_match()[0m, [1mregexp_replace()[0m, > [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, > [1mspooky_hash()[0m, [1mstartswith()[0m, [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, > [1munparse_url()[0m, [1mupper()[0m, [1mxpath()[0m >[4mExample[0m >#1 To decode the URI-encoded string '%63%75%72%6c': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mdecode[0m[37m[40m([0m[35m[40m'%63%75%72%6c'[0m[37m[40m, [0m[35m[40m'uri'[0m[37m[40m) [0m > > > >[1m[4mdegrees[0m[4m([0m[4mradians[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Converts radians to degrees >[4mParameter[0m > [4mradians[0m The radians value to convert to degrees >[4mSee Also[0m > [1mabs()[0m, [1macos()[0m, [1macosh()[0m, [1masin()[0m, [1masinh()[0m, [1matan()[0m, [1matan2()[0m, [1matanh()[0m, > [1matn2()[0m, [1mavg()[0m, [1mceil()[0m, [1mexp()[0m, [1mfloor()[0m, [1mlog()[0m, [1mlog10()[0m, [1mmax()[0m, [1mmin()[0m, > [1mpi()[0m, [1mpower()[0m, [1mradians()[0m, [1mround()[0m, [1msign()[0m, [1msquare()[0m, [1msum()[0m, [1mtotal()[0m >[4mExample[0m >#1 To convert PI to degrees: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mdegrees[0m[37m[40m([0m[1m[37m[40mpi[0m[37m[40m()) [0m > > > >[1m[4mdense_rank[0m[4m()[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the row_number() of the first peer in each group without > gaps >[4mSee Also[0m > [1mcume_dist()[0m, [1mfirst_value()[0m, [1mlag()[0m, [1mlast_value()[0m, [1mlead()[0m, [1mnth_value()[0m, > [1mntile()[0m, [1mpercent_rank()[0m, [1mrank()[0m, [1mrow_number()[0m > >[1m[4mdirname[0m[4m([0m[4mpath[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Extract the directory portion of a pathname. >[4mParameter[0m > [4mpath[0m The path >[4mSee Also[0m > [1mbasename()[0m, [1mjoinpath()[0m, [1mreadlink()[0m, [1mrealpath()[0m >[4mExamples[0m >#1 To get the directory of a relative file path: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mdirname[0m[37m[40m([0m[35m[40m'foo/bar'[0m[37m[40m) [0m > > >#2 To get the directory of an absolute file path: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mdirname[0m[37m[40m([0m[35m[40m'/foo/bar'[0m[37m[40m) [0m > > >#3 To get the directory of a file in the root directory: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mdirname[0m[37m[40m([0m[35m[40m'/bar'[0m[37m[40m) [0m > > >#4 To get the directory of a Windows path: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mdirname[0m[37m[40m([0m[35m[40m'foo\bar'[0m[37m[40m) [0m > > >#5 To get the directory of an empty path: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mdirname[0m[37m[40m([0m[35m[40m''[0m[37m[40m) [0m > > > >[1m[4mecholn[0m[4m([0m[4mvalue[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Echo the argument to the current output file and return it >[4mParameter[0m > [4mvalue[0m The value to write to the current output file >[4mSee Also[0m > [1m:append-to[0m, [1m:echo[0m, [1m:export-session-to[0m, [1m:pipe-line-to[0m, [1m:pipe-to[0m, > [1m:redirect-to[0m, [1m:write-csv-to[0m, [1m:write-json-to[0m, [1m:write-jsonlines-to[0m, > [1m:write-raw-to[0m, [1m:write-screen-to[0m, [1m:write-table-to[0m, [1m:write-to[0m, > [1m:write-view-to[0m > >[1m[4mencode[0m[4m([0m[4mvalue[0m[4m, [0m[4malgorithm[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Encode the value using the given algorithm >[4mParameters[0m > [4mvalue[0m The value to encode > [4malgorithm[0m One of the following encoding algorithms: > base64, hex, uri >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mendswith()[0m, [1mextract()[0m, > [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, > [1mparse_url()[0m, [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, > [1mregexp_capture_into_json()[0m, [1mregexp_match()[0m, [1mregexp_replace()[0m, > [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, > [1mspooky_hash()[0m, [1mstartswith()[0m, [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, > [1munparse_url()[0m, [1mupper()[0m, [1mxpath()[0m >[4mExamples[0m >#1 To base64-encode 'Hello, World!': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mencode[0m[37m[40m([0m[35m[40m'Hello, World!'[0m[37m[40m, [0m[35m[40m'base64'[0m[37m[40m) [0m > > >#2 To hex-encode 'Hello, World!': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mencode[0m[37m[40m([0m[35m[40m'Hello, World!'[0m[37m[40m, [0m[35m[40m'hex'[0m[37m[40m) [0m > > >#3 To URI-encode 'Hello, World!': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mencode[0m[37m[40m([0m[35m[40m'Hello, World!'[0m[37m[40m, [0m[35m[40m'uri'[0m[37m[40m) [0m > > > >[1m[4mendswith[0m[4m([0m[4mstr[0m[4m, [0m[4msuffix[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Test if a string ends with the given suffix >[4mParameters[0m > [4mstr[0m The string to test > [4msuffix[0m The suffix to check in the string >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mextract()[0m, > [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, > [1mparse_url()[0m, [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, > [1mregexp_capture_into_json()[0m, [1mregexp_match()[0m, [1mregexp_replace()[0m, > [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, > [1mspooky_hash()[0m, [1mstartswith()[0m, [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, > [1munparse_url()[0m, [1mupper()[0m, [1mxpath()[0m >[4mExamples[0m >#1 To test if the string 'notbad.jpg' ends with '.jpg': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mendswith[0m[37m[40m([0m[35m[40m'notbad.jpg'[0m[37m[40m, [0m[35m[40m'.jpg'[0m[37m[40m) [0m > > >#2 To test if the string 'notbad.png' starts with '.jpg': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mendswith[0m[37m[40m([0m[35m[40m'notbad.png'[0m[37m[40m, [0m[35m[40m'.jpg'[0m[37m[40m) [0m > > > >[1m[4mexp[0m[4m([0m[4mx[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the value of e raised to the power of x >[4mParameter[0m > [4mx[0m The exponent >[4mSee Also[0m > [1mabs()[0m, [1macos()[0m, [1macosh()[0m, [1masin()[0m, [1masinh()[0m, [1matan()[0m, [1matan2()[0m, [1matanh()[0m, > [1matn2()[0m, [1mavg()[0m, [1mceil()[0m, [1mdegrees()[0m, [1mfloor()[0m, [1mlog()[0m, [1mlog10()[0m, [1mmax()[0m, > [1mmin()[0m, [1mpi()[0m, [1mpower()[0m, [1mradians()[0m, [1mround()[0m, [1msign()[0m, [1msquare()[0m, [1msum()[0m, > [1mtotal()[0m >[4mExample[0m >#1 To raise e to 2: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mexp[0m[37m[40m([0m[1m[37m[40m2[0m[37m[40m) [0m > > > >[1m[4mextract[0m[4m([0m[4mstr[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Automatically Parse and extract data from a string >[4mParameter[0m > [4mstr[0m The string to parse >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, > [1mparse_url()[0m, [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, > [1mregexp_capture_into_json()[0m, [1mregexp_match()[0m, [1mregexp_replace()[0m, > [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, > [1mspooky_hash()[0m, [1mstartswith()[0m, [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, > [1munparse_url()[0m, [1mupper()[0m, [1mxpath()[0m >[4mExamples[0m >#1 To extract key/value pairs from a string: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mextract[0m[37m[40m([0m[35m[40m'foo=1 bar=2 name="Rolo Tomassi"'[0m[37m[40m) [0m > > >#2 To extract columnar data from a string: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mextract[0m[37m[40m([0m[35m[40m'1.0 abc 2.0'[0m[37m[40m) [0m > > > >[1m[4mfirst_value[0m[4m([0m[4mexpr[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the result of evaluating the expression against the first > row in the window frame. >[4mParameter[0m > [4mexpr[0m The expression to execute over the first row >[4mSee Also[0m > [1mcume_dist()[0m, [1mdense_rank()[0m, [1mlag()[0m, [1mlast_value()[0m, [1mlead()[0m, [1mnth_value()[0m, > [1mntile()[0m, [1mpercent_rank()[0m, [1mrank()[0m, [1mrow_number()[0m > >[1m[4mfloor[0m[4m([0m[4mnum[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the largest integer that is not greater than the argument >[4mParameter[0m > [4mnum[0m The number to lower to the floor >[4mSee Also[0m > [1mabs()[0m, [1macos()[0m, [1macosh()[0m, [1masin()[0m, [1masinh()[0m, [1matan()[0m, [1matan2()[0m, [1matanh()[0m, > [1matn2()[0m, [1mavg()[0m, [1mceil()[0m, [1mdegrees()[0m, [1mexp()[0m, [1mlog()[0m, [1mlog10()[0m, [1mmax()[0m, [1mmin()[0m, > [1mpi()[0m, [1mpower()[0m, [1mradians()[0m, [1mround()[0m, [1msign()[0m, [1msquare()[0m, [1msum()[0m, [1mtotal()[0m >[4mExample[0m >#1 To get the floor of 1.23: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mfloor[0m[37m[40m([0m[1m[37m[40m1.23[0m[37m[40m) [0m > > > >[1m[4mgenerate_series[0m[4m([0m[4mstart[0m[4m, [0m[4mstop[0m[4m, [[0m[4mstep[0m[4m])[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > A table-valued-function that returns the whole numbers between a > lower and upper bound, inclusive >[4mParameters[0m > [4mstart[0m The starting point of the series > [4mstop[0m The stopping point of the series > [4mstep[0m The increment between each value >[4mResult[0m > [4mvalue[0m The number in the series > >[4mExamples[0m >#1 To generate the numbers in the range [10, 14]: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[37m[40mvalue[0m[37m[40m [0m[1m[36m[40mFROM[0m[37m[40m [0m[1m[37m[40mgenerate_series[0m[37m[40m([0m[1m[37m[40m10[0m[37m[40m, [0m[1m[37m[40m14[0m[37m[40m) [0m > > >#2 To generate every other number in the range [10, 14]: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[37m[40mvalue[0m[37m[40m [0m[1m[36m[40mFROM[0m[37m[40m [0m[1m[37m[40mgenerate_series[0m[37m[40m([0m[1m[37m[40m10[0m[37m[40m, [0m[1m[37m[40m14[0m[37m[40m, [0m[1m[37m[40m2[0m[37m[40m) [0m > > >#3 To count down from five to 1: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[37m[40mvalue[0m[37m[40m [0m[1m[36m[40mFROM[0m[37m[40m [0m[1m[37m[40mgenerate_series[0m[37m[40m([0m[1m[37m[40m1[0m[37m[40m, [0m[1m[37m[40m5[0m[37m[40m, [0m[1m[37m[40m-1[0m[37m[40m) [0m > > > >[1m[4mgethostbyaddr[0m[4m([0m[4mhostname[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Get the hostname for the given IP address >[4mParameter[0m > [4mhostname[0m The IP address to lookup. >[4mSee Also[0m > [1mgethostbyname()[0m >[4mExample[0m >#1 To get the hostname for the IP '127.0.0.1': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mgethostbyaddr[0m[37m[40m([0m[35m[40m'127.0.0.1'[0m[37m[40m) [0m > > > >[1m[4mgethostbyname[0m[4m([0m[4mhostname[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Get the IP address for the given hostname >[4mParameter[0m > [4mhostname[0m The DNS hostname to lookup. >[4mSee Also[0m > [1mgethostbyaddr()[0m >[4mExample[0m >#1 To get the IP address for 'localhost': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mgethostbyname[0m[37m[40m([0m[35m[40m'localhost'[0m[37m[40m) [0m > > > >[1m[4mglob[0m[4m([0m[4mpattern[0m[4m, [0m[4mstr[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Match a string against Unix glob pattern >[4mParameters[0m > [4mpattern[0m The glob pattern > [4mstr[0m The string to match > >[4mExample[0m >#1 To test if the string 'abc' matches the glob 'a*': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[36m[40mglob[0m[37m[40m([0m[35m[40m'a*'[0m[37m[40m, [0m[35m[40m'abc'[0m[37m[40m) [0m > > > >[1m[4mgroup_concat[0m[4m([0m[4mX[0m[4m, [[0m[4msep[0m[4m])[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns a string which is the concatenation of all non-NULL values > of X separated by a comma or the given separator. >[4mParameters[0m > [4mX[0m The value to concatenate. > [4msep[0m The separator to place between the values. >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, [1mhumanize_duration()[0m, > [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, [1mlength()[0m, [1mlogfmt2json()[0m, > [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, [1mparse_url()[0m, [1mprintf()[0m, > [1mproper()[0m, [1mregexp_capture()[0m, [1mregexp_capture_into_json()[0m, [1mregexp_match()[0m, > [1mregexp_replace()[0m, [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, [1mrightstr()[0m, > [1mrtrim()[0m, [1msparkline()[0m, [1mspooky_hash()[0m, [1mstartswith()[0m, [1mstrfilter()[0m, > [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, [1munparse_url()[0m, [1mupper()[0m, [1mxpath()[0m >[4mExamples[0m >#1 To concatenate the values of the column 'ex_procname' from the table > 'lnav_example_log': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mgroup_concat[0m[37m[40m([0m[37m[40mex_procname[0m[37m[40m) [0m[1m[36m[40mFROM[0m[37m[40m [0m[37m[40mlnav_example_log[0m > > >#2 To join the values of the column 'ex_procname' using the string ', ': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mgroup_concat[0m[37m[40m([0m[37m[40mex_procname[0m[37m[40m, [0m[35m[40m', '[0m[37m[40m) [0m[1m[36m[40mFROM[0m[37m[40m [0m[37m[40mlnav_example_log[0m > > >#3 To concatenate the distinct values of the column 'ex_procname' from the table > 'lnav_example_log': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mgroup_concat[0m[37m[40m([0m[1m[36m[40mDISTINCT[0m[37m[40m [0m[37m[40mex_procname[0m[37m[40m) [0m[1m[36m[40mFROM[0m[37m[40m [0m[37m[40mlnav_example_log[0m > > > >[1m[4mgroup_spooky_hash[0m[4m([0m[4mstr[0m[4m, ...)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Compute the hash value for the given arguments >[4mParameter[0m > [4mstr[0m The string to hash >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgunzip()[0m, [1mgzip()[0m, [1mhumanize_duration()[0m, > [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, [1mlength()[0m, [1mlogfmt2json()[0m, > [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, [1mparse_url()[0m, [1mprintf()[0m, > [1mproper()[0m, [1mregexp_capture()[0m, [1mregexp_capture_into_json()[0m, [1mregexp_match()[0m, > [1mregexp_replace()[0m, [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, [1mrightstr()[0m, > [1mrtrim()[0m, [1msparkline()[0m, [1mspooky_hash()[0m, [1mstartswith()[0m, [1mstrfilter()[0m, > [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, [1munparse_url()[0m, [1mupper()[0m, [1mxpath()[0m >[4mExample[0m >#1 To produce a hash of all of the values of 'column1': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mgroup_spooky_hash[0m[37m[40m([0m[37m[40mcolumn1[0m[37m[40m) [0m[1m[36m[40mFROM[0m[37m[40m ([0m[1m[36m[40mVALUES[0m[37m[40m ([0m[35m[40m'abc'[0m[37m[40m), ([0m[35m[40m'123'[0m[37m[40m))[0m > > > >[1m[4mgunzip[0m[4m([0m[4mb[0m[4m, ...)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Decompress a gzip file >[4mParameter[0m > [4mb[0m The blob to decompress >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, > [1mparse_url()[0m, [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, > [1mregexp_capture_into_json()[0m, [1mregexp_match()[0m, [1mregexp_replace()[0m, > [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, > [1mspooky_hash()[0m, [1mstartswith()[0m, [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, > [1munparse_url()[0m, [1mupper()[0m, [1mxpath()[0m > >[1m[4mgzip[0m[4m([0m[4mvalue[0m[4m, ...)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Compress a string into a gzip file >[4mParameter[0m > [4mvalue[0m The value to compress >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, > [1mparse_url()[0m, [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, > [1mregexp_capture_into_json()[0m, [1mregexp_match()[0m, [1mregexp_replace()[0m, > [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, > [1mspooky_hash()[0m, [1mstartswith()[0m, [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, > [1munparse_url()[0m, [1mupper()[0m, [1mxpath()[0m > >[1m[4mhex[0m[4m([0m[4mX[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns a string which is the upper-case hexadecimal rendering of > the content of its argument. >[4mParameter[0m > [4mX[0m The blob to convert to hexadecimal > >[4mExample[0m >#1 To get the hexadecimal rendering of the string 'abc': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mhex[0m[37m[40m([0m[35m[40m'abc'[0m[37m[40m) [0m > > > >[1m[4mhumanize_duration[0m[4m([0m[4msecs[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Format the given seconds value as an abbreviated duration string >[4mParameter[0m > [4msecs[0m The duration in seconds >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdate()[0m, [1mdatetime()[0m, [1mdecode()[0m, > [1mencode()[0m, [1mendswith()[0m, [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, > [1mgunzip()[0m, [1mgzip()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mjulianday()[0m, > [1mleftstr()[0m, [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, > [1mpadr()[0m, [1mparse_url()[0m, [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, > [1mregexp_capture_into_json()[0m, [1mregexp_match()[0m, [1mregexp_replace()[0m, > [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, > [1mspooky_hash()[0m, [1mstartswith()[0m, [1mstrfilter()[0m, [1mstrftime()[0m, [1msubstr()[0m, [1mtime()[0m, > [1mtimediff()[0m, [1mtimeslice()[0m, [1mtrim()[0m, [1municode()[0m, [1munparse_url()[0m, [1mupper()[0m, > [1mxpath()[0m >[4mExamples[0m >#1 To format a duration: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mhumanize_duration[0m[37m[40m([0m[1m[37m[40m15[0m[37m[40m [0m[1m[37m[40m*[0m[37m[40m [0m[1m[37m[40m60[0m[37m[40m) [0m > > >#2 To format a sub-second value: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mhumanize_duration[0m[37m[40m([0m[1m[37m[40m1.5[0m[37m[40m) [0m > > > >[1m[4mhumanize_file_size[0m[4m([0m[4mvalue[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Format the given file size as a human-friendly string >[4mParameter[0m > [4mvalue[0m The file size to format >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1minstr()[0m, [1mleftstr()[0m, [1mlength()[0m, [1mlogfmt2json()[0m, > [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, [1mparse_url()[0m, [1mprintf()[0m, > [1mproper()[0m, [1mregexp_capture()[0m, [1mregexp_capture_into_json()[0m, [1mregexp_match()[0m, > [1mregexp_replace()[0m, [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, [1mrightstr()[0m, > [1mrtrim()[0m, [1msparkline()[0m, [1mspooky_hash()[0m, [1mstartswith()[0m, [1mstrfilter()[0m, > [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, [1munparse_url()[0m, [1mupper()[0m, [1mxpath()[0m >[4mExample[0m >#1 To format an amount: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mhumanize_file_size[0m[37m[40m([0m[1m[37m[40m10[0m[37m[40m [0m[1m[37m[40m*[0m[37m[40m [0m[1m[37m[40m1024[0m[37m[40m [0m[1m[37m[40m*[0m[37m[40m [0m[1m[37m[40m1024[0m[37m[40m) [0m > > > >[1m[4mifnull[0m[4m([0m[4mX[0m[4m, [0m[4mY[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns a copy of its first non-NULL argument, or NULL if both > arguments are NULL >[4mParameters[0m > [4mX[0m A value to check for NULL-ness > [4mY[0m A value to check for NULL-ness > >[4mExample[0m >#1 To get the first non-null value between null and zero: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mifnull[0m[37m[40m([0m[1m[36m[40mnull[0m[37m[40m, [0m[1m[37m[40m0[0m[37m[40m) [0m > > > >[1m[4minstr[0m[4m([0m[4mhaystack[0m[4m, [0m[4mneedle[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Finds the first occurrence of the needle within the haystack and > returns the number of prior characters plus 1, or 0 if the needle > was not found >[4mParameters[0m > [4mhaystack[0m The string to search within > [4mneedle[0m The string to look for in the haystack >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1mleftstr()[0m, [1mlength()[0m, > [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, [1mparse_url()[0m, > [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, [1mregexp_capture_into_json()[0m, > [1mregexp_match()[0m, [1mregexp_replace()[0m, [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, > [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, [1mspooky_hash()[0m, [1mstartswith()[0m, > [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, [1munparse_url()[0m, [1mupper()[0m, > [1mxpath()[0m >[4mExample[0m >#1 To test get the position of 'b' in the string 'abc': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40minstr[0m[37m[40m([0m[35m[40m'abc'[0m[37m[40m, [0m[35m[40m'b'[0m[37m[40m) [0m > > > >[1m[4mjget[0m[4m([0m[4mjson[0m[4m, [0m[4mptr[0m[4m, [[0m[4mdefault[0m[4m])[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Get the value from a JSON object using a JSON-Pointer. >[4mParameters[0m > [4mjson[0m The JSON object to query. > [4mptr[0m The JSON-Pointer to lookup in the object. > [4mdefault[0m The default value if the value was not found >[4mSee Also[0m > [1mjson_concat()[0m, [1mjson_contains()[0m, [1mjson_group_array()[0m, > [1mjson_group_object()[0m, [1myaml_to_json()[0m >[4mExamples[0m >#1 To get the root of a JSON value: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mjget[0m[37m[40m([0m[35m[40m'1'[0m[37m[40m, [0m[35m[40m''[0m[37m[40m) [0m > > >#2 To get the property named 'b' in a JSON object: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mjget[0m[37m[40m([0m[35m[40m'{ "a": 1, "b": 2 }'[0m[37m[40m, [0m[35m[40m'/b'[0m[37m[40m) [0m > > >#3 To get the 'msg' property and return a default if it does not exist: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mjget[0m[37m[40m([0m[1m[36m[40mnull[0m[37m[40m, [0m[35m[40m'/msg'[0m[37m[40m, [0m[35m[40m'Hello'[0m[37m[40m) [0m > > > >[1m[4mjoinpath[0m[4m([0m[4mpath[0m[4m, ...)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Join components of a path together. >[4mParameter[0m > [4mpath[0m One or more path components to join together. If an > argument starts with a forward or backward slash, it will be > considered an absolute path and any preceding elements will > be ignored. >[4mSee Also[0m > [1mbasename()[0m, [1mdirname()[0m, [1mreadlink()[0m, [1mrealpath()[0m >[4mExamples[0m >#1 To join a directory and file name into a relative path: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mjoinpath[0m[37m[40m([0m[35m[40m'foo'[0m[37m[40m, [0m[35m[40m'bar'[0m[37m[40m) [0m > > >#2 To join an empty component with other names into a relative path: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mjoinpath[0m[37m[40m([0m[35m[40m''[0m[37m[40m, [0m[35m[40m'foo'[0m[37m[40m, [0m[35m[40m'bar'[0m[37m[40m) [0m > > >#3 To create an absolute path with two path components: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mjoinpath[0m[37m[40m([0m[35m[40m'/'[0m[37m[40m, [0m[35m[40m'foo'[0m[37m[40m, [0m[35m[40m'bar'[0m[37m[40m) [0m > > >#4 To create an absolute path from a path component that starts with a forward slash: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mjoinpath[0m[37m[40m([0m[35m[40m'/'[0m[37m[40m, [0m[35m[40m'foo'[0m[37m[40m, [0m[35m[40m'/bar'[0m[37m[40m) [0m > > > >[1m[4mjson_concat[0m[4m([0m[4mjson[0m[4m, [0m[4mvalue[0m[4m, ...)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns an array with the given values concatenated onto the end. > If the initial value is null, the result will be an array with the > given elements. If the initial value is an array, the result will > be an array with the given values at the end. If the initial value > is not null or an array, the result will be an array with two > elements: the initial value and the given value. >[4mParameters[0m > [4mjson[0m The initial JSON value. > [4mvalue[0m The value(s) to add to the end of the array. >[4mSee Also[0m > [1mjget()[0m, [1mjson_contains()[0m, [1mjson_group_array()[0m, [1mjson_group_object()[0m, > [1myaml_to_json()[0m >[4mExamples[0m >#1 To append the number 4 to null: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mjson_concat[0m[37m[40m([0m[1m[36m[40mNULL[0m[37m[40m, [0m[1m[37m[40m4[0m[37m[40m) [0m > > >#2 To append 4 and 5 to the array [1, 2, 3]: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mjson_concat[0m[37m[40m([0m[35m[40m'[1, 2, 3]'[0m[37m[40m, [0m[1m[37m[40m4[0m[37m[40m, [0m[1m[37m[40m5[0m[37m[40m) [0m > > >#3 To concatenate two arrays together: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mjson_concat[0m[37m[40m([0m[35m[40m'[1, 2, 3]'[0m[37m[40m, [0m[1m[37m[40mjson[0m[37m[40m([0m[35m[40m'[4, 5]'[0m[37m[40m)) [0m > > > >[1m[4mjson_contains[0m[4m([0m[4mjson[0m[4m, [0m[4mvalue[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Check if a JSON value contains the given element. >[4mParameters[0m > [4mjson[0m The JSON value to query. > [4mvalue[0m The value to look for in the first argument >[4mSee Also[0m > [1mjget()[0m, [1mjson_concat()[0m, [1mjson_group_array()[0m, [1mjson_group_object()[0m, > [1myaml_to_json()[0m >[4mExamples[0m >#1 To test if a JSON array contains the number 4: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mjson_contains[0m[37m[40m([0m[35m[40m'[1, 2, 3]'[0m[37m[40m, [0m[1m[37m[40m4[0m[37m[40m) [0m > > >#2 To test if a JSON array contains the string 'def': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mjson_contains[0m[37m[40m([0m[35m[40m'["abc", "def"]'[0m[37m[40m, [0m[35m[40m'def'[0m[37m[40m) [0m > > > >[1m[4mjson_group_array[0m[4m([0m[4mvalue[0m[4m, ...)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Collect the given values from a query into a JSON array >[4mParameter[0m > [4mvalue[0m The values to append to the array >[4mSee Also[0m > [1mjget()[0m, [1mjson_concat()[0m, [1mjson_contains()[0m, [1mjson_group_object()[0m, > [1myaml_to_json()[0m >[4mExamples[0m >#1 To create an array from arguments: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mjson_group_array[0m[37m[40m([0m[35m[40m'one'[0m[37m[40m, [0m[1m[37m[40m2[0m[37m[40m, [0m[1m[37m[40m3.4[0m[37m[40m) [0m > > >#2 To create an array from a column of values: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mjson_group_array[0m[37m[40m([0m[37m[40mcolumn1[0m[37m[40m) [0m[1m[36m[40mFROM[0m[37m[40m ([0m[1m[36m[40mVALUES[0m[37m[40m ([0m[1m[37m[40m1[0m[37m[40m), ([0m[1m[37m[40m2[0m[37m[40m), ([0m[1m[37m[40m3[0m[37m[40m))[0m > > > >[1m[4mjson_group_object[0m[4m([0m[4mname[0m[4m, [0m[4mvalue[0m[4m, ...)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Collect the given values from a query into a JSON object >[4mParameters[0m > [4mname[0m The property name for the value > [4mvalue[0m The value to add to the object >[4mSee Also[0m > [1mjget()[0m, [1mjson_concat()[0m, [1mjson_contains()[0m, [1mjson_group_array()[0m, > [1myaml_to_json()[0m >[4mExamples[0m >#1 To create an object from arguments: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mjson_group_object[0m[37m[40m([0m[35m[40m'a'[0m[37m[40m, [0m[1m[37m[40m1[0m[37m[40m, [0m[35m[40m'b'[0m[37m[40m, [0m[1m[37m[40m2[0m[37m[40m) [0m > > >#2 To create an object from a pair of columns: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mjson_group_object[0m[37m[40m([0m[37m[40mcolumn1[0m[37m[40m, [0m[37m[40mcolumn2[0m[37m[40m) [0m[1m[36m[40mFROM[0m[37m[40m ([0m[1m[36m[40mVALUES[0m[37m[40m ([0m[35m[40m'a'[0m[37m[40m, [0m[1m[37m[40m1[0m[37m[40m), ([0m[35m[40m'b'[0m[37m[40m, [0m[1m[37m[40m2[0m[37m[40m))[0m > > > >[1m[4mjulianday[0m[4m([0m[4mtimestring[0m[4m, [0m[4mmodifier[0m[4m, ...)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the number of days since noon in Greenwich on November 24, > 4714 B.C. >[4mParameters[0m > [4mtimestring[0m The string to convert to a date with time. > [4mmodifier[0m A transformation that is applied to the > value to the left. >[4mSee Also[0m > [1mdate()[0m, [1mdatetime()[0m, [1mhumanize_duration()[0m, [1mstrftime()[0m, [1mtime()[0m, > [1mtimediff()[0m, [1mtimeslice()[0m >[4mExamples[0m >#1 To get the julian day from the timestamp '2017-01-02T03:04:05': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mjulianday[0m[37m[40m([0m[35m[40m'2017-01-02T03:04:05'[0m[37m[40m) [0m > > >#2 To get the julian day from the timestamp '2017-01-02T03:04:05' plus one minute: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mjulianday[0m[37m[40m([0m[35m[40m'2017-01-02T03:04:05'[0m[37m[40m, [0m[35m[40m'+1 minute'[0m[37m[40m)[0m > > >#3 To get the julian day from the timestamp 1491341842: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mjulianday[0m[37m[40m([0m[1m[37m[40m1491341842[0m[37m[40m, [0m[35m[40m'unixepoch'[0m[37m[40m) [0m > > > >[1m[4mlag[0m[4m([0m[4mexpr[0m[4m, [[0m[4moffset[0m[4m], [[0m[4mdefault[0m[4m])[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the result of evaluating the expression against the previous > row in the partition. >[4mParameters[0m > [4mexpr[0m The expression to execute over the previous row > [4moffset[0m The offset from the current row in the partition > [4mdefault[0m The default value if the previous row does not > exist instead of NULL >[4mSee Also[0m > [1mcume_dist()[0m, [1mdense_rank()[0m, [1mfirst_value()[0m, [1mlast_value()[0m, [1mlead()[0m, > [1mnth_value()[0m, [1mntile()[0m, [1mpercent_rank()[0m, [1mrank()[0m, [1mrow_number()[0m > >[1m[4mlast_insert_rowid[0m[4m()[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the ROWID of the last row insert from the database > connection which invoked the function > > >[1m[4mlast_value[0m[4m([0m[4mexpr[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the result of evaluating the expression against the last row > in the window frame. >[4mParameter[0m > [4mexpr[0m The expression to execute over the last row >[4mSee Also[0m > [1mcume_dist()[0m, [1mdense_rank()[0m, [1mfirst_value()[0m, [1mlag()[0m, [1mlead()[0m, [1mnth_value()[0m, > [1mntile()[0m, [1mpercent_rank()[0m, [1mrank()[0m, [1mrow_number()[0m > >[1m[4mlead[0m[4m([0m[4mexpr[0m[4m, [[0m[4moffset[0m[4m], [[0m[4mdefault[0m[4m])[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the result of evaluating the expression against the next row > in the partition. >[4mParameters[0m > [4mexpr[0m The expression to execute over the next row > [4moffset[0m The offset from the current row in the partition > [4mdefault[0m The default value if the next row does not exist > instead of NULL >[4mSee Also[0m > [1mcume_dist()[0m, [1mdense_rank()[0m, [1mfirst_value()[0m, [1mlag()[0m, [1mlast_value()[0m, > [1mnth_value()[0m, [1mntile()[0m, [1mpercent_rank()[0m, [1mrank()[0m, [1mrow_number()[0m > >[1m[4mleftstr[0m[4m([0m[4mstr[0m[4m, [0m[4mN[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the N leftmost (UTF-8) characters in the given string. >[4mParameters[0m > [4mstr[0m The string to return subset. > [4mN[0m The number of characters from the left side of the > string to return. >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mlength()[0m, > [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, [1mparse_url()[0m, > [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, [1mregexp_capture_into_json()[0m, > [1mregexp_match()[0m, [1mregexp_replace()[0m, [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, > [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, [1mspooky_hash()[0m, [1mstartswith()[0m, > [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, [1munparse_url()[0m, [1mupper()[0m, > [1mxpath()[0m >[4mExamples[0m >#1 To get the first character of the string 'abc': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mleftstr[0m[37m[40m([0m[35m[40m'abc'[0m[37m[40m, [0m[1m[37m[40m1[0m[37m[40m) [0m > > >#2 To get the first ten characters of a string, regardless of size: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mleftstr[0m[37m[40m([0m[35m[40m'abc'[0m[37m[40m, [0m[1m[37m[40m10[0m[37m[40m) [0m > > > >[1m[4mlength[0m[4m([0m[4mstr[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the number of characters (not bytes) in the given string > prior to the first NUL character >[4mParameter[0m > [4mstr[0m The string to determine the length of >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, [1mparse_url()[0m, > [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, [1mregexp_capture_into_json()[0m, > [1mregexp_match()[0m, [1mregexp_replace()[0m, [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, > [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, [1mspooky_hash()[0m, [1mstartswith()[0m, > [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, [1munparse_url()[0m, [1mupper()[0m, > [1mxpath()[0m >[4mExample[0m >#1 To get the length of the string 'abc': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mlength[0m[37m[40m([0m[35m[40m'abc'[0m[37m[40m) [0m > > > >[1m[4mlike[0m[4m([0m[4mpattern[0m[4m, [0m[4mstr[0m[4m, [[0m[4mescape[0m[4m])[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Match a string against a pattern >[4mParameters[0m > [4mpattern[0m The pattern to match. A percent symbol (%) will > match zero or more characters and an underscore (_) will > match a single character. > [4mstr[0m The string to match > [4mescape[0m The escape character that can be used to prefix > a literal percent or underscore in the pattern. > >[4mExamples[0m >#1 To test if the string 'aabcc' contains the letter 'b': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[36m[40mlike[0m[37m[40m([0m[35m[40m'%b%'[0m[37m[40m, [0m[35m[40m'aabcc'[0m[37m[40m) [0m > > >#2 To test if the string 'aab%' ends with 'b%': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[36m[40mlike[0m[37m[40m([0m[35m[40m'%b:%'[0m[37m[40m, [0m[35m[40m'aab%'[0m[37m[40m, [0m[35m[40m':'[0m[37m[40m) [0m > > > >[1m[4mlikelihood[0m[4m([0m[4mvalue[0m[4m, [0m[4mprobability[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Provides a hint to the query planner that the first argument is a > boolean that is true with the given probability >[4mParameters[0m > [4mvalue[0m The boolean value to return > [4mprobability[0m A floating point constant between 0.0 > and 1.0 > > >[1m[4mlikely[0m[4m([0m[4mvalue[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Short-hand for likelihood(X,0.9375) >[4mParameter[0m > [4mvalue[0m The boolean value to return > > >[1m[4mlnav_top_file[0m[4m()[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Return the name of the file that the top line in the current view > came from. > > >[1m[4mlnav_version[0m[4m()[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Return the current version of lnav > > >[1m[4mload_extension[0m[4m([0m[4mpath[0m[4m, [[0m[4mentry-point[0m[4m])[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Loads SQLite extensions out of the given shared library file using > the given entry point. >[4mParameters[0m > [4mpath[0m The path to the shared library > containing the extension. > [4mentry-point[0m > > >[1m[4mlog[0m[4m([0m[4mx[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the natural logarithm of x >[4mParameter[0m > [4mx[0m The number >[4mSee Also[0m > [1mabs()[0m, [1macos()[0m, [1macosh()[0m, [1masin()[0m, [1masinh()[0m, [1matan()[0m, [1matan2()[0m, [1matanh()[0m, > [1matn2()[0m, [1mavg()[0m, [1mceil()[0m, [1mdegrees()[0m, [1mexp()[0m, [1mfloor()[0m, [1mlog10()[0m, [1mmax()[0m, > [1mmin()[0m, [1mpi()[0m, [1mpower()[0m, [1mradians()[0m, [1mround()[0m, [1msign()[0m, [1msquare()[0m, [1msum()[0m, > [1mtotal()[0m >[4mExample[0m >#1 To get the natual logarithm of 8: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mlog[0m[37m[40m([0m[1m[37m[40m8[0m[37m[40m) [0m > > > >[1m[4mlog10[0m[4m([0m[4mx[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the base-10 logarithm of X >[4mParameter[0m > [4mx[0m The number >[4mSee Also[0m > [1mabs()[0m, [1macos()[0m, [1macosh()[0m, [1masin()[0m, [1masinh()[0m, [1matan()[0m, [1matan2()[0m, [1matanh()[0m, > [1matn2()[0m, [1mavg()[0m, [1mceil()[0m, [1mdegrees()[0m, [1mexp()[0m, [1mfloor()[0m, [1mlog()[0m, [1mmax()[0m, [1mmin()[0m, > [1mpi()[0m, [1mpower()[0m, [1mradians()[0m, [1mround()[0m, [1msign()[0m, [1msquare()[0m, [1msum()[0m, [1mtotal()[0m >[4mExample[0m >#1 To get the logarithm of 100: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mlog10[0m[37m[40m([0m[1m[37m[40m100[0m[37m[40m) [0m > > > >[1m[4mlog_top_datetime[0m[4m()[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Return the timestamp of the line at the top of the log view. > > >[1m[4mlog_top_line[0m[4m()[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Return the line number at the top of the log view. > > >[1m[4mlogfmt2json[0m[4m([0m[4mstr[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Convert a logfmt-encoded string into JSON >[4mParameter[0m > [4mstr[0m The logfmt message to parse >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, [1mparse_url()[0m, > [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, [1mregexp_capture_into_json()[0m, > [1mregexp_match()[0m, [1mregexp_replace()[0m, [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, > [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, [1mspooky_hash()[0m, [1mstartswith()[0m, > [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, [1munparse_url()[0m, [1mupper()[0m, > [1mxpath()[0m >[4mExample[0m >#1 To extract key/value pairs from a log message: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mlogfmt2json[0m[37m[40m([0m[35m[40m'foo=1 bar=2 name="Rolo Tomassi"'[0m[37m[40m)[0m > > > >[1m[4mlower[0m[4m([0m[4mstr[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns a copy of the given string with all ASCII characters > converted to lower case. >[4mParameter[0m > [4mstr[0m The string to convert. >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, [1mparse_url()[0m, > [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, [1mregexp_capture_into_json()[0m, > [1mregexp_match()[0m, [1mregexp_replace()[0m, [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, > [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, [1mspooky_hash()[0m, [1mstartswith()[0m, > [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, [1munparse_url()[0m, [1mupper()[0m, > [1mxpath()[0m >[4mExample[0m >#1 To lowercase the string 'AbC': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mlower[0m[37m[40m([0m[35m[40m'AbC'[0m[37m[40m) [0m > > > >[1m[4mltrim[0m[4m([0m[4mstr[0m[4m, [[0m[4mchars[0m[4m])[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns a string formed by removing any and all characters that > appear in the second argument from the left side of the first. >[4mParameters[0m > [4mstr[0m The string to trim characters from the left side > [4mchars[0m The characters to trim. Defaults to spaces. >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, [1mparse_url()[0m, > [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, [1mregexp_capture_into_json()[0m, > [1mregexp_match()[0m, [1mregexp_replace()[0m, [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, > [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, [1mspooky_hash()[0m, [1mstartswith()[0m, > [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, [1munparse_url()[0m, [1mupper()[0m, > [1mxpath()[0m >[4mExamples[0m >#1 To trim the leading space characters from the string ' abc': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mltrim[0m[37m[40m([0m[35m[40m' abc'[0m[37m[40m) [0m > > >#2 To trim the characters 'a' or 'b' from the left side of the string 'aaaabbbc': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mltrim[0m[37m[40m([0m[35m[40m'aaaabbbc'[0m[37m[40m, [0m[35m[40m'ab'[0m[37m[40m) [0m > > > >[1m[4mmax[0m[4m([0m[4mX[0m[4m, ...)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the argument with the maximum value, or return NULL if any > argument is NULL. >[4mParameter[0m > [4mX[0m The numbers to find the maximum of. If only one argument is > given, this function operates as an aggregate. >[4mSee Also[0m > [1mabs()[0m, [1macos()[0m, [1macosh()[0m, [1masin()[0m, [1masinh()[0m, [1matan()[0m, [1matan2()[0m, [1matanh()[0m, > [1matn2()[0m, [1mavg()[0m, [1mceil()[0m, [1mdegrees()[0m, [1mexp()[0m, [1mfloor()[0m, [1mlog()[0m, [1mlog10()[0m, > [1mmin()[0m, [1mpi()[0m, [1mpower()[0m, [1mradians()[0m, [1mround()[0m, [1msign()[0m, [1msquare()[0m, [1msum()[0m, > [1mtotal()[0m >[4mExamples[0m >#1 To get the largest value from the parameters: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mmax[0m[37m[40m([0m[1m[37m[40m2[0m[37m[40m, [0m[1m[37m[40m1[0m[37m[40m, [0m[1m[37m[40m3[0m[37m[40m) [0m > > >#2 To get the largest value from an aggregate: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mmax[0m[37m[40m([0m[37m[40mstatus[0m[37m[40m) [0m[1m[36m[40mFROM[0m[37m[40m [0m[37m[40mhttp_status_codes[0m[37m[40m [0m > > > >[1m[4mmin[0m[4m([0m[4mX[0m[4m, ...)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the argument with the minimum value, or return NULL if any > argument is NULL. >[4mParameter[0m > [4mX[0m The numbers to find the minimum of. If only one argument is > given, this function operates as an aggregate. >[4mSee Also[0m > [1mabs()[0m, [1macos()[0m, [1macosh()[0m, [1masin()[0m, [1masinh()[0m, [1matan()[0m, [1matan2()[0m, [1matanh()[0m, > [1matn2()[0m, [1mavg()[0m, [1mceil()[0m, [1mdegrees()[0m, [1mexp()[0m, [1mfloor()[0m, [1mlog()[0m, [1mlog10()[0m, > [1mmax()[0m, [1mpi()[0m, [1mpower()[0m, [1mradians()[0m, [1mround()[0m, [1msign()[0m, [1msquare()[0m, [1msum()[0m, > [1mtotal()[0m >[4mExamples[0m >#1 To get the smallest value from the parameters: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mmin[0m[37m[40m([0m[1m[37m[40m2[0m[37m[40m, [0m[1m[37m[40m1[0m[37m[40m, [0m[1m[37m[40m3[0m[37m[40m) [0m > > >#2 To get the smallest value from an aggregate: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mmin[0m[37m[40m([0m[37m[40mstatus[0m[37m[40m) [0m[1m[36m[40mFROM[0m[37m[40m [0m[37m[40mhttp_status_codes[0m[37m[40m [0m > > > >[1m[4mnth_value[0m[4m([0m[4mexpr[0m[4m, [0m[4mN[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the result of evaluating the expression against the nth row > in the window frame. >[4mParameters[0m > [4mexpr[0m The expression to execute over the nth row > [4mN[0m The row number >[4mSee Also[0m > [1mcume_dist()[0m, [1mdense_rank()[0m, [1mfirst_value()[0m, [1mlag()[0m, [1mlast_value()[0m, [1mlead()[0m, > [1mntile()[0m, [1mpercent_rank()[0m, [1mrank()[0m, [1mrow_number()[0m > >[1m[4mntile[0m[4m([0m[4mgroups[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the number of the group that the current row is a part of >[4mParameter[0m > [4mgroups[0m The number of groups >[4mSee Also[0m > [1mcume_dist()[0m, [1mdense_rank()[0m, [1mfirst_value()[0m, [1mlag()[0m, [1mlast_value()[0m, [1mlead()[0m, > [1mnth_value()[0m, [1mpercent_rank()[0m, [1mrank()[0m, [1mrow_number()[0m > >[1m[4mnullif[0m[4m([0m[4mX[0m[4m, [0m[4mY[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns its first argument if the arguments are different and NULL > if the arguments are the same. >[4mParameters[0m > [4mX[0m The first argument to compare. > [4mY[0m The argument to compare against the first. > >[4mExamples[0m >#1 To test if 1 is different from 1: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mnullif[0m[37m[40m([0m[1m[37m[40m1[0m[37m[40m, [0m[1m[37m[40m1[0m[37m[40m) [0m > > >#2 To test if 1 is different from 2: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mnullif[0m[37m[40m([0m[1m[37m[40m1[0m[37m[40m, [0m[1m[37m[40m2[0m[37m[40m) [0m > > > >[1m[4mpadc[0m[4m([0m[4mstr[0m[4m, [0m[4mlen[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Pad the given string with enough spaces to make it centered within > the given length >[4mParameters[0m > [4mstr[0m The string to pad > [4mlen[0m The minimum desired length of the output string >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadl()[0m, [1mpadr()[0m, [1mparse_url()[0m, > [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, [1mregexp_capture_into_json()[0m, > [1mregexp_match()[0m, [1mregexp_replace()[0m, [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, > [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, [1mspooky_hash()[0m, [1mstartswith()[0m, > [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, [1munparse_url()[0m, [1mupper()[0m, > [1mxpath()[0m >[4mExamples[0m >#1 To pad the string 'abc' to a length of six characters: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mpadc[0m[37m[40m([0m[35m[40m'abc'[0m[37m[40m, [0m[1m[37m[40m6[0m[37m[40m) [0m[1m[37m[40m||[0m[37m[40m [0m[35m[40m'def'[0m[37m[40m [0m > > >#2 To pad the string 'abcdef' to a length of eight characters: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mpadc[0m[37m[40m([0m[35m[40m'abcdef'[0m[37m[40m, [0m[1m[37m[40m8[0m[37m[40m) [0m[1m[37m[40m||[0m[37m[40m [0m[35m[40m'ghi'[0m[37m[40m [0m > > > >[1m[4mpadl[0m[4m([0m[4mstr[0m[4m, [0m[4mlen[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Pad the given string with leading spaces until it reaches the > desired length >[4mParameters[0m > [4mstr[0m The string to pad > [4mlen[0m The minimum desired length of the output string >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadr()[0m, [1mparse_url()[0m, > [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, [1mregexp_capture_into_json()[0m, > [1mregexp_match()[0m, [1mregexp_replace()[0m, [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, > [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, [1mspooky_hash()[0m, [1mstartswith()[0m, > [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, [1munparse_url()[0m, [1mupper()[0m, > [1mxpath()[0m >[4mExamples[0m >#1 To pad the string 'abc' to a length of six characters: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mpadl[0m[37m[40m([0m[35m[40m'abc'[0m[37m[40m, [0m[1m[37m[40m6[0m[37m[40m) [0m > > >#2 To pad the string 'abcdef' to a length of four characters: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mpadl[0m[37m[40m([0m[35m[40m'abcdef'[0m[37m[40m, [0m[1m[37m[40m4[0m[37m[40m) [0m > > > >[1m[4mpadr[0m[4m([0m[4mstr[0m[4m, [0m[4mlen[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Pad the given string with trailing spaces until it reaches the > desired length >[4mParameters[0m > [4mstr[0m The string to pad > [4mlen[0m The minimum desired length of the output string >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mparse_url()[0m, > [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, [1mregexp_capture_into_json()[0m, > [1mregexp_match()[0m, [1mregexp_replace()[0m, [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, > [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, [1mspooky_hash()[0m, [1mstartswith()[0m, > [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, [1munparse_url()[0m, [1mupper()[0m, > [1mxpath()[0m >[4mExamples[0m >#1 To pad the string 'abc' to a length of six characters: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mpadr[0m[37m[40m([0m[35m[40m'abc'[0m[37m[40m, [0m[1m[37m[40m6[0m[37m[40m) [0m[1m[37m[40m||[0m[37m[40m [0m[35m[40m'def'[0m[37m[40m [0m > > >#2 To pad the string 'abcdef' to a length of four characters: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mpadr[0m[37m[40m([0m[35m[40m'abcdef'[0m[37m[40m, [0m[1m[37m[40m4[0m[37m[40m) [0m[1m[37m[40m||[0m[37m[40m [0m[35m[40m'ghi'[0m[37m[40m [0m > > > >[1m[4mparse_url[0m[4m([0m[4murl[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Parse a URL and return the components in a JSON object. Limitations: > not all URL schemes are supported and repeated query parameters are > not captured. >[4mParameter[0m > [4murl[0m The URL to parse >[4mResults[0m > [4mscheme[0m The URL's scheme > [4musername[0m The name of the user specified in the URL > [4mpassword[0m The password specified in the URL > [4mhost[0m The host name / IP specified in the URL > [4mport[0m The port specified in the URL > [4mpath[0m The path specified in the URL > [4mquery[0m The query string in the URL > [4mparameters[0m An object containing the query parameters > [4mfragment[0m The fragment specified in the URL >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, > [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, [1mregexp_capture_into_json()[0m, > [1mregexp_match()[0m, [1mregexp_replace()[0m, [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, > [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, [1mspooky_hash()[0m, [1mstartswith()[0m, > [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, [1munparse_url()[0m, [1munparse_url()[0m, > [1mupper()[0m, [1mxpath()[0m >[4mExamples[0m >#1 To parse the URL 'https://example.com/search?q=hello%20world': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mparse_url[0m[37m[40m([0m[35m[40m'https://example.com/search?q=hello%20world'[0m[37m[40m)[0m > > >#2 To parse the URL 'https://alice@[fe80::14ff:4ee5:1215:2fb2]': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mparse_url[0m[37m[40m([0m[35m[40m'https://alice@[fe80::14ff:4ee5:1215:2fb2]'[0m[37m[40m)[0m > > > >[1m[4mpercent_rank[0m[4m()[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns (rank - 1) / (partition-rows - 1) >[4mSee Also[0m > [1mcume_dist()[0m, [1mdense_rank()[0m, [1mfirst_value()[0m, [1mlag()[0m, [1mlast_value()[0m, [1mlead()[0m, > [1mnth_value()[0m, [1mntile()[0m, [1mrank()[0m, [1mrow_number()[0m > >[1m[4mpi[0m[4m()[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the value of PI >[4mSee Also[0m > [1mabs()[0m, [1macos()[0m, [1macosh()[0m, [1masin()[0m, [1masinh()[0m, [1matan()[0m, [1matan2()[0m, [1matanh()[0m, > [1matn2()[0m, [1mavg()[0m, [1mceil()[0m, [1mdegrees()[0m, [1mexp()[0m, [1mfloor()[0m, [1mlog()[0m, [1mlog10()[0m, > [1mmax()[0m, [1mmin()[0m, [1mpower()[0m, [1mradians()[0m, [1mround()[0m, [1msign()[0m, [1msquare()[0m, [1msum()[0m, > [1mtotal()[0m >[4mExample[0m >#1 To get the value of PI: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mpi[0m[37m[40m() [0m > > > >[1m[4mpower[0m[4m([0m[4mbase[0m[4m, [0m[4mexp[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the base to the given exponent >[4mParameters[0m > [4mbase[0m The base number > [4mexp[0m The exponent >[4mSee Also[0m > [1mabs()[0m, [1macos()[0m, [1macosh()[0m, [1masin()[0m, [1masinh()[0m, [1matan()[0m, [1matan2()[0m, [1matanh()[0m, > [1matn2()[0m, [1mavg()[0m, [1mceil()[0m, [1mdegrees()[0m, [1mexp()[0m, [1mfloor()[0m, [1mlog()[0m, [1mlog10()[0m, > [1mmax()[0m, [1mmin()[0m, [1mpi()[0m, [1mradians()[0m, [1mround()[0m, [1msign()[0m, [1msquare()[0m, [1msum()[0m, > [1mtotal()[0m >[4mExample[0m >#1 To raise two to the power of three: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mpower[0m[37m[40m([0m[1m[37m[40m2[0m[37m[40m, [0m[1m[37m[40m3[0m[37m[40m) [0m > > > >[1m[4mprintf[0m[4m([0m[4mformat[0m[4m, [0m[4mX[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns a string with this functions arguments substituted into the > given format. Substitution points are specified using percent (%) > options, much like the standard C printf() function. >[4mParameters[0m > [4mformat[0m The format of the string to return. > [4mX[0m The argument to substitute at a given position in > the format. >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, > [1mparse_url()[0m, [1mproper()[0m, [1mregexp_capture()[0m, [1mregexp_capture_into_json()[0m, > [1mregexp_match()[0m, [1mregexp_replace()[0m, [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, > [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, [1mspooky_hash()[0m, [1mstartswith()[0m, > [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, [1munparse_url()[0m, [1mupper()[0m, > [1mxpath()[0m >[4mExamples[0m >#1 To substitute 'World' into the string 'Hello, %s!': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mprintf[0m[37m[40m([0m[35m[40m'Hello, %s!'[0m[37m[40m, [0m[35m[40m'World'[0m[37m[40m) [0m > > >#2 To right-align 'small' in the string 'align:' with a column width of 10: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mprintf[0m[37m[40m([0m[35m[40m'align: % 10s'[0m[37m[40m, [0m[35m[40m'small'[0m[37m[40m) [0m > > >#3 To format 11 with a width of five characters and leading zeroes: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mprintf[0m[37m[40m([0m[35m[40m'value: %05d'[0m[37m[40m, [0m[1m[37m[40m11[0m[37m[40m) [0m > > > >[1m[4mproper[0m[4m([0m[4mstr[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Capitalize the first character of words in the given string >[4mParameter[0m > [4mstr[0m The string to capitalize. >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, > [1mparse_url()[0m, [1mprintf()[0m, [1mregexp_capture()[0m, [1mregexp_capture_into_json()[0m, > [1mregexp_match()[0m, [1mregexp_replace()[0m, [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, > [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, [1mspooky_hash()[0m, [1mstartswith()[0m, > [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, [1munparse_url()[0m, [1mupper()[0m, > [1mxpath()[0m >[4mExample[0m >#1 To capitalize the words in the string 'hello, world!': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mproper[0m[37m[40m([0m[35m[40m'hello, world!'[0m[37m[40m) [0m > > > >[1m[4mquote[0m[4m([0m[4mX[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the text of an SQL literal which is the value of its > argument suitable for inclusion into an SQL statement. >[4mParameter[0m > [4mX[0m The string to quote. > >[4mExamples[0m >#1 To quote the string 'abc': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mquote[0m[37m[40m([0m[35m[40m'abc'[0m[37m[40m) [0m > > >#2 To quote the string 'abc'123': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mquote[0m[37m[40m([0m[35m[40m'abc''123'[0m[37m[40m) [0m > > > >[1m[4mradians[0m[4m([0m[4mdegrees[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Converts degrees to radians >[4mParameter[0m > [4mdegrees[0m The degrees value to convert to radians >[4mSee Also[0m > [1mabs()[0m, [1macos()[0m, [1macosh()[0m, [1masin()[0m, [1masinh()[0m, [1matan()[0m, [1matan2()[0m, [1matanh()[0m, > [1matn2()[0m, [1mavg()[0m, [1mceil()[0m, [1mdegrees()[0m, [1mexp()[0m, [1mfloor()[0m, [1mlog()[0m, [1mlog10()[0m, > [1mmax()[0m, [1mmin()[0m, [1mpi()[0m, [1mpower()[0m, [1mround()[0m, [1msign()[0m, [1msquare()[0m, [1msum()[0m, [1mtotal()[0m >[4mExample[0m >#1 To convert 180 degrees to radians: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mradians[0m[37m[40m([0m[1m[37m[40m180[0m[37m[40m) [0m > > > >[1m[4mraise_error[0m[4m([0m[4mmsg[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Raises an error with the given message when executed >[4mParameter[0m > [4mmsg[0m The error message > > >[1m[4mrandom[0m[4m()[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns a pseudo-random integer between -9223372036854775808 and > +9223372036854775807. > > >[1m[4mrandomblob[0m[4m([0m[4mN[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Return an N-byte blob containing pseudo-random bytes. >[4mParameter[0m > [4mN[0m The size of the blob in bytes. > > >[1m[4mrank[0m[4m()[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the row_number() of the first peer in each group with gaps >[4mSee Also[0m > [1mcume_dist()[0m, [1mdense_rank()[0m, [1mfirst_value()[0m, [1mlag()[0m, [1mlast_value()[0m, [1mlead()[0m, > [1mnth_value()[0m, [1mntile()[0m, [1mpercent_rank()[0m, [1mrow_number()[0m > >[1m[4mreadlink[0m[4m([0m[4mpath[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Read the target of a symbolic link. >[4mParameter[0m > [4mpath[0m The path to the symbolic link. >[4mSee Also[0m > [1mbasename()[0m, [1mdirname()[0m, [1mjoinpath()[0m, [1mrealpath()[0m > >[1m[4mrealpath[0m[4m([0m[4mpath[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the resolved version of the given path, expanding symbolic > links and resolving '.' and '..' references. >[4mParameter[0m > [4mpath[0m The path to resolve. >[4mSee Also[0m > [1mbasename()[0m, [1mdirname()[0m, [1mjoinpath()[0m, [1mreadlink()[0m > >[1m[4mregexp[0m[4m([0m[4mre[0m[4m, [0m[4mstr[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Test if a string matches a regular expression >[4mParameters[0m > [4mre[0m The regular expression to use > [4mstr[0m The string to test against the regular expression > > >[1m[4mregexp_capture[0m[4m([0m[4mstring[0m[4m, [0m[4mpattern[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > A table-valued function that executes a regular-expression over a > string and returns the captured values. If the regex only matches a > subset of the input string, it will be rerun on the remaining parts > of the string until no more matches are found. >[4mParameters[0m > [4mstring[0m The string to match against the given pattern. > [4mpattern[0m The regular expression to match. >[4mResults[0m > [4mmatch_index[0m The match iteration. This value > will increase each time a new match is found in the > input string. > [4mcapture_index[0m The index of the capture in the > regex. > [4mcapture_name[0m The name of the capture in the > regex. > [4mcapture_count[0m The total number of captures in the > regex. > [4mrange_start[0m The start of the capture in the > input string. > [4mrange_stop[0m The stop of the capture in the input > string. > [4mcontent[0m The captured value from the string. >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, > [1mparse_url()[0m, [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture_into_json()[0m, > [1mregexp_match()[0m, [1mregexp_replace()[0m, [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, > [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, [1mspooky_hash()[0m, [1mstartswith()[0m, > [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, [1munparse_url()[0m, [1mupper()[0m, > [1mxpath()[0m >[4mExample[0m >#1 To extract the key/value pairs 'a'/1 and 'b'/2 from the string 'a=1; b=2': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40m*[0m[37m[40m [0m[1m[36m[40mFROM[0m[37m[40m [0m[1m[37m[40mregexp_capture[0m[37m[40m([0m[35m[40m'a=1; b=2'[0m[37m[40m, [0m[35m[40m'(\w+)=(\d+)'[0m[37m[40m)[0m > > > >[1m[4mregexp_capture_into_json[0m[4m([0m[4mstring[0m[4m, [0m[4mpattern[0m[4m, [[0m[4moptions[0m[4m])[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > A table-valued function that executes a regular-expression over a > string and returns the captured values as a JSON object. If the > regex only matches a subset of the input string, it will be rerun on > the remaining parts of the string until no more matches are found. >[4mParameters[0m > [4mstring[0m The string to match against the given pattern. > [4mpattern[0m The regular expression to match. > [4moptions[0m A JSON object with the following option: > convert-numbers - True (default) if text that looks like > numeric data should be converted to JSON numbers, false if > they should be captured as strings. >[4mResults[0m > [4mmatch_index[0m The match iteration. This value will > increase each time a new match is found in the input > string. > [4mcontent[0m The captured values from the string. >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, > [1mparse_url()[0m, [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, [1mregexp_match()[0m, > [1mregexp_replace()[0m, [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, [1mrightstr()[0m, > [1mrtrim()[0m, [1msparkline()[0m, [1mspooky_hash()[0m, [1mstartswith()[0m, [1mstrfilter()[0m, > [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, [1munparse_url()[0m, [1mupper()[0m, [1mxpath()[0m >[4mExample[0m >#1 To extract the key/value pairs 'a'/1 and 'b'/2 from the string 'a=1; b=2': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40m*[0m[37m[40m [0m[1m[36m[40mFROM[0m[37m[40m [0m[1m[37m[40mregexp_capture_into_json[0m[37m[40m([0m[35m[40m'a=1; b=2'[0m[37m[40m, [0m[35m[40m'(\w+)=(\d+)'[0m[37m[40m)[0m > > > >[1m[4mregexp_match[0m[4m([0m[4mre[0m[4m, [0m[4mstr[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Match a string against a regular expression and return the capture > groups as JSON. >[4mParameters[0m > [4mre[0m The regular expression to use > [4mstr[0m The string to test against the regular expression >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, > [1mparse_url()[0m, [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, > [1mregexp_capture_into_json()[0m, [1mregexp_replace()[0m, [1mregexp_replace()[0m, > [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, > [1mspooky_hash()[0m, [1mstartswith()[0m, [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, > [1munparse_url()[0m, [1mupper()[0m, [1mxpath()[0m >[4mExamples[0m >#1 To capture the digits from the string '123': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mregexp_match[0m[37m[40m([0m[35m[40m'(\d+)'[0m[37m[40m, [0m[35m[40m'123'[0m[37m[40m) [0m > > >#2 To capture a number and word into a JSON object with the properties 'col_0' and > 'col_1': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mregexp_match[0m[37m[40m([0m[35m[40m'(\d+) (\w+)'[0m[37m[40m, [0m[35m[40m'123 four'[0m[37m[40m) [0m > > >#3 To capture a number and word into a JSON object with the named properties 'num' and > 'str': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mregexp_match[0m[37m[40m([0m[35m[40m'(?<num>\d+) (?<str>\w+)'[0m[37m[40m, [0m[35m[40m'123 four'[0m[37m[40m)[0m > > > >[1m[4mregexp_replace[0m[4m([0m[4mstr[0m[4m, [0m[4mre[0m[4m, [0m[4mrepl[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Replace the parts of a string that match a regular expression. >[4mParameters[0m > [4mstr[0m The string to perform replacements on > [4mre[0m The regular expression to match > [4mrepl[0m The replacement string. You can reference capture > groups with a backslash followed by the number of the group, > starting with 1. >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, > [1mparse_url()[0m, [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, > [1mregexp_capture_into_json()[0m, [1mregexp_match()[0m, [1mregexp_match()[0m, [1mreplace()[0m, > [1mreplicate()[0m, [1mreverse()[0m, [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, > [1mspooky_hash()[0m, [1mstartswith()[0m, [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, > [1munparse_url()[0m, [1mupper()[0m, [1mxpath()[0m >[4mExamples[0m >#1 To replace the word at the start of the string 'Hello, World!' with 'Goodbye': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mregexp_replace[0m[37m[40m([0m[35m[40m'Hello, World!'[0m[37m[40m, [0m[35m[40m'^(\w+)'[0m[37m[40m, [0m[35m[40m'Goodbye'[0m[37m[40m)[0m > > >#2 To wrap alphanumeric words with angle brackets: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mregexp_replace[0m[37m[40m([0m[35m[40m'123 abc'[0m[37m[40m, [0m[35m[40m'(\w+)'[0m[37m[40m, [0m[35m[40m'<\1>'[0m[37m[40m) [0m > > > >[1m[4mreplace[0m[4m([0m[4mstr[0m[4m, [0m[4mold[0m[4m, [0m[4mreplacement[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns a string formed by substituting the replacement string for > every occurrence of the old string in the given string. >[4mParameters[0m > [4mstr[0m The string to perform substitutions on. > [4mold[0m The string to be replaced. > [4mreplacement[0m The string to replace any occurrences of > the old string with. >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, > [1mparse_url()[0m, [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, > [1mregexp_capture_into_json()[0m, [1mregexp_match()[0m, [1mregexp_replace()[0m, > [1mreplicate()[0m, [1mreverse()[0m, [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, > [1mspooky_hash()[0m, [1mstartswith()[0m, [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, > [1munparse_url()[0m, [1mupper()[0m, [1mxpath()[0m >[4mExamples[0m >#1 To replace the string 'x' with 'z' in 'abc': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[36m[40mreplace[0m[37m[40m([0m[35m[40m'abc'[0m[37m[40m, [0m[35m[40m'x'[0m[37m[40m, [0m[35m[40m'z'[0m[37m[40m) [0m > > >#2 To replace the string 'a' with 'z' in 'abc': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[36m[40mreplace[0m[37m[40m([0m[35m[40m'abc'[0m[37m[40m, [0m[35m[40m'a'[0m[37m[40m, [0m[35m[40m'z'[0m[37m[40m) [0m > > > >[1m[4mreplicate[0m[4m([0m[4mstr[0m[4m, [0m[4mN[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the given string concatenated N times. >[4mParameters[0m > [4mstr[0m The string to replicate. > [4mN[0m The number of times to replicate the string. >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, > [1mparse_url()[0m, [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, > [1mregexp_capture_into_json()[0m, [1mregexp_match()[0m, [1mregexp_replace()[0m, > [1mreplace()[0m, [1mreverse()[0m, [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, [1mspooky_hash()[0m, > [1mstartswith()[0m, [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, [1munparse_url()[0m, > [1mupper()[0m, [1mxpath()[0m >[4mExample[0m >#1 To repeat the string 'abc' three times: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mreplicate[0m[37m[40m([0m[35m[40m'abc'[0m[37m[40m, [0m[1m[37m[40m3[0m[37m[40m) [0m > > > >[1m[4mreverse[0m[4m([0m[4mstr[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the reverse of the given string. >[4mParameter[0m > [4mstr[0m The string to reverse. >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, > [1mparse_url()[0m, [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, > [1mregexp_capture_into_json()[0m, [1mregexp_match()[0m, [1mregexp_replace()[0m, > [1mreplace()[0m, [1mreplicate()[0m, [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, > [1mspooky_hash()[0m, [1mstartswith()[0m, [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, > [1munparse_url()[0m, [1mupper()[0m, [1mxpath()[0m >[4mExample[0m >#1 To reverse the string 'abc': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mreverse[0m[37m[40m([0m[35m[40m'abc'[0m[37m[40m) [0m > > > >[1m[4mrightstr[0m[4m([0m[4mstr[0m[4m, [0m[4mN[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the N rightmost (UTF-8) characters in the given string. >[4mParameters[0m > [4mstr[0m The string to return subset. > [4mN[0m The number of characters from the right side of the > string to return. >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, > [1mparse_url()[0m, [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, > [1mregexp_capture_into_json()[0m, [1mregexp_match()[0m, [1mregexp_replace()[0m, > [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, [1mrtrim()[0m, [1msparkline()[0m, [1mspooky_hash()[0m, > [1mstartswith()[0m, [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, [1munparse_url()[0m, > [1mupper()[0m, [1mxpath()[0m >[4mExamples[0m >#1 To get the last character of the string 'abc': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mrightstr[0m[37m[40m([0m[35m[40m'abc'[0m[37m[40m, [0m[1m[37m[40m1[0m[37m[40m) [0m > > >#2 To get the last ten characters of a string, regardless of size: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mrightstr[0m[37m[40m([0m[35m[40m'abc'[0m[37m[40m, [0m[1m[37m[40m10[0m[37m[40m) [0m > > > >[1m[4mround[0m[4m([0m[4mnum[0m[4m, [[0m[4mdigits[0m[4m])[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns a floating-point value rounded to the given number of digits > to the right of the decimal point. >[4mParameters[0m > [4mnum[0m The value to round. > [4mdigits[0m The number of digits to the right of the decimal > to round to. >[4mSee Also[0m > [1mabs()[0m, [1macos()[0m, [1macosh()[0m, [1masin()[0m, [1masinh()[0m, [1matan()[0m, [1matan2()[0m, [1matanh()[0m, > [1matn2()[0m, [1mavg()[0m, [1mceil()[0m, [1mdegrees()[0m, [1mexp()[0m, [1mfloor()[0m, [1mlog()[0m, [1mlog10()[0m, > [1mmax()[0m, [1mmin()[0m, [1mpi()[0m, [1mpower()[0m, [1mradians()[0m, [1msign()[0m, [1msquare()[0m, [1msum()[0m, > [1mtotal()[0m >[4mExamples[0m >#1 To round the number 123.456 to an integer: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mround[0m[37m[40m([0m[1m[37m[40m123.456[0m[37m[40m) [0m > > >#2 To round the number 123.456 to a precision of 1: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mround[0m[37m[40m([0m[1m[37m[40m123.456[0m[37m[40m, [0m[1m[37m[40m1[0m[37m[40m) [0m > > >#3 To round the number 123.456 to a precision of 5: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mround[0m[37m[40m([0m[1m[37m[40m123.456[0m[37m[40m, [0m[1m[37m[40m5[0m[37m[40m) [0m > > > >[1m[4mrow_number[0m[4m()[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the number of the row within the current partition, starting > from 1. >[4mSee Also[0m > [1mcume_dist()[0m, [1mdense_rank()[0m, [1mfirst_value()[0m, [1mlag()[0m, [1mlast_value()[0m, [1mlead()[0m, > [1mnth_value()[0m, [1mntile()[0m, [1mpercent_rank()[0m, [1mrank()[0m >[4mExample[0m >#1 To number messages from a process: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mrow_number[0m[37m[40m() [0m[1m[36m[40mOVER[0m[37m[40m ([0m[1m[36m[40mPARTITION[0m[37m[40m [0m[1m[36m[40mBY[0m[37m[40m [0m[37m[40mex_procname[0m[37m[40m [0m[1m[36m[40mORDER[0m[37m[40m [0m[1m[36m[40mBY[0m[37m[40m [0m[37m[40mlog_line[0m[37m[40m) [0m[1m[36m[40mAS[0m[37m[40m [0m[37m[40mmsg_num[0m[37m[40m,[0m > [37m[40m [0m[37m[40mex_procname[0m[37m[40m, [0m[37m[40mlog_body[0m[37m[40m [0m[1m[36m[40mFROM[0m[37m[40m [0m[37m[40mlnav_example_log[0m > > > >[1m[4mrtrim[0m[4m([0m[4mstr[0m[4m, [[0m[4mchars[0m[4m])[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns a string formed by removing any and all characters that > appear in the second argument from the right side of the first. >[4mParameters[0m > [4mstr[0m The string to trim characters from the right side > [4mchars[0m The characters to trim. Defaults to spaces. >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, > [1mparse_url()[0m, [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, > [1mregexp_capture_into_json()[0m, [1mregexp_match()[0m, [1mregexp_replace()[0m, > [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, [1mrightstr()[0m, [1msparkline()[0m, > [1mspooky_hash()[0m, [1mstartswith()[0m, [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, > [1munparse_url()[0m, [1mupper()[0m, [1mxpath()[0m >[4mExamples[0m >#1 To trim the space characters from the end of the string 'abc ': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mrtrim[0m[37m[40m([0m[35m[40m'abc '[0m[37m[40m) [0m > > >#2 To trim the characters 'b' and 'c' from the string 'abbbbcccc': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mrtrim[0m[37m[40m([0m[35m[40m'abbbbcccc'[0m[37m[40m, [0m[35m[40m'bc'[0m[37m[40m) [0m > > > >[1m[4msign[0m[4m([0m[4mnum[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the sign of the given number as -1, 0, or 1 >[4mParameter[0m > [4mnum[0m The number >[4mSee Also[0m > [1mabs()[0m, [1macos()[0m, [1macosh()[0m, [1masin()[0m, [1masinh()[0m, [1matan()[0m, [1matan2()[0m, [1matanh()[0m, > [1matn2()[0m, [1mavg()[0m, [1mceil()[0m, [1mdegrees()[0m, [1mexp()[0m, [1mfloor()[0m, [1mlog()[0m, [1mlog10()[0m, > [1mmax()[0m, [1mmin()[0m, [1mpi()[0m, [1mpower()[0m, [1mradians()[0m, [1mround()[0m, [1msquare()[0m, [1msum()[0m, > [1mtotal()[0m >[4mExamples[0m >#1 To get the sign of 10: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40msign[0m[37m[40m([0m[1m[37m[40m10[0m[37m[40m) [0m > > >#2 To get the sign of 0: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40msign[0m[37m[40m([0m[1m[37m[40m0[0m[37m[40m) [0m > > >#3 To get the sign of -10: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40msign[0m[37m[40m([0m[1m[37m[40m-10[0m[37m[40m) [0m > > > >[1m[4msparkline[0m[4m([0m[4mvalue[0m[4m, [[0m[4mupper[0m[4m])[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Function used to generate a sparkline bar chart. The non-aggregate > version converts a single numeric value on a range to a bar chart > character. The aggregate version returns a string with a bar > character for every numeric input >[4mParameters[0m > [4mvalue[0m The numeric value to convert > [4mupper[0m The upper bound of the numeric range. The > non-aggregate version defaults to 100. The aggregate > version uses the largest value in the inputs. >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, > [1mparse_url()[0m, [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, > [1mregexp_capture_into_json()[0m, [1mregexp_match()[0m, [1mregexp_replace()[0m, > [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, [1mrightstr()[0m, [1mrtrim()[0m, [1mspooky_hash()[0m, > [1mstartswith()[0m, [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, [1munparse_url()[0m, > [1mupper()[0m, [1mxpath()[0m >[4mExamples[0m >#1 To get the unicode block element for the value 32 in the range of 0-128: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40msparkline[0m[37m[40m([0m[1m[37m[40m32[0m[37m[40m, [0m[1m[37m[40m128[0m[37m[40m) [0m > > >#2 To chart the values in a JSON array: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40msparkline[0m[37m[40m([0m[37m[40mvalue[0m[37m[40m) [0m[1m[36m[40mFROM[0m[37m[40m [0m[1m[37m[40mjson_each[0m[37m[40m([0m[35m[40m'[0, 1, 2, 3, 4, 5, 6, 7, 8]'[0m[37m[40m)[0m > > > >[1m[4mspooky_hash[0m[4m([0m[4mstr[0m[4m, ...)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Compute the hash value for the given arguments. >[4mParameter[0m > [4mstr[0m The string to hash >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, > [1mparse_url()[0m, [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, > [1mregexp_capture_into_json()[0m, [1mregexp_match()[0m, [1mregexp_replace()[0m, > [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, > [1mstartswith()[0m, [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, [1munparse_url()[0m, > [1mupper()[0m, [1mxpath()[0m >[4mExamples[0m >#1 To produce a hash for the string 'Hello, World!': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mspooky_hash[0m[37m[40m([0m[35m[40m'Hello, World!'[0m[37m[40m) [0m > > >#2 To produce a hash for the parameters where one is NULL: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mspooky_hash[0m[37m[40m([0m[35m[40m'Hello, World!'[0m[37m[40m, [0m[1m[36m[40mNULL[0m[37m[40m) [0m > > >#3 To produce a hash for the parameters where one is an empty string: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mspooky_hash[0m[37m[40m([0m[35m[40m'Hello, World!'[0m[37m[40m, [0m[35m[40m''[0m[37m[40m) [0m > > >#4 To produce a hash for the parameters where one is a number: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mspooky_hash[0m[37m[40m([0m[35m[40m'Hello, World!'[0m[37m[40m, [0m[1m[37m[40m123[0m[37m[40m) [0m > > > >[1m[4msqlite_compileoption_get[0m[4m([0m[4mN[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the N-th compile-time option used to build SQLite or NULL if > N is out of range. >[4mParameter[0m > [4mN[0m The option number to get > > >[1m[4msqlite_compileoption_used[0m[4m([0m[4moption[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns true (1) or false (0) depending on whether or not that > compile-time option was used during the build. >[4mParameter[0m > [4moption[0m The name of the compile-time option. > >[4mExample[0m >#1 To check if the SQLite library was compiled with ENABLE_FTS3: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40msqlite_compileoption_used[0m[37m[40m([0m[35m[40m'ENABLE_FTS3'[0m[37m[40m) [0m > > > >[1m[4msqlite_source_id[0m[4m()[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns a string that identifies the specific version of the source > code that was used to build the SQLite library. > > >[1m[4msqlite_version[0m[4m()[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the version string for the SQLite library that is running. > > >[1m[4msquare[0m[4m([0m[4mnum[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the square of the argument >[4mParameter[0m > [4mnum[0m The number to square >[4mSee Also[0m > [1mabs()[0m, [1macos()[0m, [1macosh()[0m, [1masin()[0m, [1masinh()[0m, [1matan()[0m, [1matan2()[0m, [1matanh()[0m, > [1matn2()[0m, [1mavg()[0m, [1mceil()[0m, [1mdegrees()[0m, [1mexp()[0m, [1mfloor()[0m, [1mlog()[0m, [1mlog10()[0m, > [1mmax()[0m, [1mmin()[0m, [1mpi()[0m, [1mpower()[0m, [1mradians()[0m, [1mround()[0m, [1msign()[0m, [1msum()[0m, > [1mtotal()[0m >[4mExample[0m >#1 To get the square of two: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40msquare[0m[37m[40m([0m[1m[37m[40m2[0m[37m[40m) [0m > > > >[1m[4mstartswith[0m[4m([0m[4mstr[0m[4m, [0m[4mprefix[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Test if a string begins with the given prefix >[4mParameters[0m > [4mstr[0m The string to test > [4mprefix[0m The prefix to check in the string >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, > [1mparse_url()[0m, [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, > [1mregexp_capture_into_json()[0m, [1mregexp_match()[0m, [1mregexp_replace()[0m, > [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, > [1mspooky_hash()[0m, [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, [1munparse_url()[0m, > [1mupper()[0m, [1mxpath()[0m >[4mExamples[0m >#1 To test if the string 'foobar' starts with 'foo': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mstartswith[0m[37m[40m([0m[35m[40m'foobar'[0m[37m[40m, [0m[35m[40m'foo'[0m[37m[40m) [0m > > >#2 To test if the string 'foobar' starts with 'bar': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mstartswith[0m[37m[40m([0m[35m[40m'foobar'[0m[37m[40m, [0m[35m[40m'bar'[0m[37m[40m) [0m > > > >[1m[4mstrfilter[0m[4m([0m[4msource[0m[4m, [0m[4minclude[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the source string with only the characters given in the > second parameter >[4mParameters[0m > [4msource[0m The string to filter > [4minclude[0m The characters to include in the result >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, > [1mparse_url()[0m, [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, > [1mregexp_capture_into_json()[0m, [1mregexp_match()[0m, [1mregexp_replace()[0m, > [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, > [1mspooky_hash()[0m, [1mstartswith()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, > [1munparse_url()[0m, [1mupper()[0m, [1mxpath()[0m >[4mExample[0m >#1 To get the 'b', 'c', and 'd' characters from the string 'abcabc': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mstrfilter[0m[37m[40m([0m[35m[40m'abcabc'[0m[37m[40m, [0m[35m[40m'bcd'[0m[37m[40m) [0m > > > >[1m[4mstrftime[0m[4m([0m[4mformat[0m[4m, [0m[4mtimestring[0m[4m, [0m[4mmodifier[0m[4m, ...)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the date formatted according to the format string specified > as the first argument. >[4mParameters[0m > [4mformat[0m A format string with substitutions similar > to those found in the strftime() standard C library. > [4mtimestring[0m The string to convert to a date with time. > [4mmodifier[0m A transformation that is applied to the > value to the left. >[4mSee Also[0m > [1mdate()[0m, [1mdatetime()[0m, [1mhumanize_duration()[0m, [1mjulianday()[0m, [1mtime()[0m, > [1mtimediff()[0m, [1mtimeslice()[0m >[4mExamples[0m >#1 To get the year from the timestamp '2017-01-02T03:04:05': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mstrftime[0m[37m[40m([0m[35m[40m'%Y'[0m[37m[40m, [0m[35m[40m'2017-01-02T03:04:05'[0m[37m[40m) [0m > > >#2 To create a string with the time from the timestamp '2017-01-02T03:04:05' plus one > minute: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mstrftime[0m[37m[40m([0m[35m[40m'The time is: %H:%M:%S'[0m[37m[40m, [0m[35m[40m'2017-01-02T03:04:05'[0m[37m[40m, [0m[35m[40m'+1 minute'[0m[37m[40m)[0m > > >#3 To create a string with the Julian day from the epoch timestamp 1491341842: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mstrftime[0m[37m[40m([0m[35m[40m'Julian day: %J'[0m[37m[40m, [0m[1m[37m[40m1491341842[0m[37m[40m, [0m[35m[40m'unixepoch'[0m[37m[40m)[0m > > > >[1m[4msubstr[0m[4m([0m[4mstr[0m[4m, [0m[4mstart[0m[4m, [[0m[4msize[0m[4m])[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns a substring of input string X that begins with the Y-th > character and which is Z characters long. >[4mParameters[0m > [4mstr[0m The string to extract a substring from. > [4mstart[0m The index within 'str' that is the start of the > substring. Indexes begin at 1. A negative value means that > the substring is found by counting from the right rather > than the left. > [4msize[0m The size of the substring. If not given, then all > characters through the end of the string are returned. If > the value is negative, then the characters before the start > are returned. >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, > [1mparse_url()[0m, [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, > [1mregexp_capture_into_json()[0m, [1mregexp_match()[0m, [1mregexp_replace()[0m, > [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, > [1mspooky_hash()[0m, [1mstartswith()[0m, [1mstrfilter()[0m, [1mtrim()[0m, [1municode()[0m, > [1munparse_url()[0m, [1mupper()[0m, [1mxpath()[0m >[4mExamples[0m >#1 To get the substring starting at the second character until the end of the string > 'abc': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40msubstr[0m[37m[40m([0m[35m[40m'abc'[0m[37m[40m, [0m[1m[37m[40m2[0m[37m[40m) [0m > > >#2 To get the substring of size one starting at the second character of the string > 'abc': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40msubstr[0m[37m[40m([0m[35m[40m'abc'[0m[37m[40m, [0m[1m[37m[40m2[0m[37m[40m, [0m[1m[37m[40m1[0m[37m[40m) [0m > > >#3 To get the substring starting at the last character until the end of the string > 'abc': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40msubstr[0m[37m[40m([0m[35m[40m'abc'[0m[37m[40m, [0m[1m[37m[40m-1[0m[37m[40m) [0m > > >#4 To get the substring starting at the last character and going backwards one step of > the string 'abc': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40msubstr[0m[37m[40m([0m[35m[40m'abc'[0m[37m[40m, [0m[1m[37m[40m-1[0m[37m[40m, [0m[1m[37m[40m-1[0m[37m[40m) [0m > > > >[1m[4msum[0m[4m([0m[4mX[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the sum of the values in the group as an integer. >[4mParameter[0m > [4mX[0m The values to add. >[4mSee Also[0m > [1mabs()[0m, [1macos()[0m, [1macosh()[0m, [1masin()[0m, [1masinh()[0m, [1matan()[0m, [1matan2()[0m, [1matanh()[0m, > [1matn2()[0m, [1mavg()[0m, [1mceil()[0m, [1mdegrees()[0m, [1mexp()[0m, [1mfloor()[0m, [1mlog()[0m, [1mlog10()[0m, > [1mmax()[0m, [1mmin()[0m, [1mpi()[0m, [1mpower()[0m, [1mradians()[0m, [1mround()[0m, [1msign()[0m, [1msquare()[0m, > [1mtotal()[0m >[4mExample[0m >#1 To sum all of the values in the column 'ex_duration' from the table > 'lnav_example_log': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40msum[0m[37m[40m([0m[37m[40mex_duration[0m[37m[40m) [0m[1m[36m[40mFROM[0m[37m[40m [0m[37m[40mlnav_example_log[0m[37m[40m [0m > > > >[1m[4mtime[0m[4m([0m[4mtimestring[0m[4m, [0m[4mmodifier[0m[4m, ...)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the time in this format: HH:MM:SS. >[4mParameters[0m > [4mtimestring[0m The string to convert to a time. > [4mmodifier[0m A transformation that is applied to the > value to the left. >[4mSee Also[0m > [1mdate()[0m, [1mdatetime()[0m, [1mhumanize_duration()[0m, [1mjulianday()[0m, [1mstrftime()[0m, > [1mtimediff()[0m, [1mtimeslice()[0m >[4mExamples[0m >#1 To get the time portion of the timestamp '2017-01-02T03:04:05': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mtime[0m[37m[40m([0m[35m[40m'2017-01-02T03:04:05'[0m[37m[40m) [0m > > >#2 To get the time portion of the timestamp '2017-01-02T03:04:05' plus one minute: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mtime[0m[37m[40m([0m[35m[40m'2017-01-02T03:04:05'[0m[37m[40m, [0m[35m[40m'+1 minute'[0m[37m[40m) [0m > > >#3 To get the time portion of the epoch timestamp 1491341842: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mtime[0m[37m[40m([0m[1m[37m[40m1491341842[0m[37m[40m, [0m[35m[40m'unixepoch'[0m[37m[40m) [0m > > > >[1m[4mtimediff[0m[4m([0m[4mtime1[0m[4m, [0m[4mtime2[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Compute the difference between two timestamps in seconds >[4mParameters[0m > [4mtime1[0m The first timestamp > [4mtime2[0m The timestamp to subtract from the first >[4mSee Also[0m > [1mdate()[0m, [1mdatetime()[0m, [1mhumanize_duration()[0m, [1mjulianday()[0m, [1mstrftime()[0m, > [1mtime()[0m, [1mtimeslice()[0m >[4mExamples[0m >#1 To get the difference between two timestamps: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mtimediff[0m[37m[40m([0m[35m[40m'2017-02-03T04:05:06'[0m[37m[40m, [0m[35m[40m'2017-02-03T04:05:00'[0m[37m[40m)[0m > > >#2 To get the difference between relative timestamps: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mtimediff[0m[37m[40m([0m[35m[40m'today'[0m[37m[40m, [0m[35m[40m'yesterday'[0m[37m[40m) [0m > > > >[1m[4mtimeslice[0m[4m([0m[4mtime[0m[4m, [0m[4mslice[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Return the start of the slice of time that the given timestamp falls > in. If the time falls outside of the slice, NULL is returned. >[4mParameters[0m > [4mtime[0m The timestamp to get the time slice for. > [4mslice[0m The size of the time slices >[4mSee Also[0m > [1mdate()[0m, [1mdatetime()[0m, [1mhumanize_duration()[0m, [1mjulianday()[0m, [1mstrftime()[0m, > [1mtime()[0m, [1mtimediff()[0m >[4mExamples[0m >#1 To get the timestamp rounded down to the start of the ten minute slice: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mtimeslice[0m[37m[40m([0m[35m[40m'2017-01-01T05:05:00'[0m[37m[40m, [0m[35m[40m'10m'[0m[37m[40m) [0m > > >#2 To group log messages into five minute buckets and count them: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mtimeslice[0m[37m[40m([0m[37m[40mlog_time_msecs[0m[37m[40m, [0m[35m[40m'5m'[0m[37m[40m) [0m[1m[36m[40mAS[0m[37m[40m [0m[37m[40mslice[0m[37m[40m, [0m[1m[37m[40mcount[0m[37m[40m([0m[1m[37m[40m1[0m[37m[40m)[0m > [37m[40m [0m[37m[40m [0m[1m[36m[40mFROM[0m[37m[40m [0m[37m[40mlnav_example_log[0m[37m[40m [0m[1m[36m[40mGROUP[0m[37m[40m [0m[1m[36m[40mBY[0m[37m[40m [0m[37m[40mslice[0m > > >#3 To group log messages by those before 4:30am and after: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mtimeslice[0m[37m[40m([0m[37m[40mlog_time_msecs[0m[37m[40m, [0m[35m[40m'before 4:30am'[0m[37m[40m) [0m[1m[36m[40mAS[0m[37m[40m [0m[37m[40mslice[0m[37m[40m, [0m[1m[37m[40mcount[0m[37m[40m([0m[1m[37m[40m1[0m[37m[40m) [0m[1m[36m[40mFROM[0m > [37m[40m [0m[37m[40mlnav_example_log[0m[37m[40m [0m[1m[36m[40mGROUP[0m[37m[40m [0m[1m[36m[40mBY[0m[37m[40m [0m[37m[40mslice[0m > > > >[1m[4mtotal[0m[4m([0m[4mX[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the sum of the values in the group as a floating-point. >[4mParameter[0m > [4mX[0m The values to add. >[4mSee Also[0m > [1mabs()[0m, [1macos()[0m, [1macosh()[0m, [1masin()[0m, [1masinh()[0m, [1matan()[0m, [1matan2()[0m, [1matanh()[0m, > [1matn2()[0m, [1mavg()[0m, [1mceil()[0m, [1mdegrees()[0m, [1mexp()[0m, [1mfloor()[0m, [1mlog()[0m, [1mlog10()[0m, > [1mmax()[0m, [1mmin()[0m, [1mpi()[0m, [1mpower()[0m, [1mradians()[0m, [1mround()[0m, [1msign()[0m, [1msquare()[0m, > [1msum()[0m >[4mExample[0m >#1 To total all of the values in the column 'ex_duration' from the table > 'lnav_example_log': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mtotal[0m[37m[40m([0m[37m[40mex_duration[0m[37m[40m) [0m[1m[36m[40mFROM[0m[37m[40m [0m[37m[40mlnav_example_log[0m[37m[40m [0m > > > >[1m[4mtotal_changes[0m[4m()[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the number of row changes caused by INSERT, UPDATE or DELETE > statements since the current database connection was opened. > > >[1m[4mtrim[0m[4m([0m[4mstr[0m[4m, [[0m[4mchars[0m[4m])[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns a string formed by removing any and all characters that > appear in the second argument from the left and right sides of the > first. >[4mParameters[0m > [4mstr[0m The string to trim characters from the left and > right sides. > [4mchars[0m The characters to trim. Defaults to spaces. >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, > [1mparse_url()[0m, [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, > [1mregexp_capture_into_json()[0m, [1mregexp_match()[0m, [1mregexp_replace()[0m, > [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, > [1mspooky_hash()[0m, [1mstartswith()[0m, [1mstrfilter()[0m, [1msubstr()[0m, [1municode()[0m, > [1munparse_url()[0m, [1mupper()[0m, [1mxpath()[0m >[4mExamples[0m >#1 To trim spaces from the start and end of the string ' abc ': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mtrim[0m[37m[40m([0m[35m[40m' abc '[0m[37m[40m) [0m > > >#2 To trim the characters '-' and '+' from the string '-+abc+-': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mtrim[0m[37m[40m([0m[35m[40m'-+abc+-'[0m[37m[40m, [0m[35m[40m'-+'[0m[37m[40m) [0m > > > >[1m[4mtypeof[0m[4m([0m[4mX[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns a string that indicates the datatype of the expression X: > "null", "integer", "real", "text", or "blob". >[4mParameter[0m > [4mX[0m The expression to check. > >[4mExamples[0m >#1 To get the type of the number 1: > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mtypeof[0m[37m[40m([0m[1m[37m[40m1[0m[37m[40m) [0m > > >#2 To get the type of the string 'abc': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mtypeof[0m[37m[40m([0m[35m[40m'abc'[0m[37m[40m) [0m > > > >[1m[4municode[0m[4m([0m[4mX[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns the numeric unicode code point corresponding to the first > character of the string X. >[4mParameter[0m > [4mX[0m The string to examine. >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, > [1mparse_url()[0m, [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, > [1mregexp_capture_into_json()[0m, [1mregexp_match()[0m, [1mregexp_replace()[0m, > [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, > [1mspooky_hash()[0m, [1mstartswith()[0m, [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, > [1munparse_url()[0m, [1mupper()[0m, [1mxpath()[0m >[4mExample[0m >#1 To get the unicode code point for the first character of 'abc': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40municode[0m[37m[40m([0m[35m[40m'abc'[0m[37m[40m) [0m > > > >[1m[4munlikely[0m[4m([0m[4mvalue[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Short-hand for likelihood(X, 0.0625) >[4mParameter[0m > [4mvalue[0m The boolean value to return > > >[1m[4munparse_url[0m[4m([0m[4mobj[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Convert a JSON object containing the parts of a URL into a URL > string >[4mParameter[0m > [4mobj[0m The JSON object containing the URL parts >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, > [1mparse_url()[0m, [1mparse_url()[0m, [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, > [1mregexp_capture_into_json()[0m, [1mregexp_match()[0m, [1mregexp_replace()[0m, > [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, > [1mspooky_hash()[0m, [1mstartswith()[0m, [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, > [1mupper()[0m, [1mxpath()[0m >[4mExample[0m >#1 To unparse the object '{"scheme": "https", "host": "example.com"}': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40munparse_url[0m[37m[40m([0m[35m[40m'{"scheme": "https", "host": "example.com"}'[0m[37m[40m)[0m > > > >[1m[4mupper[0m[4m([0m[4mstr[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns a copy of the given string with all ASCII characters > converted to upper case. >[4mParameter[0m > [4mstr[0m The string to convert. >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, > [1mparse_url()[0m, [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, > [1mregexp_capture_into_json()[0m, [1mregexp_match()[0m, [1mregexp_replace()[0m, > [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, > [1mspooky_hash()[0m, [1mstartswith()[0m, [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, > [1munparse_url()[0m, [1mxpath()[0m >[4mExample[0m >#1 To uppercase the string 'aBc': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mupper[0m[37m[40m([0m[35m[40m'aBc'[0m[37m[40m) [0m > > > >[1m[4mxpath[0m[4m([0m[4mxpath[0m[4m, [0m[4mxmldoc[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > A table-valued function that executes an xpath expression over an > XML string and returns the selected values. >[4mParameters[0m > [4mxpath[0m The XPATH expression to evaluate over the XML > document. > [4mxmldoc[0m The XML document as a string. >[4mResults[0m > [4mresult[0m The result of the XPATH expression. > [4mnode_path[0m The absolute path to the node containing the > result. > [4mnode_attr[0m The node's attributes stored in JSON object. > [4mnode_text[0m The node's text value. >[4mSee Also[0m > [1manonymize()[0m, [1mchar()[0m, [1mcharindex()[0m, [1mdecode()[0m, [1mencode()[0m, [1mendswith()[0m, > [1mextract()[0m, [1mgroup_concat()[0m, [1mgroup_spooky_hash()[0m, [1mgunzip()[0m, [1mgzip()[0m, > [1mhumanize_duration()[0m, [1mhumanize_file_size()[0m, [1minstr()[0m, [1mleftstr()[0m, > [1mlength()[0m, [1mlogfmt2json()[0m, [1mlower()[0m, [1mltrim()[0m, [1mpadc()[0m, [1mpadl()[0m, [1mpadr()[0m, > [1mparse_url()[0m, [1mprintf()[0m, [1mproper()[0m, [1mregexp_capture()[0m, > [1mregexp_capture_into_json()[0m, [1mregexp_match()[0m, [1mregexp_replace()[0m, > [1mreplace()[0m, [1mreplicate()[0m, [1mreverse()[0m, [1mrightstr()[0m, [1mrtrim()[0m, [1msparkline()[0m, > [1mspooky_hash()[0m, [1mstartswith()[0m, [1mstrfilter()[0m, [1msubstr()[0m, [1mtrim()[0m, [1municode()[0m, > [1munparse_url()[0m, [1mupper()[0m >[4mExamples[0m >#1 To select the XML nodes on the path '/abc/def': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40m*[0m[37m[40m [0m[1m[36m[40mFROM[0m[37m[40m [0m[1m[37m[40mxpath[0m[37m[40m([0m[35m[40m'/abc/def'[0m[37m[40m, [0m[35m[40m'<abc><def a="b">Hello</def><def>Bye</def></abc>'[0m[37m[40m)[0m > > >#2 To select all 'a' attributes on the path '/abc/def': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40m*[0m[37m[40m [0m[1m[36m[40mFROM[0m[37m[40m [0m[1m[37m[40mxpath[0m[37m[40m([0m[35m[40m'/abc/def/@a'[0m[37m[40m, [0m[35m[40m'<abc><def a="b">Hello</def><def>Bye</def></abc>'[0m[37m[40m)[0m > > >#3 To select the text nodes on the path '/abc/def': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40m*[0m[37m[40m [0m[1m[36m[40mFROM[0m[37m[40m [0m[1m[37m[40mxpath[0m[37m[40m([0m[35m[40m'/abc/def/text()'[0m[37m[40m, [0m[35m[40m'<abc><def a="b">Hello ★</def></abc>'[0m[37m[40m)[0m > > > >[1m[4myaml_to_json[0m[4m([0m[4myaml[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Convert a YAML document to a JSON-encoded string >[4mParameter[0m > [4myaml[0m The YAML value to convert to JSON. >[4mSee Also[0m > [1mjget()[0m, [1mjson_concat()[0m, [1mjson_contains()[0m, [1mjson_group_array()[0m, > [1mjson_group_object()[0m >[4mExample[0m >#1 To convert the document "abc: def": > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40myaml_to_json[0m[37m[40m([0m[35m[40m'abc: def'[0m[37m[40m) [0m > > > >[1m[4mzeroblob[0m[4m([0m[4mN[0m[4m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Returns a BLOB consisting of N bytes of 0x00. >[4mParameter[0m > [4mN[0m The size of the BLOB. > > >[1m[4m[36mATTACH[0m[4m [0m[1m[4m[36mDATABASE[0m[4m [0m[4mfilename[0m[4m [0m[1m[4m[36mAS[0m[4m [0m[4mschema-name[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Attach a database file to the current connection. >[4mParameters[0m > [4mfilename[0m The path to the database file. > [4mschema-name[0m The prefix for tables in this database. > >[4mExample[0m >#1 To attach the database file '/tmp/customers.db' with the name customers: > [37m[40m;[0m[1m[36m[40mATTACH[0m[37m[40m [0m[1m[36m[40mDATABASE[0m[37m[40m [0m[35m[40m'/tmp/customers.db'[0m[37m[40m [0m[1m[36m[40mAS[0m[37m[40m [0m[37m[40mcustomers[0m[37m[40m [0m > > > >[1m[4m[36mCASE[0m[4m [[0m[4mbase-expr[0m[4m] [0m[1m[4m[36mWHEN[0m[4m [0m[4mcmp-expr[0m[4m1[0m[4m [0m[1m[4m[36mTHEN[0m[4m [0m[4mthen-expr[0m[4m1[0m[4m [... [0m[1m[4m[36mWHEN[0m[4m [0m[4mcmp-expr[0m[4mN[0m[4m [0m[1m[4m[36mTHEN[0m[4m [0m[4mthen-expr[0m[4mN[0m[4m] [[0m[1m[4m[36mELSE[0m[4m [0m[4melse-expr[0m[4m] [0m[1m[4m[36mEND[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Evaluate a series of expressions in order until one evaluates to > true and then return it's result. Similar to an IF-THEN-ELSE > construct in other languages. >[4mParameters[0m > [4mbase-expr[0m The base expression that is used for > comparison in the branches > [4mcmp-expr[0m The expression to test if this branch should > be taken > [4melse-expr[0m The result of this CASE if no branches > matched. > >[4mExample[0m >#1 To evaluate the number one and return the string 'one': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[36m[40mCASE[0m[37m[40m [0m[1m[37m[40m1[0m[37m[40m [0m[1m[36m[40mWHEN[0m[37m[40m [0m[1m[37m[40m0[0m[37m[40m [0m[1m[36m[40mTHEN[0m[37m[40m [0m[35m[40m'zero'[0m[37m[40m [0m[1m[36m[40mWHEN[0m[37m[40m [0m[1m[37m[40m1[0m[37m[40m [0m[1m[36m[40mTHEN[0m[37m[40m [0m[35m[40m'one'[0m[37m[40m [0m[1m[36m[40mEND[0m > > > >[1m[4m[36mCREATE[0m[4m [[0m[4mTEMP[0m[4m] [0m[1m[4m[36mVIEW[0m[4m [[0m[4mIF NOT EXISTS[0m[4m] [[0m[4mschema-name.[0m[4m] [0m[4mview-name[0m[4m [0m[1m[4m[36mAS[0m[4m [0m[4mselect-stmt[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Assign a name to a SELECT statement >[4mParameters[0m > [4mIF NOT EXISTS[0m Do not create the view if it already > exists > [4mschema-name.[0m The database to create the view in > [4mview-name[0m The name of the view > [4mselect-stmt[0m The SELECT statement the view > represents > > >[1m[4m[36mDELETE[0m[4m [0m[1m[4m[36mFROM[0m[4m [0m[4mtable-name[0m[4m [[0m[1m[4m[36mWHERE[0m[4m [0m[4mcond[0m[4m][0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Delete rows from a table >[4mParameters[0m > [4mtable-name[0m The name of the table > [4mcond[0m The conditions used to delete the rows. > > >[1m[4m[36mDETACH[0m[4m [0m[1m[4m[36mDATABASE[0m[4m [0m[4mschema-name[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Detach a database from the current connection. >[4mParameter[0m > [4mschema-name[0m The prefix for tables in this database. > >[4mExample[0m >#1 To detach the database named 'customers': > [37m[40m;[0m[1m[36m[40mDETACH[0m[37m[40m [0m[1m[36m[40mDATABASE[0m[37m[40m [0m[37m[40mcustomers[0m[37m[40m [0m > > > >[1m[4m[36mDROP[0m[4m [0m[1m[4m[36mVIEW[0m[4m [[0m[4mIF EXISTS[0m[4m] [[0m[4mschema-name.[0m[4m] [0m[4mview-name[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Drop a view >[4mParameters[0m > > >[1m[4m[36mINSERT[0m[4m [0m[1m[4m[36mINTO[0m[4m [[0m[4mschema-name.[0m[4m] [0m[4mtable-name[0m[4m [[0m[1m[4m[36m([0m[4m [0m[4mcolumn-name[0m[4m1[0m[4m [, ... [0m[4mcolumn-name[0m[4mN[0m[4m] [0m[1m[4m[36m)[0m[4m] [0m[1m[4m[36mVALUES[0m[4m [0m[1m[4m[36m([0m[4m [0m[4mexpr[0m[4m1[0m[4m [, ... [0m[4mexpr[0m[4mN[0m[4m] [0m[1m[4m[36m)[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Insert rows into a table >[4mParameters[0m > >[4mExample[0m >#1 To insert the pair containing 'MSG' and 'HELLO, WORLD!' into the > 'environ' table: > [37m[40m;[0m[1m[36m[40mINSERT[0m[37m[40m [0m[1m[36m[40mINTO[0m[37m[40m [0m[37m[40menviron[0m[37m[40m [0m[1m[36m[40mVALUES[0m[37m[40m ([0m[35m[40m'MSG'[0m[37m[40m, [0m[35m[40m'HELLO, WORLD!'[0m[37m[40m)[0m > > > >[1m[4m[36mOVER[0m[4m [0m[4mwindow-name[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Executes the preceding function over a window >[4mParameter[0m > [4mwindow-name[0m The name of the window definition > > >[1m[4m[36mSELECT[0m[4m [0m[4mresult-column[0m[4m1[0m[4m [, ... [0m[4mresult-column[0m[4mN[0m[4m] [[0m[1m[4m[36mFROM[0m[4m [0m[4mtable[0m[4m1[0m[4m [, ... [0m[4mtable[0m[4mN[0m[4m]] [[0m[1m[4m[36mWHERE[0m[4m [0m[4mcond[0m[4m] [[0m[1m[4m[36mGROUP BY[0m[4m [0m[4mgrouping-expr[0m[4m1[0m[4m [, ... [0m[4mgrouping-expr[0m[4mN[0m[4m]] [[0m[1m[4m[36mORDER BY[0m[4m [0m[4mordering-term[0m[4m1[0m[4m [, ... [0m[4mordering-term[0m[4mN[0m[4m]] [[0m[1m[4m[36mLIMIT[0m[4m [0m[4mlimit-expr[0m[4m1[0m[4m [, ... [0m[4mlimit-expr[0m[4mN[0m[4m]][0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Query the database and return zero or more rows of data. >[4mParameters[0m > [4mresult-column[0m The expression used to generate a > result for this column. > [4mtable[0m The table(s) to query for data > [4mcond[0m The conditions used to select the > rows to return. > [4mgrouping-expr[0m The expression to use when grouping > rows. > [4mordering-term[0m The values to use when ordering the > result set. > [4mlimit-expr[0m The maximum number of rows to > return. > >[4mExample[0m >#1 To select all of the columns from the table 'syslog_log': > [37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40m*[0m[37m[40m [0m[1m[36m[40mFROM[0m[37m[40m [0m[37m[40msyslog_log[0m[37m[40m [0m > > > >[1m[4m[36mUPDATE[0m[4m [0m[4mtable[0m[4m [0m[1m[4m[36mSET[0m[4m [0m[4mcolumn-name[0m[4m1[0m[4m [0m[1m[4m[36m=[0m[4m [0m[4mexpr[0m[4m1[0m[4m [, ... [0m[4mcolumn-name[0m[4mN[0m[4m [0m[1m[4m[36m=[0m[4m [0m[4mexpr[0m[4mN[0m[4m] [[0m[1m[4m[36mWHERE[0m[4m [0m[4mcond[0m[4m][0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Modify a subset of values in zero or more rows of the given table >[4mParameters[0m > [4mtable[0m The table to update > [4mcolumn-name[0m The columns in the table to update. > [4mcond[0m The condition used to determine whether > a row should be updated. > >[4mExample[0m >#1 To mark the syslog message at line 40: > [37m[40m;[0m[1m[36m[40mUPDATE[0m[37m[40m [0m[37m[40msyslog_log[0m[37m[40m [0m[1m[36m[40mSET[0m[37m[40m [0m[37m[40mlog_mark[0m[37m[40m [0m[1m[37m[40m=[0m[37m[40m [0m[1m[37m[40m1[0m[37m[40m [0m[1m[36m[40mWHERE[0m[37m[40m [0m[37m[40mlog_line[0m[37m[40m [0m[1m[37m[40m=[0m[37m[40m [0m[1m[37m[40m40[0m > > > >[1m[4m[36mWITH[0m[4m [[0m[1m[4m[36mRECURSIVE[0m[4m] [0m[4mcte-table-name[0m[4m [0m[1m[4m[36mAS[0m[4m [0m[4mselect-stmt[0m >ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Create a temporary view that exists only for the duration of a SQL > statement. >[4mParameters[0m > [4mcte-table-name[0m The name for the temporary table. > [4mselect-stmt[0m The SELECT statement used to > populate the temporary table. > >[0;32mEND[0m test_cmds.sh_b6a3bb78e9d60e5e1f5ce5b18e40d2f1662707ab.out >[0;31mBEGIN[0m test_cmds.sh_b6a3bb78e9d60e5e1f5ce5b18e40d2f1662707ab.err >[0;31mEND[0m test_cmds.sh_b6a3bb78e9d60e5e1f5ce5b18e40d2f1662707ab.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: env TZ=UTC ../src/lnav-test -n -c :goto 2011-11-03 00:19:39 -c ;SELECT log_top_line() {test_dir}/logfile_bro_http.log.0 >[0;32mBEGIN[0m test_cmds.sh_d836c84398c831c976df46f46fe3bf5983c44c37.out >[0;32mEND[0m test_cmds.sh_d836c84398c831c976df46f46fe3bf5983c44c37.out >OUT: test: env TZ=UTC ../src/lnav-test -n -c :goto 2011-11-03 00:19:39 -c ;SELECT log_top_line() {test_dir}/logfile_bro_http.log.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_cmds.sh_d836c84398c831c976df46f46fe3bf5983c44c37.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_cmds.sh_d836c84398c831c976df46f46fe3bf5983c44c37.out 2025-01-17 20:39:31.172228774 +0100 >@@ -1,2 +0,0 @@ >-[1m[4mlog_top_line() [0m >- 51 >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_cmds.sh_d836c84398c831c976df46f46fe3bf5983c44c37.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-19-13-20.3000.log >========================= >[0;31mEND[0m test_cmds.sh_d836c84398c831c976df46f46fe3bf5983c44c37.err >ERR: test: env TZ=UTC ../src/lnav-test -n -c :goto 2011-11-03 00:19:39 -c ;SELECT log_top_line() {test_dir}/logfile_bro_http.log.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_cmds.sh_d836c84398c831c976df46f46fe3bf5983c44c37.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_cmds.sh_d836c84398c831c976df46f46fe3bf5983c44c37.err 2025-01-17 20:39:31.186229336 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-19-13-20.3000.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :goto 1 -c :mark -c :hide-unmarked-lines -c :goto 0 {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_305b1dfdfe785b945df4220aad6671ae1d364f55.out >[7m[31m192.168.202.254[0m[7m[31m - [0m[7m[31m-[0m[7m[31m [[0m[7m[31m20/Jul/2009:22:59:29 +0000[0m[7m[31m] "[0m[7m[31mGET[0m[7m[31m [0m[7m[31m/vmw/vSphere/default/vmkboot.gz[0m[7m[31m [0m[7m[31mHTTP/1.0[0m[7m[31m" 404 46210 "[0m[7m[31m-[0m[7m[31m" "[0m[7m[31mgPXE/0.9.7[0m[7m[31m"[0m >[0;32mEND[0m test_cmds.sh_305b1dfdfe785b945df4220aad6671ae1d364f55.out >[0;31mBEGIN[0m test_cmds.sh_305b1dfdfe785b945df4220aad6671ae1d364f55.err >[0;31mEND[0m test_cmds.sh_305b1dfdfe785b945df4220aad6671ae1d364f55.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :unix-time {test_dir}/logfile_access_log.* >[0;32mBEGIN[0m test_cmds.sh_876116da8ab46c0c8a212ce230d1b8a13970f78f.out >[0;32mEND[0m test_cmds.sh_876116da8ab46c0c8a212ce230d1b8a13970f78f.out >[0;31mBEGIN[0m test_cmds.sh_876116da8ab46c0c8a212ce230d1b8a13970f78f.err >[1m[31mâ error[0m: expecting a unix time value >[36m --> [0m[1mcommand-option[0m:1 >[36m | [0m[37m[40m:unix-time [0m >[36m =[0m [36mhelp[0m: [4m:[0m[1m[4munix-time[0m[4m [0m[4mseconds[0m > ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Convert epoch time to a human-readable form >[0;31mEND[0m test_cmds.sh_876116da8ab46c0c8a212ce230d1b8a13970f78f.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :unix-time abc {test_dir}/logfile_access_log.* >[0;32mBEGIN[0m test_cmds.sh_c72aed622c19d493968e33f20d5dde3838a4258f.out >[0;32mEND[0m test_cmds.sh_c72aed622c19d493968e33f20d5dde3838a4258f.out >[0;31mBEGIN[0m test_cmds.sh_c72aed622c19d493968e33f20d5dde3838a4258f.err >[1m[31mâ error[0m: invalid unix time -- abc >[36m --> [0m[1mcommand-option[0m:1 >[36m | [0m[37m[40m:[0m[1m[36m[40munix-time[0m[37m[40m abc [0m >[36m =[0m [36mhelp[0m: [4m:[0m[1m[4munix-time[0m[4m [0m[4mseconds[0m > ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Convert epoch time to a human-readable form >[0;31mEND[0m test_cmds.sh_c72aed622c19d493968e33f20d5dde3838a4258f.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: env TZ=UTC ../src/lnav-test -n -c :unix-time 1612072409 {test_dir}/logfile_access_log.* >[0;32mBEGIN[0m test_cmds.sh_be1d9628fc447b6f17121d9457ea1602afe8f3f3.out >Sun Jan 31 05:53:29 2021 +0000 UTC -- 1612072409 >[0;32mEND[0m test_cmds.sh_be1d9628fc447b6f17121d9457ea1602afe8f3f3.out >[0;31mBEGIN[0m test_cmds.sh_be1d9628fc447b6f17121d9457ea1602afe8f3f3.err >[0;31mEND[0m test_cmds.sh_be1d9628fc447b6f17121d9457ea1602afe8f3f3.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: env TZ=UTC ../src/lnav-test -n -c :current-time {test_dir}/logfile_access_log.* >[0;32mBEGIN[0m test_cmds.sh_b7fcd26c45c850c3d43ce25b1f610a311eb898c5.out >Thu Jun 06 19:13:20 2013 +0000 UTC -- 1370546000 >[0;32mEND[0m test_cmds.sh_b7fcd26c45c850c3d43ce25b1f610a311eb898c5.out >[0;31mBEGIN[0m test_cmds.sh_b7fcd26c45c850c3d43ce25b1f610a311eb898c5.err >[0;31mEND[0m test_cmds.sh_b7fcd26c45c850c3d43ce25b1f610a311eb898c5.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -d /tmp/lnav.err -c :write-to {test_dir}/logfile_access_log.* >[0;32mBEGIN[0m test_cmds.sh_2cd167954a3be3e130e5f9601b72794a856cef92.out >[0;32mEND[0m test_cmds.sh_2cd167954a3be3e130e5f9601b72794a856cef92.out >[0;31mBEGIN[0m test_cmds.sh_2cd167954a3be3e130e5f9601b72794a856cef92.err >[1m[31mâ error[0m: expecting file name or '-' to write to the terminal >[36m --> [0m[1mcommand-option[0m:1 >[36m | [0m[37m[40m:write-to [0m >[36m =[0m [36mhelp[0m: [4m:[0m[1m[4mwrite-to[0m[4m [[0m[4m--anonymize[0m[4m] [0m[4mpath[0m > ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Overwrite the given file with any marked lines in the current view >[0;31mEND[0m test_cmds.sh_2cd167954a3be3e130e5f9601b72794a856cef92.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -d /tmp/lnav.err -c ;SELECT 1 AS c1, 'Hello ' || char(10) || 'World!' AS c2 -c :write-csv-to - {test_dir}/logfile_access_log.* >[0;32mBEGIN[0m test_cmds.sh_0b41fe57743ba0be088037d9ba29bc465e7c9bf9.out >[0;32mEND[0m test_cmds.sh_0b41fe57743ba0be088037d9ba29bc465e7c9bf9.out >OUT: test: ../src/lnav-test -n -d /tmp/lnav.err -c ;SELECT 1 AS c1, 'Hello ' || char(10) || 'World!' AS c2 -c :write-csv-to - {test_dir}/logfile_access_log.* >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_cmds.sh_0b41fe57743ba0be088037d9ba29bc465e7c9bf9.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_cmds.sh_0b41fe57743ba0be088037d9ba29bc465e7c9bf9.out 2025-01-17 20:39:32.038263532 +0100 >@@ -1,3 +0,0 @@ >-c1,c2 >-1,"Hello >-World!" >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_cmds.sh_0b41fe57743ba0be088037d9ba29bc465e7c9bf9.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.5913.log >========================= >[0;31mEND[0m test_cmds.sh_0b41fe57743ba0be088037d9ba29bc465e7c9bf9.err >ERR: test: ../src/lnav-test -n -d /tmp/lnav.err -c ;SELECT 1 AS c1, 'Hello ' || char(10) || 'World!' AS c2 -c :write-csv-to - {test_dir}/logfile_access_log.* >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_cmds.sh_0b41fe57743ba0be088037d9ba29bc465e7c9bf9.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_cmds.sh_0b41fe57743ba0be088037d9ba29bc465e7c9bf9.err 2025-01-17 20:39:32.050264014 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.5913.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -d /tmp/lnav.err -c ;SELECT 1 AS c1, 'Hello, World!' AS c2 -c :write-table-to - {test_dir}/logfile_access_log.* >[0;32mBEGIN[0m test_cmds.sh_7cb644890c4b945ff3f1e15c86a58c85cb5425c0.out >[0;32mEND[0m test_cmds.sh_7cb644890c4b945ff3f1e15c86a58c85cb5425c0.out >OUT: test: ../src/lnav-test -n -d /tmp/lnav.err -c ;SELECT 1 AS c1, 'Hello, World!' AS c2 -c :write-table-to - {test_dir}/logfile_access_log.* >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_cmds.sh_7cb644890c4b945ff3f1e15c86a58c85cb5425c0.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_cmds.sh_7cb644890c4b945ff3f1e15c86a58c85cb5425c0.out 2025-01-17 20:39:32.164268589 +0100 >@@ -1,5 +0,0 @@ >-ââââ³ââââââââââââââ >-âc1â c2 â >-â¡âââââââââââââââââ© >-â 1âHello, World!â >-ââââ´ââââââââââââââ >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_cmds.sh_7cb644890c4b945ff3f1e15c86a58c85cb5425c0.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.6185.log >========================= >[0;31mEND[0m test_cmds.sh_7cb644890c4b945ff3f1e15c86a58c85cb5425c0.err >ERR: test: ../src/lnav-test -n -d /tmp/lnav.err -c ;SELECT 1 AS c1, 'Hello, World!' AS c2 -c :write-table-to - {test_dir}/logfile_access_log.* >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_cmds.sh_7cb644890c4b945ff3f1e15c86a58c85cb5425c0.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_cmds.sh_7cb644890c4b945ff3f1e15c86a58c85cb5425c0.err 2025-01-17 20:39:32.176269071 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.6185.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -d /tmp/lnav.err -c ;SELECT 1 AS c1, 'Hello, World!' AS c2 -c :write-raw-to - {test_dir}/logfile_access_log.* >[0;32mBEGIN[0m test_cmds.sh_85ae6ac1eb9a8378f7a6c39659f52671218ce64b.out >[0;32mEND[0m test_cmds.sh_85ae6ac1eb9a8378f7a6c39659f52671218ce64b.out >OUT: test: ../src/lnav-test -n -d /tmp/lnav.err -c ;SELECT 1 AS c1, 'Hello, World!' AS c2 -c :write-raw-to - {test_dir}/logfile_access_log.* >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_cmds.sh_85ae6ac1eb9a8378f7a6c39659f52671218ce64b.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_cmds.sh_85ae6ac1eb9a8378f7a6c39659f52671218ce64b.out 2025-01-17 20:39:32.288273566 +0100 >@@ -1 +0,0 @@ >-1Hello, World! >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_cmds.sh_85ae6ac1eb9a8378f7a6c39659f52671218ce64b.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.6380.log >========================= >[0;31mEND[0m test_cmds.sh_85ae6ac1eb9a8378f7a6c39659f52671218ce64b.err >ERR: test: ../src/lnav-test -n -d /tmp/lnav.err -c ;SELECT 1 AS c1, 'Hello, World!' AS c2 -c :write-raw-to - {test_dir}/logfile_access_log.* >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_cmds.sh_85ae6ac1eb9a8378f7a6c39659f52671218ce64b.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_cmds.sh_85ae6ac1eb9a8378f7a6c39659f52671218ce64b.err 2025-01-17 20:39:32.301274088 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.6380.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -d /tmp/lnav.err -c :write-view-to - {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_83654557317602d2e00adde1e5cba190d9db0dff.out >192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7" >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkboot.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7" >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_cmds.sh_83654557317602d2e00adde1e5cba190d9db0dff.out >[0;31mBEGIN[0m test_cmds.sh_83654557317602d2e00adde1e5cba190d9db0dff.err >[0;31mEND[0m test_cmds.sh_83654557317602d2e00adde1e5cba190d9db0dff.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -d /tmp/lnav.err -c :write-view-to --anonymize - {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_df6f4cea16bb8f20e6408fe4b40335e6de8a7f18.out >10.0.0.1 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/aberrant HTTP/1.0" 200 134 "-" "gPXE/0.9.7" >10.0.0.1 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/abject/ablaze/able.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7" >10.0.0.1 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/abject/ablaze/aboard.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_cmds.sh_df6f4cea16bb8f20e6408fe4b40335e6de8a7f18.out >[0;31mBEGIN[0m test_cmds.sh_df6f4cea16bb8f20e6408fe4b40335e6de8a7f18.err >[0;31mEND[0m test_cmds.sh_df6f4cea16bb8f20e6408fe4b40335e6de8a7f18.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -d /tmp/lnav.err -c :write-view-to --anonymize - {test_dir}/logfile_pretty.0 >[0;32mBEGIN[0m test_cmds.sh_2e67bdbbc9a14aa772b2a9f755ed8f8124708558.out >Apr 7 00:49:42 Tim-Abaft-iMac abashed[0]: Aberrant [abhorrent5701Aberrant]: Link up on en0, 1-Aboard, Full-abortive, Abounding flow-abrupt, Absent [796d,2301,0de1,0300,cde1,3800] >Apr 7 05:49:53 Tim-Abaft-iMac.absorbing Abstracted[17212]: -[absurd abundant] absurd abusive accept: <acceptable:0x511f30 > accessible=<KSOmahaServer:0x510d80> > url="https://achondroplasia.example.com/account/accurate2" > achiever=0 > acid=1 > acidic=1 > acoustic=1 > body= > <?xml version="1.0" encoding="UTF-8" standalone="yes"?> > <o:gupdate xmlns:o="http://acinetobacter-infections.example.com/accurate2/acrid" protocol="2.0" version="Act-1.2.0.7709" ismachine="1" requestid="{1ca0a968-cbe9-e75b-d00b-4859609878ea}"> > <o:os platform="mac" version="activity" sp="10.10.2_x86_64h"></o:os> > <o:app appid="com.actually.Ad hoc" version="1.2.0.7709" lang="en-us" installage="180" brand="GGLG"> > <o:ping r="1" a="1"></o:ping> > <o:updatecheck></o:updatecheck> > </o:app> > </o:gupdate> > > >Apr 7 07:31:56 Tim-Abaft-iMac.absorbing Add[36403]: ADDICTED: The Adhesive adjoining adjustment is admit 10.9.2 adorable of 10.10.2. Use advice's afford afraid to get afterthought aggressive agonizing agree > Call agreement: >Apr 7 07:31:56 Tim-Abaft-iMac.absorbing Add[36403]: 0 Ahead 0x00007fff8a9b3d9b ___Adhesive_Air_airplane_airport + 113 >Apr 7 07:31:56 Tim-Abaft-iMac.absorbing Add[36403]: 1 ajar.alarm 0x00007fff8bc84c13 _alcoholic_alert_alike + 8 >Apr 7 07:32:56 Tim-Abaft-iMac.absorbing alive[234]: Bad data { abc, 123, 456 )}] >[0;32mEND[0m test_cmds.sh_2e67bdbbc9a14aa772b2a9f755ed8f8124708558.out >[0;31mBEGIN[0m test_cmds.sh_2e67bdbbc9a14aa772b2a9f755ed8f8124708558.err >[0;31mEND[0m test_cmds.sh_2e67bdbbc9a14aa772b2a9f755ed8f8124708558.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -d /tmp/lnav.err -c :filter-expr timeslice(:log_time_msecs, 'bad') is not null {test_dir}/logfile_multiline.0 >[0;32mBEGIN[0m test_cmds.sh_12b4cb9bd6586f9694100db76734b19a75158eab.out >[0;32mEND[0m test_cmds.sh_12b4cb9bd6586f9694100db76734b19a75158eab.out >[0;31mBEGIN[0m test_cmds.sh_12b4cb9bd6586f9694100db76734b19a75158eab.err >[1m[31mâ error[0m: call to [1m[4mtimeslice[0m[4m([0m[4mtime[0m[4m, [0m[4mslice[0m[4m)[0m failed > [1m[31mreason[0m: unable to parse time slice value: bad -- Unrecognized input >[36m --> [0m[1mcommand-option[0m:1 >[36m | [0m[37m[40m:[0m[1m[36m[40mfilter-expr[0m[37m[40m [0m[1m[37m[40mtimeslice[0m[37m[40m([0m[37m[40m:log_time_msecs[0m[37m[40m, [0m[35m[40m'bad'[0m[37m[40m) [0m[1m[36m[40mis[0m[37m[40m [0m[1m[36m[40mnot[0m[37m[40m [0m[1m[36m[40mnull[0m >[36m =[0m [36mhelp[0m: [4m:[0m[1m[4mfilter-expr[0m[4m [0m[4mexpr[0m > ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Set the filter expression >[0;31mEND[0m test_cmds.sh_12b4cb9bd6586f9694100db76734b19a75158eab.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -d /tmp/lnav.err -c :filter-expr :log_text LIKE '%How are%' {test_dir}/logfile_multiline.0 >[0;32mBEGIN[0m test_cmds.sh_ff6faebbde8586e04bfadba14a3d2bb4451784ad.out >2009-07-20 22:59:27,672:DEBUG:Hello, World! > How are you today? >[0;32mEND[0m test_cmds.sh_ff6faebbde8586e04bfadba14a3d2bb4451784ad.out >[0;31mBEGIN[0m test_cmds.sh_ff6faebbde8586e04bfadba14a3d2bb4451784ad.err >[0;31mEND[0m test_cmds.sh_ff6faebbde8586e04bfadba14a3d2bb4451784ad.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -d /tmp/lnav.err -c :filter-expr not json_contains(:log_tags, '#bad') -c :goto 0 -c :tag #bad {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_145126309709179759926289caf729703ef6e1c6.out >[31m192.168.202.254[0m[31m - [0m[31m-[0m[31m [[0m[31m20/Jul/2009:22:59:29 +0000[0m[31m] "[0m[31mGET[0m[31m [0m[31m/vmw/vSphere/default/vmkboot.gz[0m[31m [0m[31mHTTP/1.0[0m[31m" 404 46210 "[0m[31m-[0m[31m" "[0m[31mgPXE/0.9.7[0m[31m"[0m >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_cmds.sh_145126309709179759926289caf729703ef6e1c6.out >[0;31mBEGIN[0m test_cmds.sh_145126309709179759926289caf729703ef6e1c6.err >[0;31mEND[0m test_cmds.sh_145126309709179759926289caf729703ef6e1c6.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -d /tmp/lnav.err -c :filter-expr :sc_bytes > 2000 {test_dir}/logfile_access_log.* >[0;32mBEGIN[0m test_cmds.sh_3b20a298e2c059d7f6045cbc0c07ca3db3917695.out >[31m192.168.202.254[0m[31m - [0m[31m-[0m[31m [[0m[31m20/Jul/2009:22:59:29 +0000[0m[31m] "[0m[31mGET[0m[31m [0m[31m/vmw/vSphere/default/vmkboot.gz[0m[31m [0m[31mHTTP/1.0[0m[31m" 404 46210 "[0m[31m-[0m[31m" "[0m[31mgPXE/0.9.7[0m[31m"[0m >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_cmds.sh_3b20a298e2c059d7f6045cbc0c07ca3db3917695.out >[0;31mBEGIN[0m test_cmds.sh_3b20a298e2c059d7f6045cbc0c07ca3db3917695.err >[0;31mEND[0m test_cmds.sh_3b20a298e2c059d7f6045cbc0c07ca3db3917695.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -d /tmp/lnav.err -c :filter-expr :sc_bytes # ff {test_dir}/logfile_access_log.* >[0;32mBEGIN[0m test_cmds.sh_36800217930a6a30e68c4efb20f6959c4f71aeb0.out >[0;32mEND[0m test_cmds.sh_36800217930a6a30e68c4efb20f6959c4f71aeb0.out >[0;31mBEGIN[0m test_cmds.sh_36800217930a6a30e68c4efb20f6959c4f71aeb0.err >[1m[31mâ error[0m: invalid filter expression: [37m[40m:sc_bytes[0m[37m[40m # [0m[37m[40mff[0m > [1m[31mreason[0m: unrecognized token: "#" >[36m --> [0m[1mcommand-option[0m:1 >[36m | [0m[37m[40m:[0m[1m[36m[40mfilter-expr[0m[37m[40m [0m[37m[40m:sc_bytes[0m[37m[40m # [0m[37m[40mff[0m[37m[40m [0m >[36m =[0m [36mhelp[0m: [4m:[0m[1m[4mfilter-expr[0m[4m [0m[4mexpr[0m > ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Set the filter expression >[0;31mEND[0m test_cmds.sh_36800217930a6a30e68c4efb20f6959c4f71aeb0.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -d /tmp/lnav.err -c :goto 0 -c :close -c :goto 0 {test_dir}/logfile_access_log.* >[0;32mBEGIN[0m test_cmds.sh_968dac54dc80d91a5da2322890c6c26dfa0d8462.out >[31m10.112.81.15[0m[31m - [0m[31m-[0m[31m [[0m[31m15/Feb/2013:06:00:31 +0000[0m[31m] "-" 400 0 "[0m[31m-[0m[31m" "[0m[31m-[0m[31m"[0m >[0;32mEND[0m test_cmds.sh_968dac54dc80d91a5da2322890c6c26dfa0d8462.out >[0;31mBEGIN[0m test_cmds.sh_968dac54dc80d91a5da2322890c6c26dfa0d8462.err >[0;31mEND[0m test_cmds.sh_968dac54dc80d91a5da2322890c6c26dfa0d8462.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -d /tmp/lnav.err -c :goto 0 -c :hide-file {test_dir}/logfile_access_log.0 {test_dir}/logfile_access_log.1 >[0;32mBEGIN[0m test_cmds.sh_bc60341827636715c14c562863da9733cbde7e68.out >[31m10.112.81.15[0m[31m - [0m[31m-[0m[31m [[0m[31m15/Feb/2013:06:00:31 +0000[0m[31m] "-" 400 0 "[0m[31m-[0m[31m" "[0m[31m-[0m[31m"[0m >[0;32mEND[0m test_cmds.sh_bc60341827636715c14c562863da9733cbde7e68.out >[0;31mBEGIN[0m test_cmds.sh_bc60341827636715c14c562863da9733cbde7e68.err >[0;31mEND[0m test_cmds.sh_bc60341827636715c14c562863da9733cbde7e68.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -d /tmp/lnav.err -c :goto 0 -c :next-mark error -c :prev-location {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_0f0ab532d8d845f8201af65bf5f6fc994e21a8aa.out >192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7" >[31m192.168.202.254[0m[31m - [0m[31m-[0m[31m [[0m[31m20/Jul/2009:22:59:29 +0000[0m[31m] "[0m[31mGET[0m[31m [0m[31m/vmw/vSphere/default/vmkboot.gz[0m[31m [0m[31mHTTP/1.0[0m[31m" 404 46210 "[0m[31m-[0m[31m" "[0m[31mgPXE/0.9.7[0m[31m"[0m >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_cmds.sh_0f0ab532d8d845f8201af65bf5f6fc994e21a8aa.out >[0;31mBEGIN[0m test_cmds.sh_0f0ab532d8d845f8201af65bf5f6fc994e21a8aa.err >[0;31mEND[0m test_cmds.sh_0f0ab532d8d845f8201af65bf5f6fc994e21a8aa.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -d /tmp/lnav.err -c :goto 0 -c :next-mark error -c :prev-location -c :next-location {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_e911aebcb2defb7471aa620c45a86cad449ad505.out >[31m192.168.202.254[0m[31m - [0m[31m-[0m[31m [[0m[31m20/Jul/2009:22:59:29 +0000[0m[31m] "[0m[31mGET[0m[31m [0m[31m/vmw/vSphere/default/vmkboot.gz[0m[31m [0m[31mHTTP/1.0[0m[31m" 404 46210 "[0m[31m-[0m[31m" "[0m[31mgPXE/0.9.7[0m[31m"[0m >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_cmds.sh_e911aebcb2defb7471aa620c45a86cad449ad505.out >[0;31mBEGIN[0m test_cmds.sh_e911aebcb2defb7471aa620c45a86cad449ad505.err >[0;31mEND[0m test_cmds.sh_e911aebcb2defb7471aa620c45a86cad449ad505.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -d /tmp/lnav.err -c :filter-in vmk -c :disable-filter vmk -c :goto 0 {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_4dbe20c11056a07d2c7efb5ed15903050d628216.out >192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7" >[31m192.168.202.254[0m[31m - [0m[31m-[0m[31m [[0m[31m20/Jul/2009:22:59:29 +0000[0m[31m] "[0m[31mGET[0m[31m [0m[31m/vmw/vSphere/default/vmkboot.gz[0m[31m [0m[31mHTTP/1.0[0m[31m" 404 46210 "[0m[31m-[0m[31m" "[0m[31mgPXE/0.9.7[0m[31m"[0m >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_cmds.sh_4dbe20c11056a07d2c7efb5ed15903050d628216.out >[0;31mBEGIN[0m test_cmds.sh_4dbe20c11056a07d2c7efb5ed15903050d628216.err >[0;31mEND[0m test_cmds.sh_4dbe20c11056a07d2c7efb5ed15903050d628216.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -d /tmp/lnav.err -c :filter-in vmk -c :rebuild -c :reset-session -c :rebuild -c :goto 0 {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_d3b69abdfb39e4bfa5828c2f9593e2b2b7ed4d5d.out >192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7" >[31m192.168.202.254[0m[31m - [0m[31m-[0m[31m [[0m[31m20/Jul/2009:22:59:29 +0000[0m[31m] "[0m[31mGET[0m[31m [0m[31m/vmw/vSphere/default/vmkboot.gz[0m[31m [0m[31mHTTP/1.0[0m[31m" 404 46210 "[0m[31m-[0m[31m" "[0m[31mgPXE/0.9.7[0m[31m"[0m >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_cmds.sh_d3b69abdfb39e4bfa5828c2f9593e2b2b7ed4d5d.out >[0;31mBEGIN[0m test_cmds.sh_d3b69abdfb39e4bfa5828c2f9593e2b2b7ed4d5d.err >[0;31mEND[0m test_cmds.sh_d3b69abdfb39e4bfa5828c2f9593e2b2b7ed4d5d.err > >2025-01-17T20:39:34+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -d /tmp/lnav.err -c :goto 0 -c :filter-out vmk -c :toggle-filtering {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_9445861db011dfa2d21a44788047de345ee291e8.out >192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7" >[31m192.168.202.254[0m[31m - [0m[31m-[0m[31m [[0m[31m20/Jul/2009:22:59:29 +0000[0m[31m] "[0m[31mGET[0m[31m [0m[31m/vmw/vSphere/default/vmkboot.gz[0m[31m [0m[31mHTTP/1.0[0m[31m" 404 46210 "[0m[31m-[0m[31m" "[0m[31mgPXE/0.9.7[0m[31m"[0m >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_cmds.sh_9445861db011dfa2d21a44788047de345ee291e8.out >[0;31mBEGIN[0m test_cmds.sh_9445861db011dfa2d21a44788047de345ee291e8.err >[0;31mEND[0m test_cmds.sh_9445861db011dfa2d21a44788047de345ee291e8.err > >2025-01-17T20:39:34+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :hide-fields foobar {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_ec2b28c6ea328e3ea56b13ab8ca3d9ee856a9dda.out >[0;32mEND[0m test_cmds.sh_ec2b28c6ea328e3ea56b13ab8ca3d9ee856a9dda.out >[0;31mBEGIN[0m test_cmds.sh_ec2b28c6ea328e3ea56b13ab8ca3d9ee856a9dda.err >[1m[31mâ error[0m: unknown field(s) -- foobar >[36m --> [0m[1mcommand-option[0m:1 >[36m | [0m[37m[40m:[0m[1m[36m[40mhide-fields[0m[37m[40m foobar [0m >[36m =[0m [36mhelp[0m: [4m:[0m[1m[4mhide-fields[0m[4m [0m[4mfield-name[0m[4m1[0m[4m [[0m[4m...[0m[4m [0m[4mfield-name[0m[4mN[0m[4m][0m > ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Hide log message fields by replacing them with an ellipsis >[0;31mEND[0m test_cmds.sh_ec2b28c6ea328e3ea56b13ab8ca3d9ee856a9dda.err > >2025-01-17T20:39:34+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :hide-fields cs_uri_stem {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_38fa2a95b703d4ce12e82882eca1938264822690.out >192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET â® HTTP/1.0" 200 134 "-" "gPXE/0.9.7" >[31m192.168.202.254[0m[31m - [0m[31m-[0m[31m [[0m[31m20/Jul/2009:22:59:29 +0000[0m[31m] "[0m[31mGET[0m[31m [0m[31mâ®[0m[31m [0m[31mHTTP/1.0[0m[31m" 404 46210 "[0m[31m-[0m[31m" "[0m[31mgPXE/0.9.7[0m[31m"[0m >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET â® HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_cmds.sh_38fa2a95b703d4ce12e82882eca1938264822690.out >[0;31mBEGIN[0m test_cmds.sh_38fa2a95b703d4ce12e82882eca1938264822690.err >[0;31mEND[0m test_cmds.sh_38fa2a95b703d4ce12e82882eca1938264822690.err > >2025-01-17T20:39:34+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :hide-fields access_log.c_ip access_log.cs_uri_stem {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_8298805f897346b4bb0f14e53c06b4fa28e309e3.out >â® - - [20/Jul/2009:22:59:26 +0000] "GET â® HTTP/1.0" 200 134 "-" "gPXE/0.9.7" >[31mâ®[0m[31m - [0m[31m-[0m[31m [[0m[31m20/Jul/2009:22:59:29 +0000[0m[31m] "[0m[31mGET[0m[31m [0m[31mâ®[0m[31m [0m[31mHTTP/1.0[0m[31m" 404 46210 "[0m[31m-[0m[31m" "[0m[31mgPXE/0.9.7[0m[31m"[0m >â® - - [20/Jul/2009:22:59:29 +0000] "GET â® HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_cmds.sh_8298805f897346b4bb0f14e53c06b4fa28e309e3.out >[0;31mBEGIN[0m test_cmds.sh_8298805f897346b4bb0f14e53c06b4fa28e309e3.err >[0;31mEND[0m test_cmds.sh_8298805f897346b4bb0f14e53c06b4fa28e309e3.err > >2025-01-17T20:39:34+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -f- -n >[0;32mBEGIN[0m test_cmds.sh_4b2d91b19008d5b775090e3ef87c111f9e603b15.out >[0;32mEND[0m test_cmds.sh_4b2d91b19008d5b775090e3ef87c111f9e603b15.out >OUT: test: ../src/lnav-test -f- -n >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_cmds.sh_4b2d91b19008d5b775090e3ef87c111f9e603b15.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_cmds.sh_4b2d91b19008d5b775090e3ef87c111f9e603b15.out 2025-01-17 20:39:34.543364074 +0100 >@@ -1,2 +0,0 @@ >-Hello, World! >-Goodbye, World! >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_cmds.sh_4b2d91b19008d5b775090e3ef87c111f9e603b15.err >lnav-test: sqlite3.c:84160: sqlite3ValueText: Assertion `pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.8283.log >========================= >[0;31mEND[0m test_cmds.sh_4b2d91b19008d5b775090e3ef87c111f9e603b15.err >ERR: test: ../src/lnav-test -f- -n >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_cmds.sh_4b2d91b19008d5b775090e3ef87c111f9e603b15.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_cmds.sh_4b2d91b19008d5b775090e3ef87c111f9e603b15.err 2025-01-17 20:39:34.555364556 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:84160: sqlite3ValueText: Assertion `pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.8283.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:34+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :config /bad/option {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_a5742238bad948b1372d32f7a491f03fa4e8b711.out >[0;32mEND[0m test_cmds.sh_a5742238bad948b1372d32f7a491f03fa4e8b711.out >[0;31mBEGIN[0m test_cmds.sh_a5742238bad948b1372d32f7a491f03fa4e8b711.err >[1m[31mâ error[0m: unknown configuration option -- /bad/option >[36m --> [0m[1mcommand-option[0m:1 >[36m | [0m[37m[40m:[0m[1m[36m[40mconfig[0m[37m[40m /bad/option [0m >[36m =[0m [36mhelp[0m: [4m:[0m[1m[4mconfig[0m[4m [0m[4moption[0m[4m [[0m[4mvalue[0m[4m][0m > ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Read or write a configuration option >[0;31mEND[0m test_cmds.sh_a5742238bad948b1372d32f7a491f03fa4e8b711.err > >2025-01-17T20:39:34+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -nvq -c :config /ui/clock-format {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_2a449c0a43e895e85c8b1c9547f32d7b5b4f84f6.out >/ui/clock-format = "%Y-%m-%dT%H:%M:%S %Z" >[0;32mEND[0m test_cmds.sh_2a449c0a43e895e85c8b1c9547f32d7b5b4f84f6.out >[0;31mBEGIN[0m test_cmds.sh_2a449c0a43e895e85c8b1c9547f32d7b5b4f84f6.err >[0;31mEND[0m test_cmds.sh_2a449c0a43e895e85c8b1c9547f32d7b5b4f84f6.err > >2025-01-17T20:39:34+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -nv -c :config /ui/clock-format -c :config /ui/clock-format abc -c :config /ui/clock-format {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_35b0dd8a030396742bc5acfde7715fb19f312f29.out >/ui/clock-format = "%Y-%m-%dT%H:%M:%S %Z" >info: changed config option -- /ui/clock-format >/ui/clock-format = "abc" >[0;32mEND[0m test_cmds.sh_35b0dd8a030396742bc5acfde7715fb19f312f29.out >[0;31mBEGIN[0m test_cmds.sh_35b0dd8a030396742bc5acfde7715fb19f312f29.err >[0;31mEND[0m test_cmds.sh_35b0dd8a030396742bc5acfde7715fb19f312f29.err > >2025-01-17T20:39:35+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -nv -c :config /ui/clock-format abc -c :reset-config /ui/clock-format -c :config /ui/clock-format {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_c4777849c39a6c34dea5b0279cd7400692f1ab5f.out >info: changed config option -- /ui/clock-format >info: reset option -- /ui/clock-format >/ui/clock-format = "%Y-%m-%dT%H:%M:%S %Z" >[0;32mEND[0m test_cmds.sh_c4777849c39a6c34dea5b0279cd7400692f1ab5f.out >[0;31mBEGIN[0m test_cmds.sh_c4777849c39a6c34dea5b0279cd7400692f1ab5f.err >[0;31mEND[0m test_cmds.sh_c4777849c39a6c34dea5b0279cd7400692f1ab5f.err > >2025-01-17T20:39:35+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c |{test_dir}/toplevel.lnav 123 456 789 {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_53a9686102f69b07b034df291f554a00b265ed20.out >toplevel here 123 456 >nested here nested.lnav abc 789 >[0;32mEND[0m test_cmds.sh_53a9686102f69b07b034df291f554a00b265ed20.out >[0;31mBEGIN[0m test_cmds.sh_53a9686102f69b07b034df291f554a00b265ed20.err >[0;31mEND[0m test_cmds.sh_53a9686102f69b07b034df291f554a00b265ed20.err > >2025-01-17T20:39:35+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -f nonexistent.lnav {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_a190bfc279fa046a823864f1484f899d27d22953.out >[0;32mEND[0m test_cmds.sh_a190bfc279fa046a823864f1484f899d27d22953.out >[0;31mBEGIN[0m test_cmds.sh_a190bfc279fa046a823864f1484f899d27d22953.err >[1m[31mâ error[0m: unknown script -- nonexistent.lnav -- file not found >[36m --> [0m[1mcommand-option[0m:1 >[36m | [0m[37m[40m|nonexistent.lnav [0m >[0;31mEND[0m test_cmds.sh_a190bfc279fa046a823864f1484f899d27d22953.err > >2025-01-17T20:39:35+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :adjust-log-time 2010-01-01T00:00:00 {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_dd41fbbcd71699314af232156d4155fbdf849131.out >192.168.202.254 - - [01/Jan/2010:00:00:00 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7" >[31m192.168.202.254[0m[31m - [0m[31m-[0m[31m [[0m[31m01/Jan/2010:00:00:03 +0000[0m[31m] "[0m[31mGET[0m[31m [0m[31m/vmw/vSphere/default/vmkboot.gz[0m[31m [0m[31mHTTP/1.0[0m[31m" 404 46210 "[0m[31m-[0m[31m" "[0m[31mgPXE/0.9.7[0m[31m"[0m >192.168.202.254 - - [01/Jan/2010:00:00:03 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_cmds.sh_dd41fbbcd71699314af232156d4155fbdf849131.out >[0;31mBEGIN[0m test_cmds.sh_dd41fbbcd71699314af232156d4155fbdf849131.err >[0;31mEND[0m test_cmds.sh_dd41fbbcd71699314af232156d4155fbdf849131.err > >2025-01-17T20:39:35+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :adjust-log-time -1h {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_0b1e4b1523dfca71927b1fe721c74490c51361d1.out >192.168.202.254 - - [20/Jul/2009:21:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7" >[31m192.168.202.254[0m[31m - [0m[31m-[0m[31m [[0m[31m20/Jul/2009:21:59:29 +0000[0m[31m] "[0m[31mGET[0m[31m [0m[31m/vmw/vSphere/default/vmkboot.gz[0m[31m [0m[31mHTTP/1.0[0m[31m" 404 46210 "[0m[31m-[0m[31m" "[0m[31mgPXE/0.9.7[0m[31m"[0m >192.168.202.254 - - [20/Jul/2009:21:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_cmds.sh_0b1e4b1523dfca71927b1fe721c74490c51361d1.out >[0;31mBEGIN[0m test_cmds.sh_0b1e4b1523dfca71927b1fe721c74490c51361d1.err >[0;31mEND[0m test_cmds.sh_0b1e4b1523dfca71927b1fe721c74490c51361d1.err > >2025-01-17T20:39:35+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :goto 2022-06-16Tabc {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_bf4e7fad67e281beaa11b6e2b03a00b419c7c9b0.out >[0;32mEND[0m test_cmds.sh_bf4e7fad67e281beaa11b6e2b03a00b419c7c9b0.out >[0;31mBEGIN[0m test_cmds.sh_bf4e7fad67e281beaa11b6e2b03a00b419c7c9b0.err >[1m[31mâ error[0m: invalid timestamp: 2022-06-16Tabc > [1m[31mreason[0m: the leading part of the timestamp was matched, however, the trailing text âTabcâ was not >[36m --> [0m[1mcommand-option[0m:1 >[36m | [0m[37m[40m:[0m[1m[36m[40mgoto[0m[37m[40m 2022-06-16Tabc [0m >[36m | [0m[37m[40m [0m[32m[40m^--^ unrecognized input[0m[37m[40m [0m >[36m =[0m [36mnote[0m: input matched time format â%Y-%m-%dâ >[36m =[0m [36mhelp[0m: fix the timestamp or remove the trailing text >[0;31mEND[0m test_cmds.sh_bf4e7fad67e281beaa11b6e2b03a00b419c7c9b0.err > >2025-01-17T20:39:35+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :goto 17:00:01. {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_2186d5eb6e84d6a23712334d5088c044fe089db0.out >[0;32mEND[0m test_cmds.sh_2186d5eb6e84d6a23712334d5088c044fe089db0.out >[0;31mBEGIN[0m test_cmds.sh_2186d5eb6e84d6a23712334d5088c044fe089db0.err >[1m[31mâ error[0m: invalid timestamp: 17:00:01. > [1m[31mreason[0m: the leading part of the timestamp was matched, however, the trailing text â.â was not >[36m --> [0m[1mcommand-option[0m:1 >[36m | [0m[37m[40m:[0m[1m[36m[40mgoto[0m[37m[40m 17:00:01. [0m >[36m | [0m[37m[40m [0m[32m[40m^ unrecognized input[0m[37m[40m [0m >[36m =[0m [36mnote[0m: input matched time format â%H:%M:%Sâ >[36m =[0m [36mhelp[0m: fix the timestamp or remove the trailing text >[0;31mEND[0m test_cmds.sh_2186d5eb6e84d6a23712334d5088c044fe089db0.err > >2025-01-17T20:39:35+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :goto 1 {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_95beaabe41d72cf4c6810e79c623da759ac1c71b.out >[31m192.168.202.254[0m[31m - [0m[31m-[0m[31m [[0m[31m20/Jul/2009:22:59:29 +0000[0m[31m] "[0m[31mGET[0m[31m [0m[31m/vmw/vSphere/default/vmkboot.gz[0m[31m [0m[31mHTTP/1.0[0m[31m" 404 46210 "[0m[31m-[0m[31m" "[0m[31mgPXE/0.9.7[0m[31m"[0m >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_cmds.sh_95beaabe41d72cf4c6810e79c623da759ac1c71b.out >[0;31mBEGIN[0m test_cmds.sh_95beaabe41d72cf4c6810e79c623da759ac1c71b.err >[0;31mEND[0m test_cmds.sh_95beaabe41d72cf4c6810e79c623da759ac1c71b.err > >2025-01-17T20:39:35+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :goto -1 {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_7270e37dab4549cfa7c5232451c031e1e04b4aef.out >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_cmds.sh_7270e37dab4549cfa7c5232451c031e1e04b4aef.out >[0;31mBEGIN[0m test_cmds.sh_7270e37dab4549cfa7c5232451c031e1e04b4aef.err >[0;31mEND[0m test_cmds.sh_7270e37dab4549cfa7c5232451c031e1e04b4aef.err > >2025-01-17T20:39:36+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :goto 0 -c :goto 2 hours later {test_dir}/logfile_syslog_with_mixed_times.0 >[0;32mBEGIN[0m test_cmds.sh_a6c431f2871ea96cfdf4e11465b3bca543c7b678.out >Sep 13 03:12:04 Tim-Stacks-iMac kernel[0]: vm_compressor_record_warmup (9478314 - 9492476) >Sep 13 03:12:04 Tim-Stacks-iMac kernel[0]: AppleBCM5701Ethernet [en0]: 0 0 memWrInd fBJP_Wakeup_Timer >Sep 13 01:25:39 Tim-Stacks-iMac kernel[0]: AppleThunderboltNHIType2::waitForOk2Go2Sx - retries = 60000 >Sep 13 03:12:04 Tim-Stacks-iMac kernel[0]: hibernate_page_list_setall(preflight 0) start 0xffffff8428276000, 0xffffff8428336000 >Sep 13 03:12:58 Tim-Stacks-iMac kernel[0]: *** kernel exceeded 500 log message per second limit - remaining messages this second discarded *** >Sep 13 03:46:03 Tim-Stacks-iMac kernel[0]: IOThunderboltSwitch<0xffffff803f4b3000>(0x0)::listenerCallback - Thunderbolt HPD packet for route = 0x0 port = 11 unplug = 0 >Sep 13 03:46:03 Tim-Stacks-iMac kernel[0]: vm_compressor_flush - starting >Sep 13 03:46:03 Tim-Stacks-iMac kernel[0]: AppleBCM5701Ethernet [en0]: 0 0 memWrInd fBJP_Wakeup_Timer >Sep 13 03:13:16 Tim-Stacks-iMac kernel[0]: AppleThunderboltNHIType2::waitForOk2Go2Sx - retries = 60000 >Sep 13 03:46:03 Tim-Stacks-iMac kernel[0]: hibernate_page_list_setall(preflight 0) start 0xffffff838f1fc000, 0xffffff838f2bc000 >[0;32mEND[0m test_cmds.sh_a6c431f2871ea96cfdf4e11465b3bca543c7b678.out >[0;31mBEGIN[0m test_cmds.sh_a6c431f2871ea96cfdf4e11465b3bca543c7b678.err >[0;31mEND[0m test_cmds.sh_a6c431f2871ea96cfdf4e11465b3bca543c7b678.err > >2025-01-17T20:39:36+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :goto 0 -c :goto 3:45 {test_dir}/logfile_syslog_with_mixed_times.0 >[0;32mBEGIN[0m test_cmds.sh_c01e10f7cae8d36fa79ae03be887cb5477025f6d.out >Sep 13 03:46:03 Tim-Stacks-iMac kernel[0]: IOThunderboltSwitch<0xffffff803f4b3000>(0x0)::listenerCallback - Thunderbolt HPD packet for route = 0x0 port = 11 unplug = 0 >Sep 13 03:46:03 Tim-Stacks-iMac kernel[0]: vm_compressor_flush - starting >Sep 13 03:46:03 Tim-Stacks-iMac kernel[0]: AppleBCM5701Ethernet [en0]: 0 0 memWrInd fBJP_Wakeup_Timer >Sep 13 03:13:16 Tim-Stacks-iMac kernel[0]: AppleThunderboltNHIType2::waitForOk2Go2Sx - retries = 60000 >Sep 13 03:46:03 Tim-Stacks-iMac kernel[0]: hibernate_page_list_setall(preflight 0) start 0xffffff838f1fc000, 0xffffff838f2bc000 >[0;32mEND[0m test_cmds.sh_c01e10f7cae8d36fa79ae03be887cb5477025f6d.out >[0;31mBEGIN[0m test_cmds.sh_c01e10f7cae8d36fa79ae03be887cb5477025f6d.err >[0;31mEND[0m test_cmds.sh_c01e10f7cae8d36fa79ae03be887cb5477025f6d.err > >2025-01-17T20:39:36+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :goto invalid {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_c2b4431dd0cc36c6201d263b727b3305e8cda6b1.out >[0;32mEND[0m test_cmds.sh_c2b4431dd0cc36c6201d263b727b3305e8cda6b1.out >[0;31mBEGIN[0m test_cmds.sh_c2b4431dd0cc36c6201d263b727b3305e8cda6b1.err >[1m[31mâ error[0m: invalid argument: invalid > [1m[31mreason[0m: expecting line number/percentage, timestamp, or relative time >[36m --> [0m[1mcommand-option[0m:1 >[36m | [0m[37m[40m:[0m[1m[36m[40mgoto[0m[37m[40m invalid [0m >[36m =[0m [36mhelp[0m: [4m:[0m[1m[4mgoto[0m[4m [0m[4mline#|N%|timestamp|#anchor[0m > ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Go to the given location in the top view >[0;31mEND[0m test_cmds.sh_c2b4431dd0cc36c6201d263b727b3305e8cda6b1.err > >2025-01-17T20:39:36+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :goto 1 -c :relative-goto -1 {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_1f53f5b16c7c5aa695ed2e6427d822a1b940fcf4.out >192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7" >[31m192.168.202.254[0m[31m - [0m[31m-[0m[31m [[0m[31m20/Jul/2009:22:59:29 +0000[0m[31m] "[0m[31mGET[0m[31m [0m[31m/vmw/vSphere/default/vmkboot.gz[0m[31m [0m[31mHTTP/1.0[0m[31m" 404 46210 "[0m[31m-[0m[31m" "[0m[31mgPXE/0.9.7[0m[31m"[0m >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_cmds.sh_1f53f5b16c7c5aa695ed2e6427d822a1b940fcf4.out >[0;31mBEGIN[0m test_cmds.sh_1f53f5b16c7c5aa695ed2e6427d822a1b940fcf4.err >[0;31mEND[0m test_cmds.sh_1f53f5b16c7c5aa695ed2e6427d822a1b940fcf4.err > >2025-01-17T20:39:36+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :goto 0 -c :next-mark error {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_22577861cb0921a7e7f3d1af6485938f4930ba7b.out >[31m192.168.202.254[0m[31m - [0m[31m-[0m[31m [[0m[31m20/Jul/2009:22:59:29 +0000[0m[31m] "[0m[31mGET[0m[31m [0m[31m/vmw/vSphere/default/vmkboot.gz[0m[31m [0m[31mHTTP/1.0[0m[31m" 404 46210 "[0m[31m-[0m[31m" "[0m[31mgPXE/0.9.7[0m[31m"[0m >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_cmds.sh_22577861cb0921a7e7f3d1af6485938f4930ba7b.out >[0;31mBEGIN[0m test_cmds.sh_22577861cb0921a7e7f3d1af6485938f4930ba7b.err >[0;31mEND[0m test_cmds.sh_22577861cb0921a7e7f3d1af6485938f4930ba7b.err > >2025-01-17T20:39:36+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :goto -1 -c :prev-mark error {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_a1123427c31c022433d66d05ee5d5e1c8ab415e4.out >[31m192.168.202.254[0m[31m - [0m[31m-[0m[31m [[0m[31m20/Jul/2009:22:59:29 +0000[0m[31m] "[0m[31mGET[0m[31m [0m[31m/vmw/vSphere/default/vmkboot.gz[0m[31m [0m[31mHTTP/1.0[0m[31m" 404 46210 "[0m[31m-[0m[31m" "[0m[31mgPXE/0.9.7[0m[31m"[0m >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_cmds.sh_a1123427c31c022433d66d05ee5d5e1c8ab415e4.out >[0;31mBEGIN[0m test_cmds.sh_a1123427c31c022433d66d05ee5d5e1c8ab415e4.err >[0;31mEND[0m test_cmds.sh_a1123427c31c022433d66d05ee5d5e1c8ab415e4.err > >2025-01-17T20:39:36+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :goto 0 -c :next-mark foobar {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_55c2fd15ec2c7d96dbef7b36a42a1b7b42f90dbc.out >[0;32mEND[0m test_cmds.sh_55c2fd15ec2c7d96dbef7b36a42a1b7b42f90dbc.out >[0;31mBEGIN[0m test_cmds.sh_55c2fd15ec2c7d96dbef7b36a42a1b7b42f90dbc.err >[1m[31mâ error[0m: unknown bookmark type: foobar >[36m --> [0m[1mcommand-option[0m:2 >[36m | [0m[37m[40m:[0m[1m[36m[40mnext-mark[0m[37m[40m foobar [0m >[36m =[0m [36mhelp[0m: available types: error, file, meta, search, user, user-expr, warning >[0;31mEND[0m test_cmds.sh_55c2fd15ec2c7d96dbef7b36a42a1b7b42f90dbc.err > >2025-01-17T20:39:36+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :filter-in vmk {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_3429080ed14d01c6a887900186f37750df0d5ff0.out >[31m192.168.202.254[0m[31m - [0m[31m-[0m[31m [[0m[31m20/Jul/2009:22:59:29 +0000[0m[31m] "[0m[31mGET[0m[31m [0m[31m/vmw/vSphere/default/vmkboot.gz[0m[31m [0m[31mHTTP/1.0[0m[31m" 404 46210 "[0m[31m-[0m[31m" "[0m[31mgPXE/0.9.7[0m[31m"[0m >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_cmds.sh_3429080ed14d01c6a887900186f37750df0d5ff0.out >[0;31mBEGIN[0m test_cmds.sh_3429080ed14d01c6a887900186f37750df0d5ff0.err >[0;31mEND[0m test_cmds.sh_3429080ed14d01c6a887900186f37750df0d5ff0.err > >2025-01-17T20:39:37+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :filter-in vmk -c :reset-session -c :filter-in cgi {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_8758082427d6232a15053433942a4b5ad9f2e3ce.out >192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7" >[0;32mEND[0m test_cmds.sh_8758082427d6232a15053433942a4b5ad9f2e3ce.out >[0;31mBEGIN[0m test_cmds.sh_8758082427d6232a15053433942a4b5ad9f2e3ce.err >[0;31mEND[0m test_cmds.sh_8758082427d6232a15053433942a4b5ad9f2e3ce.err > >2025-01-17T20:39:37+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :filter-in today {test_dir}/logfile_multiline.0 >[0;32mBEGIN[0m test_cmds.sh_ca66660c973f76a3c2a147c7f5035bcb4e8a8bbc.out >2009-07-20 22:59:27,672:DEBUG:Hello, World! > How are you today? >[0;32mEND[0m test_cmds.sh_ca66660c973f76a3c2a147c7f5035bcb4e8a8bbc.out >[0;31mBEGIN[0m test_cmds.sh_ca66660c973f76a3c2a147c7f5035bcb4e8a8bbc.err >[0;31mEND[0m test_cmds.sh_ca66660c973f76a3c2a147c7f5035bcb4e8a8bbc.err > >2025-01-17T20:39:37+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :filter-out vmk {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_62d68c0a11757c996f24c8f003e6b4059c3e30b2.out >192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7" >[0;32mEND[0m test_cmds.sh_62d68c0a11757c996f24c8f003e6b4059c3e30b2.out >[0;31mBEGIN[0m test_cmds.sh_62d68c0a11757c996f24c8f003e6b4059c3e30b2.err >[0;31mEND[0m test_cmds.sh_62d68c0a11757c996f24c8f003e6b4059c3e30b2.err > >2025-01-17T20:39:37+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :filter-out today {test_dir}/logfile_multiline.0 >[0;32mBEGIN[0m test_cmds.sh_2ff0fe712c9b0012e42282c5f77b0b83cad37ddf.out >[31m2009-07-20 22:59:30,221:[0m[31mERROR[0m[31m:Goodbye, World![0m >[0;32mEND[0m test_cmds.sh_2ff0fe712c9b0012e42282c5f77b0b83cad37ddf.out >[0;31mBEGIN[0m test_cmds.sh_2ff0fe712c9b0012e42282c5f77b0b83cad37ddf.err >[0;31mEND[0m test_cmds.sh_2ff0fe712c9b0012e42282c5f77b0b83cad37ddf.err > >2025-01-17T20:39:37+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c ;update generic_log set log_mark=1 -c :filter-in Goodbye -c :append-to logfile_append.0 -c :rebuild logfile_append.0 >[0;32mBEGIN[0m test_cmds.sh_453054e29aaca4c2662c45c2a1f2f63f3510d8dd.out >[7m[31m2009-07-20 22:59:30,221:[0m[7m[31mERROR[0m[7m[31m:Goodbye, World![0m >[31m2009-07-20 22:59:30,221:[0m[31mERROR[0m[31m:Goodbye, World![0m >[0;32mEND[0m test_cmds.sh_453054e29aaca4c2662c45c2a1f2f63f3510d8dd.out >[0;31mBEGIN[0m test_cmds.sh_453054e29aaca4c2662c45c2a1f2f63f3510d8dd.err >[0;31mEND[0m test_cmds.sh_453054e29aaca4c2662c45c2a1f2f63f3510d8dd.err > >2025-01-17T20:39:37+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -d /tmp/lnav-search.err -c /goodbye -c ;update generic_log set log_mark=1 -c :filter-in Goodbye -c :append-to logfile_append.0 -c :rebuild -c :next-mark search logfile_append.0 >[0;32mBEGIN[0m test_cmds.sh_2e123104cdd2087ac40731a0aa533ba6a87ea744.out >[31m2009-07-20 22:59:30,221:[0m[31mERROR[0m[31m:[0m[7m[31mGoodbye[0m[31m, World![0m >[0;32mEND[0m test_cmds.sh_2e123104cdd2087ac40731a0aa533ba6a87ea744.out >[0;31mBEGIN[0m test_cmds.sh_2e123104cdd2087ac40731a0aa533ba6a87ea744.err >[0;31mEND[0m test_cmds.sh_2e123104cdd2087ac40731a0aa533ba6a87ea744.err > >2025-01-17T20:39:37+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :filter-out Goodbye -c :shexec echo '2009-07-20 22:59:30,221:ERROR:Goodbye, World!' >> logfile_append.0 -c :rebuild logfile_append.0 >[0;32mBEGIN[0m test_cmds.sh_2a535de164de4c060d2bff34aa7cc75ac7cac2c2.out >2009-07-20 22:59:27,672:DEBUG:Hello, World! > How are you today? >[0;32mEND[0m test_cmds.sh_2a535de164de4c060d2bff34aa7cc75ac7cac2c2.out >[0;31mBEGIN[0m test_cmds.sh_2a535de164de4c060d2bff34aa7cc75ac7cac2c2.err >[0;31mEND[0m test_cmds.sh_2a535de164de4c060d2bff34aa7cc75ac7cac2c2.err > >2025-01-17T20:39:37+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :filter-in avahi -c :delete-filter avahi -c :filter-in avahi -c :filter-in dnsmasq {test_dir}/logfile_filter.0 >[0;32mBEGIN[0m test_cmds.sh_2339d09953b6937981d8a448000c3fdc2837f8c4.out >Dec 6 13:01:34 ubu-mac avahi-daemon[786]: Joining mDNS multicast group on interface virbr0.IPv4 with address 192.168.122.1. >Dec 6 13:01:34 ubu-mac avahi-daemon[786]: New relevant interface virbr0.IPv4 for mDNS. >Dec 6 13:01:34 ubu-mac avahi-daemon[786]: Registering new address record for 192.168.122.1 on virbr0.IPv4. >Dec 6 13:01:34 ubu-mac dnsmasq[1840]: started, version 2.68 cachesize 150 >Dec 6 13:01:34 ubu-mac dnsmasq[1840]: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth >Dec 6 13:01:34 ubu-mac dnsmasq-dhcp[1840]: DHCP, IP range 192.168.122.2 -- 192.168.122.254, lease time 1h >Dec 6 13:01:34 ubu-mac dnsmasq-dhcp[1840]: DHCP, sockets bound exclusively to interface virbr0 >Dec 6 13:01:34 ubu-mac dnsmasq[1840]: reading /etc/resolv.conf >Dec 6 13:01:34 ubu-mac dnsmasq[1840]: using nameserver 192.168.1.1#53 >Dec 6 13:01:34 ubu-mac dnsmasq[1840]: read /etc/hosts - 5 addresses >Dec 6 13:01:34 ubu-mac dnsmasq[1840]: read /var/lib/libvirt/dnsmasq/default.addnhosts - 0 addresses >Dec 6 13:01:34 ubu-mac dnsmasq-dhcp[1840]: read /var/lib/libvirt/dnsmasq/default.hostsfile >[0;32mEND[0m test_cmds.sh_2339d09953b6937981d8a448000c3fdc2837f8c4.out >[0;31mBEGIN[0m test_cmds.sh_2339d09953b6937981d8a448000c3fdc2837f8c4.err >[0;31mEND[0m test_cmds.sh_2339d09953b6937981d8a448000c3fdc2837f8c4.err > >2025-01-17T20:39:37+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :switch-to-view text -c :filter-in World {test_dir}/logfile_plain.0 >[0;32mBEGIN[0m test_cmds.sh_2de9ec294e2f533d13e04c70d9525f8b58d47bb2.out >Hello, World! >Goodbye, World! >[0;32mEND[0m test_cmds.sh_2de9ec294e2f533d13e04c70d9525f8b58d47bb2.out >[0;31mBEGIN[0m test_cmds.sh_2de9ec294e2f533d13e04c70d9525f8b58d47bb2.err >[0;31mEND[0m test_cmds.sh_2de9ec294e2f533d13e04c70d9525f8b58d47bb2.err > >2025-01-17T20:39:38+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :switch-to-view text -c :filter-out World {test_dir}/logfile_plain.0 >[0;32mBEGIN[0m test_cmds.sh_12856706bfb4a8e2686098dd2644a7989d370b02.out >How are you? >[0;32mEND[0m test_cmds.sh_12856706bfb4a8e2686098dd2644a7989d370b02.out >[0;31mBEGIN[0m test_cmds.sh_12856706bfb4a8e2686098dd2644a7989d370b02.err >[0;31mEND[0m test_cmds.sh_12856706bfb4a8e2686098dd2644a7989d370b02.err > >2025-01-17T20:39:38+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: eval ../src/lnav-test -d /tmp/lnav.err -n -c ':filter-out 1' -c ':filter-out 2' -c ':filter-out 3' -c ':filter-out 4' -c ':filter-out 5' -c ':filter-out 6' -c ':filter-out 7' -c ':filter-out 8' -c ':filter-out 9' -c ':filter-out 10' -c ':filter-out 11' -c ':filter-out 12' -c ':filter-out 13' -c ':filter-out 14' -c ':filter-out 15' -c ':filter-out 16' -c ':filter-out 17' -c ':filter-out 18' -c ':filter-out 19' -c ':filter-out 20' -c ':filter-out 21' -c ':filter-out 22' -c ':filter-out 23' -c ':filter-out 24' -c ':filter-out 25' -c ':filter-out 26' -c ':filter-out 27' -c ':filter-out 28' -c ':filter-out 29' -c ':filter-out 30' -c ':filter-out 31' -c ':filter-out 32' {test_dir}/logfile_filter.0 >[0;32mBEGIN[0m test_cmds.sh_a8006c4169d76baecd99a0699c2fc66a583ad676.out >[0;32mEND[0m test_cmds.sh_a8006c4169d76baecd99a0699c2fc66a583ad676.out >[0;31mBEGIN[0m test_cmds.sh_a8006c4169d76baecd99a0699c2fc66a583ad676.err >[1m[31mâ error[0m: filter limit reached, try combining filters with a pipe symbol (e.g. foo|bar) >[36m --> [0m[1mcommand-option[0m:32 >[36m | [0m[37m[40m:[0m[1m[36m[40mfilter-out[0m[37m[40m 32 [0m >[36m =[0m [36mhelp[0m: [4m:[0m[1m[4mfilter-out[0m[4m [0m[4mpattern[0m > ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Remove lines that match the given regular expression in the current > view >[0;31mEND[0m test_cmds.sh_a8006c4169d76baecd99a0699c2fc66a583ad676.err > >2025-01-17T20:39:38+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :close {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_2539ff9c4dbed93df3f0408ccc5fd81df34d1193.out >[0;32mEND[0m test_cmds.sh_2539ff9c4dbed93df3f0408ccc5fd81df34d1193.out >[0;31mBEGIN[0m test_cmds.sh_2539ff9c4dbed93df3f0408ccc5fd81df34d1193.err >[0;31mEND[0m test_cmds.sh_2539ff9c4dbed93df3f0408ccc5fd81df34d1193.err > >2025-01-17T20:39:38+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :close -c :close {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_017b495b95218b7c083951e2dba331cfec6e90be.out >[0;32mEND[0m test_cmds.sh_017b495b95218b7c083951e2dba331cfec6e90be.out >[0;31mBEGIN[0m test_cmds.sh_017b495b95218b7c083951e2dba331cfec6e90be.err >[1m[31mâ error[0m: no log files loaded >[36m --> [0m[1mcommand-option[0m:2 >[36m | [0m[37m[40m:close [0m >[36m =[0m [36mhelp[0m: [4m:[0m[1m[4mclose[0m > ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Close the top file in the view >[0;31mEND[0m test_cmds.sh_017b495b95218b7c083951e2dba331cfec6e90be.err > >2025-01-17T20:39:38+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :open {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_6a6031113aca32fabc5a3da64b7be46f5ce5a312.out >[0;32mEND[0m test_cmds.sh_6a6031113aca32fabc5a3da64b7be46f5ce5a312.out >[0;31mBEGIN[0m test_cmds.sh_6a6031113aca32fabc5a3da64b7be46f5ce5a312.err >[1m[31mâ error[0m: expecting file name to open >[36m --> [0m[1mcommand-option[0m:1 >[36m | [0m[37m[40m:open [0m >[36m =[0m [36mhelp[0m: [4m:[0m[1m[4mopen[0m[4m [0m[4mpath[0m[4m1[0m[4m [[0m[4m...[0m[4m [0m[4mpath[0m[4mN[0m[4m][0m > ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Open the given file(s) in lnav. Opening files on machines > accessible via SSH can be done using the syntax: > [user@]host:/path/to/logs >[0;31mEND[0m test_cmds.sh_6a6031113aca32fabc5a3da64b7be46f5ce5a312.err > >2025-01-17T20:39:38+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :close -c :open {test_dir}/logfile_multiline.0 {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_4f06183ed231669965965f5042fbbb507fa7deab.out >2009-07-20 22:59:27,672:DEBUG:Hello, World! > How are you today? >[31m2009-07-20 22:59:30,221:[0m[31mERROR[0m[31m:Goodbye, World![0m >[0;32mEND[0m test_cmds.sh_4f06183ed231669965965f5042fbbb507fa7deab.out >[0;31mBEGIN[0m test_cmds.sh_4f06183ed231669965965f5042fbbb507fa7deab.err >[0;31mEND[0m test_cmds.sh_4f06183ed231669965965f5042fbbb507fa7deab.err > >2025-01-17T20:39:38+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :close -c :open /non-existent {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_512872aebaae73ca4f33fa93acb2f4e3b018f8b4.out >[0;32mEND[0m test_cmds.sh_512872aebaae73ca4f33fa93acb2f4e3b018f8b4.out >[0;31mBEGIN[0m test_cmds.sh_512872aebaae73ca4f33fa93acb2f4e3b018f8b4.err >[1m[31mâ error[0m: cannot open file: [1m/non-existent[0m > [1m[31mreason[0m: No such file or directory >[36m --> [0m[1mcommand-option[0m:2 >[36m | [0m[37m[40m:[0m[1m[36m[40mopen[0m[37m[40m /non-existent [0m >[36m =[0m [36mhelp[0m: make sure the file exists and is accessible >[0;31mEND[0m test_cmds.sh_512872aebaae73ca4f33fa93acb2f4e3b018f8b4.err > >2025-01-17T20:39:38+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :goto 1 -c :write-screen-to - {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_5bfd08c1639701476d7b9348c36afd46fdbe6f2a.out >[31m192.168.202.254[0m[31m - [0m[31m-[0m[31m [[0m[31m20/Jul/2009:22:59:29 +0000[0m[31m] "[0m[31mGET[0m[31m [0m[31m/vmw/vSphere/default/vmkboot.gz[0m[31m [0m[31mHTTP/1.0[0m[31m" 404 46210 "[0m[31m-[0m[31m" "[0m[31mgPXE/0.9.7[0m[31m"[0m >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_cmds.sh_5bfd08c1639701476d7b9348c36afd46fdbe6f2a.out >[0;31mBEGIN[0m test_cmds.sh_5bfd08c1639701476d7b9348c36afd46fdbe6f2a.err >[0;31mEND[0m test_cmds.sh_5bfd08c1639701476d7b9348c36afd46fdbe6f2a.err > >2025-01-17T20:39:39+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c ;select * from access_log -c :write-json-to - {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_1d92c5bc12f5e7aaa6d84c5ed47f0b9f96e36c6a.out >[0;32mEND[0m test_cmds.sh_1d92c5bc12f5e7aaa6d84c5ed47f0b9f96e36c6a.out >OUT: test: ../src/lnav-test -n -c ;select * from access_log -c :write-json-to - {test_dir}/logfile_access_log.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_cmds.sh_1d92c5bc12f5e7aaa6d84c5ed47f0b9f96e36c6a.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_cmds.sh_1d92c5bc12f5e7aaa6d84c5ed47f0b9f96e36c6a.out 2025-01-17 20:39:39.029544127 +0100 >@@ -1,68 +0,0 @@ >-[ >- { >- "log_line": 0, >- "log_part": null, >- "log_time": "2009-07-20 22:59:26.000", >- "log_idle_msecs": 0, >- "log_level": "info", >- "log_mark": 0, >- "log_comment": null, >- "log_tags": null, >- "log_filters": null, >- "c_ip": "192.168.202.254", >- "cs_method": "GET", >- "cs_referer": "-", >- "cs_uri_query": null, >- "cs_uri_stem": "/vmw/cgi/tramp", >- "cs_user_agent": "gPXE/0.9.7", >- "cs_username": "-", >- "cs_version": "HTTP/1.0", >- "sc_bytes": 134, >- "sc_status": 200, >- "cs_host": null >- }, >- { >- "log_line": 1, >- "log_part": null, >- "log_time": "2009-07-20 22:59:29.000", >- "log_idle_msecs": 3000, >- "log_level": "error", >- "log_mark": 0, >- "log_comment": null, >- "log_tags": null, >- "log_filters": null, >- "c_ip": "192.168.202.254", >- "cs_method": "GET", >- "cs_referer": "-", >- "cs_uri_query": null, >- "cs_uri_stem": "/vmw/vSphere/default/vmkboot.gz", >- "cs_user_agent": "gPXE/0.9.7", >- "cs_username": "-", >- "cs_version": "HTTP/1.0", >- "sc_bytes": 46210, >- "sc_status": 404, >- "cs_host": null >- }, >- { >- "log_line": 2, >- "log_part": null, >- "log_time": "2009-07-20 22:59:29.000", >- "log_idle_msecs": 0, >- "log_level": "info", >- "log_mark": 0, >- "log_comment": null, >- "log_tags": null, >- "log_filters": null, >- "c_ip": "192.168.202.254", >- "cs_method": "GET", >- "cs_referer": "-", >- "cs_uri_query": null, >- "cs_uri_stem": "/vmw/vSphere/default/vmkernel.gz", >- "cs_user_agent": "gPXE/0.9.7", >- "cs_username": "-", >- "cs_version": "HTTP/1.0", >- "sc_bytes": 78929, >- "sc_status": 200, >- "cs_host": null >- } >-] >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_cmds.sh_1d92c5bc12f5e7aaa6d84c5ed47f0b9f96e36c6a.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.9174.log >========================= >[0;31mEND[0m test_cmds.sh_1d92c5bc12f5e7aaa6d84c5ed47f0b9f96e36c6a.err >ERR: test: ../src/lnav-test -n -c ;select * from access_log -c :write-json-to - {test_dir}/logfile_access_log.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_cmds.sh_1d92c5bc12f5e7aaa6d84c5ed47f0b9f96e36c6a.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_cmds.sh_1d92c5bc12f5e7aaa6d84c5ed47f0b9f96e36c6a.err 2025-01-17 20:39:39.041544608 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.9174.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:39+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c ;select * from access_log -c :write-jsonlines-to - {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_eb22c3e94c536a1bfaeae0c40d271b5b4b08f4fc.out >[0;32mEND[0m test_cmds.sh_eb22c3e94c536a1bfaeae0c40d271b5b4b08f4fc.out >OUT: test: ../src/lnav-test -n -c ;select * from access_log -c :write-jsonlines-to - {test_dir}/logfile_access_log.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_cmds.sh_eb22c3e94c536a1bfaeae0c40d271b5b4b08f4fc.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_cmds.sh_eb22c3e94c536a1bfaeae0c40d271b5b4b08f4fc.out 2025-01-17 20:39:39.150548983 +0100 >@@ -1,3 +0,0 @@ >-{"log_line":0,"log_part":null,"log_time":"2009-07-20 22:59:26.000","log_idle_msecs":0,"log_level":"info","log_mark":0,"log_comment":null,"log_tags":null,"log_filters":null,"c_ip":"192.168.202.254","cs_method":"GET","cs_referer":"-","cs_uri_query":null,"cs_uri_stem":"/vmw/cgi/tramp","cs_user_agent":"gPXE/0.9.7","cs_username":"-","cs_version":"HTTP/1.0","sc_bytes":134,"sc_status":200,"cs_host":null} >-{"log_line":1,"log_part":null,"log_time":"2009-07-20 22:59:29.000","log_idle_msecs":3000,"log_level":"error","log_mark":0,"log_comment":null,"log_tags":null,"log_filters":null,"c_ip":"192.168.202.254","cs_method":"GET","cs_referer":"-","cs_uri_query":null,"cs_uri_stem":"/vmw/vSphere/default/vmkboot.gz","cs_user_agent":"gPXE/0.9.7","cs_username":"-","cs_version":"HTTP/1.0","sc_bytes":46210,"sc_status":404,"cs_host":null} >-{"log_line":2,"log_part":null,"log_time":"2009-07-20 22:59:29.000","log_idle_msecs":0,"log_level":"info","log_mark":0,"log_comment":null,"log_tags":null,"log_filters":null,"c_ip":"192.168.202.254","cs_method":"GET","cs_referer":"-","cs_uri_query":null,"cs_uri_stem":"/vmw/vSphere/default/vmkernel.gz","cs_user_agent":"gPXE/0.9.7","cs_username":"-","cs_version":"HTTP/1.0","sc_bytes":78929,"sc_status":200,"cs_host":null} >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_cmds.sh_eb22c3e94c536a1bfaeae0c40d271b5b4b08f4fc.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.9195.log >========================= >[0;31mEND[0m test_cmds.sh_eb22c3e94c536a1bfaeae0c40d271b5b4b08f4fc.err >ERR: test: ../src/lnav-test -n -c ;select * from access_log -c :write-jsonlines-to - {test_dir}/logfile_access_log.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_cmds.sh_eb22c3e94c536a1bfaeae0c40d271b5b4b08f4fc.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_cmds.sh_eb22c3e94c536a1bfaeae0c40d271b5b4b08f4fc.err 2025-01-17 20:39:39.162549465 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.9195.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:39+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: env TEST_COMMENT=secure mode write test ../src/lnav-test -n -c ;select * from access_log -c :write-json-to /tmp/bad {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_89afa826d1b33be6926df48443faa1d1c5f285a7.out >[0;32mEND[0m test_cmds.sh_89afa826d1b33be6926df48443faa1d1c5f285a7.out >[0;31mBEGIN[0m test_cmds.sh_89afa826d1b33be6926df48443faa1d1c5f285a7.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.9216.log >========================= >[0;31mEND[0m test_cmds.sh_89afa826d1b33be6926df48443faa1d1c5f285a7.err >ERR: test: env TEST_COMMENT=secure mode write test ../src/lnav-test -n -c ;select * from access_log -c :write-json-to /tmp/bad {test_dir}/logfile_access_log.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_cmds.sh_89afa826d1b33be6926df48443faa1d1c5f285a7.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_cmds.sh_89afa826d1b33be6926df48443faa1d1c5f285a7.err 2025-01-17 20:39:39.280554201 +0100 >@@ -1,6 +1,9 @@ >-[1m[31mâ error[0m: write-json-to -- unavailable in secure mode >-[36m --> [0m[1mcommand-option[0m:2 >-[36m | [0m[37m[40m:[0m[1m[36m[40mwrite-json-to[0m[37m[40m /tmp/bad [0m >-[36m =[0m [36mhelp[0m: [4m:[0m[1m[4mwrite-json-to[0m[4m [[0m[4m--anonymize[0m[4m] [0m[4mpath[0m >- ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ >- Write SQL results to the given file in JSON format >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.9216.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:39+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c ;update generic_log set log_mark=1 -c :pipe-to sed -e 's/World!/Bork!/g' -e 's/2009//g' {test_dir}/logfile_multiline.0 >[0;32mBEGIN[0m test_cmds.sh_1cab7d240cf85ff2c3538f5a06af141b01bc83ad.out >-07-20 22:59:27,672:DEBUG:Hello, Bork! > How are you today? >-07-20 22:59:30,221:ERROR:Goodbye, Bork! >[0;32mEND[0m test_cmds.sh_1cab7d240cf85ff2c3538f5a06af141b01bc83ad.out >[0;31mBEGIN[0m test_cmds.sh_1cab7d240cf85ff2c3538f5a06af141b01bc83ad.err >[0;31mEND[0m test_cmds.sh_1cab7d240cf85ff2c3538f5a06af141b01bc83ad.err > >2025-01-17T20:39:39+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :echo Hello, World! -c :goto 2 -c :pipe-line-to sed -e 's/World!/Bork!/g' -e 's/2009//g' {test_dir}/logfile_multiline.0 >[0;32mBEGIN[0m test_cmds.sh_148007d2626b3c92d00ac31639b6918b1fc4aa60.out >Hello, World! >-07-20 22:59:30,221:ERROR:Goodbye, Bork! >[0;32mEND[0m test_cmds.sh_148007d2626b3c92d00ac31639b6918b1fc4aa60.out >[0;31mBEGIN[0m test_cmds.sh_148007d2626b3c92d00ac31639b6918b1fc4aa60.err >[0;31mEND[0m test_cmds.sh_148007d2626b3c92d00ac31639b6918b1fc4aa60.err > >2025-01-17T20:39:39+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :goto 0 -c :pipe-line-to echo $cs_uri_stem $sc_status {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_d8eeef53a58bdeddbc1028d7c525413e3ca1c8df.out >/vmw/cgi/tramp 200 >[0;32mEND[0m test_cmds.sh_d8eeef53a58bdeddbc1028d7c525413e3ca1c8df.out >[0;31mBEGIN[0m test_cmds.sh_d8eeef53a58bdeddbc1028d7c525413e3ca1c8df.err >[0;31mEND[0m test_cmds.sh_d8eeef53a58bdeddbc1028d7c525413e3ca1c8df.err > >2025-01-17T20:39:39+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :switch-to-view pretty {test_dir}/textfile_json_one_line.0 >[0;32mBEGIN[0m test_cmds.sh_e7e8244fac65bc51dbd5af31be476fe3b8776bfc.out >{ >[35m "foo [0mbar" : null, >[35m "array" : [[0m >[35m 1,[0m >[35m 2,[0m >[35m 3[0m >[35m ],[0m >[35m "obj" : [0m{ > "one[35m" : 1[0m, > [35m [0m"two" [35m: tru[0me > } >} >[0;32mEND[0m test_cmds.sh_e7e8244fac65bc51dbd5af31be476fe3b8776bfc.out >[0;31mBEGIN[0m test_cmds.sh_e7e8244fac65bc51dbd5af31be476fe3b8776bfc.err >[0;31mEND[0m test_cmds.sh_e7e8244fac65bc51dbd5af31be476fe3b8776bfc.err > >2025-01-17T20:39:39+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :switch-to-view pretty {test_dir}/textfile_json_one_line.0 >[0;32mBEGIN[0m test_cmds.sh_e7e8244fac65bc51dbd5af31be476fe3b8776bfc.out >{ >[35m "foo [0mbar" : null, >[35m "array" : [[0m >[35m 1,[0m >[35m 2,[0m >[35m 3[0m >[35m ],[0m >[35m "obj" : [0m{ > "one[35m" : 1[0m, > [35m [0m"two" [35m: tru[0me > } >} >[0;32mEND[0m test_cmds.sh_e7e8244fac65bc51dbd5af31be476fe3b8776bfc.out >[0;31mBEGIN[0m test_cmds.sh_e7e8244fac65bc51dbd5af31be476fe3b8776bfc.err >[0;31mEND[0m test_cmds.sh_e7e8244fac65bc51dbd5af31be476fe3b8776bfc.err > >2025-01-17T20:39:39+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :switch-to-view pretty {test_dir}/textfile_quoted_json.0 >[0;32mBEGIN[0m test_cmds.sh_661ec61acdd8f6fa6ec1e3c2cf5f896eef431351.out >'' >[35m{[0m >[35m "fo[0mo bar" : [35mnull,[0m >[35m [0m "array" : [ >[35m [0m 1[35m,[0m >[35m [0m 2[35m,[0m >[35m [0m 3 > ], > "obj" : { > "one" : 1, > "two" : true > } >} >'' >[0;32mEND[0m test_cmds.sh_661ec61acdd8f6fa6ec1e3c2cf5f896eef431351.out >[0;31mBEGIN[0m test_cmds.sh_661ec61acdd8f6fa6ec1e3c2cf5f896eef431351.err >[0;31mEND[0m test_cmds.sh_661ec61acdd8f6fa6ec1e3c2cf5f896eef431351.err > >2025-01-17T20:39:40+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :switch-to-view pretty {test_dir}/logfile_vami.0 >[0;32mBEGIN[0m test_cmds.sh_8765cbf326648e9014f8cf5f761895010fff443a.out >2015-03-12T23:16:52.071:INFO:com.root:Response : > <?xml version="1.0"?> ><response> > <locale>en-US</locale> > <requestid>ipInfo</requestid> > <value id="ipv4Gateway" actions="enabled">198.51.100.253</value> > <value id="ipv6Gateway" actions="enabled"/> > <value id="ipv6Enabled" actions="enabled">true</value> > <value id="ipv4Enabled" actions="enabled">true</value> > <value id="name" actions="enabled">nic1</value> > <value id="v4config" actions="enabled"> > <value id="defaultGateway" actions="enabled">0.0.0.0</value> > <value id="updateable" actions="enabled">True</value> > <value id="prefix" actions="enabled">22</value> > <value id="mode" actions="enabled">dhcp</value> > <value id="address" actions="enabled">198.51.100.110</value> > <value id="interface" actions="enabled">nic1</value> > </value> > <value id="v6config" actions="enabled"> > <value id="defaultGateway" actions="enabled">fe80::214:f609:19f7:6bf1</value> > <value id="updateable" actions="enabled">True</value> > <value id="interface" actions="enabled">nic1</value> > <value id="dhcp" actions="enabled">False</value> > <value id="autoconf" actions="enabled">False</value> > <value id="addresses" actions="enabled"> > <value id="origin" actions="enabled">other</value> > <value id="status" actions="enabled">preferred</value> > <value id="prefix" actions="enabled">64</value> > <value id="address" actions="enabled">fe80::250:56ff:feaa:5abf</value> > </value> > </value> > <value id="interfaceInfo" actions="enabled"> > <value id="status" actions="enabled">up</value> > <value id="mac" actions="enabled">00:50:56:aa:5a:bf</value> > <value id="name" actions="enabled">nic1</value> > </value> ></response> >[0;32mEND[0m test_cmds.sh_8765cbf326648e9014f8cf5f761895010fff443a.out >[0;31mBEGIN[0m test_cmds.sh_8765cbf326648e9014f8cf5f761895010fff443a.err >[0;31mEND[0m test_cmds.sh_8765cbf326648e9014f8cf5f761895010fff443a.err > >2025-01-17T20:39:40+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :goto 0 -c :switch-to-view pretty {test_dir}/logfile_pretty.0 >[0;32mBEGIN[0m test_cmds.sh_b755a8b48c0f602f0270500b0117b76e11db546e.out >Apr 7 00:49:42 Tim-Stacks-iMac kernel[0]: Ethernet [AppleBCM5701Ethernet]: Link up on en0, 1-Gigabit, Full-duplex, Symmetric flow-control, Debug [ > 796d, > 2301, > 0de1, > 0300, > cde1, > 3800 >] >Apr 7 05:49:53 Tim-Stacks-iMac.local GoogleSoftwareUpdateDaemon[17212]: -[KSUpdateCheckAction performAction] > KSUpdateCheckAction running KSServerUpdateRequest: <KSOmahaServerUpdateRequest:0x511f30 > server= ><KSOmahaServer:0x510d80> > url="https://tools.google.com/service/update2" > runningFetchers=0 > tickets=1 > activeTickets=1 > rollCallTickets=1 > body= > <?xml version="1.0" encoding="UTF-8" standalone="yes"?> > <o:gupdate xmlns:o="http://www.google.com/update2/request" protocol="2.0" version="KeystoneDaemon-1.2.0.7709" ismachine="1" requestid="{0DFDBCD1-5E29-4DFC-BD99-31A2397198FE}"> > <o:os platform="mac" version="MacOSX" sp="10.10.2_x86_64h"></o:os> > <o:app appid="com.google.Keystone" version="1.2.0.7709" lang="en-us" installage="180" brand="GGLG"> > <o:ping r="1" a="1"></o:ping> > <o:updatecheck></o:updatecheck> > </o:app> > </o:gupdate> > > >[33mApr 7 07:31:56[0m[33m [0m[33mTim-Stacks-iMac.local[0m[33m [0m[33mVirtualBox[0m[33m[[0m[33m36403[0m[33m][0m[33m: [0m[33mWARNING: The Gestalt selector gestaltSystemVersion is returning 10.9.2 instead of 10.10.2. Use NSProcessInfo's operatingSystemVersion property to get correct system version number.[0m >[33m Call location:[0m >Apr 7 07:31:56 Tim-Stacks-iMac.local VirtualBox[36403]: 0 CarbonCore 0x00007fff8a9b3d9b ___Gestalt_SystemVersion_block_invoke + 113 >Apr 7 07:31:56 Tim-Stacks-iMac.local VirtualBox[36403]: 1 libdispatch.dylib 0x00007fff8bc84c13 _dispatch_client_callout + 8 >Apr 7 07:32:56 Tim-Stacks-iMac.local logger[234]: Bad data { > abc, > 123, > 456 >) >}] >[0;32mEND[0m test_cmds.sh_b755a8b48c0f602f0270500b0117b76e11db546e.out >[0;31mBEGIN[0m test_cmds.sh_b755a8b48c0f602f0270500b0117b76e11db546e.err >[0;31mEND[0m test_cmds.sh_b755a8b48c0f602f0270500b0117b76e11db546e.err > >2025-01-17T20:39:40+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :set-min-log-level error {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_85ed177028f226e86b1d164eb1a4e18eaf036c9d.out >[31m192.168.202.254[0m[31m - [0m[31m-[0m[31m [[0m[31m20/Jul/2009:22:59:29 +0000[0m[31m] "[0m[31mGET[0m[31m [0m[31m/vmw/vSphere/default/vmkboot.gz[0m[31m [0m[31mHTTP/1.0[0m[31m" 404 46210 "[0m[31m-[0m[31m" "[0m[31mgPXE/0.9.7[0m[31m"[0m >[0;32mEND[0m test_cmds.sh_85ed177028f226e86b1d164eb1a4e18eaf036c9d.out >[0;31mBEGIN[0m test_cmds.sh_85ed177028f226e86b1d164eb1a4e18eaf036c9d.err >[0;31mEND[0m test_cmds.sh_85ed177028f226e86b1d164eb1a4e18eaf036c9d.err > >2025-01-17T20:39:40+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :highlight foobar -c :clear-highlight foobar {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_d76d77ad95b9f120825417a6a8220c13df9541fc.out >192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7" >[31m192.168.202.254[0m[31m - [0m[31m-[0m[31m [[0m[31m20/Jul/2009:22:59:29 +0000[0m[31m] "[0m[31mGET[0m[31m [0m[31m/vmw/vSphere/default/vmkboot.gz[0m[31m [0m[31mHTTP/1.0[0m[31m" 404 46210 "[0m[31m-[0m[31m" "[0m[31mgPXE/0.9.7[0m[31m"[0m >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_cmds.sh_d76d77ad95b9f120825417a6a8220c13df9541fc.out >[0;31mBEGIN[0m test_cmds.sh_d76d77ad95b9f120825417a6a8220c13df9541fc.err >[0;31mEND[0m test_cmds.sh_d76d77ad95b9f120825417a6a8220c13df9541fc.err > >2025-01-17T20:39:40+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :clear-highlight foobar {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_1e1c8492b295913ce5afcd104cde0ec4ca1dcdac.out >[0;32mEND[0m test_cmds.sh_1e1c8492b295913ce5afcd104cde0ec4ca1dcdac.out >[0;31mBEGIN[0m test_cmds.sh_1e1c8492b295913ce5afcd104cde0ec4ca1dcdac.err >[1m[31mâ error[0m: highlight does not exist -- foobar >[36m --> [0m[1mcommand-option[0m:1 >[36m | [0m[37m[40m:[0m[1m[36m[40mclear-highlight[0m[37m[40m foobar [0m >[36m =[0m [36mhelp[0m: [4m:[0m[1m[4mclear-highlight[0m[4m [0m[4mpattern[0m > ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Remove a previously set highlight regular expression >[0;31mEND[0m test_cmds.sh_1e1c8492b295913ce5afcd104cde0ec4ca1dcdac.err > >2025-01-17T20:39:40+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :zoom-to 4-hour {test_dir}/textfile_json_indented.0 >[0;32mBEGIN[0m test_cmds.sh_ac45fb0f8f9578c3ded0855f694698ec38ce31ad.out >{ > [35m"foo bar"[0m: null, > [35m"array"[0m: [ > 1, > 2, > 3 > ], > [35m"obj"[0m: { > [35m"one"[0m: 1, > [35m"two"[0m: true > } >} >[0;32mEND[0m test_cmds.sh_ac45fb0f8f9578c3ded0855f694698ec38ce31ad.out >[0;31mBEGIN[0m test_cmds.sh_ac45fb0f8f9578c3ded0855f694698ec38ce31ad.err >[0;31mEND[0m test_cmds.sh_ac45fb0f8f9578c3ded0855f694698ec38ce31ad.err > >2025-01-17T20:39:40+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :shexec echo 'Jan 3 09:23:38 veridian automount[16442]: attempting to mount entry /auto/opt' >> logfile_rollover.1.live -c :rebuild -c :switch-to-view histogram -c :goto 0 logfile_rollover.1.live >[0;32mBEGIN[0m test_cmds.sh_a00943ef715598c7554b85de8502454e41bb9e28.out >[7m Thu Nov 03 09:20:00 [0m[1m[7m[31m 1 normal 2 errors 0 warnings [0m 0 marks >[7m Thu Nov 03 09:45:00 [0m 1 normal 0 errors 0 warnings 0 marks >[1m[7m[31m Fri Feb 03 09:20:00 [0m 0 normal 1 errors 0 warnings 0 marks >[7m Wed Jan 03 09:20:00 [0m 1 normal 0 errors 0 warnings 0 marks >[0;32mEND[0m test_cmds.sh_a00943ef715598c7554b85de8502454e41bb9e28.out >[0;31mBEGIN[0m test_cmds.sh_a00943ef715598c7554b85de8502454e41bb9e28.err >[0;31mEND[0m test_cmds.sh_a00943ef715598c7554b85de8502454e41bb9e28.err > >2025-01-17T20:39:40+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :goto 0 -c :goto next year logfile_rollover.1.live >[0;32mBEGIN[0m test_cmds.sh_b9f8bf53ec2736432eb048d94a391175eb4dc5bf.out >[4m[31mFeb 3 09:23:38[0m[4m[31m [0m[4m[31mveridian[0m[4m[31m [0m[4m[31mautomount[0m[4m[31m[[0m[4m[31m7998[0m[4m[31m][0m[4m[31m: [0m[4m[31mlookup(file): lookup for foobar failed[0m >Jan 3 09:23:38 veridian automount[16442]: attempting to mount entry /auto/opt >[0;32mEND[0m test_cmds.sh_b9f8bf53ec2736432eb048d94a391175eb4dc5bf.out >[0;31mBEGIN[0m test_cmds.sh_b9f8bf53ec2736432eb048d94a391175eb4dc5bf.err >[0;31mEND[0m test_cmds.sh_b9f8bf53ec2736432eb048d94a391175eb4dc5bf.err > >2025-01-17T20:39:41+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :switch-to-view histogram -c :zoom-to 4-hour {test_dir}/logfile_syslog.0 >[0;32mBEGIN[0m test_cmds.sh_dbdd62995fdefc8318053af05a32416eccfa79fc.out >[7m [0m[1m[7m[31mS[0mat Nov 03 08:00:00 2 normal 2 errors 0 warnings 0 marks >[0;32mEND[0m test_cmds.sh_dbdd62995fdefc8318053af05a32416eccfa79fc.out >[0;31mBEGIN[0m test_cmds.sh_dbdd62995fdefc8318053af05a32416eccfa79fc.err >[0;31mEND[0m test_cmds.sh_dbdd62995fdefc8318053af05a32416eccfa79fc.err > >2025-01-17T20:39:41+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :switch-to-view histogram -c :zoom-to 1-day {test_dir}/logfile_syslog.0 >[0;32mBEGIN[0m test_cmds.sh_ccd326da92d1cacda63501cd1a3077381a18e8f2.out >[7m [0m[1m[7m[31mS[0mat Nov 03 00:00:00 2 normal 2 errors 0 warnings 0 marks >[0;32mEND[0m test_cmds.sh_ccd326da92d1cacda63501cd1a3077381a18e8f2.out >[0;31mBEGIN[0m test_cmds.sh_ccd326da92d1cacda63501cd1a3077381a18e8f2.err >[0;31mEND[0m test_cmds.sh_ccd326da92d1cacda63501cd1a3077381a18e8f2.err > >2025-01-17T20:39:41+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :filter-in sudo -c :switch-to-view histogram -c :zoom-to 4-hour {test_dir}/logfile_syslog.0 >[0;32mBEGIN[0m test_cmds.sh_af0fcbd30b3fd0d13477aa3325ef0302052a4d9f.out >[7m [0mSat Nov 03 08:00:00 1 normal 0 errors 0 warnings 0 marks >[0;32mEND[0m test_cmds.sh_af0fcbd30b3fd0d13477aa3325ef0302052a4d9f.out >[0;31mBEGIN[0m test_cmds.sh_af0fcbd30b3fd0d13477aa3325ef0302052a4d9f.err >[0;31mEND[0m test_cmds.sh_af0fcbd30b3fd0d13477aa3325ef0302052a4d9f.err > >2025-01-17T20:39:41+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :mark-expr {test_dir}/logfile_syslog.0 >[0;32mBEGIN[0m test_cmds.sh_7e14e7f18219719453838835fa96c3451f78996d.out >[0;32mEND[0m test_cmds.sh_7e14e7f18219719453838835fa96c3451f78996d.out >[0;31mBEGIN[0m test_cmds.sh_7e14e7f18219719453838835fa96c3451f78996d.err >[1m[31mâ error[0m: expecting an SQL expression >[36m --> [0m[1mcommand-option[0m:1 >[36m | [0m[37m[40m:mark-expr [0m >[36m =[0m [36mhelp[0m: [4m:[0m[1m[4mmark-expr[0m[4m [0m[4mexpr[0m > ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Set the bookmark expression >[0;31mEND[0m test_cmds.sh_7e14e7f18219719453838835fa96c3451f78996d.err > >2025-01-17T20:39:41+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :mark-expr :log_procname lik {test_dir}/logfile_syslog.0 >[0;32mBEGIN[0m test_cmds.sh_ed5b73be0b991e0e8d6735e31df5b37c4286321b.out >[0;32mEND[0m test_cmds.sh_ed5b73be0b991e0e8d6735e31df5b37c4286321b.out >[0;31mBEGIN[0m test_cmds.sh_ed5b73be0b991e0e8d6735e31df5b37c4286321b.err >[1m[31mâ error[0m: invalid mark expression: [37m[40m:log_procname[0m[37m[40m [0m[37m[40mlik[0m > [1m[31mreason[0m: near "lik": syntax error >[36m --> [0m[1mcommand-option[0m:1 >[36m | [0m[37m[40m:[0m[1m[36m[40mmark-expr[0m[37m[40m [0m[37m[40m:log_procname[0m[37m[40m [0m[37m[40mlik[0m[37m[40m [0m >[36m =[0m [36mhelp[0m: [4m:[0m[1m[4mmark-expr[0m[4m [0m[4mexpr[0m > ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Set the bookmark expression >[0;31mEND[0m test_cmds.sh_ed5b73be0b991e0e8d6735e31df5b37c4286321b.err > >2025-01-17T20:39:41+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :mark-expr :cs_uri_stem LIKE '%vmk%' -c :write-to - {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_624a41e152675575f4b07c19b2cf0e3a028429a2.out >[7m[31m192.168.202.254[0m[7m[31m - [0m[7m[31m-[0m[7m[31m [[0m[7m[31m20/Jul/2009:22:59:29 +0000[0m[7m[31m] "[0m[7m[31mGET[0m[7m[31m [0m[7m[31m/vmw/vSphere/default/vmkboot.gz[0m[7m[31m [0m[7m[31mHTTP/1.0[0m[7m[31m" 404 46210 "[0m[7m[31m-[0m[7m[31m" "[0m[7m[31mgPXE/0.9.7[0m[7m[31m"[0m >[7m192.168.202.254[0m[7m - [0m[7m-[0m[7m [[0m[7m20/Jul/2009:22:59:29 +0000[0m[7m] "[0m[7mGET[0m[7m [0m[7m/vmw/vSphere/default/vmkernel.gz[0m[7m [0m[7mHTTP/1.0[0m[7m" 200 78929 "[0m[7m-[0m[7m" "[0m[7mgPXE/0.9.7[0m[7m"[0m >[0;32mEND[0m test_cmds.sh_624a41e152675575f4b07c19b2cf0e3a028429a2.out >[0;31mBEGIN[0m test_cmds.sh_624a41e152675575f4b07c19b2cf0e3a028429a2.err >[0;31mEND[0m test_cmds.sh_624a41e152675575f4b07c19b2cf0e3a028429a2.err > >2025-01-17T20:39:41+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :goto 0 -c :mark -c :switch-to-view histogram {test_dir}/logfile_syslog.0 >[0;32mBEGIN[0m test_cmds.sh_c7fabc25374ff47c47931f63b1d697061b816a28.out >[7m Sat Nov 03 09:20:0[0m[1m[7m[31m0 1 normal 2 errors [0m[7m[32m 0 warnings [0m 1 marks >[7m Sat Nov 03 09:45:0[0m0 1 normal 0 errors 0 warnings 0 marks >[0;32mEND[0m test_cmds.sh_c7fabc25374ff47c47931f63b1d697061b816a28.out >[0;31mBEGIN[0m test_cmds.sh_c7fabc25374ff47c47931f63b1d697061b816a28.err >[0;31mEND[0m test_cmds.sh_c7fabc25374ff47c47931f63b1d697061b816a28.err > >2025-01-17T20:39:41+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :zoom-to bad {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_6e016c0ed61fc652be1a79b864875ffede64f281.out >[0;32mEND[0m test_cmds.sh_6e016c0ed61fc652be1a79b864875ffede64f281.out >[0;31mBEGIN[0m test_cmds.sh_6e016c0ed61fc652be1a79b864875ffede64f281.err >[1m[31mâ error[0m: invalid zoom level: [1mbad[0m >[36m --> [0m[1mcommand-option[0m:1 >[36m | [0m[37m[40m:[0m[1m[36m[40mzoom-to[0m[37m[40m bad [0m >[36m =[0m [36mhelp[0m: available levels: 1-second, 30-second, 1-minute, 5-minute, 15-minute, 1-hour, 4-hour, 8-hour, 1-day, 1-week >[0;31mEND[0m test_cmds.sh_6e016c0ed61fc652be1a79b864875ffede64f281.err > >2025-01-17T20:39:41+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -f {test_dir}/multiline.lnav {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_819b3dd21348f7242f3914ad0a8c5b1cdb3f91af.out >Hello: Jules >[0;32mEND[0m test_cmds.sh_819b3dd21348f7242f3914ad0a8c5b1cdb3f91af.out >[0;31mBEGIN[0m test_cmds.sh_819b3dd21348f7242f3914ad0a8c5b1cdb3f91af.err >[0;31mEND[0m test_cmds.sh_819b3dd21348f7242f3914ad0a8c5b1cdb3f91af.err > >2025-01-17T20:39:42+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: env TEST_COMMENT=text view ../src/lnav-test -n -c :switch-to-view text >[0;32mBEGIN[0m test_cmds.sh_c4a15771f7e1487bf73b2e9d1564ad8ecfd76c7e.out >Hello, World! >[0;32mEND[0m test_cmds.sh_c4a15771f7e1487bf73b2e9d1564ad8ecfd76c7e.out >[0;31mBEGIN[0m test_cmds.sh_c4a15771f7e1487bf73b2e9d1564ad8ecfd76c7e.err >[0;31mEND[0m test_cmds.sh_c4a15771f7e1487bf73b2e9d1564ad8ecfd76c7e.err > >2025-01-17T20:39:42+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -Nnv -c :hide-lines-before 2009-07-20T22:59:29 -c :hide-lines-before >[0;32mBEGIN[0m test_cmds.sh_8d5b43c693e78804a8fb06989392fa8cccb46b7b.out >info: hiding lines before 2009-07-20 22:59:29.000 >info: hiding lines before 2009-07-20 22:59:29.000 >[0;32mEND[0m test_cmds.sh_8d5b43c693e78804a8fb06989392fa8cccb46b7b.out >[0;31mBEGIN[0m test_cmds.sh_8d5b43c693e78804a8fb06989392fa8cccb46b7b.err >[0;31mEND[0m test_cmds.sh_8d5b43c693e78804a8fb06989392fa8cccb46b7b.err > >2025-01-17T20:39:42+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -Nnv -c :hide-lines-after 2009-07-20T22:59:29 -c :hide-lines-after >[0;32mBEGIN[0m test_cmds.sh_e495cf059477e3f80c3241c6f8d5808b6f1d19c7.out >info: hiding lines after 2009-07-20 22:59:29.000 >info: hiding lines after 2009-07-20 22:59:29.000 >[0;32mEND[0m test_cmds.sh_e495cf059477e3f80c3241c6f8d5808b6f1d19c7.out >[0;31mBEGIN[0m test_cmds.sh_e495cf059477e3f80c3241c6f8d5808b6f1d19c7.err >[0;31mEND[0m test_cmds.sh_e495cf059477e3f80c3241c6f8d5808b6f1d19c7.err > >2025-01-17T20:39:42+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -Nnv -c :hide-lines-before 2009-07-20T22:00:29 -c :hide-lines-after 2009-07-20T22:59:29 -c :hide-lines-before >[0;32mBEGIN[0m test_cmds.sh_f788d5f5932905d09ecbd581040ec5ce76459da5.out >info: hiding lines before 2009-07-20 22:00:29.000 >info: hiding lines after 2009-07-20 22:59:29.000 >info: hiding lines before 2009-07-20 22:00:29.000 and after 2009-07-20 22:59:29.000 >[0;32mEND[0m test_cmds.sh_f788d5f5932905d09ecbd581040ec5ce76459da5.out >[0;31mBEGIN[0m test_cmds.sh_f788d5f5932905d09ecbd581040ec5ce76459da5.err >[0;31mEND[0m test_cmds.sh_f788d5f5932905d09ecbd581040ec5ce76459da5.err > >2025-01-17T20:39:42+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :hide-lines-before 2009-07-20T22:59:29 {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_109a44ac6a8f1be2736c8e9c47aeed187e0581ee.out >[31m192.168.202.254[0m[31m - [0m[31m-[0m[31m [[0m[31m20/Jul/2009:22:59:29 +0000[0m[31m] "[0m[31mGET[0m[31m [0m[31m/vmw/vSphere/default/vmkboot.gz[0m[31m [0m[31mHTTP/1.0[0m[31m" 404 46210 "[0m[31m-[0m[31m" "[0m[31mgPXE/0.9.7[0m[31m"[0m >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_cmds.sh_109a44ac6a8f1be2736c8e9c47aeed187e0581ee.out >[0;31mBEGIN[0m test_cmds.sh_109a44ac6a8f1be2736c8e9c47aeed187e0581ee.err >[0;31mEND[0m test_cmds.sh_109a44ac6a8f1be2736c8e9c47aeed187e0581ee.err > >2025-01-17T20:39:42+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :hide-lines-after 2009-07-20T22:59:26 {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_be3b7c5874b5f4d86cc230bd2f9802c98909e148.out >192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7" >[0;32mEND[0m test_cmds.sh_be3b7c5874b5f4d86cc230bd2f9802c98909e148.out >[0;31mBEGIN[0m test_cmds.sh_be3b7c5874b5f4d86cc230bd2f9802c98909e148.err >[0;31mEND[0m test_cmds.sh_be3b7c5874b5f4d86cc230bd2f9802c98909e148.err > >2025-01-17T20:39:42+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :hide-lines-after 2009-07-20T22:59:26 -c :show-lines-before-and-after {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_73ea99c84fb1d4570e8bcd45c423b4a28fe41e81.out >192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7" >[31m192.168.202.254[0m[31m - [0m[31m-[0m[31m [[0m[31m20/Jul/2009:22:59:29 +0000[0m[31m] "[0m[31mGET[0m[31m [0m[31m/vmw/vSphere/default/vmkboot.gz[0m[31m [0m[31mHTTP/1.0[0m[31m" 404 46210 "[0m[31m-[0m[31m" "[0m[31mgPXE/0.9.7[0m[31m"[0m >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_cmds.sh_73ea99c84fb1d4570e8bcd45c423b4a28fe41e81.out >[0;31mBEGIN[0m test_cmds.sh_73ea99c84fb1d4570e8bcd45c423b4a28fe41e81.err >[0;31mEND[0m test_cmds.sh_73ea99c84fb1d4570e8bcd45c423b4a28fe41e81.err > >2025-01-17T20:39:42+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :echo Hello, \$XYZ! {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_29f0c808f4e93c6ef3890e6b793bee274a5b36ca.out >Hello, $XYZ! >[0;32mEND[0m test_cmds.sh_29f0c808f4e93c6ef3890e6b793bee274a5b36ca.out >[0;31mBEGIN[0m test_cmds.sh_29f0c808f4e93c6ef3890e6b793bee274a5b36ca.err >[0;31mEND[0m test_cmds.sh_29f0c808f4e93c6ef3890e6b793bee274a5b36ca.err > >2025-01-17T20:39:43+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :echo -n Hello, -c :echo World! {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_b5a530d16c982cf769151291f0bfd612ea71183f.out >Hello, World! >[0;32mEND[0m test_cmds.sh_b5a530d16c982cf769151291f0bfd612ea71183f.out >[0;31mBEGIN[0m test_cmds.sh_b5a530d16c982cf769151291f0bfd612ea71183f.err >[0;31mEND[0m test_cmds.sh_b5a530d16c982cf769151291f0bfd612ea71183f.err > >2025-01-17T20:39:43+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :echo Hello, $XYZ! {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_cmds.sh_34a6bcaa2877471b8ea718374101fa9ce3b78235.out >Hello, World! >[0;32mEND[0m test_cmds.sh_34a6bcaa2877471b8ea718374101fa9ce3b78235.out >[0;31mBEGIN[0m test_cmds.sh_34a6bcaa2877471b8ea718374101fa9ce3b78235.err >[0;31mEND[0m test_cmds.sh_34a6bcaa2877471b8ea718374101fa9ce3b78235.err >FAIL test_cmds.sh (exit status: 1) > >FAIL: test_events.sh >==================== > > >2025-01-17T20:39:30+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c ;SELECT json(content) as content FROM lnav_events -c :write-jsonlines-to - {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_events.sh_3dae146ef3bf201c43656344803694a34a3dbfec.out >[0;32mEND[0m test_events.sh_3dae146ef3bf201c43656344803694a34a3dbfec.out >OUT: test: ../src/lnav-test -n -c ;SELECT json(content) as content FROM lnav_events -c :write-jsonlines-to - {test_dir}/logfile_access_log.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_events.sh_3dae146ef3bf201c43656344803694a34a3dbfec.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_events.sh_3dae146ef3bf201c43656344803694a34a3dbfec.out 2025-01-17 20:39:30.912218338 +0100 >@@ -1,2 +0,0 @@ >-{"content":{"$schema":"https://lnav.org/event-file-open-v1.schema.json","filename":"{test_dir}/logfile_access_log.0"}} >-{"content":{"$schema":"https://lnav.org/event-file-format-detected-v1.schema.json","filename":"{test_dir}/logfile_access_log.0","format":"access_log"}} >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_events.sh_3dae146ef3bf201c43656344803694a34a3dbfec.err >lnav-test: sqlite3.c:84160: sqlite3ValueText: Assertion `pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > events-home/.lnav/crash/crash-2013-06-06-21-13-20.1801.log >========================= >[0;31mEND[0m test_events.sh_3dae146ef3bf201c43656344803694a34a3dbfec.err >ERR: test: ../src/lnav-test -n -c ;SELECT json(content) as content FROM lnav_events -c :write-jsonlines-to - {test_dir}/logfile_access_log.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_events.sh_3dae146ef3bf201c43656344803694a34a3dbfec.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_events.sh_3dae146ef3bf201c43656344803694a34a3dbfec.err 2025-01-17 20:39:30.925218860 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:84160: sqlite3ValueText: Assertion `pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ events-home/.lnav/crash/crash-2013-06-06-21-13-20.1801.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -nN -c :config /log/watch-expressions/http-errors/expr sc_status >= 400 AND bad >[0;32mBEGIN[0m test_events.sh_d9c7907f907b2335e1328b23fdc46d0968a608d9.out >[0;32mEND[0m test_events.sh_d9c7907f907b2335e1328b23fdc46d0968a608d9.out >[0;31mBEGIN[0m test_events.sh_d9c7907f907b2335e1328b23fdc46d0968a608d9.err >[1m[31mâ error[0m: invalid value for property â[1m/log/watch-expressions/http-errors/expr[0mâ > [1m[31mreason[0m: SQL expression is invalid >[1m[31m | [0m [1m[31mreason[0m: no such column: sc_status >[1m[31m | [0m [36m --> [0m[1m/log/watch-expressions/http-errors/expr[0m >[1m[31m | [0m [36m | [0m[37m[40msc_status[0m[37m[40m [0m[1m[37m[40m>[0m[1m[37m[40m=[0m[37m[40m [0m[1m[37m[40m400[0m[37m[40m [0m[1m[36m[40mAND[0m[37m[40m [0m[37m[40mbad[0m[37m[40m [0m >[36m --> [0m[1mcommand-option[0m:1 >[36m =[0m [36mhelp[0m: [1mProperty Synopsis[0m > [1m/log/watch-expressions/http-errors/expr[0m [4m<SQL-expression>[0m > [1mDescription[0m > The SQL expression to execute for each input line. If expression evaluates to true, a 'log message detected' event will be published. >[0;31mEND[0m test_events.sh_d9c7907f907b2335e1328b23fdc46d0968a608d9.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -nN -c :config /log/watch-expressions/http-errors/expr :sc_status >= 400 >[0;32mBEGIN[0m test_events.sh_6f9523d43f174397829b6a7fe6ee0090d97df5f9.out >[0;32mEND[0m test_events.sh_6f9523d43f174397829b6a7fe6ee0090d97df5f9.out >[0;31mBEGIN[0m test_events.sh_6f9523d43f174397829b6a7fe6ee0090d97df5f9.err >[0;31mEND[0m test_events.sh_6f9523d43f174397829b6a7fe6ee0090d97df5f9.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: env TEST_COMMENT=watch expression generate detect event ../src/lnav-test -n -c ;SELECT json(content) as content FROM lnav_events -c :write-jsonlines-to - {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_events.sh_ed8dc44add223341c03ccb7b3e18371bdb42b710.out >[0;32mEND[0m test_events.sh_ed8dc44add223341c03ccb7b3e18371bdb42b710.out >OUT: test: env TEST_COMMENT=watch expression generate detect event ../src/lnav-test -n -c ;SELECT json(content) as content FROM lnav_events -c :write-jsonlines-to - {test_dir}/logfile_access_log.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_events.sh_ed8dc44add223341c03ccb7b3e18371bdb42b710.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_events.sh_ed8dc44add223341c03ccb7b3e18371bdb42b710.out 2025-01-17 20:39:31.314234473 +0100 >@@ -1,3 +0,0 @@ >-{"content":{"$schema":"https://lnav.org/event-file-open-v1.schema.json","filename":"{test_dir}/logfile_access_log.0"}} >-{"content":{"$schema":"https://lnav.org/event-file-format-detected-v1.schema.json","filename":"{test_dir}/logfile_access_log.0","format":"access_log"}} >-{"content":{"$schema":"https://lnav.org/event-log-msg-detected-v1.schema.json","watch-name":"http-errors","filename":"{test_dir}/logfile_access_log.0","line-number":1,"format":"access_log","timestamp":"2009-07-20T22:59:29.000","values":{"body":"","c_ip":"192.168.202.254","cs_method":"GET","cs_referer":"-","cs_uri_query":null,"cs_uri_stem":"/vmw/vSphere/default/vmkboot.gz","cs_user_agent":"gPXE/0.9.7","cs_username":"-","cs_version":"HTTP/1.0","sc_bytes":46210,"sc_status":404,"timestamp":"20/Jul/2009:22:59:29 +0000"}}} >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_events.sh_ed8dc44add223341c03ccb7b3e18371bdb42b710.err >lnav-test: sqlite3.c:84160: sqlite3ValueText: Assertion `pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > events-home/.lnav/crash/crash-2013-06-06-21-13-20.3636.log >========================= >[0;31mEND[0m test_events.sh_ed8dc44add223341c03ccb7b3e18371bdb42b710.err >ERR: test: env TEST_COMMENT=watch expression generate detect event ../src/lnav-test -n -c ;SELECT json(content) as content FROM lnav_events -c :write-jsonlines-to - {test_dir}/logfile_access_log.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_events.sh_ed8dc44add223341c03ccb7b3e18371bdb42b710.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_events.sh_ed8dc44add223341c03ccb7b3e18371bdb42b710.err 2025-01-17 20:39:31.327234995 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:84160: sqlite3ValueText: Assertion `pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ events-home/.lnav/crash/crash-2013-06-06-21-13-20.3636.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: env TEST_COMMENT=show the configuration ../src/lnav-test -nN -c :config /log/watch-expressions >[0;32mBEGIN[0m test_events.sh_153e221f3cb50f4d3e4581be0bf311e62489c42d.out >/log/watch-expressions = { > "http-errors": { > "expr": ":sc_status >= 400", > "enabled": true > } >} >[0;32mEND[0m test_events.sh_153e221f3cb50f4d3e4581be0bf311e62489c42d.out >[0;31mBEGIN[0m test_events.sh_153e221f3cb50f4d3e4581be0bf311e62489c42d.err >[0;31mEND[0m test_events.sh_153e221f3cb50f4d3e4581be0bf311e62489c42d.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: env TEST_COMMENT=delete the configuration ../src/lnav-test -nN -c :reset-config /log/watch-expressions/http-errors/ >[0;32mBEGIN[0m test_events.sh_09ba47d70bfca88e89faf29598c1095292cad435.out >[0;32mEND[0m test_events.sh_09ba47d70bfca88e89faf29598c1095292cad435.out >[0;31mBEGIN[0m test_events.sh_09ba47d70bfca88e89faf29598c1095292cad435.err >[0;31mEND[0m test_events.sh_09ba47d70bfca88e89faf29598c1095292cad435.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: env TEST_COMMENT=config should be gone now ../src/lnav-test -nN -c :config /log/watch-expressions >[0;32mBEGIN[0m test_events.sh_729f77b8e7136d64d22a6610a80ba6b584a2d896.out >/log/watch-expressions = { > >} >[0;32mEND[0m test_events.sh_729f77b8e7136d64d22a6610a80ba6b584a2d896.out >[0;31mBEGIN[0m test_events.sh_729f77b8e7136d64d22a6610a80ba6b584a2d896.err >[0;31mEND[0m test_events.sh_729f77b8e7136d64d22a6610a80ba6b584a2d896.err >FAIL test_events.sh (exit status: 1) > >FAIL: test_meta.sh >================== > > >2025-01-17T20:39:30+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -dln.dbg -c :comment Hello, World! -c :tag foo -c :save-session -c :write-screen-to - {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_meta.sh_45ff39a3d0ac0ca0c95aaca14d043450cec1cedd.out >192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7" > â [32mHello, World![0m > â #foo >[31m192.168.202.254[0m[31m - [0m[31m-[0m[31m [[0m[31m20/Jul/2009:22:59:29 +0000[0m[31m] "[0m[31mGET[0m[31m [0m[31m/vmw/vSphere/default/vmkboot.gz[0m[31m [0m[31mHTTP/1.0[0m[31m" 404 46210 "[0m[31m-[0m[31m" "[0m[31mgPXE/0.9.7[0m[31m"[0m >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_meta.sh_45ff39a3d0ac0ca0c95aaca14d043450cec1cedd.out >[0;31mBEGIN[0m test_meta.sh_45ff39a3d0ac0ca0c95aaca14d043450cec1cedd.err >[0;31mEND[0m test_meta.sh_45ff39a3d0ac0ca0c95aaca14d043450cec1cedd.err >total 0 >drwxr-xr-x 3 portage portage 60 Jan 17 20:39 . >drwxr-xr-x 15 portage portage 13K Jan 17 20:39 .. >drwxr-xr-x 3 portage portage 60 Jan 17 20:39 .config >meta-sessions >meta-sessions/.config >meta-sessions/.config/lnav >meta-sessions/.config/lnav/view-info-f182207189d6233b3c22badbaac023cf.ts1370546000.ppid1389.json >meta-sessions/.config/lnav/log_metadata.db >meta-sessions/.config/lnav/crash >meta-sessions/.config/lnav/stdin-captures >meta-sessions/.config/lnav/staging >meta-sessions/.config/lnav/formats >meta-sessions/.config/lnav/formats/installed >meta-sessions/.config/lnav/formats/default >meta-sessions/.config/lnav/formats/default/search-for.lnav >meta-sessions/.config/lnav/formats/default/rename-stdin.lnav >meta-sessions/.config/lnav/formats/default/partition-by-boot.lnav >meta-sessions/.config/lnav/formats/default/lnav-pop-view.lnav >meta-sessions/.config/lnav/formats/default/dhclient-summary.lnav >meta-sessions/.config/lnav/formats/default/dump-pid.sh >meta-sessions/.config/lnav/formats/default/xmlrpc_log.json.sample >meta-sessions/.config/lnav/formats/default/vmw_py_log.json.sample >meta-sessions/.config/lnav/formats/default/vmw_vc_svc_log.json.sample >meta-sessions/.config/lnav/formats/default/vmw_log.json.sample >meta-sessions/.config/lnav/formats/default/vmk_log.json.sample >meta-sessions/.config/lnav/formats/default/vdsm_log.json.sample >meta-sessions/.config/lnav/formats/default/uwsgi_log.json.sample >meta-sessions/.config/lnav/formats/default/unifi_log.json.sample >meta-sessions/.config/lnav/formats/default/tcsh_history.json.sample >meta-sessions/.config/lnav/formats/default/tcf_log.json.sample >meta-sessions/.config/lnav/formats/default/s3_log.json.sample >meta-sessions/.config/lnav/formats/default/syslog_log.json.sample >meta-sessions/.config/lnav/formats/default/sudo_log.json.sample >meta-sessions/.config/lnav/formats/default/strace_log.json.sample >meta-sessions/.config/lnav/formats/default/sssd_log.json.sample >meta-sessions/.config/lnav/formats/default/snaplogic_log.json.sample >meta-sessions/.config/lnav/formats/default/procstate_log.json.sample >meta-sessions/.config/lnav/formats/default/pcap_log.json.sample >meta-sessions/.config/lnav/formats/default/papertrail_log.json.sample >meta-sessions/.config/lnav/formats/default/page_log.json.sample >meta-sessions/.config/lnav/formats/default/openstack_log.json.sample >meta-sessions/.config/lnav/formats/default/openamdb_log.json.sample >meta-sessions/.config/lnav/formats/default/openam_log.json.sample >meta-sessions/.config/lnav/formats/default/katello_log.json.sample >meta-sessions/.config/lnav/formats/default/journald_json_log.json.sample >meta-sessions/.config/lnav/formats/default/java_log.json.sample >meta-sessions/.config/lnav/formats/default/haproxy_log.json.sample >meta-sessions/.config/lnav/formats/default/glog_log.json.sample >meta-sessions/.config/lnav/formats/default/fsck_hfs_log.json.sample >meta-sessions/.config/lnav/formats/default/esx_syslog_log.json.sample >meta-sessions/.config/lnav/formats/default/error_log.json.sample >meta-sessions/.config/lnav/formats/default/engine_log.json.sample >meta-sessions/.config/lnav/formats/default/elb_log.json.sample >meta-sessions/.config/lnav/formats/default/dpkg_log.json.sample >meta-sessions/.config/lnav/formats/default/cups_log.json.sample >meta-sessions/.config/lnav/formats/default/cloudvm_ram_log.json.sample >meta-sessions/.config/lnav/formats/default/cloudflare_log.json.sample >meta-sessions/.config/lnav/formats/default/choose_repo_log.json.sample >meta-sessions/.config/lnav/formats/default/candlepin_log.json.sample >meta-sessions/.config/lnav/formats/default/bunyan_log.json.sample >meta-sessions/.config/lnav/formats/default/block_log.json.sample >meta-sessions/.config/lnav/formats/default/alb_log.json.sample >meta-sessions/.config/lnav/formats/default/access_log.json.sample >meta-sessions/.config/lnav/configs >meta-sessions/.config/lnav/configs/installed >meta-sessions/.config/lnav/configs/default >meta-sessions/.config/lnav/configs/default/solarized-light.json.sample >meta-sessions/.config/lnav/configs/default/solarized-dark.json.sample >meta-sessions/.config/lnav/configs/default/night-owl.json.sample >meta-sessions/.config/lnav/configs/default/monocai.json.sample >meta-sessions/.config/lnav/configs/default/grayscale.json.sample >meta-sessions/.config/lnav/configs/default/eldar.json.sample >meta-sessions/.config/lnav/configs/default/default-theme.json.sample >meta-sessions/.config/lnav/configs/default/us-keymap.json.sample >meta-sessions/.config/lnav/configs/default/uk-keymap.json.sample >meta-sessions/.config/lnav/configs/default/sv-keymap.json.sample >meta-sessions/.config/lnav/configs/default/fr-keymap.json.sample >meta-sessions/.config/lnav/configs/default/default-keymap.json.sample >meta-sessions/.config/lnav/configs/default/de-keymap.json.sample >meta-sessions/.config/lnav/configs/default/root-config.json.sample > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :load-session -c ;UPDATE access_log SET log_mark = 1 -c :write-to - {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_meta.sh_d6af0b41066ca3be0bbce89c83c011f4ecfa516e.out >[7m192.168.202.254[0m[7m - [0m[7m-[0m[7m [[0m[7m20/Jul/2009:22:59:26 +0000[0m[7m] "[0m[7mGET[0m[7m [0m[7m/vmw/cgi/tramp[0m[7m [0m[7mHTTP/1.0[0m[7m" 200 134 "[0m[7m-[0m[7m" "[0m[7mgPXE/0.9.7[0m[7m"[0m >[7m[31m192.168.202.254[0m[7m[31m - [0m[7m[31m-[0m[7m[31m [[0m[7m[31m20/Jul/2009:22:59:29 +0000[0m[7m[31m] "[0m[7m[31mGET[0m[7m[31m [0m[7m[31m/vmw/vSphere/default/vmkboot.gz[0m[7m[31m [0m[7m[31mHTTP/1.0[0m[7m[31m" 404 46210 "[0m[7m[31m-[0m[7m[31m" "[0m[7m[31mgPXE/0.9.7[0m[7m[31m"[0m > â [32mHello, World![0m > â #foo >[7m192.168.202.254[0m[7m - [0m[7m-[0m[7m [[0m[7m20/Jul/2009:22:59:29 +0000[0m[7m] "[0m[7mGET[0m[7m [0m[7m/vmw/vSphere/default/vmkernel.gz[0m[7m [0m[7mHTTP/1.0[0m[7m" 200 78929 "[0m[7m-[0m[7m" "[0m[7mgPXE/0.9.7[0m[7m"[0m >[0;32mEND[0m test_meta.sh_d6af0b41066ca3be0bbce89c83c011f4ecfa516e.out >[0;31mBEGIN[0m test_meta.sh_d6af0b41066ca3be0bbce89c83c011f4ecfa516e.err >[0;31mEND[0m test_meta.sh_d6af0b41066ca3be0bbce89c83c011f4ecfa516e.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :load-session -c :untag #foo {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_meta.sh_fdf4a91aa55262255816dff7d605f1f0a5d6fe92.out >192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7" > â [32mHello, World![0m >[31m192.168.202.254[0m[31m - [0m[31m-[0m[31m [[0m[31m20/Jul/2009:22:59:29 +0000[0m[31m] "[0m[31mGET[0m[31m [0m[31m/vmw/vSphere/default/vmkboot.gz[0m[31m [0m[31mHTTP/1.0[0m[31m" 404 46210 "[0m[31m-[0m[31m" "[0m[31mgPXE/0.9.7[0m[31m"[0m >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_meta.sh_fdf4a91aa55262255816dff7d605f1f0a5d6fe92.out >[0;31mBEGIN[0m test_meta.sh_fdf4a91aa55262255816dff7d605f1f0a5d6fe92.err >[0;31mEND[0m test_meta.sh_fdf4a91aa55262255816dff7d605f1f0a5d6fe92.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :load-session -c :clear-comment {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_meta.sh_fd09cb565f44a114d8c9a519e571918e30262eaf.out >192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7" > â #foo >[31m192.168.202.254[0m[31m - [0m[31m-[0m[31m [[0m[31m20/Jul/2009:22:59:29 +0000[0m[31m] "[0m[31mGET[0m[31m [0m[31m/vmw/vSphere/default/vmkboot.gz[0m[31m [0m[31mHTTP/1.0[0m[31m" 404 46210 "[0m[31m-[0m[31m" "[0m[31mgPXE/0.9.7[0m[31m"[0m >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_meta.sh_fd09cb565f44a114d8c9a519e571918e30262eaf.out >[0;31mBEGIN[0m test_meta.sh_fd09cb565f44a114d8c9a519e571918e30262eaf.err >[0;31mEND[0m test_meta.sh_fd09cb565f44a114d8c9a519e571918e30262eaf.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :goto 2 -c /foo -c :tag #foo -c :goto 0 -c :next-mark search {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_meta.sh_7b75763926d832bf9784ca234a060859770aabe7.out >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" > â #[7mfoo[0m >[0;32mEND[0m test_meta.sh_7b75763926d832bf9784ca234a060859770aabe7.out >[0;31mBEGIN[0m test_meta.sh_7b75763926d832bf9784ca234a060859770aabe7.err >[0;31mEND[0m test_meta.sh_7b75763926d832bf9784ca234a060859770aabe7.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :load-session -c ;SELECT log_line, log_comment, log_tags FROM access_log {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_meta.sh_c75128169049bd88d5eaf8b84a7f617e5ae5d936.out >[0;32mEND[0m test_meta.sh_c75128169049bd88d5eaf8b84a7f617e5ae5d936.out >OUT: test: ../src/lnav-test -n -c :load-session -c ;SELECT log_line, log_comment, log_tags FROM access_log {test_dir}/logfile_access_log.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_meta.sh_c75128169049bd88d5eaf8b84a7f617e5ae5d936.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_meta.sh_c75128169049bd88d5eaf8b84a7f617e5ae5d936.out 2025-01-17 20:39:31.614246514 +0100 >@@ -1,4 +0,0 @@ >-[1m[4mlog_line [0m[1m[4m log_comment [0m[1m[4mlog_tags [0m >-[1m 0[0m[1m [0m[1mHello, World![0m[1m [0m[1m["#foo"] [0m >- 1 <NULL> <NULL> >-[1m 2[0m[1m [0m[1m<[0m[1mNULL[0m[1m> [0m[1m [0m[1m<[0m[1mNULL[0m[1m> [0m >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_meta.sh_c75128169049bd88d5eaf8b84a7f617e5ae5d936.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ./meta-sessions/.config/lnav/crash/crash-2013-06-06-21-13-20.4748.log >========================= >[0;31mEND[0m test_meta.sh_c75128169049bd88d5eaf8b84a7f617e5ae5d936.err >ERR: test: ../src/lnav-test -n -c :load-session -c ;SELECT log_line, log_comment, log_tags FROM access_log {test_dir}/logfile_access_log.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_meta.sh_c75128169049bd88d5eaf8b84a7f617e5ae5d936.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_meta.sh_c75128169049bd88d5eaf8b84a7f617e5ae5d936.err 2025-01-17 20:39:31.627247036 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ./meta-sessions/.config/lnav/crash/crash-2013-06-06-21-13-20.4748.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c ;UPDATE access_log SET log_tags = json_array('#foo', '#foo') WHERE log_line = 1 -c :save-session {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_meta.sh_c8fb22932af2467a2651797a8a8d8cddcd09431d.out >192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7" >[31m192.168.202.254[0m[31m - [0m[31m-[0m[31m [[0m[31m20/Jul/2009:22:59:29 +0000[0m[31m] "[0m[31mGET[0m[31m [0m[31m/vmw/vSphere/default/vmkboot.gz[0m[31m [0m[31mHTTP/1.0[0m[31m" 404 46210 "[0m[31m-[0m[31m" "[0m[31mgPXE/0.9.7[0m[31m"[0m > â #foo >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_meta.sh_c8fb22932af2467a2651797a8a8d8cddcd09431d.out >[0;31mBEGIN[0m test_meta.sh_c8fb22932af2467a2651797a8a8d8cddcd09431d.err >[0;31mEND[0m test_meta.sh_c8fb22932af2467a2651797a8a8d8cddcd09431d.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c ;UPDATE access_log SET log_comment = 'Goodbye, World!' WHERE log_line = 1 {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_meta.sh_a7489c1f0e001adc732b7e2ab31bb30960fda078.out >192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7" >[31m192.168.202.254[0m[31m - [0m[31m-[0m[31m [[0m[31m20/Jul/2009:22:59:29 +0000[0m[31m] "[0m[31mGET[0m[31m [0m[31m/vmw/vSphere/default/vmkboot.gz[0m[31m [0m[31mHTTP/1.0[0m[31m" 404 46210 "[0m[31m-[0m[31m" "[0m[31mgPXE/0.9.7[0m[31m"[0m > â [32mGoodbye, World![0m >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_meta.sh_a7489c1f0e001adc732b7e2ab31bb30960fda078.out >[0;31mBEGIN[0m test_meta.sh_a7489c1f0e001adc732b7e2ab31bb30960fda078.err >[0;31mEND[0m test_meta.sh_a7489c1f0e001adc732b7e2ab31bb30960fda078.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c ;UPDATE access_log SET log_tags = 1 WHERE log_line = 1 {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_meta.sh_154047fb52e4831aabf7d36512247bad6a6a2cf7.out >[0;32mEND[0m test_meta.sh_154047fb52e4831aabf7d36512247bad6a6a2cf7.out >[0;31mBEGIN[0m test_meta.sh_154047fb52e4831aabf7d36512247bad6a6a2cf7.err >[1m[31mâ error[0m: invalid value for â[1mlog_tags[0mâ column of table â[1maccess_log[0mâ > [1m[31mreason[0m: unexpected JSON value >[1m[31m | [0m [36m --> [0m[1maccess_log.log_tags[0m:1 >[1m[31m | [0m [36m | [0m[37m[40m1 [0m >[1m[31m | [0m [36m =[0m [36mhelp[0m: expecting an array of [4mtag[0m values >[36m --> [0m[1mcommand-option[0m:1 >[36m | [0m[37m[40m;[0m[1m[36m[40mUPDATE[0m[37m[40m [0m[37m[40maccess_log[0m[37m[40m [0m[1m[36m[40mSET[0m[37m[40m [0m[37m[40mlog_tags[0m[37m[40m [0m[1m[37m[40m=[0m[37m[40m [0m[1m[37m[40m1[0m[37m[40m [0m[1m[36m[40mWHERE[0m[37m[40m [0m[37m[40mlog_line[0m[37m[40m [0m[1m[37m[40m=[0m[37m[40m [0m[1m[37m[40m1[0m >[0;31mEND[0m test_meta.sh_154047fb52e4831aabf7d36512247bad6a6a2cf7.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c ;UPDATE access_log SET log_tags = json_array('foo') WHERE log_line = 1 -c :save-session {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_meta.sh_3c9b5940f7533c5fc3d4956a6efce50a9e7132d4.out >[0;32mEND[0m test_meta.sh_3c9b5940f7533c5fc3d4956a6efce50a9e7132d4.out >[0;31mBEGIN[0m test_meta.sh_3c9b5940f7533c5fc3d4956a6efce50a9e7132d4.err >[1m[31mâ error[0m: invalid value for â[1mlog_tags[0mâ column of table â[1maccess_log[0mâ > [1m[31mreason[0m: âfooâ is not a valid value for option â[1m/#[0mâ >[1m[31m | [0m [1m[31mreason[0m: value does not match pattern: [1m^#[^\s]+$[0m >[1m[31m | [0m [36m --> [0m[1maccess_log.log_tags[0m:1 >[1m[31m | [0m [36m | [0m[37m[40m["foo"] [0m >[1m[31m | [0m [36m =[0m [36mhelp[0m: [1mProperty Synopsis[0m >[1m[31m | [0m [1m/#[0m [4mtag[0m >[1m[31m | [0m [1mDescription[0m >[1m[31m | [0m A tag for the log line >[36m --> [0m[1mcommand-option[0m:1 >[36m | [0m[37m[40m;[0m[1m[36m[40mUPDATE[0m[37m[40m [0m[37m[40maccess_log[0m[37m[40m [0m[1m[36m[40mSET[0m[37m[40m [0m[37m[40mlog_tags[0m[37m[40m [0m[1m[37m[40m=[0m[37m[40m [0m[1m[37m[40mjson_array[0m[37m[40m([0m[35m[40m'foo'[0m[37m[40m) [0m[1m[36m[40mWHERE[0m[37m[40m [0m[37m[40mlog_line[0m[37m[40m [0m[1m[37m[40m=[0m[37m[40m [0m[1m[37m[40m1[0m >[0;31mEND[0m test_meta.sh_3c9b5940f7533c5fc3d4956a6efce50a9e7132d4.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :load-session -c ;SELECT log_tags FROM access_log WHERE log_line = 1 {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_meta.sh_41f643bb4f720130625b042563e9591bee4ae588.out >[0;32mEND[0m test_meta.sh_41f643bb4f720130625b042563e9591bee4ae588.out >OUT: test: ../src/lnav-test -n -c :load-session -c ;SELECT log_tags FROM access_log WHERE log_line = 1 {test_dir}/logfile_access_log.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_meta.sh_41f643bb4f720130625b042563e9591bee4ae588.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_meta.sh_41f643bb4f720130625b042563e9591bee4ae588.out 2025-01-17 20:39:32.260272442 +0100 >@@ -1,2 +0,0 @@ >-[1m[4mlog_tags [0m >-["#foo"] >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_meta.sh_41f643bb4f720130625b042563e9591bee4ae588.err >lnav-test: sqlite3.c:84160: sqlite3ValueText: Assertion `pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ./meta-sessions/.config/lnav/crash/crash-2013-06-06-21-13-20.6340.log >========================= >[0;31mEND[0m test_meta.sh_41f643bb4f720130625b042563e9591bee4ae588.err >ERR: test: ../src/lnav-test -n -c :load-session -c ;SELECT log_tags FROM access_log WHERE log_line = 1 {test_dir}/logfile_access_log.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_meta.sh_41f643bb4f720130625b042563e9591bee4ae588.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_meta.sh_41f643bb4f720130625b042563e9591bee4ae588.err 2025-01-17 20:39:32.272272924 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:84160: sqlite3ValueText: Assertion `pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ./meta-sessions/.config/lnav/crash/crash-2013-06-06-21-13-20.6340.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :tag foo -c :delete-tags #foo {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_meta.sh_c063f96398650f130941bbbf4cf63c1244fdbee5.out >192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7" >[31m192.168.202.254[0m[31m - [0m[31m-[0m[31m [[0m[31m20/Jul/2009:22:59:29 +0000[0m[31m] "[0m[31mGET[0m[31m [0m[31m/vmw/vSphere/default/vmkboot.gz[0m[31m [0m[31mHTTP/1.0[0m[31m" 404 46210 "[0m[31m-[0m[31m" "[0m[31mgPXE/0.9.7[0m[31m"[0m >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_meta.sh_c063f96398650f130941bbbf4cf63c1244fdbee5.out >[0;31mBEGIN[0m test_meta.sh_c063f96398650f130941bbbf4cf63c1244fdbee5.err >[0;31mEND[0m test_meta.sh_c063f96398650f130941bbbf4cf63c1244fdbee5.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :tag foo -c ;UPDATE access_log SET log_tags = null {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_meta.sh_4c39b356748c67ccf8a6027a1af88da532f8252a.out >192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7" >[31m192.168.202.254[0m[31m - [0m[31m-[0m[31m [[0m[31m20/Jul/2009:22:59:29 +0000[0m[31m] "[0m[31mGET[0m[31m [0m[31m/vmw/vSphere/default/vmkboot.gz[0m[31m [0m[31mHTTP/1.0[0m[31m" 404 46210 "[0m[31m-[0m[31m" "[0m[31mgPXE/0.9.7[0m[31m"[0m >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_meta.sh_4c39b356748c67ccf8a6027a1af88da532f8252a.out >[0;31mBEGIN[0m test_meta.sh_4c39b356748c67ccf8a6027a1af88da532f8252a.err >[0;31mEND[0m test_meta.sh_4c39b356748c67ccf8a6027a1af88da532f8252a.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :comment foo -c ;UPDATE access_log SET log_comment = null {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_meta.sh_811b1a8a176b25001a89e35b295a1117ab76969b.out >192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7" >[31m192.168.202.254[0m[31m - [0m[31m-[0m[31m [[0m[31m20/Jul/2009:22:59:29 +0000[0m[31m] "[0m[31mGET[0m[31m [0m[31m/vmw/vSphere/default/vmkboot.gz[0m[31m [0m[31mHTTP/1.0[0m[31m" 404 46210 "[0m[31m-[0m[31m" "[0m[31mgPXE/0.9.7[0m[31m"[0m >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_meta.sh_811b1a8a176b25001a89e35b295a1117ab76969b.out >[0;31mBEGIN[0m test_meta.sh_811b1a8a176b25001a89e35b295a1117ab76969b.err >[0;31mEND[0m test_meta.sh_811b1a8a176b25001a89e35b295a1117ab76969b.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -d /tmp/lnav.err -n -I {test_dir} {test_dir}/logfile_xml_msg.0 >[0;32mBEGIN[0m test_meta.sh_83ac877aa9d38b25945cf96d6326a2468187c40f.out >[2020-12-10 06:56:41,061] INFO [m:108] Calling 'x' with params: > >[2020-12-10 06:56:41,092] DEBUG [connect.client:69] Full request text: > â #xml-req ><?xml version='1.0' encoding='iso-8859-2'?> ><a-request> > <head> > x > </head> > <source> > x > </source> > <request id="1"> > <name> > x > </name> > </request> ></a-request> > >[2020-12-10 06:56:41,099] DEBUG [m:85] Full reply text: ><?xml version='1.0' encoding='iso-8859-2'?> ><a-reply> > <head> > x > </head> > <reply id="2"> > <status> > <result>OK</result> > </status> > <name> > x > </name> > </reply> > <technical-track> > x > </technical-track> ></a-reply> >[0;32mEND[0m test_meta.sh_83ac877aa9d38b25945cf96d6326a2468187c40f.out >[0;31mBEGIN[0m test_meta.sh_83ac877aa9d38b25945cf96d6326a2468187c40f.err >[0;31mEND[0m test_meta.sh_83ac877aa9d38b25945cf96d6326a2468187c40f.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -f- {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_meta.sh_48e85ba0c0945a5085fb4ee255771406061a9c17.out >192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7" > â [32mHello, [0m[1m[32mWorld[0m[32m![0m > â > â [32mThis is [0m[32m[40m markdown [0m[32m now![0m >[31m192.168.202.254[0m[31m - [0m[31m-[0m[31m [[0m[31m20/Jul/2009:22:59:29 +0000[0m[31m] "[0m[31mGET[0m[31m [0m[31m/vmw/vSphere/default/vmkboot.gz[0m[31m [0m[31mHTTP/1.0[0m[31m" 404 46210 "[0m[31m-[0m[31m" "[0m[31mgPXE/0.9.7[0m[31m"[0m >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_meta.sh_48e85ba0c0945a5085fb4ee255771406061a9c17.out >[0;31mBEGIN[0m test_meta.sh_48e85ba0c0945a5085fb4ee255771406061a9c17.err >[0;31mEND[0m test_meta.sh_48e85ba0c0945a5085fb4ee255771406061a9c17.err >FAIL test_meta.sh (exit status: 1) > >FAIL: test_json_format.sh >========================= > > >2025-01-17T20:39:30+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: env TZ=UTC ../src/lnav-test -n -I {test_dir} {test_dir}/logfile_journald.json >[0;32mBEGIN[0m test_json_format.sh_84a71e94dc34661a70bb9015b67ba00e93e9cfb5.out >[31m2018-08-21T14:04:21.221[0m[31m 38708007 [0m[31mmedusa-GpsLocator.service[0m[31m [0m[31mpython[0m[31m[[0m[31m184[0m[31m] FATAL [0m[31mGPS Reference longitude: 7.358143333[0m >2018-08-21T14:04:21.221 38708007 medusa-GpsLocator.service python[184] INFO GPS Reference latitude: 46.908706667 >[0;32mEND[0m test_json_format.sh_84a71e94dc34661a70bb9015b67ba00e93e9cfb5.out >[0;31mBEGIN[0m test_json_format.sh_84a71e94dc34661a70bb9015b67ba00e93e9cfb5.err >[0;31mEND[0m test_json_format.sh_84a71e94dc34661a70bb9015b67ba00e93e9cfb5.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -I {test_dir} {test_dir}/logfile_json.json >[0;32mBEGIN[0m test_json_format.sh_469f005b0708d629bc95f0c48a5e390f440c1fef.out > >[2013-09-06T20:00:48.124] TRACE trace test > >[2013-09-06T20:00:49.124] INFO Starting up [32mservice[0m > >[2013-09-06T22:00:49.124] INFO Shutting down service > user: steve@example.com > >[2013-09-06T22:00:59.124] DEBUG5 Details... > >[2013-09-06T22:00:59.124] DEBUG4 Details... > >[2013-09-06T22:00:59.124] DEBUG3 Details... > >[2013-09-06T22:00:59.124] DEBUG2 Details... > >[2013-09-06T22:00:59.124] DEBUG Details... > >[2013-09-06T22:01:49.124] STATS 1 beat per second > >[33m[2[0m[33m013-09-06T22:01:49.124][0m[33m WARNING n[0m[33mot looking good[0m > >[31m[2[0m[31m013-09-06T22:01:49.124][0m[31m ERROR l[0m[31mooking bad[0m > >[31m[2[0m[31m013-09-06T22:01:49.124][0m[31m CRITICAL s[0m[31mooo bad[0m > >[31m[2[0m[31m013-09-06T22:01:49.124][0m[31m FATAL s[0m[31mhoot[0m >[31m obj: { "field1" : "hi", "field2": 2 }[0m >[31m arr: ["hi", {"sub1": true}][0m >[0;32mEND[0m test_json_format.sh_469f005b0708d629bc95f0c48a5e390f440c1fef.out >[0;31mBEGIN[0m test_json_format.sh_469f005b0708d629bc95f0c48a5e390f440c1fef.err >[0;31mEND[0m test_json_format.sh_469f005b0708d629bc95f0c48a5e390f440c1fef.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -I {test_dir} -c :filter-in up service {test_dir}/logfile_json.json >[0;32mBEGIN[0m test_json_format.sh_f740026626ab554dacb249762d8be7d6539b8c6e.out > >[2013-09-06T20:00:49.124] INFO Starting up [32mservice[0m >[0;32mEND[0m test_json_format.sh_f740026626ab554dacb249762d8be7d6539b8c6e.out >[0;31mBEGIN[0m test_json_format.sh_f740026626ab554dacb249762d8be7d6539b8c6e.err >[0;31mEND[0m test_json_format.sh_f740026626ab554dacb249762d8be7d6539b8c6e.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -I {test_dir} -c :switch-to-view pretty -c :switch-to-view log -c :switch-to-view pretty {test_dir}/logfile_json.json >[0;32mBEGIN[0m test_json_format.sh_a06b3cdd46b387e72d6faa4cce648b8b11ae870b.out > >[2013-09-06T20:00:48.124] â® trace testbork bork bork > >[2013-09-06T20:00:49.124] â® Starting up [32mservice[0mbork bork bork > >[2013-09-06T22:00:49.124] â® Shutting down servicebork bork bork > user: mailto:steve@example.com > >[2013-09-06T22:00:59.124] â® Details... >bork bork bork > >[2013-09-06T22:00:59.124] â® Details... >bork bork bork > >[2013-09-06T22:00:59.124] â® Details... >bork bork bork > >[2013-09-06T22:00:59.124] â® Details... >bork bork bork > >[2013-09-06T22:00:59.124] â® Details...bork bork bork > >[2013-09-06T22:01:49.124] â® 1 beat per secondbork bork bork > >[33m[[0m[33m2013-09-06T22:01:49.124[0m[33m] [0m[33mâ®[0m[33m [0m[33mnot looking goodbork bork bork[0m > >[31m[[0m[31m2013-09-06T22:01:49.124[0m[31m] [0m[31mâ®[0m[31m [0m[31mlooking bad[0m[31mbork bork bork[0m > >[31m[[0m[31m2013-09-06T22:01:49.124[0m[31m] [0m[31mâ®[0m[31m [0m[31msooo bad[0m[31mbork bork bork[0m >[0;32mEND[0m test_json_format.sh_a06b3cdd46b387e72d6faa4cce648b8b11ae870b.out >[0;31mBEGIN[0m test_json_format.sh_a06b3cdd46b387e72d6faa4cce648b8b11ae870b.err >[0;31mEND[0m test_json_format.sh_a06b3cdd46b387e72d6faa4cce648b8b11ae870b.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -I {test_dir} {test_dir}/log.clog >[0;32mBEGIN[0m test_json_format.sh_c60050b3469f37c5b0864e1dc7eb354e91d6ec81.out >[31m2016-08-03T12:06:31.009[0m[31m - [0m[31m;Exception initializing page context;[0m[31m java.lang.NoClassDefFoundError: javax/el/StaticFieldELResolver[0m >[31m at org.apache.jasper.runtime.JspFactoryImpl.internalGetPageContext(JspFactoryImpl.java:172)[0m >[31m at org.apache.jasper.runtime.JspFactoryImpl.getPageContext(JspFactoryImpl.java:123)[0m >[31m at org.apache.jsp.errors._404_002dnot_002dfound_jsp._jspService(_404_002dnot_002dfound_jsp.java:38)[0m >[31m at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)[0m >[31m at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)[0m >[31m at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:411)[0m >[31m at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:473)[0m >[31m at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:377)[0m >[31m at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)[0m >[31m at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)[0m >[31m at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)[0m >[31m at collective.config.startup.DamFilter.doFilter(DamFilter.java:270)[0m >[31m at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)[0m >[31m at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)[0m >[31m at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)[0m >[31m at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:488)[0m >[31m at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:411)[0m >[31m at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338)[0m >[31m at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:476)[0m >[31m at org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:345)[0m >[31m at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:210)[0m >[31m at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)[0m >[31m at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)[0m >[31m at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957)[0m >[31m at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:683)[0m >[31m at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)[0m >[31m at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)[0m >[31m at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)[0m >[31m at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)[0m >[31m at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[0m >[31m at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[0m >[31m at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)[0m >[31m at java.lang.Thread.run(Thread.java:744)[0m >[31mCaused by: java.lang.ClassNotFoundException: javax.el.StaticFieldELResolver[0m >[31m at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)[0m >[31m at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)[0m >[31m ... 33 common frames omitted[0m >[31m @version: 1[0m >[31m logger_name: [0m[31morg.apache.jasper.runtime.JspFactoryImpl[0m >[31m thread_name: http-bio-[0m[31m0.0.0.0[0m[31m-8081-exec-198[0m >[31m level: ERROR[0m >[31m customer: foobaz[0m >[31m2016-08-03T12:06:31.009[0m[31m - [0m[31m;Exception initializing page context;[0m[31m [0m >[31m @version: 1[0m >[31m logger_name: [0m[31morg.apache.jasper.runtime.JspFactoryImpl[0m >[31m thread_name: http-bio-[0m[31m0.0.0.0[0m[31m-8081-exec-198[0m >[31m level: ERROR[0m >[31m customer: foobaz[0m >[0;32mEND[0m test_json_format.sh_c60050b3469f37c5b0864e1dc7eb354e91d6ec81.out >[0;31mBEGIN[0m test_json_format.sh_c60050b3469f37c5b0864e1dc7eb354e91d6ec81.err >[0;31mEND[0m test_json_format.sh_c60050b3469f37c5b0864e1dc7eb354e91d6ec81.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -I {test_dir} -c ;select * from test_log -c :write-csv-to - {test_dir}/logfile_json.json >[0;32mBEGIN[0m test_json_format.sh_85d03b1b41a7f819af135d2521a8f2c59418e907.out >[0;32mEND[0m test_json_format.sh_85d03b1b41a7f819af135d2521a8f2c59418e907.out >OUT: test: ../src/lnav-test -n -I {test_dir} -c ;select * from test_log -c :write-csv-to - {test_dir}/logfile_json.json >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_json_format.sh_85d03b1b41a7f819af135d2521a8f2c59418e907.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_json_format.sh_85d03b1b41a7f819af135d2521a8f2c59418e907.out 2025-01-17 20:39:31.724250929 +0100 >@@ -1,14 +0,0 @@ >-log_line,log_part,log_time,log_idle_msecs,log_level,log_mark,log_comment,log_tags,log_filters,arr,obj,lvl,user >-0,<NULL>,2013-09-06 20:00:48.124,0,trace,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,TRACE,<NULL> >-2,<NULL>,2013-09-06 20:00:49.124,1000,info,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,INFO,<NULL> >-4,<NULL>,2013-09-06 22:00:49.124,7200000,info,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,INFO,steve@example.com >-7,<NULL>,2013-09-06 22:00:59.124,10000,debug5,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,DEBUG5,<NULL> >-9,<NULL>,2013-09-06 22:00:59.124,0,debug4,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,DEBUG4,<NULL> >-11,<NULL>,2013-09-06 22:00:59.124,0,debug3,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,DEBUG3,<NULL> >-13,<NULL>,2013-09-06 22:00:59.124,0,debug2,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,DEBUG2,<NULL> >-15,<NULL>,2013-09-06 22:00:59.124,0,debug,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,DEBUG,<NULL> >-17,<NULL>,2013-09-06 22:01:49.124,50000,stats,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,STATS,<NULL> >-19,<NULL>,2013-09-06 22:01:49.124,0,warning,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,WARNING,<NULL> >-21,<NULL>,2013-09-06 22:01:49.124,0,error,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,ERROR,<NULL> >-23,<NULL>,2013-09-06 22:01:49.124,0,critical,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,CRITICAL,<NULL> >-25,<NULL>,2013-09-06 22:01:49.124,0,fatal,0,<NULL>,<NULL>,<NULL>,"[""hi"", {""sub1"": true}]","{ ""field1"" : ""hi"", ""field2"": 2 }",FATAL,<NULL> >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_json_format.sh_85d03b1b41a7f819af135d2521a8f2c59418e907.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.5122.log >========================= >[0;31mEND[0m test_json_format.sh_85d03b1b41a7f819af135d2521a8f2c59418e907.err >ERR: test: ../src/lnav-test -n -I {test_dir} -c ;select * from test_log -c :write-csv-to - {test_dir}/logfile_json.json >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_json_format.sh_85d03b1b41a7f819af135d2521a8f2c59418e907.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_json_format.sh_85d03b1b41a7f819af135d2521a8f2c59418e907.err 2025-01-17 20:39:31.738251491 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.5122.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -I {test_dir} -c ;select log_raw_text from test_log -c :write-raw-to - {test_dir}/logfile_json.json >[0;32mBEGIN[0m test_json_format.sh_168cac40c27f547044c89d39eb0ff2ef81da4b21.out >[0;32mEND[0m test_json_format.sh_168cac40c27f547044c89d39eb0ff2ef81da4b21.out >OUT: test: ../src/lnav-test -n -I {test_dir} -c ;select log_raw_text from test_log -c :write-raw-to - {test_dir}/logfile_json.json >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_json_format.sh_168cac40c27f547044c89d39eb0ff2ef81da4b21.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_json_format.sh_168cac40c27f547044c89d39eb0ff2ef81da4b21.out 2025-01-17 20:39:31.857256267 +0100 >@@ -1,13 +0,0 @@ >-{"ts": "2013-09-06T20:00:48.124817Z", "lvl": "TRACE", "msg": "trace test"} >-{"ts": "2013-09-06T20:00:49.124817Z", "lvl": "INFO", "msg": "Starting up \u001B[0;32mservice\u001B[0m"} >-{"ts": "2013-09-06T22:00:49.124817Z", "lvl": "INFO", "msg": "Shutting down service", "user": "steve@example.com"} >-{"ts": "2013-09-06T22:00:59.124817Z", "lvl": "DEBUG5", "msg": "Details...\n"} >-{"ts": "2013-09-06T22:00:59.124817Z", "lvl": "DEBUG4", "msg": "Details...\n"} >-{"ts": "2013-09-06T22:00:59.124817Z", "lvl": "DEBUG3", "msg": "Details...\n"} >-{"ts": "2013-09-06T22:00:59.124817Z", "lvl": "DEBUG2", "msg": "Details...\n"} >-{"ts": "2013-09-06T22:00:59.124817Z", "lvl": "DEBUG", "msg": "Details..."} >-{"ts": "2013-09-06T22:01:49.124817Z", "lvl": "STATS", "msg": "1 beat per second"} >-{"ts": "2013-09-06T22:01:49.124817Z", "lvl": "WARNING", "msg": "not looking good"} >-{"ts": "2013-09-06T22:01:49.124817Z", "lvl": "ERROR", "msg": "looking bad"} >-{"ts": "2013-09-06T22:01:49.124817Z", "lvl": "CRITICAL", "msg": "sooo bad"} >-{"ts": "2013-09-06T22:01:49.124817Z", "lvl": "FATAL", "msg": "shoot", "obj": { "field1" : "hi", "field2": 2 }, "arr" : ["hi", {"sub1": true}]} >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_json_format.sh_168cac40c27f547044c89d39eb0ff2ef81da4b21.err >lnav-test: sqlite3.c:84160: sqlite3ValueText: Assertion `pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.5501.log >========================= >[0;31mEND[0m test_json_format.sh_168cac40c27f547044c89d39eb0ff2ef81da4b21.err >ERR: test: ../src/lnav-test -n -I {test_dir} -c ;select log_raw_text from test_log -c :write-raw-to - {test_dir}/logfile_json.json >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_json_format.sh_168cac40c27f547044c89d39eb0ff2ef81da4b21.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_json_format.sh_168cac40c27f547044c89d39eb0ff2ef81da4b21.err 2025-01-17 20:39:31.871256829 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:84160: sqlite3ValueText: Assertion `pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.5501.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -I {test_dir} -c :goto 0 -c :mark -c :goto 1 -c :mark -c :goto 2 -c :mark -c :write-raw-to - {test_dir}/log.clog >[0;32mBEGIN[0m test_json_format.sh_7aade92cff911c5b3cfc733685809f949ae35778.out >{"@timestamp":"2016-08-03T12:06:31.009-0500","@version":1,"message":";Exception initializing page context;","logger_name":"org.apache.jasper.runtime.JspFactoryImpl","thread_name":"http-bio-0.0.0.0-8081-exec-198","level":"ERROR","level_value":40000,"stack_trace":"java.lang.NoClassDefFoundError: javax/el/StaticFieldELResolver\n\tat org.apache.jasper.runtime.JspFactoryImpl.internalGetPageContext(JspFactoryImpl.java:172)\n\tat org.apache.jasper.runtime.JspFactoryImpl.getPageContext(JspFactoryImpl.java:123)\n\tat org.apache.jsp.errors._404_002dnot_002dfound_jsp._jspService(_404_002dnot_002dfound_jsp.java:38)\n\tat org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:731)\n\tat org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:411)\n\tat org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:473)\n\tat org.apache.jasper.servlet.JspServlet.service(JspServlet.java:377)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:731)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)\n\tat collective.config.startup.DamFilter.doFilter(DamFilter.java:270)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)\n\tat org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)\n\tat org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:488)\n\tat org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:411)\n\tat org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338)\n\tat org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:476)\n\tat org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:345)\n\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:210)\n\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)\n\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)\n\tat org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957)\n\tat org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:683)\n\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)\n\tat org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)\n\tat org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)\n\tat org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\n\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n\tat java.lang.Thread.run(Thread.java:744)\nCaused by: java.lang.ClassNotFoundException: javax.el.StaticFieldELResolver\n\tat org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)\n\tat org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)\n\t... 33 common frames omitted\n","customer":"foobaz"} >[0;32mEND[0m test_json_format.sh_7aade92cff911c5b3cfc733685809f949ae35778.out >[0;31mBEGIN[0m test_json_format.sh_7aade92cff911c5b3cfc733685809f949ae35778.err >[0;31mEND[0m test_json_format.sh_7aade92cff911c5b3cfc733685809f949ae35778.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -I {test_dir} -c ;select * from test_log -c :write-json-to - {test_dir}/logfile_json.json >[0;32mBEGIN[0m test_json_format.sh_40223ac4742883f883ccc61044bfffd6e102cca6.out >[0;32mEND[0m test_json_format.sh_40223ac4742883f883ccc61044bfffd6e102cca6.out >OUT: test: ../src/lnav-test -n -I {test_dir} -c ;select * from test_log -c :write-json-to - {test_dir}/logfile_json.json >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_json_format.sh_40223ac4742883f883ccc61044bfffd6e102cca6.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_json_format.sh_40223ac4742883f883ccc61044bfffd6e102cca6.out 2025-01-17 20:39:32.116266663 +0100 >@@ -1,205 +0,0 @@ >-[ >- { >- "log_line": 0, >- "log_part": null, >- "log_time": "2013-09-06 20:00:48.124", >- "log_idle_msecs": 0, >- "log_level": "trace", >- "log_mark": 0, >- "log_comment": null, >- "log_tags": null, >- "log_filters": null, >- "arr": null, >- "obj": null, >- "lvl": "TRACE", >- "user": null >- }, >- { >- "log_line": 2, >- "log_part": null, >- "log_time": "2013-09-06 20:00:49.124", >- "log_idle_msecs": 1000, >- "log_level": "info", >- "log_mark": 0, >- "log_comment": null, >- "log_tags": null, >- "log_filters": null, >- "arr": null, >- "obj": null, >- "lvl": "INFO", >- "user": null >- }, >- { >- "log_line": 4, >- "log_part": null, >- "log_time": "2013-09-06 22:00:49.124", >- "log_idle_msecs": 7200000, >- "log_level": "info", >- "log_mark": 0, >- "log_comment": null, >- "log_tags": null, >- "log_filters": null, >- "arr": null, >- "obj": null, >- "lvl": "INFO", >- "user": "steve@example.com" >- }, >- { >- "log_line": 7, >- "log_part": null, >- "log_time": "2013-09-06 22:00:59.124", >- "log_idle_msecs": 10000, >- "log_level": "debug5", >- "log_mark": 0, >- "log_comment": null, >- "log_tags": null, >- "log_filters": null, >- "arr": null, >- "obj": null, >- "lvl": "DEBUG5", >- "user": null >- }, >- { >- "log_line": 9, >- "log_part": null, >- "log_time": "2013-09-06 22:00:59.124", >- "log_idle_msecs": 0, >- "log_level": "debug4", >- "log_mark": 0, >- "log_comment": null, >- "log_tags": null, >- "log_filters": null, >- "arr": null, >- "obj": null, >- "lvl": "DEBUG4", >- "user": null >- }, >- { >- "log_line": 11, >- "log_part": null, >- "log_time": "2013-09-06 22:00:59.124", >- "log_idle_msecs": 0, >- "log_level": "debug3", >- "log_mark": 0, >- "log_comment": null, >- "log_tags": null, >- "log_filters": null, >- "arr": null, >- "obj": null, >- "lvl": "DEBUG3", >- "user": null >- }, >- { >- "log_line": 13, >- "log_part": null, >- "log_time": "2013-09-06 22:00:59.124", >- "log_idle_msecs": 0, >- "log_level": "debug2", >- "log_mark": 0, >- "log_comment": null, >- "log_tags": null, >- "log_filters": null, >- "arr": null, >- "obj": null, >- "lvl": "DEBUG2", >- "user": null >- }, >- { >- "log_line": 15, >- "log_part": null, >- "log_time": "2013-09-06 22:00:59.124", >- "log_idle_msecs": 0, >- "log_level": "debug", >- "log_mark": 0, >- "log_comment": null, >- "log_tags": null, >- "log_filters": null, >- "arr": null, >- "obj": null, >- "lvl": "DEBUG", >- "user": null >- }, >- { >- "log_line": 17, >- "log_part": null, >- "log_time": "2013-09-06 22:01:49.124", >- "log_idle_msecs": 50000, >- "log_level": "stats", >- "log_mark": 0, >- "log_comment": null, >- "log_tags": null, >- "log_filters": null, >- "arr": null, >- "obj": null, >- "lvl": "STATS", >- "user": null >- }, >- { >- "log_line": 19, >- "log_part": null, >- "log_time": "2013-09-06 22:01:49.124", >- "log_idle_msecs": 0, >- "log_level": "warning", >- "log_mark": 0, >- "log_comment": null, >- "log_tags": null, >- "log_filters": null, >- "arr": null, >- "obj": null, >- "lvl": "WARNING", >- "user": null >- }, >- { >- "log_line": 21, >- "log_part": null, >- "log_time": "2013-09-06 22:01:49.124", >- "log_idle_msecs": 0, >- "log_level": "error", >- "log_mark": 0, >- "log_comment": null, >- "log_tags": null, >- "log_filters": null, >- "arr": null, >- "obj": null, >- "lvl": "ERROR", >- "user": null >- }, >- { >- "log_line": 23, >- "log_part": null, >- "log_time": "2013-09-06 22:01:49.124", >- "log_idle_msecs": 0, >- "log_level": "critical", >- "log_mark": 0, >- "log_comment": null, >- "log_tags": null, >- "log_filters": null, >- "arr": null, >- "obj": null, >- "lvl": "CRITICAL", >- "user": null >- }, >- { >- "log_line": 25, >- "log_part": null, >- "log_time": "2013-09-06 22:01:49.124", >- "log_idle_msecs": 0, >- "log_level": "fatal", >- "log_mark": 0, >- "log_comment": null, >- "log_tags": null, >- "log_filters": null, >- "arr": [ >- "hi", >- { >- "sub1": true >- } >- ], >- "obj": { >- "field1": "hi", >- "field2": 2 >- }, >- "lvl": "FATAL", >- "user": null >- } >-] >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_json_format.sh_40223ac4742883f883ccc61044bfffd6e102cca6.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.6094.log >========================= >[0;31mEND[0m test_json_format.sh_40223ac4742883f883ccc61044bfffd6e102cca6.err >ERR: test: ../src/lnav-test -n -I {test_dir} -c ;select * from test_log -c :write-json-to - {test_dir}/logfile_json.json >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_json_format.sh_40223ac4742883f883ccc61044bfffd6e102cca6.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_json_format.sh_40223ac4742883f883ccc61044bfffd6e102cca6.err 2025-01-17 20:39:32.128267144 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.6094.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -I {test_dir} {test_dir}/logfile_json2.json >[0;32mBEGIN[0m test_json_format.sh_989e52d167582648b73c5d025cc0e814c642b3c8.out >â® abc 49 def 0 c.e.foo Starting up service >â® abc 49 def 0 c.e.foo Shutting down service > user: steve@example.com >[31mâ®[0m[31m [0m[31mabc 49 def[0m[31m 10 c.e.foo [0m[31mlooking bad[0m >[0;32mEND[0m test_json_format.sh_989e52d167582648b73c5d025cc0e814c642b3c8.out >[0;31mBEGIN[0m test_json_format.sh_989e52d167582648b73c5d025cc0e814c642b3c8.err >[0;31mEND[0m test_json_format.sh_989e52d167582648b73c5d025cc0e814c642b3c8.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -d /tmp/lnav.err -I {test_dir} -c ;select * from json_log2 -c :write-csv-to - {test_dir}/logfile_json2.json >[0;32mBEGIN[0m test_json_format.sh_6fbe20faa161ab9fa77df7568fff84bf3e47e920.out >[0;32mEND[0m test_json_format.sh_6fbe20faa161ab9fa77df7568fff84bf3e47e920.out >OUT: test: ../src/lnav-test -n -d /tmp/lnav.err -I {test_dir} -c ;select * from json_log2 -c :write-csv-to - {test_dir}/logfile_json2.json >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_json_format.sh_6fbe20faa161ab9fa77df7568fff84bf3e47e920.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_json_format.sh_6fbe20faa161ab9fa77df7568fff84bf3e47e920.out 2025-01-17 20:39:32.371276898 +0100 >@@ -1,4 +0,0 @@ >-log_line,log_part,log_time,log_idle_msecs,log_level,log_mark,log_comment,log_tags,log_filters,user,cl >-0,<NULL>,2013-09-06 20:00:49.124,0,info,0,<NULL>,<NULL>,<NULL>,<NULL>,com.exmaple.foo >-1,<NULL>,2013-09-06 22:00:49.124,7200000,info,0,<NULL>,<NULL>,<NULL>,steve@example.com,com.exmaple.foo >-3,<NULL>,2013-09-06 22:01:49.124,60000,error,0,<NULL>,<NULL>,<NULL>,<NULL>,com.exmaple.foo >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_json_format.sh_6fbe20faa161ab9fa77df7568fff84bf3e47e920.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.6491.log >========================= >[0;31mEND[0m test_json_format.sh_6fbe20faa161ab9fa77df7568fff84bf3e47e920.err >ERR: test: ../src/lnav-test -n -d /tmp/lnav.err -I {test_dir} -c ;select * from json_log2 -c :write-csv-to - {test_dir}/logfile_json2.json >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_json_format.sh_6fbe20faa161ab9fa77df7568fff84bf3e47e920.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_json_format.sh_6fbe20faa161ab9fa77df7568fff84bf3e47e920.err 2025-01-17 20:39:32.384277419 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.6491.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -I {test_dir} -c :goto 4 -c :pipe-line-to sed -e 's/2013//g' -c :switch-to-view text {test_dir}/logfile_json.json >[0;32mBEGIN[0m test_json_format.sh_952297a90e312d2184fe3e4df795ddc731b096c9.out > >[-09-06T22:00:49.124] INFO Shutting down service > user: steve@example.com > >[0;32mEND[0m test_json_format.sh_952297a90e312d2184fe3e4df795ddc731b096c9.out >[0;31mBEGIN[0m test_json_format.sh_952297a90e312d2184fe3e4df795ddc731b096c9.err >[0;31mEND[0m test_json_format.sh_952297a90e312d2184fe3e4df795ddc731b096c9.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -I {test_dir} {test_dir}/logfile_nested_json.json >[0;32mBEGIN[0m test_json_format.sh_7724d1a96d74d4418dd44d7416270f9bb64b2564.out >2013-09-06T20:00:48.124 TRACE trace test > @fields: { "lvl": "TRACE", "msg": "trace test"} >2013-09-06T20:00:49.124 INFO Starting up service > @fields: { "lvl": "INFO", "msg": "Starting up service"} >2013-09-06T22:00:49.124 INFO Shutting down service > @fields/user: steve@example.com > @fields: { "lvl": "INFO", "msg": "Shutting down service", "user": "steve@example.com"} >2013-09-06T22:00:59.124 DEBUG5 Details... > @fields: { "lvl": "DEBUG5", "msg": "Details..."} >2013-09-06T22:00:59.124 DEBUG4 Details... > @fields: { "lvl": "DEBUG4", "msg": "Details..."} >2013-09-06T22:00:59.124 DEBUG3 Details... > @fields: { "lvl": "DEBUG3", "msg": "Details..."} >2013-09-06T22:00:59.124 DEBUG2 Details... > @fields: { "lvl": "DEBUG2", "msg": "Details..."} >2013-09-06T22:00:59.124 DEBUG Details... > @fields: { "lvl": "DEBUG", "msg": "Details..."} >2013-09-06T22:01:49.124 STATS 1 beat per second > @fields: { "lvl": "STATS", "msg": "1 beat per second"} >[33m2013-09-06T22:01:49.124[0m[33m WARNING [0m[33mnot looking good[0m >[33m @fields: { "lvl": "WARNING", "msg": "not looking good"}[0m >[31m2013-09-06T22:01:49.124[0m[31m ERROR [0m[31mlooking bad[0m >[31m @fields: { "lvl": "ERROR", "msg": "looking bad"}[0m >[31m2013-09-06T22:01:49.124[0m[31m CRITICAL [0m[31msooo bad[0m >[31m @fields: { "lvl": "CRITICAL", "msg": "sooo bad"}[0m >[31m2013-09-06T22:01:49.124[0m[31m FATAL [0m[31mshoot[0m >[31m @fields/trace#: line:1[0m >[31m @fields/trace#: line:2[0m >[31m @fields: { "lvl": "FATAL", "msg": "shoot", "trace": ["line:1", "line:2"]}[0m >[0;32mEND[0m test_json_format.sh_7724d1a96d74d4418dd44d7416270f9bb64b2564.out >[0;31mBEGIN[0m test_json_format.sh_7724d1a96d74d4418dd44d7416270f9bb64b2564.err >[0;31mEND[0m test_json_format.sh_7724d1a96d74d4418dd44d7416270f9bb64b2564.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -I {test_dir} -c ;select * from ntest_log -c :write-csv-to - {test_dir}/logfile_nested_json.json >[0;32mBEGIN[0m test_json_format.sh_1bb0fd243e916546aea22029245ac590dae17a86.out >[0;32mEND[0m test_json_format.sh_1bb0fd243e916546aea22029245ac590dae17a86.out >OUT: test: ../src/lnav-test -n -I {test_dir} -c ;select * from ntest_log -c :write-csv-to - {test_dir}/logfile_nested_json.json >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_json_format.sh_1bb0fd243e916546aea22029245ac590dae17a86.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_json_format.sh_1bb0fd243e916546aea22029245ac590dae17a86.out 2025-01-17 20:39:32.756292350 +0100 >@@ -1,14 +0,0 @@ >-log_line,log_part,log_time,log_idle_msecs,log_level,log_mark,log_comment,log_tags,log_filters,@fields/user,@fields/trace# >-0,<NULL>,2013-09-06 20:00:48.124,0,trace,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> >-2,<NULL>,2013-09-06 20:00:49.124,1000,info,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> >-4,<NULL>,2013-09-06 22:00:49.124,7200000,info,0,<NULL>,<NULL>,<NULL>,steve@example.com,<NULL> >-7,<NULL>,2013-09-06 22:00:59.124,10000,debug5,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> >-9,<NULL>,2013-09-06 22:00:59.124,0,debug4,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> >-11,<NULL>,2013-09-06 22:00:59.124,0,debug3,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> >-13,<NULL>,2013-09-06 22:00:59.124,0,debug2,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> >-15,<NULL>,2013-09-06 22:00:59.124,0,debug,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> >-17,<NULL>,2013-09-06 22:01:49.124,50000,stats,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> >-19,<NULL>,2013-09-06 22:01:49.124,0,warning,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> >-21,<NULL>,2013-09-06 22:01:49.124,0,error,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> >-23,<NULL>,2013-09-06 22:01:49.124,0,critical,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> >-25,<NULL>,2013-09-06 22:01:49.124,0,fatal,0,<NULL>,<NULL>,<NULL>,<NULL>,line:1 >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_json_format.sh_1bb0fd243e916546aea22029245ac590dae17a86.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.7014.log >========================= >[0;31mEND[0m test_json_format.sh_1bb0fd243e916546aea22029245ac590dae17a86.err >ERR: test: ../src/lnav-test -n -I {test_dir} -c ;select * from ntest_log -c :write-csv-to - {test_dir}/logfile_nested_json.json >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_json_format.sh_1bb0fd243e916546aea22029245ac590dae17a86.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_json_format.sh_1bb0fd243e916546aea22029245ac590dae17a86.err 2025-01-17 20:39:32.769292872 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.7014.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -I {test_dir} -c :goto 4 -c :pipe-line-to sed -e 's/2013//g' -c :switch-to-view text {test_dir}/logfile_nested_json.json >[0;32mBEGIN[0m test_json_format.sh_fe19b7ebd349cd689b3f5c22618eab5ce995e68e.out >-09-06T22:00:49.124 INFO Shutting down service > @fields/user: steve@example.com > @fields: { "lvl": "INFO", "msg": "Shutting down service", "user": "steve@example.com"} > >[0;32mEND[0m test_json_format.sh_fe19b7ebd349cd689b3f5c22618eab5ce995e68e.out >[0;31mBEGIN[0m test_json_format.sh_fe19b7ebd349cd689b3f5c22618eab5ce995e68e.err >[0;31mEND[0m test_json_format.sh_fe19b7ebd349cd689b3f5c22618eab5ce995e68e.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: env TZ=UTC ../src/lnav-test -n -I {test_dir} {test_dir}/logfile_json3.json >[0;32mBEGIN[0m test_json_format.sh_4315a3d6124c14cbe3c474b6dbf4cc8720a9859f.out >2017-03-24T20:06:26.240 1.1.1.1 GET 200 443 /example/uri/5 >[31m2017-03-24T20:12:47.764[0m[31m [0m[31m1.1.1.1[0m[31m [0m[31mGET[0m[31m 500 4433 [0m[31m/example/uri/5[0m >[33m2017-03-24T20:15:31.694[0m[33m [0m[33m1.1.1.1[0m[33m [0m[33mGET[0m[33m 400 44345 [0m[33m/example/uri/5[0m >[0;32mEND[0m test_json_format.sh_4315a3d6124c14cbe3c474b6dbf4cc8720a9859f.out >[0;31mBEGIN[0m test_json_format.sh_4315a3d6124c14cbe3c474b6dbf4cc8720a9859f.err >[0;31mEND[0m test_json_format.sh_4315a3d6124c14cbe3c474b6dbf4cc8720a9859f.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: env TZ=UTC ../src/lnav-test -n -I {test_dir} -c ;select * from json_log3 -c :write-csv-to - {test_dir}/logfile_json3.json >[0;32mBEGIN[0m test_json_format.sh_d0ec34389274affb70a5a76ba4789d51fd60f602.out >[0;32mEND[0m test_json_format.sh_d0ec34389274affb70a5a76ba4789d51fd60f602.out >OUT: test: env TZ=UTC ../src/lnav-test -n -I {test_dir} -c ;select * from json_log3 -c :write-csv-to - {test_dir}/logfile_json3.json >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_json_format.sh_d0ec34389274affb70a5a76ba4789d51fd60f602.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_json_format.sh_d0ec34389274affb70a5a76ba4789d51fd60f602.out 2025-01-17 20:39:33.146308003 +0100 >@@ -1,4 +0,0 @@ >-log_line,log_part,log_time,log_idle_msecs,log_level,log_mark,log_comment,log_tags,log_filters,client_ip,request/method,request/uri,request/size,response/status,response/size,details1,details2,details3 >-0,<NULL>,2017-03-24 20:06:26.240,0,info,0,<NULL>,<NULL>,<NULL>,1.1.1.1,GET,/example/uri/5,166,200,443,<NULL>,<NULL>,<NULL> >-1,<NULL>,2017-03-24 20:12:47.764,381524,critical,0,<NULL>,<NULL>,<NULL>,1.1.1.1,GET,/example/uri/5,166,500,4433,<NULL>,<NULL>,<NULL> >-2,<NULL>,2017-03-24 20:15:31.694,163930,warning,0,<NULL>,<NULL>,<NULL>,1.1.1.1,GET,/example/uri/5,166,400,44345,"{""foo"": ""bar""}","{""foo"": ""bar""}","{""foo"": ""bar""}" >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_json_format.sh_d0ec34389274affb70a5a76ba4789d51fd60f602.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-19-13-20.7429.log >========================= >[0;31mEND[0m test_json_format.sh_d0ec34389274affb70a5a76ba4789d51fd60f602.err >ERR: test: env TZ=UTC ../src/lnav-test -n -I {test_dir} -c ;select * from json_log3 -c :write-csv-to - {test_dir}/logfile_json3.json >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_json_format.sh_d0ec34389274affb70a5a76ba4789d51fd60f602.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_json_format.sh_d0ec34389274affb70a5a76ba4789d51fd60f602.err 2025-01-17 20:39:33.158308485 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-19-13-20.7429.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: env TZ=America/New_York ../src/lnav-test -n -I {test_dir} {test_dir}/logfile_json3.json >[0;32mBEGIN[0m test_json_format.sh_d7362cffc8335c2fe6b6527315de59bd6f5dcc7f.out >2017-03-24T16:06:26.240 1.1.1.1 GET 200 443 /example/uri/5 >[31m2017-03-24T16:12:47.764[0m[31m [0m[31m1.1.1.1[0m[31m [0m[31mGET[0m[31m 500 4433 [0m[31m/example/uri/5[0m >[33m2017-03-24T16:15:31.694[0m[33m [0m[33m1.1.1.1[0m[33m [0m[33mGET[0m[33m 400 44345 [0m[33m/example/uri/5[0m >[0;32mEND[0m test_json_format.sh_d7362cffc8335c2fe6b6527315de59bd6f5dcc7f.out >[0;31mBEGIN[0m test_json_format.sh_d7362cffc8335c2fe6b6527315de59bd6f5dcc7f.err >[0;31mEND[0m test_json_format.sh_d7362cffc8335c2fe6b6527315de59bd6f5dcc7f.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: env TZ=America/New_York ../src/lnav-test -n -I {test_dir} -c ;select * from json_log3 -c :write-csv-to - {test_dir}/logfile_json3.json >[0;32mBEGIN[0m test_json_format.sh_dfff27a651650a04d93de9a06ab5480e94ce3a79.out >[0;32mEND[0m test_json_format.sh_dfff27a651650a04d93de9a06ab5480e94ce3a79.out >OUT: test: env TZ=America/New_York ../src/lnav-test -n -I {test_dir} -c ;select * from json_log3 -c :write-csv-to - {test_dir}/logfile_json3.json >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_json_format.sh_dfff27a651650a04d93de9a06ab5480e94ce3a79.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_json_format.sh_dfff27a651650a04d93de9a06ab5480e94ce3a79.out 2025-01-17 20:39:33.401318238 +0100 >@@ -1,4 +0,0 @@ >-log_line,log_part,log_time,log_idle_msecs,log_level,log_mark,log_comment,log_tags,log_filters,client_ip,request/method,request/uri,request/size,response/status,response/size,details1,details2,details3 >-0,<NULL>,2017-03-24 16:06:26.240,0,info,0,<NULL>,<NULL>,<NULL>,1.1.1.1,GET,/example/uri/5,166,200,443,<NULL>,<NULL>,<NULL> >-1,<NULL>,2017-03-24 16:12:47.764,381524,critical,0,<NULL>,<NULL>,<NULL>,1.1.1.1,GET,/example/uri/5,166,500,4433,<NULL>,<NULL>,<NULL> >-2,<NULL>,2017-03-24 16:15:31.694,163930,warning,0,<NULL>,<NULL>,<NULL>,1.1.1.1,GET,/example/uri/5,166,400,44345,"{""foo"": ""bar""}","{""foo"": ""bar""}","{""foo"": ""bar""}" >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_json_format.sh_dfff27a651650a04d93de9a06ab5480e94ce3a79.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-15-13-20.7586.log >========================= >[0;31mEND[0m test_json_format.sh_dfff27a651650a04d93de9a06ab5480e94ce3a79.err >ERR: test: env TZ=America/New_York ../src/lnav-test -n -I {test_dir} -c ;select * from json_log3 -c :write-csv-to - {test_dir}/logfile_json3.json >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_json_format.sh_dfff27a651650a04d93de9a06ab5480e94ce3a79.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_json_format.sh_dfff27a651650a04d93de9a06ab5480e94ce3a79.err 2025-01-17 20:39:33.413318720 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-15-13-20.7586.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -d /tmp/lnav.err -I {test_dir} {test_dir}/logfile_invalid_json.json >[0;32mBEGIN[0m test_json_format.sh_7c6529f6bf4a0cb565f5665fdcba032f0ae1ebbe.out >2013-09-06T20:00:48.124 TRACE trace test > @fields: { "lvl": "TRACE", "msg": "trace test"} >2013-09-06T20:00:49.124 INFO Starting up service > @fields: { "lvl": "INFO", "msg": "Starting up service"} >[offset: 186] {"ts": "2013-09-06T22:00:49.124817Z", "@fields": { "lvl": "INFO", "msg": "Shutting down service\nline2\nline3\nline4\nline5\nline6\nline7\nline8\nline9\nline10 >parse error: premature EOF > {"ts": "2013-09-06T22:00:49.124 > (right here) ------^ >2013-09-06T22:00:59.124 DEBUG5 Details... > @fields: { "lvl": "DEBUG5", "msg": "Details..."} >2013-09-06T22:00:59.222 DEBUG4 Details... > @fields: { "lvl": "DEBUG4", "msg": "Details..."} >[0;32mEND[0m test_json_format.sh_7c6529f6bf4a0cb565f5665fdcba032f0ae1ebbe.out >[0;31mBEGIN[0m test_json_format.sh_7c6529f6bf4a0cb565f5665fdcba032f0ae1ebbe.err >[0;31mEND[0m test_json_format.sh_7c6529f6bf4a0cb565f5665fdcba032f0ae1ebbe.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -d /tmp/lnav.err -I {test_dir} {test_dir}/logfile_invalid_json2.json >[0;32mBEGIN[0m test_json_format.sh_80959e2bb6a7fdf938c2e4dbd7d7c81eb84fa072.out >2013-09-06T20:00:48.124 TRACE trace test > @fields: { "lvl": "TRACE", "msg": "trace test"} >2013-09-06T20:00:49.124 INFO Starting up service > @fields: { "lvl": "INFO", "msg": "Starting up service"} >[offset: 186] {"ts": "2013-09-06T22:00:49.124817Z", "@fields": { "lvl": "INFO", "msg": >parse error: premature EOF > {"ts": "2013-09-06T22:00:49.124 > (right here) ------^ >[0;32mEND[0m test_json_format.sh_80959e2bb6a7fdf938c2e4dbd7d7c81eb84fa072.out >[0;31mBEGIN[0m test_json_format.sh_80959e2bb6a7fdf938c2e4dbd7d7c81eb84fa072.err >[0;31mEND[0m test_json_format.sh_80959e2bb6a7fdf938c2e4dbd7d7c81eb84fa072.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -I {test_dir} {test_dir}/logfile_mixed_json2.json >[0;32mBEGIN[0m test_json_format.sh_8f2ebcd319afc7966ef11e31f9dd646bf6f001dd.out >â® abc 48 def TRACE - trace test >â® abc 49 def INFO - Starting up service >â® abc 49 def INFO - Shutting down service > user: steve@example.com >timestamp="2013-09-06T22:00:50.123000Z" level="INFO" msg="Hello, World" >panic: foo bar failed baz > level1.py:10034 > level2.py:100 > level3.py:42 >â® abc 59 def DEBUG5 - Details... >â® abc 59 def DEBUG4 - Details... >â® abc 59 def DEBUG3 - Details... >â® abc 59 def DEBUG2 - Details... >â® abc 59 def DEBUG - Details... >â® abc 49 def STATS - 1 beat per second >[33mâ®[0m[33m [0m[33mabc 49 def[0m[33m WARNING - [0m[33mnot looking good[0m >[31mâ®[0m[31m [0m[31mabc 49 def[0m[31m ERROR - [0m[31mlooking bad[0m >[31mâ®[0m[31m [0m[31mabc 49 def[0m[31m CRITICAL - [0m[31msooo bad[0m >[31mâ®[0m[31m [0m[31mabc 49 def[0m[31m FATAL - [0m[31mshoot[0m >[31m obj: { "field1" : "hi", "field2": 2 }[0m >[31m arr: ["hi", {"sub1": true}][0m >[0;32mEND[0m test_json_format.sh_8f2ebcd319afc7966ef11e31f9dd646bf6f001dd.out >[0;31mBEGIN[0m test_json_format.sh_8f2ebcd319afc7966ef11e31f9dd646bf6f001dd.err >[0;31mEND[0m test_json_format.sh_8f2ebcd319afc7966ef11e31f9dd646bf6f001dd.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -I {test_dir} {test_dir}/logfile_json_subsec.json >[0;32mBEGIN[0m test_json_format.sh_c1a23804c39b0f74642286d69865ee9d0961a58a.out >2022-09-24T00:00:09.484 Hello, World! >2022-09-24T00:00:19.222 Goodbye, World! >[0;32mEND[0m test_json_format.sh_c1a23804c39b0f74642286d69865ee9d0961a58a.out >[0;31mBEGIN[0m test_json_format.sh_c1a23804c39b0f74642286d69865ee9d0961a58a.err >[0;31mEND[0m test_json_format.sh_c1a23804c39b0f74642286d69865ee9d0961a58a.err > >2025-01-17T20:39:34+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n {test_dir}/logfile_bunyan.0 >[0;32mBEGIN[0m test_json_format.sh_6767b91d715338c24c67e928b59c560c84ddf4be.out >2023-03-24T14:26:16.243 renovate[7] DEBUG Found gitlabci-include package files > logContext: qjifsaDDI > repository: webgui/custom-icons-transformer >2023-03-24T14:26:16.243 renovate[7] DEBUG Found npm package files > logContext: qjifsaDDI > repository: webgui/custom-icons-transformer >2023-03-24T14:26:16.243 renovate[7] DEBUG [/Users/trentm/tm/node-bunyan/examples/src.js:20:Wuzzle.woos] Found 3 package file(s) > logContext: qjifsaDDI > repository: webgui/custom-icons-transformer >2023-03-24T14:26:16.243 renovate[7] INFO Dependency extraction complete > logContext: qjifsaDDI > repository: webgui/custom-icons-transformer > baseBranch: main > stats: {"managers":{"gitlabci":{"fileCount":1,"depCount":1},"gitlabci-include":{"fileCount":1,"depCount":1},"npm":{"fileCount":1,"depCount":15}},"total":{"fileCount":3,"depCount":17}} >2023-03-24T14:26:16.390 renovate[7] DEBUG Dependency node has unsupported/unversioned value lts-bullseye-slim (versioning=docker) > logContext: qjifsaDDI > repository: webgui/custom-icons-transformer >2023-03-24T14:26:17.493 renovate[7] DEBUG Release 2.8.7 is pending status checks > logContext: qjifsaDDI > repository: webgui/custom-icons-transformer > depName: prettier > check: stabilityDays >2023-03-24T14:26:17.897 renovate[7] DEBUG Release 4.4.1 is pending status checks > logContext: qjifsaDDI > repository: webgui/custom-icons-transformer > depName: rimraf > check: stabilityDays >2023-03-24T14:26:17.897 renovate[7] DEBUG All releases are pending - using latest > logContext: qjifsaDDI > repository: webgui/custom-icons-transformer > depName: rimraf > bucket: non-major >2023-03-24T14:26:18.330 renovate[7] DEBUG Release 2.10.0 is pending status checks > logContext: qjifsaDDI > repository: webgui/custom-icons-transformer > depName: prettier-plugin-svelte > check: stabilityDays >2023-03-24T14:26:18.331 renovate[7] DEBUG All releases are pending - using latest > logContext: qjifsaDDI > repository: webgui/custom-icons-transformer > depName: prettier-plugin-svelte > bucket: non-major >[0;32mEND[0m test_json_format.sh_6767b91d715338c24c67e928b59c560c84ddf4be.out >[0;31mBEGIN[0m test_json_format.sh_6767b91d715338c24c67e928b59c560c84ddf4be.err >[0;31mEND[0m test_json_format.sh_6767b91d715338c24c67e928b59c560c84ddf4be.err > >2025-01-17T20:39:34+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n {test_dir}/logfile_cloudflare.json >[0;32mBEGIN[0m test_json_format.sh_ad3a238d03493de305544f9b30a0c69d4f474d3a.out >87.226.160.250 2022-10-30T00:00:02.000 "HEAD / HTTP/1.1" 301 570 >[0;32mEND[0m test_json_format.sh_ad3a238d03493de305544f9b30a0c69d4f474d3a.out >[0;31mBEGIN[0m test_json_format.sh_ad3a238d03493de305544f9b30a0c69d4f474d3a.err >[0;31mEND[0m test_json_format.sh_ad3a238d03493de305544f9b30a0c69d4f474d3a.err > >2025-01-17T20:39:34+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :show-fields RayID {test_dir}/logfile_cloudflare.json >[0;32mBEGIN[0m test_json_format.sh_e36401aa54bc61de71f8dcbe66ea16effa59ea52.out >87.226.160.250 2022-10-30T00:00:02.000 "HEAD / HTTP/1.1" 301 570 > RayID: 761fde4e984e5ab2 >[0;32mEND[0m test_json_format.sh_e36401aa54bc61de71f8dcbe66ea16effa59ea52.out >[0;31mBEGIN[0m test_json_format.sh_e36401aa54bc61de71f8dcbe66ea16effa59ea52.err >[0;31mEND[0m test_json_format.sh_e36401aa54bc61de71f8dcbe66ea16effa59ea52.err >FAIL test_json_format.sh (exit status: 1) > >FAIL: test_scripts.sh >===================== > >2025-01-17T20:39:30+01:00 [0;35m=============================================================[0m >test: ../src/lnav-test -n -d /tmp/lnav.err -I /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test -f multiline-echo scripts-empty >test: ../src/lnav-test -n -d /tmp/lnav.err -I /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test -f multiline-echo scripts-empty >multiline-echo has errors? >--- - 2025-01-17 20:39:30.909576469 +0100 >+++ test_scripts.sh_1.err 2025-01-17 20:39:30.905218057 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:84160: sqlite3ValueText: Assertion `pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.1678.log >+========================= >FAIL test_scripts.sh (exit status: 1) > >FAIL: test_sessions.sh >====================== > > >2025-01-17T20:39:30+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :reset-session -c :goto 0 -c :hide-file -c :save-session {test_dir}/logfile_access_log.0 {test_dir}/logfile_access_log.1 >[0;32mBEGIN[0m test_sessions.sh_b932b33dd087b94d4306dd179c5d4f9ddd394960.out >10.112.81.15 - - [15/Feb/2013:06:00:31 +0000] "-" 400 0 "-" "-" >[0;32mEND[0m test_sessions.sh_b932b33dd087b94d4306dd179c5d4f9ddd394960.out >[0;31mBEGIN[0m test_sessions.sh_b932b33dd087b94d4306dd179c5d4f9ddd394960.err >[0;31mEND[0m test_sessions.sh_b932b33dd087b94d4306dd179c5d4f9ddd394960.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :load-session {test_dir}/logfile_access_log.0 {test_dir}/logfile_access_log.1 >[0;32mBEGIN[0m test_sessions.sh_ddf45811e9906de9f3930fe802ac7b2cc6e48106.out >10.112.81.15 - - [15/Feb/2013:06:00:31 +0000] "-" 400 0 "-" "-" >[0;32mEND[0m test_sessions.sh_ddf45811e9906de9f3930fe802ac7b2cc6e48106.out >[0;31mBEGIN[0m test_sessions.sh_ddf45811e9906de9f3930fe802ac7b2cc6e48106.err >[0;31mEND[0m test_sessions.sh_ddf45811e9906de9f3930fe802ac7b2cc6e48106.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -nq -c :reset-session -c ;update access_log set log_mark = 1 where sc_bytes > 60000 -c :goto 1 -c :partition-name middle -c :save-session {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_sessions.sh_a92822d121a836140a401fd71535dc4a7a8d5b48.out >[0;32mEND[0m test_sessions.sh_a92822d121a836140a401fd71535dc4a7a8d5b48.out >[0;31mBEGIN[0m test_sessions.sh_a92822d121a836140a401fd71535dc4a7a8d5b48.err >[0;31mEND[0m test_sessions.sh_a92822d121a836140a401fd71535dc4a7a8d5b48.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -nq -c ;update access_log set log_mark = 1 where sc_bytes > 60000 -c :goto 1 -c :hide-file */logfile_access_log.1 -c :export-session-to - support-dump/logfile_access_log.0 support-dump/logfile_access_log.1 >[0;32mBEGIN[0m test_sessions.sh_6d87ff483d5785c58fb271a405ff1c35e4f83cd9.out >[0;32mEND[0m test_sessions.sh_6d87ff483d5785c58fb271a405ff1c35e4f83cd9.out >OUT: test: ../src/lnav-test -nq -c ;update access_log set log_mark = 1 where sc_bytes > 60000 -c :goto 1 -c :hide-file */logfile_access_log.1 -c :export-session-to - support-dump/logfile_access_log.0 support-dump/logfile_access_log.1 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sessions.sh_6d87ff483d5785c58fb271a405ff1c35e4f83cd9.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_sessions.sh_6d87ff483d5785c58fb271a405ff1c35e4f83cd9.out 2025-01-17 20:39:31.348235838 +0100 >@@ -1,36 +0,0 @@ >-#!lnav -Nf >-# This file is an export of an lnav session. You can type >-# '|/path/to/this/file' in lnav to execute this file and >-# restore the state of the session. >- >-;SELECT raise_error('This session export was made with a newer version of lnav, please upgrade to ' || '0.11.2' || ' or later') >- WHERE lnav_version() < '0.11.2' COLLATE naturalcase >- >-# The files loaded into the session were: >- >- >-# Set this environment variable to override this value or edit this script. >-;INSERT OR IGNORE INTO environ (name, value) VALUES ('LOG_DIR_0', '{test_dir}') >-:open $LOG_DIR_0/support-dump/logfile_access_log.0 >-:open $LOG_DIR_0/support-dump/logfile_access_log.1 >- >-:rebuild >- >- >-# The following SQL statements will restore the bookmarks, >-# comments, and tags that were added in the session. >- >-;SELECT total_changes() AS before_mark_changes >-;UPDATE all_logs SET log_mark = 1, log_comment = NULL, log_tags = NULL WHERE log_time_msecs = 1248130769000 AND log_format = 'access_log' AND log_line_hash = 'v1:b05c1bdfe75cde41e151c89087e31951' >- >-;SELECT 1 - (total_changes() - $before_mark_changes) AS failed_mark_changes >-;SELECT echoln(printf('%sERROR%s: failed to restore %d bookmarks', >- $ansi_red, $ansi_norm, $failed_mark_changes)) >- WHERE $failed_mark_changes != 0 >- >- >-# The following commands will restore the state of the LOG view. >- >-:switch-to-view log >-:hide-file */support-dump/logfile_access_log.1 >-:goto 1 >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_sessions.sh_6d87ff483d5785c58fb271a405ff1c35e4f83cd9.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ./sessions/.lnav/crash/crash-2013-06-06-21-13-20.3728.log >========================= >[0;31mEND[0m test_sessions.sh_6d87ff483d5785c58fb271a405ff1c35e4f83cd9.err >ERR: test: ../src/lnav-test -nq -c ;update access_log set log_mark = 1 where sc_bytes > 60000 -c :goto 1 -c :hide-file */logfile_access_log.1 -c :export-session-to - support-dump/logfile_access_log.0 support-dump/logfile_access_log.1 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sessions.sh_6d87ff483d5785c58fb271a405ff1c35e4f83cd9.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_sessions.sh_6d87ff483d5785c58fb271a405ff1c35e4f83cd9.err 2025-01-17 20:39:31.360236319 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ./sessions/.lnav/crash/crash-2013-06-06-21-13-20.3728.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -nq -c ;update access_log set log_mark = 1 where sc_bytes > 60000 -c :set-min-log-level debug -c :hide-lines-before 2005 -c :hide-lines-after 2030 -c :filter-out blah -c /foobar -c :goto 1 -c :export-session-to exported-session.0.lnav {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_sessions.sh_b3d71a87fcb4e3487f71ccad8c6ce681db220572.out >[0;32mEND[0m test_sessions.sh_b3d71a87fcb4e3487f71ccad8c6ce681db220572.out >[0;31mBEGIN[0m test_sessions.sh_b3d71a87fcb4e3487f71ccad8c6ce681db220572.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ./sessions/.lnav/crash/crash-2013-06-06-21-13-20.4227.log >========================= >[0;31mEND[0m test_sessions.sh_b3d71a87fcb4e3487f71ccad8c6ce681db220572.err >ERR: test: ../src/lnav-test -nq -c ;update access_log set log_mark = 1 where sc_bytes > 60000 -c :set-min-log-level debug -c :hide-lines-before 2005 -c :hide-lines-after 2030 -c :filter-out blah -c /foobar -c :goto 1 -c :export-session-to exported-session.0.lnav {test_dir}/logfile_access_log.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sessions.sh_b3d71a87fcb4e3487f71ccad8c6ce681db220572.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_sessions.sh_b3d71a87fcb4e3487f71ccad8c6ce681db220572.err 2025-01-17 20:39:31.491241577 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ./sessions/.lnav/crash/crash-2013-06-06-21-13-20.4227.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c |exported-session.0.lnav -c ;SELECT * FROM lnav_view_filters -c :write-screen-to - -c ;SELECT name,search FROM lnav_views -c :write-screen-to - {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_sessions.sh_9978aaa475513f9981840e612f853a7707ffcf90.out > > >[0;32mEND[0m test_sessions.sh_9978aaa475513f9981840e612f853a7707ffcf90.out >OUT: test: ../src/lnav-test -n -c |exported-session.0.lnav -c ;SELECT * FROM lnav_view_filters -c :write-screen-to - -c ;SELECT name,search FROM lnav_views -c :write-screen-to - {test_dir}/logfile_access_log.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sessions.sh_9978aaa475513f9981840e612f853a7707ffcf90.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_sessions.sh_9978aaa475513f9981840e612f853a7707ffcf90.out 2025-01-17 20:39:31.612246434 +0100 >@@ -1,11 +1,2 @@ >-view_name filter_id enabled type language pattern >-log 1 1 out regex blah >- name search >-log foobar >-text >-help >-histogram >-db >-schema >-pretty >-spectro >+ >+ >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_sessions.sh_9978aaa475513f9981840e612f853a7707ffcf90.err >lnav-test: sqlite3.c:84160: sqlite3ValueText: Assertion `pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ./sessions/.lnav/crash/crash-2013-06-06-21-13-20.4739.log >========================= >[0;31mEND[0m test_sessions.sh_9978aaa475513f9981840e612f853a7707ffcf90.err >ERR: test: ../src/lnav-test -n -c |exported-session.0.lnav -c ;SELECT * FROM lnav_view_filters -c :write-screen-to - -c ;SELECT name,search FROM lnav_views -c :write-screen-to - {test_dir}/logfile_access_log.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sessions.sh_9978aaa475513f9981840e612f853a7707ffcf90.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_sessions.sh_9978aaa475513f9981840e612f853a7707ffcf90.err 2025-01-17 20:39:31.625246956 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:84160: sqlite3ValueText: Assertion `pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ./sessions/.lnav/crash/crash-2013-06-06-21-13-20.4739.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :load-session -c :write-to - {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_sessions.sh_0300a1391c33b1c45ddfa90198a6bd0a5404a77f.out >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_sessions.sh_0300a1391c33b1c45ddfa90198a6bd0a5404a77f.out >[0;31mBEGIN[0m test_sessions.sh_0300a1391c33b1c45ddfa90198a6bd0a5404a77f.err >[0;31mEND[0m test_sessions.sh_0300a1391c33b1c45ddfa90198a6bd0a5404a77f.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :load-session -c :close -c :save-session {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_sessions.sh_345b0e66dab7b881397c4b38380da81092ab70dd.out >[0;32mEND[0m test_sessions.sh_345b0e66dab7b881397c4b38380da81092ab70dd.out >[0;31mBEGIN[0m test_sessions.sh_345b0e66dab7b881397c4b38380da81092ab70dd.err >[0;31mEND[0m test_sessions.sh_345b0e66dab7b881397c4b38380da81092ab70dd.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :load-session -c ;select log_line,log_part from access_log -c :write-csv-to - {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_sessions.sh_68a89b56c5e7f7db620084cca1eb547cbb19a2c9.out >[0;32mEND[0m test_sessions.sh_68a89b56c5e7f7db620084cca1eb547cbb19a2c9.out >OUT: test: ../src/lnav-test -n -c :load-session -c ;select log_line,log_part from access_log -c :write-csv-to - {test_dir}/logfile_access_log.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sessions.sh_68a89b56c5e7f7db620084cca1eb547cbb19a2c9.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_sessions.sh_68a89b56c5e7f7db620084cca1eb547cbb19a2c9.out 2025-01-17 20:39:31.983261324 +0100 >@@ -1,4 +0,0 @@ >-log_line,log_part >-0,<NULL> >-1,middle >-2,middle >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_sessions.sh_68a89b56c5e7f7db620084cca1eb547cbb19a2c9.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ./sessions/.lnav/crash/crash-2013-06-06-21-13-20.5795.log >========================= >[0;31mEND[0m test_sessions.sh_68a89b56c5e7f7db620084cca1eb547cbb19a2c9.err >ERR: test: ../src/lnav-test -n -c :load-session -c ;select log_line,log_part from access_log -c :write-csv-to - {test_dir}/logfile_access_log.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sessions.sh_68a89b56c5e7f7db620084cca1eb547cbb19a2c9.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_sessions.sh_68a89b56c5e7f7db620084cca1eb547cbb19a2c9.err 2025-01-17 20:39:31.995261806 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ./sessions/.lnav/crash/crash-2013-06-06-21-13-20.5795.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -nq -c :adjust-log-time 2010-01-01T00:00:00 -c :save-session {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_sessions.sh_4f13dd3858546b6e04a27e244159d355e368f2ae.out >[0;32mEND[0m test_sessions.sh_4f13dd3858546b6e04a27e244159d355e368f2ae.out >[0;31mBEGIN[0m test_sessions.sh_4f13dd3858546b6e04a27e244159d355e368f2ae.err >[0;31mEND[0m test_sessions.sh_4f13dd3858546b6e04a27e244159d355e368f2ae.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :load-session -c :test-comment adjust time in session {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_sessions.sh_858fd0081ed9c46dd81e2f81f1090756f2463558.out >192.168.202.254 - - [01/Jan/2010:00:00:00 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7" >192.168.202.254 - - [01/Jan/2010:00:00:03 +0000] "GET /vmw/vSphere/default/vmkboot.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7" >192.168.202.254 - - [01/Jan/2010:00:00:03 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_sessions.sh_858fd0081ed9c46dd81e2f81f1090756f2463558.out >[0;31mBEGIN[0m test_sessions.sh_858fd0081ed9c46dd81e2f81f1090756f2463558.err >[0;31mEND[0m test_sessions.sh_858fd0081ed9c46dd81e2f81f1090756f2463558.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -nq -d /tmp/lnav.err -c :hide-fields c_ip -c :save-session {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_sessions.sh_903b41c950f5f90d7786d7a09bb6e2f217654b15.out >[0;32mEND[0m test_sessions.sh_903b41c950f5f90d7786d7a09bb6e2f217654b15.out >[0;31mBEGIN[0m test_sessions.sh_903b41c950f5f90d7786d7a09bb6e2f217654b15.err >[0;31mEND[0m test_sessions.sh_903b41c950f5f90d7786d7a09bb6e2f217654b15.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :load-session -c :test-comment restoring hidden fields {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_sessions.sh_17b85654b929b2a8fc1705a170ced544783292fa.out >â® - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7" >â® - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkboot.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7" >â® - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_sessions.sh_17b85654b929b2a8fc1705a170ced544783292fa.out >[0;31mBEGIN[0m test_sessions.sh_17b85654b929b2a8fc1705a170ced544783292fa.err >[0;31mEND[0m test_sessions.sh_17b85654b929b2a8fc1705a170ced544783292fa.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -nq -d /tmp/lnav.err -c :hide-lines-before 2009-07-20 22:59:29 -c :save-session {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_sessions.sh_430b9522ba1a37983138f3c4935cba91b781e415.out >[0;32mEND[0m test_sessions.sh_430b9522ba1a37983138f3c4935cba91b781e415.out >[0;31mBEGIN[0m test_sessions.sh_430b9522ba1a37983138f3c4935cba91b781e415.err >[0;31mEND[0m test_sessions.sh_430b9522ba1a37983138f3c4935cba91b781e415.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -d /tmp/lnav.err -c :load-session -c :test-comment restore hidden lines {test_dir}/logfile_access_log.0 >[0;32mBEGIN[0m test_sessions.sh_92a98a3e4e3a10bf1f2371d21a8282c5d3d4baa5.out >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkboot.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7" >192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" >[0;32mEND[0m test_sessions.sh_92a98a3e4e3a10bf1f2371d21a8282c5d3d4baa5.out >[0;31mBEGIN[0m test_sessions.sh_92a98a3e4e3a10bf1f2371d21a8282c5d3d4baa5.err >[0;31mEND[0m test_sessions.sh_92a98a3e4e3a10bf1f2371d21a8282c5d3d4baa5.err >FAIL test_sessions.sh (exit status: 1) > >FAIL: test_sql.sh >================= > > >2025-01-17T20:39:30+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -nN -c ;SELECT 1 = ? >[0;32mBEGIN[0m test_sql.sh_5fe26fe4fc22f23f8dbe3a6aab394602886f2971.out >[0;32mEND[0m test_sql.sh_5fe26fe4fc22f23f8dbe3a6aab394602886f2971.out >[0;31mBEGIN[0m test_sql.sh_5fe26fe4fc22f23f8dbe3a6aab394602886f2971.err >[1m[31mâ error[0m: invalid SQL statement > [1m[31mreason[0m: using a question-mark (?) for bound variables is not supported, only named bound parameters are supported >[36m --> [0m[1mcommand-option[0m:1 >[36m | [0m[37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40m1[0m[37m[40m [0m[1m[37m[40m=[0m[37m[40m ? [0m >[36m =[0m [36mhelp[0m: named parameters start with a dollar-sign ($) or colon (:) followed by the variable name >[0;31mEND[0m test_sql.sh_5fe26fe4fc22f23f8dbe3a6aab394602886f2971.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c ;.read nonexistent-file {test_dir}/logfile_empty.0 >[0;32mBEGIN[0m test_sql.sh_6ad9d0adf85c36363f6b24f49950dcdc13dd34ab.out >[0;32mEND[0m test_sql.sh_6ad9d0adf85c36363f6b24f49950dcdc13dd34ab.out >[0;31mBEGIN[0m test_sql.sh_6ad9d0adf85c36363f6b24f49950dcdc13dd34ab.err >[1m[31mâ error[0m: unable to read script file: nonexistent-file -- No such file or directory >[36m --> [0m[1mcommand-option[0m:1 >[36m | [0m[37m[40m;[0m[1m[36m[40m.read[0m[37m[40m nonexistent-file [0m >[36m =[0m [36mhelp[0m: [4m;[0m[1m[4m.read[0m[4m [0m[4mpath[0m > ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ > Execute the SQLite statements in the given file >[0;31mEND[0m test_sql.sh_6ad9d0adf85c36363f6b24f49950dcdc13dd34ab.err >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >test: ../src/lnav-test -n -c ;.read /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/file_for_dot_read.sql -c :write-csv-to - /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/logfile_syslog.0 >test: ../src/lnav-test -n -c ;.read /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/file_for_dot_read.sql -c :write-csv-to - /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/logfile_syslog.0 >.read did not work? >--- - 2025-01-17 20:39:31.190497810 +0100 >+++ test_sql.sh_1.tmp 2025-01-17 20:39:31.186229336 +0100 >@@ -1,2 +0,0 @@ >-log_line,log_body >-1, attempting to mount entry /auto/opt >FAIL test_sql.sh (exit status: 1) > >FAIL: test_sql_indexes.sh >========================= > > >2025-01-17T20:39:30+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c ;EXPLAIN QUERY PLAN SELECT * FROM access_log WHERE log_path GLOB '*/logfile_access_log.*' -c ;SELECT $id, $parent, $notused, replace($detail, 'SCAN TABLE', 'SCAN') {test_dir}/logfile_access_log.0 {test_dir}/logfile_access_log.1 >[0;32mBEGIN[0m test_sql_indexes.sh_dab07d8de7728752ae938a174468d75e85f3ae7e.out >[0;32mEND[0m test_sql_indexes.sh_dab07d8de7728752ae938a174468d75e85f3ae7e.out >OUT: test: ../src/lnav-test -n -c ;EXPLAIN QUERY PLAN SELECT * FROM access_log WHERE log_path GLOB '*/logfile_access_log.*' -c ;SELECT $id, $parent, $notused, replace($detail, 'SCAN TABLE', 'SCAN') {test_dir}/logfile_access_log.0 {test_dir}/logfile_access_log.1 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_indexes.sh_dab07d8de7728752ae938a174468d75e85f3ae7e.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_indexes.sh_dab07d8de7728752ae938a174468d75e85f3ae7e.out 2025-01-17 20:39:30.915218459 +0100 >@@ -1,2 +0,0 @@ >-[1m[4m[7m$id [0m[1m[4m[7m$parent [0m[1m[4m[7m$notused [0m[1m[4m replace($detail, 'SCAN TABLE', 'SCAN') [0m >-[1m[7m 2[0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7mSCAN access_log VIRTUAL TABLE INDEX 1:SEARCH access_log USING log_path GLOB[0m[1m ? [0m >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_sql_indexes.sh_dab07d8de7728752ae938a174468d75e85f3ae7e.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.1793.log >========================= >[0;31mEND[0m test_sql_indexes.sh_dab07d8de7728752ae938a174468d75e85f3ae7e.err >ERR: test: ../src/lnav-test -n -c ;EXPLAIN QUERY PLAN SELECT * FROM access_log WHERE log_path GLOB '*/logfile_access_log.*' -c ;SELECT $id, $parent, $notused, replace($detail, 'SCAN TABLE', 'SCAN') {test_dir}/logfile_access_log.0 {test_dir}/logfile_access_log.1 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_indexes.sh_dab07d8de7728752ae938a174468d75e85f3ae7e.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_indexes.sh_dab07d8de7728752ae938a174468d75e85f3ae7e.err 2025-01-17 20:39:30.929219020 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.1793.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c ;SELECT *,log_unique_path FROM access_log WHERE log_path GLOB '*/logfile_access_log.*' {test_dir}/logfile_access_log.0 {test_dir}/logfile_access_log.1 >[0;32mBEGIN[0m test_sql_indexes.sh_541a8e35f34a206e340a3880128b6ce137847872.out >[0;32mEND[0m test_sql_indexes.sh_541a8e35f34a206e340a3880128b6ce137847872.out >OUT: test: ../src/lnav-test -n -c ;SELECT *,log_unique_path FROM access_log WHERE log_path GLOB '*/logfile_access_log.*' {test_dir}/logfile_access_log.0 {test_dir}/logfile_access_log.1 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_indexes.sh_541a8e35f34a206e340a3880128b6ce137847872.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_indexes.sh_541a8e35f34a206e340a3880128b6ce137847872.out 2025-01-17 20:39:31.048223797 +0100 >@@ -1,5 +0,0 @@ >-[1m[4mlog_line [0m[1m[4mlog_part [0m[1m[4m log_time [0m[1m[4m[7mlog_idle_msecs [0m[1m[4mlog_level [0m[1m[4mlog_mark [0m[1m[4mlog_comment [0m[1m[4mlog_tags [0m[1m[4mlog_filters [0m[1m[4m c_ip [0m[1m[4mcs_method [0m[1m[4mcs_referer [0m[1m[4mcs_uri_query [0m[1m[4m cs_uri_stem [0m[1m[4mcs_user_agent [0m[1m[4mcs_username [0m[1m[4mcs_version [0m[1m[4m[7msc_bytes [0m[1m[4msc_status [0m[1m[4mcs_host [0m[1m[4m log_unique_path [0m >-[1m[7m [0m[1m 0[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m2009-07-20 22:59:26.000[0m[1m [0m[1m 0[0m[1m [0m[1minfo [0m[1m [0m[1m 0[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m192.168.202.254[0m[1m [0m[1mGET [0m[1m [0m[1m- [0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m/vmw/cgi/tramp [0m[1m [0m[1mgPXE/0.9.7 [0m[1m [0m[1m- [0m[1m [0m[1mHTTP/1.0 [0m[1m [0m[1m 134[0m[1m [0m[1m 200[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1mlogfile_access_log.0 [0m >-[7m [0m[7m [0m 1 <NULL> 2009-07-20 22:59:29.000 3000 error 0 <NULL> <NULL> <NULL> 192.168.202.254 GET - <NULL> /vmw/vSphere/default/vmkboot.gz gPXE/0.9.7 - HTTP/1.0 46210 404 <NULL> logfile_access_log.0 >-[1m[7m [0m[1m 2[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m2009-07-20 22:59:29.000[0m[1m [0m[1m 0[0m[1m [0m[1minfo [0m[1m [0m[1m 0[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m192.168.202.254[0m[1m [0m[1mGET [0m[1m [0m[1m- [0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m/vmw/vSphere/default/vmkernel.gz[0m[1m [0m[1mgPXE/0.9.7 [0m[1m [0m[1m- [0m[1m [0m[1mHTTP/1.0 [0m[1m [0m[1m 78929[0m[1m [0m[1m 200[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1mlogfile_access_log.0 [0m >-[7m 3[0m[7m [0m[7m <NULL>[0m[7m [0m[7m2013-02-15 06:00:31.000[0m[7m [0m[7m 112777262000[0m[7m [0m[7merror [0m[7m [0m[7m 0[0m[7m [0m[7m <NULL>[0m[7m [0m[7m <NULL>[0m[7m [0m[7m <NULL>[0m[7m [0m[7m10.112.81.15 [0m[7m [0m[7m<NULL> [0m[7m [0m[7m- [0m[7m [0m[7m <NULL>[0m[7m [0m[7m<NULL> [0m[7m [0m[7m- [0m[7m [0m[7m- [0m[7m [0m[7m<NULL> [0m[7m [0m[7m 0[0m[7m [0m[7m 400[0m[7m [0m[7m <NULL>[0m[7m [0m[7mlogfile_access_log.[0m1 >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_sql_indexes.sh_541a8e35f34a206e340a3880128b6ce137847872.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.2450.log >========================= >[0;31mEND[0m test_sql_indexes.sh_541a8e35f34a206e340a3880128b6ce137847872.err >ERR: test: ../src/lnav-test -n -c ;SELECT *,log_unique_path FROM access_log WHERE log_path GLOB '*/logfile_access_log.*' {test_dir}/logfile_access_log.0 {test_dir}/logfile_access_log.1 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_indexes.sh_541a8e35f34a206e340a3880128b6ce137847872.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_indexes.sh_541a8e35f34a206e340a3880128b6ce137847872.err 2025-01-17 20:39:31.061224318 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.2450.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c ;EXPLAIN QUERY PLAN SELECT * FROM all_logs WHERE log_format = 'access_log' -c ;SELECT $id, $parent, $notused, replace($detail, 'SCAN TABLE', 'SCAN') {test_dir}/logfile_access_log.0 {test_dir}/logfile_access_log.1 >[0;32mBEGIN[0m test_sql_indexes.sh_b615b6737b1e0d383c8ce4a1db56332f11dbc158.out >[0;32mEND[0m test_sql_indexes.sh_b615b6737b1e0d383c8ce4a1db56332f11dbc158.out >OUT: test: ../src/lnav-test -n -c ;EXPLAIN QUERY PLAN SELECT * FROM all_logs WHERE log_format = 'access_log' -c ;SELECT $id, $parent, $notused, replace($detail, 'SCAN TABLE', 'SCAN') {test_dir}/logfile_access_log.0 {test_dir}/logfile_access_log.1 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_indexes.sh_b615b6737b1e0d383c8ce4a1db56332f11dbc158.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_indexes.sh_b615b6737b1e0d383c8ce4a1db56332f11dbc158.out 2025-01-17 20:39:31.177228975 +0100 >@@ -1,2 +0,0 @@ >-[1m[4m[7m$id [0m[1m[4m[7m$parent [0m[1m[4m[7m$notused [0m[1m[4m replace($detail, 'SCAN TABLE', 'SCAN') [0m >-[1m[7m 2[0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7mSCAN all_logs VIRTUAL TABLE INDEX 1:SEARCH all_logs USING log_format =[0m[1m ? [0m >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_sql_indexes.sh_b615b6737b1e0d383c8ce4a1db56332f11dbc158.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.3040.log >========================= >[0;31mEND[0m test_sql_indexes.sh_b615b6737b1e0d383c8ce4a1db56332f11dbc158.err >ERR: test: ../src/lnav-test -n -c ;EXPLAIN QUERY PLAN SELECT * FROM all_logs WHERE log_format = 'access_log' -c ;SELECT $id, $parent, $notused, replace($detail, 'SCAN TABLE', 'SCAN') {test_dir}/logfile_access_log.0 {test_dir}/logfile_access_log.1 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_indexes.sh_b615b6737b1e0d383c8ce4a1db56332f11dbc158.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_indexes.sh_b615b6737b1e0d383c8ce4a1db56332f11dbc158.err 2025-01-17 20:39:31.191229536 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.3040.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c ;SELECT *,log_format FROM all_logs WHERE log_format = 'access_log' {test_dir}/logfile_access_log.0 {test_dir}/logfile_access_log.1 {test_dir}/logfile_procstate.0 >[0;32mBEGIN[0m test_sql_indexes.sh_69fd19d56a8cd1fc9c7eb9351270eabb491f8233.out >[0;32mEND[0m test_sql_indexes.sh_69fd19d56a8cd1fc9c7eb9351270eabb491f8233.out >OUT: test: ../src/lnav-test -n -c ;SELECT *,log_format FROM all_logs WHERE log_format = 'access_log' {test_dir}/logfile_access_log.0 {test_dir}/logfile_access_log.1 {test_dir}/logfile_procstate.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_indexes.sh_69fd19d56a8cd1fc9c7eb9351270eabb491f8233.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_indexes.sh_69fd19d56a8cd1fc9c7eb9351270eabb491f8233.out 2025-01-17 20:39:31.309234273 +0100 >@@ -1,5 +0,0 @@ >-[1m[4mlog_line [0m[1m[4mlog_part [0m[1m[4m log_time [0m[1m[4m[7mlog_idle_msecs [0m[1m[4mlog_level [0m[1m[4mlog_mark [0m[1m[4mlog_comment [0m[1m[4mlog_tags [0m[1m[4mlog_filters [0m[1m[4mlog_msg_format [0m[1m[4mlog_format [0m >-[1m 0[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m2009-07-20 22:59:26.000[0m[1m [0m[1m 0[0m[1m [0m[1minfo [0m[1m [0m[1m 0[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m [0m[1m [0m[1maccess_log [0m >-[7m [0m 1 <NULL> 2009-07-20 22:59:29.000 3000 error 0 <NULL> <NULL> <NULL> access_log >-[1m 2[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m2009-07-20 22:59:29.000[0m[1m [0m[1m 0[0m[1m [0m[1minfo [0m[1m [0m[1m 0[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m [0m[1m [0m[1maccess_log [0m >-[7m 3[0m[7m [0m[7m <NULL>[0m[7m [0m[7m2013-02-15 06:00:31.000[0m[7m [0m[7m 112777262000[0m[7m [0m[7merror [0m[7m [0m[7m 0[0m[7m [0m[7m <NULL>[0m[7m [0m[7m <NULL>[0m[7m [0m[7m <NULL>[0m[7m [0m[7m [0m[7m [0m[7maccess_log[0m >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_sql_indexes.sh_69fd19d56a8cd1fc9c7eb9351270eabb491f8233.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.3600.log >========================= >[0;31mEND[0m test_sql_indexes.sh_69fd19d56a8cd1fc9c7eb9351270eabb491f8233.err >ERR: test: ../src/lnav-test -n -c ;SELECT *,log_format FROM all_logs WHERE log_format = 'access_log' {test_dir}/logfile_access_log.0 {test_dir}/logfile_access_log.1 {test_dir}/logfile_procstate.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_indexes.sh_69fd19d56a8cd1fc9c7eb9351270eabb491f8233.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_indexes.sh_69fd19d56a8cd1fc9c7eb9351270eabb491f8233.err 2025-01-17 20:39:31.322234794 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.3600.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c ;EXPLAIN QUERY PLAN SELECT * FROM all_logs WHERE log_level < 'error' -c ;SELECT $id, $parent, $notused, replace($detail, 'SCAN TABLE', 'SCAN') {test_dir}/logfile_access_log.0 {test_dir}/logfile_access_log.1 >[0;32mBEGIN[0m test_sql_indexes.sh_59a1497c13a5e09bc8f95ef02552b2835ebea6e5.out >[0;32mEND[0m test_sql_indexes.sh_59a1497c13a5e09bc8f95ef02552b2835ebea6e5.out >OUT: test: ../src/lnav-test -n -c ;EXPLAIN QUERY PLAN SELECT * FROM all_logs WHERE log_level < 'error' -c ;SELECT $id, $parent, $notused, replace($detail, 'SCAN TABLE', 'SCAN') {test_dir}/logfile_access_log.0 {test_dir}/logfile_access_log.1 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_indexes.sh_59a1497c13a5e09bc8f95ef02552b2835ebea6e5.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_indexes.sh_59a1497c13a5e09bc8f95ef02552b2835ebea6e5.out 2025-01-17 20:39:31.437239410 +0100 >@@ -1,2 +0,0 @@ >-[1m[4m[7m$id [0m[1m[4m[7m$parent [0m[1m[4m[7m$notused [0m[1m[4m replace($detail, 'SCAN TABLE', 'SCAN') [0m >-[1m[7m 2[0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7mSCAN all_logs VIRTUAL TABLE INDEX 1:SEARCH all_logs USING log_level <[0m[1m ? [0m >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_sql_indexes.sh_59a1497c13a5e09bc8f95ef02552b2835ebea6e5.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.4109.log >========================= >[0;31mEND[0m test_sql_indexes.sh_59a1497c13a5e09bc8f95ef02552b2835ebea6e5.err >ERR: test: ../src/lnav-test -n -c ;EXPLAIN QUERY PLAN SELECT * FROM all_logs WHERE log_level < 'error' -c ;SELECT $id, $parent, $notused, replace($detail, 'SCAN TABLE', 'SCAN') {test_dir}/logfile_access_log.0 {test_dir}/logfile_access_log.1 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_indexes.sh_59a1497c13a5e09bc8f95ef02552b2835ebea6e5.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_indexes.sh_59a1497c13a5e09bc8f95ef02552b2835ebea6e5.err 2025-01-17 20:39:31.451239972 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.4109.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c ;SELECT * FROM all_logs WHERE log_level < 'error' {test_dir}/logfile_access_log.0 {test_dir}/logfile_access_log.1 >[0;32mBEGIN[0m test_sql_indexes.sh_6f707b6e856dbaab6f95e7e89b98dc3652021f85.out >[0;32mEND[0m test_sql_indexes.sh_6f707b6e856dbaab6f95e7e89b98dc3652021f85.out >OUT: test: ../src/lnav-test -n -c ;SELECT * FROM all_logs WHERE log_level < 'error' {test_dir}/logfile_access_log.0 {test_dir}/logfile_access_log.1 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_indexes.sh_6f707b6e856dbaab6f95e7e89b98dc3652021f85.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_indexes.sh_6f707b6e856dbaab6f95e7e89b98dc3652021f85.out 2025-01-17 20:39:31.568244668 +0100 >@@ -1,3 +0,0 @@ >-[1m[4mlog_line [0m[1m[4mlog_part [0m[1m[4m log_time [0m[1m[4m[7mlog_idle_msecs [0m[1m[4mlog_level [0m[1m[4mlog_mark [0m[1m[4mlog_comment [0m[1m[4mlog_tags [0m[1m[4mlog_filters [0m[1m[4mlog_msg_format [0m >-[1m 0[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m2009-07-20 22:59:26.000[0m[1m [0m[1m 0[0m[1m [0m[1minfo [0m[1m [0m[1m 0[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m [0m >- 2 <NULL> 2009-07-20 22:59:29.000 0 info 0 <NULL> <NULL> <NULL> >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_sql_indexes.sh_6f707b6e856dbaab6f95e7e89b98dc3652021f85.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.4590.log >========================= >[0;31mEND[0m test_sql_indexes.sh_6f707b6e856dbaab6f95e7e89b98dc3652021f85.err >ERR: test: ../src/lnav-test -n -c ;SELECT * FROM all_logs WHERE log_level < 'error' {test_dir}/logfile_access_log.0 {test_dir}/logfile_access_log.1 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_indexes.sh_6f707b6e856dbaab6f95e7e89b98dc3652021f85.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_indexes.sh_6f707b6e856dbaab6f95e7e89b98dc3652021f85.err 2025-01-17 20:39:31.581245190 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.4590.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c ;SELECT * FROM all_logs WHERE log_level <= 'error' {test_dir}/logfile_access_log.0 {test_dir}/logfile_access_log.1 >[0;32mBEGIN[0m test_sql_indexes.sh_f7681c234d4f60df16c997a05163aeb058c52870.out >[0;32mEND[0m test_sql_indexes.sh_f7681c234d4f60df16c997a05163aeb058c52870.out >OUT: test: ../src/lnav-test -n -c ;SELECT * FROM all_logs WHERE log_level <= 'error' {test_dir}/logfile_access_log.0 {test_dir}/logfile_access_log.1 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_indexes.sh_f7681c234d4f60df16c997a05163aeb058c52870.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_indexes.sh_f7681c234d4f60df16c997a05163aeb058c52870.out 2025-01-17 20:39:31.694249725 +0100 >@@ -1,5 +0,0 @@ >-[1m[4mlog_line [0m[1m[4mlog_part [0m[1m[4m log_time [0m[1m[4m[7mlog_idle_msecs [0m[1m[4mlog_level [0m[1m[4mlog_mark [0m[1m[4mlog_comment [0m[1m[4mlog_tags [0m[1m[4mlog_filters [0m[1m[4mlog_msg_format [0m >-[1m 0[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m2009-07-20 22:59:26.000[0m[1m [0m[1m 0[0m[1m [0m[1minfo [0m[1m [0m[1m 0[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m [0m >-[7m [0m 1 <NULL> 2009-07-20 22:59:29.000 3000 error 0 <NULL> <NULL> <NULL> >-[1m 2[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m2009-07-20 22:59:29.000[0m[1m [0m[1m 0[0m[1m [0m[1minfo [0m[1m [0m[1m 0[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m [0m >-[7m 3[0m[7m [0m[7m <NULL>[0m[7m [0m[7m2013-02-15 06:00:31.000[0m[7m [0m[7m 112777262000[0m[7m [0m[7merror [0m[7m [0m[7m 0[0m[7m [0m[7m <NULL>[0m[7m [0m[7m <NULL>[0m[7m [0m[7m <NULL>[0m[7m [0m[7m [0m >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_sql_indexes.sh_f7681c234d4f60df16c997a05163aeb058c52870.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.5019.log >========================= >[0;31mEND[0m test_sql_indexes.sh_f7681c234d4f60df16c997a05163aeb058c52870.err >ERR: test: ../src/lnav-test -n -c ;SELECT * FROM all_logs WHERE log_level <= 'error' {test_dir}/logfile_access_log.0 {test_dir}/logfile_access_log.1 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_indexes.sh_f7681c234d4f60df16c997a05163aeb058c52870.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_indexes.sh_f7681c234d4f60df16c997a05163aeb058c52870.err 2025-01-17 20:39:31.707250247 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.5019.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c ;SELECT * FROM all_logs WHERE log_level >= 'error' {test_dir}/logfile_access_log.0 {test_dir}/logfile_access_log.1 >[0;32mBEGIN[0m test_sql_indexes.sh_1614ebb5e2e83bab11023354dea8a0885ddf64b4.out >[0;32mEND[0m test_sql_indexes.sh_1614ebb5e2e83bab11023354dea8a0885ddf64b4.out >OUT: test: ../src/lnav-test -n -c ;SELECT * FROM all_logs WHERE log_level >= 'error' {test_dir}/logfile_access_log.0 {test_dir}/logfile_access_log.1 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_indexes.sh_1614ebb5e2e83bab11023354dea8a0885ddf64b4.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_indexes.sh_1614ebb5e2e83bab11023354dea8a0885ddf64b4.out 2025-01-17 20:39:31.822254862 +0100 >@@ -1,3 +0,0 @@ >-[1m[4mlog_line [0m[1m[4mlog_part [0m[1m[4m log_time [0m[1m[4m[7mlog_idle_msecs [0m[1m[4mlog_level [0m[1m[4mlog_mark [0m[1m[4mlog_comment [0m[1m[4mlog_tags [0m[1m[4mlog_filters [0m[1m[4mlog_msg_format [0m >-[1m[7m [0m[1m 1[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m2009-07-20 22:59:29.000[0m[1m [0m[1m 3000[0m[1m [0m[1merror [0m[1m [0m[1m 0[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m [0m >-[7m 3[0m[7m [0m[7m <NULL>[0m[7m [0m[7m2013-02-15 06:00:31.000[0m[7m [0m[7m 112777262000[0m[7m [0m[7merror [0m[7m [0m[7m 0[0m[7m [0m[7m <NULL>[0m[7m [0m[7m <NULL>[0m[7m [0m[7m <NULL>[0m[7m [0m[7m [0m >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_sql_indexes.sh_1614ebb5e2e83bab11023354dea8a0885ddf64b4.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.5421.log >========================= >[0;31mEND[0m test_sql_indexes.sh_1614ebb5e2e83bab11023354dea8a0885ddf64b4.err >ERR: test: ../src/lnav-test -n -c ;SELECT * FROM all_logs WHERE log_level >= 'error' {test_dir}/logfile_access_log.0 {test_dir}/logfile_access_log.1 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_indexes.sh_1614ebb5e2e83bab11023354dea8a0885ddf64b4.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_indexes.sh_1614ebb5e2e83bab11023354dea8a0885ddf64b4.err 2025-01-17 20:39:31.834255344 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.5421.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c ;SELECT * FROM all_logs WHERE log_level > 'error' {test_dir}/logfile_access_log.0 {test_dir}/logfile_access_log.1 >[0;32mBEGIN[0m test_sql_indexes.sh_026dd9752b6101e0791689d3a2026f7e517e36f5.out >[0;32mEND[0m test_sql_indexes.sh_026dd9752b6101e0791689d3a2026f7e517e36f5.out >[0;31mBEGIN[0m test_sql_indexes.sh_026dd9752b6101e0791689d3a2026f7e517e36f5.err >[0;31mEND[0m test_sql_indexes.sh_026dd9752b6101e0791689d3a2026f7e517e36f5.err >FAIL test_sql_indexes.sh (exit status: 1) > >FAIL: test_sql_regexp.sh >======================== > > >2025-01-17T20:39:30+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c ;SELECT * FROM syslog_log, regexp_capture_into_json(log_body, '"(?<value>[^"]+)') -c :write-csv-to - {test_dir}/logfile_syslog.3 >[0;32mBEGIN[0m test_sql_regexp.sh_b841a0c09601e2419eeb99e85f7e286c889e4801.out >[0;32mEND[0m test_sql_regexp.sh_b841a0c09601e2419eeb99e85f7e286c889e4801.out >OUT: test: ../src/lnav-test -n -c ;SELECT * FROM syslog_log, regexp_capture_into_json(log_body, '"(?<value>[^"]+)') -c :write-csv-to - {test_dir}/logfile_syslog.3 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_regexp.sh_b841a0c09601e2419eeb99e85f7e286c889e4801.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_regexp.sh_b841a0c09601e2419eeb99e85f7e286c889e4801.out 2025-01-17 20:39:30.921218699 +0100 >@@ -1,27 +0,0 @@ >-log_line,log_part,log_time,log_idle_msecs,log_level,log_mark,log_comment,log_tags,log_filters,log_hostname,log_msgid,log_pid,log_pri,log_procname,log_struct,log_syslog_tag,syslog_version,match_index,content >-2,<NULL>,2022-08-16 00:32:15.000,199000,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,0,"{""value"":""com.apple.cdscheduler""}" >-2,<NULL>,2022-08-16 00:32:15.000,199000,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,1,"{""value"":"" claims selected messages.\n\tThose messages may not appear in standard system log files or in the ASL database.""}" >-5,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,0,"{""value"":""com.apple.install""}" >-5,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,1,"{""value"":"" claims selected messages.\n\tThose messages may not appear in standard system log files or in the ASL database.""}" >-8,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,0,"{""value"":""com.apple.authd""}" >-8,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,1,"{""value"":"" sharing output destination ""}" >-8,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,2,"{""value"":""/var/log/asl""}" >-8,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,3,"{""value"":"" with ASL Module ""}" >-8,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,4,"{""value"":""com.apple.asl""}" >-8,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,5,"{""value"":"".\n\tOutput parameters from ASL Module ""}" >-8,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,6,"{""value"":""com.apple.asl""}" >-8,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,7,"{""value"":"" override any specified in ASL Module ""}" >-8,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,8,"{""value"":""com.apple.authd""}" >-8,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,9,"{""value"":"".""}" >-11,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,0,"{""value"":""com.apple.authd""}" >-11,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,1,"{""value"":"" sharing output destination ""}" >-11,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,2,"{""value"":""/var/log/system.log""}" >-11,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,3,"{""value"":"" with ASL Module ""}" >-11,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,4,"{""value"":""com.apple.asl""}" >-11,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,5,"{""value"":"".\n\tOutput parameters from ASL Module ""}" >-11,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,6,"{""value"":""com.apple.asl""}" >-11,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,7,"{""value"":"" override any specified in ASL Module ""}" >-11,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,8,"{""value"":""com.apple.authd""}" >-11,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,9,"{""value"":"".""}" >-14,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,0,"{""value"":""com.apple.authd""}" >-14,<NULL>,2022-08-16 00:32:15.000,0,info,0,<NULL>,<NULL>,<NULL>,Tims-Air,<NULL>,314,<NULL>,syslogd,<NULL>,syslogd[314],<NULL>,1,"{""value"":"" claims selected messages.\n\tThose messages may not appear in standard system log files or in the ASL database.""}" >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_sql_regexp.sh_b841a0c09601e2419eeb99e85f7e286c889e4801.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.1828.log >========================= >[0;31mEND[0m test_sql_regexp.sh_b841a0c09601e2419eeb99e85f7e286c889e4801.err >ERR: test: ../src/lnav-test -n -c ;SELECT * FROM syslog_log, regexp_capture_into_json(log_body, '"(?<value>[^"]+)') -c :write-csv-to - {test_dir}/logfile_syslog.3 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_regexp.sh_b841a0c09601e2419eeb99e85f7e286c889e4801.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_regexp.sh_b841a0c09601e2419eeb99e85f7e286c889e4801.err 2025-01-17 20:39:30.935219262 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.1828.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c ;SELECT * from regexp_capture_into_json('foo=0x123e;', '(?<key>\w+)=(?<value>[^;]+)') {test_dir}/logfile_syslog.3 >[0;32mBEGIN[0m test_sql_regexp.sh_51293df041b6969ccecc60204dce3676d0fb006d.out >[0;32mEND[0m test_sql_regexp.sh_51293df041b6969ccecc60204dce3676d0fb006d.out >OUT: test: ../src/lnav-test -n -c ;SELECT * from regexp_capture_into_json('foo=0x123e;', '(?<key>\w+)=(?<value>[^;]+)') {test_dir}/logfile_syslog.3 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_regexp.sh_51293df041b6969ccecc60204dce3676d0fb006d.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_regexp.sh_51293df041b6969ccecc60204dce3676d0fb006d.out 2025-01-17 20:39:31.051223917 +0100 >@@ -1,2 +0,0 @@ >-[1m[4mmatch_index [0m[1m[4m content [0m >-[1m[7m 0[0m[1m[7m [0m[1m[7m{"key":"foo","value":4670}[0m[1m [0m >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_sql_regexp.sh_51293df041b6969ccecc60204dce3676d0fb006d.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.2474.log >========================= >[0;31mEND[0m test_sql_regexp.sh_51293df041b6969ccecc60204dce3676d0fb006d.err >ERR: test: ../src/lnav-test -n -c ;SELECT * from regexp_capture_into_json('foo=0x123e;', '(?<key>\w+)=(?<value>[^;]+)') {test_dir}/logfile_syslog.3 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_regexp.sh_51293df041b6969ccecc60204dce3676d0fb006d.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_regexp.sh_51293df041b6969ccecc60204dce3676d0fb006d.err 2025-01-17 20:39:31.065224479 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.2474.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c ;SELECT * from regexp_capture_into_json('foo=0x123e;', '(?<key>\w+)=(?<value>[^;]+)', json_object('convert-numbers', json('false'))) {test_dir}/logfile_syslog.3 >[0;32mBEGIN[0m test_sql_regexp.sh_ed6e9f13f178def009ee58c2aeea8c3c70fdb580.out >[0;32mEND[0m test_sql_regexp.sh_ed6e9f13f178def009ee58c2aeea8c3c70fdb580.out >OUT: test: ../src/lnav-test -n -c ;SELECT * from regexp_capture_into_json('foo=0x123e;', '(?<key>\w+)=(?<value>[^;]+)', json_object('convert-numbers', json('false'))) {test_dir}/logfile_syslog.3 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_regexp.sh_ed6e9f13f178def009ee58c2aeea8c3c70fdb580.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_regexp.sh_ed6e9f13f178def009ee58c2aeea8c3c70fdb580.out 2025-01-17 20:39:31.183229215 +0100 >@@ -1,2 +0,0 @@ >-[1m[4mmatch_index [0m[1m[4m content [0m >-[1m 0[0m[1m [0m[1m{"key":"foo","value":"0x123e"} [0m >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_sql_regexp.sh_ed6e9f13f178def009ee58c2aeea8c3c70fdb580.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.3054.log >========================= >[0;31mEND[0m test_sql_regexp.sh_ed6e9f13f178def009ee58c2aeea8c3c70fdb580.err >ERR: test: ../src/lnav-test -n -c ;SELECT * from regexp_capture_into_json('foo=0x123e;', '(?<key>\w+)=(?<value>[^;]+)', json_object('convert-numbers', json('false'))) {test_dir}/logfile_syslog.3 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_regexp.sh_ed6e9f13f178def009ee58c2aeea8c3c70fdb580.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_regexp.sh_ed6e9f13f178def009ee58c2aeea8c3c70fdb580.err 2025-01-17 20:39:31.197229777 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.3054.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c ;SELECT * from regexp_capture_into_json('foo=0x123e;', '(?<key>\w+)=(?<value>[^;]+)', '{abc') {test_dir}/logfile_syslog.3 >[0;32mBEGIN[0m test_sql_regexp.sh_d42e1fcfe6d42394f79da84be2d37e62c4c0ea63.out >[0;32mEND[0m test_sql_regexp.sh_d42e1fcfe6d42394f79da84be2d37e62c4c0ea63.out >[0;31mBEGIN[0m test_sql_regexp.sh_d42e1fcfe6d42394f79da84be2d37e62c4c0ea63.err >[1m[31mâ error[0m: unable to parse flags > [1m[31mreason[0m: invalid JSON >[1m[31m | [0m [1m[31mreason[0m: lexical error: invalid char in json text. >[1m[31m | [0m [1m[31m | [0m {abc >[1m[31m | [0m [1m[31m | [0m (right here) ------^ >[1m[31m | [0m [36m --> [0m[1mflags[0m:1 >[1m[31m | [0m [36m | [0m[37m[40m{abc[0m >[36m --> [0m[1mcommand-option[0m:1 >[36m | [0m[37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40m*[0m[37m[40m [0m[1m[36m[40mfrom[0m[37m[40m [0m[1m[37m[40mregexp_capture_into_json[0m[37m[40m([0m[35m[40m'foo=0x123e;'[0m[37m[40m, [0m[35m[40m'(?<key>\w+)=(?<value>[^;]+)'[0m[37m[40m, [0m[35m[40m'{abc'[0m[37m[40m)[0m >[0;31mEND[0m test_sql_regexp.sh_d42e1fcfe6d42394f79da84be2d37e62c4c0ea63.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c ;SELECT * from regexp_capture_into_json('foo=123e;', '(?<key>\w+)=(?<value>[^;]+)') {test_dir}/logfile_syslog.3 >[0;32mBEGIN[0m test_sql_regexp.sh_bbd1128cf61a9af8f9dc937b46217443f42e1a7a.out >[0;32mEND[0m test_sql_regexp.sh_bbd1128cf61a9af8f9dc937b46217443f42e1a7a.out >OUT: test: ../src/lnav-test -n -c ;SELECT * from regexp_capture_into_json('foo=123e;', '(?<key>\w+)=(?<value>[^;]+)') {test_dir}/logfile_syslog.3 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_regexp.sh_bbd1128cf61a9af8f9dc937b46217443f42e1a7a.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_regexp.sh_bbd1128cf61a9af8f9dc937b46217443f42e1a7a.out 2025-01-17 20:39:31.450239932 +0100 >@@ -1,2 +0,0 @@ >-[1m[4mmatch_index [0m[1m[4m content [0m >-[1m 0[0m[1m [0m[1m{"key":"foo","value":"123e"} [0m >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_sql_regexp.sh_bbd1128cf61a9af8f9dc937b46217443f42e1a7a.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.4147.log >========================= >[0;31mEND[0m test_sql_regexp.sh_bbd1128cf61a9af8f9dc937b46217443f42e1a7a.err >ERR: test: ../src/lnav-test -n -c ;SELECT * from regexp_capture_into_json('foo=123e;', '(?<key>\w+)=(?<value>[^;]+)') {test_dir}/logfile_syslog.3 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_regexp.sh_bbd1128cf61a9af8f9dc937b46217443f42e1a7a.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_regexp.sh_bbd1128cf61a9af8f9dc937b46217443f42e1a7a.err 2025-01-17 20:39:31.465240534 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.4147.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -nN -c ;SELECT * from regexp_capture('abc=def;ghi=jkl;', '^(\w+)=([^;]+);') >[0;32mBEGIN[0m test_sql_regexp.sh_03257c56e85558aa0cc925b68d3af962afc25125.out >[0;32mEND[0m test_sql_regexp.sh_03257c56e85558aa0cc925b68d3af962afc25125.out >OUT: test: ../src/lnav-test -nN -c ;SELECT * from regexp_capture('abc=def;ghi=jkl;', '^(\w+)=([^;]+);') >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_regexp.sh_03257c56e85558aa0cc925b68d3af962afc25125.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_regexp.sh_03257c56e85558aa0cc925b68d3af962afc25125.out 2025-01-17 20:39:31.577245029 +0100 >@@ -1,4 +0,0 @@ >-[1m[4mmatch_index [0m[1m[4mcapture_index [0m[1m[4mcapture_name [0m[1m[4mcapture_count [0m[1m[4mrange_start [0m[1m[4mrange_stop [0m[1m[4mcontent [0m >-[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m 3[0m[1m [0m[1m 1[0m[1m [0m[1m 9[0m[1m [0m[1mabc=def; [0m >- 0 1 <NULL> 3 1 4 abc >-[1m 0[0m[1m [0m[1m 2[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m 3[0m[1m [0m[1m 5[0m[1m [0m[1m 8[0m[1m [0m[1mdef [0m >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_sql_regexp.sh_03257c56e85558aa0cc925b68d3af962afc25125.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.4627.log >========================= >[0;31mEND[0m test_sql_regexp.sh_03257c56e85558aa0cc925b68d3af962afc25125.err >ERR: test: ../src/lnav-test -nN -c ;SELECT * from regexp_capture('abc=def;ghi=jkl;', '^(\w+)=([^;]+);') >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_regexp.sh_03257c56e85558aa0cc925b68d3af962afc25125.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_regexp.sh_03257c56e85558aa0cc925b68d3af962afc25125.err 2025-01-17 20:39:31.590245551 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.4627.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -nN -c ;SELECT * from regexp_capture_into_json('abc=def;ghi=jkl;', '^(\w+)=([^;]+);') >[0;32mBEGIN[0m test_sql_regexp.sh_d61af17ff19d640ddfc879460910991825eedd05.out >[0;32mEND[0m test_sql_regexp.sh_d61af17ff19d640ddfc879460910991825eedd05.out >OUT: test: ../src/lnav-test -nN -c ;SELECT * from regexp_capture_into_json('abc=def;ghi=jkl;', '^(\w+)=([^;]+);') >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_regexp.sh_d61af17ff19d640ddfc879460910991825eedd05.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_regexp.sh_d61af17ff19d640ddfc879460910991825eedd05.out 2025-01-17 20:39:31.701250006 +0100 >@@ -1,2 +0,0 @@ >-[1m[4mmatch_index [0m[1m[4m content [0m >-[1m 0[0m[1m [0m[1m{"col_0":"abc","col_1":"def"} [0m >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_sql_regexp.sh_d61af17ff19d640ddfc879460910991825eedd05.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.5056.log >========================= >[0;31mEND[0m test_sql_regexp.sh_d61af17ff19d640ddfc879460910991825eedd05.err >ERR: test: ../src/lnav-test -nN -c ;SELECT * from regexp_capture_into_json('abc=def;ghi=jkl;', '^(\w+)=([^;]+);') >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_regexp.sh_d61af17ff19d640ddfc879460910991825eedd05.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_regexp.sh_d61af17ff19d640ddfc879460910991825eedd05.err 2025-01-17 20:39:31.714250528 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.5056.log >+========================= >FAIL! EXPECTED ERR DIFF >FAIL test_sql_regexp.sh (exit status: 1) > >FAIL: test_sql_search_table.sh >============================== > > >2025-01-17T20:39:30+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c ;SELECT * FROM procstate_procs {test_dir}/logfile_procstate.0 >[0;32mBEGIN[0m test_sql_search_table.sh_df0fd242f57a96d40f466493938cda0789a094fa.out >[0;32mEND[0m test_sql_search_table.sh_df0fd242f57a96d40f466493938cda0789a094fa.out >OUT: test: ../src/lnav-test -n -c ;SELECT * FROM procstate_procs {test_dir}/logfile_procstate.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_search_table.sh_df0fd242f57a96d40f466493938cda0789a094fa.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_search_table.sh_df0fd242f57a96d40f466493938cda0789a094fa.out 2025-01-17 20:39:30.912218338 +0100 >@@ -1,24 +0,0 @@ >-[1m[4mlog_line [0m[1m[4mlog_part [0m[1m[4m log_time [0m[1m[4m[7mlog_idle_msecs [0m[1m[4mlog_level [0m[1m[4mlog_mark [0m[1m[4mlog_comment [0m[1m[4mlog_tags [0m[1m[4mlog_filters [0m[1m[4mmatch_index [0m[1m[4muser [0m[1m[4mpid [0m[1m[4m[7mcpu_pct [0m[1m[4m[7mmem_pct [0m[1m[4m[7m vsz [0m[1m[4m[7mrss [0m[1m[4mtty [0m[1m[4mstat [0m[1m[4mstart_time [0m[1m[4mcpu_time [0m[1m[4m cmd [0m[1m[4m cmd_name [0m[1m[4m cmd_args [0m >-[1m[7m 0[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m2022-06-02 00:01:01.000[0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7minfo [0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7mroot[0m[1m[7m [0m[1m[7m 1[0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7m158392[0m[1m[7m [0m[1m[7m7792[0m[1m[7m [0m[1m[7m? [0m[1m[7m [0m[1m[7mSs [0m[1m[7m [0m[1m[7mJun01 [0m[1m[7m [0m[1m[7m0:14 [0m[1m[7m [0m[1m[7m/lib/systemd/systemd --switche[0m[1m[7md-root --sy[0m[1mstem --deserialize 16[0m[1m [0m[1m/lib/systemd/systemd [0m[1m [0m[1m--switched-root --system --deserialize 16 [0m >- 0 <NULL> 2022-06-02 00:01:01.000 0 info 0 <NULL> <NULL> <NULL> 1 root 2 0 0 0 0 ? S Jun01 0:00 [kthreadd] [kthreadd] <NULL> >-[1m 0[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m2022-06-02 00:01:01.000[0m[1m [0m[1m 0[0m[1m [0m[1minfo [0m[1m [0m[1m 0[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m 2[0m[1m [0m[1mroot[0m[1m [0m[1m 3[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m? [0m[1m [0m[1mI< [0m[1m [0m[1mJun01 [0m[1m [0m[1m0:00 [0m[1m [0m[1m[rcu_gp] [0m[1m [0m[1m[rcu_gp] [0m[1m [0m[1m<[0m[1mNULL[0m[1m> [0m >- 0 <NULL> 2022-06-02 00:01:01.000 0 info 0 <NULL> <NULL> <NULL> 3 root 4 0 0 0 0 ? I< Jun01 0:00 [rcu_par_gp] [rcu_par_gp] <NULL> >-[1m 0[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m2022-06-02 00:01:01.000[0m[1m [0m[1m 0[0m[1m [0m[1minfo [0m[1m [0m[1m 0[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m 4[0m[1m [0m[1mroot[0m[1m [0m[1m 6[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m? [0m[1m [0m[1mI< [0m[1m [0m[1mJun01 [0m[1m [0m[1m0:00 [0m[1m [0m[1m[kworker/0:0H-kblockd] [0m[1m [0m[1m[kworker/0:0H-kblockd][0m[1m [0m[1m<[0m[1mNULL[0m[1m> [0m >-[7m 12[0m[7m [0m[7m <NULL>[0m[7m [0m[7m2022-06-02 00:02:01.000[0m[7m [0m[7m 60000[0m[7m [0m[7minfo [0m[7m [0m[7m 0[0m[7m [0m[7m <[0m[7mNULL>[0m[7m [0m[7m <NULL>[0m[7m [0m[7m <NULL>[0m[7m [0m[7m 0[0m[7m [0m[7mroot[0m[7m [0m[7m 1[0m[7m [0m[7m 0[0m[7m [0m[7m 0[0m[7m [0m[7m158392[0m[7m [0m[7m7792[0m[7m [0m[7m? [0m[7m [0m[7mSs [0m[7m [0m[7mJun01 [0m[7m [0m[7m0:14 [0m[7m [0m[7m/lib/systemd/systemd --switched-root --system --deserialize 16[0m[7m [0m[7m/lib/systemd/systemd [0m[7m [0m[7m--switched-root --system -[0m[7m-deserializ[0me 16 >-[1m[7m 12[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m2022-06-02 00:02:01.000[0m[1m[7m [0m[1m[7m 60000[0m[1m[7m [0m[1m[7minfo [0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m 1[0m[1m [0m[1mroot[0m[1m [0m[1m 2[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m? [0m[1m [0m[1mS [0m[1m [0m[1mJun01 [0m[1m [0m[1m0:00 [0m[1m [0m[1m[kthreadd] [0m[1m [0m[1m[kthreadd] [0m[1m [0m[1m<[0m[1mNULL[0m[1m> [0m >-[7m 12[0m[7m [0m[7m <NULL>[0m[7m [0m[7m2022-06-02 00:02:01.000[0m[7m [0m[7m 60000[0m[7m [0m[7minfo [0m[7m [0m[7m 0[0m[7m [0m[7m <[0mNULL> <NULL> <NULL> 2 root 3 0 0 0 0 ? I< Jun01 0:00 [rcu_gp] [rcu_gp] <NULL> >-[1m[7m 12[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m2022-06-02 00:02:01.000[0m[1m[7m [0m[1m[7m 60000[0m[1m[7m [0m[1m[7minfo [0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m 3[0m[1m [0m[1mroot[0m[1m [0m[1m 4[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m? [0m[1m [0m[1mI< [0m[1m [0m[1mJun01 [0m[1m [0m[1m0:00 [0m[1m [0m[1m[rcu_par_gp] [0m[1m [0m[1m[rcu_par_gp] [0m[1m [0m[1m<[0m[1mNULL[0m[1m> [0m >-[7m 12[0m[7m [0m[7m <NULL>[0m[7m [0m[7m2022-06-02 00:02:01.000[0m[7m [0m[7m 60000[0m[7m [0m[7minfo [0m[7m [0m[7m 0[0m[7m [0m[7m <[0mNULL> <NULL> <NULL> 4 root 6 0 0 0 0 ? I< Jun01 0:00 [kworker/0:0H-kblockd] [kworker/0:0H-kblockd] <NULL> >-[1m[7m 12[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m2022-06-02 00:02:01.000[0m[1m[7m [0m[1m[7m 60000[0m[1m[7m [0m[1m[7minfo [0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m 5[0m[1m [0m[1mroot[0m[1m [0m[1m 8[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m? [0m[1m [0m[1mI< [0m[1m [0m[1mJun01 [0m[1m [0m[1m0:00 [0m[1m [0m[1m[mm_percpu_wq] [0m[1m [0m[1m[mm_percpu_wq] [0m[1m [0m[1m<[0m[1mNULL[0m[1m> [0m >-[7m 12[0m[7m [0m[7m <NULL>[0m[7m [0m[7m2022-06-02 00:02:01.000[0m[7m [0m[7m 60000[0m[7m [0m[7minfo [0m[7m [0m[7m 0[0m[7m [0m[7m <[0mNULL> <NULL> <NULL> 6 root 9 0 0 0 0 ? S Jun01 0:00 [ksoftirqd/0] [ksoftirqd/0] <NULL> >-[1m[7m 12[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m2022-06-02 00:02:01.000[0m[1m[7m [0m[1m[7m 60000[0m[1m[7m [0m[1m[7minfo [0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m 7[0m[1m [0m[1mroot[0m[1m [0m[1m 10[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m? [0m[1m [0m[1mI [0m[1m [0m[1mJun01 [0m[1m [0m[1m0:23 [0m[1m [0m[1m[rcu_sched] [0m[1m [0m[1m[rcu_sched] [0m[1m [0m[1m<[0m[1mNULL[0m[1m> [0m >-[7m 12[0m[7m [0m[7m <NULL>[0m[7m [0m[7m2022-06-02 00:02:01.000[0m[7m [0m[7m 60000[0m[7m [0m[7minfo [0m[7m [0m[7m 0[0m[7m [0m[7m <[0mNULL> <NULL> <NULL> 8 root 11 0 0 0 0 ? I Jun01 0:00 [rcu_bh] [rcu_bh] <NULL> >-[1m[7m 12[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m2022-06-02 00:02:01.000[0m[1m[7m [0m[1m[7m 60000[0m[1m[7m [0m[1m[7minfo [0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m 9[0m[1m [0m[1mroot[0m[1m [0m[1m 12[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m? [0m[1m [0m[1mS [0m[1m [0m[1mJun01 [0m[1m [0m[1m0:00 [0m[1m [0m[1m[migration/0] [0m[1m [0m[1m[migration/0] [0m[1m [0m[1m<[0m[1mNULL[0m[1m> [0m >-[7m 12[0m[7m [0m[7m <NULL>[0m[7m [0m[7m2022-06-02 00:02:01.000[0m[7m [0m[7m 60000[0m[7m [0m[7minfo [0m[7m [0m[7m 0[0m[7m [0m[7m <[0mNULL> <NULL> <NULL> 10 root 14 0 0 0 0 ? S Jun01 0:00 [cpuhp/0] [cpuhp/0] <NULL> >-[1m[7m 30[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m2022-06-02 00:03:01.000[0m[1m[7m [0m[1m[7m 60000[0m[1m[7m [0m[1m[7minfo [0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7m <[0m[1m[7mNULL>[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7mroot[0m[1m[7m [0m[1m[7m 1[0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7m158392[0m[1m[7m [0m[1m[7m7792[0m[1m[7m [0m[1m[7m? [0m[1m[7m [0m[1m[7mSs [0m[1m[7m [0m[1m[7mJun01 [0m[1m[7m [0m[1m[7m0:14 [0m[1m[7m [0m[1m[7m/lib/systemd/systemd --switched-root --system --deserialize 16[0m[1m[7m [0m[1m[7m/lib/systemd/systemd [0m[1m[7m [0m[1m[7m--switched-root --system -[0m[1m[7m-deserializ[0m[1me 16 [0m >-[7m 30[0m[7m [0m[7m <NULL>[0m[7m [0m[7m2022-06-02 00:03:01.000[0m[7m [0m[7m 60000[0m[7m [0m[7minfo [0m[7m [0m[7m 0[0m[7m [0m[7m <[0mNULL> <NULL> <NULL> 1 root 2 0 0 0 0 ? S Jun01 0:00 [kthreadd] [kthreadd] <NULL> >-[1m[7m 30[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m2022-06-02 00:03:01.000[0m[1m[7m [0m[1m[7m 60000[0m[1m[7m [0m[1m[7minfo [0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m 2[0m[1m [0m[1mroot[0m[1m [0m[1m 3[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m? [0m[1m [0m[1mI< [0m[1m [0m[1mJun01 [0m[1m [0m[1m0:00 [0m[1m [0m[1m[rcu_gp] [0m[1m [0m[1m[rcu_gp] [0m[1m [0m[1m<[0m[1mNULL[0m[1m> [0m >-[7m 30[0m[7m [0m[7m <NULL>[0m[7m [0m[7m2022-06-02 00:03:01.000[0m[7m [0m[7m 60000[0m[7m [0m[7minfo [0m[7m [0m[7m 0[0m[7m [0m[7m <[0mNULL> <NULL> <NULL> 3 root 4 0 0 0 0 ? I< Jun01 0:00 [rcu_par_gp] [rcu_par_gp] <NULL> >-[1m[7m 30[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m2022-06-02 00:03:01.000[0m[1m[7m [0m[1m[7m 60000[0m[1m[7m [0m[1m[7minfo [0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m 4[0m[1m [0m[1mroot[0m[1m [0m[1m 6[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m? [0m[1m [0m[1mI< [0m[1m [0m[1mJun01 [0m[1m [0m[1m0:00 [0m[1m [0m[1m[kworker/0:0H-kblockd] [0m[1m [0m[1m[kworker/0:0H-kblockd][0m[1m [0m[1m<[0m[1mNULL[0m[1m> [0m >-[7m 30[0m[7m [0m[7m <NULL>[0m[7m [0m[7m2022-06-02 00:03:01.000[0m[7m [0m[7m 60000[0m[7m [0m[7minfo [0m[7m [0m[7m 0[0m[7m [0m[7m <[0mNULL> <NULL> <NULL> 5 root 8 0 0 0 0 ? I< Jun01 0:00 [mm_percpu_wq] [mm_percpu_wq] <NULL> >-[1m[7m 30[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m2022-06-02 00:03:01.000[0m[1m[7m [0m[1m[7m 60000[0m[1m[7m [0m[1m[7minfo [0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m 6[0m[1m [0m[1mroot[0m[1m [0m[1m 9[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m? [0m[1m [0m[1mS [0m[1m [0m[1mJun01 [0m[1m [0m[1m0:00 [0m[1m [0m[1m[ksoftirqd/0] [0m[1m [0m[1m[ksoftirqd/0] [0m[1m [0m[1m<[0m[1mNULL[0m[1m> [0m >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_sql_search_table.sh_df0fd242f57a96d40f466493938cda0789a094fa.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.1795.log >========================= >[0;31mEND[0m test_sql_search_table.sh_df0fd242f57a96d40f466493938cda0789a094fa.err >ERR: test: ../src/lnav-test -n -c ;SELECT * FROM procstate_procs {test_dir}/logfile_procstate.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_search_table.sh_df0fd242f57a96d40f466493938cda0789a094fa.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_search_table.sh_df0fd242f57a96d40f466493938cda0789a094fa.err 2025-01-17 20:39:30.926218900 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.1795.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c ;SELECT *,log_body FROM vpx_lro_begin {test_dir}/logfile_vpxd.0 >[0;32mBEGIN[0m test_sql_search_table.sh_ef9373a76853f345d06234f6e0fe11b5d40da27b.out >[0;32mEND[0m test_sql_search_table.sh_ef9373a76853f345d06234f6e0fe11b5d40da27b.out >OUT: test: ../src/lnav-test -n -c ;SELECT *,log_body FROM vpx_lro_begin {test_dir}/logfile_vpxd.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_search_table.sh_ef9373a76853f345d06234f6e0fe11b5d40da27b.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_search_table.sh_ef9373a76853f345d06234f6e0fe11b5d40da27b.out 2025-01-17 20:39:31.044223636 +0100 >@@ -1,6 +0,0 @@ >-[1m[4mlog_line [0m[1m[4mlog_part [0m[1m[4m log_time [0m[1m[4m[7mlog_idle_msecs [0m[1m[4mlog_level [0m[1m[4mlog_mark [0m[1m[4mlog_comment [0m[1m[4mlog_tags [0m[1m[4mlog_filters [0m[1m[4m comp [0m[1m[4m opid [0m[1m[4m tid [0m[1m[4m user [0m[1m[4m item [0m[1m[4mprc [0m[1m[4mreason [0m[1m[4m req [0m[1m[4m sid [0m[1m[4m src [0m[1m[4m sub [0m[1m[4mvpxa_update [0m[1m[4m line [0m[1m[4m file [0m[1m[4mmatch_index [0m[1m[4m lro_id [0m[1m[4m entity [0m[1m[4m operation [0m[1m[4m SessionId [0m[1m[4m SessionSubId [0m[1m[4m log_body [0m >-[1m 0[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m2022-06-02 11:58:12.193[0m[1m [0m[1m 0[0m[1m [0m[1minfo [0m[1m [0m[1m 0[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m<[0m[1mNULL[0m[1m>[0m[1m [0m[1m7e1280cf [0m[1m [0m[1m45715[0m[1m [0m[1m<[0m[1mNULL[0m[1m>[0m[1m [0m[1m<[0m[1mNULL[0m[1m>[0m[1m [0m[1mvpxd[0m[1m [0m[1m<[0m[1mNULL[0m[1m>[0m[1m [0m[1m<[0m[1mNULL[0m[1m>[0m[1m [0m[1m<[0m[1mNULL[0m[1m>[0m[1m [0m[1mOriginator@6876[0m[1m [0m[1mvpxLro[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m<[0m[1mNULL[0m[1m>[0m[1m [0m[1m<[0m[1mNULL[0m[1m>[0m[1m [0m[1m 0[0m[1m [0m[1mlro-846063[0m[1m [0m[1mSessionManager [0m[1m [0m[1mvim.SessionManager.sessionIsActive [0m[1m [0m[1m528e6e0c-246d-58b5-3234-278c6e0c5d0d[0m[1m [0m[1m52c289ac-2563-48d5-8a8e-f178da022c0d[0m[1m [0m[1m[VpxLRO] -- BEGIN lro-846063 -- SessionManager -- vim.Sessioâ¯8b5-3234-278c6e0c5d0d(52c289ac-2563-48d5-8a8e-f178da022c0d) [0m >-[7m 2[0m[7m [0m[7m <NULL>[0m[7m [0m[7m2022-06-02 11:58:12.376[0m[7m [0m[7m 182[0m[7m [0m[7minfo [0m[7m [0m[7m 0[0m[7m [0m[7m <NULL>[0m[7m [0m[7m <NULL>[0m[7m [0m[7m <NULL>[0m[7m [0m[7m<NULL>[0m[7m [0m[7me3979f6 [0m[7m [0m[7m45709[0m[7m [0m[7m<NULL>[0m[7m [0m[7m<NULL>[0m[7m [0m[7mvpxd[0m[7m [0m[7m<NULL>[0m[7m [0m[7m<NULL>[0m[7m [0m[7m<NULL>[0m[7m [0m[7mOriginator@6876[0m[7m [0m[7mvpxLro[0m[7m [0m[7m <NULL>[0m[7m [0m[7m<NULL>[0m[7m [0m[7m<NULL>[0m[7m [0m[7m 0[0m[7m [0m[7mlro-846064[0m[7m [0m[7mSessionManager [0m[7m [0m[7mvim.SessionManager.sessionIsActive [0m[7m [0m[7m52626140-422b-6287-b4e4-344192c6a01d[0m[7m [0m[7m523e0a4b-6e83-6bcd-9342-22502dd89866[0m[7m [0m[7m[VpxLRO] -- BEGIN lro-846[0m064 -- SessionManager -- vim.Sessioâ¯287-b4e4-344192c6a01d(523e0a4b-6e83-6bcd-9342-22502dd89866) >-[1m[7m 4[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m2022-06-02 11:58:12.623[0m[1m[7m [0m[1m[7m 246[0m[1m[7m [0m[1m[7minfo [0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m<NULL>[0m[1m[7m [0m[1m[7ml3wrhr4o-cbf-h5:70001034-60[0m[1m[7m [0m[1m[7m47524[0m[1m[7m [0m[1m[7m<NULL>[0m[1m[7m [0m[1m[7m<NULL>[0m[1m[7m [0m[1m[7mvpxd[0m[1m[7m [0m[1m[7m<NULL>[0m[1m[7m [0m[1m[7m<NULL>[0m[1m[7m [0m[1m[7m<NULL>[0m[1m[7m [0m[1m[7mOriginator@6876[0m[1m[7m [0m[1m[7mvpxLro[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m<NULL>[0m[1m[7m [0m[1m[7m<NULL>[0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7mlro-846066[0m[1m[7m [0m[1m[7mChangeLogCollector[0m[1m[7m [0m[1m[7mvim.cdc.ChangeLogCollector.waitForChanges[0m[1m[7m [0m[1m[7m526861fc-0c28-1930-ae5e-d8c2772bf8c2[0m[1m[7m [0m[1m[7m52a7a308-9646-c054-f1e7-16131c1a7db6[0m[1m[7m [0m[1m[7m[VpxLRO] -- BEGIN lro-846066 -- ChangeLogCollector -- vim.câ¯1930-ae5e-d8c2772bf8c2(52a7a308-9646-c054-f1e7-16131c1a7db6) [0m >-[7m 6[0m[7m [0m[7m <NULL>[0m[7m [0m[7m2022-06-02 11:58:12.736[0m[7m [0m[7m 113[0m[7m [0m[7minfo [0m[7m [0m[7m 0[0m[7m [0m[7m <NULL>[0m[7m [0m[7m <NULL>[0m[7m [0m[7m <NULL>[0m[7m [0m[7m<NULL>[0m[7m [0m[7m499b440 [0m[7m [0m[7m48432[0m[7m [0m[7m<NULL>[0m[7m [0m[7m<NULL>[0m[7m [0m[7mvpxd[0m[7m [0m[7m<NULL>[0m[7m [0m[7m<NULL>[0m[7m [0m[7m<NULL>[0m[7m [0m[7mOriginator@6876[0m[7m [0m[7mvpxLro[0m[7m [0m[7m <NULL>[0m[7m [0m[7m<NULL>[0m[7m [0m[7m<NULL>[0m[7m [0m[7m 0[0m[7m [0m[7mlro-846067[0m[7m [0mSessionManager vim.SessionManager.sessionIsActive 521fe9f6-d061-11a2-ac86-badb3c071373 524cba9b-2cc4-9b70-32e4-421452a404d7 [VpxLRO] -- BEGIN lro-846067 -- SessionManager -- vim.Sessioâ¯1a2-ac86-badb3c071373(524cba9b-2cc4-9b70-32e4-421452a404d7) >-[1m[7m 8[0m[1m[7m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m2022-06-02 11:58:12.740[0m[1m [0m[1m 4[0m[1m [0m[1minfo [0m[1m [0m[1m 0[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m<[0m[1mNULL[0m[1m>[0m[1m [0m[1m55a419df [0m[1m [0m[1m48035[0m[1m [0m[1m<[0m[1mNULL[0m[1m>[0m[1m [0m[1m<[0m[1mNULL[0m[1m>[0m[1m [0m[1mvpxd[0m[1m [0m[1m<[0m[1mNULL[0m[1m>[0m[1m [0m[1m<[0m[1mNULL[0m[1m>[0m[1m [0m[1m<[0m[1mNULL[0m[1m>[0m[1m [0m[1mOriginator@6876[0m[1m [0m[1mvpxLro[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m<[0m[1mNULL[0m[1m>[0m[1m [0m[1m<[0m[1mNULL[0m[1m>[0m[1m [0m[1m 0[0m[1m [0m[1mlro-846068[0m[1m [0m[1mSessionManager [0m[1m [0m[1mvim.SessionManager.sessionIsActive [0m[1m [0m[1m52585600-b0bc-76b1-c4d5-4d7708671c5e[0m[1m [0m[1m523b68ba-e312-9909-a3ca-39cc86aaf206[0m[1m [0m[1m[VpxLRO] -- BEGIN lro-846068 -- SessionManager -- vim.Sessioâ¯6b1-c4d5-4d7708671c5e(523b68ba-e312-9909-a3ca-39cc86aaf206) [0m >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_sql_search_table.sh_ef9373a76853f345d06234f6e0fe11b5d40da27b.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.2428.log >========================= >[0;31mEND[0m test_sql_search_table.sh_ef9373a76853f345d06234f6e0fe11b5d40da27b.err >ERR: test: ../src/lnav-test -n -c ;SELECT *,log_body FROM vpx_lro_begin {test_dir}/logfile_vpxd.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_search_table.sh_ef9373a76853f345d06234f6e0fe11b5d40da27b.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_search_table.sh_ef9373a76853f345d06234f6e0fe11b5d40da27b.err 2025-01-17 20:39:31.058224198 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.2428.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c ;select * from vpx_lro_begin where log_line > 3 and lro_id = 'lro-846064' -c ;select * from vpx_lro_begin where lro_id = 'lro-846064' {test_dir}/logfile_vpxd.0 >[0;32mBEGIN[0m test_sql_search_table.sh_1a0d872ebc492fcecb2e79a0993170d5fc771a5b.out >[0;32mEND[0m test_sql_search_table.sh_1a0d872ebc492fcecb2e79a0993170d5fc771a5b.out >OUT: test: ../src/lnav-test -n -c ;select * from vpx_lro_begin where log_line > 3 and lro_id = 'lro-846064' -c ;select * from vpx_lro_begin where lro_id = 'lro-846064' {test_dir}/logfile_vpxd.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_search_table.sh_1a0d872ebc492fcecb2e79a0993170d5fc771a5b.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_search_table.sh_1a0d872ebc492fcecb2e79a0993170d5fc771a5b.out 2025-01-17 20:39:31.178229014 +0100 >@@ -1,2 +0,0 @@ >-[1m[4mlog_line [0m[1m[4mlog_part [0m[1m[4m log_time [0m[1m[4m[7mlog_idle_msecs [0m[1m[4mlog_level [0m[1m[4mlog_mark [0m[1m[4mlog_comment [0m[1m[4mlog_tags [0m[1m[4mlog_filters [0m[1m[4m comp [0m[1m[4m opid [0m[1m[4m tid [0m[1m[4m user [0m[1m[4m item [0m[1m[4mprc [0m[1m[4mreason [0m[1m[4m req [0m[1m[4m sid [0m[1m[4m src [0m[1m[4m sub [0m[1m[4mvpxa_update [0m[1m[4m line [0m[1m[4m file [0m[1m[4mmatch_index [0m[1m[4m lro_id [0m[1m[4m entity [0m[1m[4m operation [0m[1m[4m SessionId [0m[1m[4m SessionSubId [0m >-[1m[7m 2[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m2022-06-02 11:58:12.376[0m[1m[7m [0m[1m[7m 182[0m[1m[7m [0m[1m[7minfo [0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m<NULL>[0m[1m[7m [0m[1m[7me3979f6[0m[1m[7m [0m[1m[7m45709[0m[1m[7m [0m[1m[7m<NULL>[0m[1m[7m [0m[1m[7m<NULL>[0m[1m[7m [0m[1m[7mvpxd[0m[1m[7m [0m[1m[7m<NULL>[0m[1m[7m [0m[1m[7m<NULL>[0m[1m[7m [0m[1m[7m<NULL>[0m[1m[7m [0m[1m[7mOriginator@6876[0m[1m[7m [0m[1m[7mvpxLro[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m<NULL>[0m[1m[7m [0m[1m[7m<NULL>[0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7mlro-846064[0m[1m[7m [0m[1m[7mSessionManager[0m[1m[7m [0m[1m[7mvim.SessionManager.sessionIsActive[0m[1m[7m [0m[1m[7m52626140-422b-6287-b4e4-344192c6a01d[0m[1m[7m [0m[1m[7m523e0a4b-6e83-6bcd-9342-22502dd89866[0m[1m [0m >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_sql_search_table.sh_1a0d872ebc492fcecb2e79a0993170d5fc771a5b.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.3024.log >========================= >[0;31mEND[0m test_sql_search_table.sh_1a0d872ebc492fcecb2e79a0993170d5fc771a5b.err >ERR: test: ../src/lnav-test -n -c ;select * from vpx_lro_begin where log_line > 3 and lro_id = 'lro-846064' -c ;select * from vpx_lro_begin where lro_id = 'lro-846064' {test_dir}/logfile_vpxd.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_search_table.sh_1a0d872ebc492fcecb2e79a0993170d5fc771a5b.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_search_table.sh_1a0d872ebc492fcecb2e79a0993170d5fc771a5b.err 2025-01-17 20:39:31.192229577 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.3024.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c ;select * from procstate_procs where cmd_name = '[kthreadd]' -c ;select * from procstate_procs where cmd_name = '[kthreadd]' {test_dir}/logfile_procstate.0 >[0;32mBEGIN[0m test_sql_search_table.sh_5aaae556ecb1661602f176215e28f661d3404032.out >[0;32mEND[0m test_sql_search_table.sh_5aaae556ecb1661602f176215e28f661d3404032.out >OUT: test: ../src/lnav-test -n -c ;select * from procstate_procs where cmd_name = '[kthreadd]' -c ;select * from procstate_procs where cmd_name = '[kthreadd]' {test_dir}/logfile_procstate.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_search_table.sh_5aaae556ecb1661602f176215e28f661d3404032.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_search_table.sh_5aaae556ecb1661602f176215e28f661d3404032.out 2025-01-17 20:39:31.304234072 +0100 >@@ -1,4 +0,0 @@ >-[1m[4mlog_line [0m[1m[4mlog_part [0m[1m[4m log_time [0m[1m[4m[7mlog_idle_msecs [0m[1m[4mlog_level [0m[1m[4mlog_mark [0m[1m[4mlog_comment [0m[1m[4mlog_tags [0m[1m[4mlog_filters [0m[1m[4mmatch_index [0m[1m[4muser [0m[1m[4mpid [0m[1m[4m[7mcpu_pct [0m[1m[4m[7mmem_pct [0m[1m[4m[7mvsz [0m[1m[4m[7mrss [0m[1m[4mtty [0m[1m[4mstat [0m[1m[4mstart_time [0m[1m[4mcpu_time [0m[1m[4m cmd [0m[1m[4m cmd_name [0m[1m[4mcmd_args [0m >-[1m 0[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m2022-06-02 00:01:01.000[0m[1m [0m[1m 0[0m[1m [0m[1minfo [0m[1m [0m[1m 0[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m 1[0m[1m [0m[1mroot[0m[1m [0m[1m 2[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m 0[0m[1m [0m[1m? [0m[1m [0m[1mS [0m[1m [0m[1mJun01 [0m[1m [0m[1m0:00 [0m[1m [0m[1m[kthreadd][0m[1m [0m[1m[kthreadd][0m[1m [0m[1m <[0m[1mNULL[0m[1m> [0m >-[7m 12[0m[7m [0m[7m <NULL>[0m[7m [0m[7m2022-06-02 00:02:01.000[0m[7m [0m[7m 60000[0m[7m [0m[7minfo [0m[7m [0m[7m 0[0m[7m [0m[7m <NULL>[0m[7m [0m[7m <NULL>[0m[7m [0m[7m <NULL>[0m[7m [0m[7m 1[0m[7m [0m[7mroot[0m[7m [0m[7m 2[0m[7m [0m[7m 0[0m[7m [0m[7m 0[0m[7m [0m[7m 0[0m[7m [0m[7m 0[0m[7m [0m[7m? [0m[7m [0m[7mS [0m[7m [0m[7mJun01 [0m[7m [0m[7m0:00 [0m[7m [0m[7m[kthreadd][0m[7m [0m[7m[kthreadd][0m[7m [0m[7m <N[0mULL> >-[1m[7m 30[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m2022-06-02 00:03:01.000[0m[1m[7m [0m[1m[7m 60000[0m[1m[7m [0m[1m[7minfo [0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m 1[0m[1m[7m [0m[1m[7mroot[0m[1m[7m [0m[1m[7m 2[0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7m? [0m[1m[7m [0m[1m[7mS [0m[1m[7m [0m[1m[7mJun01 [0m[1m[7m [0m[1m[7m0:00 [0m[1m[7m [0m[1m[7m[kthreadd][0m[1m[7m [0m[1m[7m[kthreadd][0m[1m[7m [0m[1m[7m <N[0m[1mULL> [0m >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_sql_search_table.sh_5aaae556ecb1661602f176215e28f661d3404032.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.3593.log >========================= >[0;31mEND[0m test_sql_search_table.sh_5aaae556ecb1661602f176215e28f661d3404032.err >ERR: test: ../src/lnav-test -n -c ;select * from procstate_procs where cmd_name = '[kthreadd]' -c ;select * from procstate_procs where cmd_name = '[kthreadd]' {test_dir}/logfile_procstate.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_search_table.sh_5aaae556ecb1661602f176215e28f661d3404032.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_search_table.sh_5aaae556ecb1661602f176215e28f661d3404032.err 2025-01-17 20:39:31.317234593 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.3593.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :create-search-table asl_mod ASL Module "(?<name>[^"]+)" -c ;SELECT * FROM asl_mod {test_dir}/logfile_syslog.3 >[0;32mBEGIN[0m test_sql_search_table.sh_3f5f74863d065418bca5a000e6ad3d9344635164.out >[0;32mEND[0m test_sql_search_table.sh_3f5f74863d065418bca5a000e6ad3d9344635164.out >OUT: test: ../src/lnav-test -n -c :create-search-table asl_mod ASL Module "(?<name>[^"]+)" -c ;SELECT * FROM asl_mod {test_dir}/logfile_syslog.3 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_search_table.sh_3f5f74863d065418bca5a000e6ad3d9344635164.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_search_table.sh_3f5f74863d065418bca5a000e6ad3d9344635164.out 2025-01-17 20:39:31.435239330 +0100 >@@ -1,12 +0,0 @@ >-[1m[4mlog_line [0m[1m[4mlog_part [0m[1m[4m log_time [0m[1m[4m[7mlog_idle_msecs [0m[1m[4mlog_level [0m[1m[4mlog_mark [0m[1m[4mlog_comment [0m[1m[4mlog_tags [0m[1m[4mlog_filters [0m[1m[4mmatch_index [0m[1m[4m name [0m >-[1m[7m 2[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m2022-08-16 00:32:15.000[0m[1m[7m [0m[1m[7m 199000[0m[1m[7m [0m[1m[7minfo [0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7mcom.apple.cdscheduler[0m[1m [0m >- 5 <NULL> 2022-08-16 00:32:15.000 0 info 0 <NULL> <NULL> <NULL> 0 com.apple.install >-[1m 8[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m2022-08-16 00:32:15.000[0m[1m [0m[1m 0[0m[1m [0m[1minfo [0m[1m [0m[1m 0[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m 0[0m[1m [0m[1mcom.apple.authd [0m >- 8 <NULL> 2022-08-16 00:32:15.000 0 info 0 <NULL> <NULL> <NULL> 1 com.apple.asl >-[1m 8[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m2022-08-16 00:32:15.000[0m[1m [0m[1m 0[0m[1m [0m[1minfo [0m[1m [0m[1m 0[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m 2[0m[1m [0m[1mcom.apple.asl [0m >- 8 <NULL> 2022-08-16 00:32:15.000 0 info 0 <NULL> <NULL> <NULL> 3 com.apple.authd >-[1m 11[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m2022-08-16 00:32:15.000[0m[1m [0m[1m 0[0m[1m [0m[1minfo [0m[1m [0m[1m 0[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m 0[0m[1m [0m[1mcom.apple.authd [0m >- 11 <NULL> 2022-08-16 00:32:15.000 0 info 0 <NULL> <NULL> <NULL> 1 com.apple.asl >-[1m 11[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m2022-08-16 00:32:15.000[0m[1m [0m[1m 0[0m[1m [0m[1minfo [0m[1m [0m[1m 0[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m 2[0m[1m [0m[1mcom.apple.asl [0m >- 11 <NULL> 2022-08-16 00:32:15.000 0 info 0 <NULL> <NULL> <NULL> 3 com.apple.authd >-[1m 14[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m2022-08-16 00:32:15.000[0m[1m [0m[1m 0[0m[1m [0m[1minfo [0m[1m [0m[1m 0[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m <[0m[1mNULL[0m[1m>[0m[1m [0m[1m 0[0m[1m [0m[1mcom.apple.authd [0m >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_sql_search_table.sh_3f5f74863d065418bca5a000e6ad3d9344635164.err >lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.4103.log >========================= >[0;31mEND[0m test_sql_search_table.sh_3f5f74863d065418bca5a000e6ad3d9344635164.err >ERR: test: ../src/lnav-test -n -c :create-search-table asl_mod ASL Module "(?<name>[^"]+)" -c ;SELECT * FROM asl_mod {test_dir}/logfile_syslog.3 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_search_table.sh_3f5f74863d065418bca5a000e6ad3d9344635164.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_search_table.sh_3f5f74863d065418bca5a000e6ad3d9344635164.err 2025-01-17 20:39:31.448239851 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:83423: sqlite3VdbeIntValue: Assertion `pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.4103.log >+========================= >FAIL! EXPECTED ERR DIFF >FAIL test_sql_search_table.sh (exit status: 1) > >FAIL: test_sql_str_func.sh >========================== > > >2025-01-17T20:39:30+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select length(gzip(1)) >[0;32mBEGIN[0m test_sql_str_func.sh_7f751009d0db15fc97f9113c5c84db05ff1de9c3.out >Row 0: > Column length(gzip(1)): 21 >[0;32mEND[0m test_sql_str_func.sh_7f751009d0db15fc97f9113c5c84db05ff1de9c3.out >[0;31mBEGIN[0m test_sql_str_func.sh_7f751009d0db15fc97f9113c5c84db05ff1de9c3.err >[0;31mEND[0m test_sql_str_func.sh_7f751009d0db15fc97f9113c5c84db05ff1de9c3.err > >2025-01-17T20:39:30+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select gunzip(gzip(1)) >[0;32mBEGIN[0m test_sql_str_func.sh_129e58679e72f3cc5864812026e49a7917baf3d0.out >Row 0: > Column gunzip(gzip(1)): 1 >[0;32mEND[0m test_sql_str_func.sh_129e58679e72f3cc5864812026e49a7917baf3d0.out >[0;31mBEGIN[0m test_sql_str_func.sh_129e58679e72f3cc5864812026e49a7917baf3d0.err >[0;31mEND[0m test_sql_str_func.sh_129e58679e72f3cc5864812026e49a7917baf3d0.err > >2025-01-17T20:39:30+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select humanize_file_size() >[0;32mBEGIN[0m test_sql_str_func.sh_bfe8b09e23389af0ef14359b66d68228d0285185.out >[0;32mEND[0m test_sql_str_func.sh_bfe8b09e23389af0ef14359b66d68228d0285185.out >[0;31mBEGIN[0m test_sql_str_func.sh_bfe8b09e23389af0ef14359b66d68228d0285185.err >error: sqlite3_exec failed -- wrong number of arguments to function humanize_file_size() >[0;31mEND[0m test_sql_str_func.sh_bfe8b09e23389af0ef14359b66d68228d0285185.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select humanize_file_size('abc') >[0;32mBEGIN[0m test_sql_str_func.sh_790da4aab5af901feeff5426790876eb91b967cb.out >[0;32mEND[0m test_sql_str_func.sh_790da4aab5af901feeff5426790876eb91b967cb.out >[0;31mBEGIN[0m test_sql_str_func.sh_790da4aab5af901feeff5426790876eb91b967cb.err >error: sqlite3_exec failed -- Expecting an integer for argument number 0 >[0;31mEND[0m test_sql_str_func.sh_790da4aab5af901feeff5426790876eb91b967cb.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select humanize_file_size(1, 2) >[0;32mBEGIN[0m test_sql_str_func.sh_1e7362ac3d9690b1b2cfbd320b6129c46ecfbb8a.out >[0;32mEND[0m test_sql_str_func.sh_1e7362ac3d9690b1b2cfbd320b6129c46ecfbb8a.out >[0;31mBEGIN[0m test_sql_str_func.sh_1e7362ac3d9690b1b2cfbd320b6129c46ecfbb8a.err >error: sqlite3_exec failed -- wrong number of arguments to function humanize_file_size() >[0;31mEND[0m test_sql_str_func.sh_1e7362ac3d9690b1b2cfbd320b6129c46ecfbb8a.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select humanize_file_size(10 * 1000 * 1000) >[0;32mBEGIN[0m test_sql_str_func.sh_8c9ef83431ea75050fd16824075bf72056cf5f53.out >Row 0: > Column humanize_file_size(10 * 1000 * 1000): 9.5MB >[0;32mEND[0m test_sql_str_func.sh_8c9ef83431ea75050fd16824075bf72056cf5f53.out >[0;31mBEGIN[0m test_sql_str_func.sh_8c9ef83431ea75050fd16824075bf72056cf5f53.err >[0;31mEND[0m test_sql_str_func.sh_8c9ef83431ea75050fd16824075bf72056cf5f53.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select startswith('.foo', '.') >[0;32mBEGIN[0m test_sql_str_func.sh_d8d4cde8bbc98175069be579ff5634de43880b8c.out >Row 0: > Column startswith('.foo', '.'): 1 >[0;32mEND[0m test_sql_str_func.sh_d8d4cde8bbc98175069be579ff5634de43880b8c.out >[0;31mBEGIN[0m test_sql_str_func.sh_d8d4cde8bbc98175069be579ff5634de43880b8c.err >[0;31mEND[0m test_sql_str_func.sh_d8d4cde8bbc98175069be579ff5634de43880b8c.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select startswith('foo', '.') >[0;32mBEGIN[0m test_sql_str_func.sh_4b402274da152135c6c99456b693e1ecabca0256.out >Row 0: > Column startswith('foo', '.'): 0 >[0;32mEND[0m test_sql_str_func.sh_4b402274da152135c6c99456b693e1ecabca0256.out >[0;31mBEGIN[0m test_sql_str_func.sh_4b402274da152135c6c99456b693e1ecabca0256.err >[0;31mEND[0m test_sql_str_func.sh_4b402274da152135c6c99456b693e1ecabca0256.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select endswith('foo', '.') >[0;32mBEGIN[0m test_sql_str_func.sh_51055e40d709332ee772ba5719039314bbf5e411.out >Row 0: > Column endswith('foo', '.'): 0 >[0;32mEND[0m test_sql_str_func.sh_51055e40d709332ee772ba5719039314bbf5e411.out >[0;31mBEGIN[0m test_sql_str_func.sh_51055e40d709332ee772ba5719039314bbf5e411.err >[0;31mEND[0m test_sql_str_func.sh_51055e40d709332ee772ba5719039314bbf5e411.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select endswith('foo.', '.') >[0;32mBEGIN[0m test_sql_str_func.sh_211c5428db0590795072c31cb116ef35281e02b5.out >Row 0: > Column endswith('foo.', '.'): 1 >[0;32mEND[0m test_sql_str_func.sh_211c5428db0590795072c31cb116ef35281e02b5.out >[0;31mBEGIN[0m test_sql_str_func.sh_211c5428db0590795072c31cb116ef35281e02b5.err >[0;31mEND[0m test_sql_str_func.sh_211c5428db0590795072c31cb116ef35281e02b5.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select endswith('foo.txt', '.txt') >[0;32mBEGIN[0m test_sql_str_func.sh_5abe3717393fba14ec510a37b4b94fedc67aae8e.out >Row 0: > Column endswith('foo.txt', '.txt'): 1 >[0;32mEND[0m test_sql_str_func.sh_5abe3717393fba14ec510a37b4b94fedc67aae8e.out >[0;31mBEGIN[0m test_sql_str_func.sh_5abe3717393fba14ec510a37b4b94fedc67aae8e.err >[0;31mEND[0m test_sql_str_func.sh_5abe3717393fba14ec510a37b4b94fedc67aae8e.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select endswith('a', '.txt') >[0;32mBEGIN[0m test_sql_str_func.sh_6607c0dd8baff16930eb3e0daf6354af5b50052b.out >Row 0: > Column endswith('a', '.txt'): 0 >[0;32mEND[0m test_sql_str_func.sh_6607c0dd8baff16930eb3e0daf6354af5b50052b.out >[0;31mBEGIN[0m test_sql_str_func.sh_6607c0dd8baff16930eb3e0daf6354af5b50052b.err >[0;31mEND[0m test_sql_str_func.sh_6607c0dd8baff16930eb3e0daf6354af5b50052b.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select regexp('abcd', 'abcd') >[0;32mBEGIN[0m test_sql_str_func.sh_8cef54f0617960320b5d3615068eb27333dcf6a3.out >Row 0: > Column regexp('abcd', 'abcd'): 1 >[0;32mEND[0m test_sql_str_func.sh_8cef54f0617960320b5d3615068eb27333dcf6a3.out >[0;31mBEGIN[0m test_sql_str_func.sh_8cef54f0617960320b5d3615068eb27333dcf6a3.err >[0;31mEND[0m test_sql_str_func.sh_8cef54f0617960320b5d3615068eb27333dcf6a3.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select regexp('bc', 'abcd') >[0;32mBEGIN[0m test_sql_str_func.sh_352434d199f7b493668c9f2774472eb69ef0d9f0.out >Row 0: > Column regexp('bc', 'abcd'): 1 >[0;32mEND[0m test_sql_str_func.sh_352434d199f7b493668c9f2774472eb69ef0d9f0.out >[0;31mBEGIN[0m test_sql_str_func.sh_352434d199f7b493668c9f2774472eb69ef0d9f0.err >[0;31mEND[0m test_sql_str_func.sh_352434d199f7b493668c9f2774472eb69ef0d9f0.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select regexp('[e-z]+', 'abcd') >[0;32mBEGIN[0m test_sql_str_func.sh_c9e2f41431bef879364dc37a472ab01f64d89f89.out >Row 0: > Column regexp('[e-z]+', 'abcd'): 0 >[0;32mEND[0m test_sql_str_func.sh_c9e2f41431bef879364dc37a472ab01f64d89f89.out >[0;31mBEGIN[0m test_sql_str_func.sh_c9e2f41431bef879364dc37a472ab01f64d89f89.err >[0;31mEND[0m test_sql_str_func.sh_c9e2f41431bef879364dc37a472ab01f64d89f89.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select regexp('[e-z]+', 'ea') >[0;32mBEGIN[0m test_sql_str_func.sh_5f9979fa5ce7b76efe714bb27ffbe9f5927ae941.out >Row 0: > Column regexp('[e-z]+', 'ea'): 1 >[0;32mEND[0m test_sql_str_func.sh_5f9979fa5ce7b76efe714bb27ffbe9f5927ae941.out >[0;31mBEGIN[0m test_sql_str_func.sh_5f9979fa5ce7b76efe714bb27ffbe9f5927ae941.err >[0;31mEND[0m test_sql_str_func.sh_5f9979fa5ce7b76efe714bb27ffbe9f5927ae941.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select regexp_replace('test 1 2 3', '\d+', 'N') >[0;32mBEGIN[0m test_sql_str_func.sh_36fc9005464f1106f969559e640d9fa36d5fadad.out >Row 0: > Column regexp_replace('test 1 2 3', '\d+', 'N'): test N N N >[0;32mEND[0m test_sql_str_func.sh_36fc9005464f1106f969559e640d9fa36d5fadad.out >[0;31mBEGIN[0m test_sql_str_func.sh_36fc9005464f1106f969559e640d9fa36d5fadad.err >[0;31mEND[0m test_sql_str_func.sh_36fc9005464f1106f969559e640d9fa36d5fadad.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: env TEST_COMMENT=regexp_replace_with_bs1 ./drive_sql >[0;32mBEGIN[0m test_sql_str_func.sh_a4d84a0082a7df34c95c2e6e070bbf6effaa5594.out >Row 0: > Column repl: test{ }1{ }2{ }3 >[0;32mEND[0m test_sql_str_func.sh_a4d84a0082a7df34c95c2e6e070bbf6effaa5594.out >[0;31mBEGIN[0m test_sql_str_func.sh_a4d84a0082a7df34c95c2e6e070bbf6effaa5594.err >[0;31mEND[0m test_sql_str_func.sh_a4d84a0082a7df34c95c2e6e070bbf6effaa5594.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: env TEST_COMMENT=regexp_replace_with_bs2 ./drive_sql >[0;32mBEGIN[0m test_sql_str_func.sh_ec939e82da809965c61f1c00f68d7afaa4a88382.out >Row 0: > Column repl: {test}{} {1}{} {2}{} {3}{} >[0;32mEND[0m test_sql_str_func.sh_ec939e82da809965c61f1c00f68d7afaa4a88382.out >[0;31mBEGIN[0m test_sql_str_func.sh_ec939e82da809965c61f1c00f68d7afaa4a88382.err >[0;31mEND[0m test_sql_str_func.sh_ec939e82da809965c61f1c00f68d7afaa4a88382.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select regexp_replace('123 abc', '(\w*)', '<\3>') as repl >[0;32mBEGIN[0m test_sql_str_func.sh_ac7ecdda0fcc4279a4694291edaa2f1411f5262e.out >Row 0: > Column repl: <\3><\3> <\3><\3> >[0;32mEND[0m test_sql_str_func.sh_ac7ecdda0fcc4279a4694291edaa2f1411f5262e.out >[0;31mBEGIN[0m test_sql_str_func.sh_ac7ecdda0fcc4279a4694291edaa2f1411f5262e.err >[0;31mEND[0m test_sql_str_func.sh_ac7ecdda0fcc4279a4694291edaa2f1411f5262e.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: env TEST_COMMENT=regexp_replace_with_bs3 ./drive_sql >[0;32mBEGIN[0m test_sql_str_func.sh_bfb7088916412360f77683009058b0747784630a.out >Row 0: > Column repl: <\><\> <\><\> >[0;32mEND[0m test_sql_str_func.sh_bfb7088916412360f77683009058b0747784630a.out >[0;31mBEGIN[0m test_sql_str_func.sh_bfb7088916412360f77683009058b0747784630a.err >[0;31mEND[0m test_sql_str_func.sh_bfb7088916412360f77683009058b0747784630a.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select regexp_replace('abc: def', '(\w*):\s*(.*)', '\1=\2') as repl >[0;32mBEGIN[0m test_sql_str_func.sh_005b9365ac99596e539f47c9fe432668c209b21f.out >Row 0: > Column repl: abc=def >[0;32mEND[0m test_sql_str_func.sh_005b9365ac99596e539f47c9fe432668c209b21f.out >[0;31mBEGIN[0m test_sql_str_func.sh_005b9365ac99596e539f47c9fe432668c209b21f.err >[0;31mEND[0m test_sql_str_func.sh_005b9365ac99596e539f47c9fe432668c209b21f.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select regexp_match('abc', 'abc') >[0;32mBEGIN[0m test_sql_str_func.sh_80c1fb9affbfac609ebf1cc5556aafb1ecd223c1.out >[0;32mEND[0m test_sql_str_func.sh_80c1fb9affbfac609ebf1cc5556aafb1ecd223c1.out >[0;31mBEGIN[0m test_sql_str_func.sh_80c1fb9affbfac609ebf1cc5556aafb1ecd223c1.err >error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"call to regexp_match(re, str) failed","attrs":[{"start":8,"end":20,"type":"role","value":47},{"start":21,"end":23,"type":"role","value":46},{"start":25,"end":28,"type":"role","value":46},{"start":8,"end":29,"type":"role","value":60}]},"reason":{"str":"regular expression does not have any captures","attrs":[]},"snippets":[],"help":{"str":"","attrs":[]}} >[0;31mEND[0m test_sql_str_func.sh_80c1fb9affbfac609ebf1cc5556aafb1ecd223c1.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select regexp_match(null, 'abc') >[0;32mBEGIN[0m test_sql_str_func.sh_8f4f0ed74c4dc6b821e02a44552b694614cd9353.out >Row 0: > Column regexp_match(null, 'abc'): (null) >[0;32mEND[0m test_sql_str_func.sh_8f4f0ed74c4dc6b821e02a44552b694614cd9353.out >[0;31mBEGIN[0m test_sql_str_func.sh_8f4f0ed74c4dc6b821e02a44552b694614cd9353.err >[0;31mEND[0m test_sql_str_func.sh_8f4f0ed74c4dc6b821e02a44552b694614cd9353.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select regexp_match('abc', null) as result >[0;32mBEGIN[0m test_sql_str_func.sh_7a544cd702579c1fab35870428788ad763cf1143.out >Row 0: > Column result: (null) >[0;32mEND[0m test_sql_str_func.sh_7a544cd702579c1fab35870428788ad763cf1143.out >[0;31mBEGIN[0m test_sql_str_func.sh_7a544cd702579c1fab35870428788ad763cf1143.err >[0;31mEND[0m test_sql_str_func.sh_7a544cd702579c1fab35870428788ad763cf1143.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select typeof(result), result from (select regexp_match('(\d*)abc', 'abc') as result) >[0;32mBEGIN[0m test_sql_str_func.sh_77fc174faeec1eda687a9373dbdbdd1aaef56e20.out >Row 0: > Column typeof(result): text > Column result: >[0;32mEND[0m test_sql_str_func.sh_77fc174faeec1eda687a9373dbdbdd1aaef56e20.out >[0;31mBEGIN[0m test_sql_str_func.sh_77fc174faeec1eda687a9373dbdbdd1aaef56e20.err >[0;31mEND[0m test_sql_str_func.sh_77fc174faeec1eda687a9373dbdbdd1aaef56e20.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select typeof(result), result from (select regexp_match('(\d*)abc(\d*)', 'abc') as result) >[0;32mBEGIN[0m test_sql_str_func.sh_60a005a9f0d44ad022b5554415319933d5743c51.out >Row 0: > Column typeof(result): text > Column result: {"col_0":"","col_1":""} >[0;32mEND[0m test_sql_str_func.sh_60a005a9f0d44ad022b5554415319933d5743c51.out >[0;31mBEGIN[0m test_sql_str_func.sh_60a005a9f0d44ad022b5554415319933d5743c51.err >[0;31mEND[0m test_sql_str_func.sh_60a005a9f0d44ad022b5554415319933d5743c51.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select typeof(result), result from (select regexp_match('(\d+)', '123') as result) >[0;32mBEGIN[0m test_sql_str_func.sh_b2aafbcaa7befe426d3f9df71c24f16fdc9d2856.out >Row 0: > Column typeof(result): integer > Column result: 123 >[0;32mEND[0m test_sql_str_func.sh_b2aafbcaa7befe426d3f9df71c24f16fdc9d2856.out >[0;31mBEGIN[0m test_sql_str_func.sh_b2aafbcaa7befe426d3f9df71c24f16fdc9d2856.err >[0;31mEND[0m test_sql_str_func.sh_b2aafbcaa7befe426d3f9df71c24f16fdc9d2856.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select typeof(result), result from (select regexp_match('a(\d+\.\d+)a', 'a123.456a') as result) >[0;32mBEGIN[0m test_sql_str_func.sh_a65d2fb2f841578619528ca10168ca4d650218e9.out >Row 0: > Column typeof(result): real > Column result: 123.456 >[0;32mEND[0m test_sql_str_func.sh_a65d2fb2f841578619528ca10168ca4d650218e9.out >[0;31mBEGIN[0m test_sql_str_func.sh_a65d2fb2f841578619528ca10168ca4d650218e9.err >[0;31mEND[0m test_sql_str_func.sh_a65d2fb2f841578619528ca10168ca4d650218e9.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select regexp_match('foo=(?<foo>\w+); (\w+)', 'foo=abc; 123') as result >[0;32mBEGIN[0m test_sql_str_func.sh_838e9bc7873b2b238157ba0358e0dfd6a01d837d.out >Row 0: > Column result: {"foo":"abc","col_0":123} >[0;32mEND[0m test_sql_str_func.sh_838e9bc7873b2b238157ba0358e0dfd6a01d837d.out >[0;31mBEGIN[0m test_sql_str_func.sh_838e9bc7873b2b238157ba0358e0dfd6a01d837d.err >[0;31mEND[0m test_sql_str_func.sh_838e9bc7873b2b238157ba0358e0dfd6a01d837d.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select regexp_match('foo=(?<foo>\w+); (\w+\.\w+)', 'foo=abc; 123.456') as result >[0;32mBEGIN[0m test_sql_str_func.sh_d4e805ff08d4ccf62865dbf8db8d526f7ce02f37.out >Row 0: > Column result: {"foo":"abc","col_0":123.456} >[0;32mEND[0m test_sql_str_func.sh_d4e805ff08d4ccf62865dbf8db8d526f7ce02f37.out >[0;31mBEGIN[0m test_sql_str_func.sh_d4e805ff08d4ccf62865dbf8db8d526f7ce02f37.err >[0;31mEND[0m test_sql_str_func.sh_d4e805ff08d4ccf62865dbf8db8d526f7ce02f37.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -nN -c ;SELECT regexp_match('^(\w+)=([^;]+);', 'abc=def;ghi=jkl;') >[0;32mBEGIN[0m test_sql_str_func.sh_949ffd5b2ef9fbcbe17f2e61ef7750f7038f6fd6.out >[0;32mEND[0m test_sql_str_func.sh_949ffd5b2ef9fbcbe17f2e61ef7750f7038f6fd6.out >OUT: test: ../src/lnav-test -nN -c ;SELECT regexp_match('^(\w+)=([^;]+);', 'abc=def;ghi=jkl;') >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_str_func.sh_949ffd5b2ef9fbcbe17f2e61ef7750f7038f6fd6.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_str_func.sh_949ffd5b2ef9fbcbe17f2e61ef7750f7038f6fd6.out 2025-01-17 20:39:32.688289621 +0100 >@@ -1,2 +0,0 @@ >-regexp_match('^(\w+)=([^;]+);', 'abc=def;ghi=jkl;') >-{"col_0":"abc","col_1":"def"} >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_sql_str_func.sh_949ffd5b2ef9fbcbe17f2e61ef7750f7038f6fd6.err >lnav-test: sqlite3.c:84160: sqlite3ValueText: Assertion `pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.6909.log >========================= >[0;31mEND[0m test_sql_str_func.sh_949ffd5b2ef9fbcbe17f2e61ef7750f7038f6fd6.err >ERR: test: ../src/lnav-test -nN -c ;SELECT regexp_match('^(\w+)=([^;]+);', 'abc=def;ghi=jkl;') >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_str_func.sh_949ffd5b2ef9fbcbe17f2e61ef7750f7038f6fd6.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_str_func.sh_949ffd5b2ef9fbcbe17f2e61ef7750f7038f6fd6.err 2025-01-17 20:39:32.700290102 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:84160: sqlite3ValueText: Assertion `pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.6909.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select extract('foo=1') as result >[0;32mBEGIN[0m test_sql_str_func.sh_ce9db1dbc2e5fee87247135d17787ff3af014d77.out >Row 0: > Column result: {"foo":1} >[0;32mEND[0m test_sql_str_func.sh_ce9db1dbc2e5fee87247135d17787ff3af014d77.out >[0;31mBEGIN[0m test_sql_str_func.sh_ce9db1dbc2e5fee87247135d17787ff3af014d77.err >[0;31mEND[0m test_sql_str_func.sh_ce9db1dbc2e5fee87247135d17787ff3af014d77.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select extract('foo=1; bar=2') as result >[0;32mBEGIN[0m test_sql_str_func.sh_5203db1a4a81e43a693f339fd26e1ed635da9d5a.out >Row 0: > Column result: {"foo":1,"bar":2} >[0;32mEND[0m test_sql_str_func.sh_5203db1a4a81e43a693f339fd26e1ed635da9d5a.out >[0;31mBEGIN[0m test_sql_str_func.sh_5203db1a4a81e43a693f339fd26e1ed635da9d5a.err >[0;31mEND[0m test_sql_str_func.sh_5203db1a4a81e43a693f339fd26e1ed635da9d5a.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select extract(null) as result >[0;32mBEGIN[0m test_sql_str_func.sh_84e77dedec887c5e2433dbc5b130000cd88963bd.out >Row 0: > Column result: (null) >[0;32mEND[0m test_sql_str_func.sh_84e77dedec887c5e2433dbc5b130000cd88963bd.out >[0;31mBEGIN[0m test_sql_str_func.sh_84e77dedec887c5e2433dbc5b130000cd88963bd.err >[0;31mEND[0m test_sql_str_func.sh_84e77dedec887c5e2433dbc5b130000cd88963bd.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select extract(1) as result >[0;32mBEGIN[0m test_sql_str_func.sh_04712488fe50554eb36d3ced80f9a033602f3daa.out >Row 0: > Column result: {"col_0":1} >[0;32mEND[0m test_sql_str_func.sh_04712488fe50554eb36d3ced80f9a033602f3daa.out >[0;31mBEGIN[0m test_sql_str_func.sh_04712488fe50554eb36d3ced80f9a033602f3daa.err >[0;31mEND[0m test_sql_str_func.sh_04712488fe50554eb36d3ced80f9a033602f3daa.err > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql select logfmt2json('foo=1 bar=2 baz=2e1 msg=hello') as result >[0;32mBEGIN[0m test_sql_str_func.sh_3de72fe5c1751dd212a1cd45cf2caa7f3b52bced.out >Row 0: > Column result: {"foo":1,"bar":2,"baz":20.0,"msg":"hello"} >[0;32mEND[0m test_sql_str_func.sh_3de72fe5c1751dd212a1cd45cf2caa7f3b52bced.out >[0;31mBEGIN[0m test_sql_str_func.sh_3de72fe5c1751dd212a1cd45cf2caa7f3b52bced.err >[0;31mEND[0m test_sql_str_func.sh_3de72fe5c1751dd212a1cd45cf2caa7f3b52bced.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql SELECT substr('#foo', range_start) AS value FROM regexp_capture('#foo', '(\w+)') WHERE capture_index = 1 >[0;32mBEGIN[0m test_sql_str_func.sh_660288b48d9b30244621d873944938f7ef043976.out >Row 0: > Column value: foo >[0;32mEND[0m test_sql_str_func.sh_660288b48d9b30244621d873944938f7ef043976.out >[0;31mBEGIN[0m test_sql_str_func.sh_660288b48d9b30244621d873944938f7ef043976.err >[0;31mEND[0m test_sql_str_func.sh_660288b48d9b30244621d873944938f7ef043976.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql SELECT * FROM regexp_capture('foo bar', '\w+ (\w+)') >[0;32mBEGIN[0m test_sql_str_func.sh_b0e5bf23bbbc0defa8bb26817782c9d46a778ad8.out >Row 0: > Column match_index: 0 > Column capture_index: 0 > Column capture_name: (null) > Column capture_count: 2 > Column range_start: 1 > Column range_stop: 8 > Column content: foo bar >Row 1: > Column match_index: 0 > Column capture_index: 1 > Column capture_name: (null) > Column capture_count: 2 > Column range_start: 5 > Column range_stop: 8 > Column content: bar >[0;32mEND[0m test_sql_str_func.sh_b0e5bf23bbbc0defa8bb26817782c9d46a778ad8.out >[0;31mBEGIN[0m test_sql_str_func.sh_b0e5bf23bbbc0defa8bb26817782c9d46a778ad8.err >[0;31mEND[0m test_sql_str_func.sh_b0e5bf23bbbc0defa8bb26817782c9d46a778ad8.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql SELECT * FROM regexp_capture('foo bar', '\w+ \w+') >[0;32mBEGIN[0m test_sql_str_func.sh_2f189f0785bb81a1298db35e9e166983b633c73f.out >Row 0: > Column match_index: 0 > Column capture_index: 0 > Column capture_name: (null) > Column capture_count: 1 > Column range_start: 1 > Column range_stop: 8 > Column content: foo bar >[0;32mEND[0m test_sql_str_func.sh_2f189f0785bb81a1298db35e9e166983b633c73f.out >[0;31mBEGIN[0m test_sql_str_func.sh_2f189f0785bb81a1298db35e9e166983b633c73f.err >[0;31mEND[0m test_sql_str_func.sh_2f189f0785bb81a1298db35e9e166983b633c73f.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql SELECT * FROM regexp_capture('foo bar', '\w+ (?<word>\w+)') >[0;32mBEGIN[0m test_sql_str_func.sh_71f37db33504b2c08a7a3323c482556f53d88100.out >Row 0: > Column match_index: 0 > Column capture_index: 0 > Column capture_name: (null) > Column capture_count: 2 > Column range_start: 1 > Column range_stop: 8 > Column content: foo bar >Row 1: > Column match_index: 0 > Column capture_index: 1 > Column capture_name: word > Column capture_count: 2 > Column range_start: 5 > Column range_stop: 8 > Column content: bar >[0;32mEND[0m test_sql_str_func.sh_71f37db33504b2c08a7a3323c482556f53d88100.out >[0;31mBEGIN[0m test_sql_str_func.sh_71f37db33504b2c08a7a3323c482556f53d88100.err >[0;31mEND[0m test_sql_str_func.sh_71f37db33504b2c08a7a3323c482556f53d88100.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql SELECT * FROM regexp_capture('foo bar', '(bar)|\w+ (?<word>\w+)') >[0;32mBEGIN[0m test_sql_str_func.sh_5e436fbd4efb140600999c5208886a5a57b8a30e.out >Row 0: > Column match_index: 0 > Column capture_index: 0 > Column capture_name: (null) > Column capture_count: 3 > Column range_start: 1 > Column range_stop: 8 > Column content: foo bar >Row 1: > Column match_index: 0 > Column capture_index: 1 > Column capture_name: (null) > Column capture_count: 3 > Column range_start: 0 > Column range_stop: 0 > Column content: (null) >Row 2: > Column match_index: 0 > Column capture_index: 2 > Column capture_name: word > Column capture_count: 3 > Column range_start: 5 > Column range_stop: 8 > Column content: bar >[0;32mEND[0m test_sql_str_func.sh_5e436fbd4efb140600999c5208886a5a57b8a30e.out >[0;31mBEGIN[0m test_sql_str_func.sh_5e436fbd4efb140600999c5208886a5a57b8a30e.err >[0;31mEND[0m test_sql_str_func.sh_5e436fbd4efb140600999c5208886a5a57b8a30e.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql SELECT * FROM regexp_capture() >[0;32mBEGIN[0m test_sql_str_func.sh_e68167bf5edc7a7b1defd06bdfb694ffa8b00df2.out >[0;32mEND[0m test_sql_str_func.sh_e68167bf5edc7a7b1defd06bdfb694ffa8b00df2.out >[0;31mBEGIN[0m test_sql_str_func.sh_e68167bf5edc7a7b1defd06bdfb694ffa8b00df2.err >[0;31mEND[0m test_sql_str_func.sh_e68167bf5edc7a7b1defd06bdfb694ffa8b00df2.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql SELECT * FROM regexp_capture('foo bar') >[0;32mBEGIN[0m test_sql_str_func.sh_d3367527118052081a541a660b091f6f495b1c0d.out >[0;32mEND[0m test_sql_str_func.sh_d3367527118052081a541a660b091f6f495b1c0d.out >[0;31mBEGIN[0m test_sql_str_func.sh_d3367527118052081a541a660b091f6f495b1c0d.err >[0;31mEND[0m test_sql_str_func.sh_d3367527118052081a541a660b091f6f495b1c0d.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql SELECT * FROM regexp_capture('foo bar', '(') >[0;32mBEGIN[0m test_sql_str_func.sh_d4bc869850f5b7e53353fc2506fea0c8e96f29c5.out >[0;32mEND[0m test_sql_str_func.sh_d4bc869850f5b7e53353fc2506fea0c8e96f29c5.out >[0;31mBEGIN[0m test_sql_str_func.sh_d4bc869850f5b7e53353fc2506fea0c8e96f29c5.err >error: sqlite3_exec failed -- Invalid regular expression: missing closing parenthesis >[0;31mEND[0m test_sql_str_func.sh_d4bc869850f5b7e53353fc2506fea0c8e96f29c5.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql SELECT * FROM regexp_capture('1 2 3 45', '(\d+)') >[0;32mBEGIN[0m test_sql_str_func.sh_11bcc5d32eabbedb6974f160dace9ef1ef0009e9.out >Row 0: > Column match_index: 0 > Column capture_index: 0 > Column capture_name: (null) > Column capture_count: 2 > Column range_start: 1 > Column range_stop: 2 > Column content: 1 >Row 1: > Column match_index: 0 > Column capture_index: 1 > Column capture_name: (null) > Column capture_count: 2 > Column range_start: 1 > Column range_stop: 2 > Column content: 1 >Row 2: > Column match_index: 1 > Column capture_index: 0 > Column capture_name: (null) > Column capture_count: 2 > Column range_start: 3 > Column range_stop: 4 > Column content: 2 >Row 3: > Column match_index: 1 > Column capture_index: 1 > Column capture_name: (null) > Column capture_count: 2 > Column range_start: 3 > Column range_stop: 4 > Column content: 2 >Row 4: > Column match_index: 2 > Column capture_index: 0 > Column capture_name: (null) > Column capture_count: 2 > Column range_start: 5 > Column range_stop: 6 > Column content: 3 >Row 5: > Column match_index: 2 > Column capture_index: 1 > Column capture_name: (null) > Column capture_count: 2 > Column range_start: 5 > Column range_stop: 6 > Column content: 3 >Row 6: > Column match_index: 3 > Column capture_index: 0 > Column capture_name: (null) > Column capture_count: 2 > Column range_start: 7 > Column range_stop: 9 > Column content: 45 >Row 7: > Column match_index: 3 > Column capture_index: 1 > Column capture_name: (null) > Column capture_count: 2 > Column range_start: 7 > Column range_stop: 9 > Column content: 45 >[0;32mEND[0m test_sql_str_func.sh_11bcc5d32eabbedb6974f160dace9ef1ef0009e9.out >[0;31mBEGIN[0m test_sql_str_func.sh_11bcc5d32eabbedb6974f160dace9ef1ef0009e9.err >[0;31mEND[0m test_sql_str_func.sh_11bcc5d32eabbedb6974f160dace9ef1ef0009e9.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql SELECT * FROM regexp_capture('foo foo', '^foo') >[0;32mBEGIN[0m test_sql_str_func.sh_151a0fd71ef6837c8cbd8a67e315019b5812b079.out >Row 0: > Column match_index: 0 > Column capture_index: 0 > Column capture_name: (null) > Column capture_count: 1 > Column range_start: 1 > Column range_stop: 4 > Column content: foo >[0;32mEND[0m test_sql_str_func.sh_151a0fd71ef6837c8cbd8a67e315019b5812b079.out >[0;31mBEGIN[0m test_sql_str_func.sh_151a0fd71ef6837c8cbd8a67e315019b5812b079.err >[0;31mEND[0m test_sql_str_func.sh_151a0fd71ef6837c8cbd8a67e315019b5812b079.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql SELECT * FROM regexp_capture_into_json('foo=1 bar=2; foo=3 bar=4', 'foo=(\d+) bar=(\d+)') >[0;32mBEGIN[0m test_sql_str_func.sh_69f5d49e62da48e188bd9d6af4bd3adeb21eb7d1.out >Row 0: > Column match_index: 0 > Column content: {"col_0":1,"col_1":2} >Row 1: > Column match_index: 1 > Column content: {"col_0":3,"col_1":4} >[0;32mEND[0m test_sql_str_func.sh_69f5d49e62da48e188bd9d6af4bd3adeb21eb7d1.out >[0;31mBEGIN[0m test_sql_str_func.sh_69f5d49e62da48e188bd9d6af4bd3adeb21eb7d1.err >[0;31mEND[0m test_sql_str_func.sh_69f5d49e62da48e188bd9d6af4bd3adeb21eb7d1.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql SELECT encode('foo', 'bar') >[0;32mBEGIN[0m test_sql_str_func.sh_887afe94962d958aca2e03f7873d58ca93e190b5.out >[0;32mEND[0m test_sql_str_func.sh_887afe94962d958aca2e03f7873d58ca93e190b5.out >[0;31mBEGIN[0m test_sql_str_func.sh_887afe94962d958aca2e03f7873d58ca93e190b5.err >error: sqlite3_exec failed -- Expecting an value of 'base64', 'hex', or 'uri' for argument number 1 >[0;31mEND[0m test_sql_str_func.sh_887afe94962d958aca2e03f7873d58ca93e190b5.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql SELECT encode('foo', null) >[0;32mBEGIN[0m test_sql_str_func.sh_836e3f721a0f945ad27e7aa241121ba739aab618.out >Row 0: > Column encode('foo', null): (null) >[0;32mEND[0m test_sql_str_func.sh_836e3f721a0f945ad27e7aa241121ba739aab618.out >[0;31mBEGIN[0m test_sql_str_func.sh_836e3f721a0f945ad27e7aa241121ba739aab618.err >[0;31mEND[0m test_sql_str_func.sh_836e3f721a0f945ad27e7aa241121ba739aab618.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql SELECT encode(null, 'base64') >[0;32mBEGIN[0m test_sql_str_func.sh_cc53348c585ee71a7456157ad6b125689813bafe.out >Row 0: > Column encode(null, 'base64'): (null) >[0;32mEND[0m test_sql_str_func.sh_cc53348c585ee71a7456157ad6b125689813bafe.out >[0;31mBEGIN[0m test_sql_str_func.sh_cc53348c585ee71a7456157ad6b125689813bafe.err >[0;31mEND[0m test_sql_str_func.sh_cc53348c585ee71a7456157ad6b125689813bafe.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ./drive_sql SELECT gunzip(decode(encode(gzip('Hello, World!'), 'base64'), 'base64')) >[0;32mBEGIN[0m test_sql_str_func.sh_c26269b10b9b9e8485aa97c2be2afb2cc3ee910d.out >Row 0: > Column gunzip(decode(encode(gzip('Hello, World!'), 'base64'), 'base64')): Hello, World! >[0;32mEND[0m test_sql_str_func.sh_c26269b10b9b9e8485aa97c2be2afb2cc3ee910d.out >[0;31mBEGIN[0m test_sql_str_func.sh_c26269b10b9b9e8485aa97c2be2afb2cc3ee910d.err >[0;31mEND[0m test_sql_str_func.sh_c26269b10b9b9e8485aa97c2be2afb2cc3ee910d.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: env TEST_COMMENT=unsupported_url ./drive_sql >[0;32mBEGIN[0m test_sql_str_func.sh_a515ba81cc3655c602da28cd0fa1a186d5e9a6e1.out >[0;32mEND[0m test_sql_str_func.sh_a515ba81cc3655c602da28cd0fa1a186d5e9a6e1.out >[0;31mBEGIN[0m test_sql_str_func.sh_a515ba81cc3655c602da28cd0fa1a186d5e9a6e1.err >error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"invalid URL: âhttps://example.com:100000â","attrs":[]},"reason":{"str":"Port number was not a decimal number between 0 and 65535","attrs":[]},"snippets":[],"help":{"str":"","attrs":[]}} >[0;31mEND[0m test_sql_str_func.sh_a515ba81cc3655c602da28cd0fa1a186d5e9a6e1.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: env TEST_COMMENT=parse_url1 ./drive_sql >[0;32mBEGIN[0m test_sql_str_func.sh_b088735cf46f23ca3d5fb3da41f07a6a3b1cba35.out >Row 0: > Column parse_url('https://example.com'): {"scheme":"https","user":null,"password":null,"host":"example.com","port":null,"path":"/","query":null,"parameters":null,"fragment":null} >[0;32mEND[0m test_sql_str_func.sh_b088735cf46f23ca3d5fb3da41f07a6a3b1cba35.out >[0;31mBEGIN[0m test_sql_str_func.sh_b088735cf46f23ca3d5fb3da41f07a6a3b1cba35.err >[0;31mEND[0m test_sql_str_func.sh_b088735cf46f23ca3d5fb3da41f07a6a3b1cba35.err > >2025-01-17T20:39:33+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: env TEST_COMMENT=parse_url2 ./drive_sql >[0;32mBEGIN[0m test_sql_str_func.sh_0947bfe7ec626eaa0409a45b10fcbb634fb12eb7.out >Row 0: > Column parse_url('https://example.com/'): {"scheme":"https","user":null,"password":null,"host":"example.com","port":null,"path":"/","query":null,"parameters":null,"fragment":null} >[0;32mEND[0m test_sql_str_func.sh_0947bfe7ec626eaa0409a45b10fcbb634fb12eb7.out >[0;31mBEGIN[0m test_sql_str_func.sh_0947bfe7ec626eaa0409a45b10fcbb634fb12eb7.err >[0;31mEND[0m test_sql_str_func.sh_0947bfe7ec626eaa0409a45b10fcbb634fb12eb7.err > >2025-01-17T20:39:34+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: env TEST_COMMENT=parse_url3 ./drive_sql >[0;32mBEGIN[0m test_sql_str_func.sh_bac7f6531a2adf70cd1871fb13eab26dff133b7c.out >Row 0: > Column parse_url('https://example.com/search?flag'): {"scheme":"https","user":null,"password":null,"host":"example.com","port":null,"path":"/search","query":"flag","parameters":{"flag":null},"fragment":null} >[0;32mEND[0m test_sql_str_func.sh_bac7f6531a2adf70cd1871fb13eab26dff133b7c.out >[0;31mBEGIN[0m test_sql_str_func.sh_bac7f6531a2adf70cd1871fb13eab26dff133b7c.err >[0;31mEND[0m test_sql_str_func.sh_bac7f6531a2adf70cd1871fb13eab26dff133b7c.err > >2025-01-17T20:39:34+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: env TEST_COMMENT=parse_url4 ./drive_sql >[0;32mBEGIN[0m test_sql_str_func.sh_805ca5e97fbf1ed56f2e920befd963255ba190b6.out >Row 0: > Column parse_url('https://example.com/search?flag&flag2'): {"scheme":"https","user":null,"password":null,"host":"example.com","port":null,"path":"/search","query":"flag&flag2","parameters":{"flag":null,"flag2":null},"fragment":null} >[0;32mEND[0m test_sql_str_func.sh_805ca5e97fbf1ed56f2e920befd963255ba190b6.out >[0;31mBEGIN[0m test_sql_str_func.sh_805ca5e97fbf1ed56f2e920befd963255ba190b6.err >[0;31mEND[0m test_sql_str_func.sh_805ca5e97fbf1ed56f2e920befd963255ba190b6.err > >2025-01-17T20:39:34+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: env TEST_COMMENT=parse_url5 ./drive_sql >[0;32mBEGIN[0m test_sql_str_func.sh_51766b600fd158a9e0677f6b0fa31b83537b2e5b.out >Row 0: > Column parse_url('https://example.com/search?flag&flag2&=def'): {"scheme":"https","user":null,"password":null,"host":"example.com","port":null,"path":"/search","query":"flag&flag2&=def","parameters":{"flag":null,"flag2":null,"":"def"},"fragment":null} >[0;32mEND[0m test_sql_str_func.sh_51766b600fd158a9e0677f6b0fa31b83537b2e5b.out >[0;31mBEGIN[0m test_sql_str_func.sh_51766b600fd158a9e0677f6b0fa31b83537b2e5b.err >[0;31mEND[0m test_sql_str_func.sh_51766b600fd158a9e0677f6b0fa31b83537b2e5b.err > >2025-01-17T20:39:34+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: env TEST_COMMENT=parse_url6 ./drive_sql >[0;32mBEGIN[0m test_sql_str_func.sh_6ff984d8ed3e5099376d19f0dd20d5fd1ed42494.out >Row 0: > Column parse_url('https://example.com/sea%26rch?flag&flag2&=def#frag1%20space'): {"scheme":"https","user":null,"password":null,"host":"example.com","port":null,"path":"/sea&rch","query":"flag&flag2&=def","parameters":{"flag":null,"flag2":null,"":"def"},"fragment":"frag1 space"} >[0;32mEND[0m test_sql_str_func.sh_6ff984d8ed3e5099376d19f0dd20d5fd1ed42494.out >[0;31mBEGIN[0m test_sql_str_func.sh_6ff984d8ed3e5099376d19f0dd20d5fd1ed42494.err >[0;31mEND[0m test_sql_str_func.sh_6ff984d8ed3e5099376d19f0dd20d5fd1ed42494.err > >2025-01-17T20:39:34+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: env TEST_COMMENT=unparse_url3 ./drive_sql >[0;32mBEGIN[0m test_sql_str_func.sh_b81b27abfafbd357d41c407428d41ae0f4bb75e2.out >Row 0: > Column unparse_url(parse_url('https://example.com/search?flag')): https://example.com/search?flag >[0;32mEND[0m test_sql_str_func.sh_b81b27abfafbd357d41c407428d41ae0f4bb75e2.out >[0;31mBEGIN[0m test_sql_str_func.sh_b81b27abfafbd357d41c407428d41ae0f4bb75e2.err >[0;31mEND[0m test_sql_str_func.sh_b81b27abfafbd357d41c407428d41ae0f4bb75e2.err > >2025-01-17T20:39:34+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: env TEST_COMMENT=unparse_url4 ./drive_sql >[0;32mBEGIN[0m test_sql_str_func.sh_7c1e7604ac050e7047201638dca0a6b0fcfd8bdf.out >Row 0: > Column unparse_url(parse_url('https://example.com/search?flag&flag2')): https://example.com/search?flag&flag2 >[0;32mEND[0m test_sql_str_func.sh_7c1e7604ac050e7047201638dca0a6b0fcfd8bdf.out >[0;31mBEGIN[0m test_sql_str_func.sh_7c1e7604ac050e7047201638dca0a6b0fcfd8bdf.err >[0;31mEND[0m test_sql_str_func.sh_7c1e7604ac050e7047201638dca0a6b0fcfd8bdf.err > >2025-01-17T20:39:34+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: env TEST_COMMENT=unparse_url5 ./drive_sql >[0;32mBEGIN[0m test_sql_str_func.sh_7b6e7c26e8a80459fef55d56156d6ff93c00bd49.out >Row 0: > Column unparse_url(parse_url('https://example.com/search?flag&flag2&=def')): https://example.com/search?flag&flag2&=def >[0;32mEND[0m test_sql_str_func.sh_7b6e7c26e8a80459fef55d56156d6ff93c00bd49.out >[0;31mBEGIN[0m test_sql_str_func.sh_7b6e7c26e8a80459fef55d56156d6ff93c00bd49.err >[0;31mEND[0m test_sql_str_func.sh_7b6e7c26e8a80459fef55d56156d6ff93c00bd49.err > >2025-01-17T20:39:34+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: env TEST_COMMENT=unparse_url6 ./drive_sql >[0;32mBEGIN[0m test_sql_str_func.sh_30f65162174b886130b94a5dd1f094e7f09debed.out >Row 0: > Column unparse_url(parse_url('https://example.com/search?flag&flag2&=def#frag1%20space')): https://example.com/search?flag&flag2&=def#frag1%20space >[0;32mEND[0m test_sql_str_func.sh_30f65162174b886130b94a5dd1f094e7f09debed.out >[0;31mBEGIN[0m test_sql_str_func.sh_30f65162174b886130b94a5dd1f094e7f09debed.err >[0;31mEND[0m test_sql_str_func.sh_30f65162174b886130b94a5dd1f094e7f09debed.err > >2025-01-17T20:39:34+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c ;SELECT log_body, extract(log_body) from vmw_log -c :write-json-to - {test_dir}/logfile_vmw_log.0 >[0;32mBEGIN[0m test_sql_str_func.sh_d54a759f5683a22ad289129b2096b80652b1cc0c.out >[0;32mEND[0m test_sql_str_func.sh_d54a759f5683a22ad289129b2096b80652b1cc0c.out >OUT: test: ../src/lnav-test -n -c ;SELECT log_body, extract(log_body) from vmw_log -c :write-json-to - {test_dir}/logfile_vmw_log.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_str_func.sh_d54a759f5683a22ad289129b2096b80652b1cc0c.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_str_func.sh_d54a759f5683a22ad289129b2096b80652b1cc0c.out 2025-01-17 20:39:34.539363914 +0100 >@@ -1,47 +0,0 @@ >-[ >- { >- "log_body": "[VpxLRO] -- BEGIN lro-846063 -- SessionManager -- vim.SessionManager.sessionIsActive -- 528e6e0c-246d-58b5-3234-278c6e0c5d0d(52c289ac-2563-48d5-8a8e-f178da022c0d)", >- "extract(log_body)": { >- "col_0": [ >- "VpxLRO" >- ], >- "col_1": "--", >- "col_2": "BEGIN", >- "col_3": "lro-846063", >- "col_4": "--", >- "col_5": "SessionManager", >- "col_6": "--", >- "col_7": "vim.SessionManager.sessionIsActive", >- "col_8": "--", >- "col_9": "528e6e0c-246d-58b5-3234-278c6e0c5d0d", >- "col_10": [ >- "52c289ac-2563-48d5-8a8e-f178da022c0d" >- ] >- } >- }, >- { >- "log_body": "[VpxLRO] -- FINISH lro-846063", >- "extract(log_body)": { >- "col_0": [ >- "VpxLRO" >- ], >- "col_1": "--", >- "col_2": "FINISH", >- "col_3": "lro-846063" >- } >- }, >- { >- "log_body": "Exception was thrown when call vsan-performance-manager for cluster [vim.ClusterComputeResource:domain-c109,Cluster-52] perf metrics: N3Vim5Fault8NotFound9ExceptionE(Fault cause: vim.fault.NotFound\n--> )", >- "extract(log_body)": { >- "Exception was thrown when call vsan-performance-manager for cluster [vim.ClusterComputeResource:domain-c109,Cluster-52] perf metrics": { >- "N3Vim5Fault8NotFound9ExceptionE": [ >- "Fault cause", >- "vim.fault.NotFound", >- "\n", >- "--", >- ">" >- ] >- } >- } >- } >-] >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_sql_str_func.sh_d54a759f5683a22ad289129b2096b80652b1cc0c.err >lnav-test: sqlite3.c:84160: sqlite3ValueText: Assertion `pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.8282.log >========================= >[0;31mEND[0m test_sql_str_func.sh_d54a759f5683a22ad289129b2096b80652b1cc0c.err >ERR: test: ../src/lnav-test -n -c ;SELECT log_body, extract(log_body) from vmw_log -c :write-json-to - {test_dir}/logfile_vmw_log.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_str_func.sh_d54a759f5683a22ad289129b2096b80652b1cc0c.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_str_func.sh_d54a759f5683a22ad289129b2096b80652b1cc0c.err 2025-01-17 20:39:34.551364395 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:84160: sqlite3ValueText: Assertion `pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.8282.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:34+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c ;SELECT anonymize(bro_id_resp_h) FROM bro_http_log {test_dir}/logfile_bro_http.log.0 >[0;32mBEGIN[0m test_sql_str_func.sh_11d458fdadd00df1239a0eeaac049abb49ed212d.out >[0;32mEND[0m test_sql_str_func.sh_11d458fdadd00df1239a0eeaac049abb49ed212d.out >OUT: test: ../src/lnav-test -n -c ;SELECT anonymize(bro_id_resp_h) FROM bro_http_log {test_dir}/logfile_bro_http.log.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_str_func.sh_11d458fdadd00df1239a0eeaac049abb49ed212d.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_str_func.sh_11d458fdadd00df1239a0eeaac049abb49ed212d.out 2025-01-17 20:39:34.664368931 +0100 >@@ -1,198 +0,0 @@ >-anonymize(bro_id_resp_h) >-10.0.0.1 >-10.0.0.2 >-10.0.0.2 >-10.0.0.2 >-10.0.0.2 >-10.0.0.2 >-10.0.0.2 >-10.0.0.3 >-10.0.0.4 >-10.0.0.1 >-10.0.0.4 >-10.0.0.4 >-10.0.0.5 >-10.0.0.4 >-10.0.0.4 >-10.0.0.1 >-10.0.0.6 >-10.0.0.4 >-10.0.0.7 >-10.0.0.8 >-10.0.0.8 >-10.0.0.8 >-10.0.0.8 >-10.0.0.8 >-10.0.0.8 >-10.0.0.8 >-10.0.0.8 >-10.0.0.9 >-10.0.0.10 >-10.0.0.5 >-10.0.0.11 >-10.0.0.11 >-10.0.0.11 >-10.0.0.11 >-10.0.0.11 >-10.0.0.11 >-10.0.0.5 >-10.0.0.11 >-10.0.0.11 >-10.0.0.11 >-10.0.0.11 >-10.0.0.11 >-10.0.0.11 >-10.0.0.11 >-10.0.0.11 >-10.0.0.11 >-10.0.0.11 >-10.0.0.5 >-10.0.0.10 >-10.0.0.6 >-10.0.0.12 >-10.0.0.1 >-10.0.0.1 >-10.0.0.6 >-10.0.0.11 >-10.0.0.11 >-10.0.0.13 >-10.0.0.6 >-10.0.0.11 >-10.0.0.11 >-10.0.0.11 >-10.0.0.13 >-10.0.0.6 >-10.0.0.6 >-10.0.0.6 >-10.0.0.6 >-10.0.0.6 >-10.0.0.6 >-10.0.0.6 >-10.0.0.6 >-10.0.0.14 >-10.0.0.6 >-10.0.0.14 >-10.0.0.15 >-10.0.0.16 >-10.0.0.6 >-10.0.0.16 >-10.0.0.17 >-10.0.0.5 >-10.0.0.1 >-10.0.0.17 >-10.0.0.15 >-10.0.0.17 >-10.0.0.18 >-10.0.0.18 >-10.0.0.10 >-10.0.0.5 >-10.0.0.11 >-10.0.0.11 >-10.0.0.11 >-10.0.0.11 >-10.0.0.11 >-10.0.0.11 >-10.0.0.11 >-10.0.0.11 >-10.0.0.11 >-10.0.0.18 >-10.0.0.11 >-10.0.0.11 >-10.0.0.11 >-10.0.0.18 >-10.0.0.18 >-10.0.0.18 >-10.0.0.19 >-10.0.0.18 >-10.0.0.19 >-10.0.0.19 >-10.0.0.19 >-10.0.0.19 >-10.0.0.19 >-10.0.0.19 >-10.0.0.19 >-10.0.0.19 >-10.0.0.20 >-10.0.0.20 >-10.0.0.21 >-10.0.0.18 >-10.0.0.18 >-10.0.0.22 >-10.0.0.6 >-10.0.0.5 >-10.0.0.5 >-10.0.0.5 >-10.0.0.5 >-10.0.0.6 >-10.0.0.23 >-10.0.0.24 >-10.0.0.23 >-10.0.0.23 >-10.0.0.23 >-10.0.0.23 >-10.0.0.23 >-10.0.0.23 >-10.0.0.23 >-10.0.0.23 >-10.0.0.23 >-10.0.0.23 >-10.0.0.23 >-10.0.0.23 >-10.0.0.23 >-10.0.0.23 >-10.0.0.24 >-10.0.0.24 >-10.0.0.24 >-10.0.0.24 >-10.0.0.25 >-10.0.0.26 >-10.0.0.27 >-10.0.0.23 >-10.0.0.23 >-10.0.0.23 >-10.0.0.25 >-10.0.0.26 >-10.0.0.24 >-10.0.0.24 >-10.0.0.27 >-10.0.0.23 >-10.0.0.25 >-10.0.0.26 >-10.0.0.24 >-10.0.0.24 >-10.0.0.27 >-10.0.0.25 >-10.0.0.26 >-10.0.0.24 >-10.0.0.24 >-10.0.0.27 >-10.0.0.28 >-10.0.0.23 >-10.0.0.25 >-10.0.0.24 >-10.0.0.24 >-10.0.0.27 >-10.0.0.26 >-10.0.0.23 >-10.0.0.25 >-10.0.0.26 >-10.0.0.24 >-10.0.0.24 >-10.0.0.27 >-10.0.0.23 >-10.0.0.23 >-10.0.0.23 >-10.0.0.23 >-10.0.0.23 >-10.0.0.23 >-10.0.0.23 >-10.0.0.23 >-10.0.0.23 >-10.0.0.23 >-10.0.0.27 >-10.0.0.23 >-10.0.0.25 >-10.0.0.24 >-10.0.0.24 >-10.0.0.27 >-10.0.0.26 >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_sql_str_func.sh_11d458fdadd00df1239a0eeaac049abb49ed212d.err >lnav-test: sqlite3.c:84160: sqlite3ValueText: Assertion `pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.8325.log >========================= >[0;31mEND[0m test_sql_str_func.sh_11d458fdadd00df1239a0eeaac049abb49ed212d.err >ERR: test: ../src/lnav-test -n -c ;SELECT anonymize(bro_id_resp_h) FROM bro_http_log {test_dir}/logfile_bro_http.log.0 >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_sql_str_func.sh_11d458fdadd00df1239a0eeaac049abb49ed212d.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_sql_str_func.sh_11d458fdadd00df1239a0eeaac049abb49ed212d.err 2025-01-17 20:39:34.676369412 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:84160: sqlite3ValueText: Assertion `pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.8325.log >+========================= >FAIL! EXPECTED ERR DIFF >FAIL test_sql_str_func.sh (exit status: 1) > >FAIL: test_sql_views_vtab.sh >============================ > >2025-01-17T20:39:30+01:00 [0;35m=============================================================[0m >test: ../src/lnav-test -n -c ;SELECT view_name,basename(filepath),visible FROM lnav_view_files -c :write-csv-to - /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/logfile_access_log.0 /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/logfile_access_log.1 >test: ../src/lnav-test -n -c ;SELECT view_name,basename(filepath),visible FROM lnav_view_files -c :write-csv-to - /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/logfile_access_log.0 /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/logfile_access_log.1 >lnav_view_files does not work? >--- - 2025-01-17 20:39:30.954975962 +0100 >+++ test_sql_views_vtab.sh_1.tmp 2025-01-17 20:39:30.950219864 +0100 >@@ -1,3 +0,0 @@ >-view_name,basename(filepath),visible >-log,logfile_access_log.0,1 >-log,logfile_access_log.1,1 >FAIL test_sql_views_vtab.sh (exit status: 1) > >FAIL: test_text_file.sh >======================= > > >2025-01-17T20:39:30+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n {top_srcdir}/README.md >[0;32mBEGIN[0m test_text_file.sh_5b51b55dff7332c5bee2c9b797c401c5614d574a.out >[4mBuild[1][0m[4m[2][0m [4mDocs[3][0m[4m[4][0m [4mCoverage Status[5][0m[4m[6][0m [4mlnav[7][0m[4m[8][0m > > â[1] - https://github.com/tstack/lnav/workflows/ci-build/badge.svg > â[2] - https://github.com/tstack/lnav/actions?query=workflow%3Aci-build > â[3] - https://readthedocs.org/projects/lnav/badge/?version=latest&style=plastic > â[4] - https://docs.lnav.org > â[5] - https://coveralls.io/repos/github/tstack/lnav/badge.svg?branch=master > â[6] - https://coveralls.io/github/tstack/lnav?branch=master > â[7] - https://snapcraft.io/lnav/badge.svg > â[8] - https://snapcraft.io/lnav > >[4m<img[0m >[4msrc="https://assets-global.website-files.com/6257adef93867e50d84d30e2/62594fddd654fc29fcc07359_cb48d2a8d4991281d7a6a95d2f58195e.svg"[0m >[4mheight="20"/>[1][0m > > â[1] - https://discord.gg/erBPnKwz7R > >[4mThis is the source repository for [0m[1m[4mlnav[0m[4m, visit [0m[4mhttps://lnav.org[1][0m[4m for[0m >[4ma high level overview.[0m > > â[1] - https://lnav.org > >[1m[35mLNAV â The Logfile Navigator[0m > >The Log File Navigator, [1mlnav[0m for short, is an advanced log file viewer >for the small-scale. It is a terminal application that can understand >your log files and make it easy for you to find problems with little >to no setup. > >[1mScreenshot[0m > >The following screenshot shows a syslog file. Log lines are displayed >with highlights. Errors are red and warnings are yellow. > >[4mScreenshot[1][0m[4m[2][0m > > â[1] - file://{top_srcdir}/docs/assets/images/lnav-syslog-thumb.png > â[2] - file://{top_srcdir}/docs/assets/images/lnav-syslog.png > >[1mFeatures[0m > > [33mâ¢[0m Log messages from different files are collated together > into a single view > [33mâ¢[0m Automatic detection of log format > [33mâ¢[0m Automatic decompression of GZip and BZip2 files > [33mâ¢[0m Filter log messages based on regular expressions > [33mâ¢[0m Use SQL to analyze your logs > [33mâ¢[0m And more... > >[1mInstallation[0m > >[4mDownload a statically-linked binary for Linux/MacOS from the release[0m >[4mpage[1][0m > > â[1] - https://github.com/tstack/lnav/releases/latest#release-artifacts > >[1mUsage[0m > >The only file installed is the executable, [37m[40m lnav [0m. You can execute it >with no arguments to view the default set of files: > > â[37m[40m$ lnav [0m > >You can view all the syslog messages by running: > > â[37m[40m$ lnav /var/log/messages* [0m > >[4mUsage with [0m[4m[37m[40m systemd-journald [0m > >On systems running [37m[40m systemd-journald [0m, you can use [37m[40m lnav [0m as the >pager: > > â[37m[40m$ journalctl | lnav [0m > >or in follow mode: > > â[37m[40m$ journalctl -f | lnav [0m > >Since [37m[40m journalctl [0m's default output format omits the year, if you are >viewing logs which span multiple years you will need to change the >output format to include the year, otherwise [37m[40m lnav [0m gets confused: > > â[37m[40m$ journalctl -o short-iso | lnav [0m > >It is also possible to use [37m[40m journalctl [0m's json output format and [37m[40m lnav[0m >will make use of additional fields such as PRIORITY and _SYSTEMD_UNIT: > > â[37m[40m$ journalctl -o json | lnav [0m > >In case some MESSAGE fields contain special characters such as ANSI >color codes which are considered as unprintable by journalctl, >specifying [37m[40m journalctl [0m's [37m[40m -a [0m option might be preferable in order to >output those messages still in a non-binary representation: > > â[37m[40m$ journalctl -a -o json | lnav [0m > >If using systemd v236 or newer, the output fields can be limited to >the ones actually recognized by [37m[40m lnav [0m for increased efficiency: > > â[37m[40m$ journalctl -o json --output-fields=MESSAGE,PRIORITY,_PID,SYSLOG_IDENTIFIER,_SYSTEMD_UNIT | lnav [0m > >If your system has been running for a long time, for increased >efficiency you may want to limit the number of log lines fed into [37m[40m lnav[0m >, e.g. via [37m[40m journalctl [0m's [37m[40m -n [0m or [37m[40m --since=... [0m options. > >In case of a persistent journal, you may want to limit the number of >log lines fed into [37m[40m lnav [0m via [37m[40m journalctl [0m's [37m[40m -b [0m option. > >[1mSupport[0m > >Please file issues on this repository or use the discussions section. >The following alternatives are also available: > > [33mâ¢[0m [4msupport@lnav.org[1][0m > [33mâ¢[0m [4mDiscord[2][0m > [33mâ¢[0m [4mGoogle Groups[3][0m > > â[1] - mailto:support@lnav.org > â[2] - https://discord.gg/erBPnKwz7R > â[3] - https://groups.google.com/g/lnav > >[1mLinks[0m > > [33mâ¢[0m [4mMain Site[1][0m > [33mâ¢[0m [1m[4mDocumentation[0m[4m[2][0m on Read the Docs > [33mâ¢[0m [4mInternal Architecture[3][0m > > â[1] - https://lnav.org > â[2] - https://docs.lnav.org > â[3] - file://{top_srcdir}/ARCHITECTURE.md > >[1mContributing[0m > > [33mâ¢[0m [4mBecome a Sponsor on GitHub[1][0m > > â[1] - https://github.com/sponsors/tstack > >[4mBuilding From Source[0m > >[4mPrerequisites[0m > >The following software packages are required to build lnav: > > [33mâ¢[0m gcc/clang - A C++14-compatible compiler. > [33mâ¢[0m libpcre2 - The Perl Compatible Regular Expression v2 > (PCRE2) library. > [33mâ¢[0m sqlite - The SQLite database engine. Version 3.9.0 > or higher is required. > [33mâ¢[0m ncurses - The ncurses text UI library. > [33mâ¢[0m readline - The readline line editing library. > [33mâ¢[0m zlib - The zlib compression library. > [33mâ¢[0m bz2 - The bzip2 compression library. > [33mâ¢[0m libcurl - The cURL library for downloading files > from URLs. Version 7.23.0 or higher is required. > [33mâ¢[0m libarchive - The libarchive library for opening archive > files, like zip/tgz. > [33mâ¢[0m wireshark - The [35m'tshark'[0m program is used to interpret > pcap files. > >[4mBuild[0m > >Lnav follows the usual GNU style for configuring and installing >software: > >Run [37m[40m ./autogen.sh [0m if compiling from a cloned repository. > > â[33m[40m$ [0m[37m[40m./configure [0m > â[33m[40m$ [0m[37m[40mmake [0m > â[33m[40m$ [0m[37m[40msudo make install [0m > >[1mSee Also[0m > >[4mAngle-grinder[1][0m is a tool to slice and dice log files on the >command-line. If you're familiar with the SumoLogic query language, >you might find this tool more comfortable to work with. > > â[1] - https://github.com/rcoh/angle-grinder > >[0;32mEND[0m test_text_file.sh_5b51b55dff7332c5bee2c9b797c401c5614d574a.out >[0;31mBEGIN[0m test_text_file.sh_5b51b55dff7332c5bee2c9b797c401c5614d574a.err >[0;31mEND[0m test_text_file.sh_5b51b55dff7332c5bee2c9b797c401c5614d574a.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :goto #screenshot {top_srcdir}/README.md >[0;32mBEGIN[0m test_text_file.sh_6a24078983cf1b7a80b6fb65d5186cd125498136.out >[1mScreenshot[0m > >The following screenshot shows a syslog file. Log lines are displayed >with highlights. Errors are red and warnings are yellow. > >[4mScreenshot[1][0m[4m[2][0m > > â[1] - file://{top_srcdir}/docs/assets/images/lnav-syslog-thumb.png > â[2] - file://{top_srcdir}/docs/assets/images/lnav-syslog.png > >[1mFeatures[0m > > [33mâ¢[0m Log messages from different files are collated together > into a single view > [33mâ¢[0m Automatic detection of log format > [33mâ¢[0m Automatic decompression of GZip and BZip2 files > [33mâ¢[0m Filter log messages based on regular expressions > [33mâ¢[0m Use SQL to analyze your logs > [33mâ¢[0m And more... > >[1mInstallation[0m > >[4mDownload a statically-linked binary for Linux/MacOS from the release[0m >[4mpage[1][0m > > â[1] - https://github.com/tstack/lnav/releases/latest#release-artifacts > >[1mUsage[0m > >The only file installed is the executable, [37m[40m lnav [0m. You can execute it >with no arguments to view the default set of files: > > â[37m[40m$ lnav [0m > >You can view all the syslog messages by running: > > â[37m[40m$ lnav /var/log/messages* [0m > >[4mUsage with [0m[4m[37m[40m systemd-journald [0m > >On systems running [37m[40m systemd-journald [0m, you can use [37m[40m lnav [0m as the >pager: > > â[37m[40m$ journalctl | lnav [0m > >or in follow mode: > > â[37m[40m$ journalctl -f | lnav [0m > >Since [37m[40m journalctl [0m's default output format omits the year, if you are >viewing logs which span multiple years you will need to change the >output format to include the year, otherwise [37m[40m lnav [0m gets confused: > > â[37m[40m$ journalctl -o short-iso | lnav [0m > >It is also possible to use [37m[40m journalctl [0m's json output format and [37m[40m lnav[0m >will make use of additional fields such as PRIORITY and _SYSTEMD_UNIT: > > â[37m[40m$ journalctl -o json | lnav [0m > >In case some MESSAGE fields contain special characters such as ANSI >color codes which are considered as unprintable by journalctl, >specifying [37m[40m journalctl [0m's [37m[40m -a [0m option might be preferable in order to >output those messages still in a non-binary representation: > > â[37m[40m$ journalctl -a -o json | lnav [0m > >If using systemd v236 or newer, the output fields can be limited to >the ones actually recognized by [37m[40m lnav [0m for increased efficiency: > > â[37m[40m$ journalctl -o json --output-fields=MESSAGE,PRIORITY,_PID,SYSLOG_IDENTIFIER,_SYSTEMD_UNIT | lnav [0m > >If your system has been running for a long time, for increased >efficiency you may want to limit the number of log lines fed into [37m[40m lnav[0m >, e.g. via [37m[40m journalctl [0m's [37m[40m -n [0m or [37m[40m --since=... [0m options. > >In case of a persistent journal, you may want to limit the number of >log lines fed into [37m[40m lnav [0m via [37m[40m journalctl [0m's [37m[40m -b [0m option. > >[1mSupport[0m > >Please file issues on this repository or use the discussions section. >The following alternatives are also available: > > [33mâ¢[0m [4msupport@lnav.org[1][0m > [33mâ¢[0m [4mDiscord[2][0m > [33mâ¢[0m [4mGoogle Groups[3][0m > > â[1] - mailto:support@lnav.org > â[2] - https://discord.gg/erBPnKwz7R > â[3] - https://groups.google.com/g/lnav > >[1mLinks[0m > > [33mâ¢[0m [4mMain Site[1][0m > [33mâ¢[0m [1m[4mDocumentation[0m[4m[2][0m on Read the Docs > [33mâ¢[0m [4mInternal Architecture[3][0m > > â[1] - https://lnav.org > â[2] - https://docs.lnav.org > â[3] - file://{top_srcdir}/ARCHITECTURE.md > >[1mContributing[0m > > [33mâ¢[0m [4mBecome a Sponsor on GitHub[1][0m > > â[1] - https://github.com/sponsors/tstack > >[4mBuilding From Source[0m > >[4mPrerequisites[0m > >The following software packages are required to build lnav: > > [33mâ¢[0m gcc/clang - A C++14-compatible compiler. > [33mâ¢[0m libpcre2 - The Perl Compatible Regular Expression v2 > (PCRE2) library. > [33mâ¢[0m sqlite - The SQLite database engine. Version 3.9.0 > or higher is required. > [33mâ¢[0m ncurses - The ncurses text UI library. > [33mâ¢[0m readline - The readline line editing library. > [33mâ¢[0m zlib - The zlib compression library. > [33mâ¢[0m bz2 - The bzip2 compression library. > [33mâ¢[0m libcurl - The cURL library for downloading files > from URLs. Version 7.23.0 or higher is required. > [33mâ¢[0m libarchive - The libarchive library for opening archive > files, like zip/tgz. > [33mâ¢[0m wireshark - The [35m'tshark'[0m program is used to interpret > pcap files. > >[4mBuild[0m > >Lnav follows the usual GNU style for configuring and installing >software: > >Run [37m[40m ./autogen.sh [0m if compiling from a cloned repository. > > â[33m[40m$ [0m[37m[40m./configure [0m > â[33m[40m$ [0m[37m[40mmake [0m > â[33m[40m$ [0m[37m[40msudo make install [0m > >[1mSee Also[0m > >[4mAngle-grinder[1][0m is a tool to slice and dice log files on the >command-line. If you're familiar with the SumoLogic query language, >you might find this tool more comfortable to work with. > > â[1] - https://github.com/rcoh/angle-grinder > >[0;32mEND[0m test_text_file.sh_6a24078983cf1b7a80b6fb65d5186cd125498136.out >[0;31mBEGIN[0m test_text_file.sh_6a24078983cf1b7a80b6fb65d5186cd125498136.err >[0;31mEND[0m test_text_file.sh_6a24078983cf1b7a80b6fb65d5186cd125498136.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n {top_srcdir}/README.md#screenshot >[0;32mBEGIN[0m test_text_file.sh_e088ea61a5382458cc48a2607e2639e52b0be1da.out >[1mScreenshot[0m > >The following screenshot shows a syslog file. Log lines are displayed >with highlights. Errors are red and warnings are yellow. > >[4mScreenshot[1][0m[4m[2][0m > > â[1] - file://{top_srcdir}/docs/assets/images/lnav-syslog-thumb.png > â[2] - file://{top_srcdir}/docs/assets/images/lnav-syslog.png > >[1mFeatures[0m > > [33mâ¢[0m Log messages from different files are collated together > into a single view > [33mâ¢[0m Automatic detection of log format > [33mâ¢[0m Automatic decompression of GZip and BZip2 files > [33mâ¢[0m Filter log messages based on regular expressions > [33mâ¢[0m Use SQL to analyze your logs > [33mâ¢[0m And more... > >[1mInstallation[0m > >[4mDownload a statically-linked binary for Linux/MacOS from the release[0m >[4mpage[1][0m > > â[1] - https://github.com/tstack/lnav/releases/latest#release-artifacts > >[1mUsage[0m > >The only file installed is the executable, [37m[40m lnav [0m. You can execute it >with no arguments to view the default set of files: > > â[37m[40m$ lnav [0m > >You can view all the syslog messages by running: > > â[37m[40m$ lnav /var/log/messages* [0m > >[4mUsage with [0m[4m[37m[40m systemd-journald [0m > >On systems running [37m[40m systemd-journald [0m, you can use [37m[40m lnav [0m as the >pager: > > â[37m[40m$ journalctl | lnav [0m > >or in follow mode: > > â[37m[40m$ journalctl -f | lnav [0m > >Since [37m[40m journalctl [0m's default output format omits the year, if you are >viewing logs which span multiple years you will need to change the >output format to include the year, otherwise [37m[40m lnav [0m gets confused: > > â[37m[40m$ journalctl -o short-iso | lnav [0m > >It is also possible to use [37m[40m journalctl [0m's json output format and [37m[40m lnav[0m >will make use of additional fields such as PRIORITY and _SYSTEMD_UNIT: > > â[37m[40m$ journalctl -o json | lnav [0m > >In case some MESSAGE fields contain special characters such as ANSI >color codes which are considered as unprintable by journalctl, >specifying [37m[40m journalctl [0m's [37m[40m -a [0m option might be preferable in order to >output those messages still in a non-binary representation: > > â[37m[40m$ journalctl -a -o json | lnav [0m > >If using systemd v236 or newer, the output fields can be limited to >the ones actually recognized by [37m[40m lnav [0m for increased efficiency: > > â[37m[40m$ journalctl -o json --output-fields=MESSAGE,PRIORITY,_PID,SYSLOG_IDENTIFIER,_SYSTEMD_UNIT | lnav [0m > >If your system has been running for a long time, for increased >efficiency you may want to limit the number of log lines fed into [37m[40m lnav[0m >, e.g. via [37m[40m journalctl [0m's [37m[40m -n [0m or [37m[40m --since=... [0m options. > >In case of a persistent journal, you may want to limit the number of >log lines fed into [37m[40m lnav [0m via [37m[40m journalctl [0m's [37m[40m -b [0m option. > >[1mSupport[0m > >Please file issues on this repository or use the discussions section. >The following alternatives are also available: > > [33mâ¢[0m [4msupport@lnav.org[1][0m > [33mâ¢[0m [4mDiscord[2][0m > [33mâ¢[0m [4mGoogle Groups[3][0m > > â[1] - mailto:support@lnav.org > â[2] - https://discord.gg/erBPnKwz7R > â[3] - https://groups.google.com/g/lnav > >[1mLinks[0m > > [33mâ¢[0m [4mMain Site[1][0m > [33mâ¢[0m [1m[4mDocumentation[0m[4m[2][0m on Read the Docs > [33mâ¢[0m [4mInternal Architecture[3][0m > > â[1] - https://lnav.org > â[2] - https://docs.lnav.org > â[3] - file://{top_srcdir}/ARCHITECTURE.md > >[1mContributing[0m > > [33mâ¢[0m [4mBecome a Sponsor on GitHub[1][0m > > â[1] - https://github.com/sponsors/tstack > >[4mBuilding From Source[0m > >[4mPrerequisites[0m > >The following software packages are required to build lnav: > > [33mâ¢[0m gcc/clang - A C++14-compatible compiler. > [33mâ¢[0m libpcre2 - The Perl Compatible Regular Expression v2 > (PCRE2) library. > [33mâ¢[0m sqlite - The SQLite database engine. Version 3.9.0 > or higher is required. > [33mâ¢[0m ncurses - The ncurses text UI library. > [33mâ¢[0m readline - The readline line editing library. > [33mâ¢[0m zlib - The zlib compression library. > [33mâ¢[0m bz2 - The bzip2 compression library. > [33mâ¢[0m libcurl - The cURL library for downloading files > from URLs. Version 7.23.0 or higher is required. > [33mâ¢[0m libarchive - The libarchive library for opening archive > files, like zip/tgz. > [33mâ¢[0m wireshark - The [35m'tshark'[0m program is used to interpret > pcap files. > >[4mBuild[0m > >Lnav follows the usual GNU style for configuring and installing >software: > >Run [37m[40m ./autogen.sh [0m if compiling from a cloned repository. > > â[33m[40m$ [0m[37m[40m./configure [0m > â[33m[40m$ [0m[37m[40mmake [0m > â[33m[40m$ [0m[37m[40msudo make install [0m > >[1mSee Also[0m > >[4mAngle-grinder[1][0m is a tool to slice and dice log files on the >command-line. If you're familiar with the SumoLogic query language, >you might find this tool more comfortable to work with. > > â[1] - https://github.com/rcoh/angle-grinder > >[0;32mEND[0m test_text_file.sh_e088ea61a5382458cc48a2607e2639e52b0be1da.out >[0;31mBEGIN[0m test_text_file.sh_e088ea61a5382458cc48a2607e2639e52b0be1da.err >[0;31mEND[0m test_text_file.sh_e088ea61a5382458cc48a2607e2639e52b0be1da.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n {top_srcdir}/README.md:-4 >[0;32mBEGIN[0m test_text_file.sh_ac486314c4e02e480d829ea2f077b86c49fedcec.out >you might find this tool more comfortable to work with. > > â[1] - https://github.com/rcoh/angle-grinder > >[0;32mEND[0m test_text_file.sh_ac486314c4e02e480d829ea2f077b86c49fedcec.out >[0;31mBEGIN[0m test_text_file.sh_ac486314c4e02e480d829ea2f077b86c49fedcec.err >[0;31mEND[0m test_text_file.sh_ac486314c4e02e480d829ea2f077b86c49fedcec.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c :goto 115 -c ;SELECT top_meta FROM lnav_views WHERE name = 'text' -c :write-json-to - {top_srcdir}/README.md >[0;32mBEGIN[0m test_text_file.sh_c2a346ca1da2da4346f1d310212e166767993ce9.out >[0;32mEND[0m test_text_file.sh_c2a346ca1da2da4346f1d310212e166767993ce9.out >OUT: test: ../src/lnav-test -n -c :goto 115 -c ;SELECT top_meta FROM lnav_views WHERE name = 'text' -c :write-json-to - {top_srcdir}/README.md >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_text_file.sh_c2a346ca1da2da4346f1d310212e166767993ce9.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_text_file.sh_c2a346ca1da2da4346f1d310212e166767993ce9.out 2025-01-17 20:39:31.561244387 +0100 >@@ -1,58 +0,0 @@ >-[ >- { >- "top_meta": { >- "file": "{top_srcdir}/README.md", >- "anchor": "#support", >- "breadcrumbs": [ >- { >- "display_value": "README.md", >- "search_placeholder": "", >- "possibilities": [ >- { >- "display_value": "README.md" >- } >- ] >- }, >- { >- "display_value": "LNAV â The Logfile Navigator", >- "search_placeholder": "", >- "possibilities": [ >- { >- "display_value": "LNAV â The Logfile Navigator" >- } >- ] >- }, >- { >- "display_value": "Support", >- "search_placeholder": "", >- "possibilities": [ >- { >- "display_value": "Contributing" >- }, >- { >- "display_value": "Features" >- }, >- { >- "display_value": "Installation" >- }, >- { >- "display_value": "Links" >- }, >- { >- "display_value": "Screenshot" >- }, >- { >- "display_value": "See Also" >- }, >- { >- "display_value": "Support" >- }, >- { >- "display_value": "Usage" >- } >- ] >- } >- ] >- } >- } >-] >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_text_file.sh_c2a346ca1da2da4346f1d310212e166767993ce9.err >lnav-test: sqlite3.c:84160: sqlite3ValueText: Assertion `pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.4482.log >========================= >[0;31mEND[0m test_text_file.sh_c2a346ca1da2da4346f1d310212e166767993ce9.err >ERR: test: ../src/lnav-test -n -c :goto 115 -c ;SELECT top_meta FROM lnav_views WHERE name = 'text' -c :write-json-to - {top_srcdir}/README.md >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_text_file.sh_c2a346ca1da2da4346f1d310212e166767993ce9.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_text_file.sh_c2a346ca1da2da4346f1d310212e166767993ce9.err 2025-01-17 20:39:31.574244909 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:84160: sqlite3ValueText: Assertion `pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.4482.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n {top_srcdir}/src/log_level.cc >[0;32mBEGIN[0m test_text_file.sh_87943c6be50d701a03e901f16493314c839af1ab.out >/** > * Copyright (c) [1m2018[0m, Timothy Stack > * > * All rights reserved. > * > * Redistribution and use in source and binary forms, with or without > * modification, are permitted provided that the following conditions are met: > * > * * Redistributions of source code must retain the above copyright notice, [1m[36mthis[0m > * list of conditions and the following disclaimer. > * * Redistributions in binary form must reproduce the above copyright notice, > * [1m[36mthis[0m list of conditions and the following disclaimer in the documentation > * and/or other materials provided with the distribution. > * * Neither the name of Timothy Stack nor the names of its contributors > * may be used to endorse or promote products derived from [1m[36mthis[0m software > * without specific prior written permission. > * > * [1mTHIS[0m [1mSOFTWARE[0m [1mIS[0m [1mPROVIDED[0m [1mBY[0m [1mTHE[0m [1mREGENTS[0m [1mAND[0m [1mCONTRIBUTORS[0m [35m''[0m[1mAS[0m [1mIS[0m'' [1mAND[0m [1mANY[0m > * [1mEXPRESS[0m [1mOR[0m [1mIMPLIED[0m [1mWARRANTIES[0m, [1mINCLUDING[0m, [1mBUT[0m [1mNOT[0m [1mLIMITED[0m [1mTO[0m, [1mTHE[0m [1mIMPLIED[0m > * [1mWARRANTIES[0m [1mOF[0m [1mMERCHANTABILITY[0m [1mAND[0m [1mFITNESS[0m [1mFOR[0m A [1mPARTICULAR[0m [1mPURPOSE[0m [1mARE[0m > * [1mDISCLAIMED[0m. [1mIN[0m [1mNO[0m [1mEVENT[0m [1mSHALL[0m [1mTHE[0m [1mREGENTS[0m [1mOR[0m [1mCONTRIBUTORS[0m [1mBE[0m [1mLIABLE[0m [1mFOR[0m [1mANY[0m > * [1mDIRECT[0m, [1mINDIRECT[0m, [1mINCIDENTAL[0m, [1mSPECIAL[0m, [1mEXEMPLARY[0m, [1mOR[0m [1mCONSEQUENTIAL[0m [1mDAMAGES[0m > * ([1mINCLUDING[0m, [1mBUT[0m [1mNOT[0m [1mLIMITED[0m [1mTO[0m, [1mPROCUREMENT[0m [1mOF[0m [1mSUBSTITUTE[0m [1mGOODS[0m [1mOR[0m [1mSERVICES[0m; > * [1mLOSS[0m [1mOF[0m [1mUSE[0m, [1mDATA[0m, [1mOR[0m [1mPROFITS[0m; [1mOR[0m [1mBUSINESS[0m [1mINTERRUPTION[0m) [1mHOWEVER[0m [1mCAUSED[0m [1mAND[0m > * [1mON[0m [1mANY[0m [1mTHEORY[0m [1mOF[0m [1mLIABILITY[0m, [1mWHETHER[0m [1mIN[0m [1mCONTRACT[0m, [1mSTRICT[0m [1mLIABILITY[0m, [1mOR[0m [1mTORT[0m > * ([1mINCLUDING[0m [1mNEGLIGENCE[0m [1mOR[0m [1mOTHERWISE[0m) [1mARISING[0m [1mIN[0m [1mANY[0m [1mWAY[0m [1mOUT[0m [1mOF[0m [1mTHE[0m [1mUSE[0m [1mOF[0m [1mTHIS[0m > * [1mSOFTWARE[0m, [1mEVEN[0m [1mIF[0m [1mADVISED[0m [1mOF[0m [1mTHE[0m [1mPOSSIBILITY[0m [1mOF[0m [1mSUCH[0m [1mDAMAGE[0m. > */ > >[1m[36m#include[0m [35m"log_level.hh"[0m > >[1m[36m#include[0m <ctype.h> > >[1m[36m#include[0m [35m"config.h"[0m > >[1m[36mconst[0m [1m[36mchar[0m* level_names[[1mLEVEL__MAX[0m + [1m1[0m] = { > [35m"unknown"[0m, > [35m"trace"[0m, > [35m"debug5"[0m, > [35m"debug4"[0m, > [35m"debug3"[0m, > [35m"debug2"[0m, > [35m"debug"[0m, > [35m"info"[0m, > [35m"stats"[0m, > [35m"notice"[0m, > [35m"warning"[0m, > [35m"error"[0m, > [35m"critical"[0m, > [35m"fatal"[0m, > [35m"invalid"[0m, > > [1m[36mnullptr[0m, >}; > >log_level_t >abbrev2level([1m[36mconst[0m [1m[36mchar[0m* levelstr, ssize_t len) >{ > [1m[36mif[0m ([4mlen[0m == [1m0[0m || levelstr[[1m0[0m] == [35m'\0'[0m) { > [1m[36mreturn[0m [1mLEVEL_UNKNOWN[0m; > } > > [1m[36mswitch[0m (toupper(levelstr[[1m0[0m])) { > [1m[36mcase[0m [35m'T'[0m: > [1m[36mreturn[0m [1mLEVEL_TRACE[0m; > [1m[36mcase[0m [35m'D'[0m: > [1m[36mcase[0m [35m'V'[0m: > [1m[36mif[0m (len > [1m1[0m) { > [1m[36mswitch[0m (levelstr[len - [1m1[0m]) { > [1m[36mcase[0m [35m'2'[0m: > [1m[36mreturn[0m [1mLEVEL_DEBUG2[0m; > [1m[36mcase[0m [35m'3'[0m: > [1m[36mreturn[0m [1mLEVEL_DEBUG3[0m; > [1m[36mcase[0m [35m'4'[0m: > [1m[36mreturn[0m [1mLEVEL_DEBUG4[0m; > [1m[36mcase[0m [35m'5'[0m: > [1m[36mreturn[0m [1mLEVEL_DEBUG5[0m; > } > } > [1m[36mreturn[0m [1mLEVEL_DEBUG[0m; > [1m[36mcase[0m [35m'I'[0m: > [1m[36mif[0m ([4mlen[0m == [1m7[0m && toupper(levelstr[[1m1[0m]) == [35m'N'[0m > && toupper(levelstr[[1m2[0m]) == [35m'V'[0m && toupper(levelstr[[1m3[0m]) == [35m'A'[0m > && toupper(levelstr[[1m4[0m]) == [35m'L'[0m && toupper(levelstr[[1m5[0m]) == [35m'I'[0m > && toupper(levelstr[[1m6[0m]) == [35m'D'[0m) > { > [1m[36mreturn[0m [1mLEVEL_INVALID[0m; > } > [1m[36mreturn[0m [1mLEVEL_INFO[0m; > [1m[36mcase[0m [35m'S'[0m: > [1m[36mreturn[0m [1mLEVEL_STATS[0m; > [1m[36mcase[0m [35m'N'[0m: > [1m[36mreturn[0m [1mLEVEL_NOTICE[0m; > [1m[36mcase[0m [35m'W'[0m: > [1m[36mreturn[0m [1mLEVEL_WARNING[0m; > [1m[36mcase[0m [35m'E'[0m: > [1m[36mreturn[0m [1mLEVEL_ERROR[0m; > [1m[36mcase[0m [35m'C'[0m: > [1m[36mreturn[0m [1mLEVEL_CRITICAL[0m; > [1m[36mcase[0m [35m'F'[0m: > [1m[36mreturn[0m [1mLEVEL_FATAL[0m; > [1m[36mdefault[0m: > [1m[36mreturn[0m [1mLEVEL_UNKNOWN[0m; > } >} > >[1m[36mint[0m >levelcmp([1m[36mconst[0m [1m[36mchar[0m* l1, ssize_t l1_len, [1m[36mconst[0m [1m[36mchar[0m* l2, ssize_t l2_len) >{ > [1m[36mreturn[0m abbrev2level(l1, l1_len) - abbrev2level(l2, l2_len); >} >[0;32mEND[0m test_text_file.sh_87943c6be50d701a03e901f16493314c839af1ab.out >[0;31mBEGIN[0m test_text_file.sh_87943c6be50d701a03e901f16493314c839af1ab.err >[0;31mEND[0m test_text_file.sh_87943c6be50d701a03e901f16493314c839af1ab.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n UTF-8-test.md >[0;32mBEGIN[0m test_text_file.sh_ac872aadda29b9a824361a2c711d62ec1c75d40f.out >[1m[31mâ error[0m: unable to parse markdown file > [1m[31mreason[0m: file has invalid UTF-8 at offset 4461: Expecting bytes in the following ranges: 00..7F C2..F4. > >UTF-8 decoder capability and stress test >---------------------------------------- > >Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/> - 2015-08-28 - CC BY 4.0 > >This test file can help you examine, how your UTF-8 decoder handles >various types of correct, malformed, or otherwise interesting UTF-8 >sequences. This file is not meant to be a conformance test. It does >not prescribe any particular outcome. Therefore, there is no way to >[35m"pass"[0m or [35m"fail"[0m this test file, even though the text does suggest a >preferable decoder behaviour at some places. Its aim is, instead, to >help you think about, and test, the behaviour of your UTF-8 decoder on a >systematic collection of unusual inputs. Experience so far suggests >that most first-time authors of UTF-8 decoders find at least one >serious problem in their decoder using this file. > >The test lines below cover boundary conditions, malformed UTF-8 >sequences, as well as correctly encoded UTF-8 sequences of Unicode code >points that should never occur in a correct UTF-8 file. > >According to ISO 10646-1:2000, sections D.7 and 2.3c, a device >receiving UTF-8 shall interpret a "malformed sequence in the same way >that it interprets a character that is outside the adopted subset" and >"characters that are not within the adopted subset shall be indicated >to the user" by a receiving device. One commonly used approach in >UTF-8 decoders is to replace any malformed UTF-8 sequence by a >replacement character (U+FFFD), which looks a bit like an inverted >question mark, or a similar symbol. It might be a good idea to >visually distinguish a malformed UTF-8 sequence from a correctly >encoded Unicode character that is just not available in the current >font but otherwise fully legal, even though ISO 10646-1 doesn't >mandate this. In any case, just ignoring malformed sequences or >unavailable characters does not conform to ISO 10646, will make >debugging more difficult, and can lead to user confusion. > >Please check, whether a malformed UTF-8 sequence is (1) represented at >all, (2) represented by exactly one single replacement character (or >equivalent signal), and (3) the following quotation mark after an >illegal UTF-8 sequence is correctly displayed, i.e. proper >resynchronization takes place immediately after any malformed >sequence. This file says [35m"THE END"[0m in the last line, so if you don't >see that, your decoder crashed somehow before, which should always be >cause for concern. > >All lines in this file are exactly 79 characters long (plus the line >feed). In addition, all lines end with [35m"|"[0m, except for the two test >lines 2.1.1 and 2.2.1, which contain non-printable ASCII controls >U+0000 and U+007F. If you display this file with a fixed-width font, >these [35m"|"[0m characters should all line up in column 79 (right margin). >This allows you to test quickly, whether your UTF-8 decoder finds the >correct number of characters in every line, that is whether each >malformed sequences is replaced by a single replacement character. > >Note that, as an alternative to the notion of malformed sequence used >here, it is also a perfectly acceptable (and in some situations even >preferable) solution to represent each individual byte of a malformed >sequence with a replacement character. If you follow this strategy in >your decoder, then please ignore the [35m"|"[0m column. > > >Here come the tests: | > | >1 Some correct UTF-8 text | > | >You should see the Greek word [35m'kosme'[0m: [35m"κόÏμε"[0m | > | >2 Boundary condition test cases | > | >2.1 First possible sequence of a certain length | > | >2.1.1 1 byte (U-00000000): " >[0;32mEND[0m test_text_file.sh_ac872aadda29b9a824361a2c711d62ec1c75d40f.out >[0;31mBEGIN[0m test_text_file.sh_ac872aadda29b9a824361a2c711d62ec1c75d40f.err >[0;31mEND[0m test_text_file.sh_ac872aadda29b9a824361a2c711d62ec1c75d40f.err > >2025-01-17T20:39:31+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n -c ;SELECT * FROM lnav_file_metadata {test_dir}/textfile_0.md >[0;32mBEGIN[0m test_text_file.sh_8b2cd055e6a1db2ed9b2af2a917f8556395fa653.out >[0;32mEND[0m test_text_file.sh_8b2cd055e6a1db2ed9b2af2a917f8556395fa653.out >OUT: test: ../src/lnav-test -n -c ;SELECT * FROM lnav_file_metadata {test_dir}/textfile_0.md >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_text_file.sh_8b2cd055e6a1db2ed9b2af2a917f8556395fa653.out 2023-07-03 06:16:02.000000000 +0200 >+++ test_text_file.sh_8b2cd055e6a1db2ed9b2af2a917f8556395fa653.out 2025-01-17 20:39:31.952260080 +0100 >@@ -1,2 +0,0 @@ >-[1m[4m filepath [0m[1m[4m descriptor [0m[1m[4m mimetype [0m[1m[4m content [0m >-[1m{test_dir}/textfile_0.md[0m[1m [0m[1mnet.daringfireball.markdown.frontmatter[0m[1m [0m[1mapplication/json[0m[1m [0m[1m{â "comment": "This is JSON front-matter"â} [0m >FAIL! EXPECTED OUT DIFF >[0;31mBEGIN[0m test_text_file.sh_8b2cd055e6a1db2ed9b2af2a917f8556395fa653.err >lnav-test: sqlite3.c:84160: sqlite3ValueText: Assertion `pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex)' failed. > > >==== GURU MEDITATION ==== >Unfortunately, lnav has crashed, sorry for the inconvenience. > >You can help improve lnav by sending the following file to lnav@googlegroups.com : > ../test/.lnav/crash/crash-2013-06-06-21-13-20.5711.log >========================= >[0;31mEND[0m test_text_file.sh_8b2cd055e6a1db2ed9b2af2a917f8556395fa653.err >ERR: test: ../src/lnav-test -n -c ;SELECT * FROM lnav_file_metadata {test_dir}/textfile_0.md >--- /var/tmp/portage/app-admin/lnav-0.11.2/work/lnav-0.11.2/test/expected/test_text_file.sh_8b2cd055e6a1db2ed9b2af2a917f8556395fa653.err 2023-07-03 06:16:02.000000000 +0200 >+++ test_text_file.sh_8b2cd055e6a1db2ed9b2af2a917f8556395fa653.err 2025-01-17 20:39:31.965260602 +0100 >@@ -0,0 +1,9 @@ >+lnav-test: sqlite3.c:84160: sqlite3ValueText: Assertion `pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex)' failed. >+ >+ >+==== GURU MEDITATION ==== >+Unfortunately, lnav has crashed, sorry for the inconvenience. >+ >+You can help improve lnav by sending the following file to lnav@googlegroups.com : >+ ../test/.lnav/crash/crash-2013-06-06-21-13-20.5711.log >+========================= >FAIL! EXPECTED ERR DIFF > >2025-01-17T20:39:32+01:00 [0;35m=============================================================[0m >[0;35mCommand[0m: test: ../src/lnav-test -n {test_dir}/textfile_ansi_expanding.0 >[0;32mBEGIN[0m test_text_file.sh_7b00f32a3fff7fc2d78a87045ae842e58be88480.out >[32m * [0mPackage: sys-libs/glibc-2.36-r7:2.2 >[32m * [0mRepository: gentoo >[32m * [0mMaintainer: toolchain@gentoo.org >[32m * [0mUSE: abi_x86_64 amd64 caps elibc_glibc kernel_linux multiarch ssp static-libs test userland_GNU >[32m * [0mFEATURES: network-sandbox preserve-libs sandbox test userpriv usersandbox > [32m*[0m Checking whether python3_11 is suitable ... > [32m*[0m >=dev-lang/python-3.11.1-r1:3.11 ... > [1m[34m[ [0m[1m[32mok[0m[1m[34m ][0m > [32m*[0m Using python3.11 to build (via PYTHON_COMPAT iteration) >>>> Unpacking source... >[0;32mEND[0m test_text_file.sh_7b00f32a3fff7fc2d78a87045ae842e58be88480.out >[0;31mBEGIN[0m test_text_file.sh_7b00f32a3fff7fc2d78a87045ae842e58be88480.err >[0;31mEND[0m test_text_file.sh_7b00f32a3fff7fc2d78a87045ae842e58be88480.err >FAIL test_text_file.sh (exit status: 1) >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 948337
:
916957
| 916958 |
916959
|
916960
|
916961
|
916962
|
916963
|
916964
|
916965