diff options
Diffstat (limited to '')
1080 files changed, 13825 insertions, 0 deletions
diff --git a/test/expected/expected.am b/test/expected/expected.am new file mode 100644 index 0000000..1280cda --- /dev/null +++ b/test/expected/expected.am @@ -0,0 +1,1005 @@ + +EXPECTED_FILES = \ + $(srcdir)/%reldir%/test_cli.sh_17a68b798354f9a6cdfab372006caeb74038d15c.err \ + $(srcdir)/%reldir%/test_cli.sh_17a68b798354f9a6cdfab372006caeb74038d15c.out \ + $(srcdir)/%reldir%/test_cli.sh_5524542b1a6954ff9741155101497270a2f0c557.err \ + $(srcdir)/%reldir%/test_cli.sh_5524542b1a6954ff9741155101497270a2f0c557.out \ + $(srcdir)/%reldir%/test_cli.sh_97e19b9ff3775d84074455a2e8993a0611b1c269.err \ + $(srcdir)/%reldir%/test_cli.sh_97e19b9ff3775d84074455a2e8993a0611b1c269.out \ + $(srcdir)/%reldir%/test_cli.sh_a1a09f890f4604309d0a81bbbec8e50fb7d5e887.err \ + $(srcdir)/%reldir%/test_cli.sh_a1a09f890f4604309d0a81bbbec8e50fb7d5e887.out \ + $(srcdir)/%reldir%/test_cli.sh_f2e41555f1a5f40f54ce241207af602ed1503a2b.err \ + $(srcdir)/%reldir%/test_cli.sh_f2e41555f1a5f40f54ce241207af602ed1503a2b.out \ + $(srcdir)/%reldir%/test_cmds.sh_017b495b95218b7c083951e2dba331cfec6e90be.err \ + $(srcdir)/%reldir%/test_cmds.sh_017b495b95218b7c083951e2dba331cfec6e90be.out \ + $(srcdir)/%reldir%/test_cmds.sh_0b1e4b1523dfca71927b1fe721c74490c51361d1.err \ + $(srcdir)/%reldir%/test_cmds.sh_0b1e4b1523dfca71927b1fe721c74490c51361d1.out \ + $(srcdir)/%reldir%/test_cmds.sh_0b41fe57743ba0be088037d9ba29bc465e7c9bf9.err \ + $(srcdir)/%reldir%/test_cmds.sh_0b41fe57743ba0be088037d9ba29bc465e7c9bf9.out \ + $(srcdir)/%reldir%/test_cmds.sh_0f0ab532d8d845f8201af65bf5f6fc994e21a8aa.err \ + $(srcdir)/%reldir%/test_cmds.sh_0f0ab532d8d845f8201af65bf5f6fc994e21a8aa.out \ + $(srcdir)/%reldir%/test_cmds.sh_109a44ac6a8f1be2736c8e9c47aeed187e0581ee.err \ + $(srcdir)/%reldir%/test_cmds.sh_109a44ac6a8f1be2736c8e9c47aeed187e0581ee.out \ + $(srcdir)/%reldir%/test_cmds.sh_12856706bfb4a8e2686098dd2644a7989d370b02.err \ + $(srcdir)/%reldir%/test_cmds.sh_12856706bfb4a8e2686098dd2644a7989d370b02.out \ + $(srcdir)/%reldir%/test_cmds.sh_12b4cb9bd6586f9694100db76734b19a75158eab.err \ + $(srcdir)/%reldir%/test_cmds.sh_12b4cb9bd6586f9694100db76734b19a75158eab.out \ + $(srcdir)/%reldir%/test_cmds.sh_145126309709179759926289caf729703ef6e1c6.err \ + $(srcdir)/%reldir%/test_cmds.sh_145126309709179759926289caf729703ef6e1c6.out \ + $(srcdir)/%reldir%/test_cmds.sh_148007d2626b3c92d00ac31639b6918b1fc4aa60.err \ + $(srcdir)/%reldir%/test_cmds.sh_148007d2626b3c92d00ac31639b6918b1fc4aa60.out \ + $(srcdir)/%reldir%/test_cmds.sh_1cab7d240cf85ff2c3538f5a06af141b01bc83ad.err \ + $(srcdir)/%reldir%/test_cmds.sh_1cab7d240cf85ff2c3538f5a06af141b01bc83ad.out \ + $(srcdir)/%reldir%/test_cmds.sh_1d92c5bc12f5e7aaa6d84c5ed47f0b9f96e36c6a.err \ + $(srcdir)/%reldir%/test_cmds.sh_1d92c5bc12f5e7aaa6d84c5ed47f0b9f96e36c6a.out \ + $(srcdir)/%reldir%/test_cmds.sh_1e1c8492b295913ce5afcd104cde0ec4ca1dcdac.err \ + $(srcdir)/%reldir%/test_cmds.sh_1e1c8492b295913ce5afcd104cde0ec4ca1dcdac.out \ + $(srcdir)/%reldir%/test_cmds.sh_1f53f5b16c7c5aa695ed2e6427d822a1b940fcf4.err \ + $(srcdir)/%reldir%/test_cmds.sh_1f53f5b16c7c5aa695ed2e6427d822a1b940fcf4.out \ + $(srcdir)/%reldir%/test_cmds.sh_22577861cb0921a7e7f3d1af6485938f4930ba7b.err \ + $(srcdir)/%reldir%/test_cmds.sh_22577861cb0921a7e7f3d1af6485938f4930ba7b.out \ + $(srcdir)/%reldir%/test_cmds.sh_2339d09953b6937981d8a448000c3fdc2837f8c4.err \ + $(srcdir)/%reldir%/test_cmds.sh_2339d09953b6937981d8a448000c3fdc2837f8c4.out \ + $(srcdir)/%reldir%/test_cmds.sh_2539ff9c4dbed93df3f0408ccc5fd81df34d1193.err \ + $(srcdir)/%reldir%/test_cmds.sh_2539ff9c4dbed93df3f0408ccc5fd81df34d1193.out \ + $(srcdir)/%reldir%/test_cmds.sh_29f0c808f4e93c6ef3890e6b793bee274a5b36ca.err \ + $(srcdir)/%reldir%/test_cmds.sh_29f0c808f4e93c6ef3890e6b793bee274a5b36ca.out \ + $(srcdir)/%reldir%/test_cmds.sh_2a449c0a43e895e85c8b1c9547f32d7b5b4f84f6.err \ + $(srcdir)/%reldir%/test_cmds.sh_2a449c0a43e895e85c8b1c9547f32d7b5b4f84f6.out \ + $(srcdir)/%reldir%/test_cmds.sh_2a535de164de4c060d2bff34aa7cc75ac7cac2c2.err \ + $(srcdir)/%reldir%/test_cmds.sh_2a535de164de4c060d2bff34aa7cc75ac7cac2c2.out \ + $(srcdir)/%reldir%/test_cmds.sh_2cd167954a3be3e130e5f9601b72794a856cef92.err \ + $(srcdir)/%reldir%/test_cmds.sh_2cd167954a3be3e130e5f9601b72794a856cef92.out \ + $(srcdir)/%reldir%/test_cmds.sh_2de9ec294e2f533d13e04c70d9525f8b58d47bb2.err \ + $(srcdir)/%reldir%/test_cmds.sh_2de9ec294e2f533d13e04c70d9525f8b58d47bb2.out \ + $(srcdir)/%reldir%/test_cmds.sh_2e123104cdd2087ac40731a0aa533ba6a87ea744.err \ + $(srcdir)/%reldir%/test_cmds.sh_2e123104cdd2087ac40731a0aa533ba6a87ea744.out \ + $(srcdir)/%reldir%/test_cmds.sh_2e67bdbbc9a14aa772b2a9f755ed8f8124708558.err \ + $(srcdir)/%reldir%/test_cmds.sh_2e67bdbbc9a14aa772b2a9f755ed8f8124708558.out \ + $(srcdir)/%reldir%/test_cmds.sh_2ff0fe712c9b0012e42282c5f77b0b83cad37ddf.err \ + $(srcdir)/%reldir%/test_cmds.sh_2ff0fe712c9b0012e42282c5f77b0b83cad37ddf.out \ + $(srcdir)/%reldir%/test_cmds.sh_305b1dfdfe785b945df4220aad6671ae1d364f55.err \ + $(srcdir)/%reldir%/test_cmds.sh_305b1dfdfe785b945df4220aad6671ae1d364f55.out \ + $(srcdir)/%reldir%/test_cmds.sh_3429080ed14d01c6a887900186f37750df0d5ff0.err \ + $(srcdir)/%reldir%/test_cmds.sh_3429080ed14d01c6a887900186f37750df0d5ff0.out \ + $(srcdir)/%reldir%/test_cmds.sh_34a6bcaa2877471b8ea718374101fa9ce3b78235.err \ + $(srcdir)/%reldir%/test_cmds.sh_34a6bcaa2877471b8ea718374101fa9ce3b78235.out \ + $(srcdir)/%reldir%/test_cmds.sh_35b0dd8a030396742bc5acfde7715fb19f312f29.err \ + $(srcdir)/%reldir%/test_cmds.sh_35b0dd8a030396742bc5acfde7715fb19f312f29.out \ + $(srcdir)/%reldir%/test_cmds.sh_36800217930a6a30e68c4efb20f6959c4f71aeb0.err \ + $(srcdir)/%reldir%/test_cmds.sh_36800217930a6a30e68c4efb20f6959c4f71aeb0.out \ + $(srcdir)/%reldir%/test_cmds.sh_38fa2a95b703d4ce12e82882eca1938264822690.err \ + $(srcdir)/%reldir%/test_cmds.sh_38fa2a95b703d4ce12e82882eca1938264822690.out \ + $(srcdir)/%reldir%/test_cmds.sh_3b20a298e2c059d7f6045cbc0c07ca3db3917695.err \ + $(srcdir)/%reldir%/test_cmds.sh_3b20a298e2c059d7f6045cbc0c07ca3db3917695.out \ + $(srcdir)/%reldir%/test_cmds.sh_453054e29aaca4c2662c45c2a1f2f63f3510d8dd.err \ + $(srcdir)/%reldir%/test_cmds.sh_453054e29aaca4c2662c45c2a1f2f63f3510d8dd.out \ + $(srcdir)/%reldir%/test_cmds.sh_4b2d91b19008d5b775090e3ef87c111f9e603b15.err \ + $(srcdir)/%reldir%/test_cmds.sh_4b2d91b19008d5b775090e3ef87c111f9e603b15.out \ + $(srcdir)/%reldir%/test_cmds.sh_4dbe20c11056a07d2c7efb5ed15903050d628216.err \ + $(srcdir)/%reldir%/test_cmds.sh_4dbe20c11056a07d2c7efb5ed15903050d628216.out \ + $(srcdir)/%reldir%/test_cmds.sh_4f06183ed231669965965f5042fbbb507fa7deab.err \ + $(srcdir)/%reldir%/test_cmds.sh_4f06183ed231669965965f5042fbbb507fa7deab.out \ + $(srcdir)/%reldir%/test_cmds.sh_512872aebaae73ca4f33fa93acb2f4e3b018f8b4.err \ + $(srcdir)/%reldir%/test_cmds.sh_512872aebaae73ca4f33fa93acb2f4e3b018f8b4.out \ + $(srcdir)/%reldir%/test_cmds.sh_53a9686102f69b07b034df291f554a00b265ed20.err \ + $(srcdir)/%reldir%/test_cmds.sh_53a9686102f69b07b034df291f554a00b265ed20.out \ + $(srcdir)/%reldir%/test_cmds.sh_55c2fd15ec2c7d96dbef7b36a42a1b7b42f90dbc.err \ + $(srcdir)/%reldir%/test_cmds.sh_55c2fd15ec2c7d96dbef7b36a42a1b7b42f90dbc.out \ + $(srcdir)/%reldir%/test_cmds.sh_5bfd08c1639701476d7b9348c36afd46fdbe6f2a.err \ + $(srcdir)/%reldir%/test_cmds.sh_5bfd08c1639701476d7b9348c36afd46fdbe6f2a.out \ + $(srcdir)/%reldir%/test_cmds.sh_624a41e152675575f4b07c19b2cf0e3a028429a2.err \ + $(srcdir)/%reldir%/test_cmds.sh_624a41e152675575f4b07c19b2cf0e3a028429a2.out \ + $(srcdir)/%reldir%/test_cmds.sh_62d68c0a11757c996f24c8f003e6b4059c3e30b2.err \ + $(srcdir)/%reldir%/test_cmds.sh_62d68c0a11757c996f24c8f003e6b4059c3e30b2.out \ + $(srcdir)/%reldir%/test_cmds.sh_661ec61acdd8f6fa6ec1e3c2cf5f896eef431351.err \ + $(srcdir)/%reldir%/test_cmds.sh_661ec61acdd8f6fa6ec1e3c2cf5f896eef431351.out \ + $(srcdir)/%reldir%/test_cmds.sh_6a6031113aca32fabc5a3da64b7be46f5ce5a312.err \ + $(srcdir)/%reldir%/test_cmds.sh_6a6031113aca32fabc5a3da64b7be46f5ce5a312.out \ + $(srcdir)/%reldir%/test_cmds.sh_6e016c0ed61fc652be1a79b864875ffede64f281.err \ + $(srcdir)/%reldir%/test_cmds.sh_6e016c0ed61fc652be1a79b864875ffede64f281.out \ + $(srcdir)/%reldir%/test_cmds.sh_7270e37dab4549cfa7c5232451c031e1e04b4aef.err \ + $(srcdir)/%reldir%/test_cmds.sh_7270e37dab4549cfa7c5232451c031e1e04b4aef.out \ + $(srcdir)/%reldir%/test_cmds.sh_73ea99c84fb1d4570e8bcd45c423b4a28fe41e81.err \ + $(srcdir)/%reldir%/test_cmds.sh_73ea99c84fb1d4570e8bcd45c423b4a28fe41e81.out \ + $(srcdir)/%reldir%/test_cmds.sh_7cb644890c4b945ff3f1e15c86a58c85cb5425c0.err \ + $(srcdir)/%reldir%/test_cmds.sh_7cb644890c4b945ff3f1e15c86a58c85cb5425c0.out \ + $(srcdir)/%reldir%/test_cmds.sh_7e14e7f18219719453838835fa96c3451f78996d.err \ + $(srcdir)/%reldir%/test_cmds.sh_7e14e7f18219719453838835fa96c3451f78996d.out \ + $(srcdir)/%reldir%/test_cmds.sh_819b3dd21348f7242f3914ad0a8c5b1cdb3f91af.err \ + $(srcdir)/%reldir%/test_cmds.sh_819b3dd21348f7242f3914ad0a8c5b1cdb3f91af.out \ + $(srcdir)/%reldir%/test_cmds.sh_8298805f897346b4bb0f14e53c06b4fa28e309e3.err \ + $(srcdir)/%reldir%/test_cmds.sh_8298805f897346b4bb0f14e53c06b4fa28e309e3.out \ + $(srcdir)/%reldir%/test_cmds.sh_83654557317602d2e00adde1e5cba190d9db0dff.err \ + $(srcdir)/%reldir%/test_cmds.sh_83654557317602d2e00adde1e5cba190d9db0dff.out \ + $(srcdir)/%reldir%/test_cmds.sh_85ae6ac1eb9a8378f7a6c39659f52671218ce64b.err \ + $(srcdir)/%reldir%/test_cmds.sh_85ae6ac1eb9a8378f7a6c39659f52671218ce64b.out \ + $(srcdir)/%reldir%/test_cmds.sh_85ed177028f226e86b1d164eb1a4e18eaf036c9d.err \ + $(srcdir)/%reldir%/test_cmds.sh_85ed177028f226e86b1d164eb1a4e18eaf036c9d.out \ + $(srcdir)/%reldir%/test_cmds.sh_8758082427d6232a15053433942a4b5ad9f2e3ce.err \ + $(srcdir)/%reldir%/test_cmds.sh_8758082427d6232a15053433942a4b5ad9f2e3ce.out \ + $(srcdir)/%reldir%/test_cmds.sh_876116da8ab46c0c8a212ce230d1b8a13970f78f.err \ + $(srcdir)/%reldir%/test_cmds.sh_876116da8ab46c0c8a212ce230d1b8a13970f78f.out \ + $(srcdir)/%reldir%/test_cmds.sh_8765cbf326648e9014f8cf5f761895010fff443a.err \ + $(srcdir)/%reldir%/test_cmds.sh_8765cbf326648e9014f8cf5f761895010fff443a.out \ + $(srcdir)/%reldir%/test_cmds.sh_89afa826d1b33be6926df48443faa1d1c5f285a7.err \ + $(srcdir)/%reldir%/test_cmds.sh_89afa826d1b33be6926df48443faa1d1c5f285a7.out \ + $(srcdir)/%reldir%/test_cmds.sh_8d5b43c693e78804a8fb06989392fa8cccb46b7b.err \ + $(srcdir)/%reldir%/test_cmds.sh_8d5b43c693e78804a8fb06989392fa8cccb46b7b.out \ + $(srcdir)/%reldir%/test_cmds.sh_9445861db011dfa2d21a44788047de345ee291e8.err \ + $(srcdir)/%reldir%/test_cmds.sh_9445861db011dfa2d21a44788047de345ee291e8.out \ + $(srcdir)/%reldir%/test_cmds.sh_95beaabe41d72cf4c6810e79c623da759ac1c71b.err \ + $(srcdir)/%reldir%/test_cmds.sh_95beaabe41d72cf4c6810e79c623da759ac1c71b.out \ + $(srcdir)/%reldir%/test_cmds.sh_968dac54dc80d91a5da2322890c6c26dfa0d8462.err \ + $(srcdir)/%reldir%/test_cmds.sh_968dac54dc80d91a5da2322890c6c26dfa0d8462.out \ + $(srcdir)/%reldir%/test_cmds.sh_a00943ef715598c7554b85de8502454e41bb9e28.err \ + $(srcdir)/%reldir%/test_cmds.sh_a00943ef715598c7554b85de8502454e41bb9e28.out \ + $(srcdir)/%reldir%/test_cmds.sh_a1123427c31c022433d66d05ee5d5e1c8ab415e4.err \ + $(srcdir)/%reldir%/test_cmds.sh_a1123427c31c022433d66d05ee5d5e1c8ab415e4.out \ + $(srcdir)/%reldir%/test_cmds.sh_a190bfc279fa046a823864f1484f899d27d22953.err \ + $(srcdir)/%reldir%/test_cmds.sh_a190bfc279fa046a823864f1484f899d27d22953.out \ + $(srcdir)/%reldir%/test_cmds.sh_a5742238bad948b1372d32f7a491f03fa4e8b711.err \ + $(srcdir)/%reldir%/test_cmds.sh_a5742238bad948b1372d32f7a491f03fa4e8b711.out \ + $(srcdir)/%reldir%/test_cmds.sh_a6c431f2871ea96cfdf4e11465b3bca543c7b678.err \ + $(srcdir)/%reldir%/test_cmds.sh_a6c431f2871ea96cfdf4e11465b3bca543c7b678.out \ + $(srcdir)/%reldir%/test_cmds.sh_a8006c4169d76baecd99a0699c2fc66a583ad676.err \ + $(srcdir)/%reldir%/test_cmds.sh_a8006c4169d76baecd99a0699c2fc66a583ad676.out \ + $(srcdir)/%reldir%/test_cmds.sh_ac45fb0f8f9578c3ded0855f694698ec38ce31ad.err \ + $(srcdir)/%reldir%/test_cmds.sh_ac45fb0f8f9578c3ded0855f694698ec38ce31ad.out \ + $(srcdir)/%reldir%/test_cmds.sh_af0fcbd30b3fd0d13477aa3325ef0302052a4d9f.err \ + $(srcdir)/%reldir%/test_cmds.sh_af0fcbd30b3fd0d13477aa3325ef0302052a4d9f.out \ + $(srcdir)/%reldir%/test_cmds.sh_b5a530d16c982cf769151291f0bfd612ea71183f.err \ + $(srcdir)/%reldir%/test_cmds.sh_b5a530d16c982cf769151291f0bfd612ea71183f.out \ + $(srcdir)/%reldir%/test_cmds.sh_b6a3bb78e9d60e5e1f5ce5b18e40d2f1662707ab.err \ + $(srcdir)/%reldir%/test_cmds.sh_b6a3bb78e9d60e5e1f5ce5b18e40d2f1662707ab.out \ + $(srcdir)/%reldir%/test_cmds.sh_b755a8b48c0f602f0270500b0117b76e11db546e.err \ + $(srcdir)/%reldir%/test_cmds.sh_b755a8b48c0f602f0270500b0117b76e11db546e.out \ + $(srcdir)/%reldir%/test_cmds.sh_b7fcd26c45c850c3d43ce25b1f610a311eb898c5.err \ + $(srcdir)/%reldir%/test_cmds.sh_b7fcd26c45c850c3d43ce25b1f610a311eb898c5.out \ + $(srcdir)/%reldir%/test_cmds.sh_b9f8bf53ec2736432eb048d94a391175eb4dc5bf.err \ + $(srcdir)/%reldir%/test_cmds.sh_b9f8bf53ec2736432eb048d94a391175eb4dc5bf.out \ + $(srcdir)/%reldir%/test_cmds.sh_bc60341827636715c14c562863da9733cbde7e68.err \ + $(srcdir)/%reldir%/test_cmds.sh_bc60341827636715c14c562863da9733cbde7e68.out \ + $(srcdir)/%reldir%/test_cmds.sh_be1d9628fc447b6f17121d9457ea1602afe8f3f3.err \ + $(srcdir)/%reldir%/test_cmds.sh_be1d9628fc447b6f17121d9457ea1602afe8f3f3.out \ + $(srcdir)/%reldir%/test_cmds.sh_be3b7c5874b5f4d86cc230bd2f9802c98909e148.err \ + $(srcdir)/%reldir%/test_cmds.sh_be3b7c5874b5f4d86cc230bd2f9802c98909e148.out \ + $(srcdir)/%reldir%/test_cmds.sh_bf4e7fad67e281beaa11b6e2b03a00b419c7c9b0.err \ + $(srcdir)/%reldir%/test_cmds.sh_bf4e7fad67e281beaa11b6e2b03a00b419c7c9b0.out \ + $(srcdir)/%reldir%/test_cmds.sh_c01e10f7cae8d36fa79ae03be887cb5477025f6d.err \ + $(srcdir)/%reldir%/test_cmds.sh_c01e10f7cae8d36fa79ae03be887cb5477025f6d.out \ + $(srcdir)/%reldir%/test_cmds.sh_c2b4431dd0cc36c6201d263b727b3305e8cda6b1.err \ + $(srcdir)/%reldir%/test_cmds.sh_c2b4431dd0cc36c6201d263b727b3305e8cda6b1.out \ + $(srcdir)/%reldir%/test_cmds.sh_c4777849c39a6c34dea5b0279cd7400692f1ab5f.err \ + $(srcdir)/%reldir%/test_cmds.sh_c4777849c39a6c34dea5b0279cd7400692f1ab5f.out \ + $(srcdir)/%reldir%/test_cmds.sh_c4a15771f7e1487bf73b2e9d1564ad8ecfd76c7e.err \ + $(srcdir)/%reldir%/test_cmds.sh_c4a15771f7e1487bf73b2e9d1564ad8ecfd76c7e.out \ + $(srcdir)/%reldir%/test_cmds.sh_c72aed622c19d493968e33f20d5dde3838a4258f.err \ + $(srcdir)/%reldir%/test_cmds.sh_c72aed622c19d493968e33f20d5dde3838a4258f.out \ + $(srcdir)/%reldir%/test_cmds.sh_c7fabc25374ff47c47931f63b1d697061b816a28.err \ + $(srcdir)/%reldir%/test_cmds.sh_c7fabc25374ff47c47931f63b1d697061b816a28.out \ + $(srcdir)/%reldir%/test_cmds.sh_ca66660c973f76a3c2a147c7f5035bcb4e8a8bbc.err \ + $(srcdir)/%reldir%/test_cmds.sh_ca66660c973f76a3c2a147c7f5035bcb4e8a8bbc.out \ + $(srcdir)/%reldir%/test_cmds.sh_ccd326da92d1cacda63501cd1a3077381a18e8f2.err \ + $(srcdir)/%reldir%/test_cmds.sh_ccd326da92d1cacda63501cd1a3077381a18e8f2.out \ + $(srcdir)/%reldir%/test_cmds.sh_d3b69abdfb39e4bfa5828c2f9593e2b2b7ed4d5d.err \ + $(srcdir)/%reldir%/test_cmds.sh_d3b69abdfb39e4bfa5828c2f9593e2b2b7ed4d5d.out \ + $(srcdir)/%reldir%/test_cmds.sh_d76d77ad95b9f120825417a6a8220c13df9541fc.err \ + $(srcdir)/%reldir%/test_cmds.sh_d76d77ad95b9f120825417a6a8220c13df9541fc.out \ + $(srcdir)/%reldir%/test_cmds.sh_d7eebacdcf2cb194f25fa4ef97b7b5376b442467.err \ + $(srcdir)/%reldir%/test_cmds.sh_d7eebacdcf2cb194f25fa4ef97b7b5376b442467.out \ + $(srcdir)/%reldir%/test_cmds.sh_d836c84398c831c976df46f46fe3bf5983c44c37.err \ + $(srcdir)/%reldir%/test_cmds.sh_d836c84398c831c976df46f46fe3bf5983c44c37.out \ + $(srcdir)/%reldir%/test_cmds.sh_d8eeef53a58bdeddbc1028d7c525413e3ca1c8df.err \ + $(srcdir)/%reldir%/test_cmds.sh_d8eeef53a58bdeddbc1028d7c525413e3ca1c8df.out \ + $(srcdir)/%reldir%/test_cmds.sh_dbdd62995fdefc8318053af05a32416eccfa79fc.err \ + $(srcdir)/%reldir%/test_cmds.sh_dbdd62995fdefc8318053af05a32416eccfa79fc.out \ + $(srcdir)/%reldir%/test_cmds.sh_dd41fbbcd71699314af232156d4155fbdf849131.err \ + $(srcdir)/%reldir%/test_cmds.sh_dd41fbbcd71699314af232156d4155fbdf849131.out \ + $(srcdir)/%reldir%/test_cmds.sh_df6f4cea16bb8f20e6408fe4b40335e6de8a7f18.err \ + $(srcdir)/%reldir%/test_cmds.sh_df6f4cea16bb8f20e6408fe4b40335e6de8a7f18.out \ + $(srcdir)/%reldir%/test_cmds.sh_e495cf059477e3f80c3241c6f8d5808b6f1d19c7.err \ + $(srcdir)/%reldir%/test_cmds.sh_e495cf059477e3f80c3241c6f8d5808b6f1d19c7.out \ + $(srcdir)/%reldir%/test_cmds.sh_e7e8244fac65bc51dbd5af31be476fe3b8776bfc.err \ + $(srcdir)/%reldir%/test_cmds.sh_e7e8244fac65bc51dbd5af31be476fe3b8776bfc.out \ + $(srcdir)/%reldir%/test_cmds.sh_e911aebcb2defb7471aa620c45a86cad449ad505.err \ + $(srcdir)/%reldir%/test_cmds.sh_e911aebcb2defb7471aa620c45a86cad449ad505.out \ + $(srcdir)/%reldir%/test_cmds.sh_eb22c3e94c536a1bfaeae0c40d271b5b4b08f4fc.err \ + $(srcdir)/%reldir%/test_cmds.sh_eb22c3e94c536a1bfaeae0c40d271b5b4b08f4fc.out \ + $(srcdir)/%reldir%/test_cmds.sh_ec2b28c6ea328e3ea56b13ab8ca3d9ee856a9dda.err \ + $(srcdir)/%reldir%/test_cmds.sh_ec2b28c6ea328e3ea56b13ab8ca3d9ee856a9dda.out \ + $(srcdir)/%reldir%/test_cmds.sh_ed5b73be0b991e0e8d6735e31df5b37c4286321b.err \ + $(srcdir)/%reldir%/test_cmds.sh_ed5b73be0b991e0e8d6735e31df5b37c4286321b.out \ + $(srcdir)/%reldir%/test_cmds.sh_f788d5f5932905d09ecbd581040ec5ce76459da5.err \ + $(srcdir)/%reldir%/test_cmds.sh_f788d5f5932905d09ecbd581040ec5ce76459da5.out \ + $(srcdir)/%reldir%/test_cmds.sh_ff6faebbde8586e04bfadba14a3d2bb4451784ad.err \ + $(srcdir)/%reldir%/test_cmds.sh_ff6faebbde8586e04bfadba14a3d2bb4451784ad.out \ + $(srcdir)/%reldir%/test_config.sh_2765ea0d4c037b8c935840604edb0ae796c97a04.err \ + $(srcdir)/%reldir%/test_config.sh_2765ea0d4c037b8c935840604edb0ae796c97a04.out \ + $(srcdir)/%reldir%/test_config.sh_5fd9fbccc35e9b06abdd913da0c16bdb306b926e.err \ + $(srcdir)/%reldir%/test_config.sh_5fd9fbccc35e9b06abdd913da0c16bdb306b926e.out \ + $(srcdir)/%reldir%/test_config.sh_a0907769aba112d628e7ebe39c4ec252e5e0bc69.err \ + $(srcdir)/%reldir%/test_config.sh_a0907769aba112d628e7ebe39c4ec252e5e0bc69.out \ + $(srcdir)/%reldir%/test_config.sh_b08f7523659d1c12f0e59920cd40d17d4a83b72f.err \ + $(srcdir)/%reldir%/test_config.sh_b08f7523659d1c12f0e59920cd40d17d4a83b72f.out \ + $(srcdir)/%reldir%/test_config.sh_d622658dc98327b1b2fd346802d24bc633e34ac7.err \ + $(srcdir)/%reldir%/test_config.sh_d622658dc98327b1b2fd346802d24bc633e34ac7.out \ + $(srcdir)/%reldir%/test_config.sh_d708b6fd32d83ce0ee00ca5383388308ba5a06e1.err \ + $(srcdir)/%reldir%/test_config.sh_d708b6fd32d83ce0ee00ca5383388308ba5a06e1.out \ + $(srcdir)/%reldir%/test_config.sh_eec3768ebc201ca63bca1411270965f78db1abfc.err \ + $(srcdir)/%reldir%/test_config.sh_eec3768ebc201ca63bca1411270965f78db1abfc.out \ + $(srcdir)/%reldir%/test_events.sh_09ba47d70bfca88e89faf29598c1095292cad435.err \ + $(srcdir)/%reldir%/test_events.sh_09ba47d70bfca88e89faf29598c1095292cad435.out \ + $(srcdir)/%reldir%/test_events.sh_153e221f3cb50f4d3e4581be0bf311e62489c42d.err \ + $(srcdir)/%reldir%/test_events.sh_153e221f3cb50f4d3e4581be0bf311e62489c42d.out \ + $(srcdir)/%reldir%/test_events.sh_3dae146ef3bf201c43656344803694a34a3dbfec.err \ + $(srcdir)/%reldir%/test_events.sh_3dae146ef3bf201c43656344803694a34a3dbfec.out \ + $(srcdir)/%reldir%/test_events.sh_6f9523d43f174397829b6a7fe6ee0090d97df5f9.err \ + $(srcdir)/%reldir%/test_events.sh_6f9523d43f174397829b6a7fe6ee0090d97df5f9.out \ + $(srcdir)/%reldir%/test_events.sh_729f77b8e7136d64d22a6610a80ba6b584a2d896.err \ + $(srcdir)/%reldir%/test_events.sh_729f77b8e7136d64d22a6610a80ba6b584a2d896.out \ + $(srcdir)/%reldir%/test_events.sh_d9c7907f907b2335e1328b23fdc46d0968a608d9.err \ + $(srcdir)/%reldir%/test_events.sh_d9c7907f907b2335e1328b23fdc46d0968a608d9.out \ + $(srcdir)/%reldir%/test_events.sh_ed8dc44add223341c03ccb7b3e18371bdb42b710.err \ + $(srcdir)/%reldir%/test_events.sh_ed8dc44add223341c03ccb7b3e18371bdb42b710.out \ + $(srcdir)/%reldir%/test_format_loader.sh_15e861d2327512a721fd42ae51dc5427689e0bb6.err \ + $(srcdir)/%reldir%/test_format_loader.sh_15e861d2327512a721fd42ae51dc5427689e0bb6.out \ + $(srcdir)/%reldir%/test_format_loader.sh_5992e2695b7e6cf1f3520dbb87af8fc2b8f27088.err \ + $(srcdir)/%reldir%/test_format_loader.sh_5992e2695b7e6cf1f3520dbb87af8fc2b8f27088.out \ + $(srcdir)/%reldir%/test_format_loader.sh_fca6c1fb9f3aaa69b3ffb2d1a8a86434b2f4a247.err \ + $(srcdir)/%reldir%/test_format_loader.sh_fca6c1fb9f3aaa69b3ffb2d1a8a86434b2f4a247.out \ + $(srcdir)/%reldir%/test_json_format.sh_168cac40c27f547044c89d39eb0ff2ef81da4b21.err \ + $(srcdir)/%reldir%/test_json_format.sh_168cac40c27f547044c89d39eb0ff2ef81da4b21.out \ + $(srcdir)/%reldir%/test_json_format.sh_1bb0fd243e916546aea22029245ac590dae17a86.err \ + $(srcdir)/%reldir%/test_json_format.sh_1bb0fd243e916546aea22029245ac590dae17a86.out \ + $(srcdir)/%reldir%/test_json_format.sh_40223ac4742883f883ccc61044bfffd6e102cca6.err \ + $(srcdir)/%reldir%/test_json_format.sh_40223ac4742883f883ccc61044bfffd6e102cca6.out \ + $(srcdir)/%reldir%/test_json_format.sh_4315a3d6124c14cbe3c474b6dbf4cc8720a9859f.err \ + $(srcdir)/%reldir%/test_json_format.sh_4315a3d6124c14cbe3c474b6dbf4cc8720a9859f.out \ + $(srcdir)/%reldir%/test_json_format.sh_469f005b0708d629bc95f0c48a5e390f440c1fef.err \ + $(srcdir)/%reldir%/test_json_format.sh_469f005b0708d629bc95f0c48a5e390f440c1fef.out \ + $(srcdir)/%reldir%/test_json_format.sh_6fbe20faa161ab9fa77df7568fff84bf3e47e920.err \ + $(srcdir)/%reldir%/test_json_format.sh_6fbe20faa161ab9fa77df7568fff84bf3e47e920.out \ + $(srcdir)/%reldir%/test_json_format.sh_7724d1a96d74d4418dd44d7416270f9bb64b2564.err \ + $(srcdir)/%reldir%/test_json_format.sh_7724d1a96d74d4418dd44d7416270f9bb64b2564.out \ + $(srcdir)/%reldir%/test_json_format.sh_7aade92cff911c5b3cfc733685809f949ae35778.err \ + $(srcdir)/%reldir%/test_json_format.sh_7aade92cff911c5b3cfc733685809f949ae35778.out \ + $(srcdir)/%reldir%/test_json_format.sh_7c6529f6bf4a0cb565f5665fdcba032f0ae1ebbe.err \ + $(srcdir)/%reldir%/test_json_format.sh_7c6529f6bf4a0cb565f5665fdcba032f0ae1ebbe.out \ + $(srcdir)/%reldir%/test_json_format.sh_80959e2bb6a7fdf938c2e4dbd7d7c81eb84fa072.err \ + $(srcdir)/%reldir%/test_json_format.sh_80959e2bb6a7fdf938c2e4dbd7d7c81eb84fa072.out \ + $(srcdir)/%reldir%/test_json_format.sh_84a71e94dc34661a70bb9015b67ba00e93e9cfb5.err \ + $(srcdir)/%reldir%/test_json_format.sh_84a71e94dc34661a70bb9015b67ba00e93e9cfb5.out \ + $(srcdir)/%reldir%/test_json_format.sh_85d03b1b41a7f819af135d2521a8f2c59418e907.err \ + $(srcdir)/%reldir%/test_json_format.sh_85d03b1b41a7f819af135d2521a8f2c59418e907.out \ + $(srcdir)/%reldir%/test_json_format.sh_8f2ebcd319afc7966ef11e31f9dd646bf6f001dd.err \ + $(srcdir)/%reldir%/test_json_format.sh_8f2ebcd319afc7966ef11e31f9dd646bf6f001dd.out \ + $(srcdir)/%reldir%/test_json_format.sh_952297a90e312d2184fe3e4df795ddc731b096c9.err \ + $(srcdir)/%reldir%/test_json_format.sh_952297a90e312d2184fe3e4df795ddc731b096c9.out \ + $(srcdir)/%reldir%/test_json_format.sh_989e52d167582648b73c5d025cc0e814c642b3c8.err \ + $(srcdir)/%reldir%/test_json_format.sh_989e52d167582648b73c5d025cc0e814c642b3c8.out \ + $(srcdir)/%reldir%/test_json_format.sh_a06b3cdd46b387e72d6faa4cce648b8b11ae870b.err \ + $(srcdir)/%reldir%/test_json_format.sh_a06b3cdd46b387e72d6faa4cce648b8b11ae870b.out \ + $(srcdir)/%reldir%/test_json_format.sh_c1a23804c39b0f74642286d69865ee9d0961a58a.err \ + $(srcdir)/%reldir%/test_json_format.sh_c1a23804c39b0f74642286d69865ee9d0961a58a.out \ + $(srcdir)/%reldir%/test_json_format.sh_c60050b3469f37c5b0864e1dc7eb354e91d6ec81.err \ + $(srcdir)/%reldir%/test_json_format.sh_c60050b3469f37c5b0864e1dc7eb354e91d6ec81.out \ + $(srcdir)/%reldir%/test_json_format.sh_d0ec34389274affb70a5a76ba4789d51fd60f602.err \ + $(srcdir)/%reldir%/test_json_format.sh_d0ec34389274affb70a5a76ba4789d51fd60f602.out \ + $(srcdir)/%reldir%/test_json_format.sh_d7362cffc8335c2fe6b6527315de59bd6f5dcc7f.err \ + $(srcdir)/%reldir%/test_json_format.sh_d7362cffc8335c2fe6b6527315de59bd6f5dcc7f.out \ + $(srcdir)/%reldir%/test_json_format.sh_dfff27a651650a04d93de9a06ab5480e94ce3a79.err \ + $(srcdir)/%reldir%/test_json_format.sh_dfff27a651650a04d93de9a06ab5480e94ce3a79.out \ + $(srcdir)/%reldir%/test_json_format.sh_fe19b7ebd349cd689b3f5c22618eab5ce995e68e.err \ + $(srcdir)/%reldir%/test_json_format.sh_fe19b7ebd349cd689b3f5c22618eab5ce995e68e.out \ + $(srcdir)/%reldir%/test_logfile.sh_08d731a04c877a34819b35de185e30a74c9fd497.err \ + $(srcdir)/%reldir%/test_logfile.sh_08d731a04c877a34819b35de185e30a74c9fd497.out \ + $(srcdir)/%reldir%/test_logfile.sh_09bd16e044302f6b121092534708594bdad11b5a.err \ + $(srcdir)/%reldir%/test_logfile.sh_09bd16e044302f6b121092534708594bdad11b5a.out \ + $(srcdir)/%reldir%/test_logfile.sh_1c6eee38f66356fcd9a9f0faedaea6dbcc901060.err \ + $(srcdir)/%reldir%/test_logfile.sh_1c6eee38f66356fcd9a9f0faedaea6dbcc901060.out \ + $(srcdir)/%reldir%/test_logfile.sh_218ecb88b4753010c4264b3ac351260b4811612f.err \ + $(srcdir)/%reldir%/test_logfile.sh_218ecb88b4753010c4264b3ac351260b4811612f.out \ + $(srcdir)/%reldir%/test_logfile.sh_290a3c49e53c2229a7400c107338fa0bb38375e2.err \ + $(srcdir)/%reldir%/test_logfile.sh_290a3c49e53c2229a7400c107338fa0bb38375e2.out \ + $(srcdir)/%reldir%/test_logfile.sh_3fc6bfd8a6160817211f3e14fde957af75b9dbe7.err \ + $(srcdir)/%reldir%/test_logfile.sh_3fc6bfd8a6160817211f3e14fde957af75b9dbe7.out \ + $(srcdir)/%reldir%/test_logfile.sh_4a2a907fcb069b8d6e65961a7b2e796d6c3a87b1.err \ + $(srcdir)/%reldir%/test_logfile.sh_4a2a907fcb069b8d6e65961a7b2e796d6c3a87b1.out \ + $(srcdir)/%reldir%/test_logfile.sh_6602faf7817c494c33e32da7ee95f13aa9210d01.err \ + $(srcdir)/%reldir%/test_logfile.sh_6602faf7817c494c33e32da7ee95f13aa9210d01.out \ + $(srcdir)/%reldir%/test_logfile.sh_7c2e11488bccc59458b5775db4b90de964858259.err \ + $(srcdir)/%reldir%/test_logfile.sh_7c2e11488bccc59458b5775db4b90de964858259.out \ + $(srcdir)/%reldir%/test_logfile.sh_a7037efd0c4bbf51940137a44e57d94e9307e83e.err \ + $(srcdir)/%reldir%/test_logfile.sh_a7037efd0c4bbf51940137a44e57d94e9307e83e.out \ + $(srcdir)/%reldir%/test_logfile.sh_c18e14a26d8261c9f72747118a469266121d5459.err \ + $(srcdir)/%reldir%/test_logfile.sh_c18e14a26d8261c9f72747118a469266121d5459.out \ + $(srcdir)/%reldir%/test_logfile.sh_e840b674cd65936a72bd64b1dac1524d16fe44c3.err \ + $(srcdir)/%reldir%/test_logfile.sh_e840b674cd65936a72bd64b1dac1524d16fe44c3.out \ + $(srcdir)/%reldir%/test_meta.sh_154047fb52e4831aabf7d36512247bad6a6a2cf7.err \ + $(srcdir)/%reldir%/test_meta.sh_154047fb52e4831aabf7d36512247bad6a6a2cf7.out \ + $(srcdir)/%reldir%/test_meta.sh_3c9b5940f7533c5fc3d4956a6efce50a9e7132d4.err \ + $(srcdir)/%reldir%/test_meta.sh_3c9b5940f7533c5fc3d4956a6efce50a9e7132d4.out \ + $(srcdir)/%reldir%/test_meta.sh_41f643bb4f720130625b042563e9591bee4ae588.err \ + $(srcdir)/%reldir%/test_meta.sh_41f643bb4f720130625b042563e9591bee4ae588.out \ + $(srcdir)/%reldir%/test_meta.sh_45ff39a3d0ac0ca0c95aaca14d043450cec1cedd.err \ + $(srcdir)/%reldir%/test_meta.sh_45ff39a3d0ac0ca0c95aaca14d043450cec1cedd.out \ + $(srcdir)/%reldir%/test_meta.sh_48e85ba0c0945a5085fb4ee255771406061a9c17.err \ + $(srcdir)/%reldir%/test_meta.sh_48e85ba0c0945a5085fb4ee255771406061a9c17.out \ + $(srcdir)/%reldir%/test_meta.sh_4c39b356748c67ccf8a6027a1af88da532f8252a.err \ + $(srcdir)/%reldir%/test_meta.sh_4c39b356748c67ccf8a6027a1af88da532f8252a.out \ + $(srcdir)/%reldir%/test_meta.sh_7b75763926d832bf9784ca234a060859770aabe7.err \ + $(srcdir)/%reldir%/test_meta.sh_7b75763926d832bf9784ca234a060859770aabe7.out \ + $(srcdir)/%reldir%/test_meta.sh_811b1a8a176b25001a89e35b295a1117ab76969b.err \ + $(srcdir)/%reldir%/test_meta.sh_811b1a8a176b25001a89e35b295a1117ab76969b.out \ + $(srcdir)/%reldir%/test_meta.sh_83ac877aa9d38b25945cf96d6326a2468187c40f.err \ + $(srcdir)/%reldir%/test_meta.sh_83ac877aa9d38b25945cf96d6326a2468187c40f.out \ + $(srcdir)/%reldir%/test_meta.sh_a7489c1f0e001adc732b7e2ab31bb30960fda078.err \ + $(srcdir)/%reldir%/test_meta.sh_a7489c1f0e001adc732b7e2ab31bb30960fda078.out \ + $(srcdir)/%reldir%/test_meta.sh_c063f96398650f130941bbbf4cf63c1244fdbee5.err \ + $(srcdir)/%reldir%/test_meta.sh_c063f96398650f130941bbbf4cf63c1244fdbee5.out \ + $(srcdir)/%reldir%/test_meta.sh_c75128169049bd88d5eaf8b84a7f617e5ae5d936.err \ + $(srcdir)/%reldir%/test_meta.sh_c75128169049bd88d5eaf8b84a7f617e5ae5d936.out \ + $(srcdir)/%reldir%/test_meta.sh_c8fb22932af2467a2651797a8a8d8cddcd09431d.err \ + $(srcdir)/%reldir%/test_meta.sh_c8fb22932af2467a2651797a8a8d8cddcd09431d.out \ + $(srcdir)/%reldir%/test_meta.sh_d6af0b41066ca3be0bbce89c83c011f4ecfa516e.err \ + $(srcdir)/%reldir%/test_meta.sh_d6af0b41066ca3be0bbce89c83c011f4ecfa516e.out \ + $(srcdir)/%reldir%/test_meta.sh_fd09cb565f44a114d8c9a519e571918e30262eaf.err \ + $(srcdir)/%reldir%/test_meta.sh_fd09cb565f44a114d8c9a519e571918e30262eaf.out \ + $(srcdir)/%reldir%/test_meta.sh_fdf4a91aa55262255816dff7d605f1f0a5d6fe92.err \ + $(srcdir)/%reldir%/test_meta.sh_fdf4a91aa55262255816dff7d605f1f0a5d6fe92.out \ + $(srcdir)/%reldir%/test_pretty_print.sh_3c255c3c8b28df9d694b329a265e8b8140dae4a2.err \ + $(srcdir)/%reldir%/test_pretty_print.sh_3c255c3c8b28df9d694b329a265e8b8140dae4a2.out \ + $(srcdir)/%reldir%/test_pretty_print.sh_4111e649fb49c0a377e552fa0b56c60c370633da.err \ + $(srcdir)/%reldir%/test_pretty_print.sh_4111e649fb49c0a377e552fa0b56c60c370633da.out \ + $(srcdir)/%reldir%/test_pretty_print.sh_675a2ff6306df7c54127e39319cf06a2dd353145.err \ + $(srcdir)/%reldir%/test_pretty_print.sh_675a2ff6306df7c54127e39319cf06a2dd353145.out \ + $(srcdir)/%reldir%/test_pretty_print.sh_7192f8f68adb14705c8a60e73ff8248c61c7fd03.err \ + $(srcdir)/%reldir%/test_pretty_print.sh_7192f8f68adb14705c8a60e73ff8248c61c7fd03.out \ + $(srcdir)/%reldir%/test_pretty_print.sh_a5bee322ea3374690e44a88a16cb6b84feaa11d3.err \ + $(srcdir)/%reldir%/test_pretty_print.sh_a5bee322ea3374690e44a88a16cb6b84feaa11d3.out \ + $(srcdir)/%reldir%/test_pretty_print.sh_a6d9042e5e95f2a49194bd80c1eed154813ddf41.err \ + $(srcdir)/%reldir%/test_pretty_print.sh_a6d9042e5e95f2a49194bd80c1eed154813ddf41.out \ + $(srcdir)/%reldir%/test_pretty_print.sh_cd361eeca7e91bfab942b75d6c3422c7a456a111.err \ + $(srcdir)/%reldir%/test_pretty_print.sh_cd361eeca7e91bfab942b75d6c3422c7a456a111.out \ + $(srcdir)/%reldir%/test_pretty_print.sh_f8feb52a321026d9562b271eb37a2c56dfaed329.err \ + $(srcdir)/%reldir%/test_pretty_print.sh_f8feb52a321026d9562b271eb37a2c56dfaed329.out \ + $(srcdir)/%reldir%/test_sessions.sh_0300a1391c33b1c45ddfa90198a6bd0a5404a77f.err \ + $(srcdir)/%reldir%/test_sessions.sh_0300a1391c33b1c45ddfa90198a6bd0a5404a77f.out \ + $(srcdir)/%reldir%/test_sessions.sh_17b85654b929b2a8fc1705a170ced544783292fa.err \ + $(srcdir)/%reldir%/test_sessions.sh_17b85654b929b2a8fc1705a170ced544783292fa.out \ + $(srcdir)/%reldir%/test_sessions.sh_345b0e66dab7b881397c4b38380da81092ab70dd.err \ + $(srcdir)/%reldir%/test_sessions.sh_345b0e66dab7b881397c4b38380da81092ab70dd.out \ + $(srcdir)/%reldir%/test_sessions.sh_430b9522ba1a37983138f3c4935cba91b781e415.err \ + $(srcdir)/%reldir%/test_sessions.sh_430b9522ba1a37983138f3c4935cba91b781e415.out \ + $(srcdir)/%reldir%/test_sessions.sh_4f13dd3858546b6e04a27e244159d355e368f2ae.err \ + $(srcdir)/%reldir%/test_sessions.sh_4f13dd3858546b6e04a27e244159d355e368f2ae.out \ + $(srcdir)/%reldir%/test_sessions.sh_68a89b56c5e7f7db620084cca1eb547cbb19a2c9.err \ + $(srcdir)/%reldir%/test_sessions.sh_68a89b56c5e7f7db620084cca1eb547cbb19a2c9.out \ + $(srcdir)/%reldir%/test_sessions.sh_6d87ff483d5785c58fb271a405ff1c35e4f83cd9.err \ + $(srcdir)/%reldir%/test_sessions.sh_6d87ff483d5785c58fb271a405ff1c35e4f83cd9.out \ + $(srcdir)/%reldir%/test_sessions.sh_858fd0081ed9c46dd81e2f81f1090756f2463558.err \ + $(srcdir)/%reldir%/test_sessions.sh_858fd0081ed9c46dd81e2f81f1090756f2463558.out \ + $(srcdir)/%reldir%/test_sessions.sh_903b41c950f5f90d7786d7a09bb6e2f217654b15.err \ + $(srcdir)/%reldir%/test_sessions.sh_903b41c950f5f90d7786d7a09bb6e2f217654b15.out \ + $(srcdir)/%reldir%/test_sessions.sh_92a98a3e4e3a10bf1f2371d21a8282c5d3d4baa5.err \ + $(srcdir)/%reldir%/test_sessions.sh_92a98a3e4e3a10bf1f2371d21a8282c5d3d4baa5.out \ + $(srcdir)/%reldir%/test_sessions.sh_9978aaa475513f9981840e612f853a7707ffcf90.err \ + $(srcdir)/%reldir%/test_sessions.sh_9978aaa475513f9981840e612f853a7707ffcf90.out \ + $(srcdir)/%reldir%/test_sessions.sh_a92822d121a836140a401fd71535dc4a7a8d5b48.err \ + $(srcdir)/%reldir%/test_sessions.sh_a92822d121a836140a401fd71535dc4a7a8d5b48.out \ + $(srcdir)/%reldir%/test_sessions.sh_b3d71a87fcb4e3487f71ccad8c6ce681db220572.err \ + $(srcdir)/%reldir%/test_sessions.sh_b3d71a87fcb4e3487f71ccad8c6ce681db220572.out \ + $(srcdir)/%reldir%/test_sessions.sh_b932b33dd087b94d4306dd179c5d4f9ddd394960.err \ + $(srcdir)/%reldir%/test_sessions.sh_b932b33dd087b94d4306dd179c5d4f9ddd394960.out \ + $(srcdir)/%reldir%/test_sessions.sh_ddf45811e9906de9f3930fe802ac7b2cc6e48106.err \ + $(srcdir)/%reldir%/test_sessions.sh_ddf45811e9906de9f3930fe802ac7b2cc6e48106.out \ + $(srcdir)/%reldir%/test_shlexer.sh_14dd967cb2af90899c9e5e45d00b676b5a3163aa.err \ + $(srcdir)/%reldir%/test_shlexer.sh_14dd967cb2af90899c9e5e45d00b676b5a3163aa.out \ + $(srcdir)/%reldir%/test_shlexer.sh_2781f5dd570580cbe746ad91b58a28b8371283b3.err \ + $(srcdir)/%reldir%/test_shlexer.sh_2781f5dd570580cbe746ad91b58a28b8371283b3.out \ + $(srcdir)/%reldir%/test_shlexer.sh_2af44d06fc137a77bc230be86376ccad23a2806b.err \ + $(srcdir)/%reldir%/test_shlexer.sh_2af44d06fc137a77bc230be86376ccad23a2806b.out \ + $(srcdir)/%reldir%/test_shlexer.sh_6858e530a8ecb77cbaec1a7507768dd5a1942ac9.err \ + $(srcdir)/%reldir%/test_shlexer.sh_6858e530a8ecb77cbaec1a7507768dd5a1942ac9.out \ + $(srcdir)/%reldir%/test_shlexer.sh_7f31e16ea2469da7a4328c93c7bcc8e109f84d2f.err \ + $(srcdir)/%reldir%/test_shlexer.sh_7f31e16ea2469da7a4328c93c7bcc8e109f84d2f.out \ + $(srcdir)/%reldir%/test_shlexer.sh_8aeebcdef56edd783579eaaddaff7c5cc127bb86.err \ + $(srcdir)/%reldir%/test_shlexer.sh_8aeebcdef56edd783579eaaddaff7c5cc127bb86.out \ + $(srcdir)/%reldir%/test_shlexer.sh_8e9addb0e5b6f4254d81dd89ecf12783109644bb.err \ + $(srcdir)/%reldir%/test_shlexer.sh_8e9addb0e5b6f4254d81dd89ecf12783109644bb.out \ + $(srcdir)/%reldir%/test_shlexer.sh_90961e6728e96d0a44535a6c9907cc990c10316c.err \ + $(srcdir)/%reldir%/test_shlexer.sh_90961e6728e96d0a44535a6c9907cc990c10316c.out \ + $(srcdir)/%reldir%/test_shlexer.sh_95c4e861804a5434900fdb4d67b149d1baa2edf4.err \ + $(srcdir)/%reldir%/test_shlexer.sh_95c4e861804a5434900fdb4d67b149d1baa2edf4.out \ + $(srcdir)/%reldir%/test_shlexer.sh_d7fe5f6b8fc9ba00539fad0fa0bfb08319d8b04b.err \ + $(srcdir)/%reldir%/test_shlexer.sh_d7fe5f6b8fc9ba00539fad0fa0bfb08319d8b04b.out \ + $(srcdir)/%reldir%/test_shlexer.sh_d9d46422a913e3a06ddbd262933ef5352c30e68f.err \ + $(srcdir)/%reldir%/test_shlexer.sh_d9d46422a913e3a06ddbd262933ef5352c30e68f.out \ + $(srcdir)/%reldir%/test_shlexer.sh_e0599f0b53d1bd27af767113853f8e84291f137d.err \ + $(srcdir)/%reldir%/test_shlexer.sh_e0599f0b53d1bd27af767113853f8e84291f137d.out \ + $(srcdir)/%reldir%/test_shlexer.sh_e8fa2239ab17e7563d0c524f5400a79d6ff8bfda.err \ + $(srcdir)/%reldir%/test_shlexer.sh_e8fa2239ab17e7563d0c524f5400a79d6ff8bfda.out \ + $(srcdir)/%reldir%/test_sql.sh_02def66745b063518473df862987747909f56ccc.err \ + $(srcdir)/%reldir%/test_sql.sh_02def66745b063518473df862987747909f56ccc.out \ + $(srcdir)/%reldir%/test_sql.sh_0a5d13b62da4cb66a59a51b0240b5fe0b6036b7e.err \ + $(srcdir)/%reldir%/test_sql.sh_0a5d13b62da4cb66a59a51b0240b5fe0b6036b7e.out \ + $(srcdir)/%reldir%/test_sql.sh_0d46ee142f80f262c8c14a22751571cc567df525.err \ + $(srcdir)/%reldir%/test_sql.sh_0d46ee142f80f262c8c14a22751571cc567df525.out \ + $(srcdir)/%reldir%/test_sql.sh_13429aed81d7edfd47b57e9cdb8a25c43aff35c4.err \ + $(srcdir)/%reldir%/test_sql.sh_13429aed81d7edfd47b57e9cdb8a25c43aff35c4.out \ + $(srcdir)/%reldir%/test_sql.sh_1cbb81cfe40ee16332c5c775a74d06b945aa65c2.err \ + $(srcdir)/%reldir%/test_sql.sh_1cbb81cfe40ee16332c5c775a74d06b945aa65c2.out \ + $(srcdir)/%reldir%/test_sql.sh_2532083f215ed44630621f18df3dd7b77c06ae10.err \ + $(srcdir)/%reldir%/test_sql.sh_2532083f215ed44630621f18df3dd7b77c06ae10.out \ + $(srcdir)/%reldir%/test_sql.sh_26c0d94d7837792144f2d0f866fb3c12a0bd410d.err \ + $(srcdir)/%reldir%/test_sql.sh_26c0d94d7837792144f2d0f866fb3c12a0bd410d.out \ + $(srcdir)/%reldir%/test_sql.sh_2959f0c70fca61a07c6c772f193e73022f7794f1.err \ + $(srcdir)/%reldir%/test_sql.sh_2959f0c70fca61a07c6c772f193e73022f7794f1.out \ + $(srcdir)/%reldir%/test_sql.sh_2a16a6fd0ff235a7877e1ea93b22d873a3609402.err \ + $(srcdir)/%reldir%/test_sql.sh_2a16a6fd0ff235a7877e1ea93b22d873a3609402.out \ + $(srcdir)/%reldir%/test_sql.sh_2cc8a92c6eb73741080b187a2670d309b8171c90.err \ + $(srcdir)/%reldir%/test_sql.sh_2cc8a92c6eb73741080b187a2670d309b8171c90.out \ + $(srcdir)/%reldir%/test_sql.sh_2f15b8a38673ac4db45dc6ed2eafe609c332575b.err \ + $(srcdir)/%reldir%/test_sql.sh_2f15b8a38673ac4db45dc6ed2eafe609c332575b.out \ + $(srcdir)/%reldir%/test_sql.sh_31df37f254255115611fc321b63374a2fa4a1cd5.err \ + $(srcdir)/%reldir%/test_sql.sh_31df37f254255115611fc321b63374a2fa4a1cd5.out \ + $(srcdir)/%reldir%/test_sql.sh_3d77a2092192caf98e141a6039e886ede836f044.err \ + $(srcdir)/%reldir%/test_sql.sh_3d77a2092192caf98e141a6039e886ede836f044.out \ + $(srcdir)/%reldir%/test_sql.sh_4090f96ea11a344c1e2939211da778992dab47d8.err \ + $(srcdir)/%reldir%/test_sql.sh_4090f96ea11a344c1e2939211da778992dab47d8.out \ + $(srcdir)/%reldir%/test_sql.sh_4629b626c65a85d7a5595571e195b67afca272ba.err \ + $(srcdir)/%reldir%/test_sql.sh_4629b626c65a85d7a5595571e195b67afca272ba.out \ + $(srcdir)/%reldir%/test_sql.sh_50c0b2c93b646b848a017764bde8a4282c556e2d.err \ + $(srcdir)/%reldir%/test_sql.sh_50c0b2c93b646b848a017764bde8a4282c556e2d.out \ + $(srcdir)/%reldir%/test_sql.sh_528e48a03cdfa7cfbe263a6e22a65606247a8a95.err \ + $(srcdir)/%reldir%/test_sql.sh_528e48a03cdfa7cfbe263a6e22a65606247a8a95.out \ + $(srcdir)/%reldir%/test_sql.sh_5532c7a21e3f6b7df3aad10d7bdfbb7a812ae6c7.err \ + $(srcdir)/%reldir%/test_sql.sh_5532c7a21e3f6b7df3aad10d7bdfbb7a812ae6c7.out \ + $(srcdir)/%reldir%/test_sql.sh_56047c9470e515bc3e3709354c01e5d50462cde7.err \ + $(srcdir)/%reldir%/test_sql.sh_56047c9470e515bc3e3709354c01e5d50462cde7.out \ + $(srcdir)/%reldir%/test_sql.sh_57427f3c4b4ec785ffff7c5802c10db0d3e547cf.err \ + $(srcdir)/%reldir%/test_sql.sh_57427f3c4b4ec785ffff7c5802c10db0d3e547cf.out \ + $(srcdir)/%reldir%/test_sql.sh_57edc93426e6767aa44ab2356c55327553dcdc8d.err \ + $(srcdir)/%reldir%/test_sql.sh_57edc93426e6767aa44ab2356c55327553dcdc8d.out \ + $(srcdir)/%reldir%/test_sql.sh_5801770f3e0ecc1d62c7a97116d6da1981bbc7bd.err \ + $(srcdir)/%reldir%/test_sql.sh_5801770f3e0ecc1d62c7a97116d6da1981bbc7bd.out \ + $(srcdir)/%reldir%/test_sql.sh_5fe26fe4fc22f23f8dbe3a6aab394602886f2971.err \ + $(srcdir)/%reldir%/test_sql.sh_5fe26fe4fc22f23f8dbe3a6aab394602886f2971.out \ + $(srcdir)/%reldir%/test_sql.sh_62eb85c9569e71a630d72065238559528a16114c.err \ + $(srcdir)/%reldir%/test_sql.sh_62eb85c9569e71a630d72065238559528a16114c.out \ + $(srcdir)/%reldir%/test_sql.sh_6ad9d0adf85c36363f6b24f49950dcdc13dd34ab.err \ + $(srcdir)/%reldir%/test_sql.sh_6ad9d0adf85c36363f6b24f49950dcdc13dd34ab.out \ + $(srcdir)/%reldir%/test_sql.sh_6edb0c8d5323d1b962d90dd6ecdd7eee9008d7b5.err \ + $(srcdir)/%reldir%/test_sql.sh_6edb0c8d5323d1b962d90dd6ecdd7eee9008d7b5.out \ + $(srcdir)/%reldir%/test_sql.sh_753c343a256d1286750314957d1b4e155464e03e.err \ + $(srcdir)/%reldir%/test_sql.sh_753c343a256d1286750314957d1b4e155464e03e.out \ + $(srcdir)/%reldir%/test_sql.sh_764306f0e5f610ba71f521ba3d19fe158ece0ba5.err \ + $(srcdir)/%reldir%/test_sql.sh_764306f0e5f610ba71f521ba3d19fe158ece0ba5.out \ + $(srcdir)/%reldir%/test_sql.sh_7f664c9cda0ae1c48333e21051b5e0eeafd5b4bc.err \ + $(srcdir)/%reldir%/test_sql.sh_7f664c9cda0ae1c48333e21051b5e0eeafd5b4bc.out \ + $(srcdir)/%reldir%/test_sql.sh_85fe3b9803254ea54b864d4865d7bd4d7a7f86c6.err \ + $(srcdir)/%reldir%/test_sql.sh_85fe3b9803254ea54b864d4865d7bd4d7a7f86c6.out \ + $(srcdir)/%reldir%/test_sql.sh_8ee288f1508eaab0367e465e9f382e848f3282aa.err \ + $(srcdir)/%reldir%/test_sql.sh_8ee288f1508eaab0367e465e9f382e848f3282aa.out \ + $(srcdir)/%reldir%/test_sql.sh_9a209f3ee1b1f543ca2587b695d2eb0e63e74c51.err \ + $(srcdir)/%reldir%/test_sql.sh_9a209f3ee1b1f543ca2587b695d2eb0e63e74c51.out \ + $(srcdir)/%reldir%/test_sql.sh_9b03e9f7a1bc35e408b3a17ee90cfdadea164df6.err \ + $(srcdir)/%reldir%/test_sql.sh_9b03e9f7a1bc35e408b3a17ee90cfdadea164df6.out \ + $(srcdir)/%reldir%/test_sql.sh_9ceccab07fbf7130bffe3c201c710719e4a3e9af.err \ + $(srcdir)/%reldir%/test_sql.sh_9ceccab07fbf7130bffe3c201c710719e4a3e9af.out \ + $(srcdir)/%reldir%/test_sql.sh_9e1d05b821822ee40e13fadb24ec558f4bfcff10.err \ + $(srcdir)/%reldir%/test_sql.sh_9e1d05b821822ee40e13fadb24ec558f4bfcff10.out \ + $(srcdir)/%reldir%/test_sql.sh_a6b68b9f0044d18e7fa8f9287ddc9110701edc33.err \ + $(srcdir)/%reldir%/test_sql.sh_a6b68b9f0044d18e7fa8f9287ddc9110701edc33.out \ + $(srcdir)/%reldir%/test_sql.sh_ae7b1f1684e14bf9c16e0d789257b6ef57cfb2b1.err \ + $(srcdir)/%reldir%/test_sql.sh_ae7b1f1684e14bf9c16e0d789257b6ef57cfb2b1.out \ + $(srcdir)/%reldir%/test_sql.sh_afe9cdc4898df5c4e112c13dfe3db6dc089c0d7c.err \ + $(srcdir)/%reldir%/test_sql.sh_afe9cdc4898df5c4e112c13dfe3db6dc089c0d7c.out \ + $(srcdir)/%reldir%/test_sql.sh_b085d26043f9661d70f82cb90ecb3c5245d25eac.err \ + $(srcdir)/%reldir%/test_sql.sh_b085d26043f9661d70f82cb90ecb3c5245d25eac.out \ + $(srcdir)/%reldir%/test_sql.sh_b2694e4fbecdd128798af25ee0d069e7e35fb499.err \ + $(srcdir)/%reldir%/test_sql.sh_b2694e4fbecdd128798af25ee0d069e7e35fb499.out \ + $(srcdir)/%reldir%/test_sql.sh_b5aa0561a65de7e8e22085db184c72a94b1a89a9.err \ + $(srcdir)/%reldir%/test_sql.sh_b5aa0561a65de7e8e22085db184c72a94b1a89a9.out \ + $(srcdir)/%reldir%/test_sql.sh_bad03a996c0750733ab99c592b9011851f521a69.err \ + $(srcdir)/%reldir%/test_sql.sh_bad03a996c0750733ab99c592b9011851f521a69.out \ + $(srcdir)/%reldir%/test_sql.sh_bd46ca4560f8be6307a914e39539bbac0368080a.err \ + $(srcdir)/%reldir%/test_sql.sh_bd46ca4560f8be6307a914e39539bbac0368080a.out \ + $(srcdir)/%reldir%/test_sql.sh_c20b0320096342c180146a5d18a6de82319d70b2.err \ + $(srcdir)/%reldir%/test_sql.sh_c20b0320096342c180146a5d18a6de82319d70b2.out \ + $(srcdir)/%reldir%/test_sql.sh_c353ef036c505b75996252138fbd4c8d22e8149c.err \ + $(srcdir)/%reldir%/test_sql.sh_c353ef036c505b75996252138fbd4c8d22e8149c.out \ + $(srcdir)/%reldir%/test_sql.sh_c5b8da04734fadf3b9eea80e0af997e38e0fb811.err \ + $(srcdir)/%reldir%/test_sql.sh_c5b8da04734fadf3b9eea80e0af997e38e0fb811.out \ + $(srcdir)/%reldir%/test_sql.sh_c73dec2706fc0b9a124f5da3a83f40d8d3255beb.err \ + $(srcdir)/%reldir%/test_sql.sh_c73dec2706fc0b9a124f5da3a83f40d8d3255beb.out \ + $(srcdir)/%reldir%/test_sql.sh_c7e1dbf4605914720b55787785abfafdf2c4178a.err \ + $(srcdir)/%reldir%/test_sql.sh_c7e1dbf4605914720b55787785abfafdf2c4178a.out \ + $(srcdir)/%reldir%/test_sql.sh_cc77a633a66d1778705a34e3657737547b3fb08d.err \ + $(srcdir)/%reldir%/test_sql.sh_cc77a633a66d1778705a34e3657737547b3fb08d.out \ + $(srcdir)/%reldir%/test_sql.sh_dd540973a0dc86320d84706845a15608196ae5be.err \ + $(srcdir)/%reldir%/test_sql.sh_dd540973a0dc86320d84706845a15608196ae5be.out \ + $(srcdir)/%reldir%/test_sql.sh_e70dc7d2b686c7f91c2b41b10f3920c50f3ea405.err \ + $(srcdir)/%reldir%/test_sql.sh_e70dc7d2b686c7f91c2b41b10f3920c50f3ea405.out \ + $(srcdir)/%reldir%/test_sql.sh_ff8a978fc0de0fed675a3cd1454cf435a6856fd5.err \ + $(srcdir)/%reldir%/test_sql.sh_ff8a978fc0de0fed675a3cd1454cf435a6856fd5.out \ + $(srcdir)/%reldir%/test_sql_anno.sh_028d5d5af2f3519b59d349d41cb7ecf385253b51.err \ + $(srcdir)/%reldir%/test_sql_anno.sh_028d5d5af2f3519b59d349d41cb7ecf385253b51.out \ + $(srcdir)/%reldir%/test_sql_anno.sh_0a37c43350ddd7a2d0d75695be32fac083ad04a4.err \ + $(srcdir)/%reldir%/test_sql_anno.sh_0a37c43350ddd7a2d0d75695be32fac083ad04a4.out \ + $(srcdir)/%reldir%/test_sql_anno.sh_1151e5b727f6b57070bf2c8f047f1d7e02b803a6.err \ + $(srcdir)/%reldir%/test_sql_anno.sh_1151e5b727f6b57070bf2c8f047f1d7e02b803a6.out \ + $(srcdir)/%reldir%/test_sql_anno.sh_1b29488b949c294479aa6054f80a35bc106b454b.err \ + $(srcdir)/%reldir%/test_sql_anno.sh_1b29488b949c294479aa6054f80a35bc106b454b.out \ + $(srcdir)/%reldir%/test_sql_anno.sh_331a152080d2e278b7cc0a37728eca1ded36ed72.err \ + $(srcdir)/%reldir%/test_sql_anno.sh_331a152080d2e278b7cc0a37728eca1ded36ed72.out \ + $(srcdir)/%reldir%/test_sql_anno.sh_4ca92f0da538c2f9d524211a021b306af0d2740d.err \ + $(srcdir)/%reldir%/test_sql_anno.sh_4ca92f0da538c2f9d524211a021b306af0d2740d.out \ + $(srcdir)/%reldir%/test_sql_anno.sh_73814eca259e469b57bf7469787b91e8e8569b17.err \ + $(srcdir)/%reldir%/test_sql_anno.sh_73814eca259e469b57bf7469787b91e8e8569b17.out \ + $(srcdir)/%reldir%/test_sql_anno.sh_74bc5fb90a0c94a1a37d30a8e9254ea02c192a75.err \ + $(srcdir)/%reldir%/test_sql_anno.sh_74bc5fb90a0c94a1a37d30a8e9254ea02c192a75.out \ + $(srcdir)/%reldir%/test_sql_anno.sh_7b183037479528581e1eacace7b9acae41c5aa8e.err \ + $(srcdir)/%reldir%/test_sql_anno.sh_7b183037479528581e1eacace7b9acae41c5aa8e.out \ + $(srcdir)/%reldir%/test_sql_anno.sh_96ebdc277ae760e1b6efae3195ff678654b04e52.err \ + $(srcdir)/%reldir%/test_sql_anno.sh_96ebdc277ae760e1b6efae3195ff678654b04e52.out \ + $(srcdir)/%reldir%/test_sql_anno.sh_99da5994c8c90536dbdb1b8ad7dbfb41698a5e8c.err \ + $(srcdir)/%reldir%/test_sql_anno.sh_99da5994c8c90536dbdb1b8ad7dbfb41698a5e8c.out \ + $(srcdir)/%reldir%/test_sql_anno.sh_b1a2ddce48beb3e4b1e3ca4b4229a7c21b83b7c4.err \ + $(srcdir)/%reldir%/test_sql_anno.sh_b1a2ddce48beb3e4b1e3ca4b4229a7c21b83b7c4.out \ + $(srcdir)/%reldir%/test_sql_anno.sh_be6839712d088fc7b31618ed90f8ce706c35a9c0.err \ + $(srcdir)/%reldir%/test_sql_anno.sh_be6839712d088fc7b31618ed90f8ce706c35a9c0.out \ + $(srcdir)/%reldir%/test_sql_anno.sh_c879ba94fdc1a099cf56bd33e5b3e9be65310036.err \ + $(srcdir)/%reldir%/test_sql_anno.sh_c879ba94fdc1a099cf56bd33e5b3e9be65310036.out \ + $(srcdir)/%reldir%/test_sql_anno.sh_c909647ed0e585002074f55c946f3033df1815b2.err \ + $(srcdir)/%reldir%/test_sql_anno.sh_c909647ed0e585002074f55c946f3033df1815b2.out \ + $(srcdir)/%reldir%/test_sql_anno.sh_ce0506ee7a12eb0f7b970522cc6a79180ecb20cc.err \ + $(srcdir)/%reldir%/test_sql_anno.sh_ce0506ee7a12eb0f7b970522cc6a79180ecb20cc.out \ + $(srcdir)/%reldir%/test_sql_anno.sh_f3c64191d6016767a5857fbb1bad26548586bb96.err \ + $(srcdir)/%reldir%/test_sql_anno.sh_f3c64191d6016767a5857fbb1bad26548586bb96.out \ + $(srcdir)/%reldir%/test_sql_coll_func.sh_077cab6e271c914daf5b221cc512853077891f35.err \ + $(srcdir)/%reldir%/test_sql_coll_func.sh_077cab6e271c914daf5b221cc512853077891f35.out \ + $(srcdir)/%reldir%/test_sql_coll_func.sh_0ce56741d3c34af274c8ddb4b90c4e5749d05971.err \ + $(srcdir)/%reldir%/test_sql_coll_func.sh_0ce56741d3c34af274c8ddb4b90c4e5749d05971.out \ + $(srcdir)/%reldir%/test_sql_coll_func.sh_180ad44fe073cc9642da642af1f442adfd98ec62.err \ + $(srcdir)/%reldir%/test_sql_coll_func.sh_180ad44fe073cc9642da642af1f442adfd98ec62.out \ + $(srcdir)/%reldir%/test_sql_coll_func.sh_2230714a0b2ab6aca9ddfe686734f313cef5a96b.err \ + $(srcdir)/%reldir%/test_sql_coll_func.sh_2230714a0b2ab6aca9ddfe686734f313cef5a96b.out \ + $(srcdir)/%reldir%/test_sql_coll_func.sh_68515cfd0a50880f6dfc8f9810c9e761493ebb12.err \ + $(srcdir)/%reldir%/test_sql_coll_func.sh_68515cfd0a50880f6dfc8f9810c9e761493ebb12.out \ + $(srcdir)/%reldir%/test_sql_coll_func.sh_6de2a86c53883ec4430b98edd06b0c0cdf23e741.err \ + $(srcdir)/%reldir%/test_sql_coll_func.sh_6de2a86c53883ec4430b98edd06b0c0cdf23e741.out \ + $(srcdir)/%reldir%/test_sql_coll_func.sh_918178c6dd9d70d0432ededfde5af5e53c094385.err \ + $(srcdir)/%reldir%/test_sql_coll_func.sh_918178c6dd9d70d0432ededfde5af5e53c094385.out \ + $(srcdir)/%reldir%/test_sql_coll_func.sh_c76a24a209987e4c668c87588c12b8f34294b144.err \ + $(srcdir)/%reldir%/test_sql_coll_func.sh_c76a24a209987e4c668c87588c12b8f34294b144.out \ + $(srcdir)/%reldir%/test_sql_coll_func.sh_cacb045d2bce6dc298c4da3d96bdc34dab2404df.err \ + $(srcdir)/%reldir%/test_sql_coll_func.sh_cacb045d2bce6dc298c4da3d96bdc34dab2404df.out \ + $(srcdir)/%reldir%/test_sql_coll_func.sh_cae4bc239c924bbc05a0b099b63f0e3af7560976.err \ + $(srcdir)/%reldir%/test_sql_coll_func.sh_cae4bc239c924bbc05a0b099b63f0e3af7560976.out \ + $(srcdir)/%reldir%/test_sql_coll_func.sh_d4e3c9f7a38458726900731d2b71c104d591ef14.err \ + $(srcdir)/%reldir%/test_sql_coll_func.sh_d4e3c9f7a38458726900731d2b71c104d591ef14.out \ + $(srcdir)/%reldir%/test_sql_coll_func.sh_d5c8f7ab91c3dbe46add7e08f532b17797d9975c.err \ + $(srcdir)/%reldir%/test_sql_coll_func.sh_d5c8f7ab91c3dbe46add7e08f532b17797d9975c.out \ + $(srcdir)/%reldir%/test_sql_coll_func.sh_eb2c424733ce978d1b6d1dcb93d6e45af7c8fa96.err \ + $(srcdir)/%reldir%/test_sql_coll_func.sh_eb2c424733ce978d1b6d1dcb93d6e45af7c8fa96.out \ + $(srcdir)/%reldir%/test_sql_coll_func.sh_f045e94d921bfcfbded83ee681bf11445a99ff6d.err \ + $(srcdir)/%reldir%/test_sql_coll_func.sh_f045e94d921bfcfbded83ee681bf11445a99ff6d.out \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_109ff42de817b56a9082f605f63af71c0db8c9d7.err \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_109ff42de817b56a9082f605f63af71c0db8c9d7.out \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_17b09f79bfcac1762153ec9650fb1e545a24d8a3.err \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_17b09f79bfcac1762153ec9650fb1e545a24d8a3.out \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_18ddc138b263dd06f3fe81fec05bc4330caffef7.err \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_18ddc138b263dd06f3fe81fec05bc4330caffef7.out \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_20a76db446a0a558dcbdf41033f97d4a22ca1bfa.err \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_20a76db446a0a558dcbdf41033f97d4a22ca1bfa.out \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_2c3f66e78deb8721b1d1fe5a787e9958895401d7.err \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_2c3f66e78deb8721b1d1fe5a787e9958895401d7.out \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_3ed11101a413e47c3dfe219557b7a6df04a64253.err \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_3ed11101a413e47c3dfe219557b7a6df04a64253.out \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_469380561dccd79c7249562067107c330838eaad.err \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_469380561dccd79c7249562067107c330838eaad.out \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_54b004f301907860d360434b37fd6c81fcc12f99.err \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_54b004f301907860d360434b37fd6c81fcc12f99.out \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_73df81c6889d1f06fb3f3b6bf30c6046b3f52c8b.err \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_73df81c6889d1f06fb3f3b6bf30c6046b3f52c8b.out \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_74ca242a126316bcb82ccefd9369f9e43b7fd2e1.err \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_74ca242a126316bcb82ccefd9369f9e43b7fd2e1.out \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_7b116cb0ab7a28b866e0d2b80fe8ef0cd25f2aa3.err \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_7b116cb0ab7a28b866e0d2b80fe8ef0cd25f2aa3.out \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_7b5d7dd8d0003ab83e3e5cb0a5ce802fe9a0e3b3.err \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_7b5d7dd8d0003ab83e3e5cb0a5ce802fe9a0e3b3.out \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_917ffde411c1425e8a6addae0170900dcd553986.err \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_917ffde411c1425e8a6addae0170900dcd553986.out \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_9e2c0a90ce333365ff7354375f2c609bc27135c8.err \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_9e2c0a90ce333365ff7354375f2c609bc27135c8.out \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_a247b137e71124e496f1beab56c7fe85717c4199.err \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_a247b137e71124e496f1beab56c7fe85717c4199.out \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_b66242975fd6ecb7260cd96ac29accaf4f4af6ae.err \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_b66242975fd6ecb7260cd96ac29accaf4f4af6ae.out \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_c5d78cfbf5594cc27590277353c08a92e2497622.err \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_c5d78cfbf5594cc27590277353c08a92e2497622.out \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_cc402803bf14ee3673089c575f1af87220cb6a72.err \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_cc402803bf14ee3673089c575f1af87220cb6a72.out \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_cf307d87104e99a1858bb7c4f28ea3068340f188.err \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_cf307d87104e99a1858bb7c4f28ea3068340f188.out \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_cf670dfa1ae7ac5a074baa642068c6d26ac8e096.err \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_cf670dfa1ae7ac5a074baa642068c6d26ac8e096.out \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_d51ad77cd67a2a691838c9d95142638df1c07360.err \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_d51ad77cd67a2a691838c9d95142638df1c07360.out \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_e24cf3f35643f945392e7d7a4ca82fea98b4519e.err \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_e24cf3f35643f945392e7d7a4ca82fea98b4519e.out \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_f31f240313ddec806aa6f353ceed707dfd9aaf16.err \ + $(srcdir)/%reldir%/test_sql_fs_func.sh_f31f240313ddec806aa6f353ceed707dfd9aaf16.out \ + $(srcdir)/%reldir%/test_sql_indexes.sh_026dd9752b6101e0791689d3a2026f7e517e36f5.err \ + $(srcdir)/%reldir%/test_sql_indexes.sh_026dd9752b6101e0791689d3a2026f7e517e36f5.out \ + $(srcdir)/%reldir%/test_sql_indexes.sh_1614ebb5e2e83bab11023354dea8a0885ddf64b4.err \ + $(srcdir)/%reldir%/test_sql_indexes.sh_1614ebb5e2e83bab11023354dea8a0885ddf64b4.out \ + $(srcdir)/%reldir%/test_sql_indexes.sh_541a8e35f34a206e340a3880128b6ce137847872.err \ + $(srcdir)/%reldir%/test_sql_indexes.sh_541a8e35f34a206e340a3880128b6ce137847872.out \ + $(srcdir)/%reldir%/test_sql_indexes.sh_59a1497c13a5e09bc8f95ef02552b2835ebea6e5.err \ + $(srcdir)/%reldir%/test_sql_indexes.sh_59a1497c13a5e09bc8f95ef02552b2835ebea6e5.out \ + $(srcdir)/%reldir%/test_sql_indexes.sh_69fd19d56a8cd1fc9c7eb9351270eabb491f8233.err \ + $(srcdir)/%reldir%/test_sql_indexes.sh_69fd19d56a8cd1fc9c7eb9351270eabb491f8233.out \ + $(srcdir)/%reldir%/test_sql_indexes.sh_6f707b6e856dbaab6f95e7e89b98dc3652021f85.err \ + $(srcdir)/%reldir%/test_sql_indexes.sh_6f707b6e856dbaab6f95e7e89b98dc3652021f85.out \ + $(srcdir)/%reldir%/test_sql_indexes.sh_b615b6737b1e0d383c8ce4a1db56332f11dbc158.err \ + $(srcdir)/%reldir%/test_sql_indexes.sh_b615b6737b1e0d383c8ce4a1db56332f11dbc158.out \ + $(srcdir)/%reldir%/test_sql_indexes.sh_dab07d8de7728752ae938a174468d75e85f3ae7e.err \ + $(srcdir)/%reldir%/test_sql_indexes.sh_dab07d8de7728752ae938a174468d75e85f3ae7e.out \ + $(srcdir)/%reldir%/test_sql_indexes.sh_f7681c234d4f60df16c997a05163aeb058c52870.err \ + $(srcdir)/%reldir%/test_sql_indexes.sh_f7681c234d4f60df16c997a05163aeb058c52870.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_017d24148f3e28f719429b709f4aa5478f458443.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_017d24148f3e28f719429b709f4aa5478f458443.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_026077f4d573ee034467065b7e4f1878bdd4e2f2.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_026077f4d573ee034467065b7e4f1878bdd4e2f2.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_191436b38db80b1dd9e7e0814c31c5fa7239dc51.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_191436b38db80b1dd9e7e0814c31c5fa7239dc51.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_1a74914cbf12fcd5c06935b992f6355acdbcf2d8.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_1a74914cbf12fcd5c06935b992f6355acdbcf2d8.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_1c1a2d438d2bde95abd9a859d113c3661e650a36.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_1c1a2d438d2bde95abd9a859d113c3661e650a36.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_238417283b8e5db23c992f966e3f106bd178f7d0.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_238417283b8e5db23c992f966e3f106bd178f7d0.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_32459ba8e8bb9a1d9e63b6c67059d7f065cf4301.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_32459ba8e8bb9a1d9e63b6c67059d7f065cf4301.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_39c13797278d765c027d3581a0b6e0574f5c56eb.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_39c13797278d765c027d3581a0b6e0574f5c56eb.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_3cf4b66d40c4b1979ff14a9eccad8bd5ac48151c.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_3cf4b66d40c4b1979ff14a9eccad8bd5ac48151c.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_4192f378e320cb3f2c3c228b63ec65de92044704.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_4192f378e320cb3f2c3c228b63ec65de92044704.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_57c3aecdced547b837177ab02d3776361363e48d.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_57c3aecdced547b837177ab02d3776361363e48d.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_5b4a95677a1fc7d11f4b87d92165f56a60a65828.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_5b4a95677a1fc7d11f4b87d92165f56a60a65828.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_5f2feef079a51410e1f8661bfe92da1c3277f665.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_5f2feef079a51410e1f8661bfe92da1c3277f665.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_61417198a652aab93e9495b6e8cf3a634af175c6.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_61417198a652aab93e9495b6e8cf3a634af175c6.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_79ab816ac01c9902ddbb0f6f20392ab2f2cd6172.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_79ab816ac01c9902ddbb0f6f20392ab2f2cd6172.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_7c01aaf09078aaa3f23d127f9e03a317dca066de.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_7c01aaf09078aaa3f23d127f9e03a317dca066de.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_80c97b22084a06fd765ad22c935616c578968d07.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_80c97b22084a06fd765ad22c935616c578968d07.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_83d8615c9ce5dfab5e4373570c1b68b8608155f5.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_83d8615c9ce5dfab5e4373570c1b68b8608155f5.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_8cae9740ddfd6ba4c865fca0117b7bea3bb556e5.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_8cae9740ddfd6ba4c865fca0117b7bea3bb556e5.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_8e229f1b5fa3d3803e9db2f295a8d1a490e1b3db.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_8e229f1b5fa3d3803e9db2f295a8d1a490e1b3db.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_8e3724c90bf96dff5d8ba3cfaf4b7e2eaa9e5f66.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_8e3724c90bf96dff5d8ba3cfaf4b7e2eaa9e5f66.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_93ba3ba52b0dd2d5a3ba43bcb7c3638c05ecfe75.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_93ba3ba52b0dd2d5a3ba43bcb7c3638c05ecfe75.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_97aa53b581838f5875fe2beda8d1cb245a24f3d6.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_97aa53b581838f5875fe2beda8d1cb245a24f3d6.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_98a83bc899a78c04d1fdb390b2c1e403c35428c7.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_98a83bc899a78c04d1fdb390b2c1e403c35428c7.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_98ce02dff32d955466524bb167fa45fdf8591788.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_98ce02dff32d955466524bb167fa45fdf8591788.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_9ab4f51486d7cc99c584721bf0e50c223dac4f18.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_9ab4f51486d7cc99c584721bf0e50c223dac4f18.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_9d260ed24b28579ef1dbed25b10c42741e52b023.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_9d260ed24b28579ef1dbed25b10c42741e52b023.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_9fbfe3c93467666c45b643f3b8ba990a294c17ff.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_9fbfe3c93467666c45b643f3b8ba990a294c17ff.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_a4ffc64f89cf9917fbc918227fd3c05e54d9e8b5.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_a4ffc64f89cf9917fbc918227fd3c05e54d9e8b5.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_a5e179607645aefce14b9fd12ddef34107afe337.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_a5e179607645aefce14b9fd12ddef34107afe337.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_b2fc37822e29f7f59497a02a8968c680b545ee1d.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_b2fc37822e29f7f59497a02a8968c680b545ee1d.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_bbd979ed74b46ae1696ed7312a48a436bcf99ec0.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_bbd979ed74b46ae1696ed7312a48a436bcf99ec0.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_c1ae603d969a5b106328287523c0ddfed07146ad.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_c1ae603d969a5b106328287523c0ddfed07146ad.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_e0ab80f50fb008700ab6cfb90694ed014d40e44b.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_e0ab80f50fb008700ab6cfb90694ed014d40e44b.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_ebafb98307f307ae8d8ab6921c32929aab3a1a16.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_ebafb98307f307ae8d8ab6921c32929aab3a1a16.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_ee36fbea10a33ca106a211feb05d61ecf8e74634.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_ee36fbea10a33ca106a211feb05d61ecf8e74634.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_f1cbc70771cc75520f807261eac3a88dc2d8fe6b.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_f1cbc70771cc75520f807261eac3a88dc2d8fe6b.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_f34205b59e04f261897ad89f659595c743a18ca9.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_f34205b59e04f261897ad89f659595c743a18ca9.out \ + $(srcdir)/%reldir%/test_sql_json_func.sh_f34f5dfa938a1ac7721f924beb16bbceec127a1b.err \ + $(srcdir)/%reldir%/test_sql_json_func.sh_f34f5dfa938a1ac7721f924beb16bbceec127a1b.out \ + $(srcdir)/%reldir%/test_sql_regexp.sh_03257c56e85558aa0cc925b68d3af962afc25125.err \ + $(srcdir)/%reldir%/test_sql_regexp.sh_03257c56e85558aa0cc925b68d3af962afc25125.out \ + $(srcdir)/%reldir%/test_sql_regexp.sh_51293df041b6969ccecc60204dce3676d0fb006d.err \ + $(srcdir)/%reldir%/test_sql_regexp.sh_51293df041b6969ccecc60204dce3676d0fb006d.out \ + $(srcdir)/%reldir%/test_sql_regexp.sh_b841a0c09601e2419eeb99e85f7e286c889e4801.err \ + $(srcdir)/%reldir%/test_sql_regexp.sh_b841a0c09601e2419eeb99e85f7e286c889e4801.out \ + $(srcdir)/%reldir%/test_sql_regexp.sh_bbd1128cf61a9af8f9dc937b46217443f42e1a7a.err \ + $(srcdir)/%reldir%/test_sql_regexp.sh_bbd1128cf61a9af8f9dc937b46217443f42e1a7a.out \ + $(srcdir)/%reldir%/test_sql_regexp.sh_d42e1fcfe6d42394f79da84be2d37e62c4c0ea63.err \ + $(srcdir)/%reldir%/test_sql_regexp.sh_d42e1fcfe6d42394f79da84be2d37e62c4c0ea63.out \ + $(srcdir)/%reldir%/test_sql_regexp.sh_d61af17ff19d640ddfc879460910991825eedd05.err \ + $(srcdir)/%reldir%/test_sql_regexp.sh_d61af17ff19d640ddfc879460910991825eedd05.out \ + $(srcdir)/%reldir%/test_sql_regexp.sh_ed6e9f13f178def009ee58c2aeea8c3c70fdb580.err \ + $(srcdir)/%reldir%/test_sql_regexp.sh_ed6e9f13f178def009ee58c2aeea8c3c70fdb580.out \ + $(srcdir)/%reldir%/test_sql_search_table.sh_1a0d872ebc492fcecb2e79a0993170d5fc771a5b.err \ + $(srcdir)/%reldir%/test_sql_search_table.sh_1a0d872ebc492fcecb2e79a0993170d5fc771a5b.out \ + $(srcdir)/%reldir%/test_sql_search_table.sh_3f5f74863d065418bca5a000e6ad3d9344635164.err \ + $(srcdir)/%reldir%/test_sql_search_table.sh_3f5f74863d065418bca5a000e6ad3d9344635164.out \ + $(srcdir)/%reldir%/test_sql_search_table.sh_5aaae556ecb1661602f176215e28f661d3404032.err \ + $(srcdir)/%reldir%/test_sql_search_table.sh_5aaae556ecb1661602f176215e28f661d3404032.out \ + $(srcdir)/%reldir%/test_sql_search_table.sh_df0fd242f57a96d40f466493938cda0789a094fa.err \ + $(srcdir)/%reldir%/test_sql_search_table.sh_df0fd242f57a96d40f466493938cda0789a094fa.out \ + $(srcdir)/%reldir%/test_sql_search_table.sh_ef9373a76853f345d06234f6e0fe11b5d40da27b.err \ + $(srcdir)/%reldir%/test_sql_search_table.sh_ef9373a76853f345d06234f6e0fe11b5d40da27b.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_005b9365ac99596e539f47c9fe432668c209b21f.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_005b9365ac99596e539f47c9fe432668c209b21f.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_04712488fe50554eb36d3ced80f9a033602f3daa.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_04712488fe50554eb36d3ced80f9a033602f3daa.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_0947bfe7ec626eaa0409a45b10fcbb634fb12eb7.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_0947bfe7ec626eaa0409a45b10fcbb634fb12eb7.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_11bcc5d32eabbedb6974f160dace9ef1ef0009e9.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_11bcc5d32eabbedb6974f160dace9ef1ef0009e9.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_11d458fdadd00df1239a0eeaac049abb49ed212d.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_11d458fdadd00df1239a0eeaac049abb49ed212d.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_129e58679e72f3cc5864812026e49a7917baf3d0.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_129e58679e72f3cc5864812026e49a7917baf3d0.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_151a0fd71ef6837c8cbd8a67e315019b5812b079.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_151a0fd71ef6837c8cbd8a67e315019b5812b079.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_1e7362ac3d9690b1b2cfbd320b6129c46ecfbb8a.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_1e7362ac3d9690b1b2cfbd320b6129c46ecfbb8a.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_211c5428db0590795072c31cb116ef35281e02b5.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_211c5428db0590795072c31cb116ef35281e02b5.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_2f189f0785bb81a1298db35e9e166983b633c73f.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_2f189f0785bb81a1298db35e9e166983b633c73f.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_30f65162174b886130b94a5dd1f094e7f09debed.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_30f65162174b886130b94a5dd1f094e7f09debed.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_352434d199f7b493668c9f2774472eb69ef0d9f0.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_352434d199f7b493668c9f2774472eb69ef0d9f0.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_36fc9005464f1106f969559e640d9fa36d5fadad.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_36fc9005464f1106f969559e640d9fa36d5fadad.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_3855d2cc0ab29171cae8e722f130adec25eae36e.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_3855d2cc0ab29171cae8e722f130adec25eae36e.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_3de72fe5c1751dd212a1cd45cf2caa7f3b52bced.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_3de72fe5c1751dd212a1cd45cf2caa7f3b52bced.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_4b402274da152135c6c99456b693e1ecabca0256.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_4b402274da152135c6c99456b693e1ecabca0256.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_51055e40d709332ee772ba5719039314bbf5e411.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_51055e40d709332ee772ba5719039314bbf5e411.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_51766b600fd158a9e0677f6b0fa31b83537b2e5b.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_51766b600fd158a9e0677f6b0fa31b83537b2e5b.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_5203db1a4a81e43a693f339fd26e1ed635da9d5a.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_5203db1a4a81e43a693f339fd26e1ed635da9d5a.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_5abe3717393fba14ec510a37b4b94fedc67aae8e.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_5abe3717393fba14ec510a37b4b94fedc67aae8e.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_5e436fbd4efb140600999c5208886a5a57b8a30e.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_5e436fbd4efb140600999c5208886a5a57b8a30e.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_5f9979fa5ce7b76efe714bb27ffbe9f5927ae941.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_5f9979fa5ce7b76efe714bb27ffbe9f5927ae941.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_60a005a9f0d44ad022b5554415319933d5743c51.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_60a005a9f0d44ad022b5554415319933d5743c51.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_660288b48d9b30244621d873944938f7ef043976.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_660288b48d9b30244621d873944938f7ef043976.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_6607c0dd8baff16930eb3e0daf6354af5b50052b.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_6607c0dd8baff16930eb3e0daf6354af5b50052b.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_69f5d49e62da48e188bd9d6af4bd3adeb21eb7d1.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_69f5d49e62da48e188bd9d6af4bd3adeb21eb7d1.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_6ff984d8ed3e5099376d19f0dd20d5fd1ed42494.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_6ff984d8ed3e5099376d19f0dd20d5fd1ed42494.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_71f37db33504b2c08a7a3323c482556f53d88100.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_71f37db33504b2c08a7a3323c482556f53d88100.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_77fc174faeec1eda687a9373dbdbdd1aaef56e20.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_77fc174faeec1eda687a9373dbdbdd1aaef56e20.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_790da4aab5af901feeff5426790876eb91b967cb.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_790da4aab5af901feeff5426790876eb91b967cb.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_7a544cd702579c1fab35870428788ad763cf1143.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_7a544cd702579c1fab35870428788ad763cf1143.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_7b6e7c26e8a80459fef55d56156d6ff93c00bd49.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_7b6e7c26e8a80459fef55d56156d6ff93c00bd49.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_7c1e7604ac050e7047201638dca0a6b0fcfd8bdf.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_7c1e7604ac050e7047201638dca0a6b0fcfd8bdf.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_7f751009d0db15fc97f9113c5c84db05ff1de9c3.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_7f751009d0db15fc97f9113c5c84db05ff1de9c3.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_805ca5e97fbf1ed56f2e920befd963255ba190b6.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_805ca5e97fbf1ed56f2e920befd963255ba190b6.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_80c1fb9affbfac609ebf1cc5556aafb1ecd223c1.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_80c1fb9affbfac609ebf1cc5556aafb1ecd223c1.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_836e3f721a0f945ad27e7aa241121ba739aab618.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_836e3f721a0f945ad27e7aa241121ba739aab618.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_838e9bc7873b2b238157ba0358e0dfd6a01d837d.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_838e9bc7873b2b238157ba0358e0dfd6a01d837d.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_84e77dedec887c5e2433dbc5b130000cd88963bd.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_84e77dedec887c5e2433dbc5b130000cd88963bd.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_887afe94962d958aca2e03f7873d58ca93e190b5.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_887afe94962d958aca2e03f7873d58ca93e190b5.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_8c9ef83431ea75050fd16824075bf72056cf5f53.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_8c9ef83431ea75050fd16824075bf72056cf5f53.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_8cef54f0617960320b5d3615068eb27333dcf6a3.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_8cef54f0617960320b5d3615068eb27333dcf6a3.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_8f4f0ed74c4dc6b821e02a44552b694614cd9353.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_8f4f0ed74c4dc6b821e02a44552b694614cd9353.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_949ffd5b2ef9fbcbe17f2e61ef7750f7038f6fd6.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_949ffd5b2ef9fbcbe17f2e61ef7750f7038f6fd6.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_a4d84a0082a7df34c95c2e6e070bbf6effaa5594.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_a4d84a0082a7df34c95c2e6e070bbf6effaa5594.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_a515ba81cc3655c602da28cd0fa1a186d5e9a6e1.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_a515ba81cc3655c602da28cd0fa1a186d5e9a6e1.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_a65d2fb2f841578619528ca10168ca4d650218e9.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_a65d2fb2f841578619528ca10168ca4d650218e9.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_ac7ecdda0fcc4279a4694291edaa2f1411f5262e.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_ac7ecdda0fcc4279a4694291edaa2f1411f5262e.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_b088735cf46f23ca3d5fb3da41f07a6a3b1cba35.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_b088735cf46f23ca3d5fb3da41f07a6a3b1cba35.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_b0e5bf23bbbc0defa8bb26817782c9d46a778ad8.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_b0e5bf23bbbc0defa8bb26817782c9d46a778ad8.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_b2aafbcaa7befe426d3f9df71c24f16fdc9d2856.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_b2aafbcaa7befe426d3f9df71c24f16fdc9d2856.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_b81b27abfafbd357d41c407428d41ae0f4bb75e2.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_b81b27abfafbd357d41c407428d41ae0f4bb75e2.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_bac7f6531a2adf70cd1871fb13eab26dff133b7c.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_bac7f6531a2adf70cd1871fb13eab26dff133b7c.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_bfb7088916412360f77683009058b0747784630a.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_bfb7088916412360f77683009058b0747784630a.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_bfe8b09e23389af0ef14359b66d68228d0285185.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_bfe8b09e23389af0ef14359b66d68228d0285185.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_c26269b10b9b9e8485aa97c2be2afb2cc3ee910d.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_c26269b10b9b9e8485aa97c2be2afb2cc3ee910d.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_c9e2f41431bef879364dc37a472ab01f64d89f89.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_c9e2f41431bef879364dc37a472ab01f64d89f89.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_cc53348c585ee71a7456157ad6b125689813bafe.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_cc53348c585ee71a7456157ad6b125689813bafe.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_ce9db1dbc2e5fee87247135d17787ff3af014d77.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_ce9db1dbc2e5fee87247135d17787ff3af014d77.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_d3367527118052081a541a660b091f6f495b1c0d.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_d3367527118052081a541a660b091f6f495b1c0d.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_d4bc869850f5b7e53353fc2506fea0c8e96f29c5.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_d4bc869850f5b7e53353fc2506fea0c8e96f29c5.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_d4e805ff08d4ccf62865dbf8db8d526f7ce02f37.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_d4e805ff08d4ccf62865dbf8db8d526f7ce02f37.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_d54a759f5683a22ad289129b2096b80652b1cc0c.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_d54a759f5683a22ad289129b2096b80652b1cc0c.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_d8d4cde8bbc98175069be579ff5634de43880b8c.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_d8d4cde8bbc98175069be579ff5634de43880b8c.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_e68167bf5edc7a7b1defd06bdfb694ffa8b00df2.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_e68167bf5edc7a7b1defd06bdfb694ffa8b00df2.out \ + $(srcdir)/%reldir%/test_sql_str_func.sh_ec939e82da809965c61f1c00f68d7afaa4a88382.err \ + $(srcdir)/%reldir%/test_sql_str_func.sh_ec939e82da809965c61f1c00f68d7afaa4a88382.out \ + $(srcdir)/%reldir%/test_sql_time_func.sh_028e99419eb1ac80b03b36148ef1d4ae1c38c44c.err \ + $(srcdir)/%reldir%/test_sql_time_func.sh_028e99419eb1ac80b03b36148ef1d4ae1c38c44c.out \ + $(srcdir)/%reldir%/test_sql_time_func.sh_123c85ff1178743f5cb78efeaf98b637bcbe55ff.err \ + $(srcdir)/%reldir%/test_sql_time_func.sh_123c85ff1178743f5cb78efeaf98b637bcbe55ff.out \ + $(srcdir)/%reldir%/test_sql_time_func.sh_14737ee9597b7d22519d23fbe34c0eb7d6c09ff2.err \ + $(srcdir)/%reldir%/test_sql_time_func.sh_14737ee9597b7d22519d23fbe34c0eb7d6c09ff2.out \ + $(srcdir)/%reldir%/test_sql_time_func.sh_1fbeb1ba69a95284eb1d4d052f5068ede7968704.err \ + $(srcdir)/%reldir%/test_sql_time_func.sh_1fbeb1ba69a95284eb1d4d052f5068ede7968704.out \ + $(srcdir)/%reldir%/test_sql_time_func.sh_20477acc218c96f1385dc97e4d28c80a05c93709.err \ + $(srcdir)/%reldir%/test_sql_time_func.sh_20477acc218c96f1385dc97e4d28c80a05c93709.out \ + $(srcdir)/%reldir%/test_sql_time_func.sh_243454526f6b5e19485db771b4932ddffd6f83a4.err \ + $(srcdir)/%reldir%/test_sql_time_func.sh_243454526f6b5e19485db771b4932ddffd6f83a4.out \ + $(srcdir)/%reldir%/test_sql_time_func.sh_28638a132caae65fd89a68459d1b4af0000b8aef.err \ + $(srcdir)/%reldir%/test_sql_time_func.sh_28638a132caae65fd89a68459d1b4af0000b8aef.out \ + $(srcdir)/%reldir%/test_sql_time_func.sh_3b551281347a8144c84f00ade2664db9ac4aacab.err \ + $(srcdir)/%reldir%/test_sql_time_func.sh_3b551281347a8144c84f00ade2664db9ac4aacab.out \ + $(srcdir)/%reldir%/test_sql_time_func.sh_4035ee76938269e9247f9a696927a9ac18cce80a.err \ + $(srcdir)/%reldir%/test_sql_time_func.sh_4035ee76938269e9247f9a696927a9ac18cce80a.out \ + $(srcdir)/%reldir%/test_sql_time_func.sh_42f0fc1a154b0d79b4f6e846f283426be498040f.err \ + $(srcdir)/%reldir%/test_sql_time_func.sh_42f0fc1a154b0d79b4f6e846f283426be498040f.out \ + $(srcdir)/%reldir%/test_sql_time_func.sh_4b96fe71bc2d18955e3625b765a6095ab1f7a75d.err \ + $(srcdir)/%reldir%/test_sql_time_func.sh_4b96fe71bc2d18955e3625b765a6095ab1f7a75d.out \ + $(srcdir)/%reldir%/test_sql_time_func.sh_53b76b094e47691b5bca106142ee470e82e8e420.err \ + $(srcdir)/%reldir%/test_sql_time_func.sh_53b76b094e47691b5bca106142ee470e82e8e420.out \ + $(srcdir)/%reldir%/test_sql_time_func.sh_6288a9e690d381602b2be5665cc1cd3552733bc2.err \ + $(srcdir)/%reldir%/test_sql_time_func.sh_6288a9e690d381602b2be5665cc1cd3552733bc2.out \ + $(srcdir)/%reldir%/test_sql_time_func.sh_652bbd00b5159e22d94970ab1e882997d14b5777.err \ + $(srcdir)/%reldir%/test_sql_time_func.sh_652bbd00b5159e22d94970ab1e882997d14b5777.out \ + $(srcdir)/%reldir%/test_sql_time_func.sh_6832a58259168622af8b3370b0c89534f98f3f9f.err \ + $(srcdir)/%reldir%/test_sql_time_func.sh_6832a58259168622af8b3370b0c89534f98f3f9f.out \ + $(srcdir)/%reldir%/test_sql_time_func.sh_72862ec9c8f261a8507d237eb673c7ddfaafd898.err \ + $(srcdir)/%reldir%/test_sql_time_func.sh_72862ec9c8f261a8507d237eb673c7ddfaafd898.out \ + $(srcdir)/%reldir%/test_sql_time_func.sh_7797302b63d73234c9ec9f0405c7c0a748daf8e9.err \ + $(srcdir)/%reldir%/test_sql_time_func.sh_7797302b63d73234c9ec9f0405c7c0a748daf8e9.out \ + $(srcdir)/%reldir%/test_sql_time_func.sh_9569ab40cb2e51c60f818a6c2729c60d86565e7e.err \ + $(srcdir)/%reldir%/test_sql_time_func.sh_9569ab40cb2e51c60f818a6c2729c60d86565e7e.out \ + $(srcdir)/%reldir%/test_sql_time_func.sh_9e649c4bc10f4d178519983358f7092e9c5dfe71.err \ + $(srcdir)/%reldir%/test_sql_time_func.sh_9e649c4bc10f4d178519983358f7092e9c5dfe71.out \ + $(srcdir)/%reldir%/test_sql_time_func.sh_b0257ced663fc444801a5e6cba89c3053acca11e.err \ + $(srcdir)/%reldir%/test_sql_time_func.sh_b0257ced663fc444801a5e6cba89c3053acca11e.out \ + $(srcdir)/%reldir%/test_sql_time_func.sh_b5f9ec3ea8b4551fd40017398d74c524fb54ebc9.err \ + $(srcdir)/%reldir%/test_sql_time_func.sh_b5f9ec3ea8b4551fd40017398d74c524fb54ebc9.out \ + $(srcdir)/%reldir%/test_sql_time_func.sh_dbe786c096d5a7a5e1d05311b929f1427d8bac79.err \ + $(srcdir)/%reldir%/test_sql_time_func.sh_dbe786c096d5a7a5e1d05311b929f1427d8bac79.out \ + $(srcdir)/%reldir%/test_sql_time_func.sh_f3b1ea49779117bf45f85ad5615fdc5e89193db6.err \ + $(srcdir)/%reldir%/test_sql_time_func.sh_f3b1ea49779117bf45f85ad5615fdc5e89193db6.out \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_28e23f4e98b1acd6478e39844fd9306b444550c3.err \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_28e23f4e98b1acd6478e39844fd9306b444550c3.out \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_32acc1a8bb5028636fdbf08f077f9a835ab51bec.err \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_32acc1a8bb5028636fdbf08f077f9a835ab51bec.out \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_485a6ac7c69bd4b5d34d3399a9c17f6a2dc89ad3.err \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_485a6ac7c69bd4b5d34d3399a9c17f6a2dc89ad3.out \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_62d15cb9d5a9259f198aa01ca8ed200d6da38d68.err \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_62d15cb9d5a9259f198aa01ca8ed200d6da38d68.out \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_662b5f9b17aa69a8e3aa9a18acb30d9acf6e2837.err \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_662b5f9b17aa69a8e3aa9a18acb30d9acf6e2837.out \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_6ffd89498b9a7758ded6717148fc2ce77a12621b.err \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_6ffd89498b9a7758ded6717148fc2ce77a12621b.out \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_764ea85863d4f0ea3b7cb40850ac7c8fde682d57.err \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_764ea85863d4f0ea3b7cb40850ac7c8fde682d57.out \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_81dc3eb51ec4dc3066a2365524001242c423a9cf.err \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_81dc3eb51ec4dc3066a2365524001242c423a9cf.out \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_81ffd4ed3f62228494a966512791202cea7e3b57.err \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_81ffd4ed3f62228494a966512791202cea7e3b57.out \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_87f53d441e22c1d27c27eaa6003c83da1207c063.err \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_87f53d441e22c1d27c27eaa6003c83da1207c063.out \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_977cdf5d396522194d6b9e945169ff8073b4296b.err \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_977cdf5d396522194d6b9e945169ff8073b4296b.out \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_9a5be90921256e90428c77753eca5ea0d31bd910.err \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_9a5be90921256e90428c77753eca5ea0d31bd910.out \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_a2c0f0e51b3f85ea2a05ecdcacaad962b4fe5d4f.err \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_a2c0f0e51b3f85ea2a05ecdcacaad962b4fe5d4f.out \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_ac1f6e9a88608ef8939f9c2f7061a25a86742d46.err \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_ac1f6e9a88608ef8939f9c2f7061a25a86742d46.out \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_ade121f29bedea0d1a54452cc994b2302ad9dabb.err \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_ade121f29bedea0d1a54452cc994b2302ad9dabb.out \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_c851bdf3ba2f56fac5a216457b2d11a109e77f03.err \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_c851bdf3ba2f56fac5a216457b2d11a109e77f03.out \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_d99d884ba6668b66e3ca9ea4ed2d0e236497c35d.err \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_d99d884ba6668b66e3ca9ea4ed2d0e236497c35d.out \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_e036fabdc6c15f65a374b95c9922212670d494ee.err \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_e036fabdc6c15f65a374b95c9922212670d494ee.out \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_ec4623bd63ff353f50db44da1231e46a1a4f1824.err \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_ec4623bd63ff353f50db44da1231e46a1a4f1824.out \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_f7476c76ea51cf479a6a79b037e0cb59871b629c.err \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_f7476c76ea51cf479a6a79b037e0cb59871b629c.out \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_f8340cb4c62aabd839ea09235b6ebe41b2bb48f4.err \ + $(srcdir)/%reldir%/test_sql_views_vtab.sh_f8340cb4c62aabd839ea09235b6ebe41b2bb48f4.out \ + $(srcdir)/%reldir%/test_sql_xml_func.sh_46dfa23e2effabf3fa150c4b871fd8d22b1c834d.err \ + $(srcdir)/%reldir%/test_sql_xml_func.sh_46dfa23e2effabf3fa150c4b871fd8d22b1c834d.out \ + $(srcdir)/%reldir%/test_sql_xml_func.sh_4effabf11b59580e5f0727199eb74fba049c0cda.err \ + $(srcdir)/%reldir%/test_sql_xml_func.sh_4effabf11b59580e5f0727199eb74fba049c0cda.out \ + $(srcdir)/%reldir%/test_sql_xml_func.sh_8912b59d5b515ab1373a3d9bc635ebabacd01dfd.err \ + $(srcdir)/%reldir%/test_sql_xml_func.sh_8912b59d5b515ab1373a3d9bc635ebabacd01dfd.out \ + $(srcdir)/%reldir%/test_sql_xml_func.sh_b036c73528a446cba46625767517cdac868aba72.err \ + $(srcdir)/%reldir%/test_sql_xml_func.sh_b036c73528a446cba46625767517cdac868aba72.out \ + $(srcdir)/%reldir%/test_sql_xml_func.sh_fefeb387ae14d4171225ea06cbbff3ec43990cf0.err \ + $(srcdir)/%reldir%/test_sql_xml_func.sh_fefeb387ae14d4171225ea06cbbff3ec43990cf0.out \ + $(srcdir)/%reldir%/test_sql_yaml_func.sh_41c6abde708a69e74f5b7fde865d88fa75f91e0a.err \ + $(srcdir)/%reldir%/test_sql_yaml_func.sh_41c6abde708a69e74f5b7fde865d88fa75f91e0a.out \ + $(srcdir)/%reldir%/test_sql_yaml_func.sh_dc189d02e8979b7ed245d5d750f68b9965984699.err \ + $(srcdir)/%reldir%/test_sql_yaml_func.sh_dc189d02e8979b7ed245d5d750f68b9965984699.out \ + $(srcdir)/%reldir%/test_text_file.sh_5b51b55dff7332c5bee2c9b797c401c5614d574a.err \ + $(srcdir)/%reldir%/test_text_file.sh_5b51b55dff7332c5bee2c9b797c401c5614d574a.out \ + $(srcdir)/%reldir%/test_text_file.sh_6a24078983cf1b7a80b6fb65d5186cd125498136.err \ + $(srcdir)/%reldir%/test_text_file.sh_6a24078983cf1b7a80b6fb65d5186cd125498136.out \ + $(srcdir)/%reldir%/test_text_file.sh_87943c6be50d701a03e901f16493314c839af1ab.err \ + $(srcdir)/%reldir%/test_text_file.sh_87943c6be50d701a03e901f16493314c839af1ab.out \ + $(srcdir)/%reldir%/test_text_file.sh_8b2cd055e6a1db2ed9b2af2a917f8556395fa653.err \ + $(srcdir)/%reldir%/test_text_file.sh_8b2cd055e6a1db2ed9b2af2a917f8556395fa653.out \ + $(srcdir)/%reldir%/test_text_file.sh_ac486314c4e02e480d829ea2f077b86c49fedcec.err \ + $(srcdir)/%reldir%/test_text_file.sh_ac486314c4e02e480d829ea2f077b86c49fedcec.out \ + $(srcdir)/%reldir%/test_text_file.sh_ac872aadda29b9a824361a2c711d62ec1c75d40f.err \ + $(srcdir)/%reldir%/test_text_file.sh_ac872aadda29b9a824361a2c711d62ec1c75d40f.out \ + $(srcdir)/%reldir%/test_text_file.sh_c2a346ca1da2da4346f1d310212e166767993ce9.err \ + $(srcdir)/%reldir%/test_text_file.sh_c2a346ca1da2da4346f1d310212e166767993ce9.out \ + $(srcdir)/%reldir%/test_text_file.sh_e088ea61a5382458cc48a2607e2639e52b0be1da.err \ + $(srcdir)/%reldir%/test_text_file.sh_e088ea61a5382458cc48a2607e2639e52b0be1da.out \ + $() diff --git a/test/expected/test_cli.sh_17a68b798354f9a6cdfab372006caeb74038d15c.err b/test/expected/test_cli.sh_17a68b798354f9a6cdfab372006caeb74038d15c.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cli.sh_17a68b798354f9a6cdfab372006caeb74038d15c.err diff --git a/test/expected/test_cli.sh_17a68b798354f9a6cdfab372006caeb74038d15c.out b/test/expected/test_cli.sh_17a68b798354f9a6cdfab372006caeb74038d15c.out new file mode 100644 index 0000000..3b130be --- /dev/null +++ b/test/expected/test_cli.sh_17a68b798354f9a6cdfab372006caeb74038d15c.out @@ -0,0 +1 @@ +2021-07-03T21:49:29 Test diff --git a/test/expected/test_cli.sh_5524542b1a6954ff9741155101497270a2f0c557.err b/test/expected/test_cli.sh_5524542b1a6954ff9741155101497270a2f0c557.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cli.sh_5524542b1a6954ff9741155101497270a2f0c557.err diff --git a/test/expected/test_cli.sh_5524542b1a6954ff9741155101497270a2f0c557.out b/test/expected/test_cli.sh_5524542b1a6954ff9741155101497270a2f0c557.out new file mode 100644 index 0000000..4c63930 --- /dev/null +++ b/test/expected/test_cli.sh_5524542b1a6954ff9741155101497270a2f0c557.out @@ -0,0 +1 @@ +[1ma[0m [4ma[0m [4ma[0m diff --git a/test/expected/test_cli.sh_97e19b9ff3775d84074455a2e8993a0611b1c269.err b/test/expected/test_cli.sh_97e19b9ff3775d84074455a2e8993a0611b1c269.err new file mode 100644 index 0000000..9d07883 --- /dev/null +++ b/test/expected/test_cli.sh_97e19b9ff3775d84074455a2e8993a0611b1c269.err @@ -0,0 +1,8 @@ +[1m[31m✘ error[0m: invalid value for “[1m-c[0m” option +[36m --> [0m[1mcommand-line argument[0m +[36m | [0m[37m[40m -c [0m[37m[40mfoo [0m +[36m | [0m [1m[31m^ command type prefix is missing[0m +[36m =[0m [36mhelp[0m: command arguments must start with one of the following symbols to denote the type of command: + [1m:[0m - an lnav command (e.g. :goto 42) + [1m;[0m - an SQL statement (e.g. ;SELECT * FROM syslog_log) + [1m|[0m - an lnav script (e.g. |rename-stdin foo) diff --git a/test/expected/test_cli.sh_97e19b9ff3775d84074455a2e8993a0611b1c269.out b/test/expected/test_cli.sh_97e19b9ff3775d84074455a2e8993a0611b1c269.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cli.sh_97e19b9ff3775d84074455a2e8993a0611b1c269.out diff --git a/test/expected/test_cli.sh_a1a09f890f4604309d0a81bbbec8e50fb7d5e887.err b/test/expected/test_cli.sh_a1a09f890f4604309d0a81bbbec8e50fb7d5e887.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cli.sh_a1a09f890f4604309d0a81bbbec8e50fb7d5e887.err diff --git a/test/expected/test_cli.sh_a1a09f890f4604309d0a81bbbec8e50fb7d5e887.out b/test/expected/test_cli.sh_a1a09f890f4604309d0a81bbbec8e50fb7d5e887.out new file mode 100644 index 0000000..1e0a993 --- /dev/null +++ b/test/expected/test_cli.sh_a1a09f890f4604309d0a81bbbec8e50fb7d5e887.out @@ -0,0 +1,3 @@ +2013-06-06T19:13:20.123 Hello, World! +2013-06-06T19:13:20.123 Goodbye, World! +2013-06-06T19:13:20.123 ---- END-OF-STDIN ---- diff --git a/test/expected/test_cli.sh_f2e41555f1a5f40f54ce241207af602ed1503a2b.err b/test/expected/test_cli.sh_f2e41555f1a5f40f54ce241207af602ed1503a2b.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cli.sh_f2e41555f1a5f40f54ce241207af602ed1503a2b.err diff --git a/test/expected/test_cli.sh_f2e41555f1a5f40f54ce241207af602ed1503a2b.out b/test/expected/test_cli.sh_f2e41555f1a5f40f54ce241207af602ed1503a2b.out new file mode 100644 index 0000000..751c83b --- /dev/null +++ b/test/expected/test_cli.sh_f2e41555f1a5f40f54ce241207af602ed1503a2b.out @@ -0,0 +1,2 @@ +[1m[4mfilepath [0m[1m[4m[7mlines [0m +[1m[7mstdin [0m[1m[7m [0m[1m[7m 4[0m[1m [0m diff --git a/test/expected/test_cmds.sh_017b495b95218b7c083951e2dba331cfec6e90be.err b/test/expected/test_cmds.sh_017b495b95218b7c083951e2dba331cfec6e90be.err new file mode 100644 index 0000000..0d53487 --- /dev/null +++ b/test/expected/test_cmds.sh_017b495b95218b7c083951e2dba331cfec6e90be.err @@ -0,0 +1,6 @@ +[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 diff --git a/test/expected/test_cmds.sh_017b495b95218b7c083951e2dba331cfec6e90be.out b/test/expected/test_cmds.sh_017b495b95218b7c083951e2dba331cfec6e90be.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_017b495b95218b7c083951e2dba331cfec6e90be.out diff --git a/test/expected/test_cmds.sh_0b1e4b1523dfca71927b1fe721c74490c51361d1.err b/test/expected/test_cmds.sh_0b1e4b1523dfca71927b1fe721c74490c51361d1.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_0b1e4b1523dfca71927b1fe721c74490c51361d1.err diff --git a/test/expected/test_cmds.sh_0b1e4b1523dfca71927b1fe721c74490c51361d1.out b/test/expected/test_cmds.sh_0b1e4b1523dfca71927b1fe721c74490c51361d1.out new file mode 100644 index 0000000..689436e --- /dev/null +++ b/test/expected/test_cmds.sh_0b1e4b1523dfca71927b1fe721c74490c51361d1.out @@ -0,0 +1,3 @@ +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" diff --git a/test/expected/test_cmds.sh_0b41fe57743ba0be088037d9ba29bc465e7c9bf9.err b/test/expected/test_cmds.sh_0b41fe57743ba0be088037d9ba29bc465e7c9bf9.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_0b41fe57743ba0be088037d9ba29bc465e7c9bf9.err diff --git a/test/expected/test_cmds.sh_0b41fe57743ba0be088037d9ba29bc465e7c9bf9.out b/test/expected/test_cmds.sh_0b41fe57743ba0be088037d9ba29bc465e7c9bf9.out new file mode 100644 index 0000000..ccd015e --- /dev/null +++ b/test/expected/test_cmds.sh_0b41fe57743ba0be088037d9ba29bc465e7c9bf9.out @@ -0,0 +1,3 @@ +c1,c2 +1,"Hello +World!" diff --git a/test/expected/test_cmds.sh_0f0ab532d8d845f8201af65bf5f6fc994e21a8aa.err b/test/expected/test_cmds.sh_0f0ab532d8d845f8201af65bf5f6fc994e21a8aa.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_0f0ab532d8d845f8201af65bf5f6fc994e21a8aa.err diff --git a/test/expected/test_cmds.sh_0f0ab532d8d845f8201af65bf5f6fc994e21a8aa.out b/test/expected/test_cmds.sh_0f0ab532d8d845f8201af65bf5f6fc994e21a8aa.out new file mode 100644 index 0000000..0dd4cb7 --- /dev/null +++ b/test/expected/test_cmds.sh_0f0ab532d8d845f8201af65bf5f6fc994e21a8aa.out @@ -0,0 +1,3 @@ +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" diff --git a/test/expected/test_cmds.sh_109a44ac6a8f1be2736c8e9c47aeed187e0581ee.err b/test/expected/test_cmds.sh_109a44ac6a8f1be2736c8e9c47aeed187e0581ee.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_109a44ac6a8f1be2736c8e9c47aeed187e0581ee.err diff --git a/test/expected/test_cmds.sh_109a44ac6a8f1be2736c8e9c47aeed187e0581ee.out b/test/expected/test_cmds.sh_109a44ac6a8f1be2736c8e9c47aeed187e0581ee.out new file mode 100644 index 0000000..d51a68c --- /dev/null +++ b/test/expected/test_cmds.sh_109a44ac6a8f1be2736c8e9c47aeed187e0581ee.out @@ -0,0 +1,2 @@ +[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" diff --git a/test/expected/test_cmds.sh_12856706bfb4a8e2686098dd2644a7989d370b02.err b/test/expected/test_cmds.sh_12856706bfb4a8e2686098dd2644a7989d370b02.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_12856706bfb4a8e2686098dd2644a7989d370b02.err diff --git a/test/expected/test_cmds.sh_12856706bfb4a8e2686098dd2644a7989d370b02.out b/test/expected/test_cmds.sh_12856706bfb4a8e2686098dd2644a7989d370b02.out new file mode 100644 index 0000000..d18c6b1 --- /dev/null +++ b/test/expected/test_cmds.sh_12856706bfb4a8e2686098dd2644a7989d370b02.out @@ -0,0 +1 @@ +How are you? diff --git a/test/expected/test_cmds.sh_12b4cb9bd6586f9694100db76734b19a75158eab.err b/test/expected/test_cmds.sh_12b4cb9bd6586f9694100db76734b19a75158eab.err new file mode 100644 index 0000000..f90b5d3 --- /dev/null +++ b/test/expected/test_cmds.sh_12b4cb9bd6586f9694100db76734b19a75158eab.err @@ -0,0 +1,7 @@ +[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 diff --git a/test/expected/test_cmds.sh_12b4cb9bd6586f9694100db76734b19a75158eab.out b/test/expected/test_cmds.sh_12b4cb9bd6586f9694100db76734b19a75158eab.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_12b4cb9bd6586f9694100db76734b19a75158eab.out diff --git a/test/expected/test_cmds.sh_145126309709179759926289caf729703ef6e1c6.err b/test/expected/test_cmds.sh_145126309709179759926289caf729703ef6e1c6.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_145126309709179759926289caf729703ef6e1c6.err diff --git a/test/expected/test_cmds.sh_145126309709179759926289caf729703ef6e1c6.out b/test/expected/test_cmds.sh_145126309709179759926289caf729703ef6e1c6.out new file mode 100644 index 0000000..d51a68c --- /dev/null +++ b/test/expected/test_cmds.sh_145126309709179759926289caf729703ef6e1c6.out @@ -0,0 +1,2 @@ +[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" diff --git a/test/expected/test_cmds.sh_148007d2626b3c92d00ac31639b6918b1fc4aa60.err b/test/expected/test_cmds.sh_148007d2626b3c92d00ac31639b6918b1fc4aa60.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_148007d2626b3c92d00ac31639b6918b1fc4aa60.err diff --git a/test/expected/test_cmds.sh_148007d2626b3c92d00ac31639b6918b1fc4aa60.out b/test/expected/test_cmds.sh_148007d2626b3c92d00ac31639b6918b1fc4aa60.out new file mode 100644 index 0000000..6ebd88b --- /dev/null +++ b/test/expected/test_cmds.sh_148007d2626b3c92d00ac31639b6918b1fc4aa60.out @@ -0,0 +1,2 @@ +Hello, World! +-07-20 22:59:30,221:ERROR:Goodbye, Bork! diff --git a/test/expected/test_cmds.sh_1cab7d240cf85ff2c3538f5a06af141b01bc83ad.err b/test/expected/test_cmds.sh_1cab7d240cf85ff2c3538f5a06af141b01bc83ad.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_1cab7d240cf85ff2c3538f5a06af141b01bc83ad.err diff --git a/test/expected/test_cmds.sh_1cab7d240cf85ff2c3538f5a06af141b01bc83ad.out b/test/expected/test_cmds.sh_1cab7d240cf85ff2c3538f5a06af141b01bc83ad.out new file mode 100644 index 0000000..45e6c41 --- /dev/null +++ b/test/expected/test_cmds.sh_1cab7d240cf85ff2c3538f5a06af141b01bc83ad.out @@ -0,0 +1,3 @@ +-07-20 22:59:27,672:DEBUG:Hello, Bork! + How are you today? +-07-20 22:59:30,221:ERROR:Goodbye, Bork! diff --git a/test/expected/test_cmds.sh_1d92c5bc12f5e7aaa6d84c5ed47f0b9f96e36c6a.err b/test/expected/test_cmds.sh_1d92c5bc12f5e7aaa6d84c5ed47f0b9f96e36c6a.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_1d92c5bc12f5e7aaa6d84c5ed47f0b9f96e36c6a.err diff --git a/test/expected/test_cmds.sh_1d92c5bc12f5e7aaa6d84c5ed47f0b9f96e36c6a.out b/test/expected/test_cmds.sh_1d92c5bc12f5e7aaa6d84c5ed47f0b9f96e36c6a.out new file mode 100644 index 0000000..6dfcc1c --- /dev/null +++ b/test/expected/test_cmds.sh_1d92c5bc12f5e7aaa6d84c5ed47f0b9f96e36c6a.out @@ -0,0 +1,68 @@ +[ + { + "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 + } +] diff --git a/test/expected/test_cmds.sh_1e1c8492b295913ce5afcd104cde0ec4ca1dcdac.err b/test/expected/test_cmds.sh_1e1c8492b295913ce5afcd104cde0ec4ca1dcdac.err new file mode 100644 index 0000000..52606d5 --- /dev/null +++ b/test/expected/test_cmds.sh_1e1c8492b295913ce5afcd104cde0ec4ca1dcdac.err @@ -0,0 +1,6 @@ +[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 diff --git a/test/expected/test_cmds.sh_1e1c8492b295913ce5afcd104cde0ec4ca1dcdac.out b/test/expected/test_cmds.sh_1e1c8492b295913ce5afcd104cde0ec4ca1dcdac.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_1e1c8492b295913ce5afcd104cde0ec4ca1dcdac.out diff --git a/test/expected/test_cmds.sh_1f53f5b16c7c5aa695ed2e6427d822a1b940fcf4.err b/test/expected/test_cmds.sh_1f53f5b16c7c5aa695ed2e6427d822a1b940fcf4.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_1f53f5b16c7c5aa695ed2e6427d822a1b940fcf4.err diff --git a/test/expected/test_cmds.sh_1f53f5b16c7c5aa695ed2e6427d822a1b940fcf4.out b/test/expected/test_cmds.sh_1f53f5b16c7c5aa695ed2e6427d822a1b940fcf4.out new file mode 100644 index 0000000..0dd4cb7 --- /dev/null +++ b/test/expected/test_cmds.sh_1f53f5b16c7c5aa695ed2e6427d822a1b940fcf4.out @@ -0,0 +1,3 @@ +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" diff --git a/test/expected/test_cmds.sh_22577861cb0921a7e7f3d1af6485938f4930ba7b.err b/test/expected/test_cmds.sh_22577861cb0921a7e7f3d1af6485938f4930ba7b.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_22577861cb0921a7e7f3d1af6485938f4930ba7b.err diff --git a/test/expected/test_cmds.sh_22577861cb0921a7e7f3d1af6485938f4930ba7b.out b/test/expected/test_cmds.sh_22577861cb0921a7e7f3d1af6485938f4930ba7b.out new file mode 100644 index 0000000..d51a68c --- /dev/null +++ b/test/expected/test_cmds.sh_22577861cb0921a7e7f3d1af6485938f4930ba7b.out @@ -0,0 +1,2 @@ +[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" diff --git a/test/expected/test_cmds.sh_2339d09953b6937981d8a448000c3fdc2837f8c4.err b/test/expected/test_cmds.sh_2339d09953b6937981d8a448000c3fdc2837f8c4.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_2339d09953b6937981d8a448000c3fdc2837f8c4.err diff --git a/test/expected/test_cmds.sh_2339d09953b6937981d8a448000c3fdc2837f8c4.out b/test/expected/test_cmds.sh_2339d09953b6937981d8a448000c3fdc2837f8c4.out new file mode 100644 index 0000000..83f15c5 --- /dev/null +++ b/test/expected/test_cmds.sh_2339d09953b6937981d8a448000c3fdc2837f8c4.out @@ -0,0 +1,12 @@ +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 diff --git a/test/expected/test_cmds.sh_2539ff9c4dbed93df3f0408ccc5fd81df34d1193.err b/test/expected/test_cmds.sh_2539ff9c4dbed93df3f0408ccc5fd81df34d1193.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_2539ff9c4dbed93df3f0408ccc5fd81df34d1193.err diff --git a/test/expected/test_cmds.sh_2539ff9c4dbed93df3f0408ccc5fd81df34d1193.out b/test/expected/test_cmds.sh_2539ff9c4dbed93df3f0408ccc5fd81df34d1193.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_2539ff9c4dbed93df3f0408ccc5fd81df34d1193.out diff --git a/test/expected/test_cmds.sh_29f0c808f4e93c6ef3890e6b793bee274a5b36ca.err b/test/expected/test_cmds.sh_29f0c808f4e93c6ef3890e6b793bee274a5b36ca.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_29f0c808f4e93c6ef3890e6b793bee274a5b36ca.err diff --git a/test/expected/test_cmds.sh_29f0c808f4e93c6ef3890e6b793bee274a5b36ca.out b/test/expected/test_cmds.sh_29f0c808f4e93c6ef3890e6b793bee274a5b36ca.out new file mode 100644 index 0000000..721d34f --- /dev/null +++ b/test/expected/test_cmds.sh_29f0c808f4e93c6ef3890e6b793bee274a5b36ca.out @@ -0,0 +1 @@ +Hello, $XYZ! diff --git a/test/expected/test_cmds.sh_2a449c0a43e895e85c8b1c9547f32d7b5b4f84f6.err b/test/expected/test_cmds.sh_2a449c0a43e895e85c8b1c9547f32d7b5b4f84f6.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_2a449c0a43e895e85c8b1c9547f32d7b5b4f84f6.err diff --git a/test/expected/test_cmds.sh_2a449c0a43e895e85c8b1c9547f32d7b5b4f84f6.out b/test/expected/test_cmds.sh_2a449c0a43e895e85c8b1c9547f32d7b5b4f84f6.out new file mode 100644 index 0000000..b693f51 --- /dev/null +++ b/test/expected/test_cmds.sh_2a449c0a43e895e85c8b1c9547f32d7b5b4f84f6.out @@ -0,0 +1 @@ +/ui/clock-format = "%Y-%m-%dT%H:%M:%S %Z" diff --git a/test/expected/test_cmds.sh_2a535de164de4c060d2bff34aa7cc75ac7cac2c2.err b/test/expected/test_cmds.sh_2a535de164de4c060d2bff34aa7cc75ac7cac2c2.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_2a535de164de4c060d2bff34aa7cc75ac7cac2c2.err diff --git a/test/expected/test_cmds.sh_2a535de164de4c060d2bff34aa7cc75ac7cac2c2.out b/test/expected/test_cmds.sh_2a535de164de4c060d2bff34aa7cc75ac7cac2c2.out new file mode 100644 index 0000000..6ae2e70 --- /dev/null +++ b/test/expected/test_cmds.sh_2a535de164de4c060d2bff34aa7cc75ac7cac2c2.out @@ -0,0 +1,2 @@ +2009-07-20 22:59:27,672:DEBUG:Hello, World! + How are you today? diff --git a/test/expected/test_cmds.sh_2cd167954a3be3e130e5f9601b72794a856cef92.err b/test/expected/test_cmds.sh_2cd167954a3be3e130e5f9601b72794a856cef92.err new file mode 100644 index 0000000..30a1ac4 --- /dev/null +++ b/test/expected/test_cmds.sh_2cd167954a3be3e130e5f9601b72794a856cef92.err @@ -0,0 +1,6 @@ +[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 diff --git a/test/expected/test_cmds.sh_2cd167954a3be3e130e5f9601b72794a856cef92.out b/test/expected/test_cmds.sh_2cd167954a3be3e130e5f9601b72794a856cef92.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_2cd167954a3be3e130e5f9601b72794a856cef92.out diff --git a/test/expected/test_cmds.sh_2de9ec294e2f533d13e04c70d9525f8b58d47bb2.err b/test/expected/test_cmds.sh_2de9ec294e2f533d13e04c70d9525f8b58d47bb2.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_2de9ec294e2f533d13e04c70d9525f8b58d47bb2.err diff --git a/test/expected/test_cmds.sh_2de9ec294e2f533d13e04c70d9525f8b58d47bb2.out b/test/expected/test_cmds.sh_2de9ec294e2f533d13e04c70d9525f8b58d47bb2.out new file mode 100644 index 0000000..8d4265f --- /dev/null +++ b/test/expected/test_cmds.sh_2de9ec294e2f533d13e04c70d9525f8b58d47bb2.out @@ -0,0 +1,2 @@ +Hello, World! +Goodbye, World! diff --git a/test/expected/test_cmds.sh_2e123104cdd2087ac40731a0aa533ba6a87ea744.err b/test/expected/test_cmds.sh_2e123104cdd2087ac40731a0aa533ba6a87ea744.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_2e123104cdd2087ac40731a0aa533ba6a87ea744.err diff --git a/test/expected/test_cmds.sh_2e123104cdd2087ac40731a0aa533ba6a87ea744.out b/test/expected/test_cmds.sh_2e123104cdd2087ac40731a0aa533ba6a87ea744.out new file mode 100644 index 0000000..8c91cd9 --- /dev/null +++ b/test/expected/test_cmds.sh_2e123104cdd2087ac40731a0aa533ba6a87ea744.out @@ -0,0 +1 @@ +[31m2009-07-20 22:59:30,221:[0m[31mERROR[0m[31m:[0m[7m[31mGoodbye[0m[31m, World![0m diff --git a/test/expected/test_cmds.sh_2e67bdbbc9a14aa772b2a9f755ed8f8124708558.err b/test/expected/test_cmds.sh_2e67bdbbc9a14aa772b2a9f755ed8f8124708558.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_2e67bdbbc9a14aa772b2a9f755ed8f8124708558.err diff --git a/test/expected/test_cmds.sh_2e67bdbbc9a14aa772b2a9f755ed8f8124708558.out b/test/expected/test_cmds.sh_2e67bdbbc9a14aa772b2a9f755ed8f8124708558.out new file mode 100644 index 0000000..3f55261 --- /dev/null +++ b/test/expected/test_cmds.sh_2e67bdbbc9a14aa772b2a9f755ed8f8124708558.out @@ -0,0 +1,23 @@ +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 )}] diff --git a/test/expected/test_cmds.sh_2ff0fe712c9b0012e42282c5f77b0b83cad37ddf.err b/test/expected/test_cmds.sh_2ff0fe712c9b0012e42282c5f77b0b83cad37ddf.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_2ff0fe712c9b0012e42282c5f77b0b83cad37ddf.err diff --git a/test/expected/test_cmds.sh_2ff0fe712c9b0012e42282c5f77b0b83cad37ddf.out b/test/expected/test_cmds.sh_2ff0fe712c9b0012e42282c5f77b0b83cad37ddf.out new file mode 100644 index 0000000..c6eedf2 --- /dev/null +++ b/test/expected/test_cmds.sh_2ff0fe712c9b0012e42282c5f77b0b83cad37ddf.out @@ -0,0 +1 @@ +[31m2009-07-20 22:59:30,221:[0m[31mERROR[0m[31m:Goodbye, World![0m diff --git a/test/expected/test_cmds.sh_305b1dfdfe785b945df4220aad6671ae1d364f55.err b/test/expected/test_cmds.sh_305b1dfdfe785b945df4220aad6671ae1d364f55.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_305b1dfdfe785b945df4220aad6671ae1d364f55.err diff --git a/test/expected/test_cmds.sh_305b1dfdfe785b945df4220aad6671ae1d364f55.out b/test/expected/test_cmds.sh_305b1dfdfe785b945df4220aad6671ae1d364f55.out new file mode 100644 index 0000000..8735c57 --- /dev/null +++ b/test/expected/test_cmds.sh_305b1dfdfe785b945df4220aad6671ae1d364f55.out @@ -0,0 +1 @@ +[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 diff --git a/test/expected/test_cmds.sh_3429080ed14d01c6a887900186f37750df0d5ff0.err b/test/expected/test_cmds.sh_3429080ed14d01c6a887900186f37750df0d5ff0.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_3429080ed14d01c6a887900186f37750df0d5ff0.err diff --git a/test/expected/test_cmds.sh_3429080ed14d01c6a887900186f37750df0d5ff0.out b/test/expected/test_cmds.sh_3429080ed14d01c6a887900186f37750df0d5ff0.out new file mode 100644 index 0000000..d51a68c --- /dev/null +++ b/test/expected/test_cmds.sh_3429080ed14d01c6a887900186f37750df0d5ff0.out @@ -0,0 +1,2 @@ +[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" diff --git a/test/expected/test_cmds.sh_34a6bcaa2877471b8ea718374101fa9ce3b78235.err b/test/expected/test_cmds.sh_34a6bcaa2877471b8ea718374101fa9ce3b78235.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_34a6bcaa2877471b8ea718374101fa9ce3b78235.err diff --git a/test/expected/test_cmds.sh_34a6bcaa2877471b8ea718374101fa9ce3b78235.out b/test/expected/test_cmds.sh_34a6bcaa2877471b8ea718374101fa9ce3b78235.out new file mode 100644 index 0000000..8ab686e --- /dev/null +++ b/test/expected/test_cmds.sh_34a6bcaa2877471b8ea718374101fa9ce3b78235.out @@ -0,0 +1 @@ +Hello, World! diff --git a/test/expected/test_cmds.sh_35b0dd8a030396742bc5acfde7715fb19f312f29.err b/test/expected/test_cmds.sh_35b0dd8a030396742bc5acfde7715fb19f312f29.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_35b0dd8a030396742bc5acfde7715fb19f312f29.err diff --git a/test/expected/test_cmds.sh_35b0dd8a030396742bc5acfde7715fb19f312f29.out b/test/expected/test_cmds.sh_35b0dd8a030396742bc5acfde7715fb19f312f29.out new file mode 100644 index 0000000..fc2b6b9 --- /dev/null +++ b/test/expected/test_cmds.sh_35b0dd8a030396742bc5acfde7715fb19f312f29.out @@ -0,0 +1,3 @@ +/ui/clock-format = "%Y-%m-%dT%H:%M:%S %Z" +info: changed config option -- /ui/clock-format +/ui/clock-format = "abc" diff --git a/test/expected/test_cmds.sh_36800217930a6a30e68c4efb20f6959c4f71aeb0.err b/test/expected/test_cmds.sh_36800217930a6a30e68c4efb20f6959c4f71aeb0.err new file mode 100644 index 0000000..28d2b21 --- /dev/null +++ b/test/expected/test_cmds.sh_36800217930a6a30e68c4efb20f6959c4f71aeb0.err @@ -0,0 +1,7 @@ +[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 diff --git a/test/expected/test_cmds.sh_36800217930a6a30e68c4efb20f6959c4f71aeb0.out b/test/expected/test_cmds.sh_36800217930a6a30e68c4efb20f6959c4f71aeb0.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_36800217930a6a30e68c4efb20f6959c4f71aeb0.out diff --git a/test/expected/test_cmds.sh_38fa2a95b703d4ce12e82882eca1938264822690.err b/test/expected/test_cmds.sh_38fa2a95b703d4ce12e82882eca1938264822690.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_38fa2a95b703d4ce12e82882eca1938264822690.err diff --git a/test/expected/test_cmds.sh_38fa2a95b703d4ce12e82882eca1938264822690.out b/test/expected/test_cmds.sh_38fa2a95b703d4ce12e82882eca1938264822690.out new file mode 100644 index 0000000..9ea386d --- /dev/null +++ b/test/expected/test_cmds.sh_38fa2a95b703d4ce12e82882eca1938264822690.out @@ -0,0 +1,3 @@ +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" diff --git a/test/expected/test_cmds.sh_3b20a298e2c059d7f6045cbc0c07ca3db3917695.err b/test/expected/test_cmds.sh_3b20a298e2c059d7f6045cbc0c07ca3db3917695.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_3b20a298e2c059d7f6045cbc0c07ca3db3917695.err diff --git a/test/expected/test_cmds.sh_3b20a298e2c059d7f6045cbc0c07ca3db3917695.out b/test/expected/test_cmds.sh_3b20a298e2c059d7f6045cbc0c07ca3db3917695.out new file mode 100644 index 0000000..d51a68c --- /dev/null +++ b/test/expected/test_cmds.sh_3b20a298e2c059d7f6045cbc0c07ca3db3917695.out @@ -0,0 +1,2 @@ +[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" diff --git a/test/expected/test_cmds.sh_453054e29aaca4c2662c45c2a1f2f63f3510d8dd.err b/test/expected/test_cmds.sh_453054e29aaca4c2662c45c2a1f2f63f3510d8dd.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_453054e29aaca4c2662c45c2a1f2f63f3510d8dd.err diff --git a/test/expected/test_cmds.sh_453054e29aaca4c2662c45c2a1f2f63f3510d8dd.out b/test/expected/test_cmds.sh_453054e29aaca4c2662c45c2a1f2f63f3510d8dd.out new file mode 100644 index 0000000..dcd3557 --- /dev/null +++ b/test/expected/test_cmds.sh_453054e29aaca4c2662c45c2a1f2f63f3510d8dd.out @@ -0,0 +1,2 @@ +[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 diff --git a/test/expected/test_cmds.sh_4b2d91b19008d5b775090e3ef87c111f9e603b15.err b/test/expected/test_cmds.sh_4b2d91b19008d5b775090e3ef87c111f9e603b15.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_4b2d91b19008d5b775090e3ef87c111f9e603b15.err diff --git a/test/expected/test_cmds.sh_4b2d91b19008d5b775090e3ef87c111f9e603b15.out b/test/expected/test_cmds.sh_4b2d91b19008d5b775090e3ef87c111f9e603b15.out new file mode 100644 index 0000000..8d4265f --- /dev/null +++ b/test/expected/test_cmds.sh_4b2d91b19008d5b775090e3ef87c111f9e603b15.out @@ -0,0 +1,2 @@ +Hello, World! +Goodbye, World! diff --git a/test/expected/test_cmds.sh_4dbe20c11056a07d2c7efb5ed15903050d628216.err b/test/expected/test_cmds.sh_4dbe20c11056a07d2c7efb5ed15903050d628216.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_4dbe20c11056a07d2c7efb5ed15903050d628216.err diff --git a/test/expected/test_cmds.sh_4dbe20c11056a07d2c7efb5ed15903050d628216.out b/test/expected/test_cmds.sh_4dbe20c11056a07d2c7efb5ed15903050d628216.out new file mode 100644 index 0000000..0dd4cb7 --- /dev/null +++ b/test/expected/test_cmds.sh_4dbe20c11056a07d2c7efb5ed15903050d628216.out @@ -0,0 +1,3 @@ +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" diff --git a/test/expected/test_cmds.sh_4f06183ed231669965965f5042fbbb507fa7deab.err b/test/expected/test_cmds.sh_4f06183ed231669965965f5042fbbb507fa7deab.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_4f06183ed231669965965f5042fbbb507fa7deab.err diff --git a/test/expected/test_cmds.sh_4f06183ed231669965965f5042fbbb507fa7deab.out b/test/expected/test_cmds.sh_4f06183ed231669965965f5042fbbb507fa7deab.out new file mode 100644 index 0000000..ef822cd --- /dev/null +++ b/test/expected/test_cmds.sh_4f06183ed231669965965f5042fbbb507fa7deab.out @@ -0,0 +1,3 @@ +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 diff --git a/test/expected/test_cmds.sh_512872aebaae73ca4f33fa93acb2f4e3b018f8b4.err b/test/expected/test_cmds.sh_512872aebaae73ca4f33fa93acb2f4e3b018f8b4.err new file mode 100644 index 0000000..60db783 --- /dev/null +++ b/test/expected/test_cmds.sh_512872aebaae73ca4f33fa93acb2f4e3b018f8b4.err @@ -0,0 +1,5 @@ +[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 diff --git a/test/expected/test_cmds.sh_512872aebaae73ca4f33fa93acb2f4e3b018f8b4.out b/test/expected/test_cmds.sh_512872aebaae73ca4f33fa93acb2f4e3b018f8b4.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_512872aebaae73ca4f33fa93acb2f4e3b018f8b4.out diff --git a/test/expected/test_cmds.sh_53a9686102f69b07b034df291f554a00b265ed20.err b/test/expected/test_cmds.sh_53a9686102f69b07b034df291f554a00b265ed20.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_53a9686102f69b07b034df291f554a00b265ed20.err diff --git a/test/expected/test_cmds.sh_53a9686102f69b07b034df291f554a00b265ed20.out b/test/expected/test_cmds.sh_53a9686102f69b07b034df291f554a00b265ed20.out new file mode 100644 index 0000000..39589f4 --- /dev/null +++ b/test/expected/test_cmds.sh_53a9686102f69b07b034df291f554a00b265ed20.out @@ -0,0 +1,2 @@ +toplevel here 123 456 +nested here nested.lnav abc 789 diff --git a/test/expected/test_cmds.sh_55c2fd15ec2c7d96dbef7b36a42a1b7b42f90dbc.err b/test/expected/test_cmds.sh_55c2fd15ec2c7d96dbef7b36a42a1b7b42f90dbc.err new file mode 100644 index 0000000..e90b75a --- /dev/null +++ b/test/expected/test_cmds.sh_55c2fd15ec2c7d96dbef7b36a42a1b7b42f90dbc.err @@ -0,0 +1,4 @@ +[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 diff --git a/test/expected/test_cmds.sh_55c2fd15ec2c7d96dbef7b36a42a1b7b42f90dbc.out b/test/expected/test_cmds.sh_55c2fd15ec2c7d96dbef7b36a42a1b7b42f90dbc.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_55c2fd15ec2c7d96dbef7b36a42a1b7b42f90dbc.out diff --git a/test/expected/test_cmds.sh_5bfd08c1639701476d7b9348c36afd46fdbe6f2a.err b/test/expected/test_cmds.sh_5bfd08c1639701476d7b9348c36afd46fdbe6f2a.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_5bfd08c1639701476d7b9348c36afd46fdbe6f2a.err diff --git a/test/expected/test_cmds.sh_5bfd08c1639701476d7b9348c36afd46fdbe6f2a.out b/test/expected/test_cmds.sh_5bfd08c1639701476d7b9348c36afd46fdbe6f2a.out new file mode 100644 index 0000000..d51a68c --- /dev/null +++ b/test/expected/test_cmds.sh_5bfd08c1639701476d7b9348c36afd46fdbe6f2a.out @@ -0,0 +1,2 @@ +[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" diff --git a/test/expected/test_cmds.sh_624a41e152675575f4b07c19b2cf0e3a028429a2.err b/test/expected/test_cmds.sh_624a41e152675575f4b07c19b2cf0e3a028429a2.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_624a41e152675575f4b07c19b2cf0e3a028429a2.err diff --git a/test/expected/test_cmds.sh_624a41e152675575f4b07c19b2cf0e3a028429a2.out b/test/expected/test_cmds.sh_624a41e152675575f4b07c19b2cf0e3a028429a2.out new file mode 100644 index 0000000..565e1c6 --- /dev/null +++ b/test/expected/test_cmds.sh_624a41e152675575f4b07c19b2cf0e3a028429a2.out @@ -0,0 +1,2 @@ +[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 diff --git a/test/expected/test_cmds.sh_62d68c0a11757c996f24c8f003e6b4059c3e30b2.err b/test/expected/test_cmds.sh_62d68c0a11757c996f24c8f003e6b4059c3e30b2.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_62d68c0a11757c996f24c8f003e6b4059c3e30b2.err diff --git a/test/expected/test_cmds.sh_62d68c0a11757c996f24c8f003e6b4059c3e30b2.out b/test/expected/test_cmds.sh_62d68c0a11757c996f24c8f003e6b4059c3e30b2.out new file mode 100644 index 0000000..493283c --- /dev/null +++ b/test/expected/test_cmds.sh_62d68c0a11757c996f24c8f003e6b4059c3e30b2.out @@ -0,0 +1 @@ +192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7" diff --git a/test/expected/test_cmds.sh_661ec61acdd8f6fa6ec1e3c2cf5f896eef431351.err b/test/expected/test_cmds.sh_661ec61acdd8f6fa6ec1e3c2cf5f896eef431351.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_661ec61acdd8f6fa6ec1e3c2cf5f896eef431351.err diff --git a/test/expected/test_cmds.sh_661ec61acdd8f6fa6ec1e3c2cf5f896eef431351.out b/test/expected/test_cmds.sh_661ec61acdd8f6fa6ec1e3c2cf5f896eef431351.out new file mode 100644 index 0000000..541a9b8 --- /dev/null +++ b/test/expected/test_cmds.sh_661ec61acdd8f6fa6ec1e3c2cf5f896eef431351.out @@ -0,0 +1,14 @@ +'' +[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 + } +} +'' diff --git a/test/expected/test_cmds.sh_6a6031113aca32fabc5a3da64b7be46f5ce5a312.err b/test/expected/test_cmds.sh_6a6031113aca32fabc5a3da64b7be46f5ce5a312.err new file mode 100644 index 0000000..bcc3200 --- /dev/null +++ b/test/expected/test_cmds.sh_6a6031113aca32fabc5a3da64b7be46f5ce5a312.err @@ -0,0 +1,8 @@ +[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 diff --git a/test/expected/test_cmds.sh_6a6031113aca32fabc5a3da64b7be46f5ce5a312.out b/test/expected/test_cmds.sh_6a6031113aca32fabc5a3da64b7be46f5ce5a312.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_6a6031113aca32fabc5a3da64b7be46f5ce5a312.out diff --git a/test/expected/test_cmds.sh_6e016c0ed61fc652be1a79b864875ffede64f281.err b/test/expected/test_cmds.sh_6e016c0ed61fc652be1a79b864875ffede64f281.err new file mode 100644 index 0000000..6c8e8ae --- /dev/null +++ b/test/expected/test_cmds.sh_6e016c0ed61fc652be1a79b864875ffede64f281.err @@ -0,0 +1,4 @@ +[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 diff --git a/test/expected/test_cmds.sh_6e016c0ed61fc652be1a79b864875ffede64f281.out b/test/expected/test_cmds.sh_6e016c0ed61fc652be1a79b864875ffede64f281.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_6e016c0ed61fc652be1a79b864875ffede64f281.out diff --git a/test/expected/test_cmds.sh_7270e37dab4549cfa7c5232451c031e1e04b4aef.err b/test/expected/test_cmds.sh_7270e37dab4549cfa7c5232451c031e1e04b4aef.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_7270e37dab4549cfa7c5232451c031e1e04b4aef.err diff --git a/test/expected/test_cmds.sh_7270e37dab4549cfa7c5232451c031e1e04b4aef.out b/test/expected/test_cmds.sh_7270e37dab4549cfa7c5232451c031e1e04b4aef.out new file mode 100644 index 0000000..bccea86 --- /dev/null +++ b/test/expected/test_cmds.sh_7270e37dab4549cfa7c5232451c031e1e04b4aef.out @@ -0,0 +1 @@ +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" diff --git a/test/expected/test_cmds.sh_73ea99c84fb1d4570e8bcd45c423b4a28fe41e81.err b/test/expected/test_cmds.sh_73ea99c84fb1d4570e8bcd45c423b4a28fe41e81.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_73ea99c84fb1d4570e8bcd45c423b4a28fe41e81.err diff --git a/test/expected/test_cmds.sh_73ea99c84fb1d4570e8bcd45c423b4a28fe41e81.out b/test/expected/test_cmds.sh_73ea99c84fb1d4570e8bcd45c423b4a28fe41e81.out new file mode 100644 index 0000000..0dd4cb7 --- /dev/null +++ b/test/expected/test_cmds.sh_73ea99c84fb1d4570e8bcd45c423b4a28fe41e81.out @@ -0,0 +1,3 @@ +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" diff --git a/test/expected/test_cmds.sh_7cb644890c4b945ff3f1e15c86a58c85cb5425c0.err b/test/expected/test_cmds.sh_7cb644890c4b945ff3f1e15c86a58c85cb5425c0.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_7cb644890c4b945ff3f1e15c86a58c85cb5425c0.err diff --git a/test/expected/test_cmds.sh_7cb644890c4b945ff3f1e15c86a58c85cb5425c0.out b/test/expected/test_cmds.sh_7cb644890c4b945ff3f1e15c86a58c85cb5425c0.out new file mode 100644 index 0000000..7ad9d78 --- /dev/null +++ b/test/expected/test_cmds.sh_7cb644890c4b945ff3f1e15c86a58c85cb5425c0.out @@ -0,0 +1,5 @@ +┏━━┳━━━━━━━━━━━━━┓ +┃c1┃ c2 ┃ +┡━━╇━━━━━━━━━━━━━┩ +│ 1│Hello, World!│ +└━━┴━━━━━━━━━━━━━┘ diff --git a/test/expected/test_cmds.sh_7e14e7f18219719453838835fa96c3451f78996d.err b/test/expected/test_cmds.sh_7e14e7f18219719453838835fa96c3451f78996d.err new file mode 100644 index 0000000..22e6c3e --- /dev/null +++ b/test/expected/test_cmds.sh_7e14e7f18219719453838835fa96c3451f78996d.err @@ -0,0 +1,6 @@ +[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 diff --git a/test/expected/test_cmds.sh_7e14e7f18219719453838835fa96c3451f78996d.out b/test/expected/test_cmds.sh_7e14e7f18219719453838835fa96c3451f78996d.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_7e14e7f18219719453838835fa96c3451f78996d.out diff --git a/test/expected/test_cmds.sh_819b3dd21348f7242f3914ad0a8c5b1cdb3f91af.err b/test/expected/test_cmds.sh_819b3dd21348f7242f3914ad0a8c5b1cdb3f91af.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_819b3dd21348f7242f3914ad0a8c5b1cdb3f91af.err diff --git a/test/expected/test_cmds.sh_819b3dd21348f7242f3914ad0a8c5b1cdb3f91af.out b/test/expected/test_cmds.sh_819b3dd21348f7242f3914ad0a8c5b1cdb3f91af.out new file mode 100644 index 0000000..67f6093 --- /dev/null +++ b/test/expected/test_cmds.sh_819b3dd21348f7242f3914ad0a8c5b1cdb3f91af.out @@ -0,0 +1 @@ +Hello: Jules diff --git a/test/expected/test_cmds.sh_8298805f897346b4bb0f14e53c06b4fa28e309e3.err b/test/expected/test_cmds.sh_8298805f897346b4bb0f14e53c06b4fa28e309e3.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_8298805f897346b4bb0f14e53c06b4fa28e309e3.err diff --git a/test/expected/test_cmds.sh_8298805f897346b4bb0f14e53c06b4fa28e309e3.out b/test/expected/test_cmds.sh_8298805f897346b4bb0f14e53c06b4fa28e309e3.out new file mode 100644 index 0000000..220b552 --- /dev/null +++ b/test/expected/test_cmds.sh_8298805f897346b4bb0f14e53c06b4fa28e309e3.out @@ -0,0 +1,3 @@ +⋮ - - [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" diff --git a/test/expected/test_cmds.sh_83654557317602d2e00adde1e5cba190d9db0dff.err b/test/expected/test_cmds.sh_83654557317602d2e00adde1e5cba190d9db0dff.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_83654557317602d2e00adde1e5cba190d9db0dff.err diff --git a/test/expected/test_cmds.sh_83654557317602d2e00adde1e5cba190d9db0dff.out b/test/expected/test_cmds.sh_83654557317602d2e00adde1e5cba190d9db0dff.out new file mode 100644 index 0000000..a90f29f --- /dev/null +++ b/test/expected/test_cmds.sh_83654557317602d2e00adde1e5cba190d9db0dff.out @@ -0,0 +1,3 @@ +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" diff --git a/test/expected/test_cmds.sh_85ae6ac1eb9a8378f7a6c39659f52671218ce64b.err b/test/expected/test_cmds.sh_85ae6ac1eb9a8378f7a6c39659f52671218ce64b.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_85ae6ac1eb9a8378f7a6c39659f52671218ce64b.err diff --git a/test/expected/test_cmds.sh_85ae6ac1eb9a8378f7a6c39659f52671218ce64b.out b/test/expected/test_cmds.sh_85ae6ac1eb9a8378f7a6c39659f52671218ce64b.out new file mode 100644 index 0000000..6be811e --- /dev/null +++ b/test/expected/test_cmds.sh_85ae6ac1eb9a8378f7a6c39659f52671218ce64b.out @@ -0,0 +1 @@ +1Hello, World! diff --git a/test/expected/test_cmds.sh_85ed177028f226e86b1d164eb1a4e18eaf036c9d.err b/test/expected/test_cmds.sh_85ed177028f226e86b1d164eb1a4e18eaf036c9d.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_85ed177028f226e86b1d164eb1a4e18eaf036c9d.err diff --git a/test/expected/test_cmds.sh_85ed177028f226e86b1d164eb1a4e18eaf036c9d.out b/test/expected/test_cmds.sh_85ed177028f226e86b1d164eb1a4e18eaf036c9d.out new file mode 100644 index 0000000..f586ffe --- /dev/null +++ b/test/expected/test_cmds.sh_85ed177028f226e86b1d164eb1a4e18eaf036c9d.out @@ -0,0 +1 @@ +[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 diff --git a/test/expected/test_cmds.sh_8758082427d6232a15053433942a4b5ad9f2e3ce.err b/test/expected/test_cmds.sh_8758082427d6232a15053433942a4b5ad9f2e3ce.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_8758082427d6232a15053433942a4b5ad9f2e3ce.err diff --git a/test/expected/test_cmds.sh_8758082427d6232a15053433942a4b5ad9f2e3ce.out b/test/expected/test_cmds.sh_8758082427d6232a15053433942a4b5ad9f2e3ce.out new file mode 100644 index 0000000..493283c --- /dev/null +++ b/test/expected/test_cmds.sh_8758082427d6232a15053433942a4b5ad9f2e3ce.out @@ -0,0 +1 @@ +192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7" diff --git a/test/expected/test_cmds.sh_876116da8ab46c0c8a212ce230d1b8a13970f78f.err b/test/expected/test_cmds.sh_876116da8ab46c0c8a212ce230d1b8a13970f78f.err new file mode 100644 index 0000000..2276bac --- /dev/null +++ b/test/expected/test_cmds.sh_876116da8ab46c0c8a212ce230d1b8a13970f78f.err @@ -0,0 +1,6 @@ +[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 diff --git a/test/expected/test_cmds.sh_876116da8ab46c0c8a212ce230d1b8a13970f78f.out b/test/expected/test_cmds.sh_876116da8ab46c0c8a212ce230d1b8a13970f78f.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_876116da8ab46c0c8a212ce230d1b8a13970f78f.out diff --git a/test/expected/test_cmds.sh_8765cbf326648e9014f8cf5f761895010fff443a.err b/test/expected/test_cmds.sh_8765cbf326648e9014f8cf5f761895010fff443a.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_8765cbf326648e9014f8cf5f761895010fff443a.err diff --git a/test/expected/test_cmds.sh_8765cbf326648e9014f8cf5f761895010fff443a.out b/test/expected/test_cmds.sh_8765cbf326648e9014f8cf5f761895010fff443a.out new file mode 100644 index 0000000..330e041 --- /dev/null +++ b/test/expected/test_cmds.sh_8765cbf326648e9014f8cf5f761895010fff443a.out @@ -0,0 +1,37 @@ +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> diff --git a/test/expected/test_cmds.sh_89afa826d1b33be6926df48443faa1d1c5f285a7.err b/test/expected/test_cmds.sh_89afa826d1b33be6926df48443faa1d1c5f285a7.err new file mode 100644 index 0000000..492a07d --- /dev/null +++ b/test/expected/test_cmds.sh_89afa826d1b33be6926df48443faa1d1c5f285a7.err @@ -0,0 +1,6 @@ +[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 diff --git a/test/expected/test_cmds.sh_89afa826d1b33be6926df48443faa1d1c5f285a7.out b/test/expected/test_cmds.sh_89afa826d1b33be6926df48443faa1d1c5f285a7.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_89afa826d1b33be6926df48443faa1d1c5f285a7.out diff --git a/test/expected/test_cmds.sh_8d5b43c693e78804a8fb06989392fa8cccb46b7b.err b/test/expected/test_cmds.sh_8d5b43c693e78804a8fb06989392fa8cccb46b7b.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_8d5b43c693e78804a8fb06989392fa8cccb46b7b.err diff --git a/test/expected/test_cmds.sh_8d5b43c693e78804a8fb06989392fa8cccb46b7b.out b/test/expected/test_cmds.sh_8d5b43c693e78804a8fb06989392fa8cccb46b7b.out new file mode 100644 index 0000000..3cc484d --- /dev/null +++ b/test/expected/test_cmds.sh_8d5b43c693e78804a8fb06989392fa8cccb46b7b.out @@ -0,0 +1,2 @@ +info: hiding lines before 2009-07-20 22:59:29.000 +info: hiding lines before 2009-07-20 22:59:29.000 diff --git a/test/expected/test_cmds.sh_9445861db011dfa2d21a44788047de345ee291e8.err b/test/expected/test_cmds.sh_9445861db011dfa2d21a44788047de345ee291e8.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_9445861db011dfa2d21a44788047de345ee291e8.err diff --git a/test/expected/test_cmds.sh_9445861db011dfa2d21a44788047de345ee291e8.out b/test/expected/test_cmds.sh_9445861db011dfa2d21a44788047de345ee291e8.out new file mode 100644 index 0000000..0dd4cb7 --- /dev/null +++ b/test/expected/test_cmds.sh_9445861db011dfa2d21a44788047de345ee291e8.out @@ -0,0 +1,3 @@ +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" diff --git a/test/expected/test_cmds.sh_95beaabe41d72cf4c6810e79c623da759ac1c71b.err b/test/expected/test_cmds.sh_95beaabe41d72cf4c6810e79c623da759ac1c71b.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_95beaabe41d72cf4c6810e79c623da759ac1c71b.err diff --git a/test/expected/test_cmds.sh_95beaabe41d72cf4c6810e79c623da759ac1c71b.out b/test/expected/test_cmds.sh_95beaabe41d72cf4c6810e79c623da759ac1c71b.out new file mode 100644 index 0000000..d51a68c --- /dev/null +++ b/test/expected/test_cmds.sh_95beaabe41d72cf4c6810e79c623da759ac1c71b.out @@ -0,0 +1,2 @@ +[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" diff --git a/test/expected/test_cmds.sh_968dac54dc80d91a5da2322890c6c26dfa0d8462.err b/test/expected/test_cmds.sh_968dac54dc80d91a5da2322890c6c26dfa0d8462.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_968dac54dc80d91a5da2322890c6c26dfa0d8462.err diff --git a/test/expected/test_cmds.sh_968dac54dc80d91a5da2322890c6c26dfa0d8462.out b/test/expected/test_cmds.sh_968dac54dc80d91a5da2322890c6c26dfa0d8462.out new file mode 100644 index 0000000..2678e6c --- /dev/null +++ b/test/expected/test_cmds.sh_968dac54dc80d91a5da2322890c6c26dfa0d8462.out @@ -0,0 +1 @@ +[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 diff --git a/test/expected/test_cmds.sh_a00943ef715598c7554b85de8502454e41bb9e28.err b/test/expected/test_cmds.sh_a00943ef715598c7554b85de8502454e41bb9e28.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_a00943ef715598c7554b85de8502454e41bb9e28.err diff --git a/test/expected/test_cmds.sh_a00943ef715598c7554b85de8502454e41bb9e28.out b/test/expected/test_cmds.sh_a00943ef715598c7554b85de8502454e41bb9e28.out new file mode 100644 index 0000000..01761e9 --- /dev/null +++ b/test/expected/test_cmds.sh_a00943ef715598c7554b85de8502454e41bb9e28.out @@ -0,0 +1,4 @@ +[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 diff --git a/test/expected/test_cmds.sh_a0e6214b2a85c90d31aee12efde850441cca7eb3.err b/test/expected/test_cmds.sh_a0e6214b2a85c90d31aee12efde850441cca7eb3.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_a0e6214b2a85c90d31aee12efde850441cca7eb3.err diff --git a/test/expected/test_cmds.sh_a0e6214b2a85c90d31aee12efde850441cca7eb3.out b/test/expected/test_cmds.sh_a0e6214b2a85c90d31aee12efde850441cca7eb3.out new file mode 100644 index 0000000..1d3eae4 --- /dev/null +++ b/test/expected/test_cmds.sh_a0e6214b2a85c90d31aee12efde850441cca7eb3.out @@ -0,0 +1,2 @@ +[1m[4mlog_top_line() [0m + 51 diff --git a/test/expected/test_cmds.sh_a1123427c31c022433d66d05ee5d5e1c8ab415e4.err b/test/expected/test_cmds.sh_a1123427c31c022433d66d05ee5d5e1c8ab415e4.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_a1123427c31c022433d66d05ee5d5e1c8ab415e4.err diff --git a/test/expected/test_cmds.sh_a1123427c31c022433d66d05ee5d5e1c8ab415e4.out b/test/expected/test_cmds.sh_a1123427c31c022433d66d05ee5d5e1c8ab415e4.out new file mode 100644 index 0000000..d51a68c --- /dev/null +++ b/test/expected/test_cmds.sh_a1123427c31c022433d66d05ee5d5e1c8ab415e4.out @@ -0,0 +1,2 @@ +[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" diff --git a/test/expected/test_cmds.sh_a190bfc279fa046a823864f1484f899d27d22953.err b/test/expected/test_cmds.sh_a190bfc279fa046a823864f1484f899d27d22953.err new file mode 100644 index 0000000..5f4c49b --- /dev/null +++ b/test/expected/test_cmds.sh_a190bfc279fa046a823864f1484f899d27d22953.err @@ -0,0 +1,3 @@ +[1m[31m✘ error[0m: unknown script -- nonexistent.lnav -- file not found +[36m --> [0m[1mcommand-option[0m:1 +[36m | [0m[37m[40m|nonexistent.lnav [0m diff --git a/test/expected/test_cmds.sh_a190bfc279fa046a823864f1484f899d27d22953.out b/test/expected/test_cmds.sh_a190bfc279fa046a823864f1484f899d27d22953.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_a190bfc279fa046a823864f1484f899d27d22953.out diff --git a/test/expected/test_cmds.sh_a5742238bad948b1372d32f7a491f03fa4e8b711.err b/test/expected/test_cmds.sh_a5742238bad948b1372d32f7a491f03fa4e8b711.err new file mode 100644 index 0000000..1c20a91 --- /dev/null +++ b/test/expected/test_cmds.sh_a5742238bad948b1372d32f7a491f03fa4e8b711.err @@ -0,0 +1,6 @@ +[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 diff --git a/test/expected/test_cmds.sh_a5742238bad948b1372d32f7a491f03fa4e8b711.out b/test/expected/test_cmds.sh_a5742238bad948b1372d32f7a491f03fa4e8b711.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_a5742238bad948b1372d32f7a491f03fa4e8b711.out diff --git a/test/expected/test_cmds.sh_a6c431f2871ea96cfdf4e11465b3bca543c7b678.err b/test/expected/test_cmds.sh_a6c431f2871ea96cfdf4e11465b3bca543c7b678.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_a6c431f2871ea96cfdf4e11465b3bca543c7b678.err diff --git a/test/expected/test_cmds.sh_a6c431f2871ea96cfdf4e11465b3bca543c7b678.out b/test/expected/test_cmds.sh_a6c431f2871ea96cfdf4e11465b3bca543c7b678.out new file mode 100644 index 0000000..c3813a5 --- /dev/null +++ b/test/expected/test_cmds.sh_a6c431f2871ea96cfdf4e11465b3bca543c7b678.out @@ -0,0 +1,10 @@ +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 diff --git a/test/expected/test_cmds.sh_a8006c4169d76baecd99a0699c2fc66a583ad676.err b/test/expected/test_cmds.sh_a8006c4169d76baecd99a0699c2fc66a583ad676.err new file mode 100644 index 0000000..644b202 --- /dev/null +++ b/test/expected/test_cmds.sh_a8006c4169d76baecd99a0699c2fc66a583ad676.err @@ -0,0 +1,7 @@ +[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 diff --git a/test/expected/test_cmds.sh_a8006c4169d76baecd99a0699c2fc66a583ad676.out b/test/expected/test_cmds.sh_a8006c4169d76baecd99a0699c2fc66a583ad676.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_a8006c4169d76baecd99a0699c2fc66a583ad676.out diff --git a/test/expected/test_cmds.sh_ac45fb0f8f9578c3ded0855f694698ec38ce31ad.err b/test/expected/test_cmds.sh_ac45fb0f8f9578c3ded0855f694698ec38ce31ad.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_ac45fb0f8f9578c3ded0855f694698ec38ce31ad.err diff --git a/test/expected/test_cmds.sh_ac45fb0f8f9578c3ded0855f694698ec38ce31ad.out b/test/expected/test_cmds.sh_ac45fb0f8f9578c3ded0855f694698ec38ce31ad.out new file mode 100644 index 0000000..fa6a319 --- /dev/null +++ b/test/expected/test_cmds.sh_ac45fb0f8f9578c3ded0855f694698ec38ce31ad.out @@ -0,0 +1,12 @@ +{ + [35m"foo bar"[0m: null, + [35m"array"[0m: [ + 1, + 2, + 3 + ], + [35m"obj"[0m: { + [35m"one"[0m: 1, + [35m"two"[0m: true + } +} diff --git a/test/expected/test_cmds.sh_af0fcbd30b3fd0d13477aa3325ef0302052a4d9f.err b/test/expected/test_cmds.sh_af0fcbd30b3fd0d13477aa3325ef0302052a4d9f.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_af0fcbd30b3fd0d13477aa3325ef0302052a4d9f.err diff --git a/test/expected/test_cmds.sh_af0fcbd30b3fd0d13477aa3325ef0302052a4d9f.out b/test/expected/test_cmds.sh_af0fcbd30b3fd0d13477aa3325ef0302052a4d9f.out new file mode 100644 index 0000000..be06882 --- /dev/null +++ b/test/expected/test_cmds.sh_af0fcbd30b3fd0d13477aa3325ef0302052a4d9f.out @@ -0,0 +1 @@ +[7m [0mSat Nov 03 08:00:00 1 normal 0 errors 0 warnings 0 marks diff --git a/test/expected/test_cmds.sh_b5a530d16c982cf769151291f0bfd612ea71183f.err b/test/expected/test_cmds.sh_b5a530d16c982cf769151291f0bfd612ea71183f.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_b5a530d16c982cf769151291f0bfd612ea71183f.err diff --git a/test/expected/test_cmds.sh_b5a530d16c982cf769151291f0bfd612ea71183f.out b/test/expected/test_cmds.sh_b5a530d16c982cf769151291f0bfd612ea71183f.out new file mode 100644 index 0000000..8ab686e --- /dev/null +++ b/test/expected/test_cmds.sh_b5a530d16c982cf769151291f0bfd612ea71183f.out @@ -0,0 +1 @@ +Hello, World! diff --git a/test/expected/test_cmds.sh_b6a3bb78e9d60e5e1f5ce5b18e40d2f1662707ab.err b/test/expected/test_cmds.sh_b6a3bb78e9d60e5e1f5ce5b18e40d2f1662707ab.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_b6a3bb78e9d60e5e1f5ce5b18e40d2f1662707ab.err diff --git a/test/expected/test_cmds.sh_b6a3bb78e9d60e5e1f5ce5b18e40d2f1662707ab.out b/test/expected/test_cmds.sh_b6a3bb78e9d60e5e1f5ce5b18e40d2f1662707ab.out new file mode 100644 index 0000000..f828498 --- /dev/null +++ b/test/expected/test_cmds.sh_b6a3bb78e9d60e5e1f5ce5b18e40d2f1662707ab.out @@ -0,0 +1,4417 @@ + +[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. + b/PgUp Move up 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. + 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. + diff --git a/test/expected/test_cmds.sh_b755a8b48c0f602f0270500b0117b76e11db546e.err b/test/expected/test_cmds.sh_b755a8b48c0f602f0270500b0117b76e11db546e.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_b755a8b48c0f602f0270500b0117b76e11db546e.err diff --git a/test/expected/test_cmds.sh_b755a8b48c0f602f0270500b0117b76e11db546e.out b/test/expected/test_cmds.sh_b755a8b48c0f602f0270500b0117b76e11db546e.out new file mode 100644 index 0000000..5fb4d90 --- /dev/null +++ b/test/expected/test_cmds.sh_b755a8b48c0f602f0270500b0117b76e11db546e.out @@ -0,0 +1,37 @@ +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 +) +}] diff --git a/test/expected/test_cmds.sh_b7fcd26c45c850c3d43ce25b1f610a311eb898c5.err b/test/expected/test_cmds.sh_b7fcd26c45c850c3d43ce25b1f610a311eb898c5.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_b7fcd26c45c850c3d43ce25b1f610a311eb898c5.err diff --git a/test/expected/test_cmds.sh_b7fcd26c45c850c3d43ce25b1f610a311eb898c5.out b/test/expected/test_cmds.sh_b7fcd26c45c850c3d43ce25b1f610a311eb898c5.out new file mode 100644 index 0000000..51109ea --- /dev/null +++ b/test/expected/test_cmds.sh_b7fcd26c45c850c3d43ce25b1f610a311eb898c5.out @@ -0,0 +1 @@ +Thu Jun 06 19:13:20 2013 +0000 UTC -- 1370546000 diff --git a/test/expected/test_cmds.sh_b9f8bf53ec2736432eb048d94a391175eb4dc5bf.err b/test/expected/test_cmds.sh_b9f8bf53ec2736432eb048d94a391175eb4dc5bf.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_b9f8bf53ec2736432eb048d94a391175eb4dc5bf.err diff --git a/test/expected/test_cmds.sh_b9f8bf53ec2736432eb048d94a391175eb4dc5bf.out b/test/expected/test_cmds.sh_b9f8bf53ec2736432eb048d94a391175eb4dc5bf.out new file mode 100644 index 0000000..607eca0 --- /dev/null +++ b/test/expected/test_cmds.sh_b9f8bf53ec2736432eb048d94a391175eb4dc5bf.out @@ -0,0 +1,2 @@ +[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 diff --git a/test/expected/test_cmds.sh_bc60341827636715c14c562863da9733cbde7e68.err b/test/expected/test_cmds.sh_bc60341827636715c14c562863da9733cbde7e68.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_bc60341827636715c14c562863da9733cbde7e68.err diff --git a/test/expected/test_cmds.sh_bc60341827636715c14c562863da9733cbde7e68.out b/test/expected/test_cmds.sh_bc60341827636715c14c562863da9733cbde7e68.out new file mode 100644 index 0000000..2678e6c --- /dev/null +++ b/test/expected/test_cmds.sh_bc60341827636715c14c562863da9733cbde7e68.out @@ -0,0 +1 @@ +[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 diff --git a/test/expected/test_cmds.sh_be1d9628fc447b6f17121d9457ea1602afe8f3f3.err b/test/expected/test_cmds.sh_be1d9628fc447b6f17121d9457ea1602afe8f3f3.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_be1d9628fc447b6f17121d9457ea1602afe8f3f3.err diff --git a/test/expected/test_cmds.sh_be1d9628fc447b6f17121d9457ea1602afe8f3f3.out b/test/expected/test_cmds.sh_be1d9628fc447b6f17121d9457ea1602afe8f3f3.out new file mode 100644 index 0000000..44e294d --- /dev/null +++ b/test/expected/test_cmds.sh_be1d9628fc447b6f17121d9457ea1602afe8f3f3.out @@ -0,0 +1 @@ +Sun Jan 31 05:53:29 2021 +0000 UTC -- 1612072409 diff --git a/test/expected/test_cmds.sh_be3b7c5874b5f4d86cc230bd2f9802c98909e148.err b/test/expected/test_cmds.sh_be3b7c5874b5f4d86cc230bd2f9802c98909e148.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_be3b7c5874b5f4d86cc230bd2f9802c98909e148.err diff --git a/test/expected/test_cmds.sh_be3b7c5874b5f4d86cc230bd2f9802c98909e148.out b/test/expected/test_cmds.sh_be3b7c5874b5f4d86cc230bd2f9802c98909e148.out new file mode 100644 index 0000000..493283c --- /dev/null +++ b/test/expected/test_cmds.sh_be3b7c5874b5f4d86cc230bd2f9802c98909e148.out @@ -0,0 +1 @@ +192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7" diff --git a/test/expected/test_cmds.sh_bf4e7fad67e281beaa11b6e2b03a00b419c7c9b0.err b/test/expected/test_cmds.sh_bf4e7fad67e281beaa11b6e2b03a00b419c7c9b0.err new file mode 100644 index 0000000..07df1b2 --- /dev/null +++ b/test/expected/test_cmds.sh_bf4e7fad67e281beaa11b6e2b03a00b419c7c9b0.err @@ -0,0 +1,7 @@ +[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 diff --git a/test/expected/test_cmds.sh_bf4e7fad67e281beaa11b6e2b03a00b419c7c9b0.out b/test/expected/test_cmds.sh_bf4e7fad67e281beaa11b6e2b03a00b419c7c9b0.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_bf4e7fad67e281beaa11b6e2b03a00b419c7c9b0.out diff --git a/test/expected/test_cmds.sh_c01e10f7cae8d36fa79ae03be887cb5477025f6d.err b/test/expected/test_cmds.sh_c01e10f7cae8d36fa79ae03be887cb5477025f6d.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_c01e10f7cae8d36fa79ae03be887cb5477025f6d.err diff --git a/test/expected/test_cmds.sh_c01e10f7cae8d36fa79ae03be887cb5477025f6d.out b/test/expected/test_cmds.sh_c01e10f7cae8d36fa79ae03be887cb5477025f6d.out new file mode 100644 index 0000000..705f4ab --- /dev/null +++ b/test/expected/test_cmds.sh_c01e10f7cae8d36fa79ae03be887cb5477025f6d.out @@ -0,0 +1,5 @@ +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 diff --git a/test/expected/test_cmds.sh_c2b4431dd0cc36c6201d263b727b3305e8cda6b1.err b/test/expected/test_cmds.sh_c2b4431dd0cc36c6201d263b727b3305e8cda6b1.err new file mode 100644 index 0000000..8295272 --- /dev/null +++ b/test/expected/test_cmds.sh_c2b4431dd0cc36c6201d263b727b3305e8cda6b1.err @@ -0,0 +1,7 @@ +[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 diff --git a/test/expected/test_cmds.sh_c2b4431dd0cc36c6201d263b727b3305e8cda6b1.out b/test/expected/test_cmds.sh_c2b4431dd0cc36c6201d263b727b3305e8cda6b1.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_c2b4431dd0cc36c6201d263b727b3305e8cda6b1.out diff --git a/test/expected/test_cmds.sh_c4777849c39a6c34dea5b0279cd7400692f1ab5f.err b/test/expected/test_cmds.sh_c4777849c39a6c34dea5b0279cd7400692f1ab5f.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_c4777849c39a6c34dea5b0279cd7400692f1ab5f.err diff --git a/test/expected/test_cmds.sh_c4777849c39a6c34dea5b0279cd7400692f1ab5f.out b/test/expected/test_cmds.sh_c4777849c39a6c34dea5b0279cd7400692f1ab5f.out new file mode 100644 index 0000000..f2fef20 --- /dev/null +++ b/test/expected/test_cmds.sh_c4777849c39a6c34dea5b0279cd7400692f1ab5f.out @@ -0,0 +1,3 @@ +info: changed config option -- /ui/clock-format +info: reset option -- /ui/clock-format +/ui/clock-format = "%Y-%m-%dT%H:%M:%S %Z" diff --git a/test/expected/test_cmds.sh_c4a15771f7e1487bf73b2e9d1564ad8ecfd76c7e.err b/test/expected/test_cmds.sh_c4a15771f7e1487bf73b2e9d1564ad8ecfd76c7e.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_c4a15771f7e1487bf73b2e9d1564ad8ecfd76c7e.err diff --git a/test/expected/test_cmds.sh_c4a15771f7e1487bf73b2e9d1564ad8ecfd76c7e.out b/test/expected/test_cmds.sh_c4a15771f7e1487bf73b2e9d1564ad8ecfd76c7e.out new file mode 100644 index 0000000..8ab686e --- /dev/null +++ b/test/expected/test_cmds.sh_c4a15771f7e1487bf73b2e9d1564ad8ecfd76c7e.out @@ -0,0 +1 @@ +Hello, World! diff --git a/test/expected/test_cmds.sh_c72aed622c19d493968e33f20d5dde3838a4258f.err b/test/expected/test_cmds.sh_c72aed622c19d493968e33f20d5dde3838a4258f.err new file mode 100644 index 0000000..538a78e --- /dev/null +++ b/test/expected/test_cmds.sh_c72aed622c19d493968e33f20d5dde3838a4258f.err @@ -0,0 +1,6 @@ +[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 diff --git a/test/expected/test_cmds.sh_c72aed622c19d493968e33f20d5dde3838a4258f.out b/test/expected/test_cmds.sh_c72aed622c19d493968e33f20d5dde3838a4258f.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_c72aed622c19d493968e33f20d5dde3838a4258f.out diff --git a/test/expected/test_cmds.sh_c7fabc25374ff47c47931f63b1d697061b816a28.err b/test/expected/test_cmds.sh_c7fabc25374ff47c47931f63b1d697061b816a28.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_c7fabc25374ff47c47931f63b1d697061b816a28.err diff --git a/test/expected/test_cmds.sh_c7fabc25374ff47c47931f63b1d697061b816a28.out b/test/expected/test_cmds.sh_c7fabc25374ff47c47931f63b1d697061b816a28.out new file mode 100644 index 0000000..76c53dd --- /dev/null +++ b/test/expected/test_cmds.sh_c7fabc25374ff47c47931f63b1d697061b816a28.out @@ -0,0 +1,2 @@ +[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 diff --git a/test/expected/test_cmds.sh_ca66660c973f76a3c2a147c7f5035bcb4e8a8bbc.err b/test/expected/test_cmds.sh_ca66660c973f76a3c2a147c7f5035bcb4e8a8bbc.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_ca66660c973f76a3c2a147c7f5035bcb4e8a8bbc.err diff --git a/test/expected/test_cmds.sh_ca66660c973f76a3c2a147c7f5035bcb4e8a8bbc.out b/test/expected/test_cmds.sh_ca66660c973f76a3c2a147c7f5035bcb4e8a8bbc.out new file mode 100644 index 0000000..6ae2e70 --- /dev/null +++ b/test/expected/test_cmds.sh_ca66660c973f76a3c2a147c7f5035bcb4e8a8bbc.out @@ -0,0 +1,2 @@ +2009-07-20 22:59:27,672:DEBUG:Hello, World! + How are you today? diff --git a/test/expected/test_cmds.sh_ccd326da92d1cacda63501cd1a3077381a18e8f2.err b/test/expected/test_cmds.sh_ccd326da92d1cacda63501cd1a3077381a18e8f2.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_ccd326da92d1cacda63501cd1a3077381a18e8f2.err diff --git a/test/expected/test_cmds.sh_ccd326da92d1cacda63501cd1a3077381a18e8f2.out b/test/expected/test_cmds.sh_ccd326da92d1cacda63501cd1a3077381a18e8f2.out new file mode 100644 index 0000000..bc67837 --- /dev/null +++ b/test/expected/test_cmds.sh_ccd326da92d1cacda63501cd1a3077381a18e8f2.out @@ -0,0 +1 @@ +[7m [0m[1m[7m[31mS[0mat Nov 03 00:00:00 2 normal 2 errors 0 warnings 0 marks diff --git a/test/expected/test_cmds.sh_d3b69abdfb39e4bfa5828c2f9593e2b2b7ed4d5d.err b/test/expected/test_cmds.sh_d3b69abdfb39e4bfa5828c2f9593e2b2b7ed4d5d.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_d3b69abdfb39e4bfa5828c2f9593e2b2b7ed4d5d.err diff --git a/test/expected/test_cmds.sh_d3b69abdfb39e4bfa5828c2f9593e2b2b7ed4d5d.out b/test/expected/test_cmds.sh_d3b69abdfb39e4bfa5828c2f9593e2b2b7ed4d5d.out new file mode 100644 index 0000000..0dd4cb7 --- /dev/null +++ b/test/expected/test_cmds.sh_d3b69abdfb39e4bfa5828c2f9593e2b2b7ed4d5d.out @@ -0,0 +1,3 @@ +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" diff --git a/test/expected/test_cmds.sh_d76d77ad95b9f120825417a6a8220c13df9541fc.err b/test/expected/test_cmds.sh_d76d77ad95b9f120825417a6a8220c13df9541fc.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_d76d77ad95b9f120825417a6a8220c13df9541fc.err diff --git a/test/expected/test_cmds.sh_d76d77ad95b9f120825417a6a8220c13df9541fc.out b/test/expected/test_cmds.sh_d76d77ad95b9f120825417a6a8220c13df9541fc.out new file mode 100644 index 0000000..0dd4cb7 --- /dev/null +++ b/test/expected/test_cmds.sh_d76d77ad95b9f120825417a6a8220c13df9541fc.out @@ -0,0 +1,3 @@ +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" diff --git a/test/expected/test_cmds.sh_d7eebacdcf2cb194f25fa4ef97b7b5376b442467.err b/test/expected/test_cmds.sh_d7eebacdcf2cb194f25fa4ef97b7b5376b442467.err new file mode 100644 index 0000000..07df1b2 --- /dev/null +++ b/test/expected/test_cmds.sh_d7eebacdcf2cb194f25fa4ef97b7b5376b442467.err @@ -0,0 +1,7 @@ +[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 diff --git a/test/expected/test_cmds.sh_d7eebacdcf2cb194f25fa4ef97b7b5376b442467.out b/test/expected/test_cmds.sh_d7eebacdcf2cb194f25fa4ef97b7b5376b442467.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_d7eebacdcf2cb194f25fa4ef97b7b5376b442467.out diff --git a/test/expected/test_cmds.sh_d836c84398c831c976df46f46fe3bf5983c44c37.err b/test/expected/test_cmds.sh_d836c84398c831c976df46f46fe3bf5983c44c37.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_d836c84398c831c976df46f46fe3bf5983c44c37.err diff --git a/test/expected/test_cmds.sh_d836c84398c831c976df46f46fe3bf5983c44c37.out b/test/expected/test_cmds.sh_d836c84398c831c976df46f46fe3bf5983c44c37.out new file mode 100644 index 0000000..1d3eae4 --- /dev/null +++ b/test/expected/test_cmds.sh_d836c84398c831c976df46f46fe3bf5983c44c37.out @@ -0,0 +1,2 @@ +[1m[4mlog_top_line() [0m + 51 diff --git a/test/expected/test_cmds.sh_d8eeef53a58bdeddbc1028d7c525413e3ca1c8df.err b/test/expected/test_cmds.sh_d8eeef53a58bdeddbc1028d7c525413e3ca1c8df.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_d8eeef53a58bdeddbc1028d7c525413e3ca1c8df.err diff --git a/test/expected/test_cmds.sh_d8eeef53a58bdeddbc1028d7c525413e3ca1c8df.out b/test/expected/test_cmds.sh_d8eeef53a58bdeddbc1028d7c525413e3ca1c8df.out new file mode 100644 index 0000000..aec6735 --- /dev/null +++ b/test/expected/test_cmds.sh_d8eeef53a58bdeddbc1028d7c525413e3ca1c8df.out @@ -0,0 +1 @@ +/vmw/cgi/tramp 200 diff --git a/test/expected/test_cmds.sh_dbdd62995fdefc8318053af05a32416eccfa79fc.err b/test/expected/test_cmds.sh_dbdd62995fdefc8318053af05a32416eccfa79fc.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_dbdd62995fdefc8318053af05a32416eccfa79fc.err diff --git a/test/expected/test_cmds.sh_dbdd62995fdefc8318053af05a32416eccfa79fc.out b/test/expected/test_cmds.sh_dbdd62995fdefc8318053af05a32416eccfa79fc.out new file mode 100644 index 0000000..f3d0606 --- /dev/null +++ b/test/expected/test_cmds.sh_dbdd62995fdefc8318053af05a32416eccfa79fc.out @@ -0,0 +1 @@ +[7m [0m[1m[7m[31mS[0mat Nov 03 08:00:00 2 normal 2 errors 0 warnings 0 marks diff --git a/test/expected/test_cmds.sh_dd41fbbcd71699314af232156d4155fbdf849131.err b/test/expected/test_cmds.sh_dd41fbbcd71699314af232156d4155fbdf849131.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_dd41fbbcd71699314af232156d4155fbdf849131.err diff --git a/test/expected/test_cmds.sh_dd41fbbcd71699314af232156d4155fbdf849131.out b/test/expected/test_cmds.sh_dd41fbbcd71699314af232156d4155fbdf849131.out new file mode 100644 index 0000000..c1837e7 --- /dev/null +++ b/test/expected/test_cmds.sh_dd41fbbcd71699314af232156d4155fbdf849131.out @@ -0,0 +1,3 @@ +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" diff --git a/test/expected/test_cmds.sh_df6f4cea16bb8f20e6408fe4b40335e6de8a7f18.err b/test/expected/test_cmds.sh_df6f4cea16bb8f20e6408fe4b40335e6de8a7f18.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_df6f4cea16bb8f20e6408fe4b40335e6de8a7f18.err diff --git a/test/expected/test_cmds.sh_df6f4cea16bb8f20e6408fe4b40335e6de8a7f18.out b/test/expected/test_cmds.sh_df6f4cea16bb8f20e6408fe4b40335e6de8a7f18.out new file mode 100644 index 0000000..e905c55 --- /dev/null +++ b/test/expected/test_cmds.sh_df6f4cea16bb8f20e6408fe4b40335e6de8a7f18.out @@ -0,0 +1,3 @@ +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" diff --git a/test/expected/test_cmds.sh_e495cf059477e3f80c3241c6f8d5808b6f1d19c7.err b/test/expected/test_cmds.sh_e495cf059477e3f80c3241c6f8d5808b6f1d19c7.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_e495cf059477e3f80c3241c6f8d5808b6f1d19c7.err diff --git a/test/expected/test_cmds.sh_e495cf059477e3f80c3241c6f8d5808b6f1d19c7.out b/test/expected/test_cmds.sh_e495cf059477e3f80c3241c6f8d5808b6f1d19c7.out new file mode 100644 index 0000000..2f2f721 --- /dev/null +++ b/test/expected/test_cmds.sh_e495cf059477e3f80c3241c6f8d5808b6f1d19c7.out @@ -0,0 +1,2 @@ +info: hiding lines after 2009-07-20 22:59:29.000 +info: hiding lines after 2009-07-20 22:59:29.000 diff --git a/test/expected/test_cmds.sh_e7e8244fac65bc51dbd5af31be476fe3b8776bfc.err b/test/expected/test_cmds.sh_e7e8244fac65bc51dbd5af31be476fe3b8776bfc.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_e7e8244fac65bc51dbd5af31be476fe3b8776bfc.err diff --git a/test/expected/test_cmds.sh_e7e8244fac65bc51dbd5af31be476fe3b8776bfc.out b/test/expected/test_cmds.sh_e7e8244fac65bc51dbd5af31be476fe3b8776bfc.out new file mode 100644 index 0000000..21e4506 --- /dev/null +++ b/test/expected/test_cmds.sh_e7e8244fac65bc51dbd5af31be476fe3b8776bfc.out @@ -0,0 +1,12 @@ +{ +[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 + } +} diff --git a/test/expected/test_cmds.sh_e911aebcb2defb7471aa620c45a86cad449ad505.err b/test/expected/test_cmds.sh_e911aebcb2defb7471aa620c45a86cad449ad505.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_e911aebcb2defb7471aa620c45a86cad449ad505.err diff --git a/test/expected/test_cmds.sh_e911aebcb2defb7471aa620c45a86cad449ad505.out b/test/expected/test_cmds.sh_e911aebcb2defb7471aa620c45a86cad449ad505.out new file mode 100644 index 0000000..d51a68c --- /dev/null +++ b/test/expected/test_cmds.sh_e911aebcb2defb7471aa620c45a86cad449ad505.out @@ -0,0 +1,2 @@ +[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" diff --git a/test/expected/test_cmds.sh_eb22c3e94c536a1bfaeae0c40d271b5b4b08f4fc.err b/test/expected/test_cmds.sh_eb22c3e94c536a1bfaeae0c40d271b5b4b08f4fc.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_eb22c3e94c536a1bfaeae0c40d271b5b4b08f4fc.err diff --git a/test/expected/test_cmds.sh_eb22c3e94c536a1bfaeae0c40d271b5b4b08f4fc.out b/test/expected/test_cmds.sh_eb22c3e94c536a1bfaeae0c40d271b5b4b08f4fc.out new file mode 100644 index 0000000..6599581 --- /dev/null +++ b/test/expected/test_cmds.sh_eb22c3e94c536a1bfaeae0c40d271b5b4b08f4fc.out @@ -0,0 +1,3 @@ +{"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} diff --git a/test/expected/test_cmds.sh_ec2b28c6ea328e3ea56b13ab8ca3d9ee856a9dda.err b/test/expected/test_cmds.sh_ec2b28c6ea328e3ea56b13ab8ca3d9ee856a9dda.err new file mode 100644 index 0000000..d9db72b --- /dev/null +++ b/test/expected/test_cmds.sh_ec2b28c6ea328e3ea56b13ab8ca3d9ee856a9dda.err @@ -0,0 +1,6 @@ +[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 diff --git a/test/expected/test_cmds.sh_ec2b28c6ea328e3ea56b13ab8ca3d9ee856a9dda.out b/test/expected/test_cmds.sh_ec2b28c6ea328e3ea56b13ab8ca3d9ee856a9dda.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_ec2b28c6ea328e3ea56b13ab8ca3d9ee856a9dda.out diff --git a/test/expected/test_cmds.sh_ed5b73be0b991e0e8d6735e31df5b37c4286321b.err b/test/expected/test_cmds.sh_ed5b73be0b991e0e8d6735e31df5b37c4286321b.err new file mode 100644 index 0000000..929412e --- /dev/null +++ b/test/expected/test_cmds.sh_ed5b73be0b991e0e8d6735e31df5b37c4286321b.err @@ -0,0 +1,7 @@ +[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 diff --git a/test/expected/test_cmds.sh_ed5b73be0b991e0e8d6735e31df5b37c4286321b.out b/test/expected/test_cmds.sh_ed5b73be0b991e0e8d6735e31df5b37c4286321b.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_ed5b73be0b991e0e8d6735e31df5b37c4286321b.out diff --git a/test/expected/test_cmds.sh_f788d5f5932905d09ecbd581040ec5ce76459da5.err b/test/expected/test_cmds.sh_f788d5f5932905d09ecbd581040ec5ce76459da5.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_f788d5f5932905d09ecbd581040ec5ce76459da5.err diff --git a/test/expected/test_cmds.sh_f788d5f5932905d09ecbd581040ec5ce76459da5.out b/test/expected/test_cmds.sh_f788d5f5932905d09ecbd581040ec5ce76459da5.out new file mode 100644 index 0000000..f0aaf97 --- /dev/null +++ b/test/expected/test_cmds.sh_f788d5f5932905d09ecbd581040ec5ce76459da5.out @@ -0,0 +1,3 @@ +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 diff --git a/test/expected/test_cmds.sh_ff6faebbde8586e04bfadba14a3d2bb4451784ad.err b/test/expected/test_cmds.sh_ff6faebbde8586e04bfadba14a3d2bb4451784ad.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_cmds.sh_ff6faebbde8586e04bfadba14a3d2bb4451784ad.err diff --git a/test/expected/test_cmds.sh_ff6faebbde8586e04bfadba14a3d2bb4451784ad.out b/test/expected/test_cmds.sh_ff6faebbde8586e04bfadba14a3d2bb4451784ad.out new file mode 100644 index 0000000..6ae2e70 --- /dev/null +++ b/test/expected/test_cmds.sh_ff6faebbde8586e04bfadba14a3d2bb4451784ad.out @@ -0,0 +1,2 @@ +2009-07-20 22:59:27,672:DEBUG:Hello, World! + How are you today? diff --git a/test/expected/test_config.sh_2765ea0d4c037b8c935840604edb0ae796c97a04.err b/test/expected/test_config.sh_2765ea0d4c037b8c935840604edb0ae796c97a04.err new file mode 100644 index 0000000..b1b0ffd --- /dev/null +++ b/test/expected/test_config.sh_2765ea0d4c037b8c935840604edb0ae796c97a04.err @@ -0,0 +1,6 @@ +[1m[31m✘ error[0m: expecting an integer, found: abc +[36m --> [0m[1mcommand-option[0m:1 +[36m | [0m[37m[40m:[0m[1m[36m[40mconfig[0m[37m[40m /tuning/archive-manager/min-free-space abc[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 diff --git a/test/expected/test_config.sh_2765ea0d4c037b8c935840604edb0ae796c97a04.out b/test/expected/test_config.sh_2765ea0d4c037b8c935840604edb0ae796c97a04.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_config.sh_2765ea0d4c037b8c935840604edb0ae796c97a04.out diff --git a/test/expected/test_config.sh_5105c29004e297521310ca0bd0fd560b01c2c549.err b/test/expected/test_config.sh_5105c29004e297521310ca0bd0fd560b01c2c549.err new file mode 100644 index 0000000..092b26a --- /dev/null +++ b/test/expected/test_config.sh_5105c29004e297521310ca0bd0fd560b01c2c549.err @@ -0,0 +1,20 @@ +[1m[31m✘ error[0m: '[1mbad[0m' is not a supported configuration $schema version +[36m --> [0m[1m{test_dir}/bad-config2/formats/invalid-config/config.bad-schema.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/config-v1.schema.json[0m +[36m =[0m [36mhelp[0m: [1mProperty Synopsis[0m + [1m/$schema[0m [4m<schema-uri>[0m + [1mDescription[0m + The URI that specifies the schema that describes this type of file + [1mExample[0m + https://lnav.org/schemas/config-v1.schema.json +[1m[31m✘ error[0m: invalid JSON +[36m --> [0m[1m{test_dir}/bad-config2/formats/invalid-config/config.malformed.json[0m:3 +[36m | [0mparse error: object key and value must be separated by a colon (':') +[36m | [0m "ui": "theme", "abc", "def": "" } +[36m | [0m (right here) ------^ +[36m | [0m +[1m[31m✘ error[0m: invalid JSON + [1m[31mreason[0m: parse error: premature EOF +[36m --> [0m[1m{test_dir}/bad-config2/formats/invalid-config/config.truncated.json[0m:3 diff --git a/test/expected/test_config.sh_5105c29004e297521310ca0bd0fd560b01c2c549.out b/test/expected/test_config.sh_5105c29004e297521310ca0bd0fd560b01c2c549.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_config.sh_5105c29004e297521310ca0bd0fd560b01c2c549.out diff --git a/test/expected/test_config.sh_5fd9fbccc35e9b06abdd913da0c16bdb306b926e.err b/test/expected/test_config.sh_5fd9fbccc35e9b06abdd913da0c16bdb306b926e.err new file mode 100644 index 0000000..96307c5 --- /dev/null +++ b/test/expected/test_config.sh_5fd9fbccc35e9b06abdd913da0c16bdb306b926e.err @@ -0,0 +1,6 @@ +[1m[31m✘ error[0m: unknown configuration option -- /bad/path +[36m --> [0m[1mcommand-option[0m:1 +[36m | [0m[37m[40m:[0m[1m[36m[40mreset-config[0m[37m[40m /bad/path [0m +[36m =[0m [36mhelp[0m: [4m:[0m[1m[4mreset-config[0m[4m [0m[4moption[0m + ══════════════════════════════════════════════════════════════════════ + Reset the configuration option to its default value diff --git a/test/expected/test_config.sh_5fd9fbccc35e9b06abdd913da0c16bdb306b926e.out b/test/expected/test_config.sh_5fd9fbccc35e9b06abdd913da0c16bdb306b926e.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_config.sh_5fd9fbccc35e9b06abdd913da0c16bdb306b926e.out diff --git a/test/expected/test_config.sh_a0907769aba112d628e7ebe39c4ec252e5e0bc69.err b/test/expected/test_config.sh_a0907769aba112d628e7ebe39c4ec252e5e0bc69.err new file mode 100644 index 0000000..ec11ba5 --- /dev/null +++ b/test/expected/test_config.sh_a0907769aba112d628e7ebe39c4ec252e5e0bc69.err @@ -0,0 +1,38 @@ +[1m[31m✘ error[0m: '[1mbad[0m' is not a supported configuration $schema version +[36m --> [0m[1m{test_dir}/bad-config2/formats/invalid-config/config.bad-schema.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/config-v1.schema.json[0m +[36m =[0m [36mhelp[0m: [1mProperty Synopsis[0m + [1m/$schema[0m [4m<schema-uri>[0m + [1mDescription[0m + The URI that specifies the schema that describes this type of file + [1mExample[0m + https://lnav.org/schemas/config-v1.schema.json +[33m⚠ warning[0m: unexpected value for property “[1m/ui[0m” +[36m --> [0m[1m{test_dir}/bad-config2/formats/invalid-config/config.malformed.json[0m:2 +[36m | [0m[37m[40m "ui": "theme", [0m +[36m =[0m [36mhelp[0m: [1mAvailable Properties[0m + [1m$schema[0m [4m<schema-uri>[0m + [1mtuning[0m[1m/[0m + [1mui[0m[1m/[0m + [1mlog[0m[1m/[0m + [1mglobal[0m[1m/[0m +[1m[31m✘ error[0m: invalid JSON +[36m --> [0m[1m{test_dir}/bad-config2/formats/invalid-config/config.malformed.json[0m:3 +[36m | [0mparse error: object key and value must be separated by a colon (':') +[36m | [0m "ui": "theme", "abc", "def": "" } +[36m | [0m (right here) ------^ +[36m | [0m +[33m⚠ warning[0m: unexpected value for property “[1m/ui[0m” +[36m --> [0m[1m{test_dir}/bad-config2/formats/invalid-config/config.truncated.json[0m:2 +[36m | [0m[37m[40m "ui": "theme" [0m +[36m =[0m [36mhelp[0m: [1mAvailable Properties[0m + [1m$schema[0m [4m<schema-uri>[0m + [1mtuning[0m[1m/[0m + [1mui[0m[1m/[0m + [1mlog[0m[1m/[0m + [1mglobal[0m[1m/[0m +[1m[31m✘ error[0m: invalid JSON + [1m[31mreason[0m: parse error: premature EOF +[36m --> [0m[1m{test_dir}/bad-config2/formats/invalid-config/config.truncated.json[0m:3 diff --git a/test/expected/test_config.sh_a0907769aba112d628e7ebe39c4ec252e5e0bc69.out b/test/expected/test_config.sh_a0907769aba112d628e7ebe39c4ec252e5e0bc69.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_config.sh_a0907769aba112d628e7ebe39c4ec252e5e0bc69.out diff --git a/test/expected/test_config.sh_b08f7523659d1c12f0e59920cd40d17d4a83b72f.err b/test/expected/test_config.sh_b08f7523659d1c12f0e59920cd40d17d4a83b72f.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_config.sh_b08f7523659d1c12f0e59920cd40d17d4a83b72f.err diff --git a/test/expected/test_config.sh_b08f7523659d1c12f0e59920cd40d17d4a83b72f.out b/test/expected/test_config.sh_b08f7523659d1c12f0e59920cd40d17d4a83b72f.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_config.sh_b08f7523659d1c12f0e59920cd40d17d4a83b72f.out diff --git a/test/expected/test_config.sh_d622658dc98327b1b2fd346802d24bc633e34ac7.err b/test/expected/test_config.sh_d622658dc98327b1b2fd346802d24bc633e34ac7.err new file mode 100644 index 0000000..d8b2b12 --- /dev/null +++ b/test/expected/test_config.sh_d622658dc98327b1b2fd346802d24bc633e34ac7.err @@ -0,0 +1,12 @@ +[1m[31m✘ error[0m: invalid value for property “[1m/ui/theme-defs/default/styles/text/color[0m” + [1m[31mreason[0m: invalid color -- “#f” +[1m[31m | [0m [1m[31mreason[0m: Could not parse color: #f +[36m --> [0m[1mcommand-option[0m:1 +[36m =[0m [36mhelp[0m: [1mProperty Synopsis[0m + [1m/ui/theme-defs/default/styles/text/color[0m [4m#hex|color_name[0m + [1mDescription[0m + The foreground color value for this style. The value can be the name of an xterm color, the hexadecimal value, or a theme variable reference. + [1mExamples[0m + #fff + Green + $black diff --git a/test/expected/test_config.sh_d622658dc98327b1b2fd346802d24bc633e34ac7.out b/test/expected/test_config.sh_d622658dc98327b1b2fd346802d24bc633e34ac7.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_config.sh_d622658dc98327b1b2fd346802d24bc633e34ac7.out diff --git a/test/expected/test_config.sh_d708b6fd32d83ce0ee00ca5383388308ba5a06e1.err b/test/expected/test_config.sh_d708b6fd32d83ce0ee00ca5383388308ba5a06e1.err new file mode 100644 index 0000000..93cba93 --- /dev/null +++ b/test/expected/test_config.sh_d708b6fd32d83ce0ee00ca5383388308ba5a06e1.err @@ -0,0 +1,8 @@ +[1m[31m✘ error[0m: invalid value for property “[1m/ui/theme[0m” + [1m[31mreason[0m: unknown theme -- “baddy” +[1m[31m | [0m [36m =[0m [36mhelp[0m: The available themes are: default, eldar, grayscale, monocai, night-owl, solarized-dark, solarized-light +[36m --> [0m[1mcommand-option[0m:1 +[36m =[0m [36mhelp[0m: [1mProperty Synopsis[0m + [1m/ui/theme[0m [4mtheme_name[0m + [1mDescription[0m + The name of the theme to use. diff --git a/test/expected/test_config.sh_d708b6fd32d83ce0ee00ca5383388308ba5a06e1.out b/test/expected/test_config.sh_d708b6fd32d83ce0ee00ca5383388308ba5a06e1.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_config.sh_d708b6fd32d83ce0ee00ca5383388308ba5a06e1.out diff --git a/test/expected/test_config.sh_eec3768ebc201ca63bca1411270965f78db1abfc.err b/test/expected/test_config.sh_eec3768ebc201ca63bca1411270965f78db1abfc.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_config.sh_eec3768ebc201ca63bca1411270965f78db1abfc.err diff --git a/test/expected/test_config.sh_eec3768ebc201ca63bca1411270965f78db1abfc.out b/test/expected/test_config.sh_eec3768ebc201ca63bca1411270965f78db1abfc.out new file mode 100644 index 0000000..8fafd97 --- /dev/null +++ b/test/expected/test_config.sh_eec3768ebc201ca63bca1411270965f78db1abfc.out @@ -0,0 +1 @@ +/global/foo = "foo" diff --git a/test/expected/test_events.sh_09ba47d70bfca88e89faf29598c1095292cad435.err b/test/expected/test_events.sh_09ba47d70bfca88e89faf29598c1095292cad435.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_events.sh_09ba47d70bfca88e89faf29598c1095292cad435.err diff --git a/test/expected/test_events.sh_09ba47d70bfca88e89faf29598c1095292cad435.out b/test/expected/test_events.sh_09ba47d70bfca88e89faf29598c1095292cad435.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_events.sh_09ba47d70bfca88e89faf29598c1095292cad435.out diff --git a/test/expected/test_events.sh_153e221f3cb50f4d3e4581be0bf311e62489c42d.err b/test/expected/test_events.sh_153e221f3cb50f4d3e4581be0bf311e62489c42d.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_events.sh_153e221f3cb50f4d3e4581be0bf311e62489c42d.err diff --git a/test/expected/test_events.sh_153e221f3cb50f4d3e4581be0bf311e62489c42d.out b/test/expected/test_events.sh_153e221f3cb50f4d3e4581be0bf311e62489c42d.out new file mode 100644 index 0000000..2ba3232 --- /dev/null +++ b/test/expected/test_events.sh_153e221f3cb50f4d3e4581be0bf311e62489c42d.out @@ -0,0 +1,6 @@ +/log/watch-expressions = { + "http-errors": { + "expr": ":sc_status >= 400", + "enabled": true + } +} diff --git a/test/expected/test_events.sh_3dae146ef3bf201c43656344803694a34a3dbfec.err b/test/expected/test_events.sh_3dae146ef3bf201c43656344803694a34a3dbfec.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_events.sh_3dae146ef3bf201c43656344803694a34a3dbfec.err diff --git a/test/expected/test_events.sh_3dae146ef3bf201c43656344803694a34a3dbfec.out b/test/expected/test_events.sh_3dae146ef3bf201c43656344803694a34a3dbfec.out new file mode 100644 index 0000000..b701c72 --- /dev/null +++ b/test/expected/test_events.sh_3dae146ef3bf201c43656344803694a34a3dbfec.out @@ -0,0 +1,2 @@ +{"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"}} diff --git a/test/expected/test_events.sh_6f9523d43f174397829b6a7fe6ee0090d97df5f9.err b/test/expected/test_events.sh_6f9523d43f174397829b6a7fe6ee0090d97df5f9.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_events.sh_6f9523d43f174397829b6a7fe6ee0090d97df5f9.err diff --git a/test/expected/test_events.sh_6f9523d43f174397829b6a7fe6ee0090d97df5f9.out b/test/expected/test_events.sh_6f9523d43f174397829b6a7fe6ee0090d97df5f9.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_events.sh_6f9523d43f174397829b6a7fe6ee0090d97df5f9.out diff --git a/test/expected/test_events.sh_729f77b8e7136d64d22a6610a80ba6b584a2d896.err b/test/expected/test_events.sh_729f77b8e7136d64d22a6610a80ba6b584a2d896.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_events.sh_729f77b8e7136d64d22a6610a80ba6b584a2d896.err diff --git a/test/expected/test_events.sh_729f77b8e7136d64d22a6610a80ba6b584a2d896.out b/test/expected/test_events.sh_729f77b8e7136d64d22a6610a80ba6b584a2d896.out new file mode 100644 index 0000000..019a01b --- /dev/null +++ b/test/expected/test_events.sh_729f77b8e7136d64d22a6610a80ba6b584a2d896.out @@ -0,0 +1,3 @@ +/log/watch-expressions = { + +} diff --git a/test/expected/test_events.sh_d9c7907f907b2335e1328b23fdc46d0968a608d9.err b/test/expected/test_events.sh_d9c7907f907b2335e1328b23fdc46d0968a608d9.err new file mode 100644 index 0000000..0e6fb92 --- /dev/null +++ b/test/expected/test_events.sh_d9c7907f907b2335e1328b23fdc46d0968a608d9.err @@ -0,0 +1,10 @@ +[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. diff --git a/test/expected/test_events.sh_d9c7907f907b2335e1328b23fdc46d0968a608d9.out b/test/expected/test_events.sh_d9c7907f907b2335e1328b23fdc46d0968a608d9.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_events.sh_d9c7907f907b2335e1328b23fdc46d0968a608d9.out diff --git a/test/expected/test_events.sh_ed8dc44add223341c03ccb7b3e18371bdb42b710.err b/test/expected/test_events.sh_ed8dc44add223341c03ccb7b3e18371bdb42b710.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_events.sh_ed8dc44add223341c03ccb7b3e18371bdb42b710.err diff --git a/test/expected/test_events.sh_ed8dc44add223341c03ccb7b3e18371bdb42b710.out b/test/expected/test_events.sh_ed8dc44add223341c03ccb7b3e18371bdb42b710.out new file mode 100644 index 0000000..17a8132 --- /dev/null +++ b/test/expected/test_events.sh_ed8dc44add223341c03ccb7b3e18371bdb42b710.out @@ -0,0 +1,3 @@ +{"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"}}} diff --git a/test/expected/test_format_loader.sh_15e861d2327512a721fd42ae51dc5427689e0bb6.err b/test/expected/test_format_loader.sh_15e861d2327512a721fd42ae51dc5427689e0bb6.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_format_loader.sh_15e861d2327512a721fd42ae51dc5427689e0bb6.err diff --git a/test/expected/test_format_loader.sh_15e861d2327512a721fd42ae51dc5427689e0bb6.out b/test/expected/test_format_loader.sh_15e861d2327512a721fd42ae51dc5427689e0bb6.out new file mode 100644 index 0000000..5f62842 --- /dev/null +++ b/test/expected/test_format_loader.sh_15e861d2327512a721fd42ae51dc5427689e0bb6.out @@ -0,0 +1,9 @@ +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> diff --git a/test/expected/test_format_loader.sh_3f1d6f35e8a9ae4fd3e91ffaa82a037b5a847ab7.err b/test/expected/test_format_loader.sh_3f1d6f35e8a9ae4fd3e91ffaa82a037b5a847ab7.err new file mode 100644 index 0000000..202b451 --- /dev/null +++ b/test/expected/test_format_loader.sh_3f1d6f35e8a9ae4fd3e91ffaa82a037b5a847ab7.err @@ -0,0 +1,171 @@ +[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:35 +[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:40 +[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. +[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 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:30 +[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:33 +[36m =[0m [36mnote[0m: matched regex = [1mwith-level[0m + captured level = “debug” +[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:37 +[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:41 +[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” + +[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: 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:23 +[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:24 +[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 diff --git a/test/expected/test_format_loader.sh_3f1d6f35e8a9ae4fd3e91ffaa82a037b5a847ab7.out b/test/expected/test_format_loader.sh_3f1d6f35e8a9ae4fd3e91ffaa82a037b5a847ab7.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_format_loader.sh_3f1d6f35e8a9ae4fd3e91ffaa82a037b5a847ab7.out diff --git a/test/expected/test_format_loader.sh_5992e2695b7e6cf1f3520dbb87af8fc2b8f27088.err b/test/expected/test_format_loader.sh_5992e2695b7e6cf1f3520dbb87af8fc2b8f27088.err new file mode 100644 index 0000000..1270517 --- /dev/null +++ b/test/expected/test_format_loader.sh_5992e2695b7e6cf1f3520dbb87af8fc2b8f27088.err @@ -0,0 +1,190 @@ +[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 +[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:30 +[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:33 +[36m =[0m [36mnote[0m: matched regex = [1mwith-level[0m + captured level = “debug” +[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:37 +[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:41 +[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” + +[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 diff --git a/test/expected/test_format_loader.sh_5992e2695b7e6cf1f3520dbb87af8fc2b8f27088.out b/test/expected/test_format_loader.sh_5992e2695b7e6cf1f3520dbb87af8fc2b8f27088.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_format_loader.sh_5992e2695b7e6cf1f3520dbb87af8fc2b8f27088.out diff --git a/test/expected/test_format_loader.sh_a47f2b090a5d8a226783835c7ff7d1c8821f11ed.err b/test/expected/test_format_loader.sh_a47f2b090a5d8a226783835c7ff7d1c8821f11ed.err new file mode 100644 index 0000000..f657d87 --- /dev/null +++ b/test/expected/test_format_loader.sh_a47f2b090a5d8a226783835c7ff7d1c8821f11ed.err @@ -0,0 +1,61 @@ +[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 +[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 diff --git a/test/expected/test_format_loader.sh_a47f2b090a5d8a226783835c7ff7d1c8821f11ed.out b/test/expected/test_format_loader.sh_a47f2b090a5d8a226783835c7ff7d1c8821f11ed.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_format_loader.sh_a47f2b090a5d8a226783835c7ff7d1c8821f11ed.out diff --git a/test/expected/test_format_loader.sh_fca6c1fb9f3aaa69b3ffb2d1a8a86434b2f4a247.err b/test/expected/test_format_loader.sh_fca6c1fb9f3aaa69b3ffb2d1a8a86434b2f4a247.err new file mode 100644 index 0000000..3272370 --- /dev/null +++ b/test/expected/test_format_loader.sh_fca6c1fb9f3aaa69b3ffb2d1a8a86434b2f4a247.err @@ -0,0 +1,66 @@ +[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 diff --git a/test/expected/test_format_loader.sh_fca6c1fb9f3aaa69b3ffb2d1a8a86434b2f4a247.out b/test/expected/test_format_loader.sh_fca6c1fb9f3aaa69b3ffb2d1a8a86434b2f4a247.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_format_loader.sh_fca6c1fb9f3aaa69b3ffb2d1a8a86434b2f4a247.out diff --git a/test/expected/test_json_format.sh_168cac40c27f547044c89d39eb0ff2ef81da4b21.err b/test/expected/test_json_format.sh_168cac40c27f547044c89d39eb0ff2ef81da4b21.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_json_format.sh_168cac40c27f547044c89d39eb0ff2ef81da4b21.err diff --git a/test/expected/test_json_format.sh_168cac40c27f547044c89d39eb0ff2ef81da4b21.out b/test/expected/test_json_format.sh_168cac40c27f547044c89d39eb0ff2ef81da4b21.out new file mode 100644 index 0000000..ef750df --- /dev/null +++ b/test/expected/test_json_format.sh_168cac40c27f547044c89d39eb0ff2ef81da4b21.out @@ -0,0 +1,13 @@ +{"ts": "2013-09-06T20:00:48.124817Z", "lvl": "TRACE", "msg": "trace test"}
+{"ts": "2013-09-06T20:00:49.124817Z", "lvl": "INFO", "msg": "Starting up service"}
+{"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..."}
+{"ts": "2013-09-06T22:00:59.124817Z", "lvl": "DEBUG4", "msg": "Details..."}
+{"ts": "2013-09-06T22:00:59.124817Z", "lvl": "DEBUG3", "msg": "Details..."}
+{"ts": "2013-09-06T22:00:59.124817Z", "lvl": "DEBUG2", "msg": "Details..."}
+{"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}]}
diff --git a/test/expected/test_json_format.sh_1bb0fd243e916546aea22029245ac590dae17a86.err b/test/expected/test_json_format.sh_1bb0fd243e916546aea22029245ac590dae17a86.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_json_format.sh_1bb0fd243e916546aea22029245ac590dae17a86.err diff --git a/test/expected/test_json_format.sh_1bb0fd243e916546aea22029245ac590dae17a86.out b/test/expected/test_json_format.sh_1bb0fd243e916546aea22029245ac590dae17a86.out new file mode 100644 index 0000000..59872f2 --- /dev/null +++ b/test/expected/test_json_format.sh_1bb0fd243e916546aea22029245ac590dae17a86.out @@ -0,0 +1,14 @@ +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 diff --git a/test/expected/test_json_format.sh_40223ac4742883f883ccc61044bfffd6e102cca6.err b/test/expected/test_json_format.sh_40223ac4742883f883ccc61044bfffd6e102cca6.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_json_format.sh_40223ac4742883f883ccc61044bfffd6e102cca6.err diff --git a/test/expected/test_json_format.sh_40223ac4742883f883ccc61044bfffd6e102cca6.out b/test/expected/test_json_format.sh_40223ac4742883f883ccc61044bfffd6e102cca6.out new file mode 100644 index 0000000..463a734 --- /dev/null +++ b/test/expected/test_json_format.sh_40223ac4742883f883ccc61044bfffd6e102cca6.out @@ -0,0 +1,192 @@ +[ + { + "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, + "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, + "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, + "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, + "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, + "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, + "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, + "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, + "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, + "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, + "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, + "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, + "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 + }, + "user": null + } +] diff --git a/test/expected/test_json_format.sh_4315a3d6124c14cbe3c474b6dbf4cc8720a9859f.err b/test/expected/test_json_format.sh_4315a3d6124c14cbe3c474b6dbf4cc8720a9859f.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_json_format.sh_4315a3d6124c14cbe3c474b6dbf4cc8720a9859f.err diff --git a/test/expected/test_json_format.sh_4315a3d6124c14cbe3c474b6dbf4cc8720a9859f.out b/test/expected/test_json_format.sh_4315a3d6124c14cbe3c474b6dbf4cc8720a9859f.out new file mode 100644 index 0000000..30ddacc --- /dev/null +++ b/test/expected/test_json_format.sh_4315a3d6124c14cbe3c474b6dbf4cc8720a9859f.out @@ -0,0 +1,3 @@ +2017-03-24T20:06:26.240 1.1.1.1 GET 200 /example/uri/5 +[31m2017-03-24T20:12:47.764[0m[31m [0m[31m1.1.1.1[0m[31m [0m[31mGET[0m[31m 500 [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 [0m[33m/example/uri/5[0m diff --git a/test/expected/test_json_format.sh_469f005b0708d629bc95f0c48a5e390f440c1fef.err b/test/expected/test_json_format.sh_469f005b0708d629bc95f0c48a5e390f440c1fef.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_json_format.sh_469f005b0708d629bc95f0c48a5e390f440c1fef.err diff --git a/test/expected/test_json_format.sh_469f005b0708d629bc95f0c48a5e390f440c1fef.out b/test/expected/test_json_format.sh_469f005b0708d629bc95f0c48a5e390f440c1fef.out new file mode 100644 index 0000000..7cf3887 --- /dev/null +++ b/test/expected/test_json_format.sh_469f005b0708d629bc95f0c48a5e390f440c1fef.out @@ -0,0 +1,29 @@ + +[2013-09-06T20:00:48.124] TRACE trace test + +[2013-09-06T20:00:49.124] INFO Starting up service + +[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[2013-09-06T22:01:49.124] WARNING not looking good[0m + +[31m[2013-09-06T22:01:49.124] ERROR looking bad[0m + +[31m[2013-09-06T22:01:49.124] CRITICAL sooo bad[0m + +[31m[2013-09-06T22:01:49.124] FATAL shoot[0m +[31m obj: { "field1" : "hi", "field2": 2 }[0m +[31m arr: ["hi", {"sub1": true}][0m diff --git a/test/expected/test_json_format.sh_6fbe20faa161ab9fa77df7568fff84bf3e47e920.err b/test/expected/test_json_format.sh_6fbe20faa161ab9fa77df7568fff84bf3e47e920.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_json_format.sh_6fbe20faa161ab9fa77df7568fff84bf3e47e920.err diff --git a/test/expected/test_json_format.sh_6fbe20faa161ab9fa77df7568fff84bf3e47e920.out b/test/expected/test_json_format.sh_6fbe20faa161ab9fa77df7568fff84bf3e47e920.out new file mode 100644 index 0000000..128f5ab --- /dev/null +++ b/test/expected/test_json_format.sh_6fbe20faa161ab9fa77df7568fff84bf3e47e920.out @@ -0,0 +1,4 @@ +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 diff --git a/test/expected/test_json_format.sh_7724d1a96d74d4418dd44d7416270f9bb64b2564.err b/test/expected/test_json_format.sh_7724d1a96d74d4418dd44d7416270f9bb64b2564.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_json_format.sh_7724d1a96d74d4418dd44d7416270f9bb64b2564.err diff --git a/test/expected/test_json_format.sh_7724d1a96d74d4418dd44d7416270f9bb64b2564.out b/test/expected/test_json_format.sh_7724d1a96d74d4418dd44d7416270f9bb64b2564.out new file mode 100644 index 0000000..c861d3a --- /dev/null +++ b/test/expected/test_json_format.sh_7724d1a96d74d4418dd44d7416270f9bb64b2564.out @@ -0,0 +1,29 @@ +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 diff --git a/test/expected/test_json_format.sh_7aade92cff911c5b3cfc733685809f949ae35778.err b/test/expected/test_json_format.sh_7aade92cff911c5b3cfc733685809f949ae35778.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_json_format.sh_7aade92cff911c5b3cfc733685809f949ae35778.err diff --git a/test/expected/test_json_format.sh_7aade92cff911c5b3cfc733685809f949ae35778.out b/test/expected/test_json_format.sh_7aade92cff911c5b3cfc733685809f949ae35778.out new file mode 100644 index 0000000..3b820b6 --- /dev/null +++ b/test/expected/test_json_format.sh_7aade92cff911c5b3cfc733685809f949ae35778.out @@ -0,0 +1 @@ +{"@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"} diff --git a/test/expected/test_json_format.sh_7c6529f6bf4a0cb565f5665fdcba032f0ae1ebbe.err b/test/expected/test_json_format.sh_7c6529f6bf4a0cb565f5665fdcba032f0ae1ebbe.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_json_format.sh_7c6529f6bf4a0cb565f5665fdcba032f0ae1ebbe.err diff --git a/test/expected/test_json_format.sh_7c6529f6bf4a0cb565f5665fdcba032f0ae1ebbe.out b/test/expected/test_json_format.sh_7c6529f6bf4a0cb565f5665fdcba032f0ae1ebbe.out new file mode 100644 index 0000000..ce295e2 --- /dev/null +++ b/test/expected/test_json_format.sh_7c6529f6bf4a0cb565f5665fdcba032f0ae1ebbe.out @@ -0,0 +1,12 @@ +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..."} diff --git a/test/expected/test_json_format.sh_80959e2bb6a7fdf938c2e4dbd7d7c81eb84fa072.err b/test/expected/test_json_format.sh_80959e2bb6a7fdf938c2e4dbd7d7c81eb84fa072.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_json_format.sh_80959e2bb6a7fdf938c2e4dbd7d7c81eb84fa072.err diff --git a/test/expected/test_json_format.sh_80959e2bb6a7fdf938c2e4dbd7d7c81eb84fa072.out b/test/expected/test_json_format.sh_80959e2bb6a7fdf938c2e4dbd7d7c81eb84fa072.out new file mode 100644 index 0000000..bae2626 --- /dev/null +++ b/test/expected/test_json_format.sh_80959e2bb6a7fdf938c2e4dbd7d7c81eb84fa072.out @@ -0,0 +1,8 @@ +2013-09-06T20:00:48.124 abc 48 def info - - + @fields: { "lvl": "TRACE", "msg": "trace test"} +2013-09-06T20:00:49.124 abc 49 def info - - + @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) ------^ diff --git a/test/expected/test_json_format.sh_84a71e94dc34661a70bb9015b67ba00e93e9cfb5.err b/test/expected/test_json_format.sh_84a71e94dc34661a70bb9015b67ba00e93e9cfb5.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_json_format.sh_84a71e94dc34661a70bb9015b67ba00e93e9cfb5.err diff --git a/test/expected/test_json_format.sh_84a71e94dc34661a70bb9015b67ba00e93e9cfb5.out b/test/expected/test_json_format.sh_84a71e94dc34661a70bb9015b67ba00e93e9cfb5.out new file mode 100644 index 0000000..58b44ab --- /dev/null +++ b/test/expected/test_json_format.sh_84a71e94dc34661a70bb9015b67ba00e93e9cfb5.out @@ -0,0 +1,2 @@ +[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 diff --git a/test/expected/test_json_format.sh_85d03b1b41a7f819af135d2521a8f2c59418e907.err b/test/expected/test_json_format.sh_85d03b1b41a7f819af135d2521a8f2c59418e907.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_json_format.sh_85d03b1b41a7f819af135d2521a8f2c59418e907.err diff --git a/test/expected/test_json_format.sh_85d03b1b41a7f819af135d2521a8f2c59418e907.out b/test/expected/test_json_format.sh_85d03b1b41a7f819af135d2521a8f2c59418e907.out new file mode 100644 index 0000000..80919e8 --- /dev/null +++ b/test/expected/test_json_format.sh_85d03b1b41a7f819af135d2521a8f2c59418e907.out @@ -0,0 +1,14 @@ +log_line,log_part,log_time,log_idle_msecs,log_level,log_mark,log_comment,log_tags,log_filters,arr,obj,user +0,<NULL>,2013-09-06 20:00:48.124,0,trace,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> +2,<NULL>,2013-09-06 20:00:49.124,1000,info,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> +4,<NULL>,2013-09-06 22:00:49.124,7200000,info,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,steve@example.com +7,<NULL>,2013-09-06 22:00:59.124,10000,debug5,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> +9,<NULL>,2013-09-06 22:00:59.124,0,debug4,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> +11,<NULL>,2013-09-06 22:00:59.124,0,debug3,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> +13,<NULL>,2013-09-06 22:00:59.124,0,debug2,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> +15,<NULL>,2013-09-06 22:00:59.124,0,debug,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> +17,<NULL>,2013-09-06 22:01:49.124,50000,stats,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> +19,<NULL>,2013-09-06 22:01:49.124,0,warning,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> +21,<NULL>,2013-09-06 22:01:49.124,0,error,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> +23,<NULL>,2013-09-06 22:01:49.124,0,critical,0,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> +25,<NULL>,2013-09-06 22:01:49.124,0,fatal,0,<NULL>,<NULL>,<NULL>,"[""hi"", {""sub1"": true}]","{ ""field1"" : ""hi"", ""field2"": 2 }",<NULL> diff --git a/test/expected/test_json_format.sh_8f2ebcd319afc7966ef11e31f9dd646bf6f001dd.err b/test/expected/test_json_format.sh_8f2ebcd319afc7966ef11e31f9dd646bf6f001dd.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_json_format.sh_8f2ebcd319afc7966ef11e31f9dd646bf6f001dd.err diff --git a/test/expected/test_json_format.sh_8f2ebcd319afc7966ef11e31f9dd646bf6f001dd.out b/test/expected/test_json_format.sh_8f2ebcd319afc7966ef11e31f9dd646bf6f001dd.out new file mode 100644 index 0000000..338bca9 --- /dev/null +++ b/test/expected/test_json_format.sh_8f2ebcd319afc7966ef11e31f9dd646bf6f001dd.out @@ -0,0 +1,21 @@ +2013-09-06T20:00:48.124 abc 48 def TRACE - trace test +2013-09-06T20:00:49.124 abc 49 def INFO - Starting up service +2013-09-06T22:00:49.124 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 +2013-09-06T22:00:59.124 abc 59 def DEBUG5 - Details... +2013-09-06T22:00:59.124 abc 59 def DEBUG4 - Details... +2013-09-06T22:00:59.124 abc 59 def DEBUG3 - Details... +2013-09-06T22:00:59.124 abc 59 def DEBUG2 - Details... +2013-09-06T22:00:59.124 abc 59 def DEBUG - Details... +2013-09-06T22:01:49.124 abc 49 def STATS - 1 beat per second +[33m2013-09-06T22:01:49.124[0m[33m [0m[33mabc 49 def[0m[33m WARNING - [0m[33mnot looking good[0m +[31m2013-09-06T22:01:49.124[0m[31m [0m[31mabc 49 def[0m[31m ERROR - [0m[31mlooking bad[0m +[31m2013-09-06T22:01:49.124[0m[31m [0m[31mabc 49 def[0m[31m CRITICAL - [0m[31msooo bad[0m +[31m2013-09-06T22:01:49.124[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 diff --git a/test/expected/test_json_format.sh_90a037c7d9d70ac4ca97158271ea242787313377.err b/test/expected/test_json_format.sh_90a037c7d9d70ac4ca97158271ea242787313377.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_json_format.sh_90a037c7d9d70ac4ca97158271ea242787313377.err diff --git a/test/expected/test_json_format.sh_90a037c7d9d70ac4ca97158271ea242787313377.out b/test/expected/test_json_format.sh_90a037c7d9d70ac4ca97158271ea242787313377.out new file mode 100644 index 0000000..30ddacc --- /dev/null +++ b/test/expected/test_json_format.sh_90a037c7d9d70ac4ca97158271ea242787313377.out @@ -0,0 +1,3 @@ +2017-03-24T20:06:26.240 1.1.1.1 GET 200 /example/uri/5 +[31m2017-03-24T20:12:47.764[0m[31m [0m[31m1.1.1.1[0m[31m [0m[31mGET[0m[31m 500 [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 [0m[33m/example/uri/5[0m diff --git a/test/expected/test_json_format.sh_952297a90e312d2184fe3e4df795ddc731b096c9.err b/test/expected/test_json_format.sh_952297a90e312d2184fe3e4df795ddc731b096c9.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_json_format.sh_952297a90e312d2184fe3e4df795ddc731b096c9.err diff --git a/test/expected/test_json_format.sh_952297a90e312d2184fe3e4df795ddc731b096c9.out b/test/expected/test_json_format.sh_952297a90e312d2184fe3e4df795ddc731b096c9.out new file mode 100644 index 0000000..eb43a38 --- /dev/null +++ b/test/expected/test_json_format.sh_952297a90e312d2184fe3e4df795ddc731b096c9.out @@ -0,0 +1,4 @@ + +[-09-06T22:00:49.124] INFO Shutting down service + user: steve@example.com + diff --git a/test/expected/test_json_format.sh_989e52d167582648b73c5d025cc0e814c642b3c8.err b/test/expected/test_json_format.sh_989e52d167582648b73c5d025cc0e814c642b3c8.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_json_format.sh_989e52d167582648b73c5d025cc0e814c642b3c8.err diff --git a/test/expected/test_json_format.sh_989e52d167582648b73c5d025cc0e814c642b3c8.out b/test/expected/test_json_format.sh_989e52d167582648b73c5d025cc0e814c642b3c8.out new file mode 100644 index 0000000..55dcb76 --- /dev/null +++ b/test/expected/test_json_format.sh_989e52d167582648b73c5d025cc0e814c642b3c8.out @@ -0,0 +1,4 @@ +2013-09-06T20:00:49.124 abc 49 def 0 c.e.foo Starting up service +2013-09-06T22:00:49.124 abc 49 def 0 c.e.foo Shutting down service + user: steve@example.com +[31m2013-09-06T22:01:49.124[0m[31m [0m[31mabc 49 def[0m[31m 10 c.e.foo [0m[31mlooking bad[0m diff --git a/test/expected/test_json_format.sh_a06b3cdd46b387e72d6faa4cce648b8b11ae870b.err b/test/expected/test_json_format.sh_a06b3cdd46b387e72d6faa4cce648b8b11ae870b.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_json_format.sh_a06b3cdd46b387e72d6faa4cce648b8b11ae870b.err diff --git a/test/expected/test_json_format.sh_a06b3cdd46b387e72d6faa4cce648b8b11ae870b.out b/test/expected/test_json_format.sh_a06b3cdd46b387e72d6faa4cce648b8b11ae870b.out new file mode 100644 index 0000000..6282d17 --- /dev/null +++ b/test/expected/test_json_format.sh_a06b3cdd46b387e72d6faa4cce648b8b11ae870b.out @@ -0,0 +1,25 @@ + +[2013-09-06T20:00:48.124] TRACE trace testbork bork bork + +[2013-09-06T20:00:49.124] INFO Starting up servicebork bork bork + +[2013-09-06T22:00:49.124] INFO Shutting down servicebork bork bork + user:mailto:steve@example.com + +[2013-09-06T22:00:59.124] DEBUG5 Details...bork bork bork + +[2013-09-06T22:00:59.124] DEBUG4 Details...bork bork bork + +[2013-09-06T22:00:59.124] DEBUG3 Details...bork bork bork + +[2013-09-06T22:00:59.124] DEBUG2 Details...bork bork bork + +[2013-09-06T22:00:59.124] DEBUG Details...bork bork bork + +[2013-09-06T22:01:49.124] STATS 1 beat per secondbork bork bork + +[33m[[0m[33m2013-09-06T22:01:49.124[0m[33m] WARNING not looking go[0m[33modbork bork bork[0m + +[31m[[0m[31m2013-09-06T22:01:49.124[0m[31m] ERROR looking badbor[0m[31mk bork bork[0m + +[31m[[0m[31m2013-09-06T22:01:49.124[0m[31m] CRITICAL sooo badbork b[0m[31mork bork[0m diff --git a/test/expected/test_json_format.sh_a6be47f1311ed92feaf303142fcb103deb80f456.err b/test/expected/test_json_format.sh_a6be47f1311ed92feaf303142fcb103deb80f456.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_json_format.sh_a6be47f1311ed92feaf303142fcb103deb80f456.err diff --git a/test/expected/test_json_format.sh_a6be47f1311ed92feaf303142fcb103deb80f456.out b/test/expected/test_json_format.sh_a6be47f1311ed92feaf303142fcb103deb80f456.out new file mode 100644 index 0000000..b356898 --- /dev/null +++ b/test/expected/test_json_format.sh_a6be47f1311ed92feaf303142fcb103deb80f456.out @@ -0,0 +1,4 @@ +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,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,<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,<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,"{""foo"": ""bar""}","{""foo"": ""bar""}","{""foo"": ""bar""}" diff --git a/test/expected/test_json_format.sh_c1a23804c39b0f74642286d69865ee9d0961a58a.err b/test/expected/test_json_format.sh_c1a23804c39b0f74642286d69865ee9d0961a58a.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_json_format.sh_c1a23804c39b0f74642286d69865ee9d0961a58a.err diff --git a/test/expected/test_json_format.sh_c1a23804c39b0f74642286d69865ee9d0961a58a.out b/test/expected/test_json_format.sh_c1a23804c39b0f74642286d69865ee9d0961a58a.out new file mode 100644 index 0000000..889eb99 --- /dev/null +++ b/test/expected/test_json_format.sh_c1a23804c39b0f74642286d69865ee9d0961a58a.out @@ -0,0 +1,2 @@ +2022-09-24T00:00:09.484 Hello, World! +2022-09-24T00:00:19.222 Goodbye, World! diff --git a/test/expected/test_json_format.sh_c60050b3469f37c5b0864e1dc7eb354e91d6ec81.err b/test/expected/test_json_format.sh_c60050b3469f37c5b0864e1dc7eb354e91d6ec81.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_json_format.sh_c60050b3469f37c5b0864e1dc7eb354e91d6ec81.err diff --git a/test/expected/test_json_format.sh_c60050b3469f37c5b0864e1dc7eb354e91d6ec81.out b/test/expected/test_json_format.sh_c60050b3469f37c5b0864e1dc7eb354e91d6ec81.out new file mode 100644 index 0000000..a11ff06 --- /dev/null +++ b/test/expected/test_json_format.sh_c60050b3469f37c5b0864e1dc7eb354e91d6ec81.out @@ -0,0 +1,50 @@ +[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 diff --git a/test/expected/test_json_format.sh_d0ec34389274affb70a5a76ba4789d51fd60f602.err b/test/expected/test_json_format.sh_d0ec34389274affb70a5a76ba4789d51fd60f602.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_json_format.sh_d0ec34389274affb70a5a76ba4789d51fd60f602.err diff --git a/test/expected/test_json_format.sh_d0ec34389274affb70a5a76ba4789d51fd60f602.out b/test/expected/test_json_format.sh_d0ec34389274affb70a5a76ba4789d51fd60f602.out new file mode 100644 index 0000000..b356898 --- /dev/null +++ b/test/expected/test_json_format.sh_d0ec34389274affb70a5a76ba4789d51fd60f602.out @@ -0,0 +1,4 @@ +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,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,<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,<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,"{""foo"": ""bar""}","{""foo"": ""bar""}","{""foo"": ""bar""}" diff --git a/test/expected/test_json_format.sh_d7362cffc8335c2fe6b6527315de59bd6f5dcc7f.err b/test/expected/test_json_format.sh_d7362cffc8335c2fe6b6527315de59bd6f5dcc7f.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_json_format.sh_d7362cffc8335c2fe6b6527315de59bd6f5dcc7f.err diff --git a/test/expected/test_json_format.sh_d7362cffc8335c2fe6b6527315de59bd6f5dcc7f.out b/test/expected/test_json_format.sh_d7362cffc8335c2fe6b6527315de59bd6f5dcc7f.out new file mode 100644 index 0000000..951a389 --- /dev/null +++ b/test/expected/test_json_format.sh_d7362cffc8335c2fe6b6527315de59bd6f5dcc7f.out @@ -0,0 +1,3 @@ +2017-03-24T16:06:26.240 1.1.1.1 GET 200 /example/uri/5 +[31m2017-03-24T16:12:47.764[0m[31m [0m[31m1.1.1.1[0m[31m [0m[31mGET[0m[31m 500 [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 [0m[33m/example/uri/5[0m diff --git a/test/expected/test_json_format.sh_dfff27a651650a04d93de9a06ab5480e94ce3a79.err b/test/expected/test_json_format.sh_dfff27a651650a04d93de9a06ab5480e94ce3a79.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_json_format.sh_dfff27a651650a04d93de9a06ab5480e94ce3a79.err diff --git a/test/expected/test_json_format.sh_dfff27a651650a04d93de9a06ab5480e94ce3a79.out b/test/expected/test_json_format.sh_dfff27a651650a04d93de9a06ab5480e94ce3a79.out new file mode 100644 index 0000000..c3d0110 --- /dev/null +++ b/test/expected/test_json_format.sh_dfff27a651650a04d93de9a06ab5480e94ce3a79.out @@ -0,0 +1,4 @@ +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,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,<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,<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,"{""foo"": ""bar""}","{""foo"": ""bar""}","{""foo"": ""bar""}" diff --git a/test/expected/test_json_format.sh_fe19b7ebd349cd689b3f5c22618eab5ce995e68e.err b/test/expected/test_json_format.sh_fe19b7ebd349cd689b3f5c22618eab5ce995e68e.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_json_format.sh_fe19b7ebd349cd689b3f5c22618eab5ce995e68e.err diff --git a/test/expected/test_json_format.sh_fe19b7ebd349cd689b3f5c22618eab5ce995e68e.out b/test/expected/test_json_format.sh_fe19b7ebd349cd689b3f5c22618eab5ce995e68e.out new file mode 100644 index 0000000..325af1f --- /dev/null +++ b/test/expected/test_json_format.sh_fe19b7ebd349cd689b3f5c22618eab5ce995e68e.out @@ -0,0 +1,4 @@ +-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"} + diff --git a/test/expected/test_logfile.sh_08d731a04c877a34819b35de185e30a74c9fd497.err b/test/expected/test_logfile.sh_08d731a04c877a34819b35de185e30a74c9fd497.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_logfile.sh_08d731a04c877a34819b35de185e30a74c9fd497.err diff --git a/test/expected/test_logfile.sh_08d731a04c877a34819b35de185e30a74c9fd497.out b/test/expected/test_logfile.sh_08d731a04c877a34819b35de185e30a74c9fd497.out new file mode 100644 index 0000000..9b2a7cd --- /dev/null +++ b/test/expected/test_logfile.sh_08d731a04c877a34819b35de185e30a74c9fd497.out @@ -0,0 +1,3 @@ +2600-12-03 09:23:00.000000 0: +2600-12-03 09:23:00.000000 0: +2600-12-03 09:23:00.000000 0: diff --git a/test/expected/test_logfile.sh_09bd16e044302f6b121092534708594bdad11b5a.err b/test/expected/test_logfile.sh_09bd16e044302f6b121092534708594bdad11b5a.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_logfile.sh_09bd16e044302f6b121092534708594bdad11b5a.err diff --git a/test/expected/test_logfile.sh_09bd16e044302f6b121092534708594bdad11b5a.out b/test/expected/test_logfile.sh_09bd16e044302f6b121092534708594bdad11b5a.out new file mode 100644 index 0000000..9317bcb --- /dev/null +++ b/test/expected/test_logfile.sh_09bd16e044302f6b121092534708594bdad11b5a.out @@ -0,0 +1 @@ ++0 diff --git a/test/expected/test_logfile.sh_1c6eee38f66356fcd9a9f0faedaea6dbcc901060.err b/test/expected/test_logfile.sh_1c6eee38f66356fcd9a9f0faedaea6dbcc901060.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_logfile.sh_1c6eee38f66356fcd9a9f0faedaea6dbcc901060.err diff --git a/test/expected/test_logfile.sh_1c6eee38f66356fcd9a9f0faedaea6dbcc901060.out b/test/expected/test_logfile.sh_1c6eee38f66356fcd9a9f0faedaea6dbcc901060.out new file mode 100644 index 0000000..ff67043 --- /dev/null +++ b/test/expected/test_logfile.sh_1c6eee38f66356fcd9a9f0faedaea6dbcc901060.out @@ -0,0 +1,2 @@ +[1m[4m filepath [0m[1m[4m descriptor [0m[1m[4m mimetype [0m[1m[4m content [0m +[1m{test_dir}/logfile_syslog.1.gz[0m[1m [0m[1mnet.zlib.gzip.header[0m[1m [0m[1mapplication/json[0m[1m [0m[1m{"name":"logfile_syslog.1","mtime":"2007-11-03T16:23:00.000","comment":""} [0m diff --git a/test/expected/test_logfile.sh_218ecb88b4753010c4264b3ac351260b4811612f.err b/test/expected/test_logfile.sh_218ecb88b4753010c4264b3ac351260b4811612f.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_logfile.sh_218ecb88b4753010c4264b3ac351260b4811612f.err diff --git a/test/expected/test_logfile.sh_218ecb88b4753010c4264b3ac351260b4811612f.out b/test/expected/test_logfile.sh_218ecb88b4753010c4264b3ac351260b4811612f.out new file mode 100644 index 0000000..4ed341d --- /dev/null +++ b/test/expected/test_logfile.sh_218ecb88b4753010c4264b3ac351260b4811612f.out @@ -0,0 +1,2 @@ +[1m[4mbasename(filepath) [0m[1m[4m descriptor [0m[1m[4m mimetype [0m[1m[4m content [0m +[1mlogfile_syslog.1.gz[0m[1m [0m[1mnet.zlib.gzip.header[0m[1m [0m[1mapplication/json[0m[1m [0m[1m{"name":"logfile_syslog.1","mtime":"2007-11-03T09:23:00.000","comment":""} [0m diff --git a/test/expected/test_logfile.sh_290a3c49e53c2229a7400c107338fa0bb38375e2.err b/test/expected/test_logfile.sh_290a3c49e53c2229a7400c107338fa0bb38375e2.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_logfile.sh_290a3c49e53c2229a7400c107338fa0bb38375e2.err diff --git a/test/expected/test_logfile.sh_290a3c49e53c2229a7400c107338fa0bb38375e2.out b/test/expected/test_logfile.sh_290a3c49e53c2229a7400c107338fa0bb38375e2.out new file mode 100644 index 0000000..7731fde --- /dev/null +++ b/test/expected/test_logfile.sh_290a3c49e53c2229a7400c107338fa0bb38375e2.out @@ -0,0 +1,2 @@ +#Fields: ? ) +0 diff --git a/test/expected/test_logfile.sh_3fc6bfd8a6160817211f3e14fde957af75b9dbe7.err b/test/expected/test_logfile.sh_3fc6bfd8a6160817211f3e14fde957af75b9dbe7.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_logfile.sh_3fc6bfd8a6160817211f3e14fde957af75b9dbe7.err diff --git a/test/expected/test_logfile.sh_3fc6bfd8a6160817211f3e14fde957af75b9dbe7.out b/test/expected/test_logfile.sh_3fc6bfd8a6160817211f3e14fde957af75b9dbe7.out new file mode 100644 index 0000000..8d8b6ce --- /dev/null +++ b/test/expected/test_logfile.sh_3fc6bfd8a6160817211f3e14fde957af75b9dbe7.out @@ -0,0 +1,2 @@ +#Date: 20?0-2-02 +0 diff --git a/test/expected/test_logfile.sh_4a2a907fcb069b8d6e65961a7b2e796d6c3a87b1.err b/test/expected/test_logfile.sh_4a2a907fcb069b8d6e65961a7b2e796d6c3a87b1.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_logfile.sh_4a2a907fcb069b8d6e65961a7b2e796d6c3a87b1.err diff --git a/test/expected/test_logfile.sh_4a2a907fcb069b8d6e65961a7b2e796d6c3a87b1.out b/test/expected/test_logfile.sh_4a2a907fcb069b8d6e65961a7b2e796d6c3a87b1.out new file mode 100644 index 0000000..8de34b8 --- /dev/null +++ b/test/expected/test_logfile.sh_4a2a907fcb069b8d6e65961a7b2e796d6c3a87b1.out @@ -0,0 +1,4 @@ +#Fields: 0 cs-bytes +#Fields: 0 + 0 # +0 diff --git a/test/expected/test_logfile.sh_6602faf7817c494c33e32da7ee95f13aa9210d01.err b/test/expected/test_logfile.sh_6602faf7817c494c33e32da7ee95f13aa9210d01.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_logfile.sh_6602faf7817c494c33e32da7ee95f13aa9210d01.err diff --git a/test/expected/test_logfile.sh_6602faf7817c494c33e32da7ee95f13aa9210d01.out b/test/expected/test_logfile.sh_6602faf7817c494c33e32da7ee95f13aa9210d01.out new file mode 100644 index 0000000..372e078 --- /dev/null +++ b/test/expected/test_logfile.sh_6602faf7817c494c33e32da7ee95f13aa9210d01.out @@ -0,0 +1,10 @@ +[32mSep 19 [0m[33m09:24:04[0m[31m [0m[31mTims-MacBook-Air[0m[31m [0m[31mAMPDeviceDiscoveryAgent[0m[34m[[0m[34m17600[0m[34m][0m: ti[33md:1d1f[0m - Mux ID not found in mapping dictionary +[32mSep 19 [0m[33m09:24:04[0m[31m [0m[31mTims-MacBook-Air[0m[31m [0m[31mAMPDeviceDiscoveryAgent[0m[34m[[0m[34m17600[0m[34m][0m: ti[33md:1d1f[0m - Can't handle dis[41mconnect[0m with invalid ecid +[32mSep 19 [0m[33m09:24:20[0m[31m [0m[31mTims-MacBook-Air[0m[31m [0m[31mMobileDeviceUpdater[0m[34m[[0m[34m17530[0m[34m][0m: Entered:_AMMuxedDeviceDis[41mconnect[0med, mux-devi[33mce:1003[0m +[32mSep 19 [0m[33m09:24:20[0m[31m [0m[31mTims-MacBook-Air[0m[31m [0m[31mAMPDeviceDiscoveryAgent[0m[34m[[0m[34m17600[0m[34m][0m: Entered:_AMMuxedDeviceDis[41mconnect[0med, mux-devi[33mce:1003[0m +[32mSep 19 [0m[33m09:24:20[0m[31m [0m[31mTims-MacBook-Air[0m[31m [0m[31mMobileDeviceUpdater[0m[34m[[0m[34m17530[0m[34m][0m: Entered:__thr_AMMuxedDeviceDis[41mconnect[0med, mux-devi[33mce:1003[0m +[32mSep 19 [0m[33m09:24:20[0m[31m [0m[31mTims-MacBook-Air[0m[31m [0m[31mAMPDeviceDiscoveryAgent[0m[34m[[0m[34m17600[0m[34m][0m: Entered:__thr_AMMuxedDeviceDis[41mconnect[0med, mux-devi[33mce:1003[0m +[32mSep 19 [0m[33m09:24:20[0m[31m [0m[31mTims-MacBook-Air[0m[31m [0m[31mMobileDeviceUpdater[0m[34m[[0m[34m17530[0m[34m][0m: ti[33md:191f[0m - Mux ID not found in mapping dictionary +[32mSep 19 [0m[33m09:24:20[0m[31m [0m[31mTims-MacBook-Air[0m[31m [0m[31mAMPDeviceDiscoveryAgent[0m[34m[[0m[34m17600[0m[34m][0m: ti[33md:1d1f[0m - Mux ID not found in mapping dictionary +[32mSep 19 [0m[33m09:24:20[0m[31m [0m[31mTims-MacBook-Air[0m[31m [0m[31mMobileDeviceUpdater[0m[34m[[0m[34m17530[0m[34m][0m: ti[33md:191f[0m - Can't handle dis[41mconnect[0m with invalid ecid +[32mSep 19 [0m[33m09:24:20[0m[31m [0m[31mTims-MacBook-Air[0m[31m [0m[31mAMPDeviceDiscoveryAgent[0m[34m[[0m[34m17600[0m[34m][0m: ti[33md:1d1f[0m - Can't handle dis[41mconnect[0m with invalid ecid diff --git a/test/expected/test_logfile.sh_7c2e11488bccc59458b5775db4b90de964858259.err b/test/expected/test_logfile.sh_7c2e11488bccc59458b5775db4b90de964858259.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_logfile.sh_7c2e11488bccc59458b5775db4b90de964858259.err diff --git a/test/expected/test_logfile.sh_7c2e11488bccc59458b5775db4b90de964858259.out b/test/expected/test_logfile.sh_7c2e11488bccc59458b5775db4b90de964858259.out new file mode 100644 index 0000000..13576d8 --- /dev/null +++ b/test/expected/test_logfile.sh_7c2e11488bccc59458b5775db4b90de964858259.out @@ -0,0 +1,6 @@ +000 +000 +#Fields: 0 +0 +#Fields: 0 +0 diff --git a/test/expected/test_logfile.sh_a7037efd0c4bbf51940137a44e57d94e9307e83e.err b/test/expected/test_logfile.sh_a7037efd0c4bbf51940137a44e57d94e9307e83e.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_logfile.sh_a7037efd0c4bbf51940137a44e57d94e9307e83e.err diff --git a/test/expected/test_logfile.sh_a7037efd0c4bbf51940137a44e57d94e9307e83e.out b/test/expected/test_logfile.sh_a7037efd0c4bbf51940137a44e57d94e9307e83e.out new file mode 100644 index 0000000..963f93c --- /dev/null +++ b/test/expected/test_logfile.sh_a7037efd0c4bbf51940137a44e57d94e9307e83e.out @@ -0,0 +1 @@ + 00:00 diff --git a/test/expected/test_logfile.sh_c18e14a26d8261c9f72747118a469266121d5459.err b/test/expected/test_logfile.sh_c18e14a26d8261c9f72747118a469266121d5459.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_logfile.sh_c18e14a26d8261c9f72747118a469266121d5459.err diff --git a/test/expected/test_logfile.sh_c18e14a26d8261c9f72747118a469266121d5459.out b/test/expected/test_logfile.sh_c18e14a26d8261c9f72747118a469266121d5459.out new file mode 100644 index 0000000..0733b93 --- /dev/null +++ b/test/expected/test_logfile.sh_c18e14a26d8261c9f72747118a469266121d5459.out @@ -0,0 +1,3 @@ +log_line log_part log_time log_idle_msecs log_level log_mark log_comment log_tags log_filters col_0 col_1 + 0 <NULL> 2021-05-19 08:00:01.000 0 info 0 <NULL> <NULL> <NULL> 1 /abc/def + 2 <NULL> 2021-05-19 08:00:03.000 2000 info 0 <NULL> <NULL> <NULL> 3 /ghi/jkl diff --git a/test/expected/test_logfile.sh_e840b674cd65936a72bd64b1dac1524d16fe44c3.err b/test/expected/test_logfile.sh_e840b674cd65936a72bd64b1dac1524d16fe44c3.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_logfile.sh_e840b674cd65936a72bd64b1dac1524d16fe44c3.err diff --git a/test/expected/test_logfile.sh_e840b674cd65936a72bd64b1dac1524d16fe44c3.out b/test/expected/test_logfile.sh_e840b674cd65936a72bd64b1dac1524d16fe44c3.out new file mode 100644 index 0000000..9de987f --- /dev/null +++ b/test/expected/test_logfile.sh_e840b674cd65936a72bd64b1dac1524d16fe44c3.out @@ -0,0 +1,11 @@ +[1m[4m log_time [0m[1m[4m log_body [0m +[1m2022-09-19 09:24:04.000[0m[1m [0m[1mtid:1d1f - Mux ID not found in mapping dictionary [0m +2022-09-19 09:24:04.000 tid:1d1f - Can't handle disconnect with invalid ecid +[1m2022-09-19 09:24:20.000[0m[1m [0m[1mEntered:_AMMuxedDeviceDisconnected, mux-device:1003 [0m +2022-09-19 09:24:20.000 Entered:_AMMuxedDeviceDisconnected, mux-device:1003 +[1m2022-09-19 09:24:20.000[0m[1m [0m[1mEntered:__thr_AMMuxedDeviceDisconnected, mux-device:1003 [0m +2022-09-19 09:24:20.000 Entered:__thr_AMMuxedDeviceDisconnected, mux-device:1003 +[1m2022-09-19 09:24:20.000[0m[1m [0m[1mtid:191f - Mux ID not found in mapping dictionary [0m +2022-09-19 09:24:20.000 tid:1d1f - Mux ID not found in mapping dictionary +[1m2022-09-19 09:24:20.000[0m[1m [0m[1mtid:191f - Can't handle disconnect with invalid ecid [0m +2022-09-19 09:24:20.000 tid:1d1f - Can't handle disconnect with invalid ecid diff --git a/test/expected/test_meta.sh_154047fb52e4831aabf7d36512247bad6a6a2cf7.err b/test/expected/test_meta.sh_154047fb52e4831aabf7d36512247bad6a6a2cf7.err new file mode 100644 index 0000000..1f33d64 --- /dev/null +++ b/test/expected/test_meta.sh_154047fb52e4831aabf7d36512247bad6a6a2cf7.err @@ -0,0 +1,7 @@ +[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 diff --git a/test/expected/test_meta.sh_154047fb52e4831aabf7d36512247bad6a6a2cf7.out b/test/expected/test_meta.sh_154047fb52e4831aabf7d36512247bad6a6a2cf7.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_meta.sh_154047fb52e4831aabf7d36512247bad6a6a2cf7.out diff --git a/test/expected/test_meta.sh_3c9b5940f7533c5fc3d4956a6efce50a9e7132d4.err b/test/expected/test_meta.sh_3c9b5940f7533c5fc3d4956a6efce50a9e7132d4.err new file mode 100644 index 0000000..96a52d7 --- /dev/null +++ b/test/expected/test_meta.sh_3c9b5940f7533c5fc3d4956a6efce50a9e7132d4.err @@ -0,0 +1,11 @@ +[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 diff --git a/test/expected/test_meta.sh_3c9b5940f7533c5fc3d4956a6efce50a9e7132d4.out b/test/expected/test_meta.sh_3c9b5940f7533c5fc3d4956a6efce50a9e7132d4.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_meta.sh_3c9b5940f7533c5fc3d4956a6efce50a9e7132d4.out diff --git a/test/expected/test_meta.sh_41f643bb4f720130625b042563e9591bee4ae588.err b/test/expected/test_meta.sh_41f643bb4f720130625b042563e9591bee4ae588.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_meta.sh_41f643bb4f720130625b042563e9591bee4ae588.err diff --git a/test/expected/test_meta.sh_41f643bb4f720130625b042563e9591bee4ae588.out b/test/expected/test_meta.sh_41f643bb4f720130625b042563e9591bee4ae588.out new file mode 100644 index 0000000..171d0f7 --- /dev/null +++ b/test/expected/test_meta.sh_41f643bb4f720130625b042563e9591bee4ae588.out @@ -0,0 +1,2 @@ +[1m[4mlog_tags [0m +["#foo"] diff --git a/test/expected/test_meta.sh_45ff39a3d0ac0ca0c95aaca14d043450cec1cedd.err b/test/expected/test_meta.sh_45ff39a3d0ac0ca0c95aaca14d043450cec1cedd.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_meta.sh_45ff39a3d0ac0ca0c95aaca14d043450cec1cedd.err diff --git a/test/expected/test_meta.sh_45ff39a3d0ac0ca0c95aaca14d043450cec1cedd.out b/test/expected/test_meta.sh_45ff39a3d0ac0ca0c95aaca14d043450cec1cedd.out new file mode 100644 index 0000000..5ed367d --- /dev/null +++ b/test/expected/test_meta.sh_45ff39a3d0ac0ca0c95aaca14d043450cec1cedd.out @@ -0,0 +1,5 @@ +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" diff --git a/test/expected/test_meta.sh_48e85ba0c0945a5085fb4ee255771406061a9c17.err b/test/expected/test_meta.sh_48e85ba0c0945a5085fb4ee255771406061a9c17.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_meta.sh_48e85ba0c0945a5085fb4ee255771406061a9c17.err diff --git a/test/expected/test_meta.sh_48e85ba0c0945a5085fb4ee255771406061a9c17.out b/test/expected/test_meta.sh_48e85ba0c0945a5085fb4ee255771406061a9c17.out new file mode 100644 index 0000000..4731070 --- /dev/null +++ b/test/expected/test_meta.sh_48e85ba0c0945a5085fb4ee255771406061a9c17.out @@ -0,0 +1,6 @@ +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" diff --git a/test/expected/test_meta.sh_4c39b356748c67ccf8a6027a1af88da532f8252a.err b/test/expected/test_meta.sh_4c39b356748c67ccf8a6027a1af88da532f8252a.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_meta.sh_4c39b356748c67ccf8a6027a1af88da532f8252a.err diff --git a/test/expected/test_meta.sh_4c39b356748c67ccf8a6027a1af88da532f8252a.out b/test/expected/test_meta.sh_4c39b356748c67ccf8a6027a1af88da532f8252a.out new file mode 100644 index 0000000..0dd4cb7 --- /dev/null +++ b/test/expected/test_meta.sh_4c39b356748c67ccf8a6027a1af88da532f8252a.out @@ -0,0 +1,3 @@ +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" diff --git a/test/expected/test_meta.sh_7b75763926d832bf9784ca234a060859770aabe7.err b/test/expected/test_meta.sh_7b75763926d832bf9784ca234a060859770aabe7.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_meta.sh_7b75763926d832bf9784ca234a060859770aabe7.err diff --git a/test/expected/test_meta.sh_7b75763926d832bf9784ca234a060859770aabe7.out b/test/expected/test_meta.sh_7b75763926d832bf9784ca234a060859770aabe7.out new file mode 100644 index 0000000..78b865d --- /dev/null +++ b/test/expected/test_meta.sh_7b75763926d832bf9784ca234a060859770aabe7.out @@ -0,0 +1,2 @@ +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 diff --git a/test/expected/test_meta.sh_811b1a8a176b25001a89e35b295a1117ab76969b.err b/test/expected/test_meta.sh_811b1a8a176b25001a89e35b295a1117ab76969b.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_meta.sh_811b1a8a176b25001a89e35b295a1117ab76969b.err diff --git a/test/expected/test_meta.sh_811b1a8a176b25001a89e35b295a1117ab76969b.out b/test/expected/test_meta.sh_811b1a8a176b25001a89e35b295a1117ab76969b.out new file mode 100644 index 0000000..0dd4cb7 --- /dev/null +++ b/test/expected/test_meta.sh_811b1a8a176b25001a89e35b295a1117ab76969b.out @@ -0,0 +1,3 @@ +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" diff --git a/test/expected/test_meta.sh_83ac877aa9d38b25945cf96d6326a2468187c40f.err b/test/expected/test_meta.sh_83ac877aa9d38b25945cf96d6326a2468187c40f.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_meta.sh_83ac877aa9d38b25945cf96d6326a2468187c40f.err diff --git a/test/expected/test_meta.sh_83ac877aa9d38b25945cf96d6326a2468187c40f.out b/test/expected/test_meta.sh_83ac877aa9d38b25945cf96d6326a2468187c40f.out new file mode 100644 index 0000000..2830598 --- /dev/null +++ b/test/expected/test_meta.sh_83ac877aa9d38b25945cf96d6326a2468187c40f.out @@ -0,0 +1,37 @@ +[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> diff --git a/test/expected/test_meta.sh_a7489c1f0e001adc732b7e2ab31bb30960fda078.err b/test/expected/test_meta.sh_a7489c1f0e001adc732b7e2ab31bb30960fda078.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_meta.sh_a7489c1f0e001adc732b7e2ab31bb30960fda078.err diff --git a/test/expected/test_meta.sh_a7489c1f0e001adc732b7e2ab31bb30960fda078.out b/test/expected/test_meta.sh_a7489c1f0e001adc732b7e2ab31bb30960fda078.out new file mode 100644 index 0000000..08a6fcb --- /dev/null +++ b/test/expected/test_meta.sh_a7489c1f0e001adc732b7e2ab31bb30960fda078.out @@ -0,0 +1,4 @@ +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" diff --git a/test/expected/test_meta.sh_c063f96398650f130941bbbf4cf63c1244fdbee5.err b/test/expected/test_meta.sh_c063f96398650f130941bbbf4cf63c1244fdbee5.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_meta.sh_c063f96398650f130941bbbf4cf63c1244fdbee5.err diff --git a/test/expected/test_meta.sh_c063f96398650f130941bbbf4cf63c1244fdbee5.out b/test/expected/test_meta.sh_c063f96398650f130941bbbf4cf63c1244fdbee5.out new file mode 100644 index 0000000..0dd4cb7 --- /dev/null +++ b/test/expected/test_meta.sh_c063f96398650f130941bbbf4cf63c1244fdbee5.out @@ -0,0 +1,3 @@ +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" diff --git a/test/expected/test_meta.sh_c75128169049bd88d5eaf8b84a7f617e5ae5d936.err b/test/expected/test_meta.sh_c75128169049bd88d5eaf8b84a7f617e5ae5d936.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_meta.sh_c75128169049bd88d5eaf8b84a7f617e5ae5d936.err diff --git a/test/expected/test_meta.sh_c75128169049bd88d5eaf8b84a7f617e5ae5d936.out b/test/expected/test_meta.sh_c75128169049bd88d5eaf8b84a7f617e5ae5d936.out new file mode 100644 index 0000000..8462ae3 --- /dev/null +++ b/test/expected/test_meta.sh_c75128169049bd88d5eaf8b84a7f617e5ae5d936.out @@ -0,0 +1,4 @@ +[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 diff --git a/test/expected/test_meta.sh_c8fb22932af2467a2651797a8a8d8cddcd09431d.err b/test/expected/test_meta.sh_c8fb22932af2467a2651797a8a8d8cddcd09431d.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_meta.sh_c8fb22932af2467a2651797a8a8d8cddcd09431d.err diff --git a/test/expected/test_meta.sh_c8fb22932af2467a2651797a8a8d8cddcd09431d.out b/test/expected/test_meta.sh_c8fb22932af2467a2651797a8a8d8cddcd09431d.out new file mode 100644 index 0000000..5cf31b1 --- /dev/null +++ b/test/expected/test_meta.sh_c8fb22932af2467a2651797a8a8d8cddcd09431d.out @@ -0,0 +1,4 @@ +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" diff --git a/test/expected/test_meta.sh_d6af0b41066ca3be0bbce89c83c011f4ecfa516e.err b/test/expected/test_meta.sh_d6af0b41066ca3be0bbce89c83c011f4ecfa516e.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_meta.sh_d6af0b41066ca3be0bbce89c83c011f4ecfa516e.err diff --git a/test/expected/test_meta.sh_d6af0b41066ca3be0bbce89c83c011f4ecfa516e.out b/test/expected/test_meta.sh_d6af0b41066ca3be0bbce89c83c011f4ecfa516e.out new file mode 100644 index 0000000..a3e5357 --- /dev/null +++ b/test/expected/test_meta.sh_d6af0b41066ca3be0bbce89c83c011f4ecfa516e.out @@ -0,0 +1,5 @@ +[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 diff --git a/test/expected/test_meta.sh_fd09cb565f44a114d8c9a519e571918e30262eaf.err b/test/expected/test_meta.sh_fd09cb565f44a114d8c9a519e571918e30262eaf.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_meta.sh_fd09cb565f44a114d8c9a519e571918e30262eaf.err diff --git a/test/expected/test_meta.sh_fd09cb565f44a114d8c9a519e571918e30262eaf.out b/test/expected/test_meta.sh_fd09cb565f44a114d8c9a519e571918e30262eaf.out new file mode 100644 index 0000000..b842402 --- /dev/null +++ b/test/expected/test_meta.sh_fd09cb565f44a114d8c9a519e571918e30262eaf.out @@ -0,0 +1,4 @@ +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" diff --git a/test/expected/test_meta.sh_fdf4a91aa55262255816dff7d605f1f0a5d6fe92.err b/test/expected/test_meta.sh_fdf4a91aa55262255816dff7d605f1f0a5d6fe92.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_meta.sh_fdf4a91aa55262255816dff7d605f1f0a5d6fe92.err diff --git a/test/expected/test_meta.sh_fdf4a91aa55262255816dff7d605f1f0a5d6fe92.out b/test/expected/test_meta.sh_fdf4a91aa55262255816dff7d605f1f0a5d6fe92.out new file mode 100644 index 0000000..25b6f32 --- /dev/null +++ b/test/expected/test_meta.sh_fdf4a91aa55262255816dff7d605f1f0a5d6fe92.out @@ -0,0 +1,4 @@ +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" diff --git a/test/expected/test_pretty_print.sh_3c255c3c8b28df9d694b329a265e8b8140dae4a2.err b/test/expected/test_pretty_print.sh_3c255c3c8b28df9d694b329a265e8b8140dae4a2.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_pretty_print.sh_3c255c3c8b28df9d694b329a265e8b8140dae4a2.err diff --git a/test/expected/test_pretty_print.sh_3c255c3c8b28df9d694b329a265e8b8140dae4a2.out b/test/expected/test_pretty_print.sh_3c255c3c8b28df9d694b329a265e8b8140dae4a2.out new file mode 100644 index 0000000..35fadf8 --- /dev/null +++ b/test/expected/test_pretty_print.sh_3c255c3c8b28df9d694b329a265e8b8140dae4a2.out @@ -0,0 +1,8 @@ +{ +[35m "wra[0mpper": [ + {[35m"message"[0m:[35m""[0m +[35m select Id from Account where id = $sfid[0m +[35m ^[0m +[35m ERROR at Row:1:Column:34[0m +[35m line 1:34 no viable alternative at character '$'[0m +[35m""[0m}]} diff --git a/test/expected/test_pretty_print.sh_4111e649fb49c0a377e552fa0b56c60c370633da.err b/test/expected/test_pretty_print.sh_4111e649fb49c0a377e552fa0b56c60c370633da.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_pretty_print.sh_4111e649fb49c0a377e552fa0b56c60c370633da.err diff --git a/test/expected/test_pretty_print.sh_4111e649fb49c0a377e552fa0b56c60c370633da.out b/test/expected/test_pretty_print.sh_4111e649fb49c0a377e552fa0b56c60c370633da.out new file mode 100644 index 0000000..f6eae9d --- /dev/null +++ b/test/expected/test_pretty_print.sh_4111e649fb49c0a377e552fa0b56c60c370633da.out @@ -0,0 +1,4 @@ +{ + [31mExample[0m: foo, + bar: baz +} diff --git a/test/expected/test_pretty_print.sh_675a2ff6306df7c54127e39319cf06a2dd353145.err b/test/expected/test_pretty_print.sh_675a2ff6306df7c54127e39319cf06a2dd353145.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_pretty_print.sh_675a2ff6306df7c54127e39319cf06a2dd353145.err diff --git a/test/expected/test_pretty_print.sh_675a2ff6306df7c54127e39319cf06a2dd353145.out b/test/expected/test_pretty_print.sh_675a2ff6306df7c54127e39319cf06a2dd353145.out new file mode 100644 index 0000000..0808acf --- /dev/null +++ b/test/expected/test_pretty_print.sh_675a2ff6306df7c54127e39319cf06a2dd353145.out @@ -0,0 +1,5 @@ +[2020-12-10 06:56:41,061] INFO [:108] Calling 'x' with params: +[2020-12-10 06:56:41,092] DEBUG [:69] Full request text: +/a-request, /a-request/head, /a-request/source, /a-request/request, /a-request/request/name +[2020-12-10 06:56:41,099] DEBUG [:85] Full reply text: +/a-reply, /a-reply/head, /a-reply/reply, /a-reply/reply/status, /a-reply/reply/status/result, /a-reply/reply/name, /a-reply/technical-track diff --git a/test/expected/test_pretty_print.sh_7192f8f68adb14705c8a60e73ff8248c61c7fd03.err b/test/expected/test_pretty_print.sh_7192f8f68adb14705c8a60e73ff8248c61c7fd03.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_pretty_print.sh_7192f8f68adb14705c8a60e73ff8248c61c7fd03.err diff --git a/test/expected/test_pretty_print.sh_7192f8f68adb14705c8a60e73ff8248c61c7fd03.out b/test/expected/test_pretty_print.sh_7192f8f68adb14705c8a60e73ff8248c61c7fd03.out new file mode 100644 index 0000000..613cc3a --- /dev/null +++ b/test/expected/test_pretty_print.sh_7192f8f68adb14705c8a60e73ff8248c61c7fd03.out @@ -0,0 +1,5 @@ +2015-04-18T13:16:30.003 { + "wrapper": {"msg": r"" + Hello, + World! +""}} diff --git a/test/expected/test_pretty_print.sh_a5bee322ea3374690e44a88a16cb6b84feaa11d3.err b/test/expected/test_pretty_print.sh_a5bee322ea3374690e44a88a16cb6b84feaa11d3.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_pretty_print.sh_a5bee322ea3374690e44a88a16cb6b84feaa11d3.err diff --git a/test/expected/test_pretty_print.sh_a5bee322ea3374690e44a88a16cb6b84feaa11d3.out b/test/expected/test_pretty_print.sh_a5bee322ea3374690e44a88a16cb6b84feaa11d3.out new file mode 100644 index 0000000..0ac4c9a --- /dev/null +++ b/test/expected/test_pretty_print.sh_a5bee322ea3374690e44a88a16cb6b84feaa11d3.out @@ -0,0 +1,3 @@ +Hello +World + diff --git a/test/expected/test_pretty_print.sh_a6d9042e5e95f2a49194bd80c1eed154813ddf41.err b/test/expected/test_pretty_print.sh_a6d9042e5e95f2a49194bd80c1eed154813ddf41.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_pretty_print.sh_a6d9042e5e95f2a49194bd80c1eed154813ddf41.err diff --git a/test/expected/test_pretty_print.sh_a6d9042e5e95f2a49194bd80c1eed154813ddf41.out b/test/expected/test_pretty_print.sh_a6d9042e5e95f2a49194bd80c1eed154813ddf41.out new file mode 100644 index 0000000..3fb9189 --- /dev/null +++ b/test/expected/test_pretty_print.sh_a6d9042e5e95f2a49194bd80c1eed154813ddf41.out @@ -0,0 +1,19 @@ +Mar 24 15:17:38.999 000000000264F I shmem.res 262144 262144 1 chassis_msg_svc/osenv::req_blocking<osenv::req_lambda<tcp_messaging_impl::register_app(svc::messaging_port, + defs::atom*, + defs::borrowed<svc::messaging_session>, + defs::owned<svc::connection_eviction_strategy>&&, + svc::messaging::connection_type, + svc::messaging::app_param +)::{lambda()#1}>, osenv::aloc_dynamic_named<tcp_messaging_impl::register_app(svc::messaging_port, + defs::atom*, + defs::borrowed<svc::messaging_session>, + defs::owned<svc::connection_eviction_strategy>&&, + svc::messaginconnection_type, + svc::messaging::app_param +)::{lambda()#1}, osenv::temporal, tcp_messaging_impl::register_app(svc::messaging_port, + defs::atom*, + defs::borrowed<svc::messaging_session>, + des::owned<svc::connection_eviction_strategy>&&, + svc::messaging::connection_type, + svc::messaging::app_param +)::{lambda()#1}>, osenv::req>->fiber stacks diff --git a/test/expected/test_pretty_print.sh_cd361eeca7e91bfab942b75d6c3422c7a456a111.err b/test/expected/test_pretty_print.sh_cd361eeca7e91bfab942b75d6c3422c7a456a111.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_pretty_print.sh_cd361eeca7e91bfab942b75d6c3422c7a456a111.err diff --git a/test/expected/test_pretty_print.sh_cd361eeca7e91bfab942b75d6c3422c7a456a111.out b/test/expected/test_pretty_print.sh_cd361eeca7e91bfab942b75d6c3422c7a456a111.out new file mode 100644 index 0000000..c3e4e85 --- /dev/null +++ b/test/expected/test_pretty_print.sh_cd361eeca7e91bfab942b75d6c3422c7a456a111.out @@ -0,0 +1,3 @@ +2015-04-18T13:16:30.003 8.8.8.8 +<foo>8.8.8.8</foo> +9 8.8.8.8<1054 198.51.100.1546 544.9.8.7 98.542.241.99 19143.2.5.6 diff --git a/test/expected/test_pretty_print.sh_f8feb52a321026d9562b271eb37a2c56dfaed329.err b/test/expected/test_pretty_print.sh_f8feb52a321026d9562b271eb37a2c56dfaed329.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_pretty_print.sh_f8feb52a321026d9562b271eb37a2c56dfaed329.err diff --git a/test/expected/test_pretty_print.sh_f8feb52a321026d9562b271eb37a2c56dfaed329.out b/test/expected/test_pretty_print.sh_f8feb52a321026d9562b271eb37a2c56dfaed329.out new file mode 100644 index 0000000..35f3af0 --- /dev/null +++ b/test/expected/test_pretty_print.sh_f8feb52a321026d9562b271eb37a2c56dfaed329.out @@ -0,0 +1 @@ +2022-06-22T10:20:33 [31mExample[0m foo diff --git a/test/expected/test_regex101.sh_0fa3663a45aca6a328cb728872af7ed7ee896f1c.err b/test/expected/test_regex101.sh_0fa3663a45aca6a328cb728872af7ed7ee896f1c.err new file mode 100644 index 0000000..cd096a9 --- /dev/null +++ b/test/expected/test_regex101.sh_0fa3663a45aca6a328cb728872af7ed7ee896f1c.err @@ -0,0 +1,2 @@ +[1m[31m✘ error[0m: regex “[1mstd[0m” of format “[1msyslog_log[0m” has not been pushed to regex101.com +[36m =[0m [36mhelp[0m: use the “[1m[36mpush[0m” subcommand to create the regex on regex101.com for easy editing diff --git a/test/expected/test_regex101.sh_0fa3663a45aca6a328cb728872af7ed7ee896f1c.out b/test/expected/test_regex101.sh_0fa3663a45aca6a328cb728872af7ed7ee896f1c.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_regex101.sh_0fa3663a45aca6a328cb728872af7ed7ee896f1c.out diff --git a/test/expected/test_regex101.sh_182ae9244db314a953af2bee969726e381bc5a32.err b/test/expected/test_regex101.sh_182ae9244db314a953af2bee969726e381bc5a32.err new file mode 100644 index 0000000..3b83cb4 --- /dev/null +++ b/test/expected/test_regex101.sh_182ae9244db314a953af2bee969726e381bc5a32.err @@ -0,0 +1,3 @@ +[1m[31m✘ error[0m: unable to import: [1mhttps://regex101.com/r/zpEnjV/1[0m + [1m[31mreason[0m: format file already exists: [1mregex101-home/.lnav/formats/installed/unit_test_log.json[0m +[36m =[0m [36mhelp[0m: delete the existing file to continue diff --git a/test/expected/test_regex101.sh_182ae9244db314a953af2bee969726e381bc5a32.out b/test/expected/test_regex101.sh_182ae9244db314a953af2bee969726e381bc5a32.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_regex101.sh_182ae9244db314a953af2bee969726e381bc5a32.out diff --git a/test/expected/test_regex101.sh_2158f1f011ba8e1b152396c072790c076fdb8ce8.err b/test/expected/test_regex101.sh_2158f1f011ba8e1b152396c072790c076fdb8ce8.err new file mode 100644 index 0000000..bbcd290 --- /dev/null +++ b/test/expected/test_regex101.sh_2158f1f011ba8e1b152396c072790c076fdb8ce8.err @@ -0,0 +1,3 @@ +[33m⚠ warning[0m: not deleting regex101 entry “[1mzpEnjV[0m” + [33mreason[0m: delete code is not known for this entry +[36m =[0m [36mnote[0m: formats created by importing a regex101.com entry will not have a delete code diff --git a/test/expected/test_regex101.sh_2158f1f011ba8e1b152396c072790c076fdb8ce8.out b/test/expected/test_regex101.sh_2158f1f011ba8e1b152396c072790c076fdb8ce8.out new file mode 100644 index 0000000..bb52e20 --- /dev/null +++ b/test/expected/test_regex101.sh_2158f1f011ba8e1b152396c072790c076fdb8ce8.out @@ -0,0 +1 @@ +[1m[32m✔ [0mdeleted regex101 entry: [1mzpEnjV[0m diff --git a/test/expected/test_regex101.sh_281af24141680330791db7f7c5fa70833ce08a6b.err b/test/expected/test_regex101.sh_281af24141680330791db7f7c5fa70833ce08a6b.err new file mode 100644 index 0000000..286a1cf --- /dev/null +++ b/test/expected/test_regex101.sh_281af24141680330791db7f7c5fa70833ce08a6b.err @@ -0,0 +1 @@ +[1m[31m✘ error[0m: expecting a regex101.com URL to import diff --git a/test/expected/test_regex101.sh_281af24141680330791db7f7c5fa70833ce08a6b.out b/test/expected/test_regex101.sh_281af24141680330791db7f7c5fa70833ce08a6b.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_regex101.sh_281af24141680330791db7f7c5fa70833ce08a6b.out diff --git a/test/expected/test_regex101.sh_35703b13990785632cca82123fb3883797959c0b.err b/test/expected/test_regex101.sh_35703b13990785632cca82123fb3883797959c0b.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_regex101.sh_35703b13990785632cca82123fb3883797959c0b.err diff --git a/test/expected/test_regex101.sh_35703b13990785632cca82123fb3883797959c0b.out b/test/expected/test_regex101.sh_35703b13990785632cca82123fb3883797959c0b.out new file mode 100644 index 0000000..a56e549 --- /dev/null +++ b/test/expected/test_regex101.sh_35703b13990785632cca82123fb3883797959c0b.out @@ -0,0 +1,4 @@ +[1m[32m✔ [0mconverted regex101 entry to format file: [1mregex101-home/.lnav/formats/installed/unit_test_log.json[0m +[36m =[0m [36mnote[0m: the converted format may still have errors +[36m =[0m [36mhelp[0m: use the following command to patch the regex as more changes are made on regex101.com: + lnav -m format unit_test_log regex std regex101 pull diff --git a/test/expected/test_regex101.sh_366730cac50b4a09b7de4b84641791470b1cb9a3.err b/test/expected/test_regex101.sh_366730cac50b4a09b7de4b84641791470b1cb9a3.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_regex101.sh_366730cac50b4a09b7de4b84641791470b1cb9a3.err diff --git a/test/expected/test_regex101.sh_366730cac50b4a09b7de4b84641791470b1cb9a3.out b/test/expected/test_regex101.sh_366730cac50b4a09b7de4b84641791470b1cb9a3.out new file mode 100644 index 0000000..7f5397d --- /dev/null +++ b/test/expected/test_regex101.sh_366730cac50b4a09b7de4b84641791470b1cb9a3.out @@ -0,0 +1,10 @@ +{ + "$schema": "https://lnav.org/schemas/format-v1.schema.json", + "unit_test_log": { + "regex": { + "std": { + "pattern": "\\[(?<timestamp>\\d+\\/\\d+\\/\\d+ \\d+:\\d+:\\d+) (?<jobserver>[\\w.]+) (?<workqueue>[\\w.]+) (?<processid>\\d+)\\] (?<body>.*)$" + } + } + } +} diff --git a/test/expected/test_regex101.sh_3d18474a3e472fff6e23e0c41337ec9188fee591.err b/test/expected/test_regex101.sh_3d18474a3e472fff6e23e0c41337ec9188fee591.err new file mode 100644 index 0000000..32c87d4 --- /dev/null +++ b/test/expected/test_regex101.sh_3d18474a3e472fff6e23e0c41337ec9188fee591.err @@ -0,0 +1,34 @@ +[1m[31m✘ error[0m: invalid value “[1m/unit_test_log/value/jobserver[0m” + [1m[31mreason[0m: no patterns have a capture named “jobserver” +[36m =[0m [36mnote[0m: the following captures are available: + +[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 value “[1m/unit_test_log/value/processid[0m” + [1m[31mreason[0m: no patterns have a capture named “processid” +[36m =[0m [36mnote[0m: the following captures are available: + +[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 value “[1m/unit_test_log/value/timestamp[0m” + [1m[31mreason[0m: no patterns have a capture named “timestamp” +[36m =[0m [36mnote[0m: the following captures are available: + +[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 value “[1m/unit_test_log/value/workqueue[0m” + [1m[31mreason[0m: no patterns have a capture named “workqueue” +[36m =[0m [36mnote[0m: the following captures are available: + +[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 sample log message: "[03/22/2021 02:00:02 job1074.example.com db.db81.example_events 54026] {\"ELAPSED\":\"0.011\",\"LEVEL\":\"info\",\"MESSAGE\":\"finished in 0.011\\n\",\"PREFIX\":\"YFgyWQriCmsAAofJAAAAHg\",\"ROUTINGKEY\":\"EXAMPLE1366.Example.Events._Publish\"}" + [1m[31mreason[0m: sample does not match any patterns +[36m --> [0m[1mregex101-home/.lnav/formats/installed/unit_test_log.json[0m:26 +[36m =[0m [36mnote[0m: the following shows how each pattern matched this sample: + [37m[40m[03/22/2021 02:00:02 job1074.example.com db.db81.example_events 54026] {"ELAPSED":"0.011","LEVEL":"info","MESSAGE":"finished in 0.011\n","PREFIX":"YFgyWQriCmsAAofJAAAAHg","ROUTINGKEY":"EXAMPLE1366.Example.Events._Publish"}[0m +[36m =[0m [36mnote[0m: [1mstd[0m = “” + +[1m[31m✘ error[0m: invalid sample log message: "[03/22/2021 02:00:02 job1074.example.com db.db81.example_events 54026] {\"ELAPSED\":\"0.011\",\"LEVEL\":\"info\",\"MESSAGE\":\"finished in 0.011\\n\",\"PREFIX\":\"YFgyWQriCmsAAofJAAAAHg\",\"ROUTINGKEY\":\"EXAMPLE1366.Example.Events._Publish\"}" + [1m[31mreason[0m: sample does not match any patterns +[36m --> [0m[1mregex101-home/.lnav/formats/installed/unit_test_log.json[0m:30 +[36m =[0m [36mnote[0m: the following shows how each pattern matched this sample: + [37m[40m[03/22/2021 02:00:02 job1074.example.com db.db81.example_events 54026] {"ELAPSED":"0.011","LEVEL":"info","MESSAGE":"finished in 0.011\n","PREFIX":"YFgyWQriCmsAAofJAAAAHg","ROUTINGKEY":"EXAMPLE1366.Example.Events._Publish"}[0m +[36m =[0m [36mnote[0m: [1mstd[0m = “” + diff --git a/test/expected/test_regex101.sh_3d18474a3e472fff6e23e0c41337ec9188fee591.out b/test/expected/test_regex101.sh_3d18474a3e472fff6e23e0c41337ec9188fee591.out new file mode 100644 index 0000000..93cf6b4 --- /dev/null +++ b/test/expected/test_regex101.sh_3d18474a3e472fff6e23e0c41337ec9188fee591.out @@ -0,0 +1,3 @@ +[1m[32m✔ [0mformat patch file written to: [1mregex101-home/.lnav/formats/installed/unit_test_log.regex101-zpEnjV.json[0m +[36m =[0m [36mhelp[0m: once the regex has been found to be working correctly, move the contents of the patch file to the original file at: + [1mregex101-home/.lnav/formats/installed/unit_test_log.json[0m diff --git a/test/expected/test_regex101.sh_442cc58676590a3604d5c2183f5fe0a75c98351a.err b/test/expected/test_regex101.sh_442cc58676590a3604d5c2183f5fe0a75c98351a.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_regex101.sh_442cc58676590a3604d5c2183f5fe0a75c98351a.err diff --git a/test/expected/test_regex101.sh_442cc58676590a3604d5c2183f5fe0a75c98351a.out b/test/expected/test_regex101.sh_442cc58676590a3604d5c2183f5fe0a75c98351a.out new file mode 100644 index 0000000..7329b20 --- /dev/null +++ b/test/expected/test_regex101.sh_442cc58676590a3604d5c2183f5fe0a75c98351a.out @@ -0,0 +1,2 @@ +regex101-home/.lnav/formats/installed/unit_test_log.json +regex101-home/.lnav/formats/installed/unit_test_log.regex101-zpEnjV.json diff --git a/test/expected/test_regex101.sh_566fd88d216a44bc1c6e23f2d6f2d0caf99d42f9.err b/test/expected/test_regex101.sh_566fd88d216a44bc1c6e23f2d6f2d0caf99d42f9.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_regex101.sh_566fd88d216a44bc1c6e23f2d6f2d0caf99d42f9.err diff --git a/test/expected/test_regex101.sh_566fd88d216a44bc1c6e23f2d6f2d0caf99d42f9.out b/test/expected/test_regex101.sh_566fd88d216a44bc1c6e23f2d6f2d0caf99d42f9.out new file mode 100644 index 0000000..3fd83a6 --- /dev/null +++ b/test/expected/test_regex101.sh_566fd88d216a44bc1c6e23f2d6f2d0caf99d42f9.out @@ -0,0 +1 @@ +[1m[32m✔ [0mno regex101 entries found diff --git a/test/expected/test_regex101.sh_5f2f7ecb6ab9cbec4b41385b91bd038906b8a7b2.err b/test/expected/test_regex101.sh_5f2f7ecb6ab9cbec4b41385b91bd038906b8a7b2.err new file mode 100644 index 0000000..6d4ee32 --- /dev/null +++ b/test/expected/test_regex101.sh_5f2f7ecb6ab9cbec4b41385b91bd038906b8a7b2.err @@ -0,0 +1,3 @@ +[1m[31m✘ error[0m: cannot delete regex101 entry while patch file exists +[36m =[0m [36mnote[0m: [1mregex101-home/.lnav/formats/installed/unit_test_log.regex101-zpEnjV.json[0m +[36m =[0m [36mhelp[0m: move the contents of the patch file to the main log format and then delete the file to continue diff --git a/test/expected/test_regex101.sh_5f2f7ecb6ab9cbec4b41385b91bd038906b8a7b2.out b/test/expected/test_regex101.sh_5f2f7ecb6ab9cbec4b41385b91bd038906b8a7b2.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_regex101.sh_5f2f7ecb6ab9cbec4b41385b91bd038906b8a7b2.out diff --git a/test/expected/test_regex101.sh_629bde30483e0a6461076e9058f3a5eb81ae0425.err b/test/expected/test_regex101.sh_629bde30483e0a6461076e9058f3a5eb81ae0425.err new file mode 100644 index 0000000..83dd591 --- /dev/null +++ b/test/expected/test_regex101.sh_629bde30483e0a6461076e9058f3a5eb81ae0425.err @@ -0,0 +1,3 @@ +[1m[31m✘ error[0m: invalid regex “[1mabc(def)[0m” from “[1mhttps://regex101.com/r/cvCJNP/1[0m” + [1m[31mreason[0m: unsupported regex flavor: “[1mgm[0m” +[36m =[0m [36mhelp[0m: the supported flavors are: [1mpcre[0m, [1mpcre2[0m diff --git a/test/expected/test_regex101.sh_629bde30483e0a6461076e9058f3a5eb81ae0425.out b/test/expected/test_regex101.sh_629bde30483e0a6461076e9058f3a5eb81ae0425.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_regex101.sh_629bde30483e0a6461076e9058f3a5eb81ae0425.out diff --git a/test/expected/test_regex101.sh_630db454054cf92ec9bd0f4e3e83300047f583ff.err b/test/expected/test_regex101.sh_630db454054cf92ec9bd0f4e3e83300047f583ff.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_regex101.sh_630db454054cf92ec9bd0f4e3e83300047f583ff.err diff --git a/test/expected/test_regex101.sh_630db454054cf92ec9bd0f4e3e83300047f583ff.out b/test/expected/test_regex101.sh_630db454054cf92ec9bd0f4e3e83300047f583ff.out new file mode 100644 index 0000000..8b0d55d --- /dev/null +++ b/test/expected/test_regex101.sh_630db454054cf92ec9bd0f4e3e83300047f583ff.out @@ -0,0 +1,4 @@ +[1m[32m✔ [0mconverted regex101 entry to format file: [1mregex101-home/.lnav/formats/installed/unit_test_log.regex101-hGiqBL.json[0m +[36m =[0m [36mnote[0m: the converted format may still have errors +[36m =[0m [36mhelp[0m: use the following command to patch the regex as more changes are made on regex101.com: + lnav -m format unit_test_log regex alt regex101 pull diff --git a/test/expected/test_regex101.sh_771af6f3d29b8350542d5c6e98bdbf4c223cd531.err b/test/expected/test_regex101.sh_771af6f3d29b8350542d5c6e98bdbf4c223cd531.err new file mode 100644 index 0000000..e533bd6 --- /dev/null +++ b/test/expected/test_regex101.sh_771af6f3d29b8350542d5c6e98bdbf4c223cd531.err @@ -0,0 +1 @@ +[1m[31m✘ error[0m: unknown regex: [1mnon-existent[0m diff --git a/test/expected/test_regex101.sh_771af6f3d29b8350542d5c6e98bdbf4c223cd531.out b/test/expected/test_regex101.sh_771af6f3d29b8350542d5c6e98bdbf4c223cd531.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_regex101.sh_771af6f3d29b8350542d5c6e98bdbf4c223cd531.out diff --git a/test/expected/test_regex101.sh_7991a5b617867cf37c9f7baa85ffa425f7d455a2.err b/test/expected/test_regex101.sh_7991a5b617867cf37c9f7baa85ffa425f7d455a2.err new file mode 100644 index 0000000..450b99b --- /dev/null +++ b/test/expected/test_regex101.sh_7991a5b617867cf37c9f7baa85ffa425f7d455a2.err @@ -0,0 +1,5 @@ +[1m[31m✘ error[0m: expecting an operation to perform on the [1mstd[0m regex using regex101.com +[36m =[0m [36mhelp[0m: the available subcommands are: + • [1m[36mpush[0m: create/update an entry for this regex on regex101.com + • [1m[36mpull[0m: create a patch format file for this regular expression based on the entry in regex101.com + • [1m[36mdelete[0m: delete the entry regex101.com that was created by a push operation diff --git a/test/expected/test_regex101.sh_7991a5b617867cf37c9f7baa85ffa425f7d455a2.out b/test/expected/test_regex101.sh_7991a5b617867cf37c9f7baa85ffa425f7d455a2.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_regex101.sh_7991a5b617867cf37c9f7baa85ffa425f7d455a2.out diff --git a/test/expected/test_regex101.sh_79ee3f5fe71ccec97b2619d8c1f74ca97ffd2243.err b/test/expected/test_regex101.sh_79ee3f5fe71ccec97b2619d8c1f74ca97ffd2243.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_regex101.sh_79ee3f5fe71ccec97b2619d8c1f74ca97ffd2243.err diff --git a/test/expected/test_regex101.sh_79ee3f5fe71ccec97b2619d8c1f74ca97ffd2243.out b/test/expected/test_regex101.sh_79ee3f5fe71ccec97b2619d8c1f74ca97ffd2243.out new file mode 100644 index 0000000..4985cf6 --- /dev/null +++ b/test/expected/test_regex101.sh_79ee3f5fe71ccec97b2619d8c1f74ca97ffd2243.out @@ -0,0 +1,2 @@ +[1m[32m✔ [0mlocal regex is in sync with entry “[1mzpEnjV[0m” on regex101.com +[36m =[0m [36mhelp[0m: make edits on “[1mhttps://regex101.com/r/zpEnjV[0m” and then run this command again to update the local values diff --git a/test/expected/test_regex101.sh_7de76c174c58d67bf93e8f01d6d55ebb6a023f10.err b/test/expected/test_regex101.sh_7de76c174c58d67bf93e8f01d6d55ebb6a023f10.err new file mode 100644 index 0000000..8b825ab --- /dev/null +++ b/test/expected/test_regex101.sh_7de76c174c58d67bf93e8f01d6d55ebb6a023f10.err @@ -0,0 +1,3 @@ +[1m[31m✘ error[0m: unknown regex: [1ms[0m +[36m =[0m [36mnote[0m: did you mean one of the following? + [1mstd[0m diff --git a/test/expected/test_regex101.sh_7de76c174c58d67bf93e8f01d6d55ebb6a023f10.out b/test/expected/test_regex101.sh_7de76c174c58d67bf93e8f01d6d55ebb6a023f10.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_regex101.sh_7de76c174c58d67bf93e8f01d6d55ebb6a023f10.out diff --git a/test/expected/test_regex101.sh_8a43e6657d4f60e68d31eb8302542ca28e80d077.err b/test/expected/test_regex101.sh_8a43e6657d4f60e68d31eb8302542ca28e80d077.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_regex101.sh_8a43e6657d4f60e68d31eb8302542ca28e80d077.err diff --git a/test/expected/test_regex101.sh_8a43e6657d4f60e68d31eb8302542ca28e80d077.out b/test/expected/test_regex101.sh_8a43e6657d4f60e68d31eb8302542ca28e80d077.out new file mode 100644 index 0000000..265ad46 --- /dev/null +++ b/test/expected/test_regex101.sh_8a43e6657d4f60e68d31eb8302542ca28e80d077.out @@ -0,0 +1,3 @@ +[1m[32m✔ [0mthe following regex101 entries were found: + format unit_test_log regex std regex101 + diff --git a/test/expected/test_regex101.sh_8e93a3b6b941847c71409a297779fbb0a6666a51.err b/test/expected/test_regex101.sh_8e93a3b6b941847c71409a297779fbb0a6666a51.err new file mode 100644 index 0000000..db47111 --- /dev/null +++ b/test/expected/test_regex101.sh_8e93a3b6b941847c71409a297779fbb0a6666a51.err @@ -0,0 +1,3 @@ +[1m[31m✘ error[0m: expecting an operation to perform on the [1mstd[0m regular expression +[36m =[0m [36mhelp[0m: the available subcommands are: + • [1m[36mregex101[0m: use regex101.com to edit this regular expression diff --git a/test/expected/test_regex101.sh_8e93a3b6b941847c71409a297779fbb0a6666a51.out b/test/expected/test_regex101.sh_8e93a3b6b941847c71409a297779fbb0a6666a51.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_regex101.sh_8e93a3b6b941847c71409a297779fbb0a6666a51.out diff --git a/test/expected/test_regex101.sh_95c56a9d146ec9a7c2196559d316f928b2ae6ae9.err b/test/expected/test_regex101.sh_95c56a9d146ec9a7c2196559d316f928b2ae6ae9.err new file mode 100644 index 0000000..2064fc4 --- /dev/null +++ b/test/expected/test_regex101.sh_95c56a9d146ec9a7c2196559d316f928b2ae6ae9.err @@ -0,0 +1,4 @@ +[1m[31m✘ error[0m: unable to import: [1mabc[0m + [1m[31mreason[0m: expecting a format name that matches the regular expression “^\w+$” +[36m =[0m [36mnote[0m: “def-jkl” + [32m^ matched up to here[0m diff --git a/test/expected/test_regex101.sh_95c56a9d146ec9a7c2196559d316f928b2ae6ae9.out b/test/expected/test_regex101.sh_95c56a9d146ec9a7c2196559d316f928b2ae6ae9.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_regex101.sh_95c56a9d146ec9a7c2196559d316f928b2ae6ae9.out diff --git a/test/expected/test_regex101.sh_9d101ee29c45cdb8c0f117ad736c9a5dd5da5839.err b/test/expected/test_regex101.sh_9d101ee29c45cdb8c0f117ad736c9a5dd5da5839.err new file mode 100644 index 0000000..ca5b424 --- /dev/null +++ b/test/expected/test_regex101.sh_9d101ee29c45cdb8c0f117ad736c9a5dd5da5839.err @@ -0,0 +1 @@ +[1m[31m✘ error[0m: no regex101 entry for [1msyslog_log[0m/[1mstd[0m diff --git a/test/expected/test_regex101.sh_9d101ee29c45cdb8c0f117ad736c9a5dd5da5839.out b/test/expected/test_regex101.sh_9d101ee29c45cdb8c0f117ad736c9a5dd5da5839.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_regex101.sh_9d101ee29c45cdb8c0f117ad736c9a5dd5da5839.out diff --git a/test/expected/test_regex101.sh_c43e07df9b3068696fdc8759c7561135db981b38.err b/test/expected/test_regex101.sh_c43e07df9b3068696fdc8759c7561135db981b38.err new file mode 100644 index 0000000..f705892 --- /dev/null +++ b/test/expected/test_regex101.sh_c43e07df9b3068696fdc8759c7561135db981b38.err @@ -0,0 +1,2 @@ +[1m[31m✘ error[0m: unable to get entry “[1mbadregex123[0m” on regex101.com + [1m[31mreason[0m: received response code [1m400[0m content “{"error":"Invalid permalink id",}” diff --git a/test/expected/test_regex101.sh_c43e07df9b3068696fdc8759c7561135db981b38.out b/test/expected/test_regex101.sh_c43e07df9b3068696fdc8759c7561135db981b38.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_regex101.sh_c43e07df9b3068696fdc8759c7561135db981b38.out diff --git a/test/expected/test_regex101.sh_cbd859487e4ea011cd6e0f0f114d70158bfd8b43.err b/test/expected/test_regex101.sh_cbd859487e4ea011cd6e0f0f114d70158bfd8b43.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_regex101.sh_cbd859487e4ea011cd6e0f0f114d70158bfd8b43.err diff --git a/test/expected/test_regex101.sh_cbd859487e4ea011cd6e0f0f114d70158bfd8b43.out b/test/expected/test_regex101.sh_cbd859487e4ea011cd6e0f0f114d70158bfd8b43.out new file mode 100644 index 0000000..c06f523 --- /dev/null +++ b/test/expected/test_regex101.sh_cbd859487e4ea011cd6e0f0f114d70158bfd8b43.out @@ -0,0 +1,34 @@ +{ + "$schema": "https://lnav.org/schemas/format-v1.schema.json", + "unit_test_log": { + "description": "Format file generated from regex101 entry -- https://regex101.com/r/zpEnjV/2", + "regex": { + "std": { + "pattern": "\\[(?<timestamp>\\d+\\/\\d+\\/\\d+ \\d+:\\d+:\\d+) (?<jobserver>[\\w.]+) (?<workqueue>[\\w.]+) (?<processid>\\d+)\\] (?<body>.*)$" + } + }, + "value": { + "jobserver": { + "kind": "string" + }, + "processid": { + "kind": "string" + }, + "timestamp": { + "kind": "string" + }, + "workqueue": { + "kind": "string" + } + }, + "sample": [ + { + "line": "[03/22/2021 02:00:02 job1074.example.com db.db81.example_events 54026] {\"ELAPSED\":\"0.011\",\"LEVEL\":\"info\",\"MESSAGE\":\"finished in 0.011\\n\",\"PREFIX\":\"YFgyWQriCmsAAofJAAAAHg\",\"ROUTINGKEY\":\"EXAMPLE1366.Example.Events._Publish\"}" + }, + { + "description": "sample 1", + "line": "[03/22/2021 02:00:02 job1074.example.com db.db81.example_events 54026] {\"ELAPSED\":\"0.011\",\"LEVEL\":\"info\",\"MESSAGE\":\"finished in 0.011\\n\",\"PREFIX\":\"YFgyWQriCmsAAofJAAAAHg\",\"ROUTINGKEY\":\"EXAMPLE1366.Example.Events._Publish\"}" + } + ] + } +} diff --git a/test/expected/test_regex101.sh_cf6c0a9f0f04e24ce1fae7a0a434830b14447f83.err b/test/expected/test_regex101.sh_cf6c0a9f0f04e24ce1fae7a0a434830b14447f83.err new file mode 100644 index 0000000..9b187b7 --- /dev/null +++ b/test/expected/test_regex101.sh_cf6c0a9f0f04e24ce1fae7a0a434830b14447f83.err @@ -0,0 +1 @@ +[1m[31m✘ error[0m: unknown format: [1mnon-existent[0m diff --git a/test/expected/test_regex101.sh_cf6c0a9f0f04e24ce1fae7a0a434830b14447f83.out b/test/expected/test_regex101.sh_cf6c0a9f0f04e24ce1fae7a0a434830b14447f83.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_regex101.sh_cf6c0a9f0f04e24ce1fae7a0a434830b14447f83.out diff --git a/test/expected/test_regex101.sh_d84597760285c3964b258726341e018f6cd49954.err b/test/expected/test_regex101.sh_d84597760285c3964b258726341e018f6cd49954.err new file mode 100644 index 0000000..85a97ba --- /dev/null +++ b/test/expected/test_regex101.sh_d84597760285c3964b258726341e018f6cd49954.err @@ -0,0 +1,7 @@ +[1m[31m✘ error[0m: expecting an operation to perform on the [1mstd[0m regex using regex101.com +[36m =[0m [36mnote[0m: this regex is currently associated with the following regex101.com entry: + [1mhttps://regex101.com/r/zpEnjV[0m +[36m =[0m [36mhelp[0m: the available subcommands are: + • [1m[36mpush[0m: create/update an entry for this regex on regex101.com + • [1m[36mpull[0m: create a patch format file for this regular expression based on the entry in regex101.com + • [1m[36mdelete[0m: delete the entry regex101.com that was created by a push operation diff --git a/test/expected/test_regex101.sh_d84597760285c3964b258726341e018f6cd49954.out b/test/expected/test_regex101.sh_d84597760285c3964b258726341e018f6cd49954.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_regex101.sh_d84597760285c3964b258726341e018f6cd49954.out diff --git a/test/expected/test_regex101.sh_f23e393dbf23d0d8e276e9b7610c7b74d79980f8.err b/test/expected/test_regex101.sh_f23e393dbf23d0d8e276e9b7610c7b74d79980f8.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_regex101.sh_f23e393dbf23d0d8e276e9b7610c7b74d79980f8.err diff --git a/test/expected/test_regex101.sh_f23e393dbf23d0d8e276e9b7610c7b74d79980f8.out b/test/expected/test_regex101.sh_f23e393dbf23d0d8e276e9b7610c7b74d79980f8.out new file mode 100644 index 0000000..d37aaa6 --- /dev/null +++ b/test/expected/test_regex101.sh_f23e393dbf23d0d8e276e9b7610c7b74d79980f8.out @@ -0,0 +1,15 @@ +{ + "$schema": "https://lnav.org/schemas/format-v1.schema.json", + "unit_test_log": { + "regex": { + "alt": { + "pattern": "^\\[(?<timestamp>\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3,6})?)Z?\\](?<body>.*)$" + } + }, + "sample": [ + { + "line": "[2021-05-21T21:58:57.022497Z]" + } + ] + } +} diff --git a/test/expected/test_regex101.sh_fc41b6ee90cbf038620151f16d164b361acf82dd.err b/test/expected/test_regex101.sh_fc41b6ee90cbf038620151f16d164b361acf82dd.err new file mode 100644 index 0000000..494a387 --- /dev/null +++ b/test/expected/test_regex101.sh_fc41b6ee90cbf038620151f16d164b361acf82dd.err @@ -0,0 +1 @@ +[1m[31m✘ error[0m: “[1mbro[0m” is an internal format that is not defined in a configuration file diff --git a/test/expected/test_regex101.sh_fc41b6ee90cbf038620151f16d164b361acf82dd.out b/test/expected/test_regex101.sh_fc41b6ee90cbf038620151f16d164b361acf82dd.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_regex101.sh_fc41b6ee90cbf038620151f16d164b361acf82dd.out diff --git a/test/expected/test_sessions.sh_0300a1391c33b1c45ddfa90198a6bd0a5404a77f.err b/test/expected/test_sessions.sh_0300a1391c33b1c45ddfa90198a6bd0a5404a77f.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sessions.sh_0300a1391c33b1c45ddfa90198a6bd0a5404a77f.err diff --git a/test/expected/test_sessions.sh_0300a1391c33b1c45ddfa90198a6bd0a5404a77f.out b/test/expected/test_sessions.sh_0300a1391c33b1c45ddfa90198a6bd0a5404a77f.out new file mode 100644 index 0000000..bccea86 --- /dev/null +++ b/test/expected/test_sessions.sh_0300a1391c33b1c45ddfa90198a6bd0a5404a77f.out @@ -0,0 +1 @@ +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" diff --git a/test/expected/test_sessions.sh_17b85654b929b2a8fc1705a170ced544783292fa.err b/test/expected/test_sessions.sh_17b85654b929b2a8fc1705a170ced544783292fa.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sessions.sh_17b85654b929b2a8fc1705a170ced544783292fa.err diff --git a/test/expected/test_sessions.sh_17b85654b929b2a8fc1705a170ced544783292fa.out b/test/expected/test_sessions.sh_17b85654b929b2a8fc1705a170ced544783292fa.out new file mode 100644 index 0000000..2140e81 --- /dev/null +++ b/test/expected/test_sessions.sh_17b85654b929b2a8fc1705a170ced544783292fa.out @@ -0,0 +1,3 @@ +⋮ - - [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" diff --git a/test/expected/test_sessions.sh_345b0e66dab7b881397c4b38380da81092ab70dd.err b/test/expected/test_sessions.sh_345b0e66dab7b881397c4b38380da81092ab70dd.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sessions.sh_345b0e66dab7b881397c4b38380da81092ab70dd.err diff --git a/test/expected/test_sessions.sh_345b0e66dab7b881397c4b38380da81092ab70dd.out b/test/expected/test_sessions.sh_345b0e66dab7b881397c4b38380da81092ab70dd.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sessions.sh_345b0e66dab7b881397c4b38380da81092ab70dd.out diff --git a/test/expected/test_sessions.sh_430b9522ba1a37983138f3c4935cba91b781e415.err b/test/expected/test_sessions.sh_430b9522ba1a37983138f3c4935cba91b781e415.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sessions.sh_430b9522ba1a37983138f3c4935cba91b781e415.err diff --git a/test/expected/test_sessions.sh_430b9522ba1a37983138f3c4935cba91b781e415.out b/test/expected/test_sessions.sh_430b9522ba1a37983138f3c4935cba91b781e415.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sessions.sh_430b9522ba1a37983138f3c4935cba91b781e415.out diff --git a/test/expected/test_sessions.sh_4f13dd3858546b6e04a27e244159d355e368f2ae.err b/test/expected/test_sessions.sh_4f13dd3858546b6e04a27e244159d355e368f2ae.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sessions.sh_4f13dd3858546b6e04a27e244159d355e368f2ae.err diff --git a/test/expected/test_sessions.sh_4f13dd3858546b6e04a27e244159d355e368f2ae.out b/test/expected/test_sessions.sh_4f13dd3858546b6e04a27e244159d355e368f2ae.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sessions.sh_4f13dd3858546b6e04a27e244159d355e368f2ae.out diff --git a/test/expected/test_sessions.sh_68a89b56c5e7f7db620084cca1eb547cbb19a2c9.err b/test/expected/test_sessions.sh_68a89b56c5e7f7db620084cca1eb547cbb19a2c9.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sessions.sh_68a89b56c5e7f7db620084cca1eb547cbb19a2c9.err diff --git a/test/expected/test_sessions.sh_68a89b56c5e7f7db620084cca1eb547cbb19a2c9.out b/test/expected/test_sessions.sh_68a89b56c5e7f7db620084cca1eb547cbb19a2c9.out new file mode 100644 index 0000000..d07a9c0 --- /dev/null +++ b/test/expected/test_sessions.sh_68a89b56c5e7f7db620084cca1eb547cbb19a2c9.out @@ -0,0 +1,4 @@ +log_line,log_part +0,<NULL> +1,middle +2,middle diff --git a/test/expected/test_sessions.sh_6d87ff483d5785c58fb271a405ff1c35e4f83cd9.err b/test/expected/test_sessions.sh_6d87ff483d5785c58fb271a405ff1c35e4f83cd9.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sessions.sh_6d87ff483d5785c58fb271a405ff1c35e4f83cd9.err diff --git a/test/expected/test_sessions.sh_6d87ff483d5785c58fb271a405ff1c35e4f83cd9.out b/test/expected/test_sessions.sh_6d87ff483d5785c58fb271a405ff1c35e4f83cd9.out new file mode 100644 index 0000000..adef6fa --- /dev/null +++ b/test/expected/test_sessions.sh_6d87ff483d5785c58fb271a405ff1c35e4f83cd9.out @@ -0,0 +1,36 @@ +#!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.1' || ' or later') + WHERE lnav_version() < '0.11.1' 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 diff --git a/test/expected/test_sessions.sh_858fd0081ed9c46dd81e2f81f1090756f2463558.err b/test/expected/test_sessions.sh_858fd0081ed9c46dd81e2f81f1090756f2463558.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sessions.sh_858fd0081ed9c46dd81e2f81f1090756f2463558.err diff --git a/test/expected/test_sessions.sh_858fd0081ed9c46dd81e2f81f1090756f2463558.out b/test/expected/test_sessions.sh_858fd0081ed9c46dd81e2f81f1090756f2463558.out new file mode 100644 index 0000000..ba6bfe9 --- /dev/null +++ b/test/expected/test_sessions.sh_858fd0081ed9c46dd81e2f81f1090756f2463558.out @@ -0,0 +1,3 @@ +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" diff --git a/test/expected/test_sessions.sh_8732dad5481be991ca7f291d9c5451c7b016cea7.err b/test/expected/test_sessions.sh_8732dad5481be991ca7f291d9c5451c7b016cea7.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sessions.sh_8732dad5481be991ca7f291d9c5451c7b016cea7.err diff --git a/test/expected/test_sessions.sh_8732dad5481be991ca7f291d9c5451c7b016cea7.out b/test/expected/test_sessions.sh_8732dad5481be991ca7f291d9c5451c7b016cea7.out new file mode 100644 index 0000000..a1e2e6f --- /dev/null +++ b/test/expected/test_sessions.sh_8732dad5481be991ca7f291d9c5451c7b016cea7.out @@ -0,0 +1,33 @@ +#!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.0' || ' or later') + WHERE lnav_version() < '0.11.0' COLLATE naturalcase + +# The files loaded into the session were: + + +;INSERT OR IGNORE INTO environ (name, value) VALUES ('LOG_DIR_0', '{top_srcdir_parent}') +:open $LOG_DIR_0/lnav/test/logfile_access_log.0 + +: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 +:goto 1 diff --git a/test/expected/test_sessions.sh_903b41c950f5f90d7786d7a09bb6e2f217654b15.err b/test/expected/test_sessions.sh_903b41c950f5f90d7786d7a09bb6e2f217654b15.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sessions.sh_903b41c950f5f90d7786d7a09bb6e2f217654b15.err diff --git a/test/expected/test_sessions.sh_903b41c950f5f90d7786d7a09bb6e2f217654b15.out b/test/expected/test_sessions.sh_903b41c950f5f90d7786d7a09bb6e2f217654b15.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sessions.sh_903b41c950f5f90d7786d7a09bb6e2f217654b15.out diff --git a/test/expected/test_sessions.sh_92a98a3e4e3a10bf1f2371d21a8282c5d3d4baa5.err b/test/expected/test_sessions.sh_92a98a3e4e3a10bf1f2371d21a8282c5d3d4baa5.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sessions.sh_92a98a3e4e3a10bf1f2371d21a8282c5d3d4baa5.err diff --git a/test/expected/test_sessions.sh_92a98a3e4e3a10bf1f2371d21a8282c5d3d4baa5.out b/test/expected/test_sessions.sh_92a98a3e4e3a10bf1f2371d21a8282c5d3d4baa5.out new file mode 100644 index 0000000..a9dd3d0 --- /dev/null +++ b/test/expected/test_sessions.sh_92a98a3e4e3a10bf1f2371d21a8282c5d3d4baa5.out @@ -0,0 +1,2 @@ +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" diff --git a/test/expected/test_sessions.sh_9978aaa475513f9981840e612f853a7707ffcf90.err b/test/expected/test_sessions.sh_9978aaa475513f9981840e612f853a7707ffcf90.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sessions.sh_9978aaa475513f9981840e612f853a7707ffcf90.err diff --git a/test/expected/test_sessions.sh_9978aaa475513f9981840e612f853a7707ffcf90.out b/test/expected/test_sessions.sh_9978aaa475513f9981840e612f853a7707ffcf90.out new file mode 100644 index 0000000..3c84ede --- /dev/null +++ b/test/expected/test_sessions.sh_9978aaa475513f9981840e612f853a7707ffcf90.out @@ -0,0 +1,11 @@ +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 diff --git a/test/expected/test_sessions.sh_a92822d121a836140a401fd71535dc4a7a8d5b48.err b/test/expected/test_sessions.sh_a92822d121a836140a401fd71535dc4a7a8d5b48.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sessions.sh_a92822d121a836140a401fd71535dc4a7a8d5b48.err diff --git a/test/expected/test_sessions.sh_a92822d121a836140a401fd71535dc4a7a8d5b48.out b/test/expected/test_sessions.sh_a92822d121a836140a401fd71535dc4a7a8d5b48.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sessions.sh_a92822d121a836140a401fd71535dc4a7a8d5b48.out diff --git a/test/expected/test_sessions.sh_b3d71a87fcb4e3487f71ccad8c6ce681db220572.err b/test/expected/test_sessions.sh_b3d71a87fcb4e3487f71ccad8c6ce681db220572.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sessions.sh_b3d71a87fcb4e3487f71ccad8c6ce681db220572.err diff --git a/test/expected/test_sessions.sh_b3d71a87fcb4e3487f71ccad8c6ce681db220572.out b/test/expected/test_sessions.sh_b3d71a87fcb4e3487f71ccad8c6ce681db220572.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sessions.sh_b3d71a87fcb4e3487f71ccad8c6ce681db220572.out diff --git a/test/expected/test_sessions.sh_b932b33dd087b94d4306dd179c5d4f9ddd394960.err b/test/expected/test_sessions.sh_b932b33dd087b94d4306dd179c5d4f9ddd394960.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sessions.sh_b932b33dd087b94d4306dd179c5d4f9ddd394960.err diff --git a/test/expected/test_sessions.sh_b932b33dd087b94d4306dd179c5d4f9ddd394960.out b/test/expected/test_sessions.sh_b932b33dd087b94d4306dd179c5d4f9ddd394960.out new file mode 100644 index 0000000..ad2b37e --- /dev/null +++ b/test/expected/test_sessions.sh_b932b33dd087b94d4306dd179c5d4f9ddd394960.out @@ -0,0 +1 @@ +10.112.81.15 - - [15/Feb/2013:06:00:31 +0000] "-" 400 0 "-" "-" diff --git a/test/expected/test_sessions.sh_ddf45811e9906de9f3930fe802ac7b2cc6e48106.err b/test/expected/test_sessions.sh_ddf45811e9906de9f3930fe802ac7b2cc6e48106.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sessions.sh_ddf45811e9906de9f3930fe802ac7b2cc6e48106.err diff --git a/test/expected/test_sessions.sh_ddf45811e9906de9f3930fe802ac7b2cc6e48106.out b/test/expected/test_sessions.sh_ddf45811e9906de9f3930fe802ac7b2cc6e48106.out new file mode 100644 index 0000000..ad2b37e --- /dev/null +++ b/test/expected/test_sessions.sh_ddf45811e9906de9f3930fe802ac7b2cc6e48106.out @@ -0,0 +1 @@ +10.112.81.15 - - [15/Feb/2013:06:00:31 +0000] "-" 400 0 "-" "-" diff --git a/test/expected/test_sessions.sh_e39648f425c3f291c9d1c0d14595a019abd0cb48.err b/test/expected/test_sessions.sh_e39648f425c3f291c9d1c0d14595a019abd0cb48.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sessions.sh_e39648f425c3f291c9d1c0d14595a019abd0cb48.err diff --git a/test/expected/test_sessions.sh_e39648f425c3f291c9d1c0d14595a019abd0cb48.out b/test/expected/test_sessions.sh_e39648f425c3f291c9d1c0d14595a019abd0cb48.out new file mode 100644 index 0000000..0473e9d --- /dev/null +++ b/test/expected/test_sessions.sh_e39648f425c3f291c9d1c0d14595a019abd0cb48.out @@ -0,0 +1,33 @@ +#!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.0' || ' or later') + WHERE lnav_version() < '0.11.0' COLLATE naturalcase + +# The files loaded into the session were: + + +;INSERT OR IGNORE INTO environ (name, value) VALUES ('LOG_DIR_0', '{test_dir}') +:open $LOG_DIR_0/support-dump/logfile_access_log.0 + +: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 +:goto 1 diff --git a/test/expected/test_shlexer.sh_14dd967cb2af90899c9e5e45d00b676b5a3163aa.err b/test/expected/test_shlexer.sh_14dd967cb2af90899c9e5e45d00b676b5a3163aa.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_shlexer.sh_14dd967cb2af90899c9e5e45d00b676b5a3163aa.err diff --git a/test/expected/test_shlexer.sh_14dd967cb2af90899c9e5e45d00b676b5a3163aa.out b/test/expected/test_shlexer.sh_14dd967cb2af90899c9e5e45d00b676b5a3163aa.out new file mode 100644 index 0000000..fd072bc --- /dev/null +++ b/test/expected/test_shlexer.sh_14dd967cb2af90899c9e5e45d00b676b5a3163aa.out @@ -0,0 +1,7 @@ + ~ foo +til ^ +wsp ^ +eval -- ../test foo +split: + 0 -- ../test + 1 -- foo diff --git a/test/expected/test_shlexer.sh_2781f5dd570580cbe746ad91b58a28b8371283b3.err b/test/expected/test_shlexer.sh_2781f5dd570580cbe746ad91b58a28b8371283b3.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_shlexer.sh_2781f5dd570580cbe746ad91b58a28b8371283b3.err diff --git a/test/expected/test_shlexer.sh_2781f5dd570580cbe746ad91b58a28b8371283b3.out b/test/expected/test_shlexer.sh_2781f5dd570580cbe746ad91b58a28b8371283b3.out new file mode 100644 index 0000000..b7ba9e8 --- /dev/null +++ b/test/expected/test_shlexer.sh_2781f5dd570580cbe746ad91b58a28b8371283b3.out @@ -0,0 +1,7 @@ + ~nonexistent/bar baz +til ^----------^ +wsp ^ +eval -- ~nonexistent/bar baz +split: + 0 -- ~nonexistent/bar + 1 -- baz diff --git a/test/expected/test_shlexer.sh_2af44d06fc137a77bc230be86376ccad23a2806b.err b/test/expected/test_shlexer.sh_2af44d06fc137a77bc230be86376ccad23a2806b.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_shlexer.sh_2af44d06fc137a77bc230be86376ccad23a2806b.err diff --git a/test/expected/test_shlexer.sh_2af44d06fc137a77bc230be86376ccad23a2806b.out b/test/expected/test_shlexer.sh_2af44d06fc137a77bc230be86376ccad23a2806b.out new file mode 100644 index 0000000..85cca78 --- /dev/null +++ b/test/expected/test_shlexer.sh_2af44d06fc137a77bc230be86376ccad23a2806b.out @@ -0,0 +1,2 @@ + \ +err ^ diff --git a/test/expected/test_shlexer.sh_6858e530a8ecb77cbaec1a7507768dd5a1942ac9.err b/test/expected/test_shlexer.sh_6858e530a8ecb77cbaec1a7507768dd5a1942ac9.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_shlexer.sh_6858e530a8ecb77cbaec1a7507768dd5a1942ac9.err diff --git a/test/expected/test_shlexer.sh_6858e530a8ecb77cbaec1a7507768dd5a1942ac9.out b/test/expected/test_shlexer.sh_6858e530a8ecb77cbaec1a7507768dd5a1942ac9.out new file mode 100644 index 0000000..f677b17 --- /dev/null +++ b/test/expected/test_shlexer.sh_6858e530a8ecb77cbaec1a7507768dd5a1942ac9.out @@ -0,0 +1,5 @@ + ${FOO} +qrf ^----^ +eval -- bar +split: + 0 -- bar diff --git a/test/expected/test_shlexer.sh_7f31e16ea2469da7a4328c93c7bcc8e109f84d2f.err b/test/expected/test_shlexer.sh_7f31e16ea2469da7a4328c93c7bcc8e109f84d2f.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_shlexer.sh_7f31e16ea2469da7a4328c93c7bcc8e109f84d2f.err diff --git a/test/expected/test_shlexer.sh_7f31e16ea2469da7a4328c93c7bcc8e109f84d2f.out b/test/expected/test_shlexer.sh_7f31e16ea2469da7a4328c93c7bcc8e109f84d2f.out new file mode 100644 index 0000000..630eb1c --- /dev/null +++ b/test/expected/test_shlexer.sh_7f31e16ea2469da7a4328c93c7bcc8e109f84d2f.out @@ -0,0 +1,7 @@ + "abc ${DEF} 123" +dst ^ +qrf ^----^ +den ^ +eval -- "abc xyz 123" +split: + 0 -- abc xyz 123 diff --git a/test/expected/test_shlexer.sh_8aeebcdef56edd783579eaaddaff7c5cc127bb86.err b/test/expected/test_shlexer.sh_8aeebcdef56edd783579eaaddaff7c5cc127bb86.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_shlexer.sh_8aeebcdef56edd783579eaaddaff7c5cc127bb86.err diff --git a/test/expected/test_shlexer.sh_8aeebcdef56edd783579eaaddaff7c5cc127bb86.out b/test/expected/test_shlexer.sh_8aeebcdef56edd783579eaaddaff7c5cc127bb86.out new file mode 100644 index 0000000..759e75b --- /dev/null +++ b/test/expected/test_shlexer.sh_8aeebcdef56edd783579eaaddaff7c5cc127bb86.out @@ -0,0 +1,6 @@ + 'abc $DEF 123' +sst ^ +sen ^ +eval -- 'abc $DEF 123' +split: + 0 -- abc $DEF 123 diff --git a/test/expected/test_shlexer.sh_8e9addb0e5b6f4254d81dd89ecf12783109644bb.err b/test/expected/test_shlexer.sh_8e9addb0e5b6f4254d81dd89ecf12783109644bb.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_shlexer.sh_8e9addb0e5b6f4254d81dd89ecf12783109644bb.err diff --git a/test/expected/test_shlexer.sh_8e9addb0e5b6f4254d81dd89ecf12783109644bb.out b/test/expected/test_shlexer.sh_8e9addb0e5b6f4254d81dd89ecf12783109644bb.out new file mode 100644 index 0000000..2cbee1a --- /dev/null +++ b/test/expected/test_shlexer.sh_8e9addb0e5b6f4254d81dd89ecf12783109644bb.out @@ -0,0 +1,7 @@ + "abc $DEF 123" +dst ^ +ref ^--^ +den ^ +eval -- "abc xyz 123" +split: + 0 -- abc xyz 123 diff --git a/test/expected/test_shlexer.sh_90961e6728e96d0a44535a6c9907cc990c10316c.err b/test/expected/test_shlexer.sh_90961e6728e96d0a44535a6c9907cc990c10316c.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_shlexer.sh_90961e6728e96d0a44535a6c9907cc990c10316c.err diff --git a/test/expected/test_shlexer.sh_90961e6728e96d0a44535a6c9907cc990c10316c.out b/test/expected/test_shlexer.sh_90961e6728e96d0a44535a6c9907cc990c10316c.out new file mode 100644 index 0000000..9a2b2a7 --- /dev/null +++ b/test/expected/test_shlexer.sh_90961e6728e96d0a44535a6c9907cc990c10316c.out @@ -0,0 +1,6 @@ + "def" +dst ^ +den ^ +eval -- "def" +split: + 0 -- def diff --git a/test/expected/test_shlexer.sh_95c4e861804a5434900fdb4d67b149d1baa2edf4.err b/test/expected/test_shlexer.sh_95c4e861804a5434900fdb4d67b149d1baa2edf4.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_shlexer.sh_95c4e861804a5434900fdb4d67b149d1baa2edf4.err diff --git a/test/expected/test_shlexer.sh_95c4e861804a5434900fdb4d67b149d1baa2edf4.out b/test/expected/test_shlexer.sh_95c4e861804a5434900fdb4d67b149d1baa2edf4.out new file mode 100644 index 0000000..30a7791 --- /dev/null +++ b/test/expected/test_shlexer.sh_95c4e861804a5434900fdb4d67b149d1baa2edf4.out @@ -0,0 +1,5 @@ + $FOO +ref ^--^ +eval -- bar +split: + 0 -- bar diff --git a/test/expected/test_shlexer.sh_d7fe5f6b8fc9ba00539fad0fa0bfb08319d8b04b.err b/test/expected/test_shlexer.sh_d7fe5f6b8fc9ba00539fad0fa0bfb08319d8b04b.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_shlexer.sh_d7fe5f6b8fc9ba00539fad0fa0bfb08319d8b04b.err diff --git a/test/expected/test_shlexer.sh_d7fe5f6b8fc9ba00539fad0fa0bfb08319d8b04b.out b/test/expected/test_shlexer.sh_d7fe5f6b8fc9ba00539fad0fa0bfb08319d8b04b.out new file mode 100644 index 0000000..a2ae7ff --- /dev/null +++ b/test/expected/test_shlexer.sh_d7fe5f6b8fc9ba00539fad0fa0bfb08319d8b04b.out @@ -0,0 +1,6 @@ + 'abc' +sst ^ +sen ^ +eval -- 'abc' +split: + 0 -- abc diff --git a/test/expected/test_shlexer.sh_d9d46422a913e3a06ddbd262933ef5352c30e68f.err b/test/expected/test_shlexer.sh_d9d46422a913e3a06ddbd262933ef5352c30e68f.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_shlexer.sh_d9d46422a913e3a06ddbd262933ef5352c30e68f.err diff --git a/test/expected/test_shlexer.sh_d9d46422a913e3a06ddbd262933ef5352c30e68f.out b/test/expected/test_shlexer.sh_d9d46422a913e3a06ddbd262933ef5352c30e68f.out new file mode 100644 index 0000000..def9d5c --- /dev/null +++ b/test/expected/test_shlexer.sh_d9d46422a913e3a06ddbd262933ef5352c30e68f.out @@ -0,0 +1,9 @@ + abc $DEF 123 +wsp ^ +ref ^--^ +wsp ^^ +eval -- abc xyz 123 +split: + 0 -- abc + 1 -- xyz + 2 -- 123 diff --git a/test/expected/test_shlexer.sh_e0599f0b53d1bd27af767113853f8e84291f137d.err b/test/expected/test_shlexer.sh_e0599f0b53d1bd27af767113853f8e84291f137d.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_shlexer.sh_e0599f0b53d1bd27af767113853f8e84291f137d.err diff --git a/test/expected/test_shlexer.sh_e0599f0b53d1bd27af767113853f8e84291f137d.out b/test/expected/test_shlexer.sh_e0599f0b53d1bd27af767113853f8e84291f137d.out new file mode 100644 index 0000000..9b84999 --- /dev/null +++ b/test/expected/test_shlexer.sh_e0599f0b53d1bd27af767113853f8e84291f137d.out @@ -0,0 +1,6 @@ + '"' +sst ^ +sen ^ +eval -- '"' +split: + 0 -- " diff --git a/test/expected/test_shlexer.sh_e8fa2239ab17e7563d0c524f5400a79d6ff8bfda.err b/test/expected/test_shlexer.sh_e8fa2239ab17e7563d0c524f5400a79d6ff8bfda.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_shlexer.sh_e8fa2239ab17e7563d0c524f5400a79d6ff8bfda.err diff --git a/test/expected/test_shlexer.sh_e8fa2239ab17e7563d0c524f5400a79d6ff8bfda.out b/test/expected/test_shlexer.sh_e8fa2239ab17e7563d0c524f5400a79d6ff8bfda.out new file mode 100644 index 0000000..a668d4d --- /dev/null +++ b/test/expected/test_shlexer.sh_e8fa2239ab17e7563d0c524f5400a79d6ff8bfda.out @@ -0,0 +1,6 @@ + "'" +dst ^ +den ^ +eval -- "'" +split: + 0 -- ' diff --git a/test/expected/test_sql.sh_02def66745b063518473df862987747909f56ccc.err b/test/expected/test_sql.sh_02def66745b063518473df862987747909f56ccc.err new file mode 100644 index 0000000..8b97c72 --- /dev/null +++ b/test/expected/test_sql.sh_02def66745b063518473df862987747909f56ccc.err @@ -0,0 +1,4 @@ +[1m[31m✘ error[0m: failed to compile SQL statement + [1m[31mreason[0m: no such table: nonexistent_table +[36m --> [0m[1mcommand-option[0m:1 +[36m | [0m[1m[36m[40mselect[0m[37m[40m [0m[1m[37m[40m*[0m[37m[40m [0m[1m[36m[40mfrom[0m[37m[40m nonexistent_table [0m diff --git a/test/expected/test_sql.sh_02def66745b063518473df862987747909f56ccc.out b/test/expected/test_sql.sh_02def66745b063518473df862987747909f56ccc.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_02def66745b063518473df862987747909f56ccc.out diff --git a/test/expected/test_sql.sh_0a5d13b62da4cb66a59a51b0240b5fe0b6036b7e.err b/test/expected/test_sql.sh_0a5d13b62da4cb66a59a51b0240b5fe0b6036b7e.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_0a5d13b62da4cb66a59a51b0240b5fe0b6036b7e.err diff --git a/test/expected/test_sql.sh_0a5d13b62da4cb66a59a51b0240b5fe0b6036b7e.out b/test/expected/test_sql.sh_0a5d13b62da4cb66a59a51b0240b5fe0b6036b7e.out new file mode 100644 index 0000000..386f1e3 --- /dev/null +++ b/test/expected/test_sql.sh_0a5d13b62da4cb66a59a51b0240b5fe0b6036b7e.out @@ -0,0 +1,2 @@ +[1m[4m lnav_top_file() [0m +{test_dir}/logfile_access_log.0 diff --git a/test/expected/test_sql.sh_0d46ee142f80f262c8c14a22751571cc567df525.err b/test/expected/test_sql.sh_0d46ee142f80f262c8c14a22751571cc567df525.err new file mode 100644 index 0000000..0b7649a --- /dev/null +++ b/test/expected/test_sql.sh_0d46ee142f80f262c8c14a22751571cc567df525.err @@ -0,0 +1,4 @@ +[1m[31m✘ error[0m: failed to compile SQL statement + [1m[31mreason[0m: the stop parameter is required +[36m --> [0m[1mcommand-option[0m:1 +[36m | [0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40m*[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 diff --git a/test/expected/test_sql.sh_0d46ee142f80f262c8c14a22751571cc567df525.out b/test/expected/test_sql.sh_0d46ee142f80f262c8c14a22751571cc567df525.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_0d46ee142f80f262c8c14a22751571cc567df525.out diff --git a/test/expected/test_sql.sh_13429aed81d7edfd47b57e9cdb8a25c43aff35c4.err b/test/expected/test_sql.sh_13429aed81d7edfd47b57e9cdb8a25c43aff35c4.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_13429aed81d7edfd47b57e9cdb8a25c43aff35c4.err diff --git a/test/expected/test_sql.sh_13429aed81d7edfd47b57e9cdb8a25c43aff35c4.out b/test/expected/test_sql.sh_13429aed81d7edfd47b57e9cdb8a25c43aff35c4.out new file mode 100644 index 0000000..4acb940 --- /dev/null +++ b/test/expected/test_sql.sh_13429aed81d7edfd47b57e9cdb8a25c43aff35c4.out @@ -0,0 +1,2 @@ +[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[4m[7mcs_bytes [0m[1m[4mcs_method [0m[1m[4mcs_uri_query [0m[1m[4m cs_uri_stem [0m[1m[4mcs_username [0m[1m[4m[7mcs_vars [0m[1m[4mcs_version [0m[1m[4ms_app [0m[1m[4ms_core [0m[1m[4ms_pid [0m[1m[4ms_req [0m[1m[4m[7ms_runtime [0m[1m[4m[7ms_switches [0m[1m[4ms_worker_reqs [0m[1m[4m[7msc_bytes [0m[1m[4m[7msc_header_bytes [0m[1m[4m[7msc_headers [0m[1m[4msc_status [0m +[1m[7m 0[0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m2016-03-13 22:49:12.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[7m127.0.0.1[0m[1m[7m [0m[1m[7m 696[0m[1m[7m [0m[1m[7mPOST [0m[1m[7m [0m[1m[7m <NULL>[0m[1m[7m [0m[1m[7m/update_metrics[0m[1m[7m [0m[1m[7m [0m[1m[7m [0m[1m[7m [0m[1m[7m 38[0m[1m[7m [0m[1m[7mH[0m[1m[7mTTP/1.1 [0m[1m[7m [0m[1m[7m0 [0m[1m[7m [0m[1m[7m [0m[1m[7m3 [0m[1m[7m [0m[1m[7m88185[0m[1m[7m [0m[1m[7m 1[0m[1m[7m [0m[1m[7m 0.129[0m[1m[7m [0m[1m[7m 1[0m[1m[7m [0m[1m[7m 1[0m[1m[7m [0m[1m[7m 47[0m[1m[7m [0m[1m[7m 378[0m[1m[7m [0m[1m[7m 9[0m[1m[7m [0m[1m[7m [0m[1m[7m [0m[1m 200 [0m diff --git a/test/expected/test_sql.sh_1cbb81cfe40ee16332c5c775a74d06b945aa65c2.err b/test/expected/test_sql.sh_1cbb81cfe40ee16332c5c775a74d06b945aa65c2.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_1cbb81cfe40ee16332c5c775a74d06b945aa65c2.err diff --git a/test/expected/test_sql.sh_1cbb81cfe40ee16332c5c775a74d06b945aa65c2.out b/test/expected/test_sql.sh_1cbb81cfe40ee16332c5c775a74d06b945aa65c2.out new file mode 100644 index 0000000..df0e6d7 --- /dev/null +++ b/test/expected/test_sql.sh_1cbb81cfe40ee16332c5c775a74d06b945aa65c2.out @@ -0,0 +1,3 @@ +[1m[4mid [0m[1m[4mfirst_name [0m[1m[4mlast_name [0m[1m[4m[7mage [0m +[1m[7m [0m[1m0[0m[1m [0m[1mPhil [0m[1m [0m[1mMyman [0m[1m [0m[1m 30 [0m +[7m 1[0m[7m [0m[7mLem [0m[7m [0m[7mHewitt [0m[7m [0m[7m 35[0m diff --git a/test/expected/test_sql.sh_2532083f215ed44630621f18df3dd7b77c06ae10.err b/test/expected/test_sql.sh_2532083f215ed44630621f18df3dd7b77c06ae10.err new file mode 100644 index 0000000..b57e6bc --- /dev/null +++ b/test/expected/test_sql.sh_2532083f215ed44630621f18df3dd7b77c06ae10.err @@ -0,0 +1,10 @@ +[1m[31m✘ error[0m: “bad(” is not a valid regular expression + [1m[31mreason[0m: missing closing parenthesis +[36m --> [0m[1mpattern[0m +[36m | [0m[37m[40mbad[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[1mcommand-option[0m:1 +[36m | [0m[37m[40m:[0m[1m[36m[40mcreate-search-table[0m[37m[40m search_test1 bad[0m[1m[32m[40m([0m[37m[40m [0m +[36m =[0m [36mhelp[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 diff --git a/test/expected/test_sql.sh_2532083f215ed44630621f18df3dd7b77c06ae10.out b/test/expected/test_sql.sh_2532083f215ed44630621f18df3dd7b77c06ae10.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_2532083f215ed44630621f18df3dd7b77c06ae10.out diff --git a/test/expected/test_sql.sh_26c0d94d7837792144f2d0f866fb3c12a0bd410d.err b/test/expected/test_sql.sh_26c0d94d7837792144f2d0f866fb3c12a0bd410d.err new file mode 100644 index 0000000..b5fba56 --- /dev/null +++ b/test/expected/test_sql.sh_26c0d94d7837792144f2d0f866fb3c12a0bd410d.err @@ -0,0 +1,6 @@ +[1m[31m✘ error[0m: Cannot generate spectrogram for database results + [1m[31mreason[0m: No “[4mlog_time[0m” column found in the result set +[36m --> [0m[1mcommand-option[0m:2 +[36m | [0m[37m[40m:[0m[1m[36m[40mspectrogram[0m[37m[40m sc_bytes [0m +[36m =[0m [36mnote[0m: An ascending “[4mlog_time[0m” column is needed to render a spectrogram +[36m =[0m [36mhelp[0m: Include a “[4mlog_time[0m” column in your statement. Use an [1m[36mAS[0m directive to alias a computed timestamp diff --git a/test/expected/test_sql.sh_26c0d94d7837792144f2d0f866fb3c12a0bd410d.out b/test/expected/test_sql.sh_26c0d94d7837792144f2d0f866fb3c12a0bd410d.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_26c0d94d7837792144f2d0f866fb3c12a0bd410d.out diff --git a/test/expected/test_sql.sh_2959f0c70fca61a07c6c772f193e73022f7794f1.err b/test/expected/test_sql.sh_2959f0c70fca61a07c6c772f193e73022f7794f1.err new file mode 100644 index 0000000..cf33b67 --- /dev/null +++ b/test/expected/test_sql.sh_2959f0c70fca61a07c6c772f193e73022f7794f1.err @@ -0,0 +1,4 @@ +[1m[31m✘ error[0m: failed to compile SQL statement + [1m[31mreason[0m: not authorized +[36m --> [0m[1mcommand-option[0m:1 +[36m | [0m[1m[36m[40mattach[0m[37m[40m [0m[1m[36m[40mdatabase[0m[37m[40m [0m[35m[40m'/tmp/memdb'[0m[37m[40m [0m[1m[36m[40mas[0m[37m[40m [0m[35m[40m'db'[0m[37m[40m [0m diff --git a/test/expected/test_sql.sh_2959f0c70fca61a07c6c772f193e73022f7794f1.out b/test/expected/test_sql.sh_2959f0c70fca61a07c6c772f193e73022f7794f1.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_2959f0c70fca61a07c6c772f193e73022f7794f1.out diff --git a/test/expected/test_sql.sh_2a16a6fd0ff235a7877e1ea93b22d873a3609402.err b/test/expected/test_sql.sh_2a16a6fd0ff235a7877e1ea93b22d873a3609402.err new file mode 100644 index 0000000..bc74c2d --- /dev/null +++ b/test/expected/test_sql.sh_2a16a6fd0ff235a7877e1ea93b22d873a3609402.err @@ -0,0 +1,4 @@ +[1m[31m✘ error[0m: call to [1m[4mraise_error[0m[4m([0m[4mmsg[0m[4m)[0m failed + [1m[31mreason[0m: oops! +[36m --> [0m[1mcommand-option[0m:1 +[36m | [0m[37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mraise_error[0m[37m[40m([0m[35m[40m'oops!'[0m[37m[40m) [0m diff --git a/test/expected/test_sql.sh_2a16a6fd0ff235a7877e1ea93b22d873a3609402.out b/test/expected/test_sql.sh_2a16a6fd0ff235a7877e1ea93b22d873a3609402.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_2a16a6fd0ff235a7877e1ea93b22d873a3609402.out diff --git a/test/expected/test_sql.sh_2cc8a92c6eb73741080b187a2670d309b8171c90.err b/test/expected/test_sql.sh_2cc8a92c6eb73741080b187a2670d309b8171c90.err new file mode 100644 index 0000000..f68fcf0 --- /dev/null +++ b/test/expected/test_sql.sh_2cc8a92c6eb73741080b187a2670d309b8171c90.err @@ -0,0 +1,4 @@ +[1m[31m✘ error[0m: failed to compile SQL statement + [1m[31mreason[0m: not authorized +[36m --> [0m[1mcommand-option[0m:1 +[36m | [0m[1m[36m[40mattach[0m[37m[40m [0m[1m[36m[40mdatabase[0m[37m[40m [0m[35m[40m'simple-db.db'[0m[37m[40m [0m[1m[36m[40mas[0m[37m[40m [0m[35m[40m'db'[0m[37m[40m [0m diff --git a/test/expected/test_sql.sh_2cc8a92c6eb73741080b187a2670d309b8171c90.out b/test/expected/test_sql.sh_2cc8a92c6eb73741080b187a2670d309b8171c90.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_2cc8a92c6eb73741080b187a2670d309b8171c90.out diff --git a/test/expected/test_sql.sh_2f15b8a38673ac4db45dc6ed2eafe609c332575b.err b/test/expected/test_sql.sh_2f15b8a38673ac4db45dc6ed2eafe609c332575b.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_2f15b8a38673ac4db45dc6ed2eafe609c332575b.err diff --git a/test/expected/test_sql.sh_2f15b8a38673ac4db45dc6ed2eafe609c332575b.out b/test/expected/test_sql.sh_2f15b8a38673ac4db45dc6ed2eafe609c332575b.out new file mode 100644 index 0000000..df0e6d7 --- /dev/null +++ b/test/expected/test_sql.sh_2f15b8a38673ac4db45dc6ed2eafe609c332575b.out @@ -0,0 +1,3 @@ +[1m[4mid [0m[1m[4mfirst_name [0m[1m[4mlast_name [0m[1m[4m[7mage [0m +[1m[7m [0m[1m0[0m[1m [0m[1mPhil [0m[1m [0m[1mMyman [0m[1m [0m[1m 30 [0m +[7m 1[0m[7m [0m[7mLem [0m[7m [0m[7mHewitt [0m[7m [0m[7m 35[0m diff --git a/test/expected/test_sql.sh_31df37f254255115611fc321b63374a2fa4a1cd5.err b/test/expected/test_sql.sh_31df37f254255115611fc321b63374a2fa4a1cd5.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_31df37f254255115611fc321b63374a2fa4a1cd5.err diff --git a/test/expected/test_sql.sh_31df37f254255115611fc321b63374a2fa4a1cd5.out b/test/expected/test_sql.sh_31df37f254255115611fc321b63374a2fa4a1cd5.out new file mode 100644 index 0000000..5118721 --- /dev/null +++ b/test/expected/test_sql.sh_31df37f254255115611fc321b63374a2fa4a1cd5.out @@ -0,0 +1,2 @@ +[1m[4m replicate('foobar', 120) [0m +foobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobar⋯oobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobar diff --git a/test/expected/test_sql.sh_3d77a2092192caf98e141a6039e886ede836f044.err b/test/expected/test_sql.sh_3d77a2092192caf98e141a6039e886ede836f044.err new file mode 100644 index 0000000..73441f1 --- /dev/null +++ b/test/expected/test_sql.sh_3d77a2092192caf98e141a6039e886ede836f044.err @@ -0,0 +1,4 @@ +[1m[31m✘ error[0m: failed to compile SQL statement + [1m[31mreason[0m: not authorized +[36m --> [0m[1mcommand-option[0m:1 +[36m | [0m[1m[36m[40mattach[0m[37m[40m [0m[1m[36m[40mdatabase[0m[37m[40m [0m[35m[40m':memdb:'[0m[37m[40m [0m[1m[36m[40mas[0m[37m[40m [0m[35m[40m'db'[0m[37m[40m [0m diff --git a/test/expected/test_sql.sh_3d77a2092192caf98e141a6039e886ede836f044.out b/test/expected/test_sql.sh_3d77a2092192caf98e141a6039e886ede836f044.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_3d77a2092192caf98e141a6039e886ede836f044.out diff --git a/test/expected/test_sql.sh_4090f96ea11a344c1e2939211da778992dab47d8.err b/test/expected/test_sql.sh_4090f96ea11a344c1e2939211da778992dab47d8.err new file mode 100644 index 0000000..57d160d --- /dev/null +++ b/test/expected/test_sql.sh_4090f96ea11a344c1e2939211da778992dab47d8.err @@ -0,0 +1,5 @@ +[1m[31m✘ error[0m: Cannot generate spectrogram for database results + [1m[31mreason[0m: unknown column -- “[4msc_byes[0m” +[36m --> [0m[1mcommand-option[0m:2 +[36m | [0m[37m[40m:[0m[1m[36m[40mspectrogram[0m[37m[40m sc_byes [0m +[36m =[0m [36mhelp[0m: Expecting a numeric column to visualize diff --git a/test/expected/test_sql.sh_4090f96ea11a344c1e2939211da778992dab47d8.out b/test/expected/test_sql.sh_4090f96ea11a344c1e2939211da778992dab47d8.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_4090f96ea11a344c1e2939211da778992dab47d8.out diff --git a/test/expected/test_sql.sh_4629b626c65a85d7a5595571e195b67afca272ba.err b/test/expected/test_sql.sh_4629b626c65a85d7a5595571e195b67afca272ba.err new file mode 100644 index 0000000..0c1c059 --- /dev/null +++ b/test/expected/test_sql.sh_4629b626c65a85d7a5595571e195b67afca272ba.err @@ -0,0 +1,4 @@ +[1m[31m✘ error[0m: SQL statement failed + [1m[31mreason[0m: A non-empty name and value must be provided when inserting an environment variable +[36m --> [0m[1mcommand-option[0m:1 +[36m | [0m[37m[40m;[0m[1m[36m[40mINSERT[0m[37m[40m [0m[1m[36m[40mINTO[0m[37m[40m [0m[1m[37m[40menviron[0m[1m[37m[40m [0m[37m[40m([0m[37m[40mname[0m[37m[40m) [0m[1m[36m[40mVALUES[0m[37m[40m ([0m[1m[36m[40mnull[0m[37m[40m)[0m diff --git a/test/expected/test_sql.sh_4629b626c65a85d7a5595571e195b67afca272ba.out b/test/expected/test_sql.sh_4629b626c65a85d7a5595571e195b67afca272ba.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_4629b626c65a85d7a5595571e195b67afca272ba.out diff --git a/test/expected/test_sql.sh_50c0b2c93b646b848a017764bde8a4282c556e2d.err b/test/expected/test_sql.sh_50c0b2c93b646b848a017764bde8a4282c556e2d.err new file mode 100644 index 0000000..89f156f --- /dev/null +++ b/test/expected/test_sql.sh_50c0b2c93b646b848a017764bde8a4282c556e2d.err @@ -0,0 +1,4 @@ +[1m[31m✘ error[0m: SQL statement failed + [1m[31mreason[0m: An environment variable with the name 'SQL_ENV_VALUE' already exists +[36m --> [0m[1mcommand-option[0m:1 +[36m | [0m[37m[40m;[0m[1m[36m[40mINSERT[0m[37m[40m [0m[1m[36m[40mINTO[0m[37m[40m [0m[1m[37m[40menviron[0m[1m[37m[40m [0m[37m[40m([0m[37m[40mname[0m[37m[40m, [0m[37m[40mvalue[0m[37m[40m) [0m[1m[36m[40mVALUES[0m[37m[40m ([0m[37m[40m"SQL_ENV_VALUE"[0m[37m[40m, [0m[37m[40m"bar"[0m[37m[40m)[0m diff --git a/test/expected/test_sql.sh_50c0b2c93b646b848a017764bde8a4282c556e2d.out b/test/expected/test_sql.sh_50c0b2c93b646b848a017764bde8a4282c556e2d.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_50c0b2c93b646b848a017764bde8a4282c556e2d.out diff --git a/test/expected/test_sql.sh_528e48a03cdfa7cfbe263a6e22a65606247a8a95.err b/test/expected/test_sql.sh_528e48a03cdfa7cfbe263a6e22a65606247a8a95.err new file mode 100644 index 0000000..b15f6ce --- /dev/null +++ b/test/expected/test_sql.sh_528e48a03cdfa7cfbe263a6e22a65606247a8a95.err @@ -0,0 +1,4 @@ +[1m[31m✘ error[0m: SQL statement failed + [1m[31mreason[0m: Environment variable names cannot contain an equals sign (=) +[36m --> [0m[1mcommand-option[0m:1 +[36m | [0m[37m[40m;[0m[1m[36m[40mINSERT[0m[37m[40m [0m[1m[36m[40mINTO[0m[37m[40m [0m[1m[37m[40menviron[0m[1m[37m[40m [0m[37m[40m([0m[37m[40mname[0m[37m[40m, [0m[37m[40mvalue[0m[37m[40m) [0m[1m[36m[40mVALUES[0m[37m[40m ([0m[37m[40m"foo=bar"[0m[37m[40m, [0m[37m[40m"bar"[0m[37m[40m)[0m diff --git a/test/expected/test_sql.sh_528e48a03cdfa7cfbe263a6e22a65606247a8a95.out b/test/expected/test_sql.sh_528e48a03cdfa7cfbe263a6e22a65606247a8a95.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_528e48a03cdfa7cfbe263a6e22a65606247a8a95.out diff --git a/test/expected/test_sql.sh_5532c7a21e3f6b7df3aad10d7bdfbb7a812ae6c7.err b/test/expected/test_sql.sh_5532c7a21e3f6b7df3aad10d7bdfbb7a812ae6c7.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_5532c7a21e3f6b7df3aad10d7bdfbb7a812ae6c7.err diff --git a/test/expected/test_sql.sh_5532c7a21e3f6b7df3aad10d7bdfbb7a812ae6c7.out b/test/expected/test_sql.sh_5532c7a21e3f6b7df3aad10d7bdfbb7a812ae6c7.out new file mode 100644 index 0000000..dbb2a2f --- /dev/null +++ b/test/expected/test_sql.sh_5532c7a21e3f6b7df3aad10d7bdfbb7a812ae6c7.out @@ -0,0 +1,2 @@ +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,col_0,TTY,PWD,USER,COMMAND +0,<NULL>,2007-11-03 09:47:02.000,0,info,0,<NULL>,<NULL>,[1],veridian,<NULL>,<NULL>,<NULL>,sudo,<NULL>,sudo,<NULL>,timstack,pts/6,/auto/wstimstack/rpms/lbuild/test,root,/usr/bin/tail /var/log/messages diff --git a/test/expected/test_sql.sh_56047c9470e515bc3e3709354c01e5d50462cde7.err b/test/expected/test_sql.sh_56047c9470e515bc3e3709354c01e5d50462cde7.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_56047c9470e515bc3e3709354c01e5d50462cde7.err diff --git a/test/expected/test_sql.sh_56047c9470e515bc3e3709354c01e5d50462cde7.out b/test/expected/test_sql.sh_56047c9470e515bc3e3709354c01e5d50462cde7.out new file mode 100644 index 0000000..fdb6294 --- /dev/null +++ b/test/expected/test_sql.sh_56047c9470e515bc3e3709354c01e5d50462cde7.out @@ -0,0 +1,2 @@ +[1m[4mlog_top_line() [0m + <NULL> diff --git a/test/expected/test_sql.sh_57427f3c4b4ec785ffff7c5802c10db0d3e547cf.err b/test/expected/test_sql.sh_57427f3c4b4ec785ffff7c5802c10db0d3e547cf.err new file mode 100644 index 0000000..7c11869 --- /dev/null +++ b/test/expected/test_sql.sh_57427f3c4b4ec785ffff7c5802c10db0d3e547cf.err @@ -0,0 +1,5 @@ +[1m[31m✘ error[0m: Cannot generate spectrogram for database results + [1m[31mreason[0m: “[4mc_ip[0m” is not a numeric column +[36m --> [0m[1mcommand-option[0m:2 +[36m | [0m[37m[40m:[0m[1m[36m[40mspectrogram[0m[37m[40m c_ip [0m +[36m =[0m [36mhelp[0m: Only numeric columns can be visualized diff --git a/test/expected/test_sql.sh_57427f3c4b4ec785ffff7c5802c10db0d3e547cf.out b/test/expected/test_sql.sh_57427f3c4b4ec785ffff7c5802c10db0d3e547cf.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_57427f3c4b4ec785ffff7c5802c10db0d3e547cf.out diff --git a/test/expected/test_sql.sh_57edc93426e6767aa44ab2356c55327553dcdc8d.err b/test/expected/test_sql.sh_57edc93426e6767aa44ab2356c55327553dcdc8d.err new file mode 100644 index 0000000..600e19d --- /dev/null +++ b/test/expected/test_sql.sh_57edc93426e6767aa44ab2356c55327553dcdc8d.err @@ -0,0 +1,7 @@ +[1m[31m✘ error[0m: call to [1m[4mraise_error[0m[4m([0m[4mmsg[0m[4m)[0m failed + [1m[31mreason[0m: no data was redirected to lnav's standard-input +[36m --> [0m[1mcommand-option[0m:1 +[36m | [0m[37m[40m|rename-stdin foo [0m +[36m --> [0m[1m../test/.lnav/formats/default/rename-stdin.lnav[0m:7 +[36m | [0m[37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mraise_error[0m[37m[40m([0m[35m[40m'no data was redirected to lnav''s standard-input'[0m[37m[40m) [0m +[36m | [0m[37m[40m [0m[1m[36m[40mWHERE[0m[37m[40m ([0m[1m[36m[40mSELECT[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_file[0m[37m[40m [0m[1m[36m[40mWHERE[0m[37m[40m [0m[37m[40mfilepath[0m[1m[37m[40m=[0m[35m[40m'stdin'[0m[37m[40m) [0m[1m[37m[40m=[0m[37m[40m [0m[1m[37m[40m0[0m diff --git a/test/expected/test_sql.sh_57edc93426e6767aa44ab2356c55327553dcdc8d.out b/test/expected/test_sql.sh_57edc93426e6767aa44ab2356c55327553dcdc8d.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_57edc93426e6767aa44ab2356c55327553dcdc8d.out diff --git a/test/expected/test_sql.sh_5801770f3e0ecc1d62c7a97116d6da1981bbc7bd.err b/test/expected/test_sql.sh_5801770f3e0ecc1d62c7a97116d6da1981bbc7bd.err new file mode 100644 index 0000000..3ced6be --- /dev/null +++ b/test/expected/test_sql.sh_5801770f3e0ecc1d62c7a97116d6da1981bbc7bd.err @@ -0,0 +1,4 @@ +[1m[31m✘ error[0m: SQL statement failed + [1m[31mreason[0m: A non-empty name and value must be provided when inserting an environment variable +[36m --> [0m[1mcommand-option[0m:1 +[36m | [0m[37m[40m;[0m[1m[36m[40mINSERT[0m[37m[40m [0m[1m[36m[40mINTO[0m[37m[40m [0m[1m[37m[40menviron[0m[1m[37m[40m [0m[37m[40m([0m[37m[40mname[0m[37m[40m, [0m[37m[40mvalue[0m[37m[40m) [0m[1m[36m[40mVALUES[0m[37m[40m ([0m[1m[36m[40mnull[0m[37m[40m, [0m[1m[36m[40mnull[0m[37m[40m)[0m diff --git a/test/expected/test_sql.sh_5801770f3e0ecc1d62c7a97116d6da1981bbc7bd.out b/test/expected/test_sql.sh_5801770f3e0ecc1d62c7a97116d6da1981bbc7bd.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_5801770f3e0ecc1d62c7a97116d6da1981bbc7bd.out diff --git a/test/expected/test_sql.sh_5fe26fe4fc22f23f8dbe3a6aab394602886f2971.err b/test/expected/test_sql.sh_5fe26fe4fc22f23f8dbe3a6aab394602886f2971.err new file mode 100644 index 0000000..dfe4674 --- /dev/null +++ b/test/expected/test_sql.sh_5fe26fe4fc22f23f8dbe3a6aab394602886f2971.err @@ -0,0 +1,5 @@ +[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 diff --git a/test/expected/test_sql.sh_5fe26fe4fc22f23f8dbe3a6aab394602886f2971.out b/test/expected/test_sql.sh_5fe26fe4fc22f23f8dbe3a6aab394602886f2971.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_5fe26fe4fc22f23f8dbe3a6aab394602886f2971.out diff --git a/test/expected/test_sql.sh_62eb85c9569e71a630d72065238559528a16114c.err b/test/expected/test_sql.sh_62eb85c9569e71a630d72065238559528a16114c.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_62eb85c9569e71a630d72065238559528a16114c.err diff --git a/test/expected/test_sql.sh_62eb85c9569e71a630d72065238559528a16114c.out b/test/expected/test_sql.sh_62eb85c9569e71a630d72065238559528a16114c.out new file mode 100644 index 0000000..898c9a8 --- /dev/null +++ b/test/expected/test_sql.sh_62eb85c9569e71a630d72065238559528a16114c.out @@ -0,0 +1,2 @@ +[1m[4mfilepath [0m +foo diff --git a/test/expected/test_sql.sh_6ad9d0adf85c36363f6b24f49950dcdc13dd34ab.err b/test/expected/test_sql.sh_6ad9d0adf85c36363f6b24f49950dcdc13dd34ab.err new file mode 100644 index 0000000..cdb2140 --- /dev/null +++ b/test/expected/test_sql.sh_6ad9d0adf85c36363f6b24f49950dcdc13dd34ab.err @@ -0,0 +1,6 @@ +[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 diff --git a/test/expected/test_sql.sh_6ad9d0adf85c36363f6b24f49950dcdc13dd34ab.out b/test/expected/test_sql.sh_6ad9d0adf85c36363f6b24f49950dcdc13dd34ab.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_6ad9d0adf85c36363f6b24f49950dcdc13dd34ab.out diff --git a/test/expected/test_sql.sh_6edb0c8d5323d1b962d90dd6ecdd7eee9008d7b5.err b/test/expected/test_sql.sh_6edb0c8d5323d1b962d90dd6ecdd7eee9008d7b5.err new file mode 100644 index 0000000..f031c59 --- /dev/null +++ b/test/expected/test_sql.sh_6edb0c8d5323d1b962d90dd6ecdd7eee9008d7b5.err @@ -0,0 +1,6 @@ +[1m[31m✘ error[0m: unknown search table -- search_test1 +[36m --> [0m[1mcommand-option[0m:1 +[36m | [0m[37m[40m:[0m[1m[36m[40mdelete-search-table[0m[37m[40m search_test1 [0m +[36m =[0m [36mhelp[0m: [4m:[0m[1m[4mdelete-search-table[0m[4m [0m[4mtable-name[0m + ══════════════════════════════════════════════════════════════════════ + Create an SQL table based on a regex search diff --git a/test/expected/test_sql.sh_6edb0c8d5323d1b962d90dd6ecdd7eee9008d7b5.out b/test/expected/test_sql.sh_6edb0c8d5323d1b962d90dd6ecdd7eee9008d7b5.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_6edb0c8d5323d1b962d90dd6ecdd7eee9008d7b5.out diff --git a/test/expected/test_sql.sh_753c343a256d1286750314957d1b4e155464e03e.err b/test/expected/test_sql.sh_753c343a256d1286750314957d1b4e155464e03e.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_753c343a256d1286750314957d1b4e155464e03e.err diff --git a/test/expected/test_sql.sh_753c343a256d1286750314957d1b4e155464e03e.out b/test/expected/test_sql.sh_753c343a256d1286750314957d1b4e155464e03e.out new file mode 100644 index 0000000..801a9af --- /dev/null +++ b/test/expected/test_sql.sh_753c343a256d1286750314957d1b4e155464e03e.out @@ -0,0 +1,2 @@ +[1m[4mlog_top_datetime() [0m + <NULL> diff --git a/test/expected/test_sql.sh_764306f0e5f610ba71f521ba3d19fe158ece0ba5.err b/test/expected/test_sql.sh_764306f0e5f610ba71f521ba3d19fe158ece0ba5.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_764306f0e5f610ba71f521ba3d19fe158ece0ba5.err diff --git a/test/expected/test_sql.sh_764306f0e5f610ba71f521ba3d19fe158ece0ba5.out b/test/expected/test_sql.sh_764306f0e5f610ba71f521ba3d19fe158ece0ba5.out new file mode 100644 index 0000000..fabc853 --- /dev/null +++ b/test/expected/test_sql.sh_764306f0e5f610ba71f521ba3d19fe158ece0ba5.out @@ -0,0 +1,2 @@ +[1m[4m col_0 [0m +eth0.IPv4 diff --git a/test/expected/test_sql.sh_7f664c9cda0ae1c48333e21051b5e0eeafd5b4bc.err b/test/expected/test_sql.sh_7f664c9cda0ae1c48333e21051b5e0eeafd5b4bc.err new file mode 100644 index 0000000..1a0c2b0 --- /dev/null +++ b/test/expected/test_sql.sh_7f664c9cda0ae1c48333e21051b5e0eeafd5b4bc.err @@ -0,0 +1,6 @@ +[1m[31m✘ error[0m: call to [1m[4mraise_error[0m[4m([0m[4mmsg[0m[4m)[0m failed + [1m[31mreason[0m: expecting the new name for stdin as the first argument +[36m --> [0m[1mcommand-option[0m:1 +[36m | [0m[37m[40m|rename-stdin [0m +[36m --> [0m[1m../test/.lnav/formats/default/rename-stdin.lnav[0m:6 +[36m | [0m[37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40mraise_error[0m[37m[40m([0m[35m[40m'expecting the new name for stdin as the first argument'[0m[37m[40m) [0m[1m[36m[40mWHERE[0m[37m[40m $[0m[1m[37m[40m1[0m[37m[40m [0m[1m[36m[40mIS[0m[37m[40m [0m[1m[36m[40mNULL[0m diff --git a/test/expected/test_sql.sh_7f664c9cda0ae1c48333e21051b5e0eeafd5b4bc.out b/test/expected/test_sql.sh_7f664c9cda0ae1c48333e21051b5e0eeafd5b4bc.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_7f664c9cda0ae1c48333e21051b5e0eeafd5b4bc.out diff --git a/test/expected/test_sql.sh_85fe3b9803254ea54b864d4865d7bd4d7a7f86c6.err b/test/expected/test_sql.sh_85fe3b9803254ea54b864d4865d7bd4d7a7f86c6.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_85fe3b9803254ea54b864d4865d7bd4d7a7f86c6.err diff --git a/test/expected/test_sql.sh_85fe3b9803254ea54b864d4865d7bd4d7a7f86c6.out b/test/expected/test_sql.sh_85fe3b9803254ea54b864d4865d7bd4d7a7f86c6.out new file mode 100644 index 0000000..97b8dcc --- /dev/null +++ b/test/expected/test_sql.sh_85fe3b9803254ea54b864d4865d7bd4d7a7f86c6.out @@ -0,0 +1,4 @@ +192.168.202.254 - - [20/Jul/2009:23:00: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:23:00: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 +[4m192.168.202.254[0m[4m - [0m[4m-[0m[4m [[0m[4m20/Jul/2009:23:00:29 +0000[0m[4m] "[0m[4mGET[0m[4m [0m[4m/vmw/vSphere/default/vmkernel.gz[0m[4m [0m[4mHTTP/1.0[0m[4m" 200 78929 "[0m[4m-[0m[4m" "[0m[4mgPXE/0.9.7[0m[4m"[0m +[31m10.112.81.15[0m[31m - [0m[31m-[0m[31m [[0m[31m15/Feb/2013:06:01:31 +0000[0m[31m] "-" 400 0 "[0m[31m-[0m[31m" "[0m[31m-[0m[31m"[0m diff --git a/test/expected/test_sql.sh_8ee288f1508eaab0367e465e9f382e848f3282aa.err b/test/expected/test_sql.sh_8ee288f1508eaab0367e465e9f382e848f3282aa.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_8ee288f1508eaab0367e465e9f382e848f3282aa.err diff --git a/test/expected/test_sql.sh_8ee288f1508eaab0367e465e9f382e848f3282aa.out b/test/expected/test_sql.sh_8ee288f1508eaab0367e465e9f382e848f3282aa.out new file mode 100644 index 0000000..b21f574 --- /dev/null +++ b/test/expected/test_sql.sh_8ee288f1508eaab0367e465e9f382e848f3282aa.out @@ -0,0 +1,4 @@ +[1m[4m log_time [0m +2009-07-20 22:59:26.000 +2009-07-20 22:59:29.000 +2009-07-20 22:59:29.000 diff --git a/test/expected/test_sql.sh_9a209f3ee1b1f543ca2587b695d2eb0e63e74c51.err b/test/expected/test_sql.sh_9a209f3ee1b1f543ca2587b695d2eb0e63e74c51.err new file mode 100644 index 0000000..d291abe --- /dev/null +++ b/test/expected/test_sql.sh_9a209f3ee1b1f543ca2587b695d2eb0e63e74c51.err @@ -0,0 +1,6 @@ +[1m[31m✘ error[0m: unknown search table -- search_test1 +[36m --> [0m[1mcommand-option[0m:2 +[36m | [0m[37m[40m:[0m[1m[36m[40mdelete-search-table[0m[37m[40m search_test1 [0m +[36m =[0m [36mhelp[0m: [4m:[0m[1m[4mdelete-search-table[0m[4m [0m[4mtable-name[0m + ══════════════════════════════════════════════════════════════════════ + Create an SQL table based on a regex search diff --git a/test/expected/test_sql.sh_9a209f3ee1b1f543ca2587b695d2eb0e63e74c51.out b/test/expected/test_sql.sh_9a209f3ee1b1f543ca2587b695d2eb0e63e74c51.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_9a209f3ee1b1f543ca2587b695d2eb0e63e74c51.out diff --git a/test/expected/test_sql.sh_9b03e9f7a1bc35e408b3a17ee90cfdadea164df6.err b/test/expected/test_sql.sh_9b03e9f7a1bc35e408b3a17ee90cfdadea164df6.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_9b03e9f7a1bc35e408b3a17ee90cfdadea164df6.err diff --git a/test/expected/test_sql.sh_9b03e9f7a1bc35e408b3a17ee90cfdadea164df6.out b/test/expected/test_sql.sh_9b03e9f7a1bc35e408b3a17ee90cfdadea164df6.out new file mode 100644 index 0000000..f648fc6 --- /dev/null +++ b/test/expected/test_sql.sh_9b03e9f7a1bc35e408b3a17ee90cfdadea164df6.out @@ -0,0 +1,4 @@ +[4mMin: 0 [0m[4m[42m [0m[4m 1-23 [0m[4m[43m [0m[4m 24-48 [0m[4m[41m [0m[4m 49+[0m[4m Max: 291690[0m +[41m [0m[43mT[0m[42mh[0m[42mu[0m[42m [0m[42mN[0m[42mo[0m[42mv[0m[42m [0m[42m0[0m[42m3[0m[42m [0m[42m0[0m[42m0[0m:1[42m5[0m:00[42m [0m [42m [0m[42m [0m [42m [0m[42m [0m [42m [0m [42m [0m [42m [0m [42m [0m +▲ [1m70[0m values in the range [1m0.00[0m-[1m3788.18[0m +[43m [0m[42mT[0m[42mh[0m[42mu[0m[42m [0m[42mN[0m[42mo[0mv[42m [0m03 [42m0[0m0:[42m2[0m0:00 diff --git a/test/expected/test_sql.sh_9ceccab07fbf7130bffe3c201c710719e4a3e9af.err b/test/expected/test_sql.sh_9ceccab07fbf7130bffe3c201c710719e4a3e9af.err new file mode 100644 index 0000000..3129cfa --- /dev/null +++ b/test/expected/test_sql.sh_9ceccab07fbf7130bffe3c201c710719e4a3e9af.err @@ -0,0 +1,6 @@ +[1m[31m✘ error[0m: Cannot generate spectrogram for database results + [1m[31mreason[0m: The “[4mlog_time[0m” column is not in ascending order between rows 1 and 2 +[36m --> [0m[1mcommand-option[0m:2 +[36m | [0m[37m[40m:[0m[1m[36m[40mspectrogram[0m[37m[40m sc_bytes [0m +[36m =[0m [36mnote[0m: An ascending “[4mlog_time[0m” column is needed to render a spectrogram +[36m =[0m [36mhelp[0m: Add an “[1m[36mORDER BY[0m [4mlog_time[0m [1m[36mASC[0m” clause to your [1m[36mSELECT[0m statement diff --git a/test/expected/test_sql.sh_9ceccab07fbf7130bffe3c201c710719e4a3e9af.out b/test/expected/test_sql.sh_9ceccab07fbf7130bffe3c201c710719e4a3e9af.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_9ceccab07fbf7130bffe3c201c710719e4a3e9af.out diff --git a/test/expected/test_sql.sh_9e1d05b821822ee40e13fadb24ec558f4bfcff10.err b/test/expected/test_sql.sh_9e1d05b821822ee40e13fadb24ec558f4bfcff10.err new file mode 100644 index 0000000..d3d1a0a --- /dev/null +++ b/test/expected/test_sql.sh_9e1d05b821822ee40e13fadb24ec558f4bfcff10.err @@ -0,0 +1,4 @@ +[1m[31m✘ error[0m: SQL statement failed + [1m[31mreason[0m: real file paths cannot be updated, only symbolic ones +[36m --> [0m[1mcommand-option[0m:1 +[36m | [0m[37m[40m;[0m[1m[36m[40mUPDATE[0m[37m[40m [0m[37m[40mlnav_file[0m[37m[40m [0m[1m[36m[40mSET[0m[37m[40m [0m[37m[40mfilepath[0m[1m[37m[40m=[0m[35m[40m'foo'[0m[37m[40m [0m[1m[36m[40mWHERE[0m[37m[40m [0m[1m[37m[40mendswith[0m[37m[40m([0m[37m[40mfilepath[0m[37m[40m, [0m[35m[40m'_log.0'[0m[37m[40m)[0m diff --git a/test/expected/test_sql.sh_9e1d05b821822ee40e13fadb24ec558f4bfcff10.out b/test/expected/test_sql.sh_9e1d05b821822ee40e13fadb24ec558f4bfcff10.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_9e1d05b821822ee40e13fadb24ec558f4bfcff10.out diff --git a/test/expected/test_sql.sh_a6b68b9f0044d18e7fa8f9287ddc9110701edc33.err b/test/expected/test_sql.sh_a6b68b9f0044d18e7fa8f9287ddc9110701edc33.err new file mode 100644 index 0000000..8dd63fa --- /dev/null +++ b/test/expected/test_sql.sh_a6b68b9f0044d18e7fa8f9287ddc9110701edc33.err @@ -0,0 +1,4 @@ +[1m[31m✘ error[0m: SQL statement failed + [1m[31mreason[0m: attempt to write a readonly database +[36m --> [0m[1mcommand-option[0m:1 +[36m | [0m[37m[40m;[0m[1m[36m[40mdelete[0m[37m[40m [0m[1m[36m[40mfrom[0m[37m[40m [0m[37m[40maccess_log[0m[37m[40m [0m diff --git a/test/expected/test_sql.sh_a6b68b9f0044d18e7fa8f9287ddc9110701edc33.out b/test/expected/test_sql.sh_a6b68b9f0044d18e7fa8f9287ddc9110701edc33.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_a6b68b9f0044d18e7fa8f9287ddc9110701edc33.out diff --git a/test/expected/test_sql.sh_ae7b1f1684e14bf9c16e0d789257b6ef57cfb2b1.err b/test/expected/test_sql.sh_ae7b1f1684e14bf9c16e0d789257b6ef57cfb2b1.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_ae7b1f1684e14bf9c16e0d789257b6ef57cfb2b1.err diff --git a/test/expected/test_sql.sh_ae7b1f1684e14bf9c16e0d789257b6ef57cfb2b1.out b/test/expected/test_sql.sh_ae7b1f1684e14bf9c16e0d789257b6ef57cfb2b1.out new file mode 100644 index 0000000..c012bd8 --- /dev/null +++ b/test/expected/test_sql.sh_ae7b1f1684e14bf9c16e0d789257b6ef57cfb2b1.out @@ -0,0 +1,2 @@ +[1m[4m log_time [0m +2009-07-20 22:59:26.000 diff --git a/test/expected/test_sql.sh_afe9cdc4898df5c4e112c13dfe3db6dc089c0d7c.err b/test/expected/test_sql.sh_afe9cdc4898df5c4e112c13dfe3db6dc089c0d7c.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_afe9cdc4898df5c4e112c13dfe3db6dc089c0d7c.err diff --git a/test/expected/test_sql.sh_afe9cdc4898df5c4e112c13dfe3db6dc089c0d7c.out b/test/expected/test_sql.sh_afe9cdc4898df5c4e112c13dfe3db6dc089c0d7c.out new file mode 100644 index 0000000..4382802 --- /dev/null +++ b/test/expected/test_sql.sh_afe9cdc4898df5c4e112c13dfe3db6dc089c0d7c.out @@ -0,0 +1,4 @@ +[1m[4m log_body [0m +lookup(file): lookup for foobar failed +attempting to mount entry /auto/opt +lookup(file): lookup for opt failed diff --git a/test/expected/test_sql.sh_b085d26043f9661d70f82cb90ecb3c5245d25eac.err b/test/expected/test_sql.sh_b085d26043f9661d70f82cb90ecb3c5245d25eac.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_b085d26043f9661d70f82cb90ecb3c5245d25eac.err diff --git a/test/expected/test_sql.sh_b085d26043f9661d70f82cb90ecb3c5245d25eac.out b/test/expected/test_sql.sh_b085d26043f9661d70f82cb90ecb3c5245d25eac.out new file mode 100644 index 0000000..b21f574 --- /dev/null +++ b/test/expected/test_sql.sh_b085d26043f9661d70f82cb90ecb3c5245d25eac.out @@ -0,0 +1,4 @@ +[1m[4m log_time [0m +2009-07-20 22:59:26.000 +2009-07-20 22:59:29.000 +2009-07-20 22:59:29.000 diff --git a/test/expected/test_sql.sh_b2694e4fbecdd128798af25ee0d069e7e35fb499.err b/test/expected/test_sql.sh_b2694e4fbecdd128798af25ee0d069e7e35fb499.err new file mode 100644 index 0000000..fe7b342 --- /dev/null +++ b/test/expected/test_sql.sh_b2694e4fbecdd128798af25ee0d069e7e35fb499.err @@ -0,0 +1,4 @@ +[1m[31m✘ error[0m: failed to compile SQL statement + [1m[31mreason[0m: the start parameter is required +[36m --> [0m[1mcommand-option[0m:1 +[36m | [0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40m*[0m[37m[40m [0m[1m[36m[40mFROM[0m[37m[40m [0m[1m[37m[40mgenerate_series[0m[37m[40m() [0m diff --git a/test/expected/test_sql.sh_b2694e4fbecdd128798af25ee0d069e7e35fb499.out b/test/expected/test_sql.sh_b2694e4fbecdd128798af25ee0d069e7e35fb499.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_b2694e4fbecdd128798af25ee0d069e7e35fb499.out diff --git a/test/expected/test_sql.sh_b5aa0561a65de7e8e22085db184c72a94b1a89a9.err b/test/expected/test_sql.sh_b5aa0561a65de7e8e22085db184c72a94b1a89a9.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_b5aa0561a65de7e8e22085db184c72a94b1a89a9.err diff --git a/test/expected/test_sql.sh_b5aa0561a65de7e8e22085db184c72a94b1a89a9.out b/test/expected/test_sql.sh_b5aa0561a65de7e8e22085db184c72a94b1a89a9.out new file mode 100644 index 0000000..c2c44ad --- /dev/null +++ b/test/expected/test_sql.sh_b5aa0561a65de7e8e22085db184c72a94b1a89a9.out @@ -0,0 +1,2 @@ +[1m[4m log_body [0m +timstack : TTY=pts/6 ; PWD=/auto/wstimstack/rpms/lbuild/test ; USER=root ; COMMAND=/usr/bin/tail /var/log/messages diff --git a/test/expected/test_sql.sh_bad03a996c0750733ab99c592b9011851f521a69.err b/test/expected/test_sql.sh_bad03a996c0750733ab99c592b9011851f521a69.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_bad03a996c0750733ab99c592b9011851f521a69.err diff --git a/test/expected/test_sql.sh_bad03a996c0750733ab99c592b9011851f521a69.out b/test/expected/test_sql.sh_bad03a996c0750733ab99c592b9011851f521a69.out new file mode 100644 index 0000000..85a1303 --- /dev/null +++ b/test/expected/test_sql.sh_bad03a996c0750733ab99c592b9011851f521a69.out @@ -0,0 +1,5 @@ +[1m[4mmatch_index [0m[1m[4m content [0m[1m[4m case match_index when 2 then replicate('abc', 1000) else '' end [0m +[1m[7m [0m[1m 0[0m[1m [0m[1m{"col_0":10}[0m[1m [0m[1m [0m +[7m 1[0m[7m [0m[7m{"col_0":50}[0m[7m [0m[7m [0m +[1m[7m 2[0m[1m[7m [0m[1m[7m{"col_0":50}[0m[1m[7m [0m[1m[7mabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc⋯bcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc [0m +[7m 3[0m[7m [0m[7m{"col_0":50}[0m[7m [0m[7m [0m diff --git a/test/expected/test_sql.sh_bd46ca4560f8be6307a914e39539bbac0368080a.err b/test/expected/test_sql.sh_bd46ca4560f8be6307a914e39539bbac0368080a.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_bd46ca4560f8be6307a914e39539bbac0368080a.err diff --git a/test/expected/test_sql.sh_bd46ca4560f8be6307a914e39539bbac0368080a.out b/test/expected/test_sql.sh_bd46ca4560f8be6307a914e39539bbac0368080a.out new file mode 100644 index 0000000..7041f45 --- /dev/null +++ b/test/expected/test_sql.sh_bd46ca4560f8be6307a914e39539bbac0368080a.out @@ -0,0 +1,2 @@ +[1m[4mlnav_top_file() [0m + <NULL> diff --git a/test/expected/test_sql.sh_c20b0320096342c180146a5d18a6de82319d70b2.err b/test/expected/test_sql.sh_c20b0320096342c180146a5d18a6de82319d70b2.err new file mode 100644 index 0000000..da8dff5 --- /dev/null +++ b/test/expected/test_sql.sh_c20b0320096342c180146a5d18a6de82319d70b2.err @@ -0,0 +1,4 @@ +[1m[31m✘ error[0m: SQL statement failed + [1m[31mreason[0m: A non-empty name and value must be provided when inserting an environment variable +[36m --> [0m[1mcommand-option[0m:1 +[36m | [0m[37m[40m;[0m[1m[36m[40mINSERT[0m[37m[40m [0m[1m[36m[40mINTO[0m[37m[40m [0m[1m[37m[40menviron[0m[1m[37m[40m [0m[37m[40m([0m[37m[40mname[0m[37m[40m, [0m[37m[40mvalue[0m[37m[40m) [0m[1m[36m[40mVALUES[0m[37m[40m ("", [0m[1m[36m[40mnull[0m[37m[40m)[0m diff --git a/test/expected/test_sql.sh_c20b0320096342c180146a5d18a6de82319d70b2.out b/test/expected/test_sql.sh_c20b0320096342c180146a5d18a6de82319d70b2.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_c20b0320096342c180146a5d18a6de82319d70b2.out diff --git a/test/expected/test_sql.sh_c353ef036c505b75996252138fbd4c8d22e8149c.err b/test/expected/test_sql.sh_c353ef036c505b75996252138fbd4c8d22e8149c.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_c353ef036c505b75996252138fbd4c8d22e8149c.err diff --git a/test/expected/test_sql.sh_c353ef036c505b75996252138fbd4c8d22e8149c.out b/test/expected/test_sql.sh_c353ef036c505b75996252138fbd4c8d22e8149c.out new file mode 100644 index 0000000..b21f574 --- /dev/null +++ b/test/expected/test_sql.sh_c353ef036c505b75996252138fbd4c8d22e8149c.out @@ -0,0 +1,4 @@ +[1m[4m log_time [0m +2009-07-20 22:59:26.000 +2009-07-20 22:59:29.000 +2009-07-20 22:59:29.000 diff --git a/test/expected/test_sql.sh_c5b8da04734fadf3b9eea80e0af997e38e0fb811.err b/test/expected/test_sql.sh_c5b8da04734fadf3b9eea80e0af997e38e0fb811.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_c5b8da04734fadf3b9eea80e0af997e38e0fb811.err diff --git a/test/expected/test_sql.sh_c5b8da04734fadf3b9eea80e0af997e38e0fb811.out b/test/expected/test_sql.sh_c5b8da04734fadf3b9eea80e0af997e38e0fb811.out new file mode 100644 index 0000000..86a4d5a --- /dev/null +++ b/test/expected/test_sql.sh_c5b8da04734fadf3b9eea80e0af997e38e0fb811.out @@ -0,0 +1,3 @@ +[1m[4mlog_line [0m[1m[4m col_0 [0m +[1m 0[0m[1m [0m[1meth0.IPv4 [0m + 7 eth0.IPv4 diff --git a/test/expected/test_sql.sh_c73dec2706fc0b9a124f5da3a83f40d8d3255beb.err b/test/expected/test_sql.sh_c73dec2706fc0b9a124f5da3a83f40d8d3255beb.err new file mode 100644 index 0000000..8ab7471 --- /dev/null +++ b/test/expected/test_sql.sh_c73dec2706fc0b9a124f5da3a83f40d8d3255beb.err @@ -0,0 +1,4 @@ +[1m[31m✘ error[0m: failed to compile SQL statement + [1m[31mreason[0m: not authorized +[36m --> [0m[1mcommand-option[0m:1 +[36m | [0m[1m[36m[40mattach[0m[37m[40m [0m[1m[36m[40mdatabase[0m[37m[40m [0m[35m[40m'file:memdb?cache=shared'[0m[37m[40m [0m[1m[36m[40mas[0m[37m[40m [0m[35m[40m'db'[0m diff --git a/test/expected/test_sql.sh_c73dec2706fc0b9a124f5da3a83f40d8d3255beb.out b/test/expected/test_sql.sh_c73dec2706fc0b9a124f5da3a83f40d8d3255beb.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_c73dec2706fc0b9a124f5da3a83f40d8d3255beb.out diff --git a/test/expected/test_sql.sh_c7e1dbf4605914720b55787785abfafdf2c4178a.err b/test/expected/test_sql.sh_c7e1dbf4605914720b55787785abfafdf2c4178a.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_c7e1dbf4605914720b55787785abfafdf2c4178a.err diff --git a/test/expected/test_sql.sh_c7e1dbf4605914720b55787785abfafdf2c4178a.out b/test/expected/test_sql.sh_c7e1dbf4605914720b55787785abfafdf2c4178a.out new file mode 100644 index 0000000..762b09c --- /dev/null +++ b/test/expected/test_sql.sh_c7e1dbf4605914720b55787785abfafdf2c4178a.out @@ -0,0 +1,2 @@ +[1m[4m log_top_datetime() [0m +2016-03-13 22:49:15.000 diff --git a/test/expected/test_sql.sh_cc77a633a66d1778705a34e3657737547b3fb08d.err b/test/expected/test_sql.sh_cc77a633a66d1778705a34e3657737547b3fb08d.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_cc77a633a66d1778705a34e3657737547b3fb08d.err diff --git a/test/expected/test_sql.sh_cc77a633a66d1778705a34e3657737547b3fb08d.out b/test/expected/test_sql.sh_cc77a633a66d1778705a34e3657737547b3fb08d.out new file mode 100644 index 0000000..b13e5f0 --- /dev/null +++ b/test/expected/test_sql.sh_cc77a633a66d1778705a34e3657737547b3fb08d.out @@ -0,0 +1,2 @@ +[1m[4mlog_top_line() [0m + 2 diff --git a/test/expected/test_sql.sh_dd540973a0dc86320d84706845a15608196ae5be.err b/test/expected/test_sql.sh_dd540973a0dc86320d84706845a15608196ae5be.err new file mode 100644 index 0000000..c7ee159 --- /dev/null +++ b/test/expected/test_sql.sh_dd540973a0dc86320d84706845a15608196ae5be.err @@ -0,0 +1,10 @@ +[1m[31m✘ error[0m: call to [1m[4mraise_error[0m[4m([0m[4mmsg[0m[4m)[0m failed + [1m[31mreason[0m: oops! +[36m --> [0m[1mcommand-option[0m:2 +[36m | [0m[37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[37m[40m$inum[0m[37m[40m, [0m[37m[40m$nul[0m[37m[40m, [0m[37m[40m$fnum[0m[37m[40m, [0m[37m[40m$str[0m[37m[40m, [0m[1m[37m[40mraise_error[0m[37m[40m([0m[35m[40m'oops!'[0m[37m[40m)[0m +[36m =[0m [36mnote[0m: the bound parameters are set as follows: + [4m$fnum[0m:FLOAT = “2” + [4m$inum[0m:INTEGER = “1” + [4m$nul[0m:NULL = “<NULL>” + [4m$str[0m:TEXT = “abc” + diff --git a/test/expected/test_sql.sh_dd540973a0dc86320d84706845a15608196ae5be.out b/test/expected/test_sql.sh_dd540973a0dc86320d84706845a15608196ae5be.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_dd540973a0dc86320d84706845a15608196ae5be.out diff --git a/test/expected/test_sql.sh_e70dc7d2b686c7f91c2b41b10f3920c50f3ea405.err b/test/expected/test_sql.sh_e70dc7d2b686c7f91c2b41b10f3920c50f3ea405.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_e70dc7d2b686c7f91c2b41b10f3920c50f3ea405.err diff --git a/test/expected/test_sql.sh_e70dc7d2b686c7f91c2b41b10f3920c50f3ea405.out b/test/expected/test_sql.sh_e70dc7d2b686c7f91c2b41b10f3920c50f3ea405.out new file mode 100644 index 0000000..889aced --- /dev/null +++ b/test/expected/test_sql.sh_e70dc7d2b686c7f91c2b41b10f3920c50f3ea405.out @@ -0,0 +1 @@ +[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 diff --git a/test/expected/test_sql.sh_ff8a978fc0de0fed675a3cd1454cf435a6856fd5.err b/test/expected/test_sql.sh_ff8a978fc0de0fed675a3cd1454cf435a6856fd5.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql.sh_ff8a978fc0de0fed675a3cd1454cf435a6856fd5.err diff --git a/test/expected/test_sql.sh_ff8a978fc0de0fed675a3cd1454cf435a6856fd5.out b/test/expected/test_sql.sh_ff8a978fc0de0fed675a3cd1454cf435a6856fd5.out new file mode 100644 index 0000000..a4a70f3 --- /dev/null +++ b/test/expected/test_sql.sh_ff8a978fc0de0fed675a3cd1454cf435a6856fd5.out @@ -0,0 +1,3 @@ +134 +46210 +78929 diff --git a/test/expected/test_sql_anno.sh_028d5d5af2f3519b59d349d41cb7ecf385253b51.err b/test/expected/test_sql_anno.sh_028d5d5af2f3519b59d349d41cb7ecf385253b51.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_anno.sh_028d5d5af2f3519b59d349d41cb7ecf385253b51.err diff --git a/test/expected/test_sql_anno.sh_028d5d5af2f3519b59d349d41cb7ecf385253b51.out b/test/expected/test_sql_anno.sh_028d5d5af2f3519b59d349d41cb7ecf385253b51.out new file mode 100644 index 0000000..8adbd5c --- /dev/null +++ b/test/expected/test_sql_anno.sh_028d5d5af2f3519b59d349d41cb7ecf385253b51.out @@ -0,0 +1,5 @@ + SELECT * FROM FOO + sql_keyword ------ + sql_oper - + sql_keyword ---- + sql_ident --- diff --git a/test/expected/test_sql_anno.sh_0a37c43350ddd7a2d0d75695be32fac083ad04a4.err b/test/expected/test_sql_anno.sh_0a37c43350ddd7a2d0d75695be32fac083ad04a4.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_anno.sh_0a37c43350ddd7a2d0d75695be32fac083ad04a4.err diff --git a/test/expected/test_sql_anno.sh_0a37c43350ddd7a2d0d75695be32fac083ad04a4.out b/test/expected/test_sql_anno.sh_0a37c43350ddd7a2d0d75695be32fac083ad04a4.out new file mode 100644 index 0000000..0e8b3dd --- /dev/null +++ b/test/expected/test_sql_anno.sh_0a37c43350ddd7a2d0d75695be32fac083ad04a4.out @@ -0,0 +1,4 @@ + CREATE + sql_keyword ------ +CREATE: Assign a name to a SELECT statement +CREATE: Create a table diff --git a/test/expected/test_sql_anno.sh_1151e5b727f6b57070bf2c8f047f1d7e02b803a6.err b/test/expected/test_sql_anno.sh_1151e5b727f6b57070bf2c8f047f1d7e02b803a6.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_anno.sh_1151e5b727f6b57070bf2c8f047f1d7e02b803a6.err diff --git a/test/expected/test_sql_anno.sh_1151e5b727f6b57070bf2c8f047f1d7e02b803a6.out b/test/expected/test_sql_anno.sh_1151e5b727f6b57070bf2c8f047f1d7e02b803a6.out new file mode 100644 index 0000000..d8f654e --- /dev/null +++ b/test/expected/test_sql_anno.sh_1151e5b727f6b57070bf2c8f047f1d7e02b803a6.out @@ -0,0 +1,6 @@ + SELECT lower(abc + sql_keyword ------ + sql_func --------- + sql_ident ----- + sql_ident --- +lower: Returns a copy of the given string with all ASCII characters converted to lower case. diff --git a/test/expected/test_sql_anno.sh_1b29488b949c294479aa6054f80a35bc106b454b.err b/test/expected/test_sql_anno.sh_1b29488b949c294479aa6054f80a35bc106b454b.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_anno.sh_1b29488b949c294479aa6054f80a35bc106b454b.err diff --git a/test/expected/test_sql_anno.sh_1b29488b949c294479aa6054f80a35bc106b454b.out b/test/expected/test_sql_anno.sh_1b29488b949c294479aa6054f80a35bc106b454b.out new file mode 100644 index 0000000..c9237a8 --- /dev/null +++ b/test/expected/test_sql_anno.sh_1b29488b949c294479aa6054f80a35bc106b454b.out @@ -0,0 +1,2 @@ + TABLE + sql_keyword ----- diff --git a/test/expected/test_sql_anno.sh_331a152080d2e278b7cc0a37728eca1ded36ed72.err b/test/expected/test_sql_anno.sh_331a152080d2e278b7cc0a37728eca1ded36ed72.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_anno.sh_331a152080d2e278b7cc0a37728eca1ded36ed72.err diff --git a/test/expected/test_sql_anno.sh_331a152080d2e278b7cc0a37728eca1ded36ed72.out b/test/expected/test_sql_anno.sh_331a152080d2e278b7cc0a37728eca1ded36ed72.out new file mode 100644 index 0000000..b7bee8a --- /dev/null +++ b/test/expected/test_sql_anno.sh_331a152080d2e278b7cc0a37728eca1ded36ed72.out @@ -0,0 +1,5 @@ + SELECT 'hello, world!' FROM "my table" + sql_keyword ------ + sql_string --------------- + sql_keyword ---- + sql_ident ---------- diff --git a/test/expected/test_sql_anno.sh_4ca92f0da538c2f9d524211a021b306af0d2740d.err b/test/expected/test_sql_anno.sh_4ca92f0da538c2f9d524211a021b306af0d2740d.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_anno.sh_4ca92f0da538c2f9d524211a021b306af0d2740d.err diff --git a/test/expected/test_sql_anno.sh_4ca92f0da538c2f9d524211a021b306af0d2740d.out b/test/expected/test_sql_anno.sh_4ca92f0da538c2f9d524211a021b306af0d2740d.out new file mode 100644 index 0000000..9498d4b --- /dev/null +++ b/test/expected/test_sql_anno.sh_4ca92f0da538c2f9d524211a021b306af0d2740d.out @@ -0,0 +1,7 @@ + SELECT * FROM foo.bar + sql_keyword ------ + sql_oper - + sql_keyword ---- + sql_ident --- + sql_garbage - + sql_ident --- diff --git a/test/expected/test_sql_anno.sh_73814eca259e469b57bf7469787b91e8e8569b17.err b/test/expected/test_sql_anno.sh_73814eca259e469b57bf7469787b91e8e8569b17.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_anno.sh_73814eca259e469b57bf7469787b91e8e8569b17.err diff --git a/test/expected/test_sql_anno.sh_73814eca259e469b57bf7469787b91e8e8569b17.out b/test/expected/test_sql_anno.sh_73814eca259e469b57bf7469787b91e8e8569b17.out new file mode 100644 index 0000000..8433625 --- /dev/null +++ b/test/expected/test_sql_anno.sh_73814eca259e469b57bf7469787b91e8e8569b17.out @@ -0,0 +1,7 @@ + SELECT (1 + 2) AS three + sql_keyword ------ + sql_number - + sql_oper - + sql_number - + sql_keyword -- + sql_ident ----- diff --git a/test/expected/test_sql_anno.sh_74bc5fb90a0c94a1a37d30a8e9254ea02c192a75.err b/test/expected/test_sql_anno.sh_74bc5fb90a0c94a1a37d30a8e9254ea02c192a75.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_anno.sh_74bc5fb90a0c94a1a37d30a8e9254ea02c192a75.err diff --git a/test/expected/test_sql_anno.sh_74bc5fb90a0c94a1a37d30a8e9254ea02c192a75.out b/test/expected/test_sql_anno.sh_74bc5fb90a0c94a1a37d30a8e9254ea02c192a75.out new file mode 100644 index 0000000..00a2e8a --- /dev/null +++ b/test/expected/test_sql_anno.sh_74bc5fb90a0c94a1a37d30a8e9254ea02c192a75.out @@ -0,0 +1,6 @@ + SELECT lower(abc) + sql_keyword ------ + sql_func --------- + sql_ident ----- + sql_ident --- +SELECT: Query the database and return zero or more rows of data. diff --git a/test/expected/test_sql_anno.sh_7b183037479528581e1eacace7b9acae41c5aa8e.err b/test/expected/test_sql_anno.sh_7b183037479528581e1eacace7b9acae41c5aa8e.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_anno.sh_7b183037479528581e1eacace7b9acae41c5aa8e.err diff --git a/test/expected/test_sql_anno.sh_7b183037479528581e1eacace7b9acae41c5aa8e.out b/test/expected/test_sql_anno.sh_7b183037479528581e1eacace7b9acae41c5aa8e.out new file mode 100644 index 0000000..7c92ed1 --- /dev/null +++ b/test/expected/test_sql_anno.sh_7b183037479528581e1eacace7b9acae41c5aa8e.out @@ -0,0 +1,12 @@ + SELECT instr(lower(abc), '123') FROM bar + sql_keyword ------ + sql_func ----------------------- + sql_ident ----- + sql_func --------- + sql_ident ----- + sql_ident --- + sql_comma - + sql_string ----- + sql_keyword ---- + sql_ident --- +SELECT: Query the database and return zero or more rows of data. diff --git a/test/expected/test_sql_anno.sh_96ebdc277ae760e1b6efae3195ff678654b04e52.err b/test/expected/test_sql_anno.sh_96ebdc277ae760e1b6efae3195ff678654b04e52.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_anno.sh_96ebdc277ae760e1b6efae3195ff678654b04e52.err diff --git a/test/expected/test_sql_anno.sh_96ebdc277ae760e1b6efae3195ff678654b04e52.out b/test/expected/test_sql_anno.sh_96ebdc277ae760e1b6efae3195ff678654b04e52.out new file mode 100644 index 0000000..dc88535 --- /dev/null +++ b/test/expected/test_sql_anno.sh_96ebdc277ae760e1b6efae3195ff678654b04e52.out @@ -0,0 +1,7 @@ + SELECT foo(bar()) + sql_keyword ------ + sql_func --------- + sql_ident --- + sql_func ---- + sql_ident --- +SELECT: Query the database and return zero or more rows of data. diff --git a/test/expected/test_sql_anno.sh_99da5994c8c90536dbdb1b8ad7dbfb41698a5e8c.err b/test/expected/test_sql_anno.sh_99da5994c8c90536dbdb1b8ad7dbfb41698a5e8c.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_anno.sh_99da5994c8c90536dbdb1b8ad7dbfb41698a5e8c.err diff --git a/test/expected/test_sql_anno.sh_99da5994c8c90536dbdb1b8ad7dbfb41698a5e8c.out b/test/expected/test_sql_anno.sh_99da5994c8c90536dbdb1b8ad7dbfb41698a5e8c.out new file mode 100644 index 0000000..5fa2f87 --- /dev/null +++ b/test/expected/test_sql_anno.sh_99da5994c8c90536dbdb1b8ad7dbfb41698a5e8c.out @@ -0,0 +1,10 @@ + SELECT instr(lower(abc), '123') + sql_keyword ------ + sql_func ----------------------- + sql_ident ----- + sql_func --------- + sql_ident ----- + sql_ident --- + sql_comma - + sql_string ----- +lower: Returns a copy of the given string with all ASCII characters converted to lower case. diff --git a/test/expected/test_sql_anno.sh_b1a2ddce48beb3e4b1e3ca4b4229a7c21b83b7c4.err b/test/expected/test_sql_anno.sh_b1a2ddce48beb3e4b1e3ca4b4229a7c21b83b7c4.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_anno.sh_b1a2ddce48beb3e4b1e3ca4b4229a7c21b83b7c4.err diff --git a/test/expected/test_sql_anno.sh_b1a2ddce48beb3e4b1e3ca4b4229a7c21b83b7c4.out b/test/expected/test_sql_anno.sh_b1a2ddce48beb3e4b1e3ca4b4229a7c21b83b7c4.out new file mode 100644 index 0000000..fc6d386 --- /dev/null +++ b/test/expected/test_sql_anno.sh_b1a2ddce48beb3e4b1e3ca4b4229a7c21b83b7c4.out @@ -0,0 +1,6 @@ + SELECT lower( abc ) + sql_keyword ------ + sql_func ---------------- + sql_ident ----- + sql_ident --- +lower: Returns a copy of the given string with all ASCII characters converted to lower case. diff --git a/test/expected/test_sql_anno.sh_be6839712d088fc7b31618ed90f8ce706c35a9c0.err b/test/expected/test_sql_anno.sh_be6839712d088fc7b31618ed90f8ce706c35a9c0.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_anno.sh_be6839712d088fc7b31618ed90f8ce706c35a9c0.err diff --git a/test/expected/test_sql_anno.sh_be6839712d088fc7b31618ed90f8ce706c35a9c0.out b/test/expected/test_sql_anno.sh_be6839712d088fc7b31618ed90f8ce706c35a9c0.out new file mode 100644 index 0000000..902a1db --- /dev/null +++ b/test/expected/test_sql_anno.sh_be6839712d088fc7b31618ed90f8ce706c35a9c0.out @@ -0,0 +1,7 @@ + SELECT (1.5 + 2.2) AS decim + sql_keyword ------ + sql_number --- + sql_oper - + sql_number --- + sql_keyword -- + sql_ident ----- diff --git a/test/expected/test_sql_anno.sh_c879ba94fdc1a099cf56bd33e5b3e9be65310036.err b/test/expected/test_sql_anno.sh_c879ba94fdc1a099cf56bd33e5b3e9be65310036.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_anno.sh_c879ba94fdc1a099cf56bd33e5b3e9be65310036.err diff --git a/test/expected/test_sql_anno.sh_c879ba94fdc1a099cf56bd33e5b3e9be65310036.out b/test/expected/test_sql_anno.sh_c879ba94fdc1a099cf56bd33e5b3e9be65310036.out new file mode 100644 index 0000000..c09afc3 --- /dev/null +++ b/test/expected/test_sql_anno.sh_c879ba94fdc1a099cf56bd33e5b3e9be65310036.out @@ -0,0 +1,10 @@ + SELECT instr(lower(abc), '123') + sql_keyword ------ + sql_func ----------------------- + sql_ident ----- + sql_func --------- + sql_ident ----- + sql_ident --- + sql_comma - + sql_string ----- +instr: 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 diff --git a/test/expected/test_sql_anno.sh_c909647ed0e585002074f55c946f3033df1815b2.err b/test/expected/test_sql_anno.sh_c909647ed0e585002074f55c946f3033df1815b2.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_anno.sh_c909647ed0e585002074f55c946f3033df1815b2.err diff --git a/test/expected/test_sql_anno.sh_c909647ed0e585002074f55c946f3033df1815b2.out b/test/expected/test_sql_anno.sh_c909647ed0e585002074f55c946f3033df1815b2.out new file mode 100644 index 0000000..304d8dc --- /dev/null +++ b/test/expected/test_sql_anno.sh_c909647ed0e585002074f55c946f3033df1815b2.out @@ -0,0 +1,6 @@ + SELECT foo(bar()) + sql_keyword ------ + sql_func --------- + sql_ident --- + sql_func ---- + sql_ident --- diff --git a/test/expected/test_sql_anno.sh_ce0506ee7a12eb0f7b970522cc6a79180ecb20cc.err b/test/expected/test_sql_anno.sh_ce0506ee7a12eb0f7b970522cc6a79180ecb20cc.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_anno.sh_ce0506ee7a12eb0f7b970522cc6a79180ecb20cc.err diff --git a/test/expected/test_sql_anno.sh_ce0506ee7a12eb0f7b970522cc6a79180ecb20cc.out b/test/expected/test_sql_anno.sh_ce0506ee7a12eb0f7b970522cc6a79180ecb20cc.out new file mode 100644 index 0000000..654e434 --- /dev/null +++ b/test/expected/test_sql_anno.sh_ce0506ee7a12eb0f7b970522cc6a79180ecb20cc.out @@ -0,0 +1,11 @@ + SELECT * from vmw_log, regexp_capture(log_body, '--> /SessionStats/SessionPool/Session/(?<line>[abc]+)') + sql_keyword ------ + sql_oper - + sql_keyword ---- + sql_ident ------- + sql_comma - + sql_func -------------------------------------------------------------------------------- + sql_ident -------------- + sql_ident -------- + sql_comma - + sql_string ------------------------------------------------------- diff --git a/test/expected/test_sql_anno.sh_f3c64191d6016767a5857fbb1bad26548586bb96.err b/test/expected/test_sql_anno.sh_f3c64191d6016767a5857fbb1bad26548586bb96.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_anno.sh_f3c64191d6016767a5857fbb1bad26548586bb96.err diff --git a/test/expected/test_sql_anno.sh_f3c64191d6016767a5857fbb1bad26548586bb96.out b/test/expected/test_sql_anno.sh_f3c64191d6016767a5857fbb1bad26548586bb96.out new file mode 100644 index 0000000..2ee5ee2 --- /dev/null +++ b/test/expected/test_sql_anno.sh_f3c64191d6016767a5857fbb1bad26548586bb96.out @@ -0,0 +1,10 @@ + SELECT * FROM (SELECT foo, bar FROM baz) + sql_keyword ------ + sql_oper - + sql_keyword ---- + sql_keyword ------ + sql_ident --- + sql_comma - + sql_ident --- + sql_keyword ---- + sql_ident --- diff --git a/test/expected/test_sql_coll_func.sh_077cab6e271c914daf5b221cc512853077891f35.err b/test/expected/test_sql_coll_func.sh_077cab6e271c914daf5b221cc512853077891f35.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_coll_func.sh_077cab6e271c914daf5b221cc512853077891f35.err diff --git a/test/expected/test_sql_coll_func.sh_077cab6e271c914daf5b221cc512853077891f35.out b/test/expected/test_sql_coll_func.sh_077cab6e271c914daf5b221cc512853077891f35.out new file mode 100644 index 0000000..36b0c2b --- /dev/null +++ b/test/expected/test_sql_coll_func.sh_077cab6e271c914daf5b221cc512853077891f35.out @@ -0,0 +1,2 @@ +Row 0: + Column 'fe80::a85f:80b4:5cbe:8691' = 'fe80:0000:0000:0000:a85f:80b4:5cbe:8691' collate ipaddress: 1 diff --git a/test/expected/test_sql_coll_func.sh_0ce56741d3c34af274c8ddb4b90c4e5749d05971.err b/test/expected/test_sql_coll_func.sh_0ce56741d3c34af274c8ddb4b90c4e5749d05971.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_coll_func.sh_0ce56741d3c34af274c8ddb4b90c4e5749d05971.err diff --git a/test/expected/test_sql_coll_func.sh_0ce56741d3c34af274c8ddb4b90c4e5749d05971.out b/test/expected/test_sql_coll_func.sh_0ce56741d3c34af274c8ddb4b90c4e5749d05971.out new file mode 100644 index 0000000..cf84c47 --- /dev/null +++ b/test/expected/test_sql_coll_func.sh_0ce56741d3c34af274c8ddb4b90c4e5749d05971.out @@ -0,0 +1,2 @@ +Row 0: + Column 'info' collate loglevel between 'trace' and 'fatal': 1 diff --git a/test/expected/test_sql_coll_func.sh_180ad44fe073cc9642da642af1f442adfd98ec62.err b/test/expected/test_sql_coll_func.sh_180ad44fe073cc9642da642af1f442adfd98ec62.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_coll_func.sh_180ad44fe073cc9642da642af1f442adfd98ec62.err diff --git a/test/expected/test_sql_coll_func.sh_180ad44fe073cc9642da642af1f442adfd98ec62.out b/test/expected/test_sql_coll_func.sh_180ad44fe073cc9642da642af1f442adfd98ec62.out new file mode 100644 index 0000000..187dc99 --- /dev/null +++ b/test/expected/test_sql_coll_func.sh_180ad44fe073cc9642da642af1f442adfd98ec62.out @@ -0,0 +1,2 @@ +Row 0: + Column 'file10.txt' < 'file2.txt' collate naturalcase: 0 diff --git a/test/expected/test_sql_coll_func.sh_2230714a0b2ab6aca9ddfe686734f313cef5a96b.err b/test/expected/test_sql_coll_func.sh_2230714a0b2ab6aca9ddfe686734f313cef5a96b.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_coll_func.sh_2230714a0b2ab6aca9ddfe686734f313cef5a96b.err diff --git a/test/expected/test_sql_coll_func.sh_2230714a0b2ab6aca9ddfe686734f313cef5a96b.out b/test/expected/test_sql_coll_func.sh_2230714a0b2ab6aca9ddfe686734f313cef5a96b.out new file mode 100644 index 0000000..4ecbd26 --- /dev/null +++ b/test/expected/test_sql_coll_func.sh_2230714a0b2ab6aca9ddfe686734f313cef5a96b.out @@ -0,0 +1,2 @@ +Row 0: + Column '::ffff:192.168.1.10' = '192.168.1.10' collate ipaddress: 1 diff --git a/test/expected/test_sql_coll_func.sh_68515cfd0a50880f6dfc8f9810c9e761493ebb12.err b/test/expected/test_sql_coll_func.sh_68515cfd0a50880f6dfc8f9810c9e761493ebb12.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_coll_func.sh_68515cfd0a50880f6dfc8f9810c9e761493ebb12.err diff --git a/test/expected/test_sql_coll_func.sh_68515cfd0a50880f6dfc8f9810c9e761493ebb12.out b/test/expected/test_sql_coll_func.sh_68515cfd0a50880f6dfc8f9810c9e761493ebb12.out new file mode 100644 index 0000000..4bac183 --- /dev/null +++ b/test/expected/test_sql_coll_func.sh_68515cfd0a50880f6dfc8f9810c9e761493ebb12.out @@ -0,0 +1,2 @@ +Row 0: + Column '192.168.1.10' < '192.168.1.2' collate ipaddress: 0 diff --git a/test/expected/test_sql_coll_func.sh_6de2a86c53883ec4430b98edd06b0c0cdf23e741.err b/test/expected/test_sql_coll_func.sh_6de2a86c53883ec4430b98edd06b0c0cdf23e741.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_coll_func.sh_6de2a86c53883ec4430b98edd06b0c0cdf23e741.err diff --git a/test/expected/test_sql_coll_func.sh_6de2a86c53883ec4430b98edd06b0c0cdf23e741.out b/test/expected/test_sql_coll_func.sh_6de2a86c53883ec4430b98edd06b0c0cdf23e741.out new file mode 100644 index 0000000..90b4acb --- /dev/null +++ b/test/expected/test_sql_coll_func.sh_6de2a86c53883ec4430b98edd06b0c0cdf23e741.out @@ -0,0 +1,2 @@ +Row 0: + Column '192.168.1.10' < '192.168.1.2': 1 diff --git a/test/expected/test_sql_coll_func.sh_918178c6dd9d70d0432ededfde5af5e53c094385.err b/test/expected/test_sql_coll_func.sh_918178c6dd9d70d0432ededfde5af5e53c094385.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_coll_func.sh_918178c6dd9d70d0432ededfde5af5e53c094385.err diff --git a/test/expected/test_sql_coll_func.sh_918178c6dd9d70d0432ededfde5af5e53c094385.out b/test/expected/test_sql_coll_func.sh_918178c6dd9d70d0432ededfde5af5e53c094385.out new file mode 100644 index 0000000..2f6aec0 --- /dev/null +++ b/test/expected/test_sql_coll_func.sh_918178c6dd9d70d0432ededfde5af5e53c094385.out @@ -0,0 +1,2 @@ +Row 0: + Column '192.168.1.10' < '192.168.1.12' collate ipaddress: 1 diff --git a/test/expected/test_sql_coll_func.sh_c76a24a209987e4c668c87588c12b8f34294b144.err b/test/expected/test_sql_coll_func.sh_c76a24a209987e4c668c87588c12b8f34294b144.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_coll_func.sh_c76a24a209987e4c668c87588c12b8f34294b144.err diff --git a/test/expected/test_sql_coll_func.sh_c76a24a209987e4c668c87588c12b8f34294b144.out b/test/expected/test_sql_coll_func.sh_c76a24a209987e4c668c87588c12b8f34294b144.out new file mode 100644 index 0000000..913c6b3 --- /dev/null +++ b/test/expected/test_sql_coll_func.sh_c76a24a209987e4c668c87588c12b8f34294b144.out @@ -0,0 +1,2 @@ +Row 0: + Column '' < '192.168.1.2' collate ipaddress: 1 diff --git a/test/expected/test_sql_coll_func.sh_cacb045d2bce6dc298c4da3d96bdc34dab2404df.err b/test/expected/test_sql_coll_func.sh_cacb045d2bce6dc298c4da3d96bdc34dab2404df.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_coll_func.sh_cacb045d2bce6dc298c4da3d96bdc34dab2404df.err diff --git a/test/expected/test_sql_coll_func.sh_cacb045d2bce6dc298c4da3d96bdc34dab2404df.out b/test/expected/test_sql_coll_func.sh_cacb045d2bce6dc298c4da3d96bdc34dab2404df.out new file mode 100644 index 0000000..2718d82 --- /dev/null +++ b/test/expected/test_sql_coll_func.sh_cacb045d2bce6dc298c4da3d96bdc34dab2404df.out @@ -0,0 +1,2 @@ +Row 0: + Column 'file10.txt' < 'file2.txt': 1 diff --git a/test/expected/test_sql_coll_func.sh_cae4bc239c924bbc05a0b099b63f0e3af7560976.err b/test/expected/test_sql_coll_func.sh_cae4bc239c924bbc05a0b099b63f0e3af7560976.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_coll_func.sh_cae4bc239c924bbc05a0b099b63f0e3af7560976.err diff --git a/test/expected/test_sql_coll_func.sh_cae4bc239c924bbc05a0b099b63f0e3af7560976.out b/test/expected/test_sql_coll_func.sh_cae4bc239c924bbc05a0b099b63f0e3af7560976.out new file mode 100644 index 0000000..5b48b4e --- /dev/null +++ b/test/expected/test_sql_coll_func.sh_cae4bc239c924bbc05a0b099b63f0e3af7560976.out @@ -0,0 +1,2 @@ +Row 0: + Column 'w' < 'e' collate loglevel: 1 diff --git a/test/expected/test_sql_coll_func.sh_d4e3c9f7a38458726900731d2b71c104d591ef14.err b/test/expected/test_sql_coll_func.sh_d4e3c9f7a38458726900731d2b71c104d591ef14.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_coll_func.sh_d4e3c9f7a38458726900731d2b71c104d591ef14.err diff --git a/test/expected/test_sql_coll_func.sh_d4e3c9f7a38458726900731d2b71c104d591ef14.out b/test/expected/test_sql_coll_func.sh_d4e3c9f7a38458726900731d2b71c104d591ef14.out new file mode 100644 index 0000000..bcfa7cb --- /dev/null +++ b/test/expected/test_sql_coll_func.sh_d4e3c9f7a38458726900731d2b71c104d591ef14.out @@ -0,0 +1,2 @@ +Row 0: + Column 'h9.example.com' < 'h10.example.com' collate ipaddress: 1 diff --git a/test/expected/test_sql_coll_func.sh_d5c8f7ab91c3dbe46add7e08f532b17797d9975c.err b/test/expected/test_sql_coll_func.sh_d5c8f7ab91c3dbe46add7e08f532b17797d9975c.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_coll_func.sh_d5c8f7ab91c3dbe46add7e08f532b17797d9975c.err diff --git a/test/expected/test_sql_coll_func.sh_d5c8f7ab91c3dbe46add7e08f532b17797d9975c.out b/test/expected/test_sql_coll_func.sh_d5c8f7ab91c3dbe46add7e08f532b17797d9975c.out new file mode 100644 index 0000000..945e0ee --- /dev/null +++ b/test/expected/test_sql_coll_func.sh_d5c8f7ab91c3dbe46add7e08f532b17797d9975c.out @@ -0,0 +1,2 @@ +Row 0: + Column '192.168.1.2' > '' collate ipaddress: 1 diff --git a/test/expected/test_sql_coll_func.sh_eb2c424733ce978d1b6d1dcb93d6e45af7c8fa96.err b/test/expected/test_sql_coll_func.sh_eb2c424733ce978d1b6d1dcb93d6e45af7c8fa96.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_coll_func.sh_eb2c424733ce978d1b6d1dcb93d6e45af7c8fa96.err diff --git a/test/expected/test_sql_coll_func.sh_eb2c424733ce978d1b6d1dcb93d6e45af7c8fa96.out b/test/expected/test_sql_coll_func.sh_eb2c424733ce978d1b6d1dcb93d6e45af7c8fa96.out new file mode 100644 index 0000000..d6a7338 --- /dev/null +++ b/test/expected/test_sql_coll_func.sh_eb2c424733ce978d1b6d1dcb93d6e45af7c8fa96.out @@ -0,0 +1,2 @@ +Row 0: + Column 'e' < 'w' collate loglevel: 0 diff --git a/test/expected/test_sql_coll_func.sh_f045e94d921bfcfbded83ee681bf11445a99ff6d.err b/test/expected/test_sql_coll_func.sh_f045e94d921bfcfbded83ee681bf11445a99ff6d.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_coll_func.sh_f045e94d921bfcfbded83ee681bf11445a99ff6d.err diff --git a/test/expected/test_sql_coll_func.sh_f045e94d921bfcfbded83ee681bf11445a99ff6d.out b/test/expected/test_sql_coll_func.sh_f045e94d921bfcfbded83ee681bf11445a99ff6d.out new file mode 100644 index 0000000..fc31b19 --- /dev/null +++ b/test/expected/test_sql_coll_func.sh_f045e94d921bfcfbded83ee681bf11445a99ff6d.out @@ -0,0 +1,2 @@ +Row 0: + Column '192.168.1.2' < 'fe80::a85f:80b4:5cbe:8691' collate ipaddress: 1 diff --git a/test/expected/test_sql_fs_func.sh_109ff42de817b56a9082f605f63af71c0db8c9d7.err b/test/expected/test_sql_fs_func.sh_109ff42de817b56a9082f605f63af71c0db8c9d7.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_109ff42de817b56a9082f605f63af71c0db8c9d7.err diff --git a/test/expected/test_sql_fs_func.sh_109ff42de817b56a9082f605f63af71c0db8c9d7.out b/test/expected/test_sql_fs_func.sh_109ff42de817b56a9082f605f63af71c0db8c9d7.out new file mode 100644 index 0000000..b95b567 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_109ff42de817b56a9082f605f63af71c0db8c9d7.out @@ -0,0 +1,2 @@ +Row 0: + Column joinpath(): (null) diff --git a/test/expected/test_sql_fs_func.sh_17b09f79bfcac1762153ec9650fb1e545a24d8a3.err b/test/expected/test_sql_fs_func.sh_17b09f79bfcac1762153ec9650fb1e545a24d8a3.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_17b09f79bfcac1762153ec9650fb1e545a24d8a3.err diff --git a/test/expected/test_sql_fs_func.sh_17b09f79bfcac1762153ec9650fb1e545a24d8a3.out b/test/expected/test_sql_fs_func.sh_17b09f79bfcac1762153ec9650fb1e545a24d8a3.out new file mode 100644 index 0000000..cf84c59 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_17b09f79bfcac1762153ec9650fb1e545a24d8a3.out @@ -0,0 +1,2 @@ +Row 0: + Column basename('/'): / diff --git a/test/expected/test_sql_fs_func.sh_18ddc138b263dd06f3fe81fec05bc4330caffef7.err b/test/expected/test_sql_fs_func.sh_18ddc138b263dd06f3fe81fec05bc4330caffef7.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_18ddc138b263dd06f3fe81fec05bc4330caffef7.err diff --git a/test/expected/test_sql_fs_func.sh_18ddc138b263dd06f3fe81fec05bc4330caffef7.out b/test/expected/test_sql_fs_func.sh_18ddc138b263dd06f3fe81fec05bc4330caffef7.out new file mode 100644 index 0000000..7271fd2 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_18ddc138b263dd06f3fe81fec05bc4330caffef7.out @@ -0,0 +1,2 @@ +Row 0: + Column basename('/foo'): foo diff --git a/test/expected/test_sql_fs_func.sh_20a76db446a0a558dcbdf41033f97d4a22ca1bfa.err b/test/expected/test_sql_fs_func.sh_20a76db446a0a558dcbdf41033f97d4a22ca1bfa.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_20a76db446a0a558dcbdf41033f97d4a22ca1bfa.err diff --git a/test/expected/test_sql_fs_func.sh_20a76db446a0a558dcbdf41033f97d4a22ca1bfa.out b/test/expected/test_sql_fs_func.sh_20a76db446a0a558dcbdf41033f97d4a22ca1bfa.out new file mode 100644 index 0000000..bace683 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_20a76db446a0a558dcbdf41033f97d4a22ca1bfa.out @@ -0,0 +1,2 @@ +Row 0: + Column dirname('foo'): . diff --git a/test/expected/test_sql_fs_func.sh_2c3f66e78deb8721b1d1fe5a787e9958895401d7.err b/test/expected/test_sql_fs_func.sh_2c3f66e78deb8721b1d1fe5a787e9958895401d7.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_2c3f66e78deb8721b1d1fe5a787e9958895401d7.err diff --git a/test/expected/test_sql_fs_func.sh_2c3f66e78deb8721b1d1fe5a787e9958895401d7.out b/test/expected/test_sql_fs_func.sh_2c3f66e78deb8721b1d1fe5a787e9958895401d7.out new file mode 100644 index 0000000..983fcf5 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_2c3f66e78deb8721b1d1fe5a787e9958895401d7.out @@ -0,0 +1,2 @@ +Row 0: + Column dirname('/foo//'): / diff --git a/test/expected/test_sql_fs_func.sh_3ed11101a413e47c3dfe219557b7a6df04a64253.err b/test/expected/test_sql_fs_func.sh_3ed11101a413e47c3dfe219557b7a6df04a64253.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_3ed11101a413e47c3dfe219557b7a6df04a64253.err diff --git a/test/expected/test_sql_fs_func.sh_3ed11101a413e47c3dfe219557b7a6df04a64253.out b/test/expected/test_sql_fs_func.sh_3ed11101a413e47c3dfe219557b7a6df04a64253.out new file mode 100644 index 0000000..77491a9 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_3ed11101a413e47c3dfe219557b7a6df04a64253.out @@ -0,0 +1,2 @@ +Row 0: + Column dirname('foo//'): . diff --git a/test/expected/test_sql_fs_func.sh_469380561dccd79c7249562067107c330838eaad.err b/test/expected/test_sql_fs_func.sh_469380561dccd79c7249562067107c330838eaad.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_469380561dccd79c7249562067107c330838eaad.err diff --git a/test/expected/test_sql_fs_func.sh_469380561dccd79c7249562067107c330838eaad.out b/test/expected/test_sql_fs_func.sh_469380561dccd79c7249562067107c330838eaad.out new file mode 100644 index 0000000..6e4accc --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_469380561dccd79c7249562067107c330838eaad.out @@ -0,0 +1,2 @@ +Row 0: + Column dirname(''): . diff --git a/test/expected/test_sql_fs_func.sh_54b004f301907860d360434b37fd6c81fcc12f99.err b/test/expected/test_sql_fs_func.sh_54b004f301907860d360434b37fd6c81fcc12f99.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_54b004f301907860d360434b37fd6c81fcc12f99.err diff --git a/test/expected/test_sql_fs_func.sh_54b004f301907860d360434b37fd6c81fcc12f99.out b/test/expected/test_sql_fs_func.sh_54b004f301907860d360434b37fd6c81fcc12f99.out new file mode 100644 index 0000000..a2f9057 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_54b004f301907860d360434b37fd6c81fcc12f99.out @@ -0,0 +1,2 @@ +Row 0: + Column basename('foo'): foo diff --git a/test/expected/test_sql_fs_func.sh_73df81c6889d1f06fb3f3b6bf30c6046b3f52c8b.err b/test/expected/test_sql_fs_func.sh_73df81c6889d1f06fb3f3b6bf30c6046b3f52c8b.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_73df81c6889d1f06fb3f3b6bf30c6046b3f52c8b.err diff --git a/test/expected/test_sql_fs_func.sh_73df81c6889d1f06fb3f3b6bf30c6046b3f52c8b.out b/test/expected/test_sql_fs_func.sh_73df81c6889d1f06fb3f3b6bf30c6046b3f52c8b.out new file mode 100644 index 0000000..49e73dc --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_73df81c6889d1f06fb3f3b6bf30c6046b3f52c8b.out @@ -0,0 +1,2 @@ +Row 0: + Column joinpath('foo', 'bar', 'baz', '/root'): /root diff --git a/test/expected/test_sql_fs_func.sh_74ca242a126316bcb82ccefd9369f9e43b7fd2e1.err b/test/expected/test_sql_fs_func.sh_74ca242a126316bcb82ccefd9369f9e43b7fd2e1.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_74ca242a126316bcb82ccefd9369f9e43b7fd2e1.err diff --git a/test/expected/test_sql_fs_func.sh_74ca242a126316bcb82ccefd9369f9e43b7fd2e1.out b/test/expected/test_sql_fs_func.sh_74ca242a126316bcb82ccefd9369f9e43b7fd2e1.out new file mode 100644 index 0000000..8a5ccfc --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_74ca242a126316bcb82ccefd9369f9e43b7fd2e1.out @@ -0,0 +1,2 @@ +Row 0: + Column joinpath('foo'): foo diff --git a/test/expected/test_sql_fs_func.sh_7b116cb0ab7a28b866e0d2b80fe8ef0cd25f2aa3.err b/test/expected/test_sql_fs_func.sh_7b116cb0ab7a28b866e0d2b80fe8ef0cd25f2aa3.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_7b116cb0ab7a28b866e0d2b80fe8ef0cd25f2aa3.err diff --git a/test/expected/test_sql_fs_func.sh_7b116cb0ab7a28b866e0d2b80fe8ef0cd25f2aa3.out b/test/expected/test_sql_fs_func.sh_7b116cb0ab7a28b866e0d2b80fe8ef0cd25f2aa3.out new file mode 100644 index 0000000..b6bb6f9 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_7b116cb0ab7a28b866e0d2b80fe8ef0cd25f2aa3.out @@ -0,0 +1,2 @@ +Row 0: + Column dirname('/'): / diff --git a/test/expected/test_sql_fs_func.sh_7b5d7dd8d0003ab83e3e5cb0a5ce802fe9a0e3b3.err b/test/expected/test_sql_fs_func.sh_7b5d7dd8d0003ab83e3e5cb0a5ce802fe9a0e3b3.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_7b5d7dd8d0003ab83e3e5cb0a5ce802fe9a0e3b3.err diff --git a/test/expected/test_sql_fs_func.sh_7b5d7dd8d0003ab83e3e5cb0a5ce802fe9a0e3b3.out b/test/expected/test_sql_fs_func.sh_7b5d7dd8d0003ab83e3e5cb0a5ce802fe9a0e3b3.out new file mode 100644 index 0000000..fcf9b4c --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_7b5d7dd8d0003ab83e3e5cb0a5ce802fe9a0e3b3.out @@ -0,0 +1,2 @@ +Row 0: + Column joinpath('foo', 'bar', 'baz'): foo/bar/baz diff --git a/test/expected/test_sql_fs_func.sh_917ffde411c1425e8a6addae0170900dcd553986.err b/test/expected/test_sql_fs_func.sh_917ffde411c1425e8a6addae0170900dcd553986.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_917ffde411c1425e8a6addae0170900dcd553986.err diff --git a/test/expected/test_sql_fs_func.sh_917ffde411c1425e8a6addae0170900dcd553986.out b/test/expected/test_sql_fs_func.sh_917ffde411c1425e8a6addae0170900dcd553986.out new file mode 100644 index 0000000..864b02c --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_917ffde411c1425e8a6addae0170900dcd553986.out @@ -0,0 +1,2 @@ +Row 0: + Column dirname('/foo'): / diff --git a/test/expected/test_sql_fs_func.sh_9e2c0a90ce333365ff7354375f2c609bc27135c8.err b/test/expected/test_sql_fs_func.sh_9e2c0a90ce333365ff7354375f2c609bc27135c8.err new file mode 100644 index 0000000..b1d8939 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_9e2c0a90ce333365ff7354375f2c609bc27135c8.err @@ -0,0 +1 @@ +error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"call to readlink(path) failed","attrs":[{"start":8,"end":16,"type":"role","value":46},{"start":17,"end":21,"type":"role","value":45},{"start":8,"end":22,"type":"role","value":59}]},"reason":{"str":"unable to stat path: non-existent-link -- No such file or directory","attrs":[]},"snippets":[],"help":{"str":"","attrs":[]}} diff --git a/test/expected/test_sql_fs_func.sh_9e2c0a90ce333365ff7354375f2c609bc27135c8.out b/test/expected/test_sql_fs_func.sh_9e2c0a90ce333365ff7354375f2c609bc27135c8.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_9e2c0a90ce333365ff7354375f2c609bc27135c8.out diff --git a/test/expected/test_sql_fs_func.sh_a247b137e71124e496f1beab56c7fe85717c4199.err b/test/expected/test_sql_fs_func.sh_a247b137e71124e496f1beab56c7fe85717c4199.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_a247b137e71124e496f1beab56c7fe85717c4199.err diff --git a/test/expected/test_sql_fs_func.sh_a247b137e71124e496f1beab56c7fe85717c4199.out b/test/expected/test_sql_fs_func.sh_a247b137e71124e496f1beab56c7fe85717c4199.out new file mode 100644 index 0000000..2f75397 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_a247b137e71124e496f1beab56c7fe85717c4199.out @@ -0,0 +1,2 @@ +Row 0: + Column basename(''): . diff --git a/test/expected/test_sql_fs_func.sh_b66242975fd6ecb7260cd96ac29accaf4f4af6ae.err b/test/expected/test_sql_fs_func.sh_b66242975fd6ecb7260cd96ac29accaf4f4af6ae.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_b66242975fd6ecb7260cd96ac29accaf4f4af6ae.err diff --git a/test/expected/test_sql_fs_func.sh_b66242975fd6ecb7260cd96ac29accaf4f4af6ae.out b/test/expected/test_sql_fs_func.sh_b66242975fd6ecb7260cd96ac29accaf4f4af6ae.out new file mode 100644 index 0000000..71c2d31 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_b66242975fd6ecb7260cd96ac29accaf4f4af6ae.out @@ -0,0 +1,2 @@ +Row 0: + Column dirname('foo///'): . diff --git a/test/expected/test_sql_fs_func.sh_c5d78cfbf5594cc27590277353c08a92e2497622.err b/test/expected/test_sql_fs_func.sh_c5d78cfbf5594cc27590277353c08a92e2497622.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_c5d78cfbf5594cc27590277353c08a92e2497622.err diff --git a/test/expected/test_sql_fs_func.sh_c5d78cfbf5594cc27590277353c08a92e2497622.out b/test/expected/test_sql_fs_func.sh_c5d78cfbf5594cc27590277353c08a92e2497622.out new file mode 100644 index 0000000..cfb2e26 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_c5d78cfbf5594cc27590277353c08a92e2497622.out @@ -0,0 +1,2 @@ +Row 0: + Column basename('/foo/'): foo diff --git a/test/expected/test_sql_fs_func.sh_cc402803bf14ee3673089c575f1af87220cb6a72.err b/test/expected/test_sql_fs_func.sh_cc402803bf14ee3673089c575f1af87220cb6a72.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_cc402803bf14ee3673089c575f1af87220cb6a72.err diff --git a/test/expected/test_sql_fs_func.sh_cc402803bf14ee3673089c575f1af87220cb6a72.out b/test/expected/test_sql_fs_func.sh_cc402803bf14ee3673089c575f1af87220cb6a72.out new file mode 100644 index 0000000..46a1c9c --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_cc402803bf14ee3673089c575f1af87220cb6a72.out @@ -0,0 +1,2 @@ +Row 0: + Column basename('foo/bar'): bar diff --git a/test/expected/test_sql_fs_func.sh_cf307d87104e99a1858bb7c4f28ea3068340f188.err b/test/expected/test_sql_fs_func.sh_cf307d87104e99a1858bb7c4f28ea3068340f188.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_cf307d87104e99a1858bb7c4f28ea3068340f188.err diff --git a/test/expected/test_sql_fs_func.sh_cf307d87104e99a1858bb7c4f28ea3068340f188.out b/test/expected/test_sql_fs_func.sh_cf307d87104e99a1858bb7c4f28ea3068340f188.out new file mode 100644 index 0000000..01ff27e --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_cf307d87104e99a1858bb7c4f28ea3068340f188.out @@ -0,0 +1,2 @@ +Row 0: + Column basename('/foo///'): foo diff --git a/test/expected/test_sql_fs_func.sh_cf670dfa1ae7ac5a074baa642068c6d26ac8e096.err b/test/expected/test_sql_fs_func.sh_cf670dfa1ae7ac5a074baa642068c6d26ac8e096.err new file mode 100644 index 0000000..0316795 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_cf670dfa1ae7ac5a074baa642068c6d26ac8e096.err @@ -0,0 +1 @@ +error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"call to realpath(path) failed","attrs":[{"start":8,"end":16,"type":"role","value":46},{"start":17,"end":21,"type":"role","value":45},{"start":8,"end":22,"type":"role","value":59}]},"reason":{"str":"Could not get real path for non-existent-path -- No such file or directory","attrs":[]},"snippets":[],"help":{"str":"","attrs":[]}} diff --git a/test/expected/test_sql_fs_func.sh_cf670dfa1ae7ac5a074baa642068c6d26ac8e096.out b/test/expected/test_sql_fs_func.sh_cf670dfa1ae7ac5a074baa642068c6d26ac8e096.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_cf670dfa1ae7ac5a074baa642068c6d26ac8e096.out diff --git a/test/expected/test_sql_fs_func.sh_d51ad77cd67a2a691838c9d95142638df1c07360.err b/test/expected/test_sql_fs_func.sh_d51ad77cd67a2a691838c9d95142638df1c07360.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_d51ad77cd67a2a691838c9d95142638df1c07360.err diff --git a/test/expected/test_sql_fs_func.sh_d51ad77cd67a2a691838c9d95142638df1c07360.out b/test/expected/test_sql_fs_func.sh_d51ad77cd67a2a691838c9d95142638df1c07360.out new file mode 100644 index 0000000..0d744ab --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_d51ad77cd67a2a691838c9d95142638df1c07360.out @@ -0,0 +1,2 @@ +Row 0: + Column dirname('/foo/bar'): /foo diff --git a/test/expected/test_sql_fs_func.sh_e24cf3f35643f945392e7d7a4ca82fea98b4519e.err b/test/expected/test_sql_fs_func.sh_e24cf3f35643f945392e7d7a4ca82fea98b4519e.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_e24cf3f35643f945392e7d7a4ca82fea98b4519e.err diff --git a/test/expected/test_sql_fs_func.sh_e24cf3f35643f945392e7d7a4ca82fea98b4519e.out b/test/expected/test_sql_fs_func.sh_e24cf3f35643f945392e7d7a4ca82fea98b4519e.out new file mode 100644 index 0000000..6306be6 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_e24cf3f35643f945392e7d7a4ca82fea98b4519e.out @@ -0,0 +1,2 @@ +Row 0: + Column basename('//'): / diff --git a/test/expected/test_sql_fs_func.sh_f31f240313ddec806aa6f353ceed707dfd9aaf16.err b/test/expected/test_sql_fs_func.sh_f31f240313ddec806aa6f353ceed707dfd9aaf16.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_f31f240313ddec806aa6f353ceed707dfd9aaf16.err diff --git a/test/expected/test_sql_fs_func.sh_f31f240313ddec806aa6f353ceed707dfd9aaf16.out b/test/expected/test_sql_fs_func.sh_f31f240313ddec806aa6f353ceed707dfd9aaf16.out new file mode 100644 index 0000000..00c5d02 --- /dev/null +++ b/test/expected/test_sql_fs_func.sh_f31f240313ddec806aa6f353ceed707dfd9aaf16.out @@ -0,0 +1,2 @@ +Row 0: + Column readlink('sql_fs_readlink_test.lnk'): sql_fs_readlink_test diff --git a/test/expected/test_sql_indexes.sh_026dd9752b6101e0791689d3a2026f7e517e36f5.err b/test/expected/test_sql_indexes.sh_026dd9752b6101e0791689d3a2026f7e517e36f5.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_indexes.sh_026dd9752b6101e0791689d3a2026f7e517e36f5.err diff --git a/test/expected/test_sql_indexes.sh_026dd9752b6101e0791689d3a2026f7e517e36f5.out b/test/expected/test_sql_indexes.sh_026dd9752b6101e0791689d3a2026f7e517e36f5.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_indexes.sh_026dd9752b6101e0791689d3a2026f7e517e36f5.out diff --git a/test/expected/test_sql_indexes.sh_1614ebb5e2e83bab11023354dea8a0885ddf64b4.err b/test/expected/test_sql_indexes.sh_1614ebb5e2e83bab11023354dea8a0885ddf64b4.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_indexes.sh_1614ebb5e2e83bab11023354dea8a0885ddf64b4.err diff --git a/test/expected/test_sql_indexes.sh_1614ebb5e2e83bab11023354dea8a0885ddf64b4.out b/test/expected/test_sql_indexes.sh_1614ebb5e2e83bab11023354dea8a0885ddf64b4.out new file mode 100644 index 0000000..7179021 --- /dev/null +++ b/test/expected/test_sql_indexes.sh_1614ebb5e2e83bab11023354dea8a0885ddf64b4.out @@ -0,0 +1,3 @@ +[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 diff --git a/test/expected/test_sql_indexes.sh_541a8e35f34a206e340a3880128b6ce137847872.err b/test/expected/test_sql_indexes.sh_541a8e35f34a206e340a3880128b6ce137847872.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_indexes.sh_541a8e35f34a206e340a3880128b6ce137847872.err diff --git a/test/expected/test_sql_indexes.sh_541a8e35f34a206e340a3880128b6ce137847872.out b/test/expected/test_sql_indexes.sh_541a8e35f34a206e340a3880128b6ce137847872.out new file mode 100644 index 0000000..5467779 --- /dev/null +++ b/test/expected/test_sql_indexes.sh_541a8e35f34a206e340a3880128b6ce137847872.out @@ -0,0 +1,5 @@ +[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 diff --git a/test/expected/test_sql_indexes.sh_59a1497c13a5e09bc8f95ef02552b2835ebea6e5.err b/test/expected/test_sql_indexes.sh_59a1497c13a5e09bc8f95ef02552b2835ebea6e5.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_indexes.sh_59a1497c13a5e09bc8f95ef02552b2835ebea6e5.err diff --git a/test/expected/test_sql_indexes.sh_59a1497c13a5e09bc8f95ef02552b2835ebea6e5.out b/test/expected/test_sql_indexes.sh_59a1497c13a5e09bc8f95ef02552b2835ebea6e5.out new file mode 100644 index 0000000..823c4d0 --- /dev/null +++ b/test/expected/test_sql_indexes.sh_59a1497c13a5e09bc8f95ef02552b2835ebea6e5.out @@ -0,0 +1,2 @@ +[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 diff --git a/test/expected/test_sql_indexes.sh_69fd19d56a8cd1fc9c7eb9351270eabb491f8233.err b/test/expected/test_sql_indexes.sh_69fd19d56a8cd1fc9c7eb9351270eabb491f8233.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_indexes.sh_69fd19d56a8cd1fc9c7eb9351270eabb491f8233.err diff --git a/test/expected/test_sql_indexes.sh_69fd19d56a8cd1fc9c7eb9351270eabb491f8233.out b/test/expected/test_sql_indexes.sh_69fd19d56a8cd1fc9c7eb9351270eabb491f8233.out new file mode 100644 index 0000000..cb2aac6 --- /dev/null +++ b/test/expected/test_sql_indexes.sh_69fd19d56a8cd1fc9c7eb9351270eabb491f8233.out @@ -0,0 +1,5 @@ +[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 diff --git a/test/expected/test_sql_indexes.sh_6f707b6e856dbaab6f95e7e89b98dc3652021f85.err b/test/expected/test_sql_indexes.sh_6f707b6e856dbaab6f95e7e89b98dc3652021f85.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_indexes.sh_6f707b6e856dbaab6f95e7e89b98dc3652021f85.err diff --git a/test/expected/test_sql_indexes.sh_6f707b6e856dbaab6f95e7e89b98dc3652021f85.out b/test/expected/test_sql_indexes.sh_6f707b6e856dbaab6f95e7e89b98dc3652021f85.out new file mode 100644 index 0000000..ee48805 --- /dev/null +++ b/test/expected/test_sql_indexes.sh_6f707b6e856dbaab6f95e7e89b98dc3652021f85.out @@ -0,0 +1,3 @@ +[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> diff --git a/test/expected/test_sql_indexes.sh_b615b6737b1e0d383c8ce4a1db56332f11dbc158.err b/test/expected/test_sql_indexes.sh_b615b6737b1e0d383c8ce4a1db56332f11dbc158.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_indexes.sh_b615b6737b1e0d383c8ce4a1db56332f11dbc158.err diff --git a/test/expected/test_sql_indexes.sh_b615b6737b1e0d383c8ce4a1db56332f11dbc158.out b/test/expected/test_sql_indexes.sh_b615b6737b1e0d383c8ce4a1db56332f11dbc158.out new file mode 100644 index 0000000..2a91985 --- /dev/null +++ b/test/expected/test_sql_indexes.sh_b615b6737b1e0d383c8ce4a1db56332f11dbc158.out @@ -0,0 +1,2 @@ +[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 diff --git a/test/expected/test_sql_indexes.sh_dab07d8de7728752ae938a174468d75e85f3ae7e.err b/test/expected/test_sql_indexes.sh_dab07d8de7728752ae938a174468d75e85f3ae7e.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_indexes.sh_dab07d8de7728752ae938a174468d75e85f3ae7e.err diff --git a/test/expected/test_sql_indexes.sh_dab07d8de7728752ae938a174468d75e85f3ae7e.out b/test/expected/test_sql_indexes.sh_dab07d8de7728752ae938a174468d75e85f3ae7e.out new file mode 100644 index 0000000..82958af --- /dev/null +++ b/test/expected/test_sql_indexes.sh_dab07d8de7728752ae938a174468d75e85f3ae7e.out @@ -0,0 +1,2 @@ +[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 diff --git a/test/expected/test_sql_indexes.sh_f7681c234d4f60df16c997a05163aeb058c52870.err b/test/expected/test_sql_indexes.sh_f7681c234d4f60df16c997a05163aeb058c52870.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_indexes.sh_f7681c234d4f60df16c997a05163aeb058c52870.err diff --git a/test/expected/test_sql_indexes.sh_f7681c234d4f60df16c997a05163aeb058c52870.out b/test/expected/test_sql_indexes.sh_f7681c234d4f60df16c997a05163aeb058c52870.out new file mode 100644 index 0000000..16c7c37 --- /dev/null +++ b/test/expected/test_sql_indexes.sh_f7681c234d4f60df16c997a05163aeb058c52870.out @@ -0,0 +1,5 @@ +[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 diff --git a/test/expected/test_sql_json_func.sh_017d24148f3e28f719429b709f4aa5478f458443.err b/test/expected/test_sql_json_func.sh_017d24148f3e28f719429b709f4aa5478f458443.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_017d24148f3e28f719429b709f4aa5478f458443.err diff --git a/test/expected/test_sql_json_func.sh_017d24148f3e28f719429b709f4aa5478f458443.out b/test/expected/test_sql_json_func.sh_017d24148f3e28f719429b709f4aa5478f458443.out new file mode 100644 index 0000000..451a2fa --- /dev/null +++ b/test/expected/test_sql_json_func.sh_017d24148f3e28f719429b709f4aa5478f458443.out @@ -0,0 +1,2 @@ +Row 0: + Column jget('[null, true, 20, 30, 40]', '/0'): (null) diff --git a/test/expected/test_sql_json_func.sh_026077f4d573ee034467065b7e4f1878bdd4e2f2.err b/test/expected/test_sql_json_func.sh_026077f4d573ee034467065b7e4f1878bdd4e2f2.err new file mode 100644 index 0000000..9654daa --- /dev/null +++ b/test/expected/test_sql_json_func.sh_026077f4d573ee034467065b7e4f1878bdd4e2f2.err @@ -0,0 +1,4 @@ +error: sqlite3_exec failed -- parse error: premature EOF + [123, true + (right here) ------^ + diff --git a/test/expected/test_sql_json_func.sh_026077f4d573ee034467065b7e4f1878bdd4e2f2.out b/test/expected/test_sql_json_func.sh_026077f4d573ee034467065b7e4f1878bdd4e2f2.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_026077f4d573ee034467065b7e4f1878bdd4e2f2.out diff --git a/test/expected/test_sql_json_func.sh_191436b38db80b1dd9e7e0814c31c5fa7239dc51.err b/test/expected/test_sql_json_func.sh_191436b38db80b1dd9e7e0814c31c5fa7239dc51.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_191436b38db80b1dd9e7e0814c31c5fa7239dc51.err diff --git a/test/expected/test_sql_json_func.sh_191436b38db80b1dd9e7e0814c31c5fa7239dc51.out b/test/expected/test_sql_json_func.sh_191436b38db80b1dd9e7e0814c31c5fa7239dc51.out new file mode 100644 index 0000000..531034e --- /dev/null +++ b/test/expected/test_sql_json_func.sh_191436b38db80b1dd9e7e0814c31c5fa7239dc51.out @@ -0,0 +1,3 @@ +Row 0: + Column id: 1 + Column stack: {"key1":10,"key2":20,"key3":30} diff --git a/test/expected/test_sql_json_func.sh_1a74914cbf12fcd5c06935b992f6355acdbcf2d8.err b/test/expected/test_sql_json_func.sh_1a74914cbf12fcd5c06935b992f6355acdbcf2d8.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_1a74914cbf12fcd5c06935b992f6355acdbcf2d8.err diff --git a/test/expected/test_sql_json_func.sh_1a74914cbf12fcd5c06935b992f6355acdbcf2d8.out b/test/expected/test_sql_json_func.sh_1a74914cbf12fcd5c06935b992f6355acdbcf2d8.out new file mode 100644 index 0000000..449f615 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_1a74914cbf12fcd5c06935b992f6355acdbcf2d8.out @@ -0,0 +1,2 @@ +Row 0: + Column jget('[null, true, 20, 30, 4.0]', '/4'): 4.0 diff --git a/test/expected/test_sql_json_func.sh_1c1a2d438d2bde95abd9a859d113c3661e650a36.err b/test/expected/test_sql_json_func.sh_1c1a2d438d2bde95abd9a859d113c3661e650a36.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_1c1a2d438d2bde95abd9a859d113c3661e650a36.err diff --git a/test/expected/test_sql_json_func.sh_1c1a2d438d2bde95abd9a859d113c3661e650a36.out b/test/expected/test_sql_json_func.sh_1c1a2d438d2bde95abd9a859d113c3661e650a36.out new file mode 100644 index 0000000..fb37801 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_1c1a2d438d2bde95abd9a859d113c3661e650a36.out @@ -0,0 +1,2 @@ +Row 0: + Column jget('[null, true, 20, 30, 40]', '/0/foo'): (null) diff --git a/test/expected/test_sql_json_func.sh_238417283b8e5db23c992f966e3f106bd178f7d0.err b/test/expected/test_sql_json_func.sh_238417283b8e5db23c992f966e3f106bd178f7d0.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_238417283b8e5db23c992f966e3f106bd178f7d0.err diff --git a/test/expected/test_sql_json_func.sh_238417283b8e5db23c992f966e3f106bd178f7d0.out b/test/expected/test_sql_json_func.sh_238417283b8e5db23c992f966e3f106bd178f7d0.out new file mode 100644 index 0000000..4b8f538 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_238417283b8e5db23c992f966e3f106bd178f7d0.out @@ -0,0 +1,2 @@ +Row 0: + Column jget('[null, true, 20, 30, 40, {"msg": "Hello"}]', ''): [null,true,20,30,40,{"msg":"Hello"}] diff --git a/test/expected/test_sql_json_func.sh_32459ba8e8bb9a1d9e63b6c67059d7f065cf4301.err b/test/expected/test_sql_json_func.sh_32459ba8e8bb9a1d9e63b6c67059d7f065cf4301.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_32459ba8e8bb9a1d9e63b6c67059d7f065cf4301.err diff --git a/test/expected/test_sql_json_func.sh_32459ba8e8bb9a1d9e63b6c67059d7f065cf4301.out b/test/expected/test_sql_json_func.sh_32459ba8e8bb9a1d9e63b6c67059d7f065cf4301.out new file mode 100644 index 0000000..dd75a1d --- /dev/null +++ b/test/expected/test_sql_json_func.sh_32459ba8e8bb9a1d9e63b6c67059d7f065cf4301.out @@ -0,0 +1,2 @@ +Row 0: + Column jget('[null, true, 20, 30, 40]', '/abc', 1): 1 diff --git a/test/expected/test_sql_json_func.sh_39c13797278d765c027d3581a0b6e0574f5c56eb.err b/test/expected/test_sql_json_func.sh_39c13797278d765c027d3581a0b6e0574f5c56eb.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_39c13797278d765c027d3581a0b6e0574f5c56eb.err diff --git a/test/expected/test_sql_json_func.sh_39c13797278d765c027d3581a0b6e0574f5c56eb.out b/test/expected/test_sql_json_func.sh_39c13797278d765c027d3581a0b6e0574f5c56eb.out new file mode 100644 index 0000000..3d09bd6 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_39c13797278d765c027d3581a0b6e0574f5c56eb.out @@ -0,0 +1,2 @@ +Row 0: + Column json_contains('4', 4): 1 diff --git a/test/expected/test_sql_json_func.sh_3cf4b66d40c4b1979ff14a9eccad8bd5ac48151c.err b/test/expected/test_sql_json_func.sh_3cf4b66d40c4b1979ff14a9eccad8bd5ac48151c.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_3cf4b66d40c4b1979ff14a9eccad8bd5ac48151c.err diff --git a/test/expected/test_sql_json_func.sh_3cf4b66d40c4b1979ff14a9eccad8bd5ac48151c.out b/test/expected/test_sql_json_func.sh_3cf4b66d40c4b1979ff14a9eccad8bd5ac48151c.out new file mode 100644 index 0000000..0973745 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_3cf4b66d40c4b1979ff14a9eccad8bd5ac48151c.out @@ -0,0 +1,2 @@ +Row 0: + Column res: 0 diff --git a/test/expected/test_sql_json_func.sh_4192f378e320cb3f2c3c228b63ec65de92044704.err b/test/expected/test_sql_json_func.sh_4192f378e320cb3f2c3c228b63ec65de92044704.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_4192f378e320cb3f2c3c228b63ec65de92044704.err diff --git a/test/expected/test_sql_json_func.sh_4192f378e320cb3f2c3c228b63ec65de92044704.out b/test/expected/test_sql_json_func.sh_4192f378e320cb3f2c3c228b63ec65de92044704.out new file mode 100644 index 0000000..14f3b8e --- /dev/null +++ b/test/expected/test_sql_json_func.sh_4192f378e320cb3f2c3c228b63ec65de92044704.out @@ -0,0 +1,2 @@ +Row 0: + Column json_contains('4', 2): 0 diff --git a/test/expected/test_sql_json_func.sh_57c3aecdced547b837177ab02d3776361363e48d.err b/test/expected/test_sql_json_func.sh_57c3aecdced547b837177ab02d3776361363e48d.err new file mode 100644 index 0000000..73b5594 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_57c3aecdced547b837177ab02d3776361363e48d.err @@ -0,0 +1 @@ +error: sqlite3_exec failed -- Uneven number of arguments to json_group_object(), expecting key and value pairs diff --git a/test/expected/test_sql_json_func.sh_57c3aecdced547b837177ab02d3776361363e48d.out b/test/expected/test_sql_json_func.sh_57c3aecdced547b837177ab02d3776361363e48d.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_57c3aecdced547b837177ab02d3776361363e48d.out diff --git a/test/expected/test_sql_json_func.sh_5b4a95677a1fc7d11f4b87d92165f56a60a65828.err b/test/expected/test_sql_json_func.sh_5b4a95677a1fc7d11f4b87d92165f56a60a65828.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_5b4a95677a1fc7d11f4b87d92165f56a60a65828.err diff --git a/test/expected/test_sql_json_func.sh_5b4a95677a1fc7d11f4b87d92165f56a60a65828.out b/test/expected/test_sql_json_func.sh_5b4a95677a1fc7d11f4b87d92165f56a60a65828.out new file mode 100644 index 0000000..414df03 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_5b4a95677a1fc7d11f4b87d92165f56a60a65828.out @@ -0,0 +1,2 @@ +Row 0: + Column json_concat(NULL, json('{"abc": 1}')): [{"abc":1}] diff --git a/test/expected/test_sql_json_func.sh_5f2feef079a51410e1f8661bfe92da1c3277f665.err b/test/expected/test_sql_json_func.sh_5f2feef079a51410e1f8661bfe92da1c3277f665.err new file mode 100644 index 0000000..8bf9a3d --- /dev/null +++ b/test/expected/test_sql_json_func.sh_5f2feef079a51410e1f8661bfe92da1c3277f665.err @@ -0,0 +1 @@ +error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"call to json_contains(json, value) failed","attrs":[{"start":8,"end":21,"type":"role","value":46},{"start":22,"end":26,"type":"role","value":45},{"start":28,"end":33,"type":"role","value":45},{"start":8,"end":34,"type":"role","value":59}]},"reason":{"str":"parse error: premature EOF\n [\"hi\", \"bye\", \"solong]\n (right here) ------^","attrs":[]},"snippets":[],"help":{"str":"","attrs":[]}} diff --git a/test/expected/test_sql_json_func.sh_5f2feef079a51410e1f8661bfe92da1c3277f665.out b/test/expected/test_sql_json_func.sh_5f2feef079a51410e1f8661bfe92da1c3277f665.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_5f2feef079a51410e1f8661bfe92da1c3277f665.out diff --git a/test/expected/test_sql_json_func.sh_61417198a652aab93e9495b6e8cf3a634af175c6.err b/test/expected/test_sql_json_func.sh_61417198a652aab93e9495b6e8cf3a634af175c6.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_61417198a652aab93e9495b6e8cf3a634af175c6.err diff --git a/test/expected/test_sql_json_func.sh_61417198a652aab93e9495b6e8cf3a634af175c6.out b/test/expected/test_sql_json_func.sh_61417198a652aab93e9495b6e8cf3a634af175c6.out new file mode 100644 index 0000000..69e1a5e --- /dev/null +++ b/test/expected/test_sql_json_func.sh_61417198a652aab93e9495b6e8cf3a634af175c6.out @@ -0,0 +1,2 @@ +Row 0: + Column json_contains('', 4): 0 diff --git a/test/expected/test_sql_json_func.sh_79ab816ac01c9902ddbb0f6f20392ab2f2cd6172.err b/test/expected/test_sql_json_func.sh_79ab816ac01c9902ddbb0f6f20392ab2f2cd6172.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_79ab816ac01c9902ddbb0f6f20392ab2f2cd6172.err diff --git a/test/expected/test_sql_json_func.sh_79ab816ac01c9902ddbb0f6f20392ab2f2cd6172.out b/test/expected/test_sql_json_func.sh_79ab816ac01c9902ddbb0f6f20392ab2f2cd6172.out new file mode 100644 index 0000000..9a729a8 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_79ab816ac01c9902ddbb0f6f20392ab2f2cd6172.out @@ -0,0 +1,3 @@ +Row 0: + Column id: 1 + Column stack: {"1":10,"2":[1,2,3],"3":30.5} diff --git a/test/expected/test_sql_json_func.sh_7c01aaf09078aaa3f23d127f9e03a317dca066de.err b/test/expected/test_sql_json_func.sh_7c01aaf09078aaa3f23d127f9e03a317dca066de.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_7c01aaf09078aaa3f23d127f9e03a317dca066de.err diff --git a/test/expected/test_sql_json_func.sh_7c01aaf09078aaa3f23d127f9e03a317dca066de.out b/test/expected/test_sql_json_func.sh_7c01aaf09078aaa3f23d127f9e03a317dca066de.out new file mode 100644 index 0000000..c70a186 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_7c01aaf09078aaa3f23d127f9e03a317dca066de.out @@ -0,0 +1,2 @@ +Row 0: + Column json_contains('"hi"', 'hi'): 1 diff --git a/test/expected/test_sql_json_func.sh_80c97b22084a06fd765ad22c935616c578968d07.err b/test/expected/test_sql_json_func.sh_80c97b22084a06fd765ad22c935616c578968d07.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_80c97b22084a06fd765ad22c935616c578968d07.err diff --git a/test/expected/test_sql_json_func.sh_80c97b22084a06fd765ad22c935616c578968d07.out b/test/expected/test_sql_json_func.sh_80c97b22084a06fd765ad22c935616c578968d07.out new file mode 100644 index 0000000..57ecd1c --- /dev/null +++ b/test/expected/test_sql_json_func.sh_80c97b22084a06fd765ad22c935616c578968d07.out @@ -0,0 +1,2 @@ +Row 0: + Column jget('[null, true, 20, 30, 40]', '/abc'): (null) diff --git a/test/expected/test_sql_json_func.sh_83d8615c9ce5dfab5e4373570c1b68b8608155f5.err b/test/expected/test_sql_json_func.sh_83d8615c9ce5dfab5e4373570c1b68b8608155f5.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_83d8615c9ce5dfab5e4373570c1b68b8608155f5.err diff --git a/test/expected/test_sql_json_func.sh_83d8615c9ce5dfab5e4373570c1b68b8608155f5.out b/test/expected/test_sql_json_func.sh_83d8615c9ce5dfab5e4373570c1b68b8608155f5.out new file mode 100644 index 0000000..375f86a --- /dev/null +++ b/test/expected/test_sql_json_func.sh_83d8615c9ce5dfab5e4373570c1b68b8608155f5.out @@ -0,0 +1,2 @@ +Row 0: + Column json_contains('"hi"', 'hi there'): 0 diff --git a/test/expected/test_sql_json_func.sh_8cae9740ddfd6ba4c865fca0117b7bea3bb556e5.err b/test/expected/test_sql_json_func.sh_8cae9740ddfd6ba4c865fca0117b7bea3bb556e5.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_8cae9740ddfd6ba4c865fca0117b7bea3bb556e5.err diff --git a/test/expected/test_sql_json_func.sh_8cae9740ddfd6ba4c865fca0117b7bea3bb556e5.out b/test/expected/test_sql_json_func.sh_8cae9740ddfd6ba4c865fca0117b7bea3bb556e5.out new file mode 100644 index 0000000..3a26b62 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_8cae9740ddfd6ba4c865fca0117b7bea3bb556e5.out @@ -0,0 +1,2 @@ +Row 0: + Column json_concat(json('[null, true, 0]'), 1.0, 2.0): [null,true,0,1.0,2.0] diff --git a/test/expected/test_sql_json_func.sh_8e229f1b5fa3d3803e9db2f295a8d1a490e1b3db.err b/test/expected/test_sql_json_func.sh_8e229f1b5fa3d3803e9db2f295a8d1a490e1b3db.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_8e229f1b5fa3d3803e9db2f295a8d1a490e1b3db.err diff --git a/test/expected/test_sql_json_func.sh_8e229f1b5fa3d3803e9db2f295a8d1a490e1b3db.out b/test/expected/test_sql_json_func.sh_8e229f1b5fa3d3803e9db2f295a8d1a490e1b3db.out new file mode 100644 index 0000000..72ded4f --- /dev/null +++ b/test/expected/test_sql_json_func.sh_8e229f1b5fa3d3803e9db2f295a8d1a490e1b3db.out @@ -0,0 +1,2 @@ +Row 0: + Column jget('[null, true, 20, 30, 40, {"msg": "Hello"}]', '/5/msg'): Hello diff --git a/test/expected/test_sql_json_func.sh_8e3724c90bf96dff5d8ba3cfaf4b7e2eaa9e5f66.err b/test/expected/test_sql_json_func.sh_8e3724c90bf96dff5d8ba3cfaf4b7e2eaa9e5f66.err new file mode 100644 index 0000000..da16df8 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_8e3724c90bf96dff5d8ba3cfaf4b7e2eaa9e5f66.err @@ -0,0 +1 @@ +error: sqlite3_exec failed -- expecting JSON value and pointer diff --git a/test/expected/test_sql_json_func.sh_8e3724c90bf96dff5d8ba3cfaf4b7e2eaa9e5f66.out b/test/expected/test_sql_json_func.sh_8e3724c90bf96dff5d8ba3cfaf4b7e2eaa9e5f66.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_8e3724c90bf96dff5d8ba3cfaf4b7e2eaa9e5f66.out diff --git a/test/expected/test_sql_json_func.sh_93ba3ba52b0dd2d5a3ba43bcb7c3638c05ecfe75.err b/test/expected/test_sql_json_func.sh_93ba3ba52b0dd2d5a3ba43bcb7c3638c05ecfe75.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_93ba3ba52b0dd2d5a3ba43bcb7c3638c05ecfe75.err diff --git a/test/expected/test_sql_json_func.sh_93ba3ba52b0dd2d5a3ba43bcb7c3638c05ecfe75.out b/test/expected/test_sql_json_func.sh_93ba3ba52b0dd2d5a3ba43bcb7c3638c05ecfe75.out new file mode 100644 index 0000000..67ca681 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_93ba3ba52b0dd2d5a3ba43bcb7c3638c05ecfe75.out @@ -0,0 +1,2 @@ +Row 0: + Column jget('[null, true, 20, 30, 40]', '/3'): 30 diff --git a/test/expected/test_sql_json_func.sh_97aa53b581838f5875fe2beda8d1cb245a24f3d6.err b/test/expected/test_sql_json_func.sh_97aa53b581838f5875fe2beda8d1cb245a24f3d6.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_97aa53b581838f5875fe2beda8d1cb245a24f3d6.err diff --git a/test/expected/test_sql_json_func.sh_97aa53b581838f5875fe2beda8d1cb245a24f3d6.out b/test/expected/test_sql_json_func.sh_97aa53b581838f5875fe2beda8d1cb245a24f3d6.out new file mode 100644 index 0000000..df74174 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_97aa53b581838f5875fe2beda8d1cb245a24f3d6.out @@ -0,0 +1,2 @@ +Row 0: + Column json_concat(NULL, NULL): [null] diff --git a/test/expected/test_sql_json_func.sh_98a83bc899a78c04d1fdb390b2c1e403c35428c7.err b/test/expected/test_sql_json_func.sh_98a83bc899a78c04d1fdb390b2c1e403c35428c7.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_98a83bc899a78c04d1fdb390b2c1e403c35428c7.err diff --git a/test/expected/test_sql_json_func.sh_98a83bc899a78c04d1fdb390b2c1e403c35428c7.out b/test/expected/test_sql_json_func.sh_98a83bc899a78c04d1fdb390b2c1e403c35428c7.out new file mode 100644 index 0000000..6f7f8d0 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_98a83bc899a78c04d1fdb390b2c1e403c35428c7.out @@ -0,0 +1,2 @@ +Row 0: + Column res: 1 diff --git a/test/expected/test_sql_json_func.sh_98ce02dff32d955466524bb167fa45fdf8591788.err b/test/expected/test_sql_json_func.sh_98ce02dff32d955466524bb167fa45fdf8591788.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_98ce02dff32d955466524bb167fa45fdf8591788.err diff --git a/test/expected/test_sql_json_func.sh_98ce02dff32d955466524bb167fa45fdf8591788.out b/test/expected/test_sql_json_func.sh_98ce02dff32d955466524bb167fa45fdf8591788.out new file mode 100644 index 0000000..f6f983c --- /dev/null +++ b/test/expected/test_sql_json_func.sh_98ce02dff32d955466524bb167fa45fdf8591788.out @@ -0,0 +1,2 @@ +Row 0: + Column json_contains(NULL, 4): 0 diff --git a/test/expected/test_sql_json_func.sh_9ab4f51486d7cc99c584721bf0e50c223dac4f18.err b/test/expected/test_sql_json_func.sh_9ab4f51486d7cc99c584721bf0e50c223dac4f18.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_9ab4f51486d7cc99c584721bf0e50c223dac4f18.err diff --git a/test/expected/test_sql_json_func.sh_9ab4f51486d7cc99c584721bf0e50c223dac4f18.out b/test/expected/test_sql_json_func.sh_9ab4f51486d7cc99c584721bf0e50c223dac4f18.out new file mode 100644 index 0000000..7019ce5 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_9ab4f51486d7cc99c584721bf0e50c223dac4f18.out @@ -0,0 +1,2 @@ +Row 0: + Column typeof(jget('[null, true, 20, 30, 40]', '/3')): integer diff --git a/test/expected/test_sql_json_func.sh_9d260ed24b28579ef1dbed25b10c42741e52b023.err b/test/expected/test_sql_json_func.sh_9d260ed24b28579ef1dbed25b10c42741e52b023.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_9d260ed24b28579ef1dbed25b10c42741e52b023.err diff --git a/test/expected/test_sql_json_func.sh_9d260ed24b28579ef1dbed25b10c42741e52b023.out b/test/expected/test_sql_json_func.sh_9d260ed24b28579ef1dbed25b10c42741e52b023.out new file mode 100644 index 0000000..1c9c316 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_9d260ed24b28579ef1dbed25b10c42741e52b023.out @@ -0,0 +1,2 @@ +Row 0: + Column json_group_array(column1): [] diff --git a/test/expected/test_sql_json_func.sh_9fbfe3c93467666c45b643f3b8ba990a294c17ff.err b/test/expected/test_sql_json_func.sh_9fbfe3c93467666c45b643f3b8ba990a294c17ff.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_9fbfe3c93467666c45b643f3b8ba990a294c17ff.err diff --git a/test/expected/test_sql_json_func.sh_9fbfe3c93467666c45b643f3b8ba990a294c17ff.out b/test/expected/test_sql_json_func.sh_9fbfe3c93467666c45b643f3b8ba990a294c17ff.out new file mode 100644 index 0000000..776dfd6 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_9fbfe3c93467666c45b643f3b8ba990a294c17ff.out @@ -0,0 +1,2 @@ +Row 0: + Column jget('4', null): 4 diff --git a/test/expected/test_sql_json_func.sh_a4ffc64f89cf9917fbc918227fd3c05e54d9e8b5.err b/test/expected/test_sql_json_func.sh_a4ffc64f89cf9917fbc918227fd3c05e54d9e8b5.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_a4ffc64f89cf9917fbc918227fd3c05e54d9e8b5.err diff --git a/test/expected/test_sql_json_func.sh_a4ffc64f89cf9917fbc918227fd3c05e54d9e8b5.out b/test/expected/test_sql_json_func.sh_a4ffc64f89cf9917fbc918227fd3c05e54d9e8b5.out new file mode 100644 index 0000000..931d5dc --- /dev/null +++ b/test/expected/test_sql_json_func.sh_a4ffc64f89cf9917fbc918227fd3c05e54d9e8b5.out @@ -0,0 +1,2 @@ +Row 0: + Column json_contains('[[0]]', 0): 0 diff --git a/test/expected/test_sql_json_func.sh_a5e179607645aefce14b9fd12ddef34107afe337.err b/test/expected/test_sql_json_func.sh_a5e179607645aefce14b9fd12ddef34107afe337.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_a5e179607645aefce14b9fd12ddef34107afe337.err diff --git a/test/expected/test_sql_json_func.sh_a5e179607645aefce14b9fd12ddef34107afe337.out b/test/expected/test_sql_json_func.sh_a5e179607645aefce14b9fd12ddef34107afe337.out new file mode 100644 index 0000000..f150fde --- /dev/null +++ b/test/expected/test_sql_json_func.sh_a5e179607645aefce14b9fd12ddef34107afe337.out @@ -0,0 +1,2 @@ +Row 0: + Column stack: [10,null,"hello"] diff --git a/test/expected/test_sql_json_func.sh_b2fc37822e29f7f59497a02a8968c680b545ee1d.err b/test/expected/test_sql_json_func.sh_b2fc37822e29f7f59497a02a8968c680b545ee1d.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_b2fc37822e29f7f59497a02a8968c680b545ee1d.err diff --git a/test/expected/test_sql_json_func.sh_b2fc37822e29f7f59497a02a8968c680b545ee1d.out b/test/expected/test_sql_json_func.sh_b2fc37822e29f7f59497a02a8968c680b545ee1d.out new file mode 100644 index 0000000..68ffe43 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_b2fc37822e29f7f59497a02a8968c680b545ee1d.out @@ -0,0 +1,2 @@ +Row 0: + Column json_concat(json('["tag0"]'), 'tag1', 'tag2'): ["tag0","tag1","tag2"] diff --git a/test/expected/test_sql_json_func.sh_bbd979ed74b46ae1696ed7312a48a436bcf99ec0.err b/test/expected/test_sql_json_func.sh_bbd979ed74b46ae1696ed7312a48a436bcf99ec0.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_bbd979ed74b46ae1696ed7312a48a436bcf99ec0.err diff --git a/test/expected/test_sql_json_func.sh_bbd979ed74b46ae1696ed7312a48a436bcf99ec0.out b/test/expected/test_sql_json_func.sh_bbd979ed74b46ae1696ed7312a48a436bcf99ec0.out new file mode 100644 index 0000000..e2c7330 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_bbd979ed74b46ae1696ed7312a48a436bcf99ec0.out @@ -0,0 +1,2 @@ +Row 0: + Column jget('[null, true, 20, 30, 40, {"msg": "Hello"}]', '/5'): {"msg":"Hello"} diff --git a/test/expected/test_sql_json_func.sh_c1ae603d969a5b106328287523c0ddfed07146ad.err b/test/expected/test_sql_json_func.sh_c1ae603d969a5b106328287523c0ddfed07146ad.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_c1ae603d969a5b106328287523c0ddfed07146ad.err diff --git a/test/expected/test_sql_json_func.sh_c1ae603d969a5b106328287523c0ddfed07146ad.out b/test/expected/test_sql_json_func.sh_c1ae603d969a5b106328287523c0ddfed07146ad.out new file mode 100644 index 0000000..ae0858b --- /dev/null +++ b/test/expected/test_sql_json_func.sh_c1ae603d969a5b106328287523c0ddfed07146ad.out @@ -0,0 +1,2 @@ +Row 0: + Column json_contains('null', NULL): 1 diff --git a/test/expected/test_sql_json_func.sh_e0ab80f50fb008700ab6cfb90694ed014d40e44b.err b/test/expected/test_sql_json_func.sh_e0ab80f50fb008700ab6cfb90694ed014d40e44b.err new file mode 100644 index 0000000..f8e3d64 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_e0ab80f50fb008700ab6cfb90694ed014d40e44b.err @@ -0,0 +1 @@ +error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"call to json_concat(json, value, ...) failed","attrs":[{"start":8,"end":19,"type":"role","value":46},{"start":20,"end":24,"type":"role","value":45},{"start":26,"end":31,"type":"role","value":45},{"start":8,"end":37,"type":"role","value":59}]},"reason":{"str":"Invalid JSON: parse error: premature EOF\n [null,\n (right here) ------^","attrs":[]},"snippets":[],"help":{"str":"","attrs":[]}} diff --git a/test/expected/test_sql_json_func.sh_e0ab80f50fb008700ab6cfb90694ed014d40e44b.out b/test/expected/test_sql_json_func.sh_e0ab80f50fb008700ab6cfb90694ed014d40e44b.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_e0ab80f50fb008700ab6cfb90694ed014d40e44b.out diff --git a/test/expected/test_sql_json_func.sh_ebafb98307f307ae8d8ab6921c32929aab3a1a16.err b/test/expected/test_sql_json_func.sh_ebafb98307f307ae8d8ab6921c32929aab3a1a16.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_ebafb98307f307ae8d8ab6921c32929aab3a1a16.err diff --git a/test/expected/test_sql_json_func.sh_ebafb98307f307ae8d8ab6921c32929aab3a1a16.out b/test/expected/test_sql_json_func.sh_ebafb98307f307ae8d8ab6921c32929aab3a1a16.out new file mode 100644 index 0000000..e187559 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_ebafb98307f307ae8d8ab6921c32929aab3a1a16.out @@ -0,0 +1,2 @@ +Row 0: + Column typeof(jget('[null, true, 20, 30, 4.0]', '/4')): real diff --git a/test/expected/test_sql_json_func.sh_ee36fbea10a33ca106a211feb05d61ecf8e74634.err b/test/expected/test_sql_json_func.sh_ee36fbea10a33ca106a211feb05d61ecf8e74634.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_ee36fbea10a33ca106a211feb05d61ecf8e74634.err diff --git a/test/expected/test_sql_json_func.sh_ee36fbea10a33ca106a211feb05d61ecf8e74634.out b/test/expected/test_sql_json_func.sh_ee36fbea10a33ca106a211feb05d61ecf8e74634.out new file mode 100644 index 0000000..4cdd719 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_ee36fbea10a33ca106a211feb05d61ecf8e74634.out @@ -0,0 +1,2 @@ +Row 0: + Column jget('4', ''): 4 diff --git a/test/expected/test_sql_json_func.sh_f1cbc70771cc75520f807261eac3a88dc2d8fe6b.err b/test/expected/test_sql_json_func.sh_f1cbc70771cc75520f807261eac3a88dc2d8fe6b.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_f1cbc70771cc75520f807261eac3a88dc2d8fe6b.err diff --git a/test/expected/test_sql_json_func.sh_f1cbc70771cc75520f807261eac3a88dc2d8fe6b.out b/test/expected/test_sql_json_func.sh_f1cbc70771cc75520f807261eac3a88dc2d8fe6b.out new file mode 100644 index 0000000..5e3bd8b --- /dev/null +++ b/test/expected/test_sql_json_func.sh_f1cbc70771cc75520f807261eac3a88dc2d8fe6b.out @@ -0,0 +1,2 @@ +Row 0: + Column stack: [10,100,20,200,30,300] diff --git a/test/expected/test_sql_json_func.sh_f34205b59e04f261897ad89f659595c743a18ca9.err b/test/expected/test_sql_json_func.sh_f34205b59e04f261897ad89f659595c743a18ca9.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_f34205b59e04f261897ad89f659595c743a18ca9.err diff --git a/test/expected/test_sql_json_func.sh_f34205b59e04f261897ad89f659595c743a18ca9.out b/test/expected/test_sql_json_func.sh_f34205b59e04f261897ad89f659595c743a18ca9.out new file mode 100644 index 0000000..95c2d9b --- /dev/null +++ b/test/expected/test_sql_json_func.sh_f34205b59e04f261897ad89f659595c743a18ca9.out @@ -0,0 +1,3 @@ +Row 0: + Column id: 1 + Column stack: {"1":10,"2":null,"3":30.5} diff --git a/test/expected/test_sql_json_func.sh_f34f5dfa938a1ac7721f924beb16bbceec127a1b.err b/test/expected/test_sql_json_func.sh_f34f5dfa938a1ac7721f924beb16bbceec127a1b.err new file mode 100644 index 0000000..e8eef68 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_f34f5dfa938a1ac7721f924beb16bbceec127a1b.err @@ -0,0 +1,4 @@ +error: sqlite3_exec failed -- parse error: premature EOF + [null, true, 20, 30, 40 + (right here) ------^ + diff --git a/test/expected/test_sql_json_func.sh_f34f5dfa938a1ac7721f924beb16bbceec127a1b.out b/test/expected/test_sql_json_func.sh_f34f5dfa938a1ac7721f924beb16bbceec127a1b.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_json_func.sh_f34f5dfa938a1ac7721f924beb16bbceec127a1b.out diff --git a/test/expected/test_sql_regexp.sh_03257c56e85558aa0cc925b68d3af962afc25125.err b/test/expected/test_sql_regexp.sh_03257c56e85558aa0cc925b68d3af962afc25125.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_regexp.sh_03257c56e85558aa0cc925b68d3af962afc25125.err diff --git a/test/expected/test_sql_regexp.sh_03257c56e85558aa0cc925b68d3af962afc25125.out b/test/expected/test_sql_regexp.sh_03257c56e85558aa0cc925b68d3af962afc25125.out new file mode 100644 index 0000000..19aa1c4 --- /dev/null +++ b/test/expected/test_sql_regexp.sh_03257c56e85558aa0cc925b68d3af962afc25125.out @@ -0,0 +1,4 @@ +[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 diff --git a/test/expected/test_sql_regexp.sh_51293df041b6969ccecc60204dce3676d0fb006d.err b/test/expected/test_sql_regexp.sh_51293df041b6969ccecc60204dce3676d0fb006d.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_regexp.sh_51293df041b6969ccecc60204dce3676d0fb006d.err diff --git a/test/expected/test_sql_regexp.sh_51293df041b6969ccecc60204dce3676d0fb006d.out b/test/expected/test_sql_regexp.sh_51293df041b6969ccecc60204dce3676d0fb006d.out new file mode 100644 index 0000000..4917183 --- /dev/null +++ b/test/expected/test_sql_regexp.sh_51293df041b6969ccecc60204dce3676d0fb006d.out @@ -0,0 +1,2 @@ +[1m[4mmatch_index [0m[1m[4m content [0m +[1m[7m 0[0m[1m[7m [0m[1m[7m{"key":"foo","value":4670}[0m[1m [0m diff --git a/test/expected/test_sql_regexp.sh_b841a0c09601e2419eeb99e85f7e286c889e4801.err b/test/expected/test_sql_regexp.sh_b841a0c09601e2419eeb99e85f7e286c889e4801.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_regexp.sh_b841a0c09601e2419eeb99e85f7e286c889e4801.err diff --git a/test/expected/test_sql_regexp.sh_b841a0c09601e2419eeb99e85f7e286c889e4801.out b/test/expected/test_sql_regexp.sh_b841a0c09601e2419eeb99e85f7e286c889e4801.out new file mode 100644 index 0000000..78f05ff --- /dev/null +++ b/test/expected/test_sql_regexp.sh_b841a0c09601e2419eeb99e85f7e286c889e4801.out @@ -0,0 +1,27 @@ +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.""}" diff --git a/test/expected/test_sql_regexp.sh_bbd1128cf61a9af8f9dc937b46217443f42e1a7a.err b/test/expected/test_sql_regexp.sh_bbd1128cf61a9af8f9dc937b46217443f42e1a7a.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_regexp.sh_bbd1128cf61a9af8f9dc937b46217443f42e1a7a.err diff --git a/test/expected/test_sql_regexp.sh_bbd1128cf61a9af8f9dc937b46217443f42e1a7a.out b/test/expected/test_sql_regexp.sh_bbd1128cf61a9af8f9dc937b46217443f42e1a7a.out new file mode 100644 index 0000000..655ce13 --- /dev/null +++ b/test/expected/test_sql_regexp.sh_bbd1128cf61a9af8f9dc937b46217443f42e1a7a.out @@ -0,0 +1,2 @@ +[1m[4mmatch_index [0m[1m[4m content [0m +[1m 0[0m[1m [0m[1m{"key":"foo","value":"123e"} [0m diff --git a/test/expected/test_sql_regexp.sh_d42e1fcfe6d42394f79da84be2d37e62c4c0ea63.err b/test/expected/test_sql_regexp.sh_d42e1fcfe6d42394f79da84be2d37e62c4c0ea63.err new file mode 100644 index 0000000..79d28a5 --- /dev/null +++ b/test/expected/test_sql_regexp.sh_d42e1fcfe6d42394f79da84be2d37e62c4c0ea63.err @@ -0,0 +1,9 @@ +[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 diff --git a/test/expected/test_sql_regexp.sh_d42e1fcfe6d42394f79da84be2d37e62c4c0ea63.out b/test/expected/test_sql_regexp.sh_d42e1fcfe6d42394f79da84be2d37e62c4c0ea63.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_regexp.sh_d42e1fcfe6d42394f79da84be2d37e62c4c0ea63.out diff --git a/test/expected/test_sql_regexp.sh_d61af17ff19d640ddfc879460910991825eedd05.err b/test/expected/test_sql_regexp.sh_d61af17ff19d640ddfc879460910991825eedd05.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_regexp.sh_d61af17ff19d640ddfc879460910991825eedd05.err diff --git a/test/expected/test_sql_regexp.sh_d61af17ff19d640ddfc879460910991825eedd05.out b/test/expected/test_sql_regexp.sh_d61af17ff19d640ddfc879460910991825eedd05.out new file mode 100644 index 0000000..6e952fb --- /dev/null +++ b/test/expected/test_sql_regexp.sh_d61af17ff19d640ddfc879460910991825eedd05.out @@ -0,0 +1,2 @@ +[1m[4mmatch_index [0m[1m[4m content [0m +[1m 0[0m[1m [0m[1m{"col_0":"abc","col_1":"def"} [0m diff --git a/test/expected/test_sql_regexp.sh_ed6e9f13f178def009ee58c2aeea8c3c70fdb580.err b/test/expected/test_sql_regexp.sh_ed6e9f13f178def009ee58c2aeea8c3c70fdb580.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_regexp.sh_ed6e9f13f178def009ee58c2aeea8c3c70fdb580.err diff --git a/test/expected/test_sql_regexp.sh_ed6e9f13f178def009ee58c2aeea8c3c70fdb580.out b/test/expected/test_sql_regexp.sh_ed6e9f13f178def009ee58c2aeea8c3c70fdb580.out new file mode 100644 index 0000000..fef8e26 --- /dev/null +++ b/test/expected/test_sql_regexp.sh_ed6e9f13f178def009ee58c2aeea8c3c70fdb580.out @@ -0,0 +1,2 @@ +[1m[4mmatch_index [0m[1m[4m content [0m +[1m 0[0m[1m [0m[1m{"key":"foo","value":"0x123e"} [0m diff --git a/test/expected/test_sql_search_table.sh_1a0d872ebc492fcecb2e79a0993170d5fc771a5b.err b/test/expected/test_sql_search_table.sh_1a0d872ebc492fcecb2e79a0993170d5fc771a5b.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_search_table.sh_1a0d872ebc492fcecb2e79a0993170d5fc771a5b.err diff --git a/test/expected/test_sql_search_table.sh_1a0d872ebc492fcecb2e79a0993170d5fc771a5b.out b/test/expected/test_sql_search_table.sh_1a0d872ebc492fcecb2e79a0993170d5fc771a5b.out new file mode 100644 index 0000000..d56bc20 --- /dev/null +++ b/test/expected/test_sql_search_table.sh_1a0d872ebc492fcecb2e79a0993170d5fc771a5b.out @@ -0,0 +1,2 @@ +[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 diff --git a/test/expected/test_sql_search_table.sh_3f5f74863d065418bca5a000e6ad3d9344635164.err b/test/expected/test_sql_search_table.sh_3f5f74863d065418bca5a000e6ad3d9344635164.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_search_table.sh_3f5f74863d065418bca5a000e6ad3d9344635164.err diff --git a/test/expected/test_sql_search_table.sh_3f5f74863d065418bca5a000e6ad3d9344635164.out b/test/expected/test_sql_search_table.sh_3f5f74863d065418bca5a000e6ad3d9344635164.out new file mode 100644 index 0000000..c92cf49 --- /dev/null +++ b/test/expected/test_sql_search_table.sh_3f5f74863d065418bca5a000e6ad3d9344635164.out @@ -0,0 +1,12 @@ +[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 diff --git a/test/expected/test_sql_search_table.sh_5aaae556ecb1661602f176215e28f661d3404032.err b/test/expected/test_sql_search_table.sh_5aaae556ecb1661602f176215e28f661d3404032.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_search_table.sh_5aaae556ecb1661602f176215e28f661d3404032.err diff --git a/test/expected/test_sql_search_table.sh_5aaae556ecb1661602f176215e28f661d3404032.out b/test/expected/test_sql_search_table.sh_5aaae556ecb1661602f176215e28f661d3404032.out new file mode 100644 index 0000000..738eab3 --- /dev/null +++ b/test/expected/test_sql_search_table.sh_5aaae556ecb1661602f176215e28f661d3404032.out @@ -0,0 +1,4 @@ +[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 diff --git a/test/expected/test_sql_search_table.sh_df0fd242f57a96d40f466493938cda0789a094fa.err b/test/expected/test_sql_search_table.sh_df0fd242f57a96d40f466493938cda0789a094fa.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_search_table.sh_df0fd242f57a96d40f466493938cda0789a094fa.err diff --git a/test/expected/test_sql_search_table.sh_df0fd242f57a96d40f466493938cda0789a094fa.out b/test/expected/test_sql_search_table.sh_df0fd242f57a96d40f466493938cda0789a094fa.out new file mode 100644 index 0000000..326fcbd --- /dev/null +++ b/test/expected/test_sql_search_table.sh_df0fd242f57a96d40f466493938cda0789a094fa.out @@ -0,0 +1,24 @@ +[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 diff --git a/test/expected/test_sql_search_table.sh_ef9373a76853f345d06234f6e0fe11b5d40da27b.err b/test/expected/test_sql_search_table.sh_ef9373a76853f345d06234f6e0fe11b5d40da27b.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_search_table.sh_ef9373a76853f345d06234f6e0fe11b5d40da27b.err diff --git a/test/expected/test_sql_search_table.sh_ef9373a76853f345d06234f6e0fe11b5d40da27b.out b/test/expected/test_sql_search_table.sh_ef9373a76853f345d06234f6e0fe11b5d40da27b.out new file mode 100644 index 0000000..767d785 --- /dev/null +++ b/test/expected/test_sql_search_table.sh_ef9373a76853f345d06234f6e0fe11b5d40da27b.out @@ -0,0 +1,6 @@ +[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 diff --git a/test/expected/test_sql_str_func.sh_005b9365ac99596e539f47c9fe432668c209b21f.err b/test/expected/test_sql_str_func.sh_005b9365ac99596e539f47c9fe432668c209b21f.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_005b9365ac99596e539f47c9fe432668c209b21f.err diff --git a/test/expected/test_sql_str_func.sh_005b9365ac99596e539f47c9fe432668c209b21f.out b/test/expected/test_sql_str_func.sh_005b9365ac99596e539f47c9fe432668c209b21f.out new file mode 100644 index 0000000..2c908c0 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_005b9365ac99596e539f47c9fe432668c209b21f.out @@ -0,0 +1,2 @@ +Row 0: + Column repl: abc=def diff --git a/test/expected/test_sql_str_func.sh_04712488fe50554eb36d3ced80f9a033602f3daa.err b/test/expected/test_sql_str_func.sh_04712488fe50554eb36d3ced80f9a033602f3daa.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_04712488fe50554eb36d3ced80f9a033602f3daa.err diff --git a/test/expected/test_sql_str_func.sh_04712488fe50554eb36d3ced80f9a033602f3daa.out b/test/expected/test_sql_str_func.sh_04712488fe50554eb36d3ced80f9a033602f3daa.out new file mode 100644 index 0000000..1d3dddd --- /dev/null +++ b/test/expected/test_sql_str_func.sh_04712488fe50554eb36d3ced80f9a033602f3daa.out @@ -0,0 +1,2 @@ +Row 0: + Column result: {"col_0":1} diff --git a/test/expected/test_sql_str_func.sh_0947bfe7ec626eaa0409a45b10fcbb634fb12eb7.err b/test/expected/test_sql_str_func.sh_0947bfe7ec626eaa0409a45b10fcbb634fb12eb7.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_0947bfe7ec626eaa0409a45b10fcbb634fb12eb7.err diff --git a/test/expected/test_sql_str_func.sh_0947bfe7ec626eaa0409a45b10fcbb634fb12eb7.out b/test/expected/test_sql_str_func.sh_0947bfe7ec626eaa0409a45b10fcbb634fb12eb7.out new file mode 100644 index 0000000..e144653 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_0947bfe7ec626eaa0409a45b10fcbb634fb12eb7.out @@ -0,0 +1,2 @@ +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} diff --git a/test/expected/test_sql_str_func.sh_11bcc5d32eabbedb6974f160dace9ef1ef0009e9.err b/test/expected/test_sql_str_func.sh_11bcc5d32eabbedb6974f160dace9ef1ef0009e9.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_11bcc5d32eabbedb6974f160dace9ef1ef0009e9.err diff --git a/test/expected/test_sql_str_func.sh_11bcc5d32eabbedb6974f160dace9ef1ef0009e9.out b/test/expected/test_sql_str_func.sh_11bcc5d32eabbedb6974f160dace9ef1ef0009e9.out new file mode 100644 index 0000000..efa08d6 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_11bcc5d32eabbedb6974f160dace9ef1ef0009e9.out @@ -0,0 +1,64 @@ +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 diff --git a/test/expected/test_sql_str_func.sh_11d458fdadd00df1239a0eeaac049abb49ed212d.err b/test/expected/test_sql_str_func.sh_11d458fdadd00df1239a0eeaac049abb49ed212d.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_11d458fdadd00df1239a0eeaac049abb49ed212d.err diff --git a/test/expected/test_sql_str_func.sh_11d458fdadd00df1239a0eeaac049abb49ed212d.out b/test/expected/test_sql_str_func.sh_11d458fdadd00df1239a0eeaac049abb49ed212d.out new file mode 100644 index 0000000..eea58f2 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_11d458fdadd00df1239a0eeaac049abb49ed212d.out @@ -0,0 +1,198 @@ +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 diff --git a/test/expected/test_sql_str_func.sh_129e58679e72f3cc5864812026e49a7917baf3d0.err b/test/expected/test_sql_str_func.sh_129e58679e72f3cc5864812026e49a7917baf3d0.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_129e58679e72f3cc5864812026e49a7917baf3d0.err diff --git a/test/expected/test_sql_str_func.sh_129e58679e72f3cc5864812026e49a7917baf3d0.out b/test/expected/test_sql_str_func.sh_129e58679e72f3cc5864812026e49a7917baf3d0.out new file mode 100644 index 0000000..c474fab --- /dev/null +++ b/test/expected/test_sql_str_func.sh_129e58679e72f3cc5864812026e49a7917baf3d0.out @@ -0,0 +1,2 @@ +Row 0: + Column gunzip(gzip(1)): 1 diff --git a/test/expected/test_sql_str_func.sh_151a0fd71ef6837c8cbd8a67e315019b5812b079.err b/test/expected/test_sql_str_func.sh_151a0fd71ef6837c8cbd8a67e315019b5812b079.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_151a0fd71ef6837c8cbd8a67e315019b5812b079.err diff --git a/test/expected/test_sql_str_func.sh_151a0fd71ef6837c8cbd8a67e315019b5812b079.out b/test/expected/test_sql_str_func.sh_151a0fd71ef6837c8cbd8a67e315019b5812b079.out new file mode 100644 index 0000000..3b8aad8 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_151a0fd71ef6837c8cbd8a67e315019b5812b079.out @@ -0,0 +1,8 @@ +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 diff --git a/test/expected/test_sql_str_func.sh_1e7362ac3d9690b1b2cfbd320b6129c46ecfbb8a.err b/test/expected/test_sql_str_func.sh_1e7362ac3d9690b1b2cfbd320b6129c46ecfbb8a.err new file mode 100644 index 0000000..9b9cb88 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_1e7362ac3d9690b1b2cfbd320b6129c46ecfbb8a.err @@ -0,0 +1 @@ +error: sqlite3_exec failed -- wrong number of arguments to function humanize_file_size() diff --git a/test/expected/test_sql_str_func.sh_1e7362ac3d9690b1b2cfbd320b6129c46ecfbb8a.out b/test/expected/test_sql_str_func.sh_1e7362ac3d9690b1b2cfbd320b6129c46ecfbb8a.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_1e7362ac3d9690b1b2cfbd320b6129c46ecfbb8a.out diff --git a/test/expected/test_sql_str_func.sh_211c5428db0590795072c31cb116ef35281e02b5.err b/test/expected/test_sql_str_func.sh_211c5428db0590795072c31cb116ef35281e02b5.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_211c5428db0590795072c31cb116ef35281e02b5.err diff --git a/test/expected/test_sql_str_func.sh_211c5428db0590795072c31cb116ef35281e02b5.out b/test/expected/test_sql_str_func.sh_211c5428db0590795072c31cb116ef35281e02b5.out new file mode 100644 index 0000000..13d2b61 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_211c5428db0590795072c31cb116ef35281e02b5.out @@ -0,0 +1,2 @@ +Row 0: + Column endswith('foo.', '.'): 1 diff --git a/test/expected/test_sql_str_func.sh_2f189f0785bb81a1298db35e9e166983b633c73f.err b/test/expected/test_sql_str_func.sh_2f189f0785bb81a1298db35e9e166983b633c73f.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_2f189f0785bb81a1298db35e9e166983b633c73f.err diff --git a/test/expected/test_sql_str_func.sh_2f189f0785bb81a1298db35e9e166983b633c73f.out b/test/expected/test_sql_str_func.sh_2f189f0785bb81a1298db35e9e166983b633c73f.out new file mode 100644 index 0000000..7942a4a --- /dev/null +++ b/test/expected/test_sql_str_func.sh_2f189f0785bb81a1298db35e9e166983b633c73f.out @@ -0,0 +1,8 @@ +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 diff --git a/test/expected/test_sql_str_func.sh_30f65162174b886130b94a5dd1f094e7f09debed.err b/test/expected/test_sql_str_func.sh_30f65162174b886130b94a5dd1f094e7f09debed.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_30f65162174b886130b94a5dd1f094e7f09debed.err diff --git a/test/expected/test_sql_str_func.sh_30f65162174b886130b94a5dd1f094e7f09debed.out b/test/expected/test_sql_str_func.sh_30f65162174b886130b94a5dd1f094e7f09debed.out new file mode 100644 index 0000000..76ba63e --- /dev/null +++ b/test/expected/test_sql_str_func.sh_30f65162174b886130b94a5dd1f094e7f09debed.out @@ -0,0 +1,2 @@ +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 diff --git a/test/expected/test_sql_str_func.sh_352434d199f7b493668c9f2774472eb69ef0d9f0.err b/test/expected/test_sql_str_func.sh_352434d199f7b493668c9f2774472eb69ef0d9f0.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_352434d199f7b493668c9f2774472eb69ef0d9f0.err diff --git a/test/expected/test_sql_str_func.sh_352434d199f7b493668c9f2774472eb69ef0d9f0.out b/test/expected/test_sql_str_func.sh_352434d199f7b493668c9f2774472eb69ef0d9f0.out new file mode 100644 index 0000000..8cb1716 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_352434d199f7b493668c9f2774472eb69ef0d9f0.out @@ -0,0 +1,2 @@ +Row 0: + Column regexp('bc', 'abcd'): 1 diff --git a/test/expected/test_sql_str_func.sh_36fc9005464f1106f969559e640d9fa36d5fadad.err b/test/expected/test_sql_str_func.sh_36fc9005464f1106f969559e640d9fa36d5fadad.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_36fc9005464f1106f969559e640d9fa36d5fadad.err diff --git a/test/expected/test_sql_str_func.sh_36fc9005464f1106f969559e640d9fa36d5fadad.out b/test/expected/test_sql_str_func.sh_36fc9005464f1106f969559e640d9fa36d5fadad.out new file mode 100644 index 0000000..52f6a45 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_36fc9005464f1106f969559e640d9fa36d5fadad.out @@ -0,0 +1,2 @@ +Row 0: + Column regexp_replace('test 1 2 3', '\d+', 'N'): test N N N diff --git a/test/expected/test_sql_str_func.sh_3855d2cc0ab29171cae8e722f130adec25eae36e.err b/test/expected/test_sql_str_func.sh_3855d2cc0ab29171cae8e722f130adec25eae36e.err new file mode 100644 index 0000000..e3d40ab --- /dev/null +++ b/test/expected/test_sql_str_func.sh_3855d2cc0ab29171cae8e722f130adec25eae36e.err @@ -0,0 +1 @@ +error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"invalid URL: “https://bad@[fe::”","attrs":[]},"reason":{"str":"Port number was not a decimal number between 0 and 65535","attrs":[]},"snippets":[],"help":{"str":"","attrs":[]}} diff --git a/test/expected/test_sql_str_func.sh_3855d2cc0ab29171cae8e722f130adec25eae36e.out b/test/expected/test_sql_str_func.sh_3855d2cc0ab29171cae8e722f130adec25eae36e.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_3855d2cc0ab29171cae8e722f130adec25eae36e.out diff --git a/test/expected/test_sql_str_func.sh_3de72fe5c1751dd212a1cd45cf2caa7f3b52bced.err b/test/expected/test_sql_str_func.sh_3de72fe5c1751dd212a1cd45cf2caa7f3b52bced.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_3de72fe5c1751dd212a1cd45cf2caa7f3b52bced.err diff --git a/test/expected/test_sql_str_func.sh_3de72fe5c1751dd212a1cd45cf2caa7f3b52bced.out b/test/expected/test_sql_str_func.sh_3de72fe5c1751dd212a1cd45cf2caa7f3b52bced.out new file mode 100644 index 0000000..e139659 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_3de72fe5c1751dd212a1cd45cf2caa7f3b52bced.out @@ -0,0 +1,2 @@ +Row 0: + Column result: {"foo":1,"bar":2,"baz":20.0,"msg":"hello"} diff --git a/test/expected/test_sql_str_func.sh_4b402274da152135c6c99456b693e1ecabca0256.err b/test/expected/test_sql_str_func.sh_4b402274da152135c6c99456b693e1ecabca0256.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_4b402274da152135c6c99456b693e1ecabca0256.err diff --git a/test/expected/test_sql_str_func.sh_4b402274da152135c6c99456b693e1ecabca0256.out b/test/expected/test_sql_str_func.sh_4b402274da152135c6c99456b693e1ecabca0256.out new file mode 100644 index 0000000..cf88bf4 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_4b402274da152135c6c99456b693e1ecabca0256.out @@ -0,0 +1,2 @@ +Row 0: + Column startswith('foo', '.'): 0 diff --git a/test/expected/test_sql_str_func.sh_51055e40d709332ee772ba5719039314bbf5e411.err b/test/expected/test_sql_str_func.sh_51055e40d709332ee772ba5719039314bbf5e411.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_51055e40d709332ee772ba5719039314bbf5e411.err diff --git a/test/expected/test_sql_str_func.sh_51055e40d709332ee772ba5719039314bbf5e411.out b/test/expected/test_sql_str_func.sh_51055e40d709332ee772ba5719039314bbf5e411.out new file mode 100644 index 0000000..a8efc56 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_51055e40d709332ee772ba5719039314bbf5e411.out @@ -0,0 +1,2 @@ +Row 0: + Column endswith('foo', '.'): 0 diff --git a/test/expected/test_sql_str_func.sh_51766b600fd158a9e0677f6b0fa31b83537b2e5b.err b/test/expected/test_sql_str_func.sh_51766b600fd158a9e0677f6b0fa31b83537b2e5b.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_51766b600fd158a9e0677f6b0fa31b83537b2e5b.err diff --git a/test/expected/test_sql_str_func.sh_51766b600fd158a9e0677f6b0fa31b83537b2e5b.out b/test/expected/test_sql_str_func.sh_51766b600fd158a9e0677f6b0fa31b83537b2e5b.out new file mode 100644 index 0000000..061b9ed --- /dev/null +++ b/test/expected/test_sql_str_func.sh_51766b600fd158a9e0677f6b0fa31b83537b2e5b.out @@ -0,0 +1,2 @@ +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} diff --git a/test/expected/test_sql_str_func.sh_5203db1a4a81e43a693f339fd26e1ed635da9d5a.err b/test/expected/test_sql_str_func.sh_5203db1a4a81e43a693f339fd26e1ed635da9d5a.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_5203db1a4a81e43a693f339fd26e1ed635da9d5a.err diff --git a/test/expected/test_sql_str_func.sh_5203db1a4a81e43a693f339fd26e1ed635da9d5a.out b/test/expected/test_sql_str_func.sh_5203db1a4a81e43a693f339fd26e1ed635da9d5a.out new file mode 100644 index 0000000..e062d63 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_5203db1a4a81e43a693f339fd26e1ed635da9d5a.out @@ -0,0 +1,2 @@ +Row 0: + Column result: {"foo":1,"bar":2} diff --git a/test/expected/test_sql_str_func.sh_5abe3717393fba14ec510a37b4b94fedc67aae8e.err b/test/expected/test_sql_str_func.sh_5abe3717393fba14ec510a37b4b94fedc67aae8e.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_5abe3717393fba14ec510a37b4b94fedc67aae8e.err diff --git a/test/expected/test_sql_str_func.sh_5abe3717393fba14ec510a37b4b94fedc67aae8e.out b/test/expected/test_sql_str_func.sh_5abe3717393fba14ec510a37b4b94fedc67aae8e.out new file mode 100644 index 0000000..aed4105 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_5abe3717393fba14ec510a37b4b94fedc67aae8e.out @@ -0,0 +1,2 @@ +Row 0: + Column endswith('foo.txt', '.txt'): 1 diff --git a/test/expected/test_sql_str_func.sh_5e436fbd4efb140600999c5208886a5a57b8a30e.err b/test/expected/test_sql_str_func.sh_5e436fbd4efb140600999c5208886a5a57b8a30e.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_5e436fbd4efb140600999c5208886a5a57b8a30e.err diff --git a/test/expected/test_sql_str_func.sh_5e436fbd4efb140600999c5208886a5a57b8a30e.out b/test/expected/test_sql_str_func.sh_5e436fbd4efb140600999c5208886a5a57b8a30e.out new file mode 100644 index 0000000..22d58c4 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_5e436fbd4efb140600999c5208886a5a57b8a30e.out @@ -0,0 +1,24 @@ +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 diff --git a/test/expected/test_sql_str_func.sh_5f9979fa5ce7b76efe714bb27ffbe9f5927ae941.err b/test/expected/test_sql_str_func.sh_5f9979fa5ce7b76efe714bb27ffbe9f5927ae941.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_5f9979fa5ce7b76efe714bb27ffbe9f5927ae941.err diff --git a/test/expected/test_sql_str_func.sh_5f9979fa5ce7b76efe714bb27ffbe9f5927ae941.out b/test/expected/test_sql_str_func.sh_5f9979fa5ce7b76efe714bb27ffbe9f5927ae941.out new file mode 100644 index 0000000..3268219 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_5f9979fa5ce7b76efe714bb27ffbe9f5927ae941.out @@ -0,0 +1,2 @@ +Row 0: + Column regexp('[e-z]+', 'ea'): 1 diff --git a/test/expected/test_sql_str_func.sh_60a005a9f0d44ad022b5554415319933d5743c51.err b/test/expected/test_sql_str_func.sh_60a005a9f0d44ad022b5554415319933d5743c51.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_60a005a9f0d44ad022b5554415319933d5743c51.err diff --git a/test/expected/test_sql_str_func.sh_60a005a9f0d44ad022b5554415319933d5743c51.out b/test/expected/test_sql_str_func.sh_60a005a9f0d44ad022b5554415319933d5743c51.out new file mode 100644 index 0000000..4645bc6 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_60a005a9f0d44ad022b5554415319933d5743c51.out @@ -0,0 +1,3 @@ +Row 0: + Column typeof(result): text + Column result: {"col_0":"","col_1":""} diff --git a/test/expected/test_sql_str_func.sh_660288b48d9b30244621d873944938f7ef043976.err b/test/expected/test_sql_str_func.sh_660288b48d9b30244621d873944938f7ef043976.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_660288b48d9b30244621d873944938f7ef043976.err diff --git a/test/expected/test_sql_str_func.sh_660288b48d9b30244621d873944938f7ef043976.out b/test/expected/test_sql_str_func.sh_660288b48d9b30244621d873944938f7ef043976.out new file mode 100644 index 0000000..0a2022e --- /dev/null +++ b/test/expected/test_sql_str_func.sh_660288b48d9b30244621d873944938f7ef043976.out @@ -0,0 +1,2 @@ +Row 0: + Column value: foo diff --git a/test/expected/test_sql_str_func.sh_6607c0dd8baff16930eb3e0daf6354af5b50052b.err b/test/expected/test_sql_str_func.sh_6607c0dd8baff16930eb3e0daf6354af5b50052b.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_6607c0dd8baff16930eb3e0daf6354af5b50052b.err diff --git a/test/expected/test_sql_str_func.sh_6607c0dd8baff16930eb3e0daf6354af5b50052b.out b/test/expected/test_sql_str_func.sh_6607c0dd8baff16930eb3e0daf6354af5b50052b.out new file mode 100644 index 0000000..b86c36b --- /dev/null +++ b/test/expected/test_sql_str_func.sh_6607c0dd8baff16930eb3e0daf6354af5b50052b.out @@ -0,0 +1,2 @@ +Row 0: + Column endswith('a', '.txt'): 0 diff --git a/test/expected/test_sql_str_func.sh_69f5d49e62da48e188bd9d6af4bd3adeb21eb7d1.err b/test/expected/test_sql_str_func.sh_69f5d49e62da48e188bd9d6af4bd3adeb21eb7d1.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_69f5d49e62da48e188bd9d6af4bd3adeb21eb7d1.err diff --git a/test/expected/test_sql_str_func.sh_69f5d49e62da48e188bd9d6af4bd3adeb21eb7d1.out b/test/expected/test_sql_str_func.sh_69f5d49e62da48e188bd9d6af4bd3adeb21eb7d1.out new file mode 100644 index 0000000..913b8ce --- /dev/null +++ b/test/expected/test_sql_str_func.sh_69f5d49e62da48e188bd9d6af4bd3adeb21eb7d1.out @@ -0,0 +1,6 @@ +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} diff --git a/test/expected/test_sql_str_func.sh_6ff984d8ed3e5099376d19f0dd20d5fd1ed42494.err b/test/expected/test_sql_str_func.sh_6ff984d8ed3e5099376d19f0dd20d5fd1ed42494.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_6ff984d8ed3e5099376d19f0dd20d5fd1ed42494.err diff --git a/test/expected/test_sql_str_func.sh_6ff984d8ed3e5099376d19f0dd20d5fd1ed42494.out b/test/expected/test_sql_str_func.sh_6ff984d8ed3e5099376d19f0dd20d5fd1ed42494.out new file mode 100644 index 0000000..d1dcc93 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_6ff984d8ed3e5099376d19f0dd20d5fd1ed42494.out @@ -0,0 +1,2 @@ +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"} diff --git a/test/expected/test_sql_str_func.sh_71f37db33504b2c08a7a3323c482556f53d88100.err b/test/expected/test_sql_str_func.sh_71f37db33504b2c08a7a3323c482556f53d88100.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_71f37db33504b2c08a7a3323c482556f53d88100.err diff --git a/test/expected/test_sql_str_func.sh_71f37db33504b2c08a7a3323c482556f53d88100.out b/test/expected/test_sql_str_func.sh_71f37db33504b2c08a7a3323c482556f53d88100.out new file mode 100644 index 0000000..3718bc2 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_71f37db33504b2c08a7a3323c482556f53d88100.out @@ -0,0 +1,16 @@ +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 diff --git a/test/expected/test_sql_str_func.sh_77fc174faeec1eda687a9373dbdbdd1aaef56e20.err b/test/expected/test_sql_str_func.sh_77fc174faeec1eda687a9373dbdbdd1aaef56e20.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_77fc174faeec1eda687a9373dbdbdd1aaef56e20.err diff --git a/test/expected/test_sql_str_func.sh_77fc174faeec1eda687a9373dbdbdd1aaef56e20.out b/test/expected/test_sql_str_func.sh_77fc174faeec1eda687a9373dbdbdd1aaef56e20.out new file mode 100644 index 0000000..bf73241 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_77fc174faeec1eda687a9373dbdbdd1aaef56e20.out @@ -0,0 +1,3 @@ +Row 0: + Column typeof(result): text + Column result: diff --git a/test/expected/test_sql_str_func.sh_790da4aab5af901feeff5426790876eb91b967cb.err b/test/expected/test_sql_str_func.sh_790da4aab5af901feeff5426790876eb91b967cb.err new file mode 100644 index 0000000..4f2a2e8 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_790da4aab5af901feeff5426790876eb91b967cb.err @@ -0,0 +1 @@ +error: sqlite3_exec failed -- Expecting an integer for argument number 0 diff --git a/test/expected/test_sql_str_func.sh_790da4aab5af901feeff5426790876eb91b967cb.out b/test/expected/test_sql_str_func.sh_790da4aab5af901feeff5426790876eb91b967cb.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_790da4aab5af901feeff5426790876eb91b967cb.out diff --git a/test/expected/test_sql_str_func.sh_7a544cd702579c1fab35870428788ad763cf1143.err b/test/expected/test_sql_str_func.sh_7a544cd702579c1fab35870428788ad763cf1143.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_7a544cd702579c1fab35870428788ad763cf1143.err diff --git a/test/expected/test_sql_str_func.sh_7a544cd702579c1fab35870428788ad763cf1143.out b/test/expected/test_sql_str_func.sh_7a544cd702579c1fab35870428788ad763cf1143.out new file mode 100644 index 0000000..ec11590 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_7a544cd702579c1fab35870428788ad763cf1143.out @@ -0,0 +1,2 @@ +Row 0: + Column result: (null) diff --git a/test/expected/test_sql_str_func.sh_7b6e7c26e8a80459fef55d56156d6ff93c00bd49.err b/test/expected/test_sql_str_func.sh_7b6e7c26e8a80459fef55d56156d6ff93c00bd49.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_7b6e7c26e8a80459fef55d56156d6ff93c00bd49.err diff --git a/test/expected/test_sql_str_func.sh_7b6e7c26e8a80459fef55d56156d6ff93c00bd49.out b/test/expected/test_sql_str_func.sh_7b6e7c26e8a80459fef55d56156d6ff93c00bd49.out new file mode 100644 index 0000000..c3b7854 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_7b6e7c26e8a80459fef55d56156d6ff93c00bd49.out @@ -0,0 +1,2 @@ +Row 0: + Column unparse_url(parse_url('https://example.com/search?flag&flag2&=def')): https://example.com/search?flag&flag2&=def diff --git a/test/expected/test_sql_str_func.sh_7c1e7604ac050e7047201638dca0a6b0fcfd8bdf.err b/test/expected/test_sql_str_func.sh_7c1e7604ac050e7047201638dca0a6b0fcfd8bdf.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_7c1e7604ac050e7047201638dca0a6b0fcfd8bdf.err diff --git a/test/expected/test_sql_str_func.sh_7c1e7604ac050e7047201638dca0a6b0fcfd8bdf.out b/test/expected/test_sql_str_func.sh_7c1e7604ac050e7047201638dca0a6b0fcfd8bdf.out new file mode 100644 index 0000000..6233470 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_7c1e7604ac050e7047201638dca0a6b0fcfd8bdf.out @@ -0,0 +1,2 @@ +Row 0: + Column unparse_url(parse_url('https://example.com/search?flag&flag2')): https://example.com/search?flag&flag2 diff --git a/test/expected/test_sql_str_func.sh_7f751009d0db15fc97f9113c5c84db05ff1de9c3.err b/test/expected/test_sql_str_func.sh_7f751009d0db15fc97f9113c5c84db05ff1de9c3.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_7f751009d0db15fc97f9113c5c84db05ff1de9c3.err diff --git a/test/expected/test_sql_str_func.sh_7f751009d0db15fc97f9113c5c84db05ff1de9c3.out b/test/expected/test_sql_str_func.sh_7f751009d0db15fc97f9113c5c84db05ff1de9c3.out new file mode 100644 index 0000000..b012761 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_7f751009d0db15fc97f9113c5c84db05ff1de9c3.out @@ -0,0 +1,2 @@ +Row 0: + Column length(gzip(1)): 21 diff --git a/test/expected/test_sql_str_func.sh_805ca5e97fbf1ed56f2e920befd963255ba190b6.err b/test/expected/test_sql_str_func.sh_805ca5e97fbf1ed56f2e920befd963255ba190b6.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_805ca5e97fbf1ed56f2e920befd963255ba190b6.err diff --git a/test/expected/test_sql_str_func.sh_805ca5e97fbf1ed56f2e920befd963255ba190b6.out b/test/expected/test_sql_str_func.sh_805ca5e97fbf1ed56f2e920befd963255ba190b6.out new file mode 100644 index 0000000..84c7397 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_805ca5e97fbf1ed56f2e920befd963255ba190b6.out @@ -0,0 +1,2 @@ +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} diff --git a/test/expected/test_sql_str_func.sh_80c1fb9affbfac609ebf1cc5556aafb1ecd223c1.err b/test/expected/test_sql_str_func.sh_80c1fb9affbfac609ebf1cc5556aafb1ecd223c1.err new file mode 100644 index 0000000..2d0c060 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_80c1fb9affbfac609ebf1cc5556aafb1ecd223c1.err @@ -0,0 +1 @@ +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":46},{"start":21,"end":23,"type":"role","value":45},{"start":25,"end":28,"type":"role","value":45},{"start":8,"end":29,"type":"role","value":59}]},"reason":{"str":"regular expression does not have any captures","attrs":[]},"snippets":[],"help":{"str":"","attrs":[]}} diff --git a/test/expected/test_sql_str_func.sh_80c1fb9affbfac609ebf1cc5556aafb1ecd223c1.out b/test/expected/test_sql_str_func.sh_80c1fb9affbfac609ebf1cc5556aafb1ecd223c1.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_80c1fb9affbfac609ebf1cc5556aafb1ecd223c1.out diff --git a/test/expected/test_sql_str_func.sh_836e3f721a0f945ad27e7aa241121ba739aab618.err b/test/expected/test_sql_str_func.sh_836e3f721a0f945ad27e7aa241121ba739aab618.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_836e3f721a0f945ad27e7aa241121ba739aab618.err diff --git a/test/expected/test_sql_str_func.sh_836e3f721a0f945ad27e7aa241121ba739aab618.out b/test/expected/test_sql_str_func.sh_836e3f721a0f945ad27e7aa241121ba739aab618.out new file mode 100644 index 0000000..c803da8 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_836e3f721a0f945ad27e7aa241121ba739aab618.out @@ -0,0 +1,2 @@ +Row 0: + Column encode('foo', null): (null) diff --git a/test/expected/test_sql_str_func.sh_838e9bc7873b2b238157ba0358e0dfd6a01d837d.err b/test/expected/test_sql_str_func.sh_838e9bc7873b2b238157ba0358e0dfd6a01d837d.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_838e9bc7873b2b238157ba0358e0dfd6a01d837d.err diff --git a/test/expected/test_sql_str_func.sh_838e9bc7873b2b238157ba0358e0dfd6a01d837d.out b/test/expected/test_sql_str_func.sh_838e9bc7873b2b238157ba0358e0dfd6a01d837d.out new file mode 100644 index 0000000..34bf1a0 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_838e9bc7873b2b238157ba0358e0dfd6a01d837d.out @@ -0,0 +1,2 @@ +Row 0: + Column result: {"foo":"abc","col_0":123} diff --git a/test/expected/test_sql_str_func.sh_84e77dedec887c5e2433dbc5b130000cd88963bd.err b/test/expected/test_sql_str_func.sh_84e77dedec887c5e2433dbc5b130000cd88963bd.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_84e77dedec887c5e2433dbc5b130000cd88963bd.err diff --git a/test/expected/test_sql_str_func.sh_84e77dedec887c5e2433dbc5b130000cd88963bd.out b/test/expected/test_sql_str_func.sh_84e77dedec887c5e2433dbc5b130000cd88963bd.out new file mode 100644 index 0000000..ec11590 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_84e77dedec887c5e2433dbc5b130000cd88963bd.out @@ -0,0 +1,2 @@ +Row 0: + Column result: (null) diff --git a/test/expected/test_sql_str_func.sh_887afe94962d958aca2e03f7873d58ca93e190b5.err b/test/expected/test_sql_str_func.sh_887afe94962d958aca2e03f7873d58ca93e190b5.err new file mode 100644 index 0000000..511fbab --- /dev/null +++ b/test/expected/test_sql_str_func.sh_887afe94962d958aca2e03f7873d58ca93e190b5.err @@ -0,0 +1 @@ +error: sqlite3_exec failed -- Expecting an value of 'base64', 'hex', or 'uri' for argument number 1 diff --git a/test/expected/test_sql_str_func.sh_887afe94962d958aca2e03f7873d58ca93e190b5.out b/test/expected/test_sql_str_func.sh_887afe94962d958aca2e03f7873d58ca93e190b5.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_887afe94962d958aca2e03f7873d58ca93e190b5.out diff --git a/test/expected/test_sql_str_func.sh_8c9ef83431ea75050fd16824075bf72056cf5f53.err b/test/expected/test_sql_str_func.sh_8c9ef83431ea75050fd16824075bf72056cf5f53.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_8c9ef83431ea75050fd16824075bf72056cf5f53.err diff --git a/test/expected/test_sql_str_func.sh_8c9ef83431ea75050fd16824075bf72056cf5f53.out b/test/expected/test_sql_str_func.sh_8c9ef83431ea75050fd16824075bf72056cf5f53.out new file mode 100644 index 0000000..724853b --- /dev/null +++ b/test/expected/test_sql_str_func.sh_8c9ef83431ea75050fd16824075bf72056cf5f53.out @@ -0,0 +1,2 @@ +Row 0: + Column humanize_file_size(10 * 1000 * 1000): 9.5MB diff --git a/test/expected/test_sql_str_func.sh_8cef54f0617960320b5d3615068eb27333dcf6a3.err b/test/expected/test_sql_str_func.sh_8cef54f0617960320b5d3615068eb27333dcf6a3.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_8cef54f0617960320b5d3615068eb27333dcf6a3.err diff --git a/test/expected/test_sql_str_func.sh_8cef54f0617960320b5d3615068eb27333dcf6a3.out b/test/expected/test_sql_str_func.sh_8cef54f0617960320b5d3615068eb27333dcf6a3.out new file mode 100644 index 0000000..233afd3 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_8cef54f0617960320b5d3615068eb27333dcf6a3.out @@ -0,0 +1,2 @@ +Row 0: + Column regexp('abcd', 'abcd'): 1 diff --git a/test/expected/test_sql_str_func.sh_8f4f0ed74c4dc6b821e02a44552b694614cd9353.err b/test/expected/test_sql_str_func.sh_8f4f0ed74c4dc6b821e02a44552b694614cd9353.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_8f4f0ed74c4dc6b821e02a44552b694614cd9353.err diff --git a/test/expected/test_sql_str_func.sh_8f4f0ed74c4dc6b821e02a44552b694614cd9353.out b/test/expected/test_sql_str_func.sh_8f4f0ed74c4dc6b821e02a44552b694614cd9353.out new file mode 100644 index 0000000..90f0972 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_8f4f0ed74c4dc6b821e02a44552b694614cd9353.out @@ -0,0 +1,2 @@ +Row 0: + Column regexp_match(null, 'abc'): (null) diff --git a/test/expected/test_sql_str_func.sh_949ffd5b2ef9fbcbe17f2e61ef7750f7038f6fd6.err b/test/expected/test_sql_str_func.sh_949ffd5b2ef9fbcbe17f2e61ef7750f7038f6fd6.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_949ffd5b2ef9fbcbe17f2e61ef7750f7038f6fd6.err diff --git a/test/expected/test_sql_str_func.sh_949ffd5b2ef9fbcbe17f2e61ef7750f7038f6fd6.out b/test/expected/test_sql_str_func.sh_949ffd5b2ef9fbcbe17f2e61ef7750f7038f6fd6.out new file mode 100644 index 0000000..f93d348 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_949ffd5b2ef9fbcbe17f2e61ef7750f7038f6fd6.out @@ -0,0 +1,2 @@ +regexp_match('^(\w+)=([^;]+);', 'abc=def;ghi=jkl;') +{"col_0":"abc","col_1":"def"} diff --git a/test/expected/test_sql_str_func.sh_a4d84a0082a7df34c95c2e6e070bbf6effaa5594.err b/test/expected/test_sql_str_func.sh_a4d84a0082a7df34c95c2e6e070bbf6effaa5594.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_a4d84a0082a7df34c95c2e6e070bbf6effaa5594.err diff --git a/test/expected/test_sql_str_func.sh_a4d84a0082a7df34c95c2e6e070bbf6effaa5594.out b/test/expected/test_sql_str_func.sh_a4d84a0082a7df34c95c2e6e070bbf6effaa5594.out new file mode 100644 index 0000000..067e846 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_a4d84a0082a7df34c95c2e6e070bbf6effaa5594.out @@ -0,0 +1,2 @@ +Row 0: + Column repl: test{ }1{ }2{ }3 diff --git a/test/expected/test_sql_str_func.sh_a515ba81cc3655c602da28cd0fa1a186d5e9a6e1.err b/test/expected/test_sql_str_func.sh_a515ba81cc3655c602da28cd0fa1a186d5e9a6e1.err new file mode 100644 index 0000000..475a9b2 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_a515ba81cc3655c602da28cd0fa1a186d5e9a6e1.err @@ -0,0 +1 @@ +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":[]}} diff --git a/test/expected/test_sql_str_func.sh_a515ba81cc3655c602da28cd0fa1a186d5e9a6e1.out b/test/expected/test_sql_str_func.sh_a515ba81cc3655c602da28cd0fa1a186d5e9a6e1.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_a515ba81cc3655c602da28cd0fa1a186d5e9a6e1.out diff --git a/test/expected/test_sql_str_func.sh_a65d2fb2f841578619528ca10168ca4d650218e9.err b/test/expected/test_sql_str_func.sh_a65d2fb2f841578619528ca10168ca4d650218e9.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_a65d2fb2f841578619528ca10168ca4d650218e9.err diff --git a/test/expected/test_sql_str_func.sh_a65d2fb2f841578619528ca10168ca4d650218e9.out b/test/expected/test_sql_str_func.sh_a65d2fb2f841578619528ca10168ca4d650218e9.out new file mode 100644 index 0000000..bf3f522 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_a65d2fb2f841578619528ca10168ca4d650218e9.out @@ -0,0 +1,3 @@ +Row 0: + Column typeof(result): real + Column result: 123.456 diff --git a/test/expected/test_sql_str_func.sh_ac7ecdda0fcc4279a4694291edaa2f1411f5262e.err b/test/expected/test_sql_str_func.sh_ac7ecdda0fcc4279a4694291edaa2f1411f5262e.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_ac7ecdda0fcc4279a4694291edaa2f1411f5262e.err diff --git a/test/expected/test_sql_str_func.sh_ac7ecdda0fcc4279a4694291edaa2f1411f5262e.out b/test/expected/test_sql_str_func.sh_ac7ecdda0fcc4279a4694291edaa2f1411f5262e.out new file mode 100644 index 0000000..0652eef --- /dev/null +++ b/test/expected/test_sql_str_func.sh_ac7ecdda0fcc4279a4694291edaa2f1411f5262e.out @@ -0,0 +1,2 @@ +Row 0: + Column repl: <\3><\3> <\3><\3> diff --git a/test/expected/test_sql_str_func.sh_b088735cf46f23ca3d5fb3da41f07a6a3b1cba35.err b/test/expected/test_sql_str_func.sh_b088735cf46f23ca3d5fb3da41f07a6a3b1cba35.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_b088735cf46f23ca3d5fb3da41f07a6a3b1cba35.err diff --git a/test/expected/test_sql_str_func.sh_b088735cf46f23ca3d5fb3da41f07a6a3b1cba35.out b/test/expected/test_sql_str_func.sh_b088735cf46f23ca3d5fb3da41f07a6a3b1cba35.out new file mode 100644 index 0000000..e93f55d --- /dev/null +++ b/test/expected/test_sql_str_func.sh_b088735cf46f23ca3d5fb3da41f07a6a3b1cba35.out @@ -0,0 +1,2 @@ +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} diff --git a/test/expected/test_sql_str_func.sh_b0e5bf23bbbc0defa8bb26817782c9d46a778ad8.err b/test/expected/test_sql_str_func.sh_b0e5bf23bbbc0defa8bb26817782c9d46a778ad8.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_b0e5bf23bbbc0defa8bb26817782c9d46a778ad8.err diff --git a/test/expected/test_sql_str_func.sh_b0e5bf23bbbc0defa8bb26817782c9d46a778ad8.out b/test/expected/test_sql_str_func.sh_b0e5bf23bbbc0defa8bb26817782c9d46a778ad8.out new file mode 100644 index 0000000..f94307e --- /dev/null +++ b/test/expected/test_sql_str_func.sh_b0e5bf23bbbc0defa8bb26817782c9d46a778ad8.out @@ -0,0 +1,16 @@ +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 diff --git a/test/expected/test_sql_str_func.sh_b2aafbcaa7befe426d3f9df71c24f16fdc9d2856.err b/test/expected/test_sql_str_func.sh_b2aafbcaa7befe426d3f9df71c24f16fdc9d2856.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_b2aafbcaa7befe426d3f9df71c24f16fdc9d2856.err diff --git a/test/expected/test_sql_str_func.sh_b2aafbcaa7befe426d3f9df71c24f16fdc9d2856.out b/test/expected/test_sql_str_func.sh_b2aafbcaa7befe426d3f9df71c24f16fdc9d2856.out new file mode 100644 index 0000000..3e3281a --- /dev/null +++ b/test/expected/test_sql_str_func.sh_b2aafbcaa7befe426d3f9df71c24f16fdc9d2856.out @@ -0,0 +1,3 @@ +Row 0: + Column typeof(result): integer + Column result: 123 diff --git a/test/expected/test_sql_str_func.sh_b81b27abfafbd357d41c407428d41ae0f4bb75e2.err b/test/expected/test_sql_str_func.sh_b81b27abfafbd357d41c407428d41ae0f4bb75e2.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_b81b27abfafbd357d41c407428d41ae0f4bb75e2.err diff --git a/test/expected/test_sql_str_func.sh_b81b27abfafbd357d41c407428d41ae0f4bb75e2.out b/test/expected/test_sql_str_func.sh_b81b27abfafbd357d41c407428d41ae0f4bb75e2.out new file mode 100644 index 0000000..70e423e --- /dev/null +++ b/test/expected/test_sql_str_func.sh_b81b27abfafbd357d41c407428d41ae0f4bb75e2.out @@ -0,0 +1,2 @@ +Row 0: + Column unparse_url(parse_url('https://example.com/search?flag')): https://example.com/search?flag diff --git a/test/expected/test_sql_str_func.sh_bac7f6531a2adf70cd1871fb13eab26dff133b7c.err b/test/expected/test_sql_str_func.sh_bac7f6531a2adf70cd1871fb13eab26dff133b7c.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_bac7f6531a2adf70cd1871fb13eab26dff133b7c.err diff --git a/test/expected/test_sql_str_func.sh_bac7f6531a2adf70cd1871fb13eab26dff133b7c.out b/test/expected/test_sql_str_func.sh_bac7f6531a2adf70cd1871fb13eab26dff133b7c.out new file mode 100644 index 0000000..daf8e0a --- /dev/null +++ b/test/expected/test_sql_str_func.sh_bac7f6531a2adf70cd1871fb13eab26dff133b7c.out @@ -0,0 +1,2 @@ +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} diff --git a/test/expected/test_sql_str_func.sh_bfb7088916412360f77683009058b0747784630a.err b/test/expected/test_sql_str_func.sh_bfb7088916412360f77683009058b0747784630a.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_bfb7088916412360f77683009058b0747784630a.err diff --git a/test/expected/test_sql_str_func.sh_bfb7088916412360f77683009058b0747784630a.out b/test/expected/test_sql_str_func.sh_bfb7088916412360f77683009058b0747784630a.out new file mode 100644 index 0000000..8a4e63d --- /dev/null +++ b/test/expected/test_sql_str_func.sh_bfb7088916412360f77683009058b0747784630a.out @@ -0,0 +1,2 @@ +Row 0: + Column repl: <\><\> <\><\> diff --git a/test/expected/test_sql_str_func.sh_bfe8b09e23389af0ef14359b66d68228d0285185.err b/test/expected/test_sql_str_func.sh_bfe8b09e23389af0ef14359b66d68228d0285185.err new file mode 100644 index 0000000..9b9cb88 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_bfe8b09e23389af0ef14359b66d68228d0285185.err @@ -0,0 +1 @@ +error: sqlite3_exec failed -- wrong number of arguments to function humanize_file_size() diff --git a/test/expected/test_sql_str_func.sh_bfe8b09e23389af0ef14359b66d68228d0285185.out b/test/expected/test_sql_str_func.sh_bfe8b09e23389af0ef14359b66d68228d0285185.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_bfe8b09e23389af0ef14359b66d68228d0285185.out diff --git a/test/expected/test_sql_str_func.sh_c26269b10b9b9e8485aa97c2be2afb2cc3ee910d.err b/test/expected/test_sql_str_func.sh_c26269b10b9b9e8485aa97c2be2afb2cc3ee910d.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_c26269b10b9b9e8485aa97c2be2afb2cc3ee910d.err diff --git a/test/expected/test_sql_str_func.sh_c26269b10b9b9e8485aa97c2be2afb2cc3ee910d.out b/test/expected/test_sql_str_func.sh_c26269b10b9b9e8485aa97c2be2afb2cc3ee910d.out new file mode 100644 index 0000000..f4fd280 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_c26269b10b9b9e8485aa97c2be2afb2cc3ee910d.out @@ -0,0 +1,2 @@ +Row 0: + Column gunzip(decode(encode(gzip('Hello, World!'), 'base64'), 'base64')): Hello, World! diff --git a/test/expected/test_sql_str_func.sh_c9e2f41431bef879364dc37a472ab01f64d89f89.err b/test/expected/test_sql_str_func.sh_c9e2f41431bef879364dc37a472ab01f64d89f89.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_c9e2f41431bef879364dc37a472ab01f64d89f89.err diff --git a/test/expected/test_sql_str_func.sh_c9e2f41431bef879364dc37a472ab01f64d89f89.out b/test/expected/test_sql_str_func.sh_c9e2f41431bef879364dc37a472ab01f64d89f89.out new file mode 100644 index 0000000..366c195 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_c9e2f41431bef879364dc37a472ab01f64d89f89.out @@ -0,0 +1,2 @@ +Row 0: + Column regexp('[e-z]+', 'abcd'): 0 diff --git a/test/expected/test_sql_str_func.sh_cc53348c585ee71a7456157ad6b125689813bafe.err b/test/expected/test_sql_str_func.sh_cc53348c585ee71a7456157ad6b125689813bafe.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_cc53348c585ee71a7456157ad6b125689813bafe.err diff --git a/test/expected/test_sql_str_func.sh_cc53348c585ee71a7456157ad6b125689813bafe.out b/test/expected/test_sql_str_func.sh_cc53348c585ee71a7456157ad6b125689813bafe.out new file mode 100644 index 0000000..548d900 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_cc53348c585ee71a7456157ad6b125689813bafe.out @@ -0,0 +1,2 @@ +Row 0: + Column encode(null, 'base64'): (null) diff --git a/test/expected/test_sql_str_func.sh_ce9db1dbc2e5fee87247135d17787ff3af014d77.err b/test/expected/test_sql_str_func.sh_ce9db1dbc2e5fee87247135d17787ff3af014d77.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_ce9db1dbc2e5fee87247135d17787ff3af014d77.err diff --git a/test/expected/test_sql_str_func.sh_ce9db1dbc2e5fee87247135d17787ff3af014d77.out b/test/expected/test_sql_str_func.sh_ce9db1dbc2e5fee87247135d17787ff3af014d77.out new file mode 100644 index 0000000..3b62dec --- /dev/null +++ b/test/expected/test_sql_str_func.sh_ce9db1dbc2e5fee87247135d17787ff3af014d77.out @@ -0,0 +1,2 @@ +Row 0: + Column result: {"foo":1} diff --git a/test/expected/test_sql_str_func.sh_d3367527118052081a541a660b091f6f495b1c0d.err b/test/expected/test_sql_str_func.sh_d3367527118052081a541a660b091f6f495b1c0d.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_d3367527118052081a541a660b091f6f495b1c0d.err diff --git a/test/expected/test_sql_str_func.sh_d3367527118052081a541a660b091f6f495b1c0d.out b/test/expected/test_sql_str_func.sh_d3367527118052081a541a660b091f6f495b1c0d.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_d3367527118052081a541a660b091f6f495b1c0d.out diff --git a/test/expected/test_sql_str_func.sh_d4bc869850f5b7e53353fc2506fea0c8e96f29c5.err b/test/expected/test_sql_str_func.sh_d4bc869850f5b7e53353fc2506fea0c8e96f29c5.err new file mode 100644 index 0000000..f4c8399 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_d4bc869850f5b7e53353fc2506fea0c8e96f29c5.err @@ -0,0 +1 @@ +error: sqlite3_exec failed -- Invalid regular expression: missing closing parenthesis diff --git a/test/expected/test_sql_str_func.sh_d4bc869850f5b7e53353fc2506fea0c8e96f29c5.out b/test/expected/test_sql_str_func.sh_d4bc869850f5b7e53353fc2506fea0c8e96f29c5.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_d4bc869850f5b7e53353fc2506fea0c8e96f29c5.out diff --git a/test/expected/test_sql_str_func.sh_d4e805ff08d4ccf62865dbf8db8d526f7ce02f37.err b/test/expected/test_sql_str_func.sh_d4e805ff08d4ccf62865dbf8db8d526f7ce02f37.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_d4e805ff08d4ccf62865dbf8db8d526f7ce02f37.err diff --git a/test/expected/test_sql_str_func.sh_d4e805ff08d4ccf62865dbf8db8d526f7ce02f37.out b/test/expected/test_sql_str_func.sh_d4e805ff08d4ccf62865dbf8db8d526f7ce02f37.out new file mode 100644 index 0000000..fb41ca4 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_d4e805ff08d4ccf62865dbf8db8d526f7ce02f37.out @@ -0,0 +1,2 @@ +Row 0: + Column result: {"foo":"abc","col_0":123.456} diff --git a/test/expected/test_sql_str_func.sh_d54a759f5683a22ad289129b2096b80652b1cc0c.err b/test/expected/test_sql_str_func.sh_d54a759f5683a22ad289129b2096b80652b1cc0c.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_d54a759f5683a22ad289129b2096b80652b1cc0c.err diff --git a/test/expected/test_sql_str_func.sh_d54a759f5683a22ad289129b2096b80652b1cc0c.out b/test/expected/test_sql_str_func.sh_d54a759f5683a22ad289129b2096b80652b1cc0c.out new file mode 100644 index 0000000..659abf7 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_d54a759f5683a22ad289129b2096b80652b1cc0c.out @@ -0,0 +1,47 @@ +[ + { + "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", + "--", + ">" + ] + } + } + } +] diff --git a/test/expected/test_sql_str_func.sh_d8d4cde8bbc98175069be579ff5634de43880b8c.err b/test/expected/test_sql_str_func.sh_d8d4cde8bbc98175069be579ff5634de43880b8c.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_d8d4cde8bbc98175069be579ff5634de43880b8c.err diff --git a/test/expected/test_sql_str_func.sh_d8d4cde8bbc98175069be579ff5634de43880b8c.out b/test/expected/test_sql_str_func.sh_d8d4cde8bbc98175069be579ff5634de43880b8c.out new file mode 100644 index 0000000..0c22818 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_d8d4cde8bbc98175069be579ff5634de43880b8c.out @@ -0,0 +1,2 @@ +Row 0: + Column startswith('.foo', '.'): 1 diff --git a/test/expected/test_sql_str_func.sh_e68167bf5edc7a7b1defd06bdfb694ffa8b00df2.err b/test/expected/test_sql_str_func.sh_e68167bf5edc7a7b1defd06bdfb694ffa8b00df2.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_e68167bf5edc7a7b1defd06bdfb694ffa8b00df2.err diff --git a/test/expected/test_sql_str_func.sh_e68167bf5edc7a7b1defd06bdfb694ffa8b00df2.out b/test/expected/test_sql_str_func.sh_e68167bf5edc7a7b1defd06bdfb694ffa8b00df2.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_e68167bf5edc7a7b1defd06bdfb694ffa8b00df2.out diff --git a/test/expected/test_sql_str_func.sh_ec939e82da809965c61f1c00f68d7afaa4a88382.err b/test/expected/test_sql_str_func.sh_ec939e82da809965c61f1c00f68d7afaa4a88382.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_ec939e82da809965c61f1c00f68d7afaa4a88382.err diff --git a/test/expected/test_sql_str_func.sh_ec939e82da809965c61f1c00f68d7afaa4a88382.out b/test/expected/test_sql_str_func.sh_ec939e82da809965c61f1c00f68d7afaa4a88382.out new file mode 100644 index 0000000..1fd3a79 --- /dev/null +++ b/test/expected/test_sql_str_func.sh_ec939e82da809965c61f1c00f68d7afaa4a88382.out @@ -0,0 +1,2 @@ +Row 0: + Column repl: {test}{} {1}{} {2}{} {3}{} diff --git a/test/expected/test_sql_time_func.sh_028e99419eb1ac80b03b36148ef1d4ae1c38c44c.err b/test/expected/test_sql_time_func.sh_028e99419eb1ac80b03b36148ef1d4ae1c38c44c.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_028e99419eb1ac80b03b36148ef1d4ae1c38c44c.err diff --git a/test/expected/test_sql_time_func.sh_028e99419eb1ac80b03b36148ef1d4ae1c38c44c.out b/test/expected/test_sql_time_func.sh_028e99419eb1ac80b03b36148ef1d4ae1c38c44c.out new file mode 100644 index 0000000..1cbda8c --- /dev/null +++ b/test/expected/test_sql_time_func.sh_028e99419eb1ac80b03b36148ef1d4ae1c38c44c.out @@ -0,0 +1,2 @@ +Row 0: + Column timediff('today', 'yesterday'): 86400.0 diff --git a/test/expected/test_sql_time_func.sh_123c85ff1178743f5cb78efeaf98b637bcbe55ff.err b/test/expected/test_sql_time_func.sh_123c85ff1178743f5cb78efeaf98b637bcbe55ff.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_123c85ff1178743f5cb78efeaf98b637bcbe55ff.err diff --git a/test/expected/test_sql_time_func.sh_123c85ff1178743f5cb78efeaf98b637bcbe55ff.out b/test/expected/test_sql_time_func.sh_123c85ff1178743f5cb78efeaf98b637bcbe55ff.out new file mode 100644 index 0000000..f209496 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_123c85ff1178743f5cb78efeaf98b637bcbe55ff.out @@ -0,0 +1,2 @@ +Row 0: + Column timeslice(null, null): (null) diff --git a/test/expected/test_sql_time_func.sh_14737ee9597b7d22519d23fbe34c0eb7d6c09ff2.err b/test/expected/test_sql_time_func.sh_14737ee9597b7d22519d23fbe34c0eb7d6c09ff2.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_14737ee9597b7d22519d23fbe34c0eb7d6c09ff2.err diff --git a/test/expected/test_sql_time_func.sh_14737ee9597b7d22519d23fbe34c0eb7d6c09ff2.out b/test/expected/test_sql_time_func.sh_14737ee9597b7d22519d23fbe34c0eb7d6c09ff2.out new file mode 100644 index 0000000..8566fb2 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_14737ee9597b7d22519d23fbe34c0eb7d6c09ff2.out @@ -0,0 +1,2 @@ +Row 0: + Column timeslice('2015-08-07 11:59:00', 'before 12pm'): 2015-08-07 00:00:00.000 diff --git a/test/expected/test_sql_time_func.sh_1fbeb1ba69a95284eb1d4d052f5068ede7968704.err b/test/expected/test_sql_time_func.sh_1fbeb1ba69a95284eb1d4d052f5068ede7968704.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_1fbeb1ba69a95284eb1d4d052f5068ede7968704.err diff --git a/test/expected/test_sql_time_func.sh_1fbeb1ba69a95284eb1d4d052f5068ede7968704.out b/test/expected/test_sql_time_func.sh_1fbeb1ba69a95284eb1d4d052f5068ede7968704.out new file mode 100644 index 0000000..1a4cb45 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_1fbeb1ba69a95284eb1d4d052f5068ede7968704.out @@ -0,0 +1,2 @@ +Row 0: + Column timeslice('2015-08-07 11:59:00', 'fri'): 2015-08-07 00:00:00.000 diff --git a/test/expected/test_sql_time_func.sh_20477acc218c96f1385dc97e4d28c80a05c93709.err b/test/expected/test_sql_time_func.sh_20477acc218c96f1385dc97e4d28c80a05c93709.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_20477acc218c96f1385dc97e4d28c80a05c93709.err diff --git a/test/expected/test_sql_time_func.sh_20477acc218c96f1385dc97e4d28c80a05c93709.out b/test/expected/test_sql_time_func.sh_20477acc218c96f1385dc97e4d28c80a05c93709.out new file mode 100644 index 0000000..ba1b6f3 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_20477acc218c96f1385dc97e4d28c80a05c93709.out @@ -0,0 +1,2 @@ +Row 0: + Column timeslice('2015-08-07 11:59:00', 'after fri'): (null) diff --git a/test/expected/test_sql_time_func.sh_243454526f6b5e19485db771b4932ddffd6f83a4.err b/test/expected/test_sql_time_func.sh_243454526f6b5e19485db771b4932ddffd6f83a4.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_243454526f6b5e19485db771b4932ddffd6f83a4.err diff --git a/test/expected/test_sql_time_func.sh_243454526f6b5e19485db771b4932ddffd6f83a4.out b/test/expected/test_sql_time_func.sh_243454526f6b5e19485db771b4932ddffd6f83a4.out new file mode 100644 index 0000000..7c5c9a3 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_243454526f6b5e19485db771b4932ddffd6f83a4.out @@ -0,0 +1,2 @@ +Row 0: + Column timeslice(1616300753.333, '100ms'): 2021-03-21 04:25:53.300 diff --git a/test/expected/test_sql_time_func.sh_28638a132caae65fd89a68459d1b4af0000b8aef.err b/test/expected/test_sql_time_func.sh_28638a132caae65fd89a68459d1b4af0000b8aef.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_28638a132caae65fd89a68459d1b4af0000b8aef.err diff --git a/test/expected/test_sql_time_func.sh_28638a132caae65fd89a68459d1b4af0000b8aef.out b/test/expected/test_sql_time_func.sh_28638a132caae65fd89a68459d1b4af0000b8aef.out new file mode 100644 index 0000000..46dac6c --- /dev/null +++ b/test/expected/test_sql_time_func.sh_28638a132caae65fd89a68459d1b4af0000b8aef.out @@ -0,0 +1,2 @@ +Row 0: + Column timeslice('2015-08-07 08:01:33', '8 am'): (null) diff --git a/test/expected/test_sql_time_func.sh_3b551281347a8144c84f00ade2664db9ac4aacab.err b/test/expected/test_sql_time_func.sh_3b551281347a8144c84f00ade2664db9ac4aacab.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_3b551281347a8144c84f00ade2664db9ac4aacab.err diff --git a/test/expected/test_sql_time_func.sh_3b551281347a8144c84f00ade2664db9ac4aacab.out b/test/expected/test_sql_time_func.sh_3b551281347a8144c84f00ade2664db9ac4aacab.out new file mode 100644 index 0000000..e029e45 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_3b551281347a8144c84f00ade2664db9ac4aacab.out @@ -0,0 +1,2 @@ +Row 0: + Column timediff('2017-01-02T05:00:00.100', '2017-01-02T05:00:00.000'): 0.1 diff --git a/test/expected/test_sql_time_func.sh_4035ee76938269e9247f9a696927a9ac18cce80a.err b/test/expected/test_sql_time_func.sh_4035ee76938269e9247f9a696927a9ac18cce80a.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_4035ee76938269e9247f9a696927a9ac18cce80a.err diff --git a/test/expected/test_sql_time_func.sh_4035ee76938269e9247f9a696927a9ac18cce80a.out b/test/expected/test_sql_time_func.sh_4035ee76938269e9247f9a696927a9ac18cce80a.out new file mode 100644 index 0000000..f575185 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_4035ee76938269e9247f9a696927a9ac18cce80a.out @@ -0,0 +1,2 @@ +Row 0: + Column timeslice('2015-08-07 12:01:00', '5m'): 2015-08-07 12:00:00.000 diff --git a/test/expected/test_sql_time_func.sh_42f0fc1a154b0d79b4f6e846f283426be498040f.err b/test/expected/test_sql_time_func.sh_42f0fc1a154b0d79b4f6e846f283426be498040f.err new file mode 100644 index 0000000..fa2cecd --- /dev/null +++ b/test/expected/test_sql_time_func.sh_42f0fc1a154b0d79b4f6e846f283426be498040f.err @@ -0,0 +1 @@ +error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"call to timeslice(time, slice) failed","attrs":[{"start":8,"end":17,"type":"role","value":46},{"start":18,"end":22,"type":"role","value":45},{"start":24,"end":29,"type":"role","value":45},{"start":8,"end":30,"type":"role","value":59}]},"reason":{"str":"unable to parse time slice value: blah -- Unrecognized input","attrs":[]},"snippets":[],"help":{"str":"","attrs":[]}} diff --git a/test/expected/test_sql_time_func.sh_42f0fc1a154b0d79b4f6e846f283426be498040f.out b/test/expected/test_sql_time_func.sh_42f0fc1a154b0d79b4f6e846f283426be498040f.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_42f0fc1a154b0d79b4f6e846f283426be498040f.out diff --git a/test/expected/test_sql_time_func.sh_4b96fe71bc2d18955e3625b765a6095ab1f7a75d.err b/test/expected/test_sql_time_func.sh_4b96fe71bc2d18955e3625b765a6095ab1f7a75d.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_4b96fe71bc2d18955e3625b765a6095ab1f7a75d.err diff --git a/test/expected/test_sql_time_func.sh_4b96fe71bc2d18955e3625b765a6095ab1f7a75d.out b/test/expected/test_sql_time_func.sh_4b96fe71bc2d18955e3625b765a6095ab1f7a75d.out new file mode 100644 index 0000000..088f537 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_4b96fe71bc2d18955e3625b765a6095ab1f7a75d.out @@ -0,0 +1,2 @@ +Row 0: + Column timeslice('2015-08-07 12:01:00', 'after 12pm'): 2015-08-07 12:00:00.000 diff --git a/test/expected/test_sql_time_func.sh_53b76b094e47691b5bca106142ee470e82e8e420.err b/test/expected/test_sql_time_func.sh_53b76b094e47691b5bca106142ee470e82e8e420.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_53b76b094e47691b5bca106142ee470e82e8e420.err diff --git a/test/expected/test_sql_time_func.sh_53b76b094e47691b5bca106142ee470e82e8e420.out b/test/expected/test_sql_time_func.sh_53b76b094e47691b5bca106142ee470e82e8e420.out new file mode 100644 index 0000000..b5d1a46 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_53b76b094e47691b5bca106142ee470e82e8e420.out @@ -0,0 +1,2 @@ +Row 0: + Column timeslice('2015-08-07 12:01:00', '1 month'): 2015-08-03 00:00:00.000 diff --git a/test/expected/test_sql_time_func.sh_6288a9e690d381602b2be5665cc1cd3552733bc2.err b/test/expected/test_sql_time_func.sh_6288a9e690d381602b2be5665cc1cd3552733bc2.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_6288a9e690d381602b2be5665cc1cd3552733bc2.err diff --git a/test/expected/test_sql_time_func.sh_6288a9e690d381602b2be5665cc1cd3552733bc2.out b/test/expected/test_sql_time_func.sh_6288a9e690d381602b2be5665cc1cd3552733bc2.out new file mode 100644 index 0000000..e1e9cb6 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_6288a9e690d381602b2be5665cc1cd3552733bc2.out @@ -0,0 +1,2 @@ +Row 0: + Column timeslice('2015-08-07 12:01:00', 'before 12pm'): (null) diff --git a/test/expected/test_sql_time_func.sh_652bbd00b5159e22d94970ab1e882997d14b5777.err b/test/expected/test_sql_time_func.sh_652bbd00b5159e22d94970ab1e882997d14b5777.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_652bbd00b5159e22d94970ab1e882997d14b5777.err diff --git a/test/expected/test_sql_time_func.sh_652bbd00b5159e22d94970ab1e882997d14b5777.out b/test/expected/test_sql_time_func.sh_652bbd00b5159e22d94970ab1e882997d14b5777.out new file mode 100644 index 0000000..f09bc3f --- /dev/null +++ b/test/expected/test_sql_time_func.sh_652bbd00b5159e22d94970ab1e882997d14b5777.out @@ -0,0 +1,2 @@ +Row 0: + Column timeslice('2015-08-07 11:59:00', 'after 12pm'): (null) diff --git a/test/expected/test_sql_time_func.sh_6832a58259168622af8b3370b0c89534f98f3f9f.err b/test/expected/test_sql_time_func.sh_6832a58259168622af8b3370b0c89534f98f3f9f.err new file mode 100644 index 0000000..f8b9601 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_6832a58259168622af8b3370b0c89534f98f3f9f.err @@ -0,0 +1 @@ +error: sqlite3_exec failed -- timeslice() expects between 1 and 2 arguments diff --git a/test/expected/test_sql_time_func.sh_6832a58259168622af8b3370b0c89534f98f3f9f.out b/test/expected/test_sql_time_func.sh_6832a58259168622af8b3370b0c89534f98f3f9f.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_6832a58259168622af8b3370b0c89534f98f3f9f.out diff --git a/test/expected/test_sql_time_func.sh_72862ec9c8f261a8507d237eb673c7ddfaafd898.err b/test/expected/test_sql_time_func.sh_72862ec9c8f261a8507d237eb673c7ddfaafd898.err new file mode 100644 index 0000000..c789e93 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_72862ec9c8f261a8507d237eb673c7ddfaafd898.err @@ -0,0 +1 @@ +error: sqlite3_exec failed -- lnav-error:{"level":"error","message":{"str":"call to timeslice(time, slice) failed","attrs":[{"start":8,"end":17,"type":"role","value":46},{"start":18,"end":22,"type":"role","value":45},{"start":24,"end":29,"type":"role","value":45},{"start":8,"end":30,"type":"role","value":59}]},"reason":{"str":"no time slice value given","attrs":[]},"snippets":[],"help":{"str":"","attrs":[]}} diff --git a/test/expected/test_sql_time_func.sh_72862ec9c8f261a8507d237eb673c7ddfaafd898.out b/test/expected/test_sql_time_func.sh_72862ec9c8f261a8507d237eb673c7ddfaafd898.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_72862ec9c8f261a8507d237eb673c7ddfaafd898.out diff --git a/test/expected/test_sql_time_func.sh_7797302b63d73234c9ec9f0405c7c0a748daf8e9.err b/test/expected/test_sql_time_func.sh_7797302b63d73234c9ec9f0405c7c0a748daf8e9.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_7797302b63d73234c9ec9f0405c7c0a748daf8e9.err diff --git a/test/expected/test_sql_time_func.sh_7797302b63d73234c9ec9f0405c7c0a748daf8e9.out b/test/expected/test_sql_time_func.sh_7797302b63d73234c9ec9f0405c7c0a748daf8e9.out new file mode 100644 index 0000000..1f9d1e1 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_7797302b63d73234c9ec9f0405c7c0a748daf8e9.out @@ -0,0 +1,2 @@ +Row 0: + Column timediff('foo', 'yesterday'): (null) diff --git a/test/expected/test_sql_time_func.sh_9569ab40cb2e51c60f818a6c2729c60d86565e7e.err b/test/expected/test_sql_time_func.sh_9569ab40cb2e51c60f818a6c2729c60d86565e7e.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_9569ab40cb2e51c60f818a6c2729c60d86565e7e.err diff --git a/test/expected/test_sql_time_func.sh_9569ab40cb2e51c60f818a6c2729c60d86565e7e.out b/test/expected/test_sql_time_func.sh_9569ab40cb2e51c60f818a6c2729c60d86565e7e.out new file mode 100644 index 0000000..de734a9 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_9569ab40cb2e51c60f818a6c2729c60d86565e7e.out @@ -0,0 +1,2 @@ +Row 0: + Column timeslice('2015-02-01T05:10:00'): 2015-02-01 05:00:00.000 diff --git a/test/expected/test_sql_time_func.sh_9e649c4bc10f4d178519983358f7092e9c5dfe71.err b/test/expected/test_sql_time_func.sh_9e649c4bc10f4d178519983358f7092e9c5dfe71.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_9e649c4bc10f4d178519983358f7092e9c5dfe71.err diff --git a/test/expected/test_sql_time_func.sh_9e649c4bc10f4d178519983358f7092e9c5dfe71.out b/test/expected/test_sql_time_func.sh_9e649c4bc10f4d178519983358f7092e9c5dfe71.out new file mode 100644 index 0000000..74ec041 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_9e649c4bc10f4d178519983358f7092e9c5dfe71.out @@ -0,0 +1,2 @@ +Row 0: + Column timeslice('2015-08-07 12:01:00', '1d'): 2015-08-07 00:00:00.000 diff --git a/test/expected/test_sql_time_func.sh_b0257ced663fc444801a5e6cba89c3053acca11e.err b/test/expected/test_sql_time_func.sh_b0257ced663fc444801a5e6cba89c3053acca11e.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_b0257ced663fc444801a5e6cba89c3053acca11e.err diff --git a/test/expected/test_sql_time_func.sh_b0257ced663fc444801a5e6cba89c3053acca11e.out b/test/expected/test_sql_time_func.sh_b0257ced663fc444801a5e6cba89c3053acca11e.out new file mode 100644 index 0000000..e913429 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_b0257ced663fc444801a5e6cba89c3053acca11e.out @@ -0,0 +1,2 @@ +Row 0: + Column timeslice('2015-08-07 12:01:00', 'before fri'): (null) diff --git a/test/expected/test_sql_time_func.sh_b5f9ec3ea8b4551fd40017398d74c524fb54ebc9.err b/test/expected/test_sql_time_func.sh_b5f9ec3ea8b4551fd40017398d74c524fb54ebc9.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_b5f9ec3ea8b4551fd40017398d74c524fb54ebc9.err diff --git a/test/expected/test_sql_time_func.sh_b5f9ec3ea8b4551fd40017398d74c524fb54ebc9.out b/test/expected/test_sql_time_func.sh_b5f9ec3ea8b4551fd40017398d74c524fb54ebc9.out new file mode 100644 index 0000000..f18a8b8 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_b5f9ec3ea8b4551fd40017398d74c524fb54ebc9.out @@ -0,0 +1,2 @@ +Row 0: + Column timeslice(null): (null) diff --git a/test/expected/test_sql_time_func.sh_dbe786c096d5a7a5e1d05311b929f1427d8bac79.err b/test/expected/test_sql_time_func.sh_dbe786c096d5a7a5e1d05311b929f1427d8bac79.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_dbe786c096d5a7a5e1d05311b929f1427d8bac79.err diff --git a/test/expected/test_sql_time_func.sh_dbe786c096d5a7a5e1d05311b929f1427d8bac79.out b/test/expected/test_sql_time_func.sh_dbe786c096d5a7a5e1d05311b929f1427d8bac79.out new file mode 100644 index 0000000..2729e3c --- /dev/null +++ b/test/expected/test_sql_time_func.sh_dbe786c096d5a7a5e1d05311b929f1427d8bac79.out @@ -0,0 +1,2 @@ +Row 0: + Column timeslice('2015-08-07 12:01:00', '8 am'): (null) diff --git a/test/expected/test_sql_time_func.sh_f3b1ea49779117bf45f85ad5615fdc5e89193db6.err b/test/expected/test_sql_time_func.sh_f3b1ea49779117bf45f85ad5615fdc5e89193db6.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_time_func.sh_f3b1ea49779117bf45f85ad5615fdc5e89193db6.err diff --git a/test/expected/test_sql_time_func.sh_f3b1ea49779117bf45f85ad5615fdc5e89193db6.out b/test/expected/test_sql_time_func.sh_f3b1ea49779117bf45f85ad5615fdc5e89193db6.out new file mode 100644 index 0000000..8687c5d --- /dev/null +++ b/test/expected/test_sql_time_func.sh_f3b1ea49779117bf45f85ad5615fdc5e89193db6.out @@ -0,0 +1,2 @@ +Row 0: + Column timeslice('2015-08-07 08:00:33', '8 am'): 2015-08-07 08:00:00.000 diff --git a/test/expected/test_sql_views_vtab.sh_28e23f4e98b1acd6478e39844fd9306b444550c3.err b/test/expected/test_sql_views_vtab.sh_28e23f4e98b1acd6478e39844fd9306b444550c3.err new file mode 100644 index 0000000..6568331 --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_28e23f4e98b1acd6478e39844fd9306b444550c3.err @@ -0,0 +1,4 @@ +[1m[31m✘ error[0m: SQL statement failed + [1m[31mreason[0m: Only the top view in the stack can be deleted +[36m --> [0m[1mcommand-option[0m:2 +[36m | [0m[37m[40m;[0m[1m[36m[40mDELETE[0m[37m[40m [0m[1m[36m[40mFROM[0m[37m[40m [0m[37m[40mlnav_view_stack[0m[37m[40m [0m[1m[36m[40mWHERE[0m[37m[40m [0m[37m[40mname[0m[37m[40m [0m[1m[37m[40m=[0m[37m[40m [0m[35m[40m'log'[0m diff --git a/test/expected/test_sql_views_vtab.sh_28e23f4e98b1acd6478e39844fd9306b444550c3.out b/test/expected/test_sql_views_vtab.sh_28e23f4e98b1acd6478e39844fd9306b444550c3.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_28e23f4e98b1acd6478e39844fd9306b444550c3.out diff --git a/test/expected/test_sql_views_vtab.sh_32acc1a8bb5028636fdbf08f077f9a835ab51bec.err b/test/expected/test_sql_views_vtab.sh_32acc1a8bb5028636fdbf08f077f9a835ab51bec.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_32acc1a8bb5028636fdbf08f077f9a835ab51bec.err diff --git a/test/expected/test_sql_views_vtab.sh_32acc1a8bb5028636fdbf08f077f9a835ab51bec.out b/test/expected/test_sql_views_vtab.sh_32acc1a8bb5028636fdbf08f077f9a835ab51bec.out new file mode 100644 index 0000000..710f668 --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_32acc1a8bb5028636fdbf08f077f9a835ab51bec.out @@ -0,0 +1,19 @@ +[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 + diff --git a/test/expected/test_sql_views_vtab.sh_485a6ac7c69bd4b5d34d3399a9c17f6a2dc89ad3.err b/test/expected/test_sql_views_vtab.sh_485a6ac7c69bd4b5d34d3399a9c17f6a2dc89ad3.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_485a6ac7c69bd4b5d34d3399a9c17f6a2dc89ad3.err diff --git a/test/expected/test_sql_views_vtab.sh_485a6ac7c69bd4b5d34d3399a9c17f6a2dc89ad3.out b/test/expected/test_sql_views_vtab.sh_485a6ac7c69bd4b5d34d3399a9c17f6a2dc89ad3.out new file mode 100644 index 0000000..bfe5f1e --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_485a6ac7c69bd4b5d34d3399a9c17f6a2dc89ad3.out @@ -0,0 +1 @@ +[33m2014-10-08 16:56:38,344:[0m[7m[33mWARN[0m[33m:foo bar baz[0m diff --git a/test/expected/test_sql_views_vtab.sh_62d15cb9d5a9259f198aa01ca8ed200d6da38d68.err b/test/expected/test_sql_views_vtab.sh_62d15cb9d5a9259f198aa01ca8ed200d6da38d68.err new file mode 100644 index 0000000..0c9a2b7 --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_62d15cb9d5a9259f198aa01ca8ed200d6da38d68.err @@ -0,0 +1,4 @@ +[1m[31m✘ error[0m: SQL statement failed + [1m[31mreason[0m: filter already exists -- :filter-in vmk +[36m --> [0m[1mcommand-option[0m:3 +[36m | [0m[37m[40m;[0m[1m[36m[40mUPDATE[0m[37m[40m [0m[37m[40mlnav_view_filters[0m[37m[40m [0m[1m[36m[40mSET[0m[37m[40m [0m[37m[40mpattern[0m[37m[40m [0m[1m[37m[40m=[0m[37m[40m [0m[35m[40m'vmk'[0m diff --git a/test/expected/test_sql_views_vtab.sh_62d15cb9d5a9259f198aa01ca8ed200d6da38d68.out b/test/expected/test_sql_views_vtab.sh_62d15cb9d5a9259f198aa01ca8ed200d6da38d68.out new file mode 100644 index 0000000..48f52f3 --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_62d15cb9d5a9259f198aa01ca8ed200d6da38d68.out @@ -0,0 +1,3 @@ +[1m[4mview_name [0m[1m[4m[7mfilter_id [0m[1m[4m[7menabled [0m[1m[4mtype [0m[1m[4mlanguage [0m[1m[4mpattern [0m +[1m[7ml[0m[1m[7mo[0m[1mg [0m[1m [0m[1m 1[0m[1m [0m[1m 1[0m[1m [0m[1min [0m[1m [0m[1mregex [0m[1m [0m[1mvmk [0m +[7mlog [0m[7m [0m[7m 2[0m[7m [0m[7m [0m[7m [0m 1 in regex vmk1 diff --git a/test/expected/test_sql_views_vtab.sh_662b5f9b17aa69a8e3aa9a18acb30d9acf6e2837.err b/test/expected/test_sql_views_vtab.sh_662b5f9b17aa69a8e3aa9a18acb30d9acf6e2837.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_662b5f9b17aa69a8e3aa9a18acb30d9acf6e2837.err diff --git a/test/expected/test_sql_views_vtab.sh_662b5f9b17aa69a8e3aa9a18acb30d9acf6e2837.out b/test/expected/test_sql_views_vtab.sh_662b5f9b17aa69a8e3aa9a18acb30d9acf6e2837.out new file mode 100644 index 0000000..2678e6c --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_662b5f9b17aa69a8e3aa9a18acb30d9acf6e2837.out @@ -0,0 +1 @@ +[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 diff --git a/test/expected/test_sql_views_vtab.sh_6ffd89498b9a7758ded6717148fc2ce77a12621b.err b/test/expected/test_sql_views_vtab.sh_6ffd89498b9a7758ded6717148fc2ce77a12621b.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_6ffd89498b9a7758ded6717148fc2ce77a12621b.err diff --git a/test/expected/test_sql_views_vtab.sh_6ffd89498b9a7758ded6717148fc2ce77a12621b.out b/test/expected/test_sql_views_vtab.sh_6ffd89498b9a7758ded6717148fc2ce77a12621b.out new file mode 100644 index 0000000..1ad5fbf --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_6ffd89498b9a7758ded6717148fc2ce77a12621b.out @@ -0,0 +1,2 @@ +[1m[4msearch [0m +warn diff --git a/test/expected/test_sql_views_vtab.sh_764ea85863d4f0ea3b7cb40850ac7c8fde682d57.err b/test/expected/test_sql_views_vtab.sh_764ea85863d4f0ea3b7cb40850ac7c8fde682d57.err new file mode 100644 index 0000000..482241e --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_764ea85863d4f0ea3b7cb40850ac7c8fde682d57.err @@ -0,0 +1,4 @@ +[1m[31m✘ error[0m: SQL statement failed + [1m[31mreason[0m: Expecting a non-empty pattern value +[36m --> [0m[1mcommand-option[0m:1 +[36m | [0m[37m[40m;[0m[1m[36m[40mINSERT[0m[37m[40m [0m[1m[36m[40mINTO[0m[37m[40m [0m[37m[40mlnav_view_filters[0m[37m[40m [0m[1m[36m[40mVALUES[0m[37m[40m ([0m[35m[40m'log'[0m[37m[40m, [0m[1m[37m[40m0[0m[37m[40m, [0m[1m[37m[40m1[0m[37m[40m, [0m[35m[40m'out'[0m[37m[40m, [0m[35m[40m'regex'[0m[37m[40m, [0m[35m[40m''[0m[37m[40m)[0m diff --git a/test/expected/test_sql_views_vtab.sh_764ea85863d4f0ea3b7cb40850ac7c8fde682d57.out b/test/expected/test_sql_views_vtab.sh_764ea85863d4f0ea3b7cb40850ac7c8fde682d57.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_764ea85863d4f0ea3b7cb40850ac7c8fde682d57.out diff --git a/test/expected/test_sql_views_vtab.sh_81dc3eb51ec4dc3066a2365524001242c423a9cf.err b/test/expected/test_sql_views_vtab.sh_81dc3eb51ec4dc3066a2365524001242c423a9cf.err new file mode 100644 index 0000000..6787d65 --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_81dc3eb51ec4dc3066a2365524001242c423a9cf.err @@ -0,0 +1,4 @@ +[1m[31m✘ error[0m: SQL statement failed + [1m[31mreason[0m: A SQL expression filter already exists +[36m --> [0m[1mcommand-option[0m:2 +[36m | [0m[37m[40m;[0m[1m[36m[40mINSERT[0m[37m[40m [0m[1m[36m[40mINTO[0m[37m[40m [0m[1m[37m[40mlnav_view_filters[0m[1m[37m[40m [0m[37m[40m([0m[37m[40mview_name[0m[37m[40m, [0m[37m[40mlanguage[0m[37m[40m, [0m[37m[40mpattern[0m[37m[40m) [0m[1m[36m[40mVALUES[0m[37m[40m ([0m[35m[40m'log'[0m[37m[40m, [0m[35m[40m'sql'[0m[37m[40m, [0m[35m[40m'1'[0m[37m[40m)[0m diff --git a/test/expected/test_sql_views_vtab.sh_81dc3eb51ec4dc3066a2365524001242c423a9cf.out b/test/expected/test_sql_views_vtab.sh_81dc3eb51ec4dc3066a2365524001242c423a9cf.out new file mode 100644 index 0000000..c99c751 --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_81dc3eb51ec4dc3066a2365524001242c423a9cf.out @@ -0,0 +1,2 @@ +[1m[4mview_name [0m[1m[4m[7mfilter_id [0m[1m[4m[7menabled [0m[1m[4mtype [0m[1m[4mlanguage [0m[1m[4mpattern [0m +[1m[7mlog [0m[1m[7m [0m[1m[7m 0[0m[1m[7m [0m[1m[7m 1[0m[1m[7m [0m[1m[7mout [0m[1m[7m [0m[1m[7msql [0m[1m[7m [0m[1m[7m1 [0m[1m [0m diff --git a/test/expected/test_sql_views_vtab.sh_81ffd4ed3f62228494a966512791202cea7e3b57.err b/test/expected/test_sql_views_vtab.sh_81ffd4ed3f62228494a966512791202cea7e3b57.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_81ffd4ed3f62228494a966512791202cea7e3b57.err diff --git a/test/expected/test_sql_views_vtab.sh_81ffd4ed3f62228494a966512791202cea7e3b57.out b/test/expected/test_sql_views_vtab.sh_81ffd4ed3f62228494a966512791202cea7e3b57.out new file mode 100644 index 0000000..d51a68c --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_81ffd4ed3f62228494a966512791202cea7e3b57.out @@ -0,0 +1,2 @@ +[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" diff --git a/test/expected/test_sql_views_vtab.sh_87f53d441e22c1d27c27eaa6003c83da1207c063.err b/test/expected/test_sql_views_vtab.sh_87f53d441e22c1d27c27eaa6003c83da1207c063.err new file mode 100644 index 0000000..609aacb --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_87f53d441e22c1d27c27eaa6003c83da1207c063.err @@ -0,0 +1,4 @@ +[1m[31m✘ error[0m: SQL statement failed + [1m[31mreason[0m: Expecting an lnav view name for column number 0 +[36m --> [0m[1mcommand-option[0m:1 +[36m | [0m[37m[40m;[0m[1m[36m[40mINSERT[0m[37m[40m [0m[1m[36m[40mINTO[0m[37m[40m [0m[37m[40mlnav_view_filters[0m[37m[40m [0m[1m[36m[40mVALUES[0m[37m[40m ([0m[35m[40m'bad'[0m[37m[40m, [0m[1m[37m[40m0[0m[37m[40m, [0m[1m[37m[40m1[0m[37m[40m, [0m[35m[40m'out'[0m[37m[40m, [0m[35m[40m'regex'[0m[37m[40m, [0m[35m[40m'abc'[0m[37m[40m)[0m diff --git a/test/expected/test_sql_views_vtab.sh_87f53d441e22c1d27c27eaa6003c83da1207c063.out b/test/expected/test_sql_views_vtab.sh_87f53d441e22c1d27c27eaa6003c83da1207c063.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_87f53d441e22c1d27c27eaa6003c83da1207c063.out diff --git a/test/expected/test_sql_views_vtab.sh_977cdf5d396522194d6b9e945169ff8073b4296b.err b/test/expected/test_sql_views_vtab.sh_977cdf5d396522194d6b9e945169ff8073b4296b.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_977cdf5d396522194d6b9e945169ff8073b4296b.err diff --git a/test/expected/test_sql_views_vtab.sh_977cdf5d396522194d6b9e945169ff8073b4296b.out b/test/expected/test_sql_views_vtab.sh_977cdf5d396522194d6b9e945169ff8073b4296b.out new file mode 100644 index 0000000..d51a68c --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_977cdf5d396522194d6b9e945169ff8073b4296b.out @@ -0,0 +1,2 @@ +[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" diff --git a/test/expected/test_sql_views_vtab.sh_9a5be90921256e90428c77753eca5ea0d31bd910.err b/test/expected/test_sql_views_vtab.sh_9a5be90921256e90428c77753eca5ea0d31bd910.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_9a5be90921256e90428c77753eca5ea0d31bd910.err diff --git a/test/expected/test_sql_views_vtab.sh_9a5be90921256e90428c77753eca5ea0d31bd910.out b/test/expected/test_sql_views_vtab.sh_9a5be90921256e90428c77753eca5ea0d31bd910.out new file mode 100644 index 0000000..8ee2f08 --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_9a5be90921256e90428c77753eca5ea0d31bd910.out @@ -0,0 +1,2 @@ +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/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7" diff --git a/test/expected/test_sql_views_vtab.sh_a2c0f0e51b3f85ea2a05ecdcacaad962b4fe5d4f.err b/test/expected/test_sql_views_vtab.sh_a2c0f0e51b3f85ea2a05ecdcacaad962b4fe5d4f.err new file mode 100644 index 0000000..a0853fd --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_a2c0f0e51b3f85ea2a05ecdcacaad962b4fe5d4f.err @@ -0,0 +1,4 @@ +[1m[31m✘ error[0m: SQL statement failed + [1m[31mreason[0m: filter already exists -- :filter-in vmk +[36m --> [0m[1mcommand-option[0m:2 +[36m | [0m[37m[40m;[0m[1m[36m[40mINSERT[0m[37m[40m [0m[1m[36m[40mINTO[0m[37m[40m [0m[1m[37m[40mlnav_view_filters[0m[1m[37m[40m [0m[37m[40m([0m[37m[40mview_name[0m[37m[40m, [0m[37m[40mpattern[0m[37m[40m, [0m[37m[40mtype[0m[37m[40m) [0m[1m[36m[40mVALUES[0m[37m[40m ([0m[35m[40m'log'[0m[37m[40m, [0m[35m[40m'vmk'[0m[37m[40m, [0m[35m[40m'in'[0m[37m[40m)[0m diff --git a/test/expected/test_sql_views_vtab.sh_a2c0f0e51b3f85ea2a05ecdcacaad962b4fe5d4f.out b/test/expected/test_sql_views_vtab.sh_a2c0f0e51b3f85ea2a05ecdcacaad962b4fe5d4f.out new file mode 100644 index 0000000..38afb7c --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_a2c0f0e51b3f85ea2a05ecdcacaad962b4fe5d4f.out @@ -0,0 +1,2 @@ +[1m[4mview_name [0m[1m[4m[7mfilter_id [0m[1m[4m[7menabled [0m[1m[4mtype [0m[1m[4mlanguage [0m[1m[4mpattern [0m +[1m[7ml[0m[1m[7mo[0m[1mg [0m[1m [0m[1m 1[0m[1m [0m[1m 1[0m[1m [0m[1min [0m[1m [0m[1mregex [0m[1m [0m[1mvmk [0m diff --git a/test/expected/test_sql_views_vtab.sh_ac1f6e9a88608ef8939f9c2f7061a25a86742d46.err b/test/expected/test_sql_views_vtab.sh_ac1f6e9a88608ef8939f9c2f7061a25a86742d46.err new file mode 100644 index 0000000..66b8e6a --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_ac1f6e9a88608ef8939f9c2f7061a25a86742d46.err @@ -0,0 +1,4 @@ +[1m[31m✘ error[0m: SQL statement failed + [1m[31mreason[0m: The lnav_view_stack table cannot be updated +[36m --> [0m[1mcommand-option[0m:1 +[36m | [0m[37m[40m;[0m[1m[36m[40mUPDATE[0m[37m[40m [0m[37m[40mlnav_view_stack[0m[37m[40m [0m[1m[36m[40mSET[0m[37m[40m [0m[37m[40mname[0m[37m[40m [0m[1m[37m[40m=[0m[37m[40m [0m[35m[40m'foo'[0m diff --git a/test/expected/test_sql_views_vtab.sh_ac1f6e9a88608ef8939f9c2f7061a25a86742d46.out b/test/expected/test_sql_views_vtab.sh_ac1f6e9a88608ef8939f9c2f7061a25a86742d46.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_ac1f6e9a88608ef8939f9c2f7061a25a86742d46.out diff --git a/test/expected/test_sql_views_vtab.sh_ade121f29bedea0d1a54452cc994b2302ad9dabb.err b/test/expected/test_sql_views_vtab.sh_ade121f29bedea0d1a54452cc994b2302ad9dabb.err new file mode 100644 index 0000000..dd46516 --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_ade121f29bedea0d1a54452cc994b2302ad9dabb.err @@ -0,0 +1,4 @@ +[1m[31m✘ error[0m: SQL statement failed + [1m[31mreason[0m: Invalid regular expression for pattern: missing closing parenthesis at offset 4 +[36m --> [0m[1mcommand-option[0m:1 +[36m | [0m[37m[40m;[0m[1m[36m[40mINSERT[0m[37m[40m [0m[1m[36m[40mINTO[0m[37m[40m [0m[37m[40mlnav_view_filters[0m[37m[40m [0m[1m[36m[40mVALUES[0m[37m[40m ([0m[35m[40m'log'[0m[37m[40m, [0m[1m[37m[40m0[0m[37m[40m, [0m[1m[37m[40m1[0m[37m[40m, [0m[35m[40m'out'[0m[37m[40m, [0m[35m[40m'regex'[0m[37m[40m, [0m[35m[40m'abc('[0m[37m[40m)[0m diff --git a/test/expected/test_sql_views_vtab.sh_ade121f29bedea0d1a54452cc994b2302ad9dabb.out b/test/expected/test_sql_views_vtab.sh_ade121f29bedea0d1a54452cc994b2302ad9dabb.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_ade121f29bedea0d1a54452cc994b2302ad9dabb.out diff --git a/test/expected/test_sql_views_vtab.sh_c851bdf3ba2f56fac5a216457b2d11a109e77f03.err b/test/expected/test_sql_views_vtab.sh_c851bdf3ba2f56fac5a216457b2d11a109e77f03.err new file mode 100644 index 0000000..4276af6 --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_c851bdf3ba2f56fac5a216457b2d11a109e77f03.err @@ -0,0 +1,4 @@ +[1m[31m✘ error[0m: SQL statement failed + [1m[31mreason[0m: Invalid time: bad-time +[36m --> [0m[1mcommand-option[0m:1 +[36m | [0m[37m[40m;[0m[1m[36m[40mUPDATE[0m[37m[40m [0m[37m[40mlnav_views[0m[37m[40m [0m[1m[36m[40mSET[0m[37m[40m [0m[37m[40mtop_time[0m[37m[40m [0m[1m[37m[40m=[0m[37m[40m [0m[35m[40m'bad-time'[0m[37m[40m [0m[1m[36m[40mWHERE[0m[37m[40m [0m[37m[40mname[0m[37m[40m [0m[1m[37m[40m=[0m[37m[40m [0m[35m[40m'log'[0m diff --git a/test/expected/test_sql_views_vtab.sh_c851bdf3ba2f56fac5a216457b2d11a109e77f03.out b/test/expected/test_sql_views_vtab.sh_c851bdf3ba2f56fac5a216457b2d11a109e77f03.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_c851bdf3ba2f56fac5a216457b2d11a109e77f03.out diff --git a/test/expected/test_sql_views_vtab.sh_d99d884ba6668b66e3ca9ea4ed2d0e236497c35d.err b/test/expected/test_sql_views_vtab.sh_d99d884ba6668b66e3ca9ea4ed2d0e236497c35d.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_d99d884ba6668b66e3ca9ea4ed2d0e236497c35d.err diff --git a/test/expected/test_sql_views_vtab.sh_d99d884ba6668b66e3ca9ea4ed2d0e236497c35d.out b/test/expected/test_sql_views_vtab.sh_d99d884ba6668b66e3ca9ea4ed2d0e236497c35d.out new file mode 100644 index 0000000..bc35132 --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_d99d884ba6668b66e3ca9ea4ed2d0e236497c35d.out @@ -0,0 +1 @@ +[33m2014-10-08 16:56:38,344:[0m[33mWARN[0m[33m:foo bar baz[0m diff --git a/test/expected/test_sql_views_vtab.sh_e036fabdc6c15f65a374b95c9922212670d494ee.err b/test/expected/test_sql_views_vtab.sh_e036fabdc6c15f65a374b95c9922212670d494ee.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_e036fabdc6c15f65a374b95c9922212670d494ee.err diff --git a/test/expected/test_sql_views_vtab.sh_e036fabdc6c15f65a374b95c9922212670d494ee.out b/test/expected/test_sql_views_vtab.sh_e036fabdc6c15f65a374b95c9922212670d494ee.out new file mode 100644 index 0000000..493283c --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_e036fabdc6c15f65a374b95c9922212670d494ee.out @@ -0,0 +1 @@ +192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7" diff --git a/test/expected/test_sql_views_vtab.sh_ec4623bd63ff353f50db44da1231e46a1a4f1824.err b/test/expected/test_sql_views_vtab.sh_ec4623bd63ff353f50db44da1231e46a1a4f1824.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_ec4623bd63ff353f50db44da1231e46a1a4f1824.err diff --git a/test/expected/test_sql_views_vtab.sh_ec4623bd63ff353f50db44da1231e46a1a4f1824.out b/test/expected/test_sql_views_vtab.sh_ec4623bd63ff353f50db44da1231e46a1a4f1824.out new file mode 100644 index 0000000..0dd4cb7 --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_ec4623bd63ff353f50db44da1231e46a1a4f1824.out @@ -0,0 +1,3 @@ +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" diff --git a/test/expected/test_sql_views_vtab.sh_f7476c76ea51cf479a6a79b037e0cb59871b629c.err b/test/expected/test_sql_views_vtab.sh_f7476c76ea51cf479a6a79b037e0cb59871b629c.err new file mode 100644 index 0000000..aab37c6 --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_f7476c76ea51cf479a6a79b037e0cb59871b629c.err @@ -0,0 +1,4 @@ +[1m[31m✘ error[0m: SQL statement failed + [1m[31mreason[0m: Expecting an lnav view name for column number 0 +[36m --> [0m[1mcommand-option[0m:1 +[36m | [0m[37m[40m;[0m[1m[36m[40mINSERT[0m[37m[40m [0m[1m[36m[40mINTO[0m[37m[40m [0m[37m[40mlnav_view_filters[0m[37m[40m [0m[1m[36m[40mVALUES[0m[37m[40m ([0m[1m[36m[40mNULL[0m[37m[40m, [0m[1m[37m[40m0[0m[37m[40m, [0m[1m[37m[40m1[0m[37m[40m, [0m[35m[40m'out'[0m[37m[40m, [0m[35m[40m'regex'[0m[37m[40m, [0m[35m[40m'abc'[0m[37m[40m)[0m diff --git a/test/expected/test_sql_views_vtab.sh_f7476c76ea51cf479a6a79b037e0cb59871b629c.out b/test/expected/test_sql_views_vtab.sh_f7476c76ea51cf479a6a79b037e0cb59871b629c.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_f7476c76ea51cf479a6a79b037e0cb59871b629c.out diff --git a/test/expected/test_sql_views_vtab.sh_f8340cb4c62aabd839ea09235b6ebe41b2bb48f4.err b/test/expected/test_sql_views_vtab.sh_f8340cb4c62aabd839ea09235b6ebe41b2bb48f4.err new file mode 100644 index 0000000..8a477fc --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_f8340cb4c62aabd839ea09235b6ebe41b2bb48f4.err @@ -0,0 +1,4 @@ +[1m[31m✘ error[0m: SQL statement failed + [1m[31mreason[0m: Expecting an value of 'in' or 'out' for column number 3 +[36m --> [0m[1mcommand-option[0m:1 +[36m | [0m[37m[40m;[0m[1m[36m[40mINSERT[0m[37m[40m [0m[1m[36m[40mINTO[0m[37m[40m [0m[37m[40mlnav_view_filters[0m[37m[40m [0m[1m[36m[40mVALUES[0m[37m[40m ([0m[35m[40m'log'[0m[37m[40m, [0m[1m[37m[40m0[0m[37m[40m , [0m[1m[37m[40m1[0m[37m[40m, [0m[35m[40m'bad'[0m[37m[40m, [0m[35m[40m'regex'[0m[37m[40m, [0m[35m[40m'abc'[0m[37m[40m)[0m diff --git a/test/expected/test_sql_views_vtab.sh_f8340cb4c62aabd839ea09235b6ebe41b2bb48f4.out b/test/expected/test_sql_views_vtab.sh_f8340cb4c62aabd839ea09235b6ebe41b2bb48f4.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_views_vtab.sh_f8340cb4c62aabd839ea09235b6ebe41b2bb48f4.out diff --git a/test/expected/test_sql_xml_func.sh_46dfa23e2effabf3fa150c4b871fd8d22b1c834d.err b/test/expected/test_sql_xml_func.sh_46dfa23e2effabf3fa150c4b871fd8d22b1c834d.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_xml_func.sh_46dfa23e2effabf3fa150c4b871fd8d22b1c834d.err diff --git a/test/expected/test_sql_xml_func.sh_46dfa23e2effabf3fa150c4b871fd8d22b1c834d.out b/test/expected/test_sql_xml_func.sh_46dfa23e2effabf3fa150c4b871fd8d22b1c834d.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_xml_func.sh_46dfa23e2effabf3fa150c4b871fd8d22b1c834d.out diff --git a/test/expected/test_sql_xml_func.sh_4effabf11b59580e5f0727199eb74fba049c0cda.err b/test/expected/test_sql_xml_func.sh_4effabf11b59580e5f0727199eb74fba049c0cda.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_xml_func.sh_4effabf11b59580e5f0727199eb74fba049c0cda.err diff --git a/test/expected/test_sql_xml_func.sh_4effabf11b59580e5f0727199eb74fba049c0cda.out b/test/expected/test_sql_xml_func.sh_4effabf11b59580e5f0727199eb74fba049c0cda.out new file mode 100644 index 0000000..a4c5713 --- /dev/null +++ b/test/expected/test_sql_xml_func.sh_4effabf11b59580e5f0727199eb74fba049c0cda.out @@ -0,0 +1,6 @@ +Row 0: + Column result: <def>Hello ></def> + + Column node_path: /abc/def + Column node_attr: {} + Column node_text: Hello > diff --git a/test/expected/test_sql_xml_func.sh_8912b59d5b515ab1373a3d9bc635ebabacd01dfd.err b/test/expected/test_sql_xml_func.sh_8912b59d5b515ab1373a3d9bc635ebabacd01dfd.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_xml_func.sh_8912b59d5b515ab1373a3d9bc635ebabacd01dfd.err diff --git a/test/expected/test_sql_xml_func.sh_8912b59d5b515ab1373a3d9bc635ebabacd01dfd.out b/test/expected/test_sql_xml_func.sh_8912b59d5b515ab1373a3d9bc635ebabacd01dfd.out new file mode 100644 index 0000000..2800fc5 --- /dev/null +++ b/test/expected/test_sql_xml_func.sh_8912b59d5b515ab1373a3d9bc635ebabacd01dfd.out @@ -0,0 +1,6 @@ +Row 0: + Column result: <def a="b">ghi</def> + + Column node_path: /abc/def[2] + Column node_attr: {"a":"b"} + Column node_text: ghi diff --git a/test/expected/test_sql_xml_func.sh_b036c73528a446cba46625767517cdac868aba72.err b/test/expected/test_sql_xml_func.sh_b036c73528a446cba46625767517cdac868aba72.err new file mode 100644 index 0000000..6ac0f80 --- /dev/null +++ b/test/expected/test_sql_xml_func.sh_b036c73528a446cba46625767517cdac868aba72.err @@ -0,0 +1 @@ +error: sqlite3_exec failed -- Invalid XPATH expression at offset 5: Unrecognized node test diff --git a/test/expected/test_sql_xml_func.sh_b036c73528a446cba46625767517cdac868aba72.out b/test/expected/test_sql_xml_func.sh_b036c73528a446cba46625767517cdac868aba72.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_xml_func.sh_b036c73528a446cba46625767517cdac868aba72.out diff --git a/test/expected/test_sql_xml_func.sh_fefeb387ae14d4171225ea06cbbff3ec43990cf0.err b/test/expected/test_sql_xml_func.sh_fefeb387ae14d4171225ea06cbbff3ec43990cf0.err new file mode 100644 index 0000000..a97d7cd --- /dev/null +++ b/test/expected/test_sql_xml_func.sh_fefeb387ae14d4171225ea06cbbff3ec43990cf0.err @@ -0,0 +1 @@ +error: sqlite3_exec failed -- Invalid XML document at offset 3: Error parsing start element tag diff --git a/test/expected/test_sql_xml_func.sh_fefeb387ae14d4171225ea06cbbff3ec43990cf0.out b/test/expected/test_sql_xml_func.sh_fefeb387ae14d4171225ea06cbbff3ec43990cf0.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_xml_func.sh_fefeb387ae14d4171225ea06cbbff3ec43990cf0.out diff --git a/test/expected/test_sql_yaml_func.sh_41c6abde708a69e74f5b7fde865d88fa75f91e0a.err b/test/expected/test_sql_yaml_func.sh_41c6abde708a69e74f5b7fde865d88fa75f91e0a.err new file mode 100644 index 0000000..b7f3a79 --- /dev/null +++ b/test/expected/test_sql_yaml_func.sh_41c6abde708a69e74f5b7fde865d88fa75f91e0a.err @@ -0,0 +1,4 @@ +[1m[31m✘ error[0m: failed to parse YAML content + [1m[31mreason[0m: closing ] not found +[36m --> [0m[1mcommand-option[0m:1 +[36m | [0m[37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40myaml_to_json[0m[37m[40m([0m[35m[40m'[abc'[0m[37m[40m) [0m diff --git a/test/expected/test_sql_yaml_func.sh_41c6abde708a69e74f5b7fde865d88fa75f91e0a.out b/test/expected/test_sql_yaml_func.sh_41c6abde708a69e74f5b7fde865d88fa75f91e0a.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_yaml_func.sh_41c6abde708a69e74f5b7fde865d88fa75f91e0a.out diff --git a/test/expected/test_sql_yaml_func.sh_dc189d02e8979b7ed245d5d750f68b9965984699.err b/test/expected/test_sql_yaml_func.sh_dc189d02e8979b7ed245d5d750f68b9965984699.err new file mode 100644 index 0000000..b7f3a79 --- /dev/null +++ b/test/expected/test_sql_yaml_func.sh_dc189d02e8979b7ed245d5d750f68b9965984699.err @@ -0,0 +1,4 @@ +[1m[31m✘ error[0m: failed to parse YAML content + [1m[31mreason[0m: closing ] not found +[36m --> [0m[1mcommand-option[0m:1 +[36m | [0m[37m[40m;[0m[1m[36m[40mSELECT[0m[37m[40m [0m[1m[37m[40myaml_to_json[0m[37m[40m([0m[35m[40m'[abc'[0m[37m[40m) [0m diff --git a/test/expected/test_sql_yaml_func.sh_dc189d02e8979b7ed245d5d750f68b9965984699.out b/test/expected/test_sql_yaml_func.sh_dc189d02e8979b7ed245d5d750f68b9965984699.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_sql_yaml_func.sh_dc189d02e8979b7ed245d5d750f68b9965984699.out diff --git a/test/expected/test_tailer.sh_12f539e535df04364316699f9edeac461aa9f9de.err b/test/expected/test_tailer.sh_12f539e535df04364316699f9edeac461aa9f9de.err new file mode 100644 index 0000000..b77acd0 --- /dev/null +++ b/test/expected/test_tailer.sh_12f539e535df04364316699f9edeac461aa9f9de.err @@ -0,0 +1,3 @@ +tailer stderr: +info: load preview request -- 1234 +info: exiting... diff --git a/test/expected/test_tailer.sh_12f539e535df04364316699f9edeac461aa9f9de.out b/test/expected/test_tailer.sh_12f539e535df04364316699f9edeac461aa9f9de.out new file mode 100644 index 0000000..cd58305 --- /dev/null +++ b/test/expected/test_tailer.sh_12f539e535df04364316699f9edeac461aa9f9de.out @@ -0,0 +1,8 @@ +preview of file: {test_dir}/remote-log-dir/* +{test_dir}/remote-log-dir/logfile_access_log.0 +{test_dir}/remote-log-dir/logfile_access_log.1 + +all done! +tailer stderr: +info: load preview request -- 1234 +info: exiting... diff --git a/test/expected/test_text_file.sh_2e69c22dcfa37b5c3e8490a6026eacb7ca953998.err b/test/expected/test_text_file.sh_2e69c22dcfa37b5c3e8490a6026eacb7ca953998.err new file mode 100644 index 0000000..08a372f --- /dev/null +++ b/test/expected/test_text_file.sh_2e69c22dcfa37b5c3e8490a6026eacb7ca953998.err @@ -0,0 +1,2 @@ +[1m[31m✘ error[0m: unable to open file: [1mnon-existent:[0m + [1m[31mreason[0m: failed to ssh to host: ssh: Could not resolve hostname non-existent: nodename nor servname provided, or not known diff --git a/test/expected/test_text_file.sh_2e69c22dcfa37b5c3e8490a6026eacb7ca953998.out b/test/expected/test_text_file.sh_2e69c22dcfa37b5c3e8490a6026eacb7ca953998.out new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_text_file.sh_2e69c22dcfa37b5c3e8490a6026eacb7ca953998.out diff --git a/test/expected/test_text_file.sh_5b51b55dff7332c5bee2c9b797c401c5614d574a.err b/test/expected/test_text_file.sh_5b51b55dff7332c5bee2c9b797c401c5614d574a.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_text_file.sh_5b51b55dff7332c5bee2c9b797c401c5614d574a.err diff --git a/test/expected/test_text_file.sh_5b51b55dff7332c5bee2c9b797c401c5614d574a.out b/test/expected/test_text_file.sh_5b51b55dff7332c5bee2c9b797c401c5614d574a.out new file mode 100644 index 0000000..a39be1e --- /dev/null +++ b/test/expected/test_text_file.sh_5b51b55dff7332c5bee2c9b797c401c5614d574a.out @@ -0,0 +1,178 @@ +[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 + diff --git a/test/expected/test_text_file.sh_6a24078983cf1b7a80b6fb65d5186cd125498136.err b/test/expected/test_text_file.sh_6a24078983cf1b7a80b6fb65d5186cd125498136.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_text_file.sh_6a24078983cf1b7a80b6fb65d5186cd125498136.err diff --git a/test/expected/test_text_file.sh_6a24078983cf1b7a80b6fb65d5186cd125498136.out b/test/expected/test_text_file.sh_6a24078983cf1b7a80b6fb65d5186cd125498136.out new file mode 100644 index 0000000..accb1c3 --- /dev/null +++ b/test/expected/test_text_file.sh_6a24078983cf1b7a80b6fb65d5186cd125498136.out @@ -0,0 +1,149 @@ +[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 + diff --git a/test/expected/test_text_file.sh_801414c6bb6d3f9225973eafa3c6dfa49cd2081d.err b/test/expected/test_text_file.sh_801414c6bb6d3f9225973eafa3c6dfa49cd2081d.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_text_file.sh_801414c6bb6d3f9225973eafa3c6dfa49cd2081d.err diff --git a/test/expected/test_text_file.sh_801414c6bb6d3f9225973eafa3c6dfa49cd2081d.out b/test/expected/test_text_file.sh_801414c6bb6d3f9225973eafa3c6dfa49cd2081d.out new file mode 100644 index 0000000..a7ed740 --- /dev/null +++ b/test/expected/test_text_file.sh_801414c6bb6d3f9225973eafa3c6dfa49cd2081d.out @@ -0,0 +1,111 @@ +/** + * 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. + */ + +[32m#include [0m[32m"log_level.hh"[0m + +[32m#include <[0m[32mctype.h[0m[32m>[0m + +[32m#include [0m[32m"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, + + nullptr, +}; + +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'\[0m[1m[35m0[0m[35m'[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'[0m[1m[35m2[0m[35m'[0m: + [1m[36mreturn[0m [1mLEVEL_DEBUG2[0m; + [1m[36mcase[0m [35m'[0m[1m[35m3[0m[35m'[0m: + [1m[36mreturn[0m [1mLEVEL_DEBUG3[0m; + [1m[36mcase[0m [35m'[0m[1m[35m4[0m[35m'[0m: + [1m[36mreturn[0m [1mLEVEL_DEBUG4[0m; + [1m[36mcase[0m [35m'[0m[1m[35m5[0m[35m'[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); +} diff --git a/test/expected/test_text_file.sh_87943c6be50d701a03e901f16493314c839af1ab.err b/test/expected/test_text_file.sh_87943c6be50d701a03e901f16493314c839af1ab.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_text_file.sh_87943c6be50d701a03e901f16493314c839af1ab.err diff --git a/test/expected/test_text_file.sh_87943c6be50d701a03e901f16493314c839af1ab.out b/test/expected/test_text_file.sh_87943c6be50d701a03e901f16493314c839af1ab.out new file mode 100644 index 0000000..ae06214 --- /dev/null +++ b/test/expected/test_text_file.sh_87943c6be50d701a03e901f16493314c839af1ab.out @@ -0,0 +1,111 @@ +/** + * 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); +} diff --git a/test/expected/test_text_file.sh_8b2cd055e6a1db2ed9b2af2a917f8556395fa653.err b/test/expected/test_text_file.sh_8b2cd055e6a1db2ed9b2af2a917f8556395fa653.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_text_file.sh_8b2cd055e6a1db2ed9b2af2a917f8556395fa653.err diff --git a/test/expected/test_text_file.sh_8b2cd055e6a1db2ed9b2af2a917f8556395fa653.out b/test/expected/test_text_file.sh_8b2cd055e6a1db2ed9b2af2a917f8556395fa653.out new file mode 100644 index 0000000..c8719bb --- /dev/null +++ b/test/expected/test_text_file.sh_8b2cd055e6a1db2ed9b2af2a917f8556395fa653.out @@ -0,0 +1,2 @@ +[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 diff --git a/test/expected/test_text_file.sh_ac486314c4e02e480d829ea2f077b86c49fedcec.err b/test/expected/test_text_file.sh_ac486314c4e02e480d829ea2f077b86c49fedcec.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_text_file.sh_ac486314c4e02e480d829ea2f077b86c49fedcec.err diff --git a/test/expected/test_text_file.sh_ac486314c4e02e480d829ea2f077b86c49fedcec.out b/test/expected/test_text_file.sh_ac486314c4e02e480d829ea2f077b86c49fedcec.out new file mode 100644 index 0000000..5a1b89a --- /dev/null +++ b/test/expected/test_text_file.sh_ac486314c4e02e480d829ea2f077b86c49fedcec.out @@ -0,0 +1,4 @@ +you might find this tool more comfortable to work with. + + ▌[1] - https://github.com/rcoh/angle-grinder + diff --git a/test/expected/test_text_file.sh_ac872aadda29b9a824361a2c711d62ec1c75d40f.err b/test/expected/test_text_file.sh_ac872aadda29b9a824361a2c711d62ec1c75d40f.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_text_file.sh_ac872aadda29b9a824361a2c711d62ec1c75d40f.err diff --git a/test/expected/test_text_file.sh_ac872aadda29b9a824361a2c711d62ec1c75d40f.out b/test/expected/test_text_file.sh_ac872aadda29b9a824361a2c711d62ec1c75d40f.out new file mode 100644 index 0000000..6c9b5ae --- /dev/null +++ b/test/expected/test_text_file.sh_ac872aadda29b9a824361a2c711d62ec1c75d40f.out @@ -0,0 +1,74 @@ +[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): " diff --git a/test/expected/test_text_file.sh_c21295f131c221861568bda5014b76ef99bdd11f.err b/test/expected/test_text_file.sh_c21295f131c221861568bda5014b76ef99bdd11f.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_text_file.sh_c21295f131c221861568bda5014b76ef99bdd11f.err diff --git a/test/expected/test_text_file.sh_c21295f131c221861568bda5014b76ef99bdd11f.out b/test/expected/test_text_file.sh_c21295f131c221861568bda5014b76ef99bdd11f.out new file mode 100644 index 0000000..59a0aa9 --- /dev/null +++ b/test/expected/test_text_file.sh_c21295f131c221861568bda5014b76ef99bdd11f.out @@ -0,0 +1,159 @@ +Build[1][2] Docs[3][4] Coverage Status[5][6] lnav[7][8] + + ▌[1] - https://github.com/tstack/lnav/workflows/ci-build/badge.svg + ▌[2] - https://github.com/tstack/lnav/actions?[4mquery[0m=workflow%3Aci-build + ▌[3] - https://readthedocs.org/projects/lnav/badge/?[4mversion[0m=latest&[4mstyle[0m=plastic + ▌[4] - https://docs.lnav.org + ▌[5] - https://coveralls.io/repos/github/tstack/lnav/badge.svg?[4mbranch[0m=master + ▌[6] - https://coveralls.io/github/tstack/lnav?[4mbranch[0m=master + ▌[7] - https://snapcraft.io//lnav/badge.svg + ▌[8] - https://snapcraft.io/lnav + +This is the source repository for [1mlnav[0m, visit https://lnav.org[1] for +a high level overview. + + ▌[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. + +Screenshot[1][2] + + ▌[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 + +Download a statically-linked binary for Linux/MacOS from the release +page[1] + + ▌[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 [0m[4m[37m[40m--output-fields[0m[37m[40m=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 [0m[4m[37m[40m--since[0m[37m[40m=... [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. + +[1mLinks[0m + + [33m•[0m Main Site[1] + [33m•[0m [1mDocumentation[0m[2] on Read the Docs + [33m•[0m Internal Architecture[3] + + ▌[1] - https://lnav.org + ▌[2] - https://docs.lnav.org + ▌[3] - file://{top_srcdir}/ARCHITECTURE.md + +[1mContributing[0m + + [33m•[0m Become a Sponsor on GitHub[1] + + ▌[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 libpcre - The Perl Compatible Regular Expression + (PCRE) 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. + + ▌[37m[40m$ ./configure [0m + ▌[37m[40m$ make [0m + ▌[37m[40m$ sudo make install [0m + +[1mSee Also[0m + +Angle-grinder[1] 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 + diff --git a/test/expected/test_text_file.sh_c2a346ca1da2da4346f1d310212e166767993ce9.err b/test/expected/test_text_file.sh_c2a346ca1da2da4346f1d310212e166767993ce9.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_text_file.sh_c2a346ca1da2da4346f1d310212e166767993ce9.err diff --git a/test/expected/test_text_file.sh_c2a346ca1da2da4346f1d310212e166767993ce9.out b/test/expected/test_text_file.sh_c2a346ca1da2da4346f1d310212e166767993ce9.out new file mode 100644 index 0000000..1efd1ba --- /dev/null +++ b/test/expected/test_text_file.sh_c2a346ca1da2da4346f1d310212e166767993ce9.out @@ -0,0 +1,58 @@ +[ + { + "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" + } + ] + } + ] + } + } +] diff --git a/test/expected/test_text_file.sh_e088ea61a5382458cc48a2607e2639e52b0be1da.err b/test/expected/test_text_file.sh_e088ea61a5382458cc48a2607e2639e52b0be1da.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/expected/test_text_file.sh_e088ea61a5382458cc48a2607e2639e52b0be1da.err diff --git a/test/expected/test_text_file.sh_e088ea61a5382458cc48a2607e2639e52b0be1da.out b/test/expected/test_text_file.sh_e088ea61a5382458cc48a2607e2639e52b0be1da.out new file mode 100644 index 0000000..accb1c3 --- /dev/null +++ b/test/expected/test_text_file.sh_e088ea61a5382458cc48a2607e2639e52b0be1da.out @@ -0,0 +1,149 @@ +[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 + diff --git a/test/expected_help.txt b/test/expected_help.txt new file mode 100644 index 0000000..d741fd2 --- /dev/null +++ b/test/expected_help.txt @@ -0,0 +1,4013 @@ + +lnav + +A fancy log file viewer for the terminal. + +Overview + +The Logfile Navigator, lnav, 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. + +Opening Paths/URLs + +The main arguments to lnav are the 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. + +Options + +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: + + • -a Load all of the most recent log file types. + • -r Recursively load files from the given directory + hierarchies. + • -R 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 -N 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: + + • -t Prepend timestamps to the lines of data being read + in on the standard input. + • -w file 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: + + • -c cmd A command, query, or file to execute. The + first character determines the type of operation: a colon + ( : ) is used for the built-in commands; a semi-colon ( ; + ) for SQL queries; and a pipe symbol ( | ) 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: + + ┃lnav -c ':goto 10' foo.log + + This option can be given multiple times to execute + multiple operations in sequence. + • -f file A file that contains commands, queries, or + files to execute. This option is a shortcut for -c '|file' + . You can use a dash ( - ) to execute commands from the + standard input. + +To execute commands/queries without the opening the interactive text +UI, you can pass the -n 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: + + ┃#! /usr/bin/lnav -nf + ┃ + ┃# Usage: dhcp_ip.lnav /var/log/messages + ┃# Only include lines that look like: + ┃# Apr 29 00:31:56 example-centos5 dhclient: bound to 10.1.10.103 -- renewal in 9938 seconds. + ┃ + ┃:filter-in dhclient: bound to + ┃ + ┃# The log message parser will extract the IP address + ┃# as col_0, so we select that and alias it to "dhcp_ip". + ┃;select distinct col_0 as dhcp_ip from logline; + ┃ + ┃# Finally, write the results of the query to stdout. + ┃:write-csv-to - + +Display + +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 tail -f . + +On color displays, the lines will be highlighted as follows: + + • Errors will be colored in red; + • warnings will be yellow; + • boundaries between days will be underlined; and + • 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. + +A bar on the left side is color coded and broken up to indicate which +messages are from the same file. Pressing the left-arrow or h 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: + + • the current time; + • the name of the file the top line was pulled from; + • the log format for the top line; + • the current view; + • the line number for the top line in the display; + • 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: + + • the number of enabled filters and the total number of + filters; + • 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. + +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 q to pop the top view off of the stack. + +Default Key Bindings + +Views + + Key(s) Action +═══════════════════════════════════════════════════════════ + ? View/leave this help message. + q Leave the current view or quit the program when in + the log file view. + Q Similar to q , except it will try to sync the top + time between the current and former views. For + example, when leaving the spectrogram view with Q + , 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. + a/A Restore the view that was previously popped with q + / Q . The A hotkey will try to match the top + times between the two views. + X Close the current text file or log file. + +Spatial Navigation + + 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. + b/PgUp Move up 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. + +Chronological Navigation + + 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. + +Bookmarks + + 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 u 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 J 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. + +Display options + + 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 z 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 I 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. + F2 Toggle mouse support. + +Query + + Key(s) Action +═════════════════════════════════════════════════════════════════════════════ + /regexp 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. + :<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. + ;<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. + |<script> [arg1 .. argN] Execute an lnav script contained in a format + directory (e.g. ~/.lnav/formats/default). The + script can contain lines starting with : , ; , + or | 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 $1 , $2 , and so on, like in a + shell script. + CTRL+], ESCAPE Abort command-line entry started with / , : +, ; + , or | . + + ┃ Note: The regular expression format used by is PCRE + ┃ (Perl-Compatible Regular Expressions). For example, + ┃ if you wanted to search for ethernet device names, + ┃ regardless of their ID number, you can type: + ┃ + ┃ eth\d+ + ┃ + ┃ You can find more information about Perl regular + ┃ expressions at: + ┃ + ┃ 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. + +Session + + 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. + +Filter Editor + +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. + +Mouse Support (experimental) + +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. + +SQL Queries (experimental) + +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: + + ┃;select cs_uri_stem, count(*) as total from access_log + ┃ group by cs_uri_stem order by total desc limit 10; + +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 .schema SQL command. + +The columns available for the top log line in the view will +automatically be displayed after pressing the semicolon ( ; ) 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. + + • syslog_log + + 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. + • access_log (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. + • strace_log (Currently, you need to run strace with + the -tt -T options 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: + + ┃;attach database "/tmp/topten.db" as topten; + ┃;create table topten.foo as select cs_uri_stem, count(*) as total + ┃ from access_log group by cs_uri_stem order by total desc + ┃ limit 10; + +Dynamic logline Table (experimental) + +(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 logline 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": + + ┃May 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! + +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: + + ┃;select USER,COMMAND from logline; + + 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": + + ┃Sep 16 22:35:57 drill dhcpd: DHCPDISCOVER from 00:16:ce:54:4e:f3 via hme3 + +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. + +Other SQL Features + +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 HOME variable, you can do: + + ┃;SELECT $HOME; + +To select the syslog messages that have a hostname field that is equal +to the HOSTNAME variable: + + ┃;SELECT * FROM syslog_log WHERE log_hostname = $HOSTNAME; + +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: + + ┃;SELECT * FROM $TABLE_NAME; -- Syntax error + +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": + + ┃;INSERT INTO environ SELECT 'FOO', 'BAR'; + +As a more complex example, you can set the variable "LAST" to the last +syslog line number by doing: + + ┃;INSERT INTO environ SELECT 'LAST', (SELECT max(log_line) FROM syslog_log); + +A delete will unset the environment variable: + + ┃;DELETE FROM environ WHERE name='LAST'; + +The table allows you to easily use the results of a SQL query in lnav +commands, which is especially useful when scripting lnav. + +Contact + +For more information, visit the lnav website at: + +http://lnav.org[1] + + ┃[1] - http://lnav.org + +For support questions, email: + +lnav@googlegroups.com[1] support@lnav.org[2] + + ┃[1] - mailto:lnav@googlegroups.com + ┃[2] - mailto:support@lnav.org + +Command Reference + +:adjust-log-time timestamp +══════════════════════════════════════════════════════════════════════ + Change the timestamps of the top file to be relative to the given + date +Parameter + timestamp The new timestamp for the top line in the view + +Examples +#1 To set the top timestamp to a given date: + :adjust-log-time 2017-01-02T05:33:00 + + +#2 To set the top timestamp back an hour: + :adjust-log-time -1h + + + +:alt-msg msg +══════════════════════════════════════════════════════════════════════ + Display a message in the alternate command position +Parameter + msg The message to display +See Also + :echo, :eval, :redirect-to, :write-csv-to, :write-json-to, + :write-jsonlines-to, :write-raw-to, :write-screen-to, :write-table-to, + :write-to, :write-view-to +Example +#1 To display 'Press t to switch to the text view' on the bottom right: + :alt-msg Press t to switch to the text view + + + +:append-to path +══════════════════════════════════════════════════════════════════════ + Append marked lines in the current view to the given file +Parameter + path The path to the file to append to +See Also + :echo, :pipe-line-to, :pipe-to, :redirect-to, :write-csv-to, + :write-json-to, :write-jsonlines-to, :write-raw-to, :write-screen-to, + :write-table-to, :write-to, :write-view-to +Example +#1 To append marked lines to the file /tmp/interesting-lines.txt: + :append-to /tmp/interesting-lines.txt + + + +:clear-comment +══════════════════════════════════════════════════════════════════════ + Clear the comment attached to the top log line +See Also + :comment, :tag + +:clear-filter-expr +══════════════════════════════════════════════════════════════════════ + Clear the filter expression +See Also + :filter-expr, :filter-in, :filter-out, :hide-lines-after, + :hide-lines-before, :hide-unmarked-lines, :toggle-filtering + +:clear-highlight pattern +══════════════════════════════════════════════════════════════════════ + Remove a previously set highlight regular expression +Parameter + pattern The regular expression previously used with :highlight +See Also + :enable-word-wrap, :hide-fields, :highlight +Example +#1 To clear the highlight with the pattern 'foobar': + :clear-highlight foobar + + + +:clear-mark-expr +══════════════════════════════════════════════════════════════════════ + Clear the mark expression +See Also + :hide-unmarked-lines, :mark, :mark-expr, :next-mark, :prev-mark + +:clear-partition +══════════════════════════════════════════════════════════════════════ + Clear the partition the top line is a part of + + +:close +══════════════════════════════════════════════════════════════════════ + Close the top file in the view + + +:comment text +══════════════════════════════════════════════════════════════════════ + Attach a comment to the top log line +Parameter + text The comment text +See Also + :clear-comment, :tag +Example +#1 To add the comment 'This is where it all went wrong' to the top line: + :comment This is where it all went wrong + + + +:config option [value] +══════════════════════════════════════════════════════════════════════ + Read or write a configuration option +Parameters + option The path to the option to read or write + value The value to write. If not given, the current value is + returned +See Also + :reset-config +Examples +#1 To read the configuration of the '/ui/clock-format' option: + :config /ui/clock-format + + +#2 To set the '/ui/dim-text' option to 'false': + :config /ui/dim-text false + + + +:create-logline-table table-name +══════════════════════════════════════════════════════════════════════ + Create an SQL table using the top line of the log view as a template + +Parameter + table-name The name for the new table +See Also + :create-search-table, :create-search-table, :write-csv-to, + :write-json-to, :write-jsonlines-to, :write-raw-to, :write-screen-to, + :write-table-to, :write-view-to +Example +#1 To create a logline-style table named 'task_durations': + :create-logline-table task_durations + + + +:create-search-table table-name [pattern] +══════════════════════════════════════════════════════════════════════ + Create an SQL table based on a regex search +Parameters + table-name The name of the table to create + pattern The regular expression used to capture the table + columns. If not given, the current search pattern is + used. +See Also + :create-logline-table, :create-logline-table, :delete-search-table, + :delete-search-table, :write-csv-to, :write-json-to, + :write-jsonlines-to, :write-raw-to, :write-screen-to, :write-table-to, + :write-view-to +Example +#1 To create a table named 'task_durations' that matches log messages with the pattern ' + duration=(?<duration>\d+)': + :create-search-table task_durations duration=(?<duration>\d+) + + + +:current-time +══════════════════════════════════════════════════════════════════════ + Print the current time in human-readable form and seconds since the + epoch + + +:delete-filter pattern +══════════════════════════════════════════════════════════════════════ + Delete the filter created with :filter-in or :filter-out +Parameter + pattern The regular expression to match +See Also + :filter-in, :filter-out, :hide-lines-after, :hide-lines-before, + :hide-unmarked-lines, :toggle-filtering +Example +#1 To delete the filter with the pattern 'last message repeated': + :delete-filter last message repeated + + + +:delete-logline-table table-name +══════════════════════════════════════════════════════════════════════ + Delete a table created with create-logline-table +Parameter + table-name The name of the table to delete +See Also + :create-logline-table, :create-logline-table, :create-search-table, + :create-search-table, :write-csv-to, :write-json-to, + :write-jsonlines-to, :write-raw-to, :write-screen-to, :write-table-to, + :write-view-to +Example +#1 To delete the logline-style table named 'task_durations': + :delete-logline-table task_durations + + + +:delete-search-table table-name +══════════════════════════════════════════════════════════════════════ + Create an SQL table based on a regex search +Parameter + table-name The name of the table to create +See Also + :create-logline-table, :create-logline-table, :create-search-table, + :create-search-table, :write-csv-to, :write-json-to, + :write-jsonlines-to, :write-raw-to, :write-screen-to, :write-table-to, + :write-view-to +Example +#1 To delete the search table named 'task_durations': + :delete-search-table task_durations + + + +:delete-tags tag1 [... tagN] +══════════════════════════════════════════════════════════════════════ + Remove the given tags from all log lines +Parameter + tag The tags to delete +See Also + :comment, :tag +Example +#1 To remove the tags '#BUG123' and '#needs-review' from all log lines: + :delete-tags #BUG123 #needs-review + + + +:disable-filter pattern +══════════════════════════════════════════════════════════════════════ + Disable a filter created with filter-in/filter-out +Parameter + pattern The regular expression used in the filter command +See Also + :enable-filter, :filter-in, :filter-out, :hide-lines-after, + :hide-lines-before, :hide-unmarked-lines, :toggle-filtering +Example +#1 To disable the filter with the pattern 'last message repeated': + :disable-filter last message repeated + + + +:disable-word-wrap +══════════════════════════════════════════════════════════════════════ + Disable word-wrapping for the current view +See Also + :enable-word-wrap, :hide-fields, :highlight + +:echo msg +══════════════════════════════════════════════════════════════════════ + 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 '$' +Parameter + msg The message to display +See Also + :alt-msg, :append-to, :eval, :pipe-line-to, :pipe-to, :redirect-to, + :redirect-to, :write-csv-to, :write-csv-to, :write-json-to, + :write-json-to, :write-jsonlines-to, :write-jsonlines-to, + :write-raw-to, :write-raw-to, :write-screen-to, :write-screen-to, + :write-table-to, :write-table-to, :write-to, :write-to, :write-view-to, + :write-view-to +Example +#1 To output 'Hello, World!': + :echo Hello, World! + + + +:enable-filter pattern +══════════════════════════════════════════════════════════════════════ + Enable a previously created and disabled filter +Parameter + pattern The regular expression used in the filter command +See Also + :filter-in, :filter-out, :hide-lines-after, :hide-lines-before, + :hide-unmarked-lines, :toggle-filtering +Example +#1 To enable the disabled filter with the pattern 'last message repeated': + :enable-filter last message repeated + + + +:enable-word-wrap +══════════════════════════════════════════════════════════════════════ + Enable word-wrapping for the current view +See Also + :disable-word-wrap, :hide-fields, :highlight + +:eval command +══════════════════════════════════════════════════════════════════════ + Evaluate the given command/query after doing environment variable + substitution +Parameter + command The command or query to perform substitution on. +See Also + :alt-msg, :echo, :redirect-to, :write-csv-to, :write-json-to, + :write-jsonlines-to, :write-raw-to, :write-screen-to, :write-table-to, + :write-to, :write-view-to +Example +#1 To substitute the table name from a variable: + :eval ;SELECT * FROM ${table} + + + +:filter-expr expr +══════════════════════════════════════════════════════════════════════ + Set the filter expression +Parameter + expr The SQL expression to evaluate for each log message. The + message values can be accessed using column names prefixed + with a colon +See Also + :clear-filter-expr, :filter-in, :filter-out, :hide-lines-after, + :hide-lines-before, :hide-unmarked-lines, :toggle-filtering +Examples +#1 To set a filter expression that matched syslog messages from 'syslogd': + :filter-expr :log_procname = 'syslogd' + + +#2 To set a filter expression that matches log messages where 'id' is followed by a number + and contains the string 'foo': + :filter-expr :log_body REGEXP 'id\d+' AND :log_body REGEXP 'foo' + + + +:filter-in pattern +══════════════════════════════════════════════════════════════════════ + Only show lines that match the given regular expression in the + current view +Parameter + pattern The regular expression to match +See Also + :delete-filter, :disable-filter, :filter-out, :hide-lines-after, + :hide-lines-before, :hide-unmarked-lines, :toggle-filtering +Example +#1 To filter out log messages that do not have the string 'dhclient': + :filter-in dhclient + + + +:filter-out pattern +══════════════════════════════════════════════════════════════════════ + Remove lines that match the given regular expression in the current + view +Parameter + pattern The regular expression to match +See Also + :delete-filter, :disable-filter, :filter-in, :hide-lines-after, + :hide-lines-before, :hide-unmarked-lines, :toggle-filtering +Example +#1 To filter out log messages that contain the string 'last message repeated': + :filter-out last message repeated + + + +:goto line#|N%|date +══════════════════════════════════════════════════════════════════════ + Go to the given location in the top view +Parameter + line#|N%|date A line number, percent into the file, or a timestamp + +See Also + :next-location, :next-mark, :prev-location, :prev-mark, :relative-goto +Examples +#1 To go to line 22: + :goto 22 + + +#2 To go to the line 75% of the way into the view: + :goto 75% + + +#3 To go to the first message on the first day of 2017: + :goto 2017-01-01 + + + +:help +══════════════════════════════════════════════════════════════════════ + Open the help text view + + +:hide-fields field-name1 [... field-nameN] +══════════════════════════════════════════════════════════════════════ + Hide log message fields by replacing them with an ellipsis +Parameter + field-name 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. +See Also + :enable-word-wrap, :highlight, :show-fields +Examples +#1 To hide the log_procname fields in all formats: + :hide-fields log_procname + + +#2 To hide only the log_procname field in the syslog format: + :hide-fields syslog_log.log_procname + + + +:hide-file path +══════════════════════════════════════════════════════════════════════ + 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 +Parameter + path A path or glob pattern that specifies the files to hide + + +:hide-lines-after date +══════════════════════════════════════════════════════════════════════ + Hide lines that come after the given date +Parameter + date An absolute or relative date +See Also + :filter-in, :filter-out, :hide-lines-before, :hide-unmarked-lines, + :show-lines-before-and-after, :toggle-filtering +Examples +#1 To hide the lines after the top line in the view: + :hide-lines-after here + + +#2 To hide the lines after 6 AM today: + :hide-lines-after 6am + + + +:hide-lines-before date +══════════════════════════════════════════════════════════════════════ + Hide lines that come before the given date +Parameter + date An absolute or relative date +See Also + :filter-in, :filter-out, :hide-lines-after, :hide-unmarked-lines, + :show-lines-before-and-after, :toggle-filtering +Examples +#1 To hide the lines before the top line in the view: + :hide-lines-before here + + +#2 To hide the log messages before 6 AM today: + :hide-lines-before 6am + + + +:hide-unmarked-lines +══════════════════════════════════════════════════════════════════════ + Hide lines that have not been bookmarked +See Also + :filter-in, :filter-out, :hide-lines-after, :hide-lines-before, :mark, + :next-mark, :prev-mark, :toggle-filtering + +:highlight pattern +══════════════════════════════════════════════════════════════════════ + Add coloring to log messages fragments that match the given regular + expression +Parameter + pattern The regular expression to match +See Also + :clear-highlight, :enable-word-wrap, :hide-fields +Example +#1 To highlight numbers with three or more digits: + :highlight \d{3,} + + + +:load-session +══════════════════════════════════════════════════════════════════════ + Load the latest session state + + +:mark +══════════════════════════════════════════════════════════════════════ + Toggle the bookmark state for the top line in the current view +See Also + :hide-unmarked-lines, :next-mark, :prev-mark + +:mark-expr expr +══════════════════════════════════════════════════════════════════════ + Set the bookmark expression +Parameter + expr The SQL expression to evaluate for each log message. The + message values can be accessed using column names prefixed + with a colon +See Also + :clear-mark-expr, :hide-unmarked-lines, :mark, :next-mark, :prev-mark +Example +#1 To mark lines from 'dhclient' that mention 'eth0': + :mark-expr :log_procname = 'dhclient' AND :log_body LIKE '%eth0%' + + + +:next-location +══════════════════════════════════════════════════════════════════════ + Move to the next position in the location history +See Also + :goto, :next-mark, :prev-location, :prev-mark, :relative-goto + +:next-mark type1 [... typeN] +══════════════════════════════════════════════════════════════════════ + Move to the next bookmark of the given type in the current view +Parameter + type The type of bookmark -- error, warning, search, user, file, + meta +See Also + :goto, :hide-unmarked-lines, :mark, :next-location, :prev-location, + :prev-mark, :prev-mark, :relative-goto +Example +#1 To go to the next error: + :next-mark error + + + +:open path1 [... pathN] +══════════════════════════════════════════════════════════════════════ + 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 +Parameter + path The path to the file to open + +Examples +#1 To open the file '/path/to/file': + :open /path/to/file + + +#2 To open the remote file '/var/log/syslog.log': + :open dean@host1.example.com:/var/log/syslog.log + + + +:partition-name name +══════════════════════════════════════════════════════════════════════ + Mark the top line in the log view as the start of a new partition + with the given name +Parameter + name The name for the new partition + +Example +#1 To mark the top line as the start of the partition named 'boot #1': + :partition-name boot #1 + + + +:pipe-line-to shell-cmd +══════════════════════════════════════════════════════════════════════ + Pipe the top line to the given shell command +Parameter + shell-cmd The shell command-line to execute +See Also + :append-to, :echo, :pipe-to, :redirect-to, :write-csv-to, + :write-json-to, :write-jsonlines-to, :write-raw-to, :write-screen-to, + :write-table-to, :write-to, :write-view-to +Example +#1 To write the top line to 'sed' for processing: + :pipe-line-to sed -e 's/foo/bar/g' + + + +:pipe-to shell-cmd +══════════════════════════════════════════════════════════════════════ + Pipe the marked lines to the given shell command +Parameter + shell-cmd The shell command-line to execute +See Also + :append-to, :echo, :pipe-line-to, :redirect-to, :write-csv-to, + :write-json-to, :write-jsonlines-to, :write-raw-to, :write-screen-to, + :write-table-to, :write-to, :write-view-to +Example +#1 To write marked lines to 'sed' for processing: + :pipe-to sed -e s/foo/bar/g + + + +:prev-location +══════════════════════════════════════════════════════════════════════ + Move to the previous position in the location history +See Also + :goto, :next-location, :next-mark, :prev-mark, :relative-goto + +:prev-mark type1 [... typeN] +══════════════════════════════════════════════════════════════════════ + Move to the previous bookmark of the given type in the current view +Parameter + type The type of bookmark -- error, warning, search, user, file, + meta +See Also + :goto, :hide-unmarked-lines, :mark, :next-location, :next-mark, + :next-mark, :prev-location, :relative-goto +Example +#1 To go to the previous error: + :prev-mark error + + + +:prompt type [--alt] [prompt] [initial-value] +══════════════════════════════════════════════════════════════════════ + Open the given prompt +Parameters + type The type of prompt -- command, script, search, sql, + user + --alt Perform the alternate action for this prompt by + default + prompt The prompt to display + initial-value The initial value to fill in for the prompt + +Examples +#1 To open the command prompt with 'filter-in' already filled in: + :prompt command : 'filter-in ' + + +#2 To ask the user a question: + :prompt user 'Are you sure? ' + + + +:quit +══════════════════════════════════════════════════════════════════════ + Quit lnav + + +:quit +══════════════════════════════════════════════════════════════════════ + Quit lnav + + +:quit +══════════════════════════════════════════════════════════════════════ + Quit lnav + + +:redirect-to [path] +══════════════════════════════════════════════════════════════════════ + Redirect the output of commands that write to stdout to the given + file +Parameter + path The path to the file to write. If not specified, the current + redirect will be cleared +See Also + :alt-msg, :append-to, :echo, :echo, :eval, :pipe-line-to, :pipe-to, + :write-csv-to, :write-csv-to, :write-json-to, :write-json-to, + :write-jsonlines-to, :write-jsonlines-to, :write-raw-to, :write-raw-to, + :write-screen-to, :write-screen-to, :write-table-to, :write-table-to, + :write-to, :write-to, :write-view-to, :write-view-to +Example +#1 To write the output of lnav commands to the file /tmp/script-output.txt: + :redirect-to /tmp/script-output.txt + + + +:redraw +══════════════════════════════════════════════════════════════════════ + Do a full redraw of the screen + + +:relative-goto line-count|N% +══════════════════════════════════════════════════════════════════════ + Move the current view up or down by the given amount +Parameter + line-count|N% The amount to move the view by. +See Also + :goto, :next-location, :next-mark, :prev-location, :prev-mark +Examples +#1 To move 22 lines down in the view: + :relative-goto +22 + + +#2 To move 10 percent back in the view: + :relative-goto -10% + + + +:reset-config option +══════════════════════════════════════════════════════════════════════ + Reset the configuration option to its default value +Parameter + option The path to the option to reset +See Also + :config +Example +#1 To reset the '/ui/clock-format' option back to the builtin default: + :reset-config /ui/clock-format + + + +:reset-session +══════════════════════════════════════════════════════════════════════ + Reset the session state, clearing all filters, highlights, and + bookmarks + + +:save-session +══════════════════════════════════════════════════════════════════════ + Save the current state as a session + + +:session lnav-command +══════════════════════════════════════════════════════════════════════ + Add the given command to the session file (~/.lnav/session) +Parameter + lnav-command The lnav command to save. + +Example +#1 To add the command ':highlight foobar' to the session file: + :session :highlight foobar + + + +:set-min-log-level log-level +══════════════════════════════════════════════════════════════════════ + Set the minimum log level to display in the log view +Parameter + log-level The new minimum log level + +Example +#1 To set the minimum log level displayed to error: + :set-min-log-level error + + + +:show-fields field-name1 [... field-nameN] +══════════════════════════════════════════════════════════════════════ + Show log message fields that were previously hidden +Parameter + field-name The name of the field to show +See Also + :enable-word-wrap, :hide-fields, :highlight +Example +#1 To show all the log_procname fields in all formats: + :show-fields log_procname + + + +:show-file path +══════════════════════════════════════════════════════════════════════ + Show the given file(s) and resume indexing. +Parameter + path The path or glob pattern that specifies the files to show + + +:show-lines-before-and-after +══════════════════════════════════════════════════════════════════════ + Show lines that were hidden by the 'hide-lines' commands +See Also + :filter-in, :filter-out, :hide-lines-after, :hide-lines-before, + :hide-unmarked-lines, :toggle-filtering + +:show-only-this-file +══════════════════════════════════════════════════════════════════════ + Show only the file for the top line in the view + + +:show-unmarked-lines +══════════════════════════════════════════════════════════════════════ + Show lines that have not been bookmarked +See Also + :filter-in, :filter-out, :hide-lines-after, :hide-lines-before, + :hide-unmarked-lines, :hide-unmarked-lines, :mark, :next-mark, + :prev-mark, :toggle-filtering + +:spectrogram field-name +══════════════════════════════════════════════════════════════════════ + Visualize the given message field using a spectrogram +Parameter + field-name The name of the numeric field to visualize. + +Example +#1 To visualize the sc_bytes field in the access_log format: + :spectrogram sc_bytes + + + +:summarize column-name +══════════════════════════════════════════════════════════════════════ + Execute a SQL query that computes the characteristics of the values + in the given column +Parameter + column-name The name of the column to analyze. + +Example +#1 To get a summary of the sc_bytes column in the access_log table: + :summarize sc_bytes + + + +:switch-to-view view-name +══════════════════════════════════════════════════════════════════════ + Switch to the given view +Parameter + view-name The name of the view to switch to. + +Example +#1 To switch to the 'schema' view: + :switch-to-view schema + + + +:tag tag1 [... tagN] +══════════════════════════════════════════════════════════════════════ + Attach tags to the top log line +Parameter + tag The tags to attach +See Also + :comment, :delete-tags, :untag +Example +#1 To add the tags '#BUG123' and '#needs-review' to the top line: + :tag #BUG123 #needs-review + + + +:toggle-filtering +══════════════════════════════════════════════════════════════════════ + Toggle the filtering flag for the current view +See Also + :filter-in, :filter-out, :hide-lines-after, :hide-lines-before, + :hide-unmarked-lines + +:toggle-view view-name +══════════════════════════════════════════════════════════════════════ + Switch to the given view or, if it is already displayed, switch to + the previous view +Parameter + view-name The name of the view to toggle the display of. + +Example +#1 To switch to the 'schema' view if it is not displayed or switch back to the previous + view: + :toggle-view schema + + + +:unix-time seconds +══════════════════════════════════════════════════════════════════════ + Convert epoch time to a human-readable form +Parameter + seconds The epoch timestamp to convert + +Example +#1 To convert the epoch time 1490191111: + :unix-time 1490191111 + + + +:untag tag1 [... tagN] +══════════════════════════════════════════════════════════════════════ + Detach tags from the top log line +Parameter + tag The tags to detach +See Also + :comment, :tag +Example +#1 To remove the tags '#BUG123' and '#needs-review' from the top line: + :untag #BUG123 #needs-review + + + +:write-table-to path +══════════════════════════════════════════════════════════════════════ + Write SQL results to the given file in a tabular format +Parameter + path The path to the file to write +See Also + :alt-msg, :append-to, :create-logline-table, :create-search-table, + :echo, :echo, :eval, :pipe-line-to, :pipe-to, :redirect-to, + :redirect-to, :write-csv-to, :write-csv-to, :write-csv-to, + :write-json-to, :write-json-to, :write-json-to, :write-jsonlines-to, + :write-jsonlines-to, :write-jsonlines-to, :write-raw-to, :write-raw-to, + :write-raw-to, :write-screen-to, :write-screen-to, :write-screen-to, + :write-to, :write-to, :write-view-to, :write-view-to, :write-view-to +Example +#1 To write SQL results as text to /tmp/table.txt: + :write-table-to /tmp/table.txt + + + +:write-csv-to path +══════════════════════════════════════════════════════════════════════ + Write SQL results to the given file in CSV format +Parameter + path The path to the file to write +See Also + :alt-msg, :append-to, :create-logline-table, :create-search-table, + :echo, :echo, :eval, :pipe-line-to, :pipe-to, :redirect-to, + :redirect-to, :write-json-to, :write-json-to, :write-json-to, + :write-jsonlines-to, :write-jsonlines-to, :write-jsonlines-to, + :write-raw-to, :write-raw-to, :write-raw-to, :write-screen-to, + :write-screen-to, :write-screen-to, :write-table-to, :write-table-to, + :write-table-to, :write-to, :write-to, :write-view-to, :write-view-to, + :write-view-to +Example +#1 To write SQL results as CSV to /tmp/table.csv: + :write-csv-to /tmp/table.csv + + + +:write-json-to path +══════════════════════════════════════════════════════════════════════ + Write SQL results to the given file in JSON format +Parameter + path The path to the file to write +See Also + :alt-msg, :append-to, :create-logline-table, :create-search-table, + :echo, :echo, :eval, :pipe-line-to, :pipe-to, :redirect-to, + :redirect-to, :write-csv-to, :write-csv-to, :write-csv-to, + :write-jsonlines-to, :write-jsonlines-to, :write-jsonlines-to, + :write-raw-to, :write-raw-to, :write-raw-to, :write-screen-to, + :write-screen-to, :write-screen-to, :write-table-to, :write-table-to, + :write-table-to, :write-to, :write-to, :write-view-to, :write-view-to, + :write-view-to +Example +#1 To write SQL results as JSON to /tmp/table.json: + :write-json-to /tmp/table.json + + + +:write-jsonlines-to path +══════════════════════════════════════════════════════════════════════ + Write SQL results to the given file in JSON Lines format +Parameter + path The path to the file to write +See Also + :alt-msg, :append-to, :create-logline-table, :create-search-table, + :echo, :echo, :eval, :pipe-line-to, :pipe-to, :redirect-to, + :redirect-to, :write-csv-to, :write-csv-to, :write-csv-to, + :write-json-to, :write-json-to, :write-json-to, :write-raw-to, + :write-raw-to, :write-raw-to, :write-screen-to, :write-screen-to, + :write-screen-to, :write-table-to, :write-table-to, :write-table-to, + :write-to, :write-to, :write-view-to, :write-view-to, :write-view-to +Example +#1 To write SQL results as JSON Lines to /tmp/table.json: + :write-jsonlines-to /tmp/table.json + + + +:write-raw-to [--view={log,db}] path +══════════════════════════════════════════════════════════════════════ + 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. +Parameters + --view={log,db} The view to use as the source of data + path The path to the file to write +See Also + :alt-msg, :append-to, :create-logline-table, :create-search-table, + :echo, :echo, :eval, :pipe-line-to, :pipe-to, :redirect-to, + :redirect-to, :write-csv-to, :write-csv-to, :write-csv-to, + :write-json-to, :write-json-to, :write-json-to, :write-jsonlines-to, + :write-jsonlines-to, :write-jsonlines-to, :write-screen-to, + :write-screen-to, :write-screen-to, :write-table-to, :write-table-to, + :write-table-to, :write-to, :write-to, :write-view-to, :write-view-to, + :write-view-to +Example +#1 To write the marked lines in the log view to /tmp/table.txt: + :write-raw-to /tmp/table.txt + + + +:write-screen-to path +══════════════════════════════════════════════════════════════════════ + Write the displayed text or SQL results to the given file without + any formatting +Parameter + path The path to the file to write +See Also + :alt-msg, :append-to, :create-logline-table, :create-search-table, + :echo, :echo, :eval, :pipe-line-to, :pipe-to, :redirect-to, + :redirect-to, :write-csv-to, :write-csv-to, :write-csv-to, + :write-json-to, :write-json-to, :write-json-to, :write-jsonlines-to, + :write-jsonlines-to, :write-jsonlines-to, :write-raw-to, :write-raw-to, + :write-raw-to, :write-table-to, :write-table-to, :write-table-to, + :write-to, :write-to, :write-view-to, :write-view-to, :write-view-to +Example +#1 To write only the displayed text to /tmp/table.txt: + :write-screen-to /tmp/table.txt + + + +:write-table-to path +══════════════════════════════════════════════════════════════════════ + Write SQL results to the given file in a tabular format +Parameter + path The path to the file to write +See Also + :alt-msg, :append-to, :create-logline-table, :create-search-table, + :echo, :echo, :eval, :pipe-line-to, :pipe-to, :redirect-to, + :redirect-to, :write-csv-to, :write-csv-to, :write-csv-to, + :write-json-to, :write-json-to, :write-json-to, :write-jsonlines-to, + :write-jsonlines-to, :write-jsonlines-to, :write-raw-to, :write-raw-to, + :write-raw-to, :write-screen-to, :write-screen-to, :write-screen-to, + :write-to, :write-to, :write-view-to, :write-view-to, :write-view-to +Example +#1 To write SQL results as text to /tmp/table.txt: + :write-table-to /tmp/table.txt + + + +:write-to path +══════════════════════════════════════════════════════════════════════ + Overwrite the given file with any marked lines in the current view +Parameter + path The path to the file to write +See Also + :alt-msg, :append-to, :echo, :echo, :eval, :pipe-line-to, :pipe-to, + :redirect-to, :redirect-to, :write-csv-to, :write-csv-to, + :write-json-to, :write-json-to, :write-jsonlines-to, + :write-jsonlines-to, :write-raw-to, :write-raw-to, :write-screen-to, + :write-screen-to, :write-table-to, :write-table-to, :write-view-to, + :write-view-to +Example +#1 To write marked lines to the file /tmp/interesting-lines.txt: + :write-to /tmp/interesting-lines.txt + + + +:write-view-to path +══════════════════════════════════════════════════════════════════════ + Write the text in the top view to the given file without any + formatting +Parameter + path The path to the file to write +See Also + :alt-msg, :append-to, :create-logline-table, :create-search-table, + :echo, :echo, :eval, :pipe-line-to, :pipe-to, :redirect-to, + :redirect-to, :write-csv-to, :write-csv-to, :write-csv-to, + :write-json-to, :write-json-to, :write-json-to, :write-jsonlines-to, + :write-jsonlines-to, :write-jsonlines-to, :write-raw-to, :write-raw-to, + :write-raw-to, :write-screen-to, :write-screen-to, :write-screen-to, + :write-table-to, :write-table-to, :write-table-to, :write-to, + :write-to +Example +#1 To write the top view to /tmp/table.txt: + :write-view-to /tmp/table.txt + + + +:zoom-to zoom-level +══════════════════════════════════════════════════════════════════════ + Zoom the histogram view to the given level +Parameter + zoom-level The zoom level + +Example +#1 To set the zoom level to '1-week': + :zoom-to 1-week + + +SQL Reference + +CAST(expr AS type-name) +══════════════════════════════════════════════════════════════════════ + Convert the value of the given expression to a different storage + class specified by type-name. +Parameters + expr The value to convert. + type-name The name of the type to convert to. + +Example +#1 To cast the value 1.23 as an integer: + ;SELECT CAST(1.23 AS INTEGER) + + + +OVER([base-window-name] PARTITION BY expr, ... ORDER BY expr, ..., + [frame-spec]) +══════════════════════════════════════════════════════════════════════ + Executes the preceding function over a window +Parameters + base-window-name The name of the window definition + expr The values to use for partitioning + expr The values used to order the rows in the window + frame-spec Determines which output rows are read by an + aggregate window function + + +abs(x) +══════════════════════════════════════════════════════════════════════ + Return the absolute value of the argument +Parameter + x The number to convert +See Also + acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(), atn2(), + avg(), ceil(), degrees(), exp(), floor(), log(), log10(), max(), min(), + pi(), power(), radians(), round(), sign(), square(), sum(), total() +Example +#1 To get the absolute value of -1: + ;SELECT abs(-1) + + + +acos(num) +══════════════════════════════════════════════════════════════════════ + Returns the arccosine of a number, in radians +Parameter + num A cosine value that is between -1 and 1 +See Also + abs(), acosh(), asin(), asinh(), atan(), atan2(), atanh(), atn2(), + avg(), ceil(), degrees(), exp(), floor(), log(), log10(), max(), min(), + pi(), power(), radians(), round(), sign(), square(), sum(), total() +Example +#1 To get the arccosine of 0.2: + ;SELECT acos(0.2) + + + +acosh(num) +══════════════════════════════════════════════════════════════════════ + Returns the hyperbolic arccosine of a number +Parameter + num A number that is one or more +See Also + abs(), acos(), asin(), asinh(), atan(), atan2(), atanh(), atn2(), + avg(), ceil(), degrees(), exp(), floor(), log(), log10(), max(), min(), + pi(), power(), radians(), round(), sign(), square(), sum(), total() +Example +#1 To get the hyperbolic arccosine of 1.2: + ;SELECT acosh(1.2) + + + +asin(num) +══════════════════════════════════════════════════════════════════════ + Returns the arcsine of a number, in radians +Parameter + num A sine value that is between -1 and 1 +See Also + abs(), acos(), acosh(), asinh(), atan(), atan2(), atanh(), atn2(), + avg(), ceil(), degrees(), exp(), floor(), log(), log10(), max(), min(), + pi(), power(), radians(), round(), sign(), square(), sum(), total() +Example +#1 To get the arcsine of 0.2: + ;SELECT asin(0.2) + + + +asinh(num) +══════════════════════════════════════════════════════════════════════ + Returns the hyperbolic arcsine of a number +Parameter + num The number +See Also + abs(), acos(), acosh(), asin(), atan(), atan2(), atanh(), atn2(), + avg(), ceil(), degrees(), exp(), floor(), log(), log10(), max(), min(), + pi(), power(), radians(), round(), sign(), square(), sum(), total() +Example +#1 To get the hyperbolic arcsine of 0.2: + ;SELECT asinh(0.2) + + + +atan(num) +══════════════════════════════════════════════════════════════════════ + Returns the arctangent of a number, in radians +Parameter + num The number +See Also + abs(), acos(), acosh(), asin(), asinh(), atan2(), atanh(), atn2(), + avg(), ceil(), degrees(), exp(), floor(), log(), log10(), max(), min(), + pi(), power(), radians(), round(), sign(), square(), sum(), total() +Example +#1 To get the arctangent of 0.2: + ;SELECT atan(0.2) + + + +atan2(y, x) +══════════════════════════════════════════════════════════════════════ + Returns the angle in the plane between the positive X axis and the + ray from (0, 0) to the point (x, y) +Parameters + y The y coordinate of the point + x The x coordinate of the point +See Also + abs(), acos(), acosh(), asin(), asinh(), atan(), atanh(), atn2(), + avg(), ceil(), degrees(), exp(), floor(), log(), log10(), max(), min(), + pi(), power(), radians(), round(), sign(), square(), sum(), total() +Example +#1 To get the angle, in degrees, for the point at (5, 5): + ;SELECT degrees(atan2(5, 5)) + + + +atanh(num) +══════════════════════════════════════════════════════════════════════ + Returns the hyperbolic arctangent of a number +Parameter + num The number +See Also + abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atn2(), + avg(), ceil(), degrees(), exp(), floor(), log(), log10(), max(), min(), + pi(), power(), radians(), round(), sign(), square(), sum(), total() +Example +#1 To get the hyperbolic arctangent of 0.2: + ;SELECT atanh(0.2) + + + +atn2(y, x) +══════════════════════════════════════════════════════════════════════ + Returns the angle in the plane between the positive X axis and the + ray from (0, 0) to the point (x, y) +Parameters + y The y coordinate of the point + x The x coordinate of the point +See Also + abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(), + avg(), ceil(), degrees(), exp(), floor(), log(), log10(), max(), min(), + pi(), power(), radians(), round(), sign(), square(), sum(), total() +Example +#1 To get the angle, in degrees, for the point at (5, 5): + ;SELECT degrees(atn2(5, 5)) + + + +avg(X) +══════════════════════════════════════════════════════════════════════ + Returns the average value of all non-NULL numbers within a group. +Parameter + X The value to compute the average of. +See Also + abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(), + atn2(), ceil(), degrees(), exp(), floor(), log(), log10(), max(), + min(), pi(), power(), radians(), round(), sign(), square(), sum(), + total() +Examples +#1 To get the average of the column 'ex_duration' from the table 'lnav_example_log': + ;SELECT avg(ex_duration) FROM lnav_example_log + + +#2 To get the average of the column 'ex_duration' from the table 'lnav_example_log' when + grouped by 'ex_procname': + ;SELECT ex_procname, avg(ex_duration) FROM lnav_example_log GROUP BY ex_procname + + + +basename(path) +══════════════════════════════════════════════════════════════════════ + Extract the base portion of a pathname. +Parameter + path The path +See Also + dirname(), joinpath(), readlink(), realpath() +Examples +#1 To get the base of a plain file name: + ;SELECT basename('foobar') + + +#2 To get the base of a path: + ;SELECT basename('foo/bar') + + +#3 To get the base of a directory: + ;SELECT basename('foo/bar/') + + +#4 To get the base of an empty string: + ;SELECT basename('') + + +#5 To get the base of a Windows path: + ;SELECT basename('foo\bar') + + +#6 To get the base of the root directory: + ;SELECT basename('/') + + + +ceil(num) +══════════════════════════════════════════════════════════════════════ + Returns the smallest integer that is not less than the argument +Parameter + num The number to raise to the ceiling +See Also + abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(), + atn2(), avg(), degrees(), exp(), floor(), log(), log10(), max(), min(), + pi(), power(), radians(), round(), sign(), square(), sum(), total() +Example +#1 To get the ceiling of 1.23: + ;SELECT ceil(1.23) + + + +changes() +══════════════════════════════════════════════════════════════════════ + The number of database rows that were changed, inserted, or deleted + by the most recent statement. + + +char(X, ...) +══════════════════════════════════════════════════════════════════════ + Returns a string composed of characters having the given unicode + code point values +Parameter + X The unicode code point values +See Also + charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gunzip(), gzip(), humanize_file_size(), instr(), + leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(), + padr(), printf(), proper(), regexp_capture(), regexp_match(), + regexp_replace(), replace(), replicate(), reverse(), rightstr(), + rtrim(), sparkline(), spooky_hash(), startswith(), strfilter(), + substr(), trim(), unicode(), upper(), xpath() +Example +#1 To get a string with the code points 0x48 and 0x49: + ;SELECT char(0x48, 0x49) + + + +charindex(needle, haystack, [start]) +══════════════════════════════════════════════════════════════════════ + 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 +Parameters + needle The string to look for in the haystack + haystack The string to search within + start The one-based index within the haystack to start the + search +See Also + char(), endswith(), extract(), group_concat(), group_spooky_hash(), + gunzip(), gzip(), humanize_file_size(), instr(), leftstr(), length(), + logfmt2json(), lower(), ltrim(), padc(), padl(), padr(), printf(), + proper(), regexp_capture(), regexp_match(), regexp_replace(), + replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(), + spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(), + upper(), xpath() +Examples +#1 To search for the string 'abc' within 'abcabc' and starting at position 2: + ;SELECT charindex('abc', 'abcabc', 2) + + +#2 To search for the string 'abc' within 'abcdef' and starting at position 2: + ;SELECT charindex('abc', 'abcdef', 2) + + + +coalesce(X, Y, ...) +══════════════════════════════════════════════════════════════════════ + Returns a copy of its first non-NULL argument, or NULL if all + arguments are NULL +Parameters + X A value to check for NULL-ness + Y A value to check for NULL-ness + +Example +#1 To get the first non-null value from three parameters: + ;SELECT coalesce(null, 0, null) + + + +count(X) +══════════════════════════════════════════════════════════════════════ + If the argument is '*', the total number of rows in the group is + returned. Otherwise, the number of times the argument is non-NULL. +Parameter + X The value to count. + +Examples +#1 To get the count of the non-NULL rows of 'lnav_example_log': + ;SELECT count(*) FROM lnav_example_log + + +#2 To get the count of the non-NULL values of 'log_part' from 'lnav_example_log': + ;SELECT count(log_part) FROM lnav_example_log + + + +cume_dist() +══════════════════════════════════════════════════════════════════════ + Returns the cumulative distribution +See Also + dense_rank(), first_value(), lag(), last_value(), lead(), nth_value(), + ntile(), percent_rank(), rank(), row_number() + +date(timestring, modifier, ...) +══════════════════════════════════════════════════════════════════════ + Returns the date in this format: YYYY-MM-DD. +Parameters + timestring The string to convert to a date. + modifier A transformation that is applied to the value to the + left. +See Also + datetime(), julianday(), strftime(), time(), timediff(), timeslice() +Examples +#1 To get the date portion of the timestamp '2017-01-02T03:04:05': + ;SELECT date('2017-01-02T03:04:05') + + +#2 To get the date portion of the timestamp '2017-01-02T03:04:05' plus one day: + ;SELECT date('2017-01-02T03:04:05', '+1 day') + + +#3 To get the date portion of the epoch timestamp 1491341842: + ;SELECT date(1491341842, 'unixepoch') + + + +datetime(timestring, modifier, ...) +══════════════════════════════════════════════════════════════════════ + Returns the date and time in this format: YYYY-MM-DD HH:MM:SS. +Parameters + timestring The string to convert to a date with time. + modifier A transformation that is applied to the value to the + left. +See Also + date(), julianday(), strftime(), time(), timediff(), timeslice() +Examples +#1 To get the date and time portion of the timestamp '2017-01-02T03:04:05': + ;SELECT datetime('2017-01-02T03:04:05') + + +#2 To get the date and time portion of the timestamp '2017-01-02T03:04:05' plus one minute + : + ;SELECT datetime('2017-01-02T03:04:05', '+1 minute') + + +#3 To get the date and time portion of the epoch timestamp 1491341842: + ;SELECT datetime(1491341842, 'unixepoch') + + + +degrees(radians) +══════════════════════════════════════════════════════════════════════ + Converts radians to degrees +Parameter + radians The radians value to convert to degrees +See Also + abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(), + atn2(), avg(), ceil(), exp(), floor(), log(), log10(), max(), min(), + pi(), power(), radians(), round(), sign(), square(), sum(), total() +Example +#1 To convert PI to degrees: + ;SELECT degrees(pi()) + + + +dense_rank() +══════════════════════════════════════════════════════════════════════ + Returns the row_number() of the first peer in each group without + gaps +See Also + cume_dist(), first_value(), lag(), last_value(), lead(), nth_value(), + ntile(), percent_rank(), rank(), row_number() + +dirname(path) +══════════════════════════════════════════════════════════════════════ + Extract the directory portion of a pathname. +Parameter + path The path +See Also + basename(), joinpath(), readlink(), realpath() +Examples +#1 To get the directory of a relative file path: + ;SELECT dirname('foo/bar') + + +#2 To get the directory of an absolute file path: + ;SELECT dirname('/foo/bar') + + +#3 To get the directory of a file in the root directory: + ;SELECT dirname('/bar') + + +#4 To get the directory of a Windows path: + ;SELECT dirname('foo\bar') + + +#5 To get the directory of an empty path: + ;SELECT dirname('') + + + +endswith(str, suffix) +══════════════════════════════════════════════════════════════════════ + Test if a string ends with the given suffix +Parameters + str The string to test + suffix The suffix to check in the string +See Also + char(), charindex(), extract(), group_concat(), group_spooky_hash(), + gunzip(), gzip(), humanize_file_size(), instr(), leftstr(), length(), + logfmt2json(), lower(), ltrim(), padc(), padl(), padr(), printf(), + proper(), regexp_capture(), regexp_match(), regexp_replace(), + replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(), + spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(), + upper(), xpath() +Examples +#1 To test if the string 'notbad.jpg' ends with '.jpg': + ;SELECT endswith('notbad.jpg', '.jpg') + + +#2 To test if the string 'notbad.png' starts with '.jpg': + ;SELECT endswith('notbad.png', '.jpg') + + + +exp(x) +══════════════════════════════════════════════════════════════════════ + Returns the value of e raised to the power of x +Parameter + x The exponent +See Also + abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(), + atn2(), avg(), ceil(), degrees(), floor(), log(), log10(), max(), + min(), pi(), power(), radians(), round(), sign(), square(), sum(), + total() +Example +#1 To raise e to 2: + ;SELECT exp(2) + + + +extract(str) +══════════════════════════════════════════════════════════════════════ + Automatically Parse and extract data from a string +Parameter + str The string to parse +See Also + char(), charindex(), endswith(), group_concat(), group_spooky_hash(), + gunzip(), gzip(), humanize_file_size(), instr(), leftstr(), length(), + logfmt2json(), lower(), ltrim(), padc(), padl(), padr(), printf(), + proper(), regexp_capture(), regexp_match(), regexp_replace(), + replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(), + spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(), + upper(), xpath() +Examples +#1 To extract key/value pairs from a string: + ;SELECT extract('foo=1 bar=2 name="Rolo Tomassi"') + + +#2 To extract columnar data from a string: + ;SELECT extract('1.0 abc 2.0') + + + +first_value(expr) +══════════════════════════════════════════════════════════════════════ + Returns the result of evaluating the expression against the first + row in the window frame. +Parameter + expr The expression to execute over the first row +See Also + cume_dist(), dense_rank(), lag(), last_value(), lead(), nth_value(), + ntile(), percent_rank(), rank(), row_number() + +floor(num) +══════════════════════════════════════════════════════════════════════ + Returns the largest integer that is not greater than the argument +Parameter + num The number to lower to the floor +See Also + abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(), + atn2(), avg(), ceil(), degrees(), exp(), log(), log10(), max(), min(), + pi(), power(), radians(), round(), sign(), square(), sum(), total() +Example +#1 To get the floor of 1.23: + ;SELECT floor(1.23) + + + +generate_series(start, stop, [step]) +══════════════════════════════════════════════════════════════════════ + A table-valued-function that returns the whole numbers between a + lower and upper bound, inclusive +Parameters + start The starting point of the series + stop The stopping point of the series + step The increment between each value +Result + value The number in the series + +Examples +#1 To generate the numbers in the range [10, 14]: + ;SELECT value FROM generate_series(10, 14) + + +#2 To generate every other number in the range [10, 14]: + ;SELECT value FROM generate_series(10, 14, 2) + + +#3 To count down from five to 1: + ;SELECT value FROM generate_series(1, 5, -1) + + + +gethostbyaddr(hostname) +══════════════════════════════════════════════════════════════════════ + Get the hostname for the given IP address +Parameter + hostname The IP address to lookup. +See Also + gethostbyname() +Example +#1 To get the hostname for the IP '127.0.0.1': + ;SELECT gethostbyaddr('127.0.0.1') + + + +gethostbyname(hostname) +══════════════════════════════════════════════════════════════════════ + Get the IP address for the given hostname +Parameter + hostname The DNS hostname to lookup. +See Also + gethostbyaddr() +Example +#1 To get the IP address for 'localhost': + ;SELECT gethostbyname('localhost') + + + +glob(pattern, str) +══════════════════════════════════════════════════════════════════════ + Match a string against Unix glob pattern +Parameters + pattern The glob pattern + str The string to match + +Example +#1 To test if the string 'abc' matches the glob 'a*': + ;SELECT glob('a*', 'abc') + + + +group_concat(X, [sep]) +══════════════════════════════════════════════════════════════════════ + Returns a string which is the concatenation of all non-NULL values + of X separated by a comma or the given separator. +Parameters + X The value to concatenate. + sep The separator to place between the values. +See Also + char(), charindex(), endswith(), extract(), group_spooky_hash(), + gunzip(), gzip(), humanize_file_size(), instr(), leftstr(), length(), + logfmt2json(), lower(), ltrim(), padc(), padl(), padr(), printf(), + proper(), regexp_capture(), regexp_match(), regexp_replace(), + replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(), + spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(), + upper(), xpath() +Examples +#1 To concatenate the values of the column 'ex_procname' from the table 'lnav_example_log' + : + ;SELECT group_concat(ex_procname) FROM lnav_example_log + + +#2 To join the values of the column 'ex_procname' using the string ', ': + ;SELECT group_concat(ex_procname, ', ') FROM lnav_example_log + + +#3 To concatenate the distinct values of the column 'ex_procname' from the table ' + lnav_example_log': + ;SELECT group_concat(DISTINCT ex_procname) FROM lnav_example_log + + + +group_spooky_hash(str, ...) +══════════════════════════════════════════════════════════════════════ + Compute the hash value for the given arguments +Parameter + str The string to hash +See Also + char(), charindex(), endswith(), extract(), group_concat(), gunzip(), + gzip(), humanize_file_size(), instr(), leftstr(), length(), + logfmt2json(), lower(), ltrim(), padc(), padl(), padr(), printf(), + proper(), regexp_capture(), regexp_match(), regexp_replace(), + replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(), + spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(), + upper(), xpath() +Example +#1 To produce a hash of all of the values of 'column1': + ;SELECT group_spooky_hash(column1) FROM (VALUES ('abc'), ('123')) + + + +gunzip(b, ...) +══════════════════════════════════════════════════════════════════════ + Decompress a gzip file +Parameter + b The blob to decompress +See Also + char(), charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gzip(), humanize_file_size(), instr(), leftstr(), + length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(), + printf(), proper(), regexp_capture(), regexp_match(), regexp_replace(), + replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(), + spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(), + upper(), xpath() + +gzip(value, ...) +══════════════════════════════════════════════════════════════════════ + Compress a string into a gzip file +Parameter + value The value to compress +See Also + char(), charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gunzip(), humanize_file_size(), instr(), + leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(), + padr(), printf(), proper(), regexp_capture(), regexp_match(), + regexp_replace(), replace(), replicate(), reverse(), rightstr(), + rtrim(), sparkline(), spooky_hash(), startswith(), strfilter(), + substr(), trim(), unicode(), upper(), xpath() + +hex(X) +══════════════════════════════════════════════════════════════════════ + Returns a string which is the upper-case hexadecimal rendering of + the content of its argument. +Parameter + X The blob to convert to hexadecimal + +Example +#1 To get the hexadecimal rendering of the string 'abc': + ;SELECT hex('abc') + + + +humanize_file_size(value) +══════════════════════════════════════════════════════════════════════ + Format the given file size as a human-friendly string +Parameter + value The file size to format +See Also + char(), charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gunzip(), gzip(), instr(), leftstr(), length(), + logfmt2json(), lower(), ltrim(), padc(), padl(), padr(), printf(), + proper(), regexp_capture(), regexp_match(), regexp_replace(), + replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(), + spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(), + upper(), xpath() +Example +#1 To format an amount: + ;SELECT humanize_file_size(10 * 1024 * 1024) + + + +ifnull(X, Y) +══════════════════════════════════════════════════════════════════════ + Returns a copy of its first non-NULL argument, or NULL if both + arguments are NULL +Parameters + X A value to check for NULL-ness + Y A value to check for NULL-ness + +Example +#1 To get the first non-null value between null and zero: + ;SELECT ifnull(null, 0) + + + +instr(haystack, needle) +══════════════════════════════════════════════════════════════════════ + 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 +Parameters + haystack The string to search within + needle The string to look for in the haystack +See Also + char(), charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gunzip(), gzip(), humanize_file_size(), leftstr(), + length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(), + printf(), proper(), regexp_capture(), regexp_match(), regexp_replace(), + replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(), + spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(), + upper(), xpath() +Example +#1 To test get the position of 'b' in the string 'abc': + ;SELECT instr('abc', 'b') + + + +jget(json, ptr, [default]) +══════════════════════════════════════════════════════════════════════ + Get the value from a JSON object using a JSON-Pointer. +Parameters + json The JSON object to query. + ptr The JSON-Pointer to lookup in the object. + default The default value if the value was not found +See Also + json_concat(), json_contains(), json_group_array(), + json_group_object() +Examples +#1 To get the root of a JSON value: + ;SELECT jget('1', '') + + +#2 To get the property named 'b' in a JSON object: + ;SELECT jget('{ "a": 1, "b": 2 }', '/b') + + +#3 To get the 'msg' property and return a default if it does not exist: + ;SELECT jget(null, '/msg', 'Hello') + + + +joinpath(path, ...) +══════════════════════════════════════════════════════════════════════ + Join components of a path together. +Parameter + path 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. +See Also + basename(), dirname(), readlink(), realpath() +Examples +#1 To join a directory and file name into a relative path: + ;SELECT joinpath('foo', 'bar') + + +#2 To join an empty component with other names into a relative path: + ;SELECT joinpath('', 'foo', 'bar') + + +#3 To create an absolute path with two path components: + ;SELECT joinpath('/', 'foo', 'bar') + + +#4 To create an absolute path from a path component that starts with a forward slash: + ;SELECT joinpath('/', 'foo', '/bar') + + + +json_concat(json, value, ...) +══════════════════════════════════════════════════════════════════════ + 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. +Parameters + json The initial JSON value. + value The value(s) to add to the end of the array. +See Also + jget(), json_contains(), json_group_array(), json_group_object() +Examples +#1 To append the number 4 to null: + ;SELECT json_concat(NULL, 4) + + +#2 To append 4 and 5 to the array [1, 2, 3]: + ;SELECT json_concat('[1, 2, 3]', 4, 5) + + +#3 To concatenate two arrays together: + ;SELECT json_concat('[1, 2, 3]', json('[4, 5]')) + + + +json_contains(json, value) +══════════════════════════════════════════════════════════════════════ + Check if a JSON value contains the given element. +Parameters + json The JSON value to query. + value The value to look for in the first argument +See Also + jget(), json_concat(), json_group_array(), json_group_object() +Examples +#1 To test if a JSON array contains the number 4: + ;SELECT json_contains('[1, 2, 3]', 4) + + +#2 To test if a JSON array contains the string 'def': + ;SELECT json_contains('["abc", "def"]', 'def') + + + +json_group_array(value, ...) +══════════════════════════════════════════════════════════════════════ + Collect the given values from a query into a JSON array +Parameter + value The values to append to the array +See Also + jget(), json_concat(), json_contains(), json_group_object() +Examples +#1 To create an array from arguments: + ;SELECT json_group_array('one', 2, 3.4) + + +#2 To create an array from a column of values: + ;SELECT json_group_array(column1) FROM (VALUES (1), (2), (3)) + + + +json_group_object(name, value, ...) +══════════════════════════════════════════════════════════════════════ + Collect the given values from a query into a JSON object +Parameters + name The property name for the value + value The value to add to the object +See Also + jget(), json_concat(), json_contains(), json_group_array() +Examples +#1 To create an object from arguments: + ;SELECT json_group_object('a', 1, 'b', 2) + + +#2 To create an object from a pair of columns: + ;SELECT json_group_object(column1, column2) FROM (VALUES ('a', 1), ('b', 2)) + + + +julianday(timestring, modifier, ...) +══════════════════════════════════════════════════════════════════════ + Returns the number of days since noon in Greenwich on November 24, + 4714 B.C. +Parameters + timestring The string to convert to a date with time. + modifier A transformation that is applied to the value to the + left. +See Also + date(), datetime(), strftime(), time(), timediff(), timeslice() +Examples +#1 To get the julian day from the timestamp '2017-01-02T03:04:05': + ;SELECT julianday('2017-01-02T03:04:05') + + +#2 To get the julian day from the timestamp '2017-01-02T03:04:05' plus one minute: + ;SELECT julianday('2017-01-02T03:04:05', '+1 minute') + + +#3 To get the julian day from the timestamp 1491341842: + ;SELECT julianday(1491341842, 'unixepoch') + + + +lag(expr, [offset], [default]) +══════════════════════════════════════════════════════════════════════ + Returns the result of evaluating the expression against the previous + row in the partition. +Parameters + expr The expression to execute over the previous row + offset The offset from the current row in the partition + default The default value if the previous row does not exist + instead of NULL +See Also + cume_dist(), dense_rank(), first_value(), last_value(), lead(), + nth_value(), ntile(), percent_rank(), rank(), row_number() + +last_insert_rowid() +══════════════════════════════════════════════════════════════════════ + Returns the ROWID of the last row insert from the database + connection which invoked the function + + +last_value(expr) +══════════════════════════════════════════════════════════════════════ + Returns the result of evaluating the expression against the last row + in the window frame. +Parameter + expr The expression to execute over the last row +See Also + cume_dist(), dense_rank(), first_value(), lag(), lead(), nth_value(), + ntile(), percent_rank(), rank(), row_number() + +lead(expr, [offset], [default]) +══════════════════════════════════════════════════════════════════════ + Returns the result of evaluating the expression against the next row + in the partition. +Parameters + expr The expression to execute over the next row + offset The offset from the current row in the partition + default The default value if the next row does not exist instead + of NULL +See Also + cume_dist(), dense_rank(), first_value(), lag(), last_value(), + nth_value(), ntile(), percent_rank(), rank(), row_number() + +leftstr(str, N) +══════════════════════════════════════════════════════════════════════ + Returns the N leftmost (UTF-8) characters in the given string. +Parameters + str The string to return subset. + N The number of characters from the left side of the string to + return. +See Also + char(), charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gunzip(), gzip(), humanize_file_size(), instr(), + length(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(), + printf(), proper(), regexp_capture(), regexp_match(), regexp_replace(), + replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(), + spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(), + upper(), xpath() +Examples +#1 To get the first character of the string 'abc': + ;SELECT leftstr('abc', 1) + + +#2 To get the first ten characters of a string, regardless of size: + ;SELECT leftstr('abc', 10) + + + +length(str) +══════════════════════════════════════════════════════════════════════ + Returns the number of characters (not bytes) in the given string + prior to the first NUL character +Parameter + str The string to determine the length of +See Also + char(), charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gunzip(), gzip(), humanize_file_size(), instr(), + leftstr(), logfmt2json(), lower(), ltrim(), padc(), padl(), padr(), + printf(), proper(), regexp_capture(), regexp_match(), regexp_replace(), + replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(), + spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(), + upper(), xpath() +Example +#1 To get the length of the string 'abc': + ;SELECT length('abc') + + + +like(pattern, str, [escape]) +══════════════════════════════════════════════════════════════════════ + Match a string against a pattern +Parameters + pattern The pattern to match. A percent symbol (%) will match + zero or more characters and an underscore (_) will match a + single character. + str The string to match + escape The escape character that can be used to prefix a literal + percent or underscore in the pattern. + +Examples +#1 To test if the string 'aabcc' contains the letter 'b': + ;SELECT like('%b%', 'aabcc') + + +#2 To test if the string 'aab%' ends with 'b%': + ;SELECT like('%b:%', 'aab%', ':') + + + +likelihood(value, probability) +══════════════════════════════════════════════════════════════════════ + Provides a hint to the query planner that the first argument is a + boolean that is true with the given probability +Parameters + value The boolean value to return + probability A floating point constant between 0.0 and 1.0 + + +likely(value) +══════════════════════════════════════════════════════════════════════ + Short-hand for likelihood(X,0.9375) +Parameter + value The boolean value to return + + +lnav_top_file() +══════════════════════════════════════════════════════════════════════ + Return the name of the file that the top line in the current view + came from. + + +lnav_version() +══════════════════════════════════════════════════════════════════════ + Return the current version of lnav + + +load_extension(path, [entry-point]) +══════════════════════════════════════════════════════════════════════ + Loads SQLite extensions out of the given shared library file using + the given entry point. +Parameters + path The path to the shared library containing the + extension. + entry-point + + +log(x) +══════════════════════════════════════════════════════════════════════ + Returns the natural logarithm of x +Parameter + x The number +See Also + abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(), + atn2(), avg(), ceil(), degrees(), exp(), floor(), log10(), max(), + min(), pi(), power(), radians(), round(), sign(), square(), sum(), + total() +Example +#1 To get the natual logarithm of 8: + ;SELECT log(8) + + + +log10(x) +══════════════════════════════════════════════════════════════════════ + Returns the base-10 logarithm of X +Parameter + x The number +See Also + abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(), + atn2(), avg(), ceil(), degrees(), exp(), floor(), log(), max(), min(), + pi(), power(), radians(), round(), sign(), square(), sum(), total() +Example +#1 To get the logarithm of 100: + ;SELECT log10(100) + + + +log_top_datetime() +══════════════════════════════════════════════════════════════════════ + Return the timestamp of the line at the top of the log view. + + +log_top_line() +══════════════════════════════════════════════════════════════════════ + Return the line number at the top of the log view. + + +logfmt2json(str) +══════════════════════════════════════════════════════════════════════ + Convert a logfmt-encoded string into JSON +Parameter + str The logfmt message to parse +See Also + char(), charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gunzip(), gzip(), humanize_file_size(), instr(), + leftstr(), length(), lower(), ltrim(), padc(), padl(), padr(), + printf(), proper(), regexp_capture(), regexp_match(), regexp_replace(), + replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(), + spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(), + upper(), xpath() +Example +#1 To extract key/value pairs from a log message: + ;SELECT logfmt2json('foo=1 bar=2 name="Rolo Tomassi"') + + + +lower(str) +══════════════════════════════════════════════════════════════════════ + Returns a copy of the given string with all ASCII characters + converted to lower case. +Parameter + str The string to convert. +See Also + char(), charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gunzip(), gzip(), humanize_file_size(), instr(), + leftstr(), length(), logfmt2json(), ltrim(), padc(), padl(), padr(), + printf(), proper(), regexp_capture(), regexp_match(), regexp_replace(), + replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(), + spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(), + upper(), xpath() +Example +#1 To lowercase the string 'AbC': + ;SELECT lower('AbC') + + + +ltrim(str, [chars]) +══════════════════════════════════════════════════════════════════════ + Returns a string formed by removing any and all characters that + appear in the second argument from the left side of the first. +Parameters + str The string to trim characters from the left side + chars The characters to trim. Defaults to spaces. +See Also + char(), charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gunzip(), gzip(), humanize_file_size(), instr(), + leftstr(), length(), logfmt2json(), lower(), padc(), padl(), padr(), + printf(), proper(), regexp_capture(), regexp_match(), regexp_replace(), + replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(), + spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(), + upper(), xpath() +Examples +#1 To trim the leading whitespace from the string ' abc': + ;SELECT ltrim(' abc') + + +#2 To trim the characters 'a' or 'b' from the left side of the string 'aaaabbbc': + ;SELECT ltrim('aaaabbbc', 'ab') + + + +max(X, ...) +══════════════════════════════════════════════════════════════════════ + Returns the argument with the maximum value, or return NULL if any + argument is NULL. +Parameter + X The numbers to find the maximum of. If only one argument is + given, this function operates as an aggregate. +See Also + abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(), + atn2(), avg(), ceil(), degrees(), exp(), floor(), log(), log10(), + min(), pi(), power(), radians(), round(), sign(), square(), sum(), + total() +Examples +#1 To get the largest value from the parameters: + ;SELECT max(2, 1, 3) + + +#2 To get the largest value from an aggregate: + ;SELECT max(status) FROM http_status_codes + + + +min(X, ...) +══════════════════════════════════════════════════════════════════════ + Returns the argument with the minimum value, or return NULL if any + argument is NULL. +Parameter + X The numbers to find the minimum of. If only one argument is + given, this function operates as an aggregate. +See Also + abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(), + atn2(), avg(), ceil(), degrees(), exp(), floor(), log(), log10(), + max(), pi(), power(), radians(), round(), sign(), square(), sum(), + total() +Examples +#1 To get the smallest value from the parameters: + ;SELECT min(2, 1, 3) + + +#2 To get the smallest value from an aggregate: + ;SELECT min(status) FROM http_status_codes + + + +nth_value(expr, N) +══════════════════════════════════════════════════════════════════════ + Returns the result of evaluating the expression against the nth row + in the window frame. +Parameters + expr The expression to execute over the nth row + N The row number +See Also + cume_dist(), dense_rank(), first_value(), lag(), last_value(), lead(), + ntile(), percent_rank(), rank(), row_number() + +ntile(groups) +══════════════════════════════════════════════════════════════════════ + Returns the number of the group that the current row is a part of +Parameter + groups The number of groups +See Also + cume_dist(), dense_rank(), first_value(), lag(), last_value(), lead(), + nth_value(), percent_rank(), rank(), row_number() + +nullif(X, Y) +══════════════════════════════════════════════════════════════════════ + Returns its first argument if the arguments are different and NULL + if the arguments are the same. +Parameters + X The first argument to compare. + Y The argument to compare against the first. + +Examples +#1 To test if 1 is different from 1: + ;SELECT nullif(1, 1) + + +#2 To test if 1 is different from 2: + ;SELECT nullif(1, 2) + + + +padc(str, len) +══════════════════════════════════════════════════════════════════════ + Pad the given string with enough spaces to make it centered within + the given length +Parameters + str The string to pad + len The minimum desired length of the output string +See Also + char(), charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gunzip(), gzip(), humanize_file_size(), instr(), + leftstr(), length(), logfmt2json(), lower(), ltrim(), padl(), padr(), + printf(), proper(), regexp_capture(), regexp_match(), regexp_replace(), + replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(), + spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(), + upper(), xpath() +Examples +#1 To pad the string 'abc' to a length of six characters: + ;SELECT padc('abc', 6) || 'def' + + +#2 To pad the string 'abcdef' to a length of eight characters: + ;SELECT padc('abcdef', 8) || 'ghi' + + + +padl(str, len) +══════════════════════════════════════════════════════════════════════ + Pad the given string with leading spaces until it reaches the + desired length +Parameters + str The string to pad + len The minimum desired length of the output string +See Also + char(), charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gunzip(), gzip(), humanize_file_size(), instr(), + leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padr(), + printf(), proper(), regexp_capture(), regexp_match(), regexp_replace(), + replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(), + spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(), + upper(), xpath() +Examples +#1 To pad the string 'abc' to a length of six characters: + ;SELECT padl('abc', 6) + + +#2 To pad the string 'abcdef' to a length of four characters: + ;SELECT padl('abcdef', 4) + + + +padr(str, len) +══════════════════════════════════════════════════════════════════════ + Pad the given string with trailing spaces until it reaches the + desired length +Parameters + str The string to pad + len The minimum desired length of the output string +See Also + char(), charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gunzip(), gzip(), humanize_file_size(), instr(), + leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(), + printf(), proper(), regexp_capture(), regexp_match(), regexp_replace(), + replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(), + spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(), + upper(), xpath() +Examples +#1 To pad the string 'abc' to a length of six characters: + ;SELECT padr('abc', 6) || 'def' + + +#2 To pad the string 'abcdef' to a length of four characters: + ;SELECT padr('abcdef', 4) || 'ghi' + + + +percent_rank() +══════════════════════════════════════════════════════════════════════ + Returns (rank - 1) / (partition-rows - 1) +See Also + cume_dist(), dense_rank(), first_value(), lag(), last_value(), lead(), + nth_value(), ntile(), rank(), row_number() + +pi() +══════════════════════════════════════════════════════════════════════ + Returns the value of PI +See Also + abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(), + atn2(), avg(), ceil(), degrees(), exp(), floor(), log(), log10(), + max(), min(), power(), radians(), round(), sign(), square(), sum(), + total() +Example +#1 To get the value of PI: + ;SELECT pi() + + + +power(base, exp) +══════════════════════════════════════════════════════════════════════ + Returns the base to the given exponent +Parameters + base The base number + exp The exponent +See Also + abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(), + atn2(), avg(), ceil(), degrees(), exp(), floor(), log(), log10(), + max(), min(), pi(), radians(), round(), sign(), square(), sum(), + total() +Example +#1 To raise two to the power of three: + ;SELECT power(2, 3) + + + +printf(format, X) +══════════════════════════════════════════════════════════════════════ + 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. +Parameters + format The format of the string to return. + X The argument to substitute at a given position in the + format. +See Also + char(), charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gunzip(), gzip(), humanize_file_size(), instr(), + leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(), + padr(), proper(), regexp_capture(), regexp_match(), regexp_replace(), + replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(), + spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(), + upper(), xpath() +Examples +#1 To substitute 'World' into the string 'Hello, %s!': + ;SELECT printf('Hello, %s!', 'World') + + +#2 To right-align 'small' in the string 'align:' with a column width of 10: + ;SELECT printf('align: % 10s', 'small') + + +#3 To format 11 with a width of five characters and leading zeroes: + ;SELECT printf('value: %05d', 11) + + + +proper(str) +══════════════════════════════════════════════════════════════════════ + Capitalize the first character of words in the given string +Parameter + str The string to capitalize. +See Also + char(), charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gunzip(), gzip(), humanize_file_size(), instr(), + leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(), + padr(), printf(), regexp_capture(), regexp_match(), regexp_replace(), + replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(), + spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(), + upper(), xpath() +Example +#1 To capitalize the words in the string 'hello, world!': + ;SELECT proper('hello, world!') + + + +quote(X) +══════════════════════════════════════════════════════════════════════ + Returns the text of an SQL literal which is the value of its + argument suitable for inclusion into an SQL statement. +Parameter + X The string to quote. + +Examples +#1 To quote the string 'abc': + ;SELECT quote('abc') + + +#2 To quote the string 'abc'123': + ;SELECT quote('abc''123') + + + +radians(degrees) +══════════════════════════════════════════════════════════════════════ + Converts degrees to radians +Parameter + degrees The degrees value to convert to radians +See Also + abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(), + atn2(), avg(), ceil(), degrees(), exp(), floor(), log(), log10(), + max(), min(), pi(), power(), round(), sign(), square(), sum(), total() +Example +#1 To convert 180 degrees to radians: + ;SELECT radians(180) + + + +raise_error(msg) +══════════════════════════════════════════════════════════════════════ + Raises an error with the given message when executed +Parameter + msg The error message + + +random() +══════════════════════════════════════════════════════════════════════ + Returns a pseudo-random integer between -9223372036854775808 and + + 9223372036854775807. + + +randomblob(N) +══════════════════════════════════════════════════════════════════════ + Return an N-byte blob containing pseudo-random bytes. +Parameter + N The size of the blob in bytes. + + +rank() +══════════════════════════════════════════════════════════════════════ + Returns the row_number() of the first peer in each group with gaps +See Also + cume_dist(), dense_rank(), first_value(), lag(), last_value(), lead(), + nth_value(), ntile(), percent_rank(), row_number() + +readlink(path) +══════════════════════════════════════════════════════════════════════ + Read the target of a symbolic link. +Parameter + path The path to the symbolic link. +See Also + basename(), dirname(), joinpath(), realpath() + +realpath(path) +══════════════════════════════════════════════════════════════════════ + Returns the resolved version of the given path, expanding symbolic + links and resolving '.' and '..' references. +Parameter + path The path to resolve. +See Also + basename(), dirname(), joinpath(), readlink() + +regexp(re, str) +══════════════════════════════════════════════════════════════════════ + Test if a string matches a regular expression +Parameters + re The regular expression to use + str The string to test against the regular expression + + +regexp_capture(string, pattern) +══════════════════════════════════════════════════════════════════════ + 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. +Parameters + string The string to match against the given pattern. + pattern The regular expression to match. +Results + match_index The match iteration. This value will increase each + time a new match is found in the input string. + capture_index The index of the capture in the regex. + capture_name The name of the capture in the regex. + capture_count The total number of captures in the regex. + range_start The start of the capture in the input string. + range_stop The stop of the capture in the input string. + content The captured value from the string. +See Also + char(), charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gunzip(), gzip(), humanize_file_size(), instr(), + leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(), + padr(), printf(), proper(), regexp_match(), regexp_replace(), + replace(), replicate(), reverse(), rightstr(), rtrim(), sparkline(), + spooky_hash(), startswith(), strfilter(), substr(), trim(), unicode(), + upper(), xpath() +Example +#1 To extract the key/value pairs 'a'/1 and 'b'/2 from the string 'a=1; b=2': + ;SELECT * FROM regexp_capture('a=1; b=2', '(\w+)=(\d+)') + + + +regexp_match(re, str) +══════════════════════════════════════════════════════════════════════ + Match a string against a regular expression and return the capture + groups as JSON. +Parameters + re The regular expression to use + str The string to test against the regular expression +See Also + char(), charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gunzip(), gzip(), humanize_file_size(), instr(), + leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(), + padr(), printf(), proper(), regexp_capture(), regexp_replace(), + regexp_replace(), replace(), replicate(), reverse(), rightstr(), + rtrim(), sparkline(), spooky_hash(), startswith(), strfilter(), + substr(), trim(), unicode(), upper(), xpath() +Examples +#1 To capture the digits from the string '123': + ;SELECT regexp_match('(\d+)', '123') + + +#2 To capture a number and word into a JSON object with the properties 'col_0' and 'col_1' + : + ;SELECT regexp_match('(\d+) (\w+)', '123 four') + + +#3 To capture a number and word into a JSON object with the named properties 'num' and ' + str': + ;SELECT regexp_match('(?<num>\d+) (?<str>\w+)', '123 four') + + + +regexp_replace(str, re, repl) +══════════════════════════════════════════════════════════════════════ + Replace the parts of a string that match a regular expression. +Parameters + str The string to perform replacements on + re The regular expression to match + repl The replacement string. You can reference capture groups + with a backslash followed by the number of the group, + starting with 1. +See Also + char(), charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gunzip(), gzip(), humanize_file_size(), instr(), + leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(), + padr(), printf(), proper(), regexp_capture(), regexp_match(), + regexp_match(), replace(), replicate(), reverse(), rightstr(), rtrim(), + sparkline(), spooky_hash(), startswith(), strfilter(), substr(), + trim(), unicode(), upper(), xpath() +Examples +#1 To replace the word at the start of the string 'Hello, World!' with 'Goodbye': + ;SELECT regexp_replace('Hello, World!', '^(\w+)', 'Goodbye') + + +#2 To wrap alphanumeric words with angle brackets: + ;SELECT regexp_replace('123 abc', '(\w+)', '<\1>') + + + +replace(str, old, replacement) +══════════════════════════════════════════════════════════════════════ + Returns a string formed by substituting the replacement string for + every occurrence of the old string in the given string. +Parameters + str The string to perform substitutions on. + old The string to be replaced. + replacement The string to replace any occurrences of the old + string with. +See Also + char(), charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gunzip(), gzip(), humanize_file_size(), instr(), + leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(), + padr(), printf(), proper(), regexp_capture(), regexp_match(), + regexp_replace(), replicate(), reverse(), rightstr(), rtrim(), + sparkline(), spooky_hash(), startswith(), strfilter(), substr(), + trim(), unicode(), upper(), xpath() +Examples +#1 To replace the string 'x' with 'z' in 'abc': + ;SELECT replace('abc', 'x', 'z') + + +#2 To replace the string 'a' with 'z' in 'abc': + ;SELECT replace('abc', 'a', 'z') + + + +replicate(str, N) +══════════════════════════════════════════════════════════════════════ + Returns the given string concatenated N times. +Parameters + str The string to replicate. + N The number of times to replicate the string. +See Also + char(), charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gunzip(), gzip(), humanize_file_size(), instr(), + leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(), + padr(), printf(), proper(), regexp_capture(), regexp_match(), + regexp_replace(), replace(), reverse(), rightstr(), rtrim(), + sparkline(), spooky_hash(), startswith(), strfilter(), substr(), + trim(), unicode(), upper(), xpath() +Example +#1 To repeat the string 'abc' three times: + ;SELECT replicate('abc', 3) + + + +reverse(str) +══════════════════════════════════════════════════════════════════════ + Returns the reverse of the given string. +Parameter + str The string to reverse. +See Also + char(), charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gunzip(), gzip(), humanize_file_size(), instr(), + leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(), + padr(), printf(), proper(), regexp_capture(), regexp_match(), + regexp_replace(), replace(), replicate(), rightstr(), rtrim(), + sparkline(), spooky_hash(), startswith(), strfilter(), substr(), + trim(), unicode(), upper(), xpath() +Example +#1 To reverse the string 'abc': + ;SELECT reverse('abc') + + + +rightstr(str, N) +══════════════════════════════════════════════════════════════════════ + Returns the N rightmost (UTF-8) characters in the given string. +Parameters + str The string to return subset. + N The number of characters from the right side of the string to + return. +See Also + char(), charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gunzip(), gzip(), humanize_file_size(), instr(), + leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(), + padr(), printf(), proper(), regexp_capture(), regexp_match(), + regexp_replace(), replace(), replicate(), reverse(), rtrim(), + sparkline(), spooky_hash(), startswith(), strfilter(), substr(), + trim(), unicode(), upper(), xpath() +Examples +#1 To get the last character of the string 'abc': + ;SELECT rightstr('abc', 1) + + +#2 To get the last ten characters of a string, regardless of size: + ;SELECT rightstr('abc', 10) + + + +round(num, [digits]) +══════════════════════════════════════════════════════════════════════ + Returns a floating-point value rounded to the given number of digits + to the right of the decimal point. +Parameters + num The value to round. + digits The number of digits to the right of the decimal to round + to. +See Also + abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(), + atn2(), avg(), ceil(), degrees(), exp(), floor(), log(), log10(), + max(), min(), pi(), power(), radians(), sign(), square(), sum(), + total() +Examples +#1 To round the number 123.456 to an integer: + ;SELECT round(123.456) + + +#2 To round the number 123.456 to a precision of 1: + ;SELECT round(123.456, 1) + + +#3 To round the number 123.456 to a precision of 5: + ;SELECT round(123.456, 5) + + + +row_number() +══════════════════════════════════════════════════════════════════════ + Returns the number of the row within the current partition, starting + from 1. +See Also + cume_dist(), dense_rank(), first_value(), lag(), last_value(), lead(), + nth_value(), ntile(), percent_rank(), rank() +Example +#1 To number messages from a process: + ;SELECT row_number() OVER (PARTITION BY ex_procname ORDER BY log_line) AS msg_num, + ex_procname, log_body FROM lnav_example_log + + + +rtrim(str, [chars]) +══════════════════════════════════════════════════════════════════════ + Returns a string formed by removing any and all characters that + appear in the second argument from the right side of the first. +Parameters + str The string to trim characters from the right side + chars The characters to trim. Defaults to spaces. +See Also + char(), charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gunzip(), gzip(), humanize_file_size(), instr(), + leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(), + padr(), printf(), proper(), regexp_capture(), regexp_match(), + regexp_replace(), replace(), replicate(), reverse(), rightstr(), + sparkline(), spooky_hash(), startswith(), strfilter(), substr(), + trim(), unicode(), upper(), xpath() +Examples +#1 To trim the whitespace from the end of the string 'abc ': + ;SELECT rtrim('abc ') + + +#2 To trim the characters 'b' and 'c' from the string 'abbbbcccc': + ;SELECT rtrim('abbbbcccc', 'bc') + + + +sign(num) +══════════════════════════════════════════════════════════════════════ + Returns the sign of the given number as -1, 0, or 1 +Parameter + num The number +See Also + abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(), + atn2(), avg(), ceil(), degrees(), exp(), floor(), log(), log10(), + max(), min(), pi(), power(), radians(), round(), square(), sum(), + total() +Examples +#1 To get the sign of 10: + ;SELECT sign(10) + + +#2 To get the sign of 0: + ;SELECT sign(0) + + +#3 To get the sign of -10: + ;SELECT sign(-10) + + + +sparkline(value, [upper]) +══════════════════════════════════════════════════════════════════════ + 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 +Parameters + value The numeric value to convert + upper The upper bound of the numeric range. The non-aggregate + version defaults to 100. The aggregate version uses the + largest value in the inputs. +See Also + char(), charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gunzip(), gzip(), humanize_file_size(), instr(), + leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(), + padr(), printf(), proper(), regexp_capture(), regexp_match(), + regexp_replace(), replace(), replicate(), reverse(), rightstr(), + rtrim(), spooky_hash(), startswith(), strfilter(), substr(), trim(), + unicode(), upper(), xpath() +Examples +#1 To get the unicode block element for the value 32 in the range of 0-128: + ;SELECT sparkline(32, 128) + + +#2 To chart the values in a JSON array: + ;SELECT sparkline(value) FROM json_each('[0, 1, 2, 3, 4, 5, 6, 7, 8]') + + + +spooky_hash(str, ...) +══════════════════════════════════════════════════════════════════════ + Compute the hash value for the given arguments. +Parameter + str The string to hash +See Also + char(), charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gunzip(), gzip(), humanize_file_size(), instr(), + leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(), + padr(), printf(), proper(), regexp_capture(), regexp_match(), + regexp_replace(), replace(), replicate(), reverse(), rightstr(), + rtrim(), sparkline(), startswith(), strfilter(), substr(), trim(), + unicode(), upper(), xpath() +Examples +#1 To produce a hash for the string 'Hello, World!': + ;SELECT spooky_hash('Hello, World!') + + +#2 To produce a hash for the parameters where one is NULL: + ;SELECT spooky_hash('Hello, World!', NULL) + + +#3 To produce a hash for the parameters where one is an empty string: + ;SELECT spooky_hash('Hello, World!', '') + + +#4 To produce a hash for the parameters where one is a number: + ;SELECT spooky_hash('Hello, World!', 123) + + + +sqlite_compileoption_get(N) +══════════════════════════════════════════════════════════════════════ + Returns the N-th compile-time option used to build SQLite or NULL if + N is out of range. +Parameter + N The option number to get + + +sqlite_compileoption_used(option) +══════════════════════════════════════════════════════════════════════ + Returns true (1) or false (0) depending on whether or not that + compile-time option was used during the build. +Parameter + option The name of the compile-time option. + +Example +#1 To check if the SQLite library was compiled with ENABLE_FTS3: + ;SELECT sqlite_compileoption_used('ENABLE_FTS3') + + + +sqlite_source_id() +══════════════════════════════════════════════════════════════════════ + Returns a string that identifies the specific version of the source + code that was used to build the SQLite library. + + +sqlite_version() +══════════════════════════════════════════════════════════════════════ + Returns the version string for the SQLite library that is running. + + +square(num) +══════════════════════════════════════════════════════════════════════ + Returns the square of the argument +Parameter + num The number to square +See Also + abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(), + atn2(), avg(), ceil(), degrees(), exp(), floor(), log(), log10(), + max(), min(), pi(), power(), radians(), round(), sign(), sum(), + total() +Example +#1 To get the square of two: + ;SELECT square(2) + + + +startswith(str, prefix) +══════════════════════════════════════════════════════════════════════ + Test if a string begins with the given prefix +Parameters + str The string to test + prefix The prefix to check in the string +See Also + char(), charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gunzip(), gzip(), humanize_file_size(), instr(), + leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(), + padr(), printf(), proper(), regexp_capture(), regexp_match(), + regexp_replace(), replace(), replicate(), reverse(), rightstr(), + rtrim(), sparkline(), spooky_hash(), strfilter(), substr(), trim(), + unicode(), upper(), xpath() +Examples +#1 To test if the string 'foobar' starts with 'foo': + ;SELECT startswith('foobar', 'foo') + + +#2 To test if the string 'foobar' starts with 'bar': + ;SELECT startswith('foobar', 'bar') + + + +strfilter(source, include) +══════════════════════════════════════════════════════════════════════ + Returns the source string with only the characters given in the + second parameter +Parameters + source The string to filter + include The characters to include in the result +See Also + char(), charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gunzip(), gzip(), humanize_file_size(), instr(), + leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(), + padr(), printf(), proper(), regexp_capture(), regexp_match(), + regexp_replace(), replace(), replicate(), reverse(), rightstr(), + rtrim(), sparkline(), spooky_hash(), startswith(), substr(), trim(), + unicode(), upper(), xpath() +Example +#1 To get the 'b', 'c', and 'd' characters from the string 'abcabc': + ;SELECT strfilter('abcabc', 'bcd') + + + +strftime(format, timestring, modifier, ...) +══════════════════════════════════════════════════════════════════════ + Returns the date formatted according to the format string specified + as the first argument. +Parameters + format A format string with substitutions similar to those + found in the strftime() standard C library. + timestring The string to convert to a date with time. + modifier A transformation that is applied to the value to the + left. +See Also + date(), datetime(), julianday(), time(), timediff(), timeslice() +Examples +#1 To get the year from the timestamp '2017-01-02T03:04:05': + ;SELECT strftime('%Y', '2017-01-02T03:04:05') + + +#2 To create a string with the time from the timestamp '2017-01-02T03:04:05' plus one + minute: + ;SELECT strftime('The time is: %H:%M:%S', '2017-01-02T03:04:05', '+1 minute') + + +#3 To create a string with the Julian day from the epoch timestamp 1491341842: + ;SELECT strftime('Julian day: %J', 1491341842, 'unixepoch') + + + +substr(str, start, [size]) +══════════════════════════════════════════════════════════════════════ + Returns a substring of input string X that begins with the Y-th + character and which is Z characters long. +Parameters + str The string to extract a substring from. + start 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. + size 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. +See Also + char(), charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gunzip(), gzip(), humanize_file_size(), instr(), + leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(), + padr(), printf(), proper(), regexp_capture(), regexp_match(), + regexp_replace(), replace(), replicate(), reverse(), rightstr(), + rtrim(), sparkline(), spooky_hash(), startswith(), strfilter(), trim(), + unicode(), upper(), xpath() +Examples +#1 To get the substring starting at the second character until the end of the string 'abc' + : + ;SELECT substr('abc', 2) + + +#2 To get the substring of size one starting at the second character of the string 'abc': + ;SELECT substr('abc', 2, 1) + + +#3 To get the substring starting at the last character until the end of the string 'abc': + ;SELECT substr('abc', -1) + + +#4 To get the substring starting at the last character and going backwards one step of the + string 'abc': + ;SELECT substr('abc', -1, -1) + + + +sum(X) +══════════════════════════════════════════════════════════════════════ + Returns the sum of the values in the group as an integer. +Parameter + X The values to add. +See Also + abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(), + atn2(), avg(), ceil(), degrees(), exp(), floor(), log(), log10(), + max(), min(), pi(), power(), radians(), round(), sign(), square(), + total() +Example +#1 To sum all of the values in the column 'ex_duration' from the table 'lnav_example_log': + ;SELECT sum(ex_duration) FROM lnav_example_log + + + +time(timestring, modifier, ...) +══════════════════════════════════════════════════════════════════════ + Returns the time in this format: HH:MM:SS. +Parameters + timestring The string to convert to a time. + modifier A transformation that is applied to the value to the + left. +See Also + date(), datetime(), julianday(), strftime(), timediff(), timeslice() +Examples +#1 To get the time portion of the timestamp '2017-01-02T03:04:05': + ;SELECT time('2017-01-02T03:04:05') + + +#2 To get the time portion of the timestamp '2017-01-02T03:04:05' plus one minute: + ;SELECT time('2017-01-02T03:04:05', '+1 minute') + + +#3 To get the time portion of the epoch timestamp 1491341842: + ;SELECT time(1491341842, 'unixepoch') + + + +timediff(time1, time2) +══════════════════════════════════════════════════════════════════════ + Compute the difference between two timestamps in seconds +Parameters + time1 The first timestamp + time2 The timestamp to subtract from the first +See Also + date(), datetime(), julianday(), strftime(), time(), timeslice() +Examples +#1 To get the difference between two timestamps: + ;SELECT timediff('2017-02-03T04:05:06', '2017-02-03T04:05:00') + + +#2 To get the difference between relative timestamps: + ;SELECT timediff('today', 'yesterday') + + + +timeslice(time, slice) +══════════════════════════════════════════════════════════════════════ + 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. +Parameters + time The timestamp to get the time slice for. + slice The size of the time slices +See Also + date(), datetime(), julianday(), strftime(), time(), timediff() +Examples +#1 To get the timestamp rounded down to the start of the ten minute slice: + ;SELECT timeslice('2017-01-01T05:05:00', '10m') + + +#2 To group log messages into five minute buckets and count them: + ;SELECT timeslice(log_time_msecs, '5m') AS slice, count(1) + FROM lnav_example_log GROUP BY slice + + +#3 To group log messages by those before 4:30am and after: + ;SELECT timeslice(log_time_msecs, 'before 4:30am') AS slice, count(1) FROM + lnav_example_log GROUP BY slice + + + +total(X) +══════════════════════════════════════════════════════════════════════ + Returns the sum of the values in the group as a floating-point. +Parameter + X The values to add. +See Also + abs(), acos(), acosh(), asin(), asinh(), atan(), atan2(), atanh(), + atn2(), avg(), ceil(), degrees(), exp(), floor(), log(), log10(), + max(), min(), pi(), power(), radians(), round(), sign(), square(), + sum() +Example +#1 To total all of the values in the column 'ex_duration' from the table 'lnav_example_log + ': + ;SELECT total(ex_duration) FROM lnav_example_log + + + +total_changes() +══════════════════════════════════════════════════════════════════════ + Returns the number of row changes caused by INSERT, UPDATE or DELETE + statements since the current database connection was opened. + + +trim(str, [chars]) +══════════════════════════════════════════════════════════════════════ + 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. +Parameters + str The string to trim characters from the left and right sides. + + chars The characters to trim. Defaults to spaces. +See Also + char(), charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gunzip(), gzip(), humanize_file_size(), instr(), + leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(), + padr(), printf(), proper(), regexp_capture(), regexp_match(), + regexp_replace(), replace(), replicate(), reverse(), rightstr(), + rtrim(), sparkline(), spooky_hash(), startswith(), strfilter(), + substr(), unicode(), upper(), xpath() +Examples +#1 To trim whitespace from the start and end of the string ' abc ': + ;SELECT trim(' abc ') + + +#2 To trim the characters '-' and '+' from the string '-+abc+-': + ;SELECT trim('-+abc+-', '-+') + + + +typeof(X) +══════════════════════════════════════════════════════════════════════ + Returns a string that indicates the datatype of the expression X: " + null", "integer", "real", "text", or "blob". +Parameter + X The expression to check. + +Examples +#1 To get the type of the number 1: + ;SELECT typeof(1) + + +#2 To get the type of the string 'abc': + ;SELECT typeof('abc') + + + +unicode(X) +══════════════════════════════════════════════════════════════════════ + Returns the numeric unicode code point corresponding to the first + character of the string X. +Parameter + X The string to examine. +See Also + char(), charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gunzip(), gzip(), humanize_file_size(), instr(), + leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(), + padr(), printf(), proper(), regexp_capture(), regexp_match(), + regexp_replace(), replace(), replicate(), reverse(), rightstr(), + rtrim(), sparkline(), spooky_hash(), startswith(), strfilter(), + substr(), trim(), upper(), xpath() +Example +#1 To get the unicode code point for the first character of 'abc': + ;SELECT unicode('abc') + + + +unlikely(value) +══════════════════════════════════════════════════════════════════════ + Short-hand for likelihood(X, 0.0625) +Parameter + value The boolean value to return + + +upper(str) +══════════════════════════════════════════════════════════════════════ + Returns a copy of the given string with all ASCII characters + converted to upper case. +Parameter + str The string to convert. +See Also + char(), charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gunzip(), gzip(), humanize_file_size(), instr(), + leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(), + padr(), printf(), proper(), regexp_capture(), regexp_match(), + regexp_replace(), replace(), replicate(), reverse(), rightstr(), + rtrim(), sparkline(), spooky_hash(), startswith(), strfilter(), + substr(), trim(), unicode(), xpath() +Example +#1 To uppercase the string 'aBc': + ;SELECT upper('aBc') + + + +xpath(xpath, xmldoc) +══════════════════════════════════════════════════════════════════════ + A table-valued function that executes an xpath expression over an + XML string and returns the selected values. +Parameters + xpath The XPATH expression to evaluate over the XML document. + xmldoc The XML document as a string. +Results + result The result of the XPATH expression. + node_path The absolute path to the node containing the result. + node_attr The node's attributes stored in JSON object. + node_text The node's text value. +See Also + char(), charindex(), endswith(), extract(), group_concat(), + group_spooky_hash(), gunzip(), gzip(), humanize_file_size(), instr(), + leftstr(), length(), logfmt2json(), lower(), ltrim(), padc(), padl(), + padr(), printf(), proper(), regexp_capture(), regexp_match(), + regexp_replace(), replace(), replicate(), reverse(), rightstr(), + rtrim(), sparkline(), spooky_hash(), startswith(), strfilter(), + substr(), trim(), unicode(), upper() +Examples +#1 To select the XML nodes on the path '/abc/def': + ;SELECT * FROM xpath('/abc/def', '<abc><def a="b">Hello</def><def>Bye</def></abc>') + + +#2 To select all 'a' attributes on the path '/abc/def': + ;SELECT * FROM xpath('/abc/def/@a', '<abc><def a="b">Hello</def><def>Bye</def></abc>') + + +#3 To select the text nodes on the path '/abc/def': + ;SELECT * FROM xpath('/abc/def/text()', '<abc><def a="b">Hello ★</def></abc>') + + + +zeroblob(N) +══════════════════════════════════════════════════════════════════════ + Returns a BLOB consisting of N bytes of 0x00. +Parameter + N The size of the BLOB. + + +ATTACH DATABASE filename AS schema-name +══════════════════════════════════════════════════════════════════════ + Attach a database file to the current connection. +Parameters + filename The path to the database file. + schema-name The prefix for tables in this database. + +Example +#1 To attach the database file '/tmp/customers.db' with the name customers: + ;ATTACH DATABASE '/tmp/customers.db' AS customers + + + +CASE [base-expr] WHEN cmp-expr1 THEN then-expr1 [... WHEN cmp-exprN THEN then-exprN] [ELSE else-expr] END +══════════════════════════════════════════════════════════════════════ + 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. +Parameters + base-expr The base expression that is used for comparison in the + branches + cmp-expr The expression to test if this branch should be taken + else-expr The result of this CASE if no branches matched. + +Example +#1 To evaluate the number one and return the string 'one': + ;SELECT CASE 1 WHEN 0 THEN 'zero' WHEN 1 THEN 'one' END + + + +CREATE [TEMP] VIEW [IF NOT EXISTS] [schema-name.] view-name AS select-stmt +══════════════════════════════════════════════════════════════════════ + Assign a name to a SELECT statement +Parameters + IF NOT EXISTS Do not create the view if it already exists + schema-name. The database to create the view in + view-name The name of the view + select-stmt The SELECT statement the view represents + + +DELETE FROM table-name [WHERE cond] +══════════════════════════════════════════════════════════════════════ + Delete rows from a table +Parameters + table-name The name of the table + cond The conditions used to delete the rows. + + +DETACH DATABASE schema-name +══════════════════════════════════════════════════════════════════════ + Detach a database from the current connection. +Parameter + schema-name The prefix for tables in this database. + +Example +#1 To detach the database named 'customers': + ;DETACH DATABASE customers + + + +DROP VIEW [IF EXISTS] [schema-name.] view-name +══════════════════════════════════════════════════════════════════════ + Drop a view +Parameters + + +INSERT INTO [schema-name.] table-name [( column-name1 [, ... column-nameN] )] VALUES ( expr1 [, ... exprN] ) +══════════════════════════════════════════════════════════════════════ + Insert rows into a table +Parameters + +Example +#1 To insert the pair containing 'MSG' and 'HELLO, WORLD!' into the 'environ' + table: + ;INSERT INTO environ VALUES ('MSG', 'HELLO, WORLD!') + + + +OVER window-name +══════════════════════════════════════════════════════════════════════ + Executes the preceding function over a window +Parameter + window-name The name of the window definition + + +SELECT result-column1 [, ... result-columnN] [FROM table1 [, ... tableN]] [WHERE cond] [GROUP BY grouping-expr1 [, ... grouping-exprN]] [ORDER BY ordering-term1 [, ... ordering-termN]] [LIMIT limit-expr1 [, ... limit-exprN]] +══════════════════════════════════════════════════════════════════════ + Query the database and return zero or more rows of data. +Parameters + result-column The expression used to generate a result for this + column. + table The table(s) to query for data + cond The conditions used to select the rows to return. + grouping-expr The expression to use when grouping rows. + ordering-term The values to use when ordering the result set. + limit-expr The maximum number of rows to return. + +Example +#1 To select all of the columns from the table 'syslog_log': + ;SELECT * FROM syslog_log + + + +UPDATE table SET column-name1 = expr1 [, ... column-nameN = exprN] [WHERE cond] +══════════════════════════════════════════════════════════════════════ + Modify a subset of values in zero or more rows of the given table +Parameters + table The table to update + column-name The columns in the table to update. + cond The condition used to determine whether a row should + be updated. + +Example +#1 To mark the syslog message at line 40: + ;UPDATE syslog_log SET log_mark = 1 WHERE log_line = 40 + + + +WITH [RECURSIVE] cte-table-name AS select-stmt +══════════════════════════════════════════════════════════════════════ + Create a temporary view that exists only for the duration of a SQL + statement. +Parameters + cte-table-name The name for the temporary table. + select-stmt The SELECT statement used to populate the temporary + table. + |