Compare commits

...

557 Commits

Author SHA1 Message Date
Aliaksandr Valialkin
aadb73740f wip 2024-06-25 00:29:27 +02:00
Aliaksandr Valialkin
cb4addc5b0 Merge branch 'victorialogs-wip' into victorialogs-go1.21-issue-6425 2024-06-24 23:30:58 +02:00
Aliaksandr Valialkin
4441802970 Merge branch 'public-single-node' into victorialogs-wip 2024-06-24 23:24:31 +02:00
Aliaksandr Valialkin
7745a96acc wip 2024-06-24 23:05:41 +02:00
Aliaksandr Valialkin
33cd84f748 Merge branch 'public-single-node' into victorialogs-wip 2024-06-24 23:05:30 +02:00
Aliaksandr Valialkin
27d43a3333 wip 2024-06-20 03:05:33 +02:00
Aliaksandr Valialkin
9aa2c93216 wip 2024-06-20 03:01:13 +02:00
Aliaksandr Valialkin
9444d5a471 wip 2024-06-20 01:58:17 +02:00
Aliaksandr Valialkin
b72d25a96d wip 2024-06-20 01:58:05 +02:00
Aliaksandr Valialkin
a37337c79b wip 2024-06-20 01:44:29 +02:00
Aliaksandr Valialkin
763bc5875d wip 2024-06-20 01:40:52 +02:00
Aliaksandr Valialkin
0dec64c150 wip 2024-06-20 01:35:05 +02:00
Aliaksandr Valialkin
bebb8fe019 wip 2024-06-20 01:29:17 +02:00
Aliaksandr Valialkin
83f35e5d61 wip 2024-06-20 01:22:06 +02:00
Aliaksandr Valialkin
b29b5dab7a wip 2024-06-20 01:17:13 +02:00
Aliaksandr Valialkin
44b66c61b1 Merge branch 'public-single-node' into victorialogs-wip 2024-06-19 21:45:42 +02:00
Aliaksandr Valialkin
f922c70232 Merge branch 'public-single-node' into victorialogs-wip 2024-06-18 00:29:29 +02:00
Aliaksandr Valialkin
20fb3b9adf wip 2024-06-18 00:22:24 +02:00
Aliaksandr Valialkin
651f6e5ae1 wip 2024-06-18 00:20:54 +02:00
Aliaksandr Valialkin
a42db676ca Merge branch 'public-single-node' into victorialogs-wip 2024-06-18 00:18:34 +02:00
Aliaksandr Valialkin
5c4bd09efd wip 2024-06-17 23:53:36 +02:00
Aliaksandr Valialkin
b0516a8b88 Merge branch 'public-single-node' into victorialogs-wip 2024-06-17 23:24:11 +02:00
Aliaksandr Valialkin
8dc65c18b1 Merge branch 'public-single-node' into victorialogs-wip 2024-06-17 12:12:35 +02:00
Aliaksandr Valialkin
e75e45b06c wip 2024-06-17 12:05:27 +02:00
Aliaksandr Valialkin
06fff039ed wip 2024-06-17 12:01:07 +02:00
Aliaksandr Valialkin
2727a1ad88 wip 2024-06-17 11:54:36 +02:00
Aliaksandr Valialkin
56fbbb3ae7 wip 2024-06-17 11:09:15 +02:00
Aliaksandr Valialkin
430bebb5f0 lib/logstorage: add top pipe, which returns top N field sets with the biggest number of matching logs 2024-06-13 18:49:15 +02:00
Aliaksandr Valialkin
f644fa6251 Merge branch 'public-single-node' into victorialogs-wip 2024-06-13 17:10:38 +02:00
Aliaksandr Valialkin
d1dc3b42b3 wip 2024-06-11 17:50:00 +02:00
Aliaksandr Valialkin
7db28cc551 wip 2024-06-11 17:32:57 +02:00
Aliaksandr Valialkin
cbf8bfc2c3 Merge branch 'public-single-node' into victorialogs-wip 2024-06-11 17:32:18 +02:00
Aliaksandr Valialkin
af646ad1c0 Merge branch 'public-single-node' into victorialogs-wip 2024-06-11 16:41:34 +02:00
Aliaksandr Valialkin
701f5c6d85 wip 2024-06-11 16:41:31 +02:00
Aliaksandr Valialkin
4776696418 Merge branch 'public-single-node' into victorialogs-wip 2024-06-11 15:16:20 +02:00
Aliaksandr Valialkin
c86edb59e6 wip 2024-06-11 15:13:55 +02:00
Aliaksandr Valialkin
3c254b24b5 wip 2024-06-11 14:44:34 +02:00
Aliaksandr Valialkin
c94c52e864 wip 2024-06-11 14:28:45 +02:00
Aliaksandr Valialkin
24efee7d7a Merge branch 'public-single-node' into victorialogs-wip 2024-06-11 13:36:07 +02:00
Aliaksandr Valialkin
beee1cc615 vendor: update dependencies for Go1.21 2024-06-10 18:59:59 +02:00
Aliaksandr Valialkin
90de5ee4c6 Use Go1.21 instead of Go1.22 in order to rule out the issue https://github.com/golang/go/issues/66383
Updates https://github.com/VictoriaMetrics/VictoriaMetrics/issues/6425
2024-06-10 18:46:05 +02:00
Aliaksandr Valialkin
256a83ce99 wip 2024-06-10 18:39:48 +02:00
Aliaksandr Valialkin
9715fcc1ac Merge branch 'public-single-node' into victorialogs-wip 2024-06-10 18:24:52 +02:00
Aliaksandr Valialkin
e1689e1300 wip 2024-06-08 01:32:25 +02:00
Aliaksandr Valialkin
62fc9479b2 wip 2024-06-08 01:15:58 +02:00
Aliaksandr Valialkin
dc99281295 wip 2024-06-08 00:36:30 +02:00
Aliaksandr Valialkin
bcf3ded60a wip 2024-06-07 23:59:35 +02:00
Aliaksandr Valialkin
483d19349e Merge branch 'public-single-node' into victorialogs-wip 2024-06-07 23:58:56 +02:00
Aliaksandr Valialkin
725dcbe72f wip 2024-06-06 12:24:35 +02:00
Aliaksandr Valialkin
4793cced66 wip 2024-06-06 12:23:04 +02:00
Aliaksandr Valialkin
fda37a3256 Merge branch 'public-single-node' into victorialogs-wip 2024-06-06 12:22:41 +02:00
Aliaksandr Valialkin
dd5d494cdf wip 2024-06-06 12:10:14 +02:00
Aliaksandr Valialkin
91d20b3ea3 Merge branch 'public-single-node' into victorialogs-wip 2024-06-05 10:16:25 +02:00
Aliaksandr Valialkin
0aa6e34766 Merge branch 'public-single-node' into victorialogs-wip 2024-06-05 09:52:43 +02:00
Aliaksandr Valialkin
92b088e7fc Merge branch 'public-single-node' into victorialogs-wip 2024-06-05 03:17:31 +02:00
Aliaksandr Valialkin
4b2e111d2f wip 2024-06-05 03:16:01 +02:00
Aliaksandr Valialkin
827984faa2 wip 2024-06-05 03:10:32 +02:00
Aliaksandr Valialkin
238115a6e7 wip 2024-06-05 02:54:19 +02:00
Aliaksandr Valialkin
ecec1d90b9 wip 2024-06-05 02:48:49 +02:00
Aliaksandr Valialkin
6137ef1bdc wip 2024-06-05 02:12:59 +02:00
Aliaksandr Valialkin
42359ceecf wip 2024-06-05 02:09:56 +02:00
Aliaksandr Valialkin
87174246e5 wip 2024-06-05 01:50:59 +02:00
Aliaksandr Valialkin
c96f4c565d wip 2024-06-05 01:18:26 +02:00
Aliaksandr Valialkin
346375fb0c wip 2024-06-05 01:10:19 +02:00
Aliaksandr Valialkin
4009de2797 wip 2024-06-04 18:14:34 +02:00
Aliaksandr Valialkin
8a14e2daef wip 2024-06-04 18:07:45 +02:00
Aliaksandr Valialkin
1c1e7564fa wip 2024-06-04 16:21:52 +02:00
Aliaksandr Valialkin
dcf4d83ba8 wip 2024-06-04 16:20:02 +02:00
Aliaksandr Valialkin
74fe2f4cdc wip 2024-06-04 15:21:08 +02:00
Aliaksandr Valialkin
0a81bf79ba Merge branch 'public-single-node' into victorialogs-wip 2024-06-04 03:17:49 +02:00
Aliaksandr Valialkin
99e4d376eb Merge branch 'public-single-node' into victorialogs-wip 2024-06-04 02:29:45 +02:00
Aliaksandr Valialkin
a9d06710c1 Merge branch 'public-single-node' into victorialogs-wip 2024-06-04 01:52:19 +02:00
Aliaksandr Valialkin
298f43f147 wip 2024-06-04 00:54:59 +02:00
Aliaksandr Valialkin
be71af08dc wip 2024-06-04 00:54:28 +02:00
Aliaksandr Valialkin
684c7adf9c Merge branch 'public-single-node' into victorialogs-wip 2024-06-04 00:53:01 +02:00
Aliaksandr Valialkin
2c7606eb49 wip 2024-06-04 00:48:18 +02:00
Aliaksandr Valialkin
ebb37263a1 wip 2024-06-03 23:45:59 +02:00
Aliaksandr Valialkin
28cee4e9db wip 2024-06-03 16:58:47 +02:00
Aliaksandr Valialkin
001f8969f8 wip 2024-06-03 14:01:05 +02:00
Aliaksandr Valialkin
5942d38742 wip 2024-06-03 11:56:42 +02:00
Aliaksandr Valialkin
82f186c6bc wip 2024-05-30 19:56:50 +02:00
Aliaksandr Valialkin
68b3bd370e wip 2024-05-30 19:45:10 +02:00
Aliaksandr Valialkin
b21c39a871 wip 2024-05-30 19:27:44 +02:00
Aliaksandr Valialkin
d6ee42e7e6 wip 2024-05-30 18:52:02 +02:00
Aliaksandr Valialkin
f51345714b wip 2024-05-30 16:56:11 +02:00
Aliaksandr Valialkin
963d90ac6e Merge branch 'public-single-node' into victorialogs-wip 2024-05-30 16:36:18 +02:00
Aliaksandr Valialkin
59d750bcf7 Merge branch 'public-single-node' into victorialogs-wip 2024-05-30 16:29:31 +02:00
Aliaksandr Valialkin
2c569f0160 Merge branch 'public-single-node' into victorialogs-wip 2024-05-30 16:18:18 +02:00
Aliaksandr Valialkin
4a3131dd61 wip 2024-05-30 16:13:03 +02:00
Aliaksandr Valialkin
ab15829f6d wip 2024-05-30 16:10:56 +02:00
Aliaksandr Valialkin
97082096e8 wip 2024-05-30 16:10:10 +02:00
Aliaksandr Valialkin
a61b8297f4 wip 2024-05-30 16:07:39 +02:00
Aliaksandr Valialkin
bbb2ba0214 wip 2024-05-30 16:03:00 +02:00
Aliaksandr Valialkin
d2fa0f0c51 wip 2024-05-30 15:19:04 +02:00
Aliaksandr Valialkin
fb9018ddaa wip 2024-05-30 15:16:34 +02:00
Aliaksandr Valialkin
c75c8d7953 wip 2024-05-30 15:09:39 +02:00
Aliaksandr Valialkin
b021020e03 wip 2024-05-30 14:48:36 +02:00
Aliaksandr Valialkin
a53b5570eb wip 2024-05-30 14:37:21 +02:00
Aliaksandr Valialkin
b7c062ac61 wip 2024-05-30 14:26:05 +02:00
Aliaksandr Valialkin
15598986e6 wip 2024-05-30 13:50:12 +02:00
Aliaksandr Valialkin
833e413cc0 wip 2024-05-30 12:51:27 +02:00
Aliaksandr Valialkin
119d26d6aa wip 2024-05-30 12:44:41 +02:00
Aliaksandr Valialkin
c19bf7abb5 wip 2024-05-30 12:37:52 +02:00
Aliaksandr Valialkin
fa20f150a6 wip 2024-05-30 12:29:24 +02:00
Aliaksandr Valialkin
277f13f3fa wip 2024-05-30 11:44:29 +02:00
Aliaksandr Valialkin
1790caa082 wip 2024-05-30 11:33:36 +02:00
Aliaksandr Valialkin
30731f3032 wip 2024-05-29 01:51:52 +02:00
Aliaksandr Valialkin
29ebcb9d4c wip 2024-05-29 01:48:40 +02:00
Aliaksandr Valialkin
7865f52c4a Merge branch 'public-single-node' into victorialogs-wip 2024-05-28 22:49:41 +02:00
Aliaksandr Valialkin
2c26edf79d wip 2024-05-28 22:47:22 +02:00
Aliaksandr Valialkin
dcd1cf9006 wip 2024-05-28 22:47:04 +02:00
Aliaksandr Valialkin
64dd2c313b wip 2024-05-28 22:45:14 +02:00
Aliaksandr Valialkin
52766cd896 wip 2024-05-28 22:42:34 +02:00
Aliaksandr Valialkin
7f8d032f43 wip 2024-05-28 22:41:44 +02:00
Aliaksandr Valialkin
3031a3b3f7 Merge branch 'public-single-node' into victorialogs-wip 2024-05-28 22:18:45 +02:00
Aliaksandr Valialkin
64ce286e79 wip 2024-05-28 19:28:54 +02:00
Aliaksandr Valialkin
044a344864 wip 2024-05-28 19:11:15 +02:00
Aliaksandr Valialkin
ae2b5348c1 wip 2024-05-28 18:43:08 +02:00
Aliaksandr Valialkin
a013cb0ca3 wip 2024-05-28 17:39:42 +02:00
Aliaksandr Valialkin
3fa5ca8a8f wip 2024-05-28 17:20:24 +02:00
Aliaksandr Valialkin
9052c6b734 wip 2024-05-28 17:19:06 +02:00
Aliaksandr Valialkin
e391d7b69c wip 2024-05-28 16:21:05 +02:00
Aliaksandr Valialkin
ba40c1a2d5 wip 2024-05-28 15:58:36 +02:00
Aliaksandr Valialkin
22e14a3dbe wip 2024-05-28 15:53:21 +02:00
Aliaksandr Valialkin
bd70c94a27 wip 2024-05-28 15:50:39 +02:00
Aliaksandr Valialkin
e8e49405ef wip 2024-05-28 14:51:54 +02:00
Aliaksandr Valialkin
e25b2e7f05 wip 2024-05-28 14:21:29 +02:00
Aliaksandr Valialkin
dfcb8dfd65 wip 2024-05-28 02:06:40 +02:00
Aliaksandr Valialkin
dc245f82f3 wip 2024-05-27 23:24:07 +02:00
Aliaksandr Valialkin
9903654e0f wip 2024-05-27 21:29:24 +02:00
Aliaksandr Valialkin
ca4b5686c1 wip 2024-05-27 20:33:19 +02:00
Aliaksandr Valialkin
741fb6b038 wip 2024-05-27 18:50:22 +02:00
Aliaksandr Valialkin
66e294edfb Merge branch 'public-single-node' into victorialogs-wip 2024-05-27 16:50:04 +02:00
Aliaksandr Valialkin
fc6a923c5e wip 2024-05-27 16:48:34 +02:00
Aliaksandr Valialkin
c01bc0282a wip 2024-05-27 16:18:53 +02:00
Aliaksandr Valialkin
401e79e0d8 wip 2024-05-27 14:22:18 +02:00
Aliaksandr Valialkin
9af6c63774 wip 2024-05-27 00:58:41 +02:00
Aliaksandr Valialkin
ad0cc2d55e wip 2024-05-26 01:54:39 +02:00
Aliaksandr Valialkin
1c9b834b1e wip 2024-05-26 00:25:45 +02:00
Aliaksandr Valialkin
7994b5b22a wip 2024-05-26 00:21:57 +02:00
Aliaksandr Valialkin
5be91507fa wip 2024-05-26 00:17:09 +02:00
Aliaksandr Valialkin
1c8d97b95e wip 2024-05-25 22:58:35 +02:00
Aliaksandr Valialkin
8248afc9bd wip 2024-05-25 22:20:47 +02:00
Aliaksandr Valialkin
1395e222d7 wip 2024-05-25 22:14:48 +02:00
Aliaksandr Valialkin
feeff5b8ef Merge branch 'public-single-node' into victorialogs-wip 2024-05-25 21:35:18 +02:00
Aliaksandr Valialkin
6bd0bdc241 wip 2024-05-25 21:28:11 +02:00
Aliaksandr Valialkin
7916bb2789 wip 2024-05-25 20:45:11 +02:00
Aliaksandr Valialkin
3005075a09 wip 2024-05-25 20:15:47 +02:00
Aliaksandr Valialkin
1416b5f813 wip 2024-05-25 20:13:01 +02:00
Aliaksandr Valialkin
41547740f6 wip 2024-05-25 20:05:30 +02:00
Aliaksandr Valialkin
38646a0491 wip 2024-05-25 19:42:11 +02:00
Aliaksandr Valialkin
c95ae93b58 wip 2024-05-25 19:24:21 +02:00
Aliaksandr Valialkin
b83024330f wip 2024-05-25 18:26:07 +02:00
Aliaksandr Valialkin
bbb9887ccf wip 2024-05-25 17:29:24 +02:00
Aliaksandr Valialkin
874c061382 wip 2024-05-25 16:11:03 +02:00
Aliaksandr Valialkin
22c2671205 wip 2024-05-25 16:09:59 +02:00
Aliaksandr Valialkin
46bc1c3435 wip 2024-05-25 15:51:47 +02:00
Aliaksandr Valialkin
33610de341 wip 2024-05-25 14:37:26 +02:00
Aliaksandr Valialkin
9f17e6db1d wip 2024-05-25 12:07:55 +02:00
Aliaksandr Valialkin
e93a71d741 wip 2024-05-25 11:59:47 +02:00
Aliaksandr Valialkin
c2050495c4 wip 2024-05-25 10:51:44 +02:00
Aliaksandr Valialkin
07d244dab0 Merge branch 'public-single-node' into victorialogs-wip 2024-05-25 00:28:20 +02:00
Aliaksandr Valialkin
55571f1cdc wip 2024-05-25 00:28:17 +02:00
Aliaksandr Valialkin
f89e8e5ee5 wip 2024-05-25 00:24:39 +02:00
Aliaksandr Valialkin
7654bd60f8 wip 2024-05-25 00:22:14 +02:00
Aliaksandr Valialkin
f8e034f061 wip 2024-05-24 22:17:21 +02:00
Aliaksandr Valialkin
aa23832921 wip 2024-05-24 19:45:43 +02:00
Aliaksandr Valialkin
b59ed0bc79 wip 2024-05-24 19:20:46 +02:00
Aliaksandr Valialkin
155e8adc34 wip 2024-05-24 19:15:23 +02:00
Aliaksandr Valialkin
80fa2c627e wip 2024-05-24 19:14:54 +02:00
Aliaksandr Valialkin
3d5ce4a25b wip 2024-05-24 19:13:51 +02:00
Aliaksandr Valialkin
a4f5b4a226 wip 2024-05-24 19:12:46 +02:00
Aliaksandr Valialkin
2f49685080 wip 2024-05-24 19:09:25 +02:00
Aliaksandr Valialkin
a15a56def0 wip 2024-05-24 19:04:24 +02:00
Aliaksandr Valialkin
def99558c2 wip 2024-05-24 19:00:37 +02:00
Aliaksandr Valialkin
bb11b38c0c wip 2024-05-24 18:57:27 +02:00
Aliaksandr Valialkin
37ff352ed5 wip 2024-05-24 18:54:58 +02:00
Aliaksandr Valialkin
a3032067bd wip 2024-05-24 18:31:49 +02:00
Aliaksandr Valialkin
761a110392 Merge branch 'public-single-node' into victorialogs-wip 2024-05-24 03:17:01 +02:00
Aliaksandr Valialkin
9a40c4e0e9 Merge branch 'public-single-node' into victorialogs-wip 2024-05-24 03:06:08 +02:00
Aliaksandr Valialkin
869b2fabc4 wip 2024-05-24 03:03:12 +02:00
Aliaksandr Valialkin
43bd975bf1 wip 2024-05-23 23:01:02 +02:00
Aliaksandr Valialkin
03b9d7977d wip 2024-05-23 22:54:21 +02:00
Aliaksandr Valialkin
892afe25d1 wip 2024-05-23 22:21:00 +02:00
Aliaksandr Valialkin
63ffa557ba wip 2024-05-23 22:06:33 +02:00
Aliaksandr Valialkin
59d52cec67 wip 2024-05-23 21:47:21 +02:00
Aliaksandr Valialkin
b0afef1e2b wip 2024-05-23 21:24:08 +02:00
Aliaksandr Valialkin
32e96050f9 wip 2024-05-23 17:41:35 +02:00
Aliaksandr Valialkin
91b006f0a7 wip 2024-05-23 17:32:42 +02:00
Aliaksandr Valialkin
ceae8a7e08 wip 2024-05-23 14:11:16 +02:00
Aliaksandr Valialkin
a686c7dd74 wip 2024-05-23 13:58:30 +02:00
Aliaksandr Valialkin
e3cbf97bdd wip 2024-05-23 12:24:09 +02:00
Aliaksandr Valialkin
a4337149a2 wip 2024-05-23 12:01:15 +02:00
Aliaksandr Valialkin
b004916367 Merge branch 'public-single-node' into victorialogs-wip 2024-05-23 11:26:27 +02:00
Aliaksandr Valialkin
f6a35ceaeb wip 2024-05-22 23:21:59 +02:00
Aliaksandr Valialkin
09f0049754 docs/VictoriaLogs/LogsQL.md: typo fixex 2024-05-22 23:09:40 +02:00
Aliaksandr Valialkin
984438b084 Merge branch 'public-single-node' into victorialogs-wip 2024-05-22 23:08:21 +02:00
Aliaksandr Valialkin
b25ad7feab Merge branch 'public-single-node' into victorialogs-wip 2024-05-22 20:55:30 +02:00
Aliaksandr Valialkin
c09d4e17ff wip 2024-05-22 20:53:31 +02:00
Aliaksandr Valialkin
ff260230ea wip 2024-05-22 19:32:17 +02:00
Aliaksandr Valialkin
b60cbd5c54 wip 2024-05-22 19:14:24 +02:00
Aliaksandr Valialkin
1e2f5e7294 wip 2024-05-22 18:39:53 +02:00
Aliaksandr Valialkin
dbbab6c78e wip 2024-05-22 18:34:08 +02:00
Aliaksandr Valialkin
8bb2ffa9b9 wip 2024-05-22 18:14:59 +02:00
Aliaksandr Valialkin
2ff9cf9f43 wip 2024-05-22 17:41:45 +02:00
Aliaksandr Valialkin
79787ce25a wip 2024-05-22 17:17:59 +02:00
Aliaksandr Valialkin
93a645dcfc wip 2024-05-22 15:29:18 +02:00
Aliaksandr Valialkin
6458b5c138 wip 2024-05-22 14:05:32 +02:00
Aliaksandr Valialkin
fb251af08a wip 2024-05-22 13:04:16 +02:00
Aliaksandr Valialkin
ddc3914fa7 wip 2024-05-22 11:38:10 +02:00
Aliaksandr Valialkin
df6110bf06 wip 2024-05-22 11:25:49 +02:00
Aliaksandr Valialkin
1eddb95c12 wip 2024-05-22 02:09:57 +02:00
Aliaksandr Valialkin
a4d5ef8382 wip 2024-05-22 02:03:31 +02:00
Aliaksandr Valialkin
46bfdf6796 wip 2024-05-21 23:56:03 +02:00
Aliaksandr Valialkin
c4b68956fe wip 2024-05-21 23:33:18 +02:00
Aliaksandr Valialkin
02f30898e1 wip 2024-05-21 22:47:57 +02:00
Aliaksandr Valialkin
ed46683fee wip 2024-05-21 21:18:05 +02:00
Aliaksandr Valialkin
5d3ecc0537 wip 2024-05-21 20:15:18 +02:00
Aliaksandr Valialkin
c21cc91552 wip 2024-05-21 18:56:35 +02:00
Aliaksandr Valialkin
1705ec8611 wip 2024-05-21 16:10:49 +02:00
Aliaksandr Valialkin
d551520e6f wip 2024-05-21 15:58:41 +02:00
Aliaksandr Valialkin
32c0fd3437 wip 2024-05-21 15:47:11 +02:00
Aliaksandr Valialkin
34b9434682 wip 2024-05-21 15:45:49 +02:00
Aliaksandr Valialkin
0a8365753b wip 2024-05-21 15:37:44 +02:00
Aliaksandr Valialkin
9471638fcb wip 2024-05-21 15:22:18 +02:00
Aliaksandr Valialkin
1f79f655db wip 2024-05-21 15:15:16 +02:00
Aliaksandr Valialkin
54b42b64a9 wip 2024-05-21 14:53:03 +02:00
Aliaksandr Valialkin
5cb0390dcd wip 2024-05-21 14:45:24 +02:00
Aliaksandr Valialkin
d272c4822b wip 2024-05-21 14:33:45 +02:00
Aliaksandr Valialkin
1a8fbdbb06 wip 2024-05-21 14:19:09 +02:00
Aliaksandr Valialkin
3888356bf6 wip 2024-05-21 13:53:55 +02:00
Aliaksandr Valialkin
13c37991d7 wip 2024-05-21 13:27:34 +02:00
Aliaksandr Valialkin
d3878885fe wip 2024-05-21 12:59:19 +02:00
Aliaksandr Valialkin
0009bd6271 wip 2024-05-21 12:56:28 +02:00
Aliaksandr Valialkin
f318b90862 wip 2024-05-21 12:55:11 +02:00
Aliaksandr Valialkin
9da23d8854 wip 2024-05-21 11:04:00 +02:00
Aliaksandr Valialkin
a42a87319d wip 2024-05-21 10:53:32 +02:00
Aliaksandr Valialkin
b593065865 wip 2024-05-21 10:39:02 +02:00
Aliaksandr Valialkin
d75b0df747 wip 2024-05-21 00:06:58 +02:00
Aliaksandr Valialkin
5e61b40fef wip 2024-05-20 23:50:03 +02:00
Aliaksandr Valialkin
9e336e383d wip 2024-05-20 23:46:08 +02:00
Aliaksandr Valialkin
952ffe9dd8 wip 2024-05-20 23:45:13 +02:00
Aliaksandr Valialkin
33d1b02560 wip 2024-05-20 23:29:17 +02:00
Aliaksandr Valialkin
9927517f7c wip 2024-05-20 23:28:11 +02:00
Aliaksandr Valialkin
15c6bf4498 wip 2024-05-20 23:27:21 +02:00
Aliaksandr Valialkin
c5734e18b9 wip 2024-05-20 23:23:22 +02:00
Aliaksandr Valialkin
eac0722068 wip 2024-05-20 22:21:05 +02:00
Aliaksandr Valialkin
13b55a338b wip 2024-05-20 22:09:54 +02:00
Aliaksandr Valialkin
25d8f2d180 wip 2024-05-20 22:06:03 +02:00
Aliaksandr Valialkin
eeadefbca0 wip 2024-05-20 22:02:09 +02:00
Aliaksandr Valialkin
c5c96d8016 wip 2024-05-20 21:47:30 +02:00
Aliaksandr Valialkin
fbf1485f14 wip 2024-05-20 21:41:37 +02:00
Aliaksandr Valialkin
ae4f92f4cd wip 2024-05-20 21:34:24 +02:00
Aliaksandr Valialkin
01f63b9e94 wip 2024-05-20 16:51:18 +02:00
Aliaksandr Valialkin
f4ac7c50b6 wip 2024-05-20 16:49:51 +02:00
Aliaksandr Valialkin
ae0a11d7c1 wip 2024-05-20 16:41:08 +02:00
Aliaksandr Valialkin
a8dde0aeac wip 2024-05-20 16:09:07 +02:00
Aliaksandr Valialkin
fba053b34d wip 2024-05-20 14:09:39 +02:00
Aliaksandr Valialkin
ef2df6889e wip 2024-05-20 12:43:46 +02:00
Aliaksandr Valialkin
00294e5d0d wip 2024-05-20 12:36:20 +02:00
Aliaksandr Valialkin
353b0661a7 Merge branch 'public-single-node' into victorialogs-wip 2024-05-20 12:32:53 +02:00
Aliaksandr Valialkin
073812678b wip 2024-05-20 04:48:05 +02:00
Aliaksandr Valialkin
ca79687500 wip 2024-05-20 04:46:34 +02:00
Aliaksandr Valialkin
ba927f519d wip 2024-05-20 04:43:32 +02:00
Aliaksandr Valialkin
9d29df12d0 wip 2024-05-20 04:33:43 +02:00
Aliaksandr Valialkin
6af68cee87 wip 2024-05-20 04:32:19 +02:00
Aliaksandr Valialkin
04a2d001d4 Merge branch 'public-single-node' into victorialogs-wip 2024-05-20 04:28:47 +02:00
Aliaksandr Valialkin
1302fb11e5 wip 2024-05-20 04:07:23 +02:00
Aliaksandr Valialkin
d69ed753a7 Merge branch 'public-single-node' into victorialogs-wip 2024-05-20 04:05:25 +02:00
Aliaksandr Valialkin
2c592a68e8 wip 2024-05-20 04:03:04 +02:00
Aliaksandr Valialkin
a50045efde wip 2024-05-20 03:52:16 +02:00
Aliaksandr Valialkin
e4928ee1ff wip 2024-05-20 02:50:19 +02:00
Aliaksandr Valialkin
2b59220864 wip 2024-05-20 02:41:03 +02:00
Aliaksandr Valialkin
aafd3c28b5 wip 2024-05-20 01:48:55 +02:00
Aliaksandr Valialkin
411ba6f0e8 wip 2024-05-20 01:45:29 +02:00
Aliaksandr Valialkin
dcc68e4e08 wip 2024-05-20 00:23:03 +02:00
Aliaksandr Valialkin
3ed168ec8d wip 2024-05-20 00:13:03 +02:00
Aliaksandr Valialkin
b8b6d0eca8 wip 2024-05-20 00:05:07 +02:00
Aliaksandr Valialkin
998b4a0eef wip 2024-05-19 23:58:38 +02:00
Aliaksandr Valialkin
b644169fc4 wip 2024-05-19 23:51:15 +02:00
Aliaksandr Valialkin
9c5dc62aff wip 2024-05-19 23:27:52 +02:00
Aliaksandr Valialkin
d5b2af1ae0 wip 2024-05-19 21:28:11 +02:00
Aliaksandr Valialkin
030d3823b9 wip 2024-05-19 21:27:53 +02:00
Aliaksandr Valialkin
3d674afd45 wip 2024-05-19 21:25:52 +02:00
Aliaksandr Valialkin
0c77cb1f88 wip 2024-05-19 19:16:28 +02:00
Aliaksandr Valialkin
5ee582f07f wip 2024-05-19 18:54:23 +02:00
Aliaksandr Valialkin
5fac0d5238 wip 2024-05-19 15:44:52 +02:00
Aliaksandr Valialkin
fde91c8f97 wip 2024-05-19 15:11:17 +02:00
Aliaksandr Valialkin
38b9213a0c wip 2024-05-19 14:22:09 +02:00
Aliaksandr Valialkin
30a6aee52a wip 2024-05-19 13:58:06 +02:00
Aliaksandr Valialkin
4e5b24c53a wip 2024-05-19 13:47:30 +02:00
Aliaksandr Valialkin
5175d99d49 wip 2024-05-19 13:23:27 +02:00
Aliaksandr Valialkin
5e20724e1a wip 2024-05-19 12:56:08 +02:00
Aliaksandr Valialkin
b605f1eaa4 wip 2024-05-19 04:24:32 +02:00
Aliaksandr Valialkin
58e6cdba8b wip 2024-05-19 01:32:09 +02:00
Aliaksandr Valialkin
d87635cca4 wip 2024-05-18 23:58:01 +02:00
Aliaksandr Valialkin
bf2a031382 wip 2024-05-18 23:33:35 +02:00
Aliaksandr Valialkin
ce34e93874 wip 2024-05-18 23:07:51 +02:00
Aliaksandr Valialkin
b038dee7b1 wip 2024-05-18 22:35:09 +02:00
Aliaksandr Valialkin
846d5358cf wip 2024-05-18 22:25:46 +02:00
Aliaksandr Valialkin
94d4f34cbf wip 2024-05-18 22:09:52 +02:00
Aliaksandr Valialkin
13534e7bf6 wip 2024-05-18 21:40:02 +02:00
Aliaksandr Valialkin
4cfb2fe60c wip 2024-05-18 20:03:49 +02:00
Aliaksandr Valialkin
bae5ff23f5 wip 2024-05-18 19:59:13 +02:00
Aliaksandr Valialkin
7ee0a851a9 wip 2024-05-18 19:40:23 +02:00
Aliaksandr Valialkin
c4da926c9c wip 2024-05-18 17:52:53 +02:00
Aliaksandr Valialkin
22f35a7340 wip 2024-05-18 12:33:34 +02:00
Aliaksandr Valialkin
31a66e5e9a wip 2024-05-17 17:53:47 +02:00
Aliaksandr Valialkin
5af93fbbf2 wip 2024-05-17 17:20:28 +02:00
Aliaksandr Valialkin
d95b491809 wip 2024-05-17 17:15:18 +02:00
Aliaksandr Valialkin
01fc253eb7 wip 2024-05-17 16:14:22 +02:00
Aliaksandr Valialkin
0d51cad96f wip 2024-05-17 16:08:44 +02:00
Aliaksandr Valialkin
c5ced867dc wip 2024-05-17 15:32:00 +02:00
Aliaksandr Valialkin
306d6e4f6d wip 2024-05-17 14:44:47 +02:00
Aliaksandr Valialkin
d08dfd8752 wip 2024-05-17 14:25:54 +02:00
Aliaksandr Valialkin
db75ec4dac wip 2024-05-17 13:29:38 +02:00
Aliaksandr Valialkin
0b4c103edb wip 2024-05-17 13:04:51 +02:00
Aliaksandr Valialkin
3da4b970d7 wip 2024-05-17 11:41:29 +02:00
Aliaksandr Valialkin
c38d3dab4d wip 2024-05-17 11:32:27 +02:00
Aliaksandr Valialkin
bddc715c0c wip 2024-05-17 11:23:59 +02:00
Aliaksandr Valialkin
160034bda3 wip 2024-05-17 11:04:50 +02:00
Aliaksandr Valialkin
900d74a560 wip 2024-05-17 04:32:47 +02:00
Aliaksandr Valialkin
53a378faab wip 2024-05-17 04:11:10 +02:00
Aliaksandr Valialkin
7e4769abad wip 2024-05-16 00:49:11 +02:00
Aliaksandr Valialkin
e4d89f3584 wip 2024-05-16 00:41:13 +02:00
Aliaksandr Valialkin
65dd152387 wip 2024-05-16 00:35:49 +02:00
Aliaksandr Valialkin
2368a3afce wip 2024-05-16 00:21:01 +02:00
Aliaksandr Valialkin
17026756a5 wip 2024-05-16 00:11:49 +02:00
Aliaksandr Valialkin
0d71dc22ca wip 2024-05-15 23:11:48 +02:00
Aliaksandr Valialkin
d50273d6c0 wip 2024-05-15 22:31:21 +02:00
Aliaksandr Valialkin
3010034c7a wip 2024-05-15 22:22:24 +02:00
Aliaksandr Valialkin
164705cf20 wip 2024-05-15 22:19:21 +02:00
Aliaksandr Valialkin
7ffcdabcbe wip 2024-05-15 16:53:40 +02:00
Aliaksandr Valialkin
6026112913 wip 2024-05-15 16:50:26 +02:00
Aliaksandr Valialkin
15c66abbe0 wip 2024-05-15 16:40:32 +02:00
Aliaksandr Valialkin
bc72ac0519 wip 2024-05-15 16:21:00 +02:00
Aliaksandr Valialkin
454f781cd1 wip 2024-05-15 16:04:10 +02:00
Aliaksandr Valialkin
639b3091b5 wip 2024-05-15 15:46:42 +02:00
Aliaksandr Valialkin
6f798c628f wip 2024-05-15 13:23:51 +02:00
Aliaksandr Valialkin
d3e464a68b wip 2024-05-15 13:07:15 +02:00
Aliaksandr Valialkin
21f09ab823 wip 2024-05-15 12:15:16 +02:00
Aliaksandr Valialkin
87de9936f9 Merge branch 'public-single-node' into victorialogs-wip 2024-05-15 12:10:08 +02:00
Aliaksandr Valialkin
20918a2810 wip 2024-05-15 04:42:03 +02:00
Aliaksandr Valialkin
a080c9e4e5 wip 2024-05-15 04:03:05 +02:00
Aliaksandr Valialkin
12fe2b265c wip 2024-05-15 03:55:46 +02:00
Aliaksandr Valialkin
ff2b6fbe35 wip 2024-05-15 03:23:33 +02:00
Aliaksandr Valialkin
fcce0fc6e1 wip 2024-05-15 03:02:05 +02:00
Aliaksandr Valialkin
edd493431e wip 2024-05-15 02:52:23 +02:00
Aliaksandr Valialkin
33a01c659b wip 2024-05-15 02:45:43 +02:00
Aliaksandr Valialkin
42c49c37ff wip 2024-05-14 22:34:45 +02:00
Aliaksandr Valialkin
87183112f3 wip 2024-05-14 22:31:21 +02:00
Aliaksandr Valialkin
f26d593c7b wip 2024-05-14 22:11:51 +02:00
Aliaksandr Valialkin
447a7f0bdf wip 2024-05-14 19:35:08 +02:00
Aliaksandr Valialkin
388b608a6e Merge branch 'public-single-node' into victorialogs-wip 2024-05-14 19:05:18 +02:00
Aliaksandr Valialkin
2314cdc38d wip 2024-05-14 03:04:11 +02:00
Aliaksandr Valialkin
1834c68250 lib/logstorage/pipe_sort.go: wip 2024-05-14 02:03:59 +02:00
Aliaksandr Valialkin
5c4679ba01 Merge branch 'public-single-node' into victorialogs-wip 2024-05-14 01:41:28 +02:00
Aliaksandr Valialkin
f51915f31c Merge branch 'public-single-node' into victorialogs-wip 2024-05-14 00:56:25 +02:00
Aliaksandr Valialkin
b03c672227 wip 2024-05-14 00:50:32 +02:00
Aliaksandr Valialkin
dafd45d4c6 wip 2024-05-14 00:05:48 +02:00
Aliaksandr Valialkin
e6570f22d0 wip 2024-05-13 23:56:49 +02:00
Aliaksandr Valialkin
435506b223 wip 2024-05-13 23:44:44 +02:00
Aliaksandr Valialkin
812dfd9465 wip 2024-05-13 23:25:29 +02:00
Aliaksandr Valialkin
f0c48e35d3 wip 2024-05-13 22:56:22 +02:00
Aliaksandr Valialkin
aa21c9492e wip 2024-05-13 22:30:03 +02:00
Aliaksandr Valialkin
69a6543609 wip 2024-05-13 22:12:18 +02:00
Aliaksandr Valialkin
52f08d7a19 wip 2024-05-13 16:52:54 +02:00
Aliaksandr Valialkin
900e558678 wip 2024-05-13 16:45:34 +02:00
Aliaksandr Valialkin
9673da2578 Merge branch 'public-single-node' into victorialogs-wip 2024-05-13 16:37:03 +02:00
Aliaksandr Valialkin
75509644bd wip 2024-05-13 16:07:36 +02:00
Aliaksandr Valialkin
09e81cb5aa wip 2024-05-13 15:59:25 +02:00
Aliaksandr Valialkin
ecd51e48ec wip 2024-05-13 14:00:33 +02:00
Aliaksandr Valialkin
51eb3134c0 Merge branch 'public-single-node' into victorialogs-wip 2024-05-13 12:17:14 +02:00
Aliaksandr Valialkin
8c394eb841 Merge branch 'public-single-node' into victorialogs-wip 2024-05-12 16:37:04 +02:00
Aliaksandr Valialkin
fe6fac7ed3 Merge branch 'public-single-node' into victorialogs-wip 2024-05-12 16:28:34 +02:00
Aliaksandr Valialkin
61178767ae wip 2024-05-12 12:37:18 +02:00
Aliaksandr Valialkin
bb80e938af Merge branch 'public-single-node' into victorialogs-wip 2024-05-12 12:36:01 +02:00
Aliaksandr Valialkin
f4a2fdd25a wip 2024-05-12 12:33:23 +02:00
Aliaksandr Valialkin
14a7a3e8e4 Merge branch 'public-single-node' into victorialogs-wip 2024-05-12 11:42:53 +02:00
Aliaksandr Valialkin
57c3abc53c Merge branch 'public-single-node' into victorialogs-wip 2024-05-12 09:49:56 +02:00
Aliaksandr Valialkin
d77b345c46 Merge branch 'public-single-node' into victorialogs-wip 2024-05-12 09:44:13 +02:00
Aliaksandr Valialkin
0f0159074b docs/Single-server-VictoriaMetrics.md and docs/README.md: sync with README.md with make docs-sync after the commit c6c5a5a186 2024-05-12 09:39:46 +02:00
Aliaksandr Valialkin
f6ec23abcd Merge branch 'public-single-node' into victorialogs-wip 2024-05-12 09:37:23 +02:00
Aliaksandr Valialkin
3558b751ad wip 2024-05-12 09:22:19 +02:00
Aliaksandr Valialkin
bdf1983bdc wip 2024-05-11 08:27:03 +02:00
Aliaksandr Valialkin
1d209f9168 wip 2024-05-11 08:07:49 +02:00
Aliaksandr Valialkin
a55e01e406 wip 2024-05-11 08:06:33 +02:00
Aliaksandr Valialkin
8f6b1262df wip 2024-05-11 08:01:31 +02:00
Aliaksandr Valialkin
ede41d2039 wip 2024-05-11 05:53:11 +02:00
Aliaksandr Valialkin
ee30c1f81b wip 2024-05-11 05:28:36 +02:00
Aliaksandr Valialkin
d8026dad3c wip 2024-05-11 04:52:36 +02:00
Aliaksandr Valialkin
0c6ce34295 wip 2024-05-11 04:52:21 +02:00
Aliaksandr Valialkin
e954330e54 wip 2024-05-11 04:43:42 +02:00
Aliaksandr Valialkin
5556dda356 wip 2024-05-11 03:13:34 +02:00
Aliaksandr Valialkin
8b4d4e00bc wip 2024-05-11 02:42:11 +02:00
Aliaksandr Valialkin
d098d5d1ea wip 2024-05-11 02:13:05 +02:00
Aliaksandr Valialkin
93c0cffda6 wip 2024-05-11 02:04:55 +02:00
Aliaksandr Valialkin
ac846f057a wip 2024-05-11 01:58:49 +02:00
Aliaksandr Valialkin
3d8060e302 wip 2024-05-11 01:40:22 +02:00
Aliaksandr Valialkin
1e7090cc8e wip 2024-05-11 01:34:41 +02:00
Aliaksandr Valialkin
3bc01a1ad6 wip 2024-05-11 01:10:07 +02:00
Aliaksandr Valialkin
fb2a280077 wip 2024-05-11 00:58:36 +02:00
Aliaksandr Valialkin
4c457cf20f wip 2024-05-11 00:39:12 +02:00
Aliaksandr Valialkin
790f4db6f0 wip 2024-05-10 23:30:18 +02:00
Aliaksandr Valialkin
4ed5ea65c1 wip 2024-05-10 16:41:57 +02:00
Aliaksandr Valialkin
a4b2806330 wip 2024-05-10 16:18:41 +02:00
Aliaksandr Valialkin
b4fd20f17a wip 2024-05-10 16:14:42 +02:00
Aliaksandr Valialkin
54cc81602e wip 2024-05-10 15:51:39 +02:00
Aliaksandr Valialkin
0dd32f5144 wip 2024-05-10 15:32:51 +02:00
Aliaksandr Valialkin
86942cb46c wip 2024-05-10 15:12:19 +02:00
Aliaksandr Valialkin
9767a52ed0 wip 2024-05-10 14:52:24 +02:00
Aliaksandr Valialkin
68dfaa1449 wip 2024-05-10 04:57:40 +02:00
Aliaksandr Valialkin
57afedbfe8 wip 2024-05-10 04:52:38 +02:00
Aliaksandr Valialkin
edede71be8 wip 2024-05-09 21:36:26 +02:00
Aliaksandr Valialkin
b2ff38c41e wip 2024-05-09 21:24:43 +02:00
Aliaksandr Valialkin
713172308e wip 2024-05-09 21:10:40 +02:00
Aliaksandr Valialkin
6da2f28d36 wip 2024-05-09 20:25:20 +02:00
Aliaksandr Valialkin
28db8795ee wip 2024-05-09 20:19:01 +02:00
Aliaksandr Valialkin
7c1955d7c3 wip 2024-05-09 20:15:35 +02:00
Aliaksandr Valialkin
dcda92dd89 wip 2024-05-09 17:19:03 +02:00
Aliaksandr Valialkin
15587dc63e wip 2024-05-09 17:10:24 +02:00
Aliaksandr Valialkin
7b72c6df5b wip 2024-05-09 15:18:27 +02:00
Aliaksandr Valialkin
9e4abde51d wip 2024-05-09 14:52:07 +02:00
Aliaksandr Valialkin
790a9491b2 wip 2024-05-09 14:02:53 +02:00
Aliaksandr Valialkin
5a883be63f wip 2024-05-09 13:58:06 +02:00
Aliaksandr Valialkin
0519b1a714 wip 2024-05-09 02:57:31 +02:00
Aliaksandr Valialkin
48ed6abe75 wip 2024-05-09 02:52:28 +02:00
Aliaksandr Valialkin
dbc809dbc2 wip 2024-05-07 23:47:30 +02:00
Aliaksandr Valialkin
b91501cfa8 wip 2024-05-07 23:44:12 +02:00
Aliaksandr Valialkin
9c4423c1db wip 2024-05-07 23:38:09 +02:00
Aliaksandr Valialkin
6b63f65baf wip 2024-05-07 23:35:31 +02:00
Aliaksandr Valialkin
4e9790bc6a fix 2024-05-07 21:40:58 +02:00
Aliaksandr Valialkin
1225ed591b wip 2024-05-07 17:05:20 +02:00
Aliaksandr Valialkin
b1df5ce183 wip 2024-05-07 16:47:47 +02:00
Aliaksandr Valialkin
f0d8284c8a wip 2024-05-07 13:45:23 +02:00
Aliaksandr Valialkin
866c070f32 wip 2024-05-06 23:46:00 +02:00
Aliaksandr Valialkin
9f33220e51 wip 2024-05-06 23:09:39 +02:00
Aliaksandr Valialkin
adcdb92b1e wip 2024-05-06 23:03:42 +02:00
Aliaksandr Valialkin
ba20bb08d3 wip 2024-05-06 22:27:10 +02:00
Aliaksandr Valialkin
a19611336c wip 2024-05-06 19:58:08 +02:00
Aliaksandr Valialkin
e54966456c wip 2024-05-06 19:14:36 +02:00
Aliaksandr Valialkin
97786db05e wip 2024-05-06 19:02:47 +02:00
Aliaksandr Valialkin
39e0412bfc initial implementation for sort 2024-05-06 18:35:16 +02:00
Aliaksandr Valialkin
313aeebf78 wip 2024-05-06 01:45:36 +02:00
Aliaksandr Valialkin
7c99540c1d wip 2024-05-06 01:39:38 +02:00
Aliaksandr Valialkin
72a4dd876d wip 2024-05-06 01:32:32 +02:00
Aliaksandr Valialkin
812950013b wip 2024-05-06 01:27:05 +02:00
Aliaksandr Valialkin
67f0b887fa wip 2024-05-05 12:48:54 +02:00
Aliaksandr Valialkin
c856b528a8 wip 2024-05-05 12:43:38 +02:00
Aliaksandr Valialkin
f2214f5073 wip 2024-05-05 03:48:29 +02:00
Aliaksandr Valialkin
c716c1f074 wip 2024-05-05 03:11:34 +02:00
Aliaksandr Valialkin
90390cdc02 wip 2024-05-05 03:06:01 +02:00
Aliaksandr Valialkin
bc7dfd5ba4 wip 2024-05-05 00:28:01 +02:00
Aliaksandr Valialkin
f8dcf7be1d wip 2024-05-03 21:41:30 +02:00
Aliaksandr Valialkin
a4abd688ee wip 2024-05-03 14:44:05 +02:00
Aliaksandr Valialkin
4ce2e32d4c wip 2024-05-03 14:03:17 +02:00
Aliaksandr Valialkin
85a60e0743 wip 2024-05-03 13:44:57 +02:00
Aliaksandr Valialkin
63d9a02d46 wip 2024-05-03 13:27:15 +02:00
Aliaksandr Valialkin
ef504e8d9a wip 2024-05-03 12:54:37 +02:00
Aliaksandr Valialkin
7fd9d31e90 wip 2024-05-03 12:10:45 +02:00
Aliaksandr Valialkin
77e2d0be60 wip 2024-05-03 11:15:09 +02:00
Aliaksandr Valialkin
caf1304ee4 wip 2024-05-02 12:07:29 +02:00
Aliaksandr Valialkin
5c8321c987 wip 2024-05-01 10:44:07 +02:00
Aliaksandr Valialkin
d7def4aa2d wip 2024-05-01 10:42:39 +02:00
Aliaksandr Valialkin
efe5ec623c wip 2024-05-01 10:40:04 +02:00
Aliaksandr Valialkin
5efe4eeadd wip 2024-05-01 10:31:46 +02:00
Aliaksandr Valialkin
619dff6861 wip 2024-05-01 02:08:37 +02:00
Aliaksandr Valialkin
d62bac5609 wip 2024-05-01 01:58:35 +02:00
Aliaksandr Valialkin
dc6ec4bdbb wip 2024-05-01 01:26:32 +02:00
Aliaksandr Valialkin
8f8399942b wip 2024-05-01 01:20:45 +02:00
Aliaksandr Valialkin
2005e5f93b wip 2024-05-01 01:19:22 +02:00
Aliaksandr Valialkin
a38345c6b4 wip 2024-04-30 23:21:06 +02:00
Aliaksandr Valialkin
45639b1400 wip 2024-04-30 23:17:24 +02:00
Aliaksandr Valialkin
56c115c455 wip 2024-04-30 23:03:34 +02:00
Aliaksandr Valialkin
f7dad8bd61 wip 2024-04-29 08:05:53 +02:00
Aliaksandr Valialkin
0d0804a202 wip 2024-04-29 07:54:05 +02:00
Aliaksandr Valialkin
84631d8c04 wip 2024-04-29 07:51:39 +02:00
Aliaksandr Valialkin
a2878feb1e wip 2024-04-29 07:45:44 +02:00
Aliaksandr Valialkin
a62b0ab12b wip 2024-04-29 07:44:23 +02:00
Aliaksandr Valialkin
65dfdda14b wip 2024-04-29 07:42:40 +02:00
Aliaksandr Valialkin
e876b99b59 wip 2024-04-29 07:36:23 +02:00
Aliaksandr Valialkin
4e1f20338f wip 2024-04-29 07:30:34 +02:00
Aliaksandr Valialkin
292d7fcfc6 wip 2024-04-29 07:27:45 +02:00
Aliaksandr Valialkin
bb89151ae8 wip 2024-04-29 07:21:09 +02:00
Aliaksandr Valialkin
7591f72919 wip 2024-04-29 07:15:54 +02:00
Aliaksandr Valialkin
9b5dd883b4 wip 2024-04-29 07:06:26 +02:00
Aliaksandr Valialkin
b370a785e9 wip 2024-04-29 06:49:06 +02:00
Aliaksandr Valialkin
4308f7060d wip 2024-04-29 06:44:49 +02:00
Aliaksandr Valialkin
f49352ece4 wip 2024-04-29 06:42:18 +02:00
Aliaksandr Valialkin
ecef86c641 wip 2024-04-29 06:37:22 +02:00
Aliaksandr Valialkin
203bb5f651 wip 2024-04-29 06:35:06 +02:00
Aliaksandr Valialkin
75838f0a87 wip 2024-04-29 06:27:35 +02:00
Aliaksandr Valialkin
8d0eb0c43c wip 2024-04-29 06:17:14 +02:00
Aliaksandr Valialkin
22615889a7 wip 2024-04-29 06:14:56 +02:00
Aliaksandr Valialkin
2a1cede9f7 wip 2024-04-29 06:01:06 +02:00
Aliaksandr Valialkin
a968561182 wip 2024-04-29 05:51:43 +02:00
Aliaksandr Valialkin
1528b379cf wip 2024-04-29 05:42:32 +02:00
Aliaksandr Valialkin
37329d0604 wip 2024-04-29 05:22:12 +02:00
Aliaksandr Valialkin
68ec1cb1dd wip 2024-04-29 05:04:20 +02:00
Aliaksandr Valialkin
b6a1576e0d wip 2024-04-29 04:37:57 +02:00
Aliaksandr Valialkin
7ae71cab2e wip 2024-04-29 04:21:40 +02:00
Aliaksandr Valialkin
89235a3489 wip 2024-04-29 04:20:42 +02:00
Aliaksandr Valialkin
93c5f2f9bc wip 2024-04-29 04:15:14 +02:00
Aliaksandr Valialkin
70baaace98 wip 2024-04-29 04:07:51 +02:00
Aliaksandr Valialkin
78938aaaae wip 2024-04-29 03:57:27 +02:00
Aliaksandr Valialkin
944f4ab01c wip 2024-04-29 03:56:27 +02:00
Aliaksandr Valialkin
0418bd0fa9 wip 2024-04-29 03:51:09 +02:00
Aliaksandr Valialkin
4a819f65f2 wip 2024-04-29 03:49:40 +02:00
Aliaksandr Valialkin
b6a9b4b04c wip 2024-04-29 03:49:09 +02:00
Aliaksandr Valialkin
801a4d79d6 wip 2024-04-29 03:47:25 +02:00
Aliaksandr Valialkin
cc1a3e09b9 wip 2024-04-29 03:44:54 +02:00
Aliaksandr Valialkin
7c4c8d45d6 wip 2024-04-29 03:32:49 +02:00
Aliaksandr Valialkin
16352baba9 wip 2024-04-29 03:32:13 +02:00
Aliaksandr Valialkin
fa8c611361 wip 2024-04-29 03:30:25 +02:00
Aliaksandr Valialkin
5d791d617b wip 2024-04-29 03:27:46 +02:00
Aliaksandr Valialkin
dd55ed98a8 wip 2024-04-29 03:23:41 +02:00
Aliaksandr Valialkin
6339cae5de wip 2024-04-29 03:22:27 +02:00
Aliaksandr Valialkin
d9fdbf907c wip 2024-04-29 03:20:43 +02:00
Aliaksandr Valialkin
449eade980 wip 2024-04-29 03:08:35 +02:00
Aliaksandr Valialkin
cb42a1a6fc wip 2024-04-29 02:18:48 +02:00
Aliaksandr Valialkin
ccb4031e62 wip 2024-04-29 02:04:42 +02:00
Aliaksandr Valialkin
fcbad5ac1b wip 2024-04-29 01:32:11 +02:00
Aliaksandr Valialkin
53c3384bf7 wip 2024-04-29 00:54:32 +02:00
Aliaksandr Valialkin
1b67995907 wip 2024-04-29 00:35:16 +02:00
Aliaksandr Valialkin
20fd87f86f wip 2024-04-29 00:05:31 +02:00
Aliaksandr Valialkin
24f07dfdc3 wip 2024-04-28 23:19:40 +02:00
Aliaksandr Valialkin
0850e13eb3 wip 2024-04-28 22:52:15 +02:00
Aliaksandr Valialkin
a941bdcdbd wip 2024-04-28 22:42:50 +02:00
Aliaksandr Valialkin
59b7bef051 wip 2024-04-28 22:15:27 +02:00
Aliaksandr Valialkin
d724da794f wip 2024-04-28 22:03:27 +02:00
Aliaksandr Valialkin
6d3b506dcf wip 2024-04-28 16:48:33 +02:00
Aliaksandr Valialkin
0f31264e83 wip 2024-04-28 16:21:08 +02:00
Aliaksandr Valialkin
3008c58ac8 wip 2024-04-28 12:52:55 +02:00
Aliaksandr Valialkin
75914210ec wip 2024-04-27 22:08:03 +02:00
Aliaksandr Valialkin
f9d0b21bb9 wip 2024-04-27 21:15:56 +02:00
Aliaksandr Valialkin
56d6496319 wip 2024-04-27 20:36:02 +02:00
Aliaksandr Valialkin
d282056124 wip 2024-04-27 04:43:38 +02:00
Aliaksandr Valialkin
91c7902555 wip 2024-04-27 04:26:15 +02:00
Aliaksandr Valialkin
75bbe51a05 wip 2024-04-27 03:31:19 +02:00
Aliaksandr Valialkin
16a91539bd wip 2024-04-27 03:14:00 +02:00
Aliaksandr Valialkin
2270c42c82 wip 2024-04-27 02:50:19 +02:00
Aliaksandr Valialkin
51b869d458 wip 2024-04-27 01:53:32 +02:00
Aliaksandr Valialkin
9f8dd1ef31 wip 2024-04-27 00:52:15 +02:00
Aliaksandr Valialkin
640b18cd66 wip 2024-04-26 23:47:50 +02:00
Aliaksandr Valialkin
bb409ad0bf use go 1.22 2024-04-26 23:19:54 +02:00
Aliaksandr Valialkin
9855e55de6 typo fix in docs 2024-04-26 15:38:42 +02:00
Aliaksandr Valialkin
65f09bc641 wip 2024-04-26 00:19:58 +02:00
Aliaksandr Valialkin
5512787b72 lib/logstorage: add support for fields modifier 2024-04-25 03:44:07 +02:00
Aliaksandr Valialkin
d304785936 wip 2024-04-25 02:16:06 +02:00
Aliaksandr Valialkin
098067c7cd wip 2024-04-25 01:13:08 +02:00
Aliaksandr Valialkin
984dd2abaf lib/logstorage: optimize typical AND case 2024-04-25 00:57:48 +02:00
Aliaksandr Valialkin
ffdafc32c6 lib/logstorage: skip scheduled work when stopCh is closed
This saves CPU time
2024-04-24 23:41:20 +02:00
Aliaksandr Valialkin
e42b9d26a9 lib/logstorage: skip log entries if it is impossible to find stream tags for them
Updates https://github.com/VictoriaMetrics/VictoriaMetrics/issues/6042
Updates https://github.com/VictoriaMetrics/VictoriaMetrics/pull/6127
2024-04-24 23:24:09 +02:00
Aliaksandr Valialkin
543a6b9cee lib/logstorage: search in partitions in parallel 2024-04-24 23:04:29 +02:00
Aliaksandr Valialkin
e7685164f5 wip 2024-04-24 18:32:58 +02:00
Aliaksandr Valialkin
8534ca0f88 app/logsgenerator: initial version 2024-04-23 19:57:28 +02:00
Aliaksandr Valialkin
522415bf56 lib/logstorage: small clarifications in comments 2024-04-23 15:49:58 +02:00
11 changed files with 308 additions and 88 deletions

View File

@@ -474,7 +474,7 @@ benchmark-pure:
vendor-update:
go get -u -d ./lib/...
go get -u -d ./app/...
go mod tidy -compat=1.22
go mod tidy -compat=1.23
go mod vendor
app-local:

View File

@@ -8,7 +8,7 @@ ROOT_IMAGE_SCRATCH ?= scratch
SKIP_SCRATCH_BUILD ?= false
CERTS_IMAGE := alpine:3.20.0
GO_BUILDER_IMAGE := golang:1.22.4-alpine
GO_BUILDER_IMAGE := golang:1.23rc1-alpine
BUILDER_IMAGE := local/builder:2.0.0-$(shell echo $(GO_BUILDER_IMAGE) | tr :/ __)-1
BASE_IMAGE := local/base:1.1.4-$(shell echo $(ROOT_IMAGE) | tr :/ __)-$(shell echo $(CERTS_IMAGE) | tr :/ __)
DOCKER ?= docker

View File

@@ -19,6 +19,9 @@ according to [these docs](https://docs.victoriametrics.com/victorialogs/quicksta
## tip
* FEATURE: allow specifying multiple `_stream_id` values in [`_stream_id` filter](https://docs.victoriametrics.com/victorialogs/logsql/#_stream_id-filter) via `_stream_id:in(id1, ..., idN)` syntax.
* FEATURE: allow specifying subquery for searching for `_stream_id` values inside [`_stream_id` filter](https://docs.victoriametrics.com/victorialogs/logsql/#_stream_id-filter). For example, `_stream_id:in(_time:5m error | fields _stream_id)` returns logs for [logs streams](https://docs.victoriametrics.com/victorialogs/keyconcepts/#stream-fields) with the `error` word across logs for the last 5 minutes.
## [v0.21.0](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v0.21.0-victorialogs)
Released at 2024-06-20

View File

@@ -479,6 +479,20 @@ query selects logs for the given stream for the last hour:
_time:1h _stream_id:0000007b000001c850d9950ea6196b1a4812081265faa1c7
```
The `_stream_id` filter supports specifying multiple `_stream_id` values via `_stream_id:in(...)` syntax. For example:
```logsql
_stream_id:in(0000007b000001c850d9950ea6196b1a4812081265faa1c7, 1230007b456701c850d9950ea6196b1a4812081265fff2a9)
```
It is also possible specifying subquery inside `in(...)`, which selects the needed `_stream_id` values. For example, the following query returns
logs for [log streams](https://docs.victoriametrics.com/victorialogs/keyconcepts/#stream-fields) containing `error` [word](#word)
in the [`_msg` field](https://docs.victoriametrics.com/victorialogs/keyconcepts/#message-field) during the last 5 minutes:
```logsql
_stream_id:in(_time:5m error | fields _stream_id)
```
See also:
- [stream filter](#stream-filter)

2
go.mod
View File

@@ -1,6 +1,6 @@
module github.com/VictoriaMetrics/VictoriaMetrics
go 1.22.4
go 1.23rc1
require (
cloud.google.com/go/storage v1.42.0

View File

@@ -1,27 +1,76 @@
package logstorage
import (
"strings"
"sync"
"github.com/VictoriaMetrics/VictoriaMetrics/lib/logger"
)
// filterStreamID is the filter for `_stream_id:id`
type filterStreamID struct {
streamIDStr string
streamIDs []streamID
// needeExecuteQuery is set to true if q must be executed for populating streamIDs before filter execution.
needExecuteQuery bool
// If q is non-nil, then streamIDs must be populated from q before filter execution.
q *Query
// qFieldName must be set to field name for obtaining values from if q is non-nil.
qFieldName string
streamIDsMap map[string]struct{}
streamIDsMapOnce sync.Once
}
func (fs *filterStreamID) String() string {
return "_stream_id:" + quoteTokenIfNeeded(fs.streamIDStr)
if fs.q != nil {
return "_stream_id:in(" + fs.q.String() + ")"
}
streamIDs := fs.streamIDs
if len(streamIDs) == 1 {
return "_stream_id:" + string(streamIDs[0].marshalString(nil))
}
a := make([]string, len(streamIDs))
for i, streamID := range streamIDs {
a[i] = string(streamID.marshalString(nil))
}
return "_stream_id:in(" + strings.Join(a, ",") + ")"
}
func (fs *filterStreamID) updateNeededFields(neededFields fieldsSet) {
neededFields.add("_stream_id")
}
func (fs *filterStreamID) getStreamIDsMap() map[string]struct{} {
fs.streamIDsMapOnce.Do(fs.initStreamIDsMap)
return fs.streamIDsMap
}
func (fs *filterStreamID) initStreamIDsMap() {
m := make(map[string]struct{}, len(fs.streamIDs))
for _, streamID := range fs.streamIDs {
k := streamID.marshalString(nil)
m[string(k)] = struct{}{}
}
fs.streamIDsMap = m
}
func (fs *filterStreamID) applyToBlockResult(br *blockResult, bm *bitmap) {
m := fs.getStreamIDsMap()
if len(m) == 0 {
bm.resetBits()
return
}
c := br.getColumnByName("_stream_id")
if c.isConst {
v := c.valuesEncoded[0]
if fs.streamIDStr != v {
if _, ok := m[v]; !ok {
bm.resetBits()
}
return
@@ -36,16 +85,18 @@ func (fs *filterStreamID) applyToBlockResult(br *blockResult, bm *bitmap) {
values := c.getValues(br)
bm.forEachSetBit(func(idx int) bool {
v := values[idx]
return fs.streamIDStr == v
_, ok := m[v]
return ok
})
case valueTypeDict:
bb := bbPool.Get()
for _, v := range c.dictValues {
c := byte(0)
if fs.streamIDStr == v {
c = 1
ch := byte(0)
_, ok := m[v]
if ok {
ch = 1
}
bb.B = append(bb.B, c)
bb.B = append(bb.B, ch)
}
valuesEncoded := c.getValuesEncoded(br)
bm.forEachSetBit(func(idx int) bool {
@@ -73,10 +124,17 @@ func (fs *filterStreamID) applyToBlockResult(br *blockResult, bm *bitmap) {
}
func (fs *filterStreamID) applyToBlockSearch(bs *blockSearch, bm *bitmap) {
m := fs.getStreamIDsMap()
if len(m) == 0 {
bm.resetBits()
return
}
bb := bbPool.Get()
bb.B = bs.bsw.bh.streamID.marshalString(bb.B)
ok := fs.streamIDStr == string(bb.B)
_, ok := m[string(bb.B)]
bbPool.Put(bb)
if !ok {
bm.resetBits()
return

View File

@@ -12,19 +12,37 @@ func TestFilterStreamID(t *testing.T) {
t.Parallel()
// match
var sid1 streamID
if !sid1.tryUnmarshalFromString("0000007b000001c8302bc96e02e54e5524b3a68ec271e55e") {
t.Fatalf("cannot unmarshal _stream_id")
}
ft := &filterStreamID{
streamIDStr: "0000007b000001c8302bc96e02e54e5524b3a68ec271e55e",
streamIDs: []streamID{sid1},
}
testFilterMatchForStreamID(t, ft, []int{0, 3, 6, 9})
var sid2 streamID
if !sid2.tryUnmarshalFromString("0000007b000001c850d9950ea6196b1a4812081265faa1c7") {
t.Fatalf("cannot unmarshal _stream_id")
}
ft = &filterStreamID{
streamIDStr: "0000007b000001c850d9950ea6196b1a4812081265faa1c7",
streamIDs: []streamID{sid2},
}
testFilterMatchForStreamID(t, ft, []int{1, 4, 7})
ft = &filterStreamID{
streamIDs: []streamID{sid1, sid2},
}
testFilterMatchForStreamID(t, ft, []int{0, 1, 3, 4, 6, 7, 9})
// mismatch
ft = &filterStreamID{
streamIDStr: "abc",
streamIDs: nil,
}
testFilterMatchForStreamID(t, ft, nil)
ft = &filterStreamID{
streamIDs: []streamID{{}},
}
testFilterMatchForStreamID(t, ft, nil)
}

View File

@@ -3,7 +3,6 @@ package logstorage
import (
"fmt"
"math"
"sort"
"strconv"
"strings"
"time"
@@ -235,46 +234,38 @@ func (q *Query) String() string {
return s
}
func (q *Query) getSortedStreamIDs() []streamID {
func (q *Query) getStreamIDs() []streamID {
switch t := q.f.(type) {
case *filterAnd:
for _, f := range t.filters {
streamIDs, ok := getSortedStreamIDsFromFilterOr(f)
streamIDs, ok := getStreamIDsFromFilterOr(f)
if ok {
return streamIDs
}
}
return nil
default:
streamIDs, _ := getSortedStreamIDsFromFilterOr(q.f)
streamIDs, _ := getStreamIDsFromFilterOr(q.f)
return streamIDs
}
}
func getSortedStreamIDsFromFilterOr(f filter) ([]streamID, bool) {
func getStreamIDsFromFilterOr(f filter) ([]streamID, bool) {
switch t := f.(type) {
case *filterOr:
streamIDsFilters := 0
var streamIDs []streamID
for _, f := range t.filters {
fs, ok := f.(*filterStreamID)
if !ok {
return nil, false
}
var sid streamID
if sid.tryUnmarshalFromString(fs.streamIDStr) {
streamIDs = append(streamIDs, sid)
}
streamIDsFilters++
streamIDs = append(streamIDs, fs.streamIDs...)
}
sort.Slice(streamIDs, func(i, j int) bool {
return streamIDs[i].less(&streamIDs[j])
})
return streamIDs, len(streamIDs) > 0
return streamIDs, streamIDsFilters > 0
case *filterStreamID:
var sid streamID
if !sid.tryUnmarshalFromString(t.streamIDStr) {
return nil, true
}
return []streamID{sid}, true
return t.streamIDs, true
default:
return nil, false
}
@@ -1830,17 +1821,89 @@ func stripTimezoneSuffix(s string) string {
return s[:len(s)-len(tz)]
}
func parseFilterStreamID(lex *lexer) (*filterStreamID, error) {
s, err := getCompoundToken(lex)
func parseFilterStreamID(lex *lexer) (filter, error) {
if lex.isKeyword("in") {
return parseFilterStreamIDIn(lex)
}
sid, err := parseStreamID(lex)
if err != nil {
return nil, err
return nil, fmt.Errorf("cannot parse _stream_id: %w", err)
}
fs := &filterStreamID{
streamIDStr: s,
streamIDs: []streamID{sid},
}
return fs, nil
}
func parseFilterStreamIDIn(lex *lexer) (filter, error) {
if !lex.isKeyword("in") {
return nil, fmt.Errorf("unexpected token %q; expecting 'in'", lex.token)
}
// Try parsing in(arg1, ..., argN) at first
lexState := lex.backupState()
fs, err := parseFuncArgs(lex, "", func(args []string) (filter, error) {
streamIDs := make([]streamID, len(args))
for i, arg := range args {
if !streamIDs[i].tryUnmarshalFromString(arg) {
return nil, fmt.Errorf("cannot unmarshal _stream_id from %q", arg)
}
}
fs := &filterStreamID{
streamIDs: streamIDs,
}
return fs, nil
})
if err == nil {
return fs, nil
}
// Try parsing in(query)
lex.restoreState(lexState)
lex.nextToken()
if !lex.isKeyword("(") {
return nil, fmt.Errorf("missing '(' after 'in'")
}
lex.nextToken()
q, err := parseQuery(lex)
if err != nil {
return nil, fmt.Errorf("cannot parse query inside 'in(...)': %w", err)
}
if !lex.isKeyword(")") {
return nil, fmt.Errorf("missing ')' after 'in(%s)'", q)
}
lex.nextToken()
qFieldName, err := getFieldNameFromPipes(q.pipes)
if err != nil {
return nil, fmt.Errorf("cannot determine field name for values in 'in(%s)': %w", q, err)
}
fs = &filterStreamID{
needExecuteQuery: true,
q: q,
qFieldName: qFieldName,
}
return fs, nil
}
func parseStreamID(lex *lexer) (streamID, error) {
var sid streamID
s, err := getCompoundToken(lex)
if err != nil {
return sid, err
}
if !sid.tryUnmarshalFromString(s) {
return sid, fmt.Errorf("cannot unmarshal _stream_id from %q", s)
}
return sid, nil
}
func parseFilterStream(lex *lexer) (*filterStream, error) {
sf, err := parseStreamFilter(lex)
if err != nil {

View File

@@ -697,8 +697,13 @@ func TestParseQuerySuccess(t *testing.T) {
f(`"" or foo:"" and not bar:""`, `"" or foo:"" !bar:""`)
// _stream_id filter
f(`_stream_id:foo`, `_stream_id:foo`)
f(`_stream_id:foo-bar/b:az`, `_stream_id:"foo-bar/b:az"`)
f(`_stream_id:0000007b000001c8302bc96e02e54e5524b3a68ec271e55e`, `_stream_id:0000007b000001c8302bc96e02e54e5524b3a68ec271e55e`)
f(`_stream_id:"0000007b000001c8302bc96e02e54e5524b3a68ec271e55e"`, `_stream_id:0000007b000001c8302bc96e02e54e5524b3a68ec271e55e`)
f(`_stream_id:in()`, `_stream_id:in()`)
f(`_stream_id:in(0000007b000001c8302bc96e02e54e5524b3a68ec271e55e)`, `_stream_id:0000007b000001c8302bc96e02e54e5524b3a68ec271e55e`)
f(`_stream_id:in(0000007b000001c8302bc96e02e54e5524b3a68ec271e55e, "0000007b000001c850d9950ea6196b1a4812081265faa1c7")`,
`_stream_id:in(0000007b000001c8302bc96e02e54e5524b3a68ec271e55e,0000007b000001c850d9950ea6196b1a4812081265faa1c7)`)
f(`_stream_id:in(_time:5m | fields _stream_id)`, `_stream_id:in(_time:5m | fields _stream_id)`)
// _stream filters
f(`_stream:{}`, `_stream:{}`)
@@ -1243,7 +1248,11 @@ func TestParseQueryFailure(t *testing.T) {
f("`foo")
// invalid _stream_id filters
f("_stream_id:(foo)")
f("_stream_id:foo")
f("_stream_id:()")
f("_stream_id:in(foo)")
f("_stream_id:in(foo | bar)")
f("_stream_id:in(* | stats by (x) count() y)")
// invalid _stream filters
f("_stream:")

View File

@@ -105,7 +105,11 @@ func (s *Storage) RunQuery(ctx context.Context, tenantIDs []TenantID, q *Query,
}
func (s *Storage) runQuery(ctx context.Context, tenantIDs []TenantID, q *Query, writeBlockResultFunc func(workerID uint, br *blockResult)) error {
streamIDs := q.getSortedStreamIDs()
streamIDs := q.getStreamIDs()
sort.Slice(streamIDs, func(i, j int) bool {
return streamIDs[i].less(&streamIDs[j])
})
neededColumnNames, unneededColumnNames := q.getNeededColumns()
so := &genericSearchOptions{
tenantIDs: tenantIDs,
@@ -427,8 +431,14 @@ func hasFilterInWithQueryForFilter(f filter) bool {
return false
}
visitFunc := func(f filter) bool {
fi, ok := f.(*filterIn)
return ok && fi.needExecuteQuery
switch t := f.(type) {
case *filterIn:
return t.needExecuteQuery
case *filterStreamID:
return t.needExecuteQuery
default:
return false
}
}
return visitFilter(f, visitFunc)
}
@@ -465,33 +475,71 @@ func initFilterInValuesForFilter(cache map[string][]string, f filter, getFieldVa
}
visitFunc := func(f filter) bool {
fi, ok := f.(*filterIn)
return ok && fi.needExecuteQuery
switch t := f.(type) {
case *filterIn:
return t.needExecuteQuery
case *filterStreamID:
return t.needExecuteQuery
default:
return false
}
}
copyFunc := func(f filter) (filter, error) {
fi := f.(*filterIn)
qStr := fi.q.String()
values, ok := cache[qStr]
if !ok {
vs, err := getFieldValuesFunc(fi.q, fi.qFieldName)
switch t := f.(type) {
case *filterIn:
values, err := getValuesForQuery(t.q, t.qFieldName, cache, getFieldValuesFunc)
if err != nil {
return nil, fmt.Errorf("cannot obtain unique values for %s: %w", fi, err)
return nil, fmt.Errorf("cannot obtain unique values for %s: %w", t, err)
}
cache[qStr] = vs
values = vs
}
fiNew := &filterIn{
fieldName: fi.fieldName,
q: fi.q,
values: values,
fiNew := &filterIn{
fieldName: t.fieldName,
q: t.q,
values: values,
}
return fiNew, nil
case *filterStreamID:
values, err := getValuesForQuery(t.q, t.qFieldName, cache, getFieldValuesFunc)
if err != nil {
return nil, fmt.Errorf("cannot obtain unique values for %s: %w", t, err)
}
// convert values to streamID list
streamIDs := make([]streamID, 0, len(values))
for _, v := range values {
var sid streamID
if sid.tryUnmarshalFromString(v) {
streamIDs = append(streamIDs, sid)
}
}
fsNew := &filterStreamID{
streamIDs: streamIDs,
q: t.q,
}
return fsNew, nil
default:
return f, nil
}
return fiNew, nil
}
return copyFilter(f, visitFunc, copyFunc)
}
func getValuesForQuery(q *Query, qFieldName string, cache map[string][]string, getFieldValuesFunc getFieldValuesFunc) ([]string, error) {
qStr := q.String()
values, ok := cache[qStr]
if ok {
return values, nil
}
vs, err := getFieldValuesFunc(q, qFieldName)
if err != nil {
return nil, err
}
cache[qStr] = vs
return vs, nil
}
func initFilterInValuesForPipes(cache map[string][]string, pipes []pipe, getFieldValuesFunc getFieldValuesFunc) ([]pipe, error) {
pipesNew := make([]pipe, len(pipes))
for i, p := range pipes {

View File

@@ -82,7 +82,7 @@ func TestStorageRunQuery(t *testing.T) {
}
s.debugFlush()
mustRunQuery := func(tenantIDs []TenantID, q *Query, writeBlock WriteBlockFunc) {
mustRunQuery := func(t *testing.T, tenantIDs []TenantID, q *Query, writeBlock WriteBlockFunc) {
t.Helper()
err := s.RunQuery(context.Background(), tenantIDs, q, writeBlock)
if err != nil {
@@ -91,7 +91,7 @@ func TestStorageRunQuery(t *testing.T) {
}
// run tests on the storage data
t.Run("missing-tenant", func(_ *testing.T) {
t.Run("missing-tenant", func(t *testing.T) {
q := mustParseQuery(`"log message"`)
tenantID := TenantID{
AccountID: 0,
@@ -101,9 +101,9 @@ func TestStorageRunQuery(t *testing.T) {
panic(fmt.Errorf("unexpected match for %d rows", len(timestamps)))
}
tenantIDs := []TenantID{tenantID}
mustRunQuery(tenantIDs, q, writeBlock)
mustRunQuery(t, tenantIDs, q, writeBlock)
})
t.Run("missing-message-text", func(_ *testing.T) {
t.Run("missing-message-text", func(t *testing.T) {
q := mustParseQuery(`foobar`)
tenantID := TenantID{
AccountID: 1,
@@ -113,7 +113,7 @@ func TestStorageRunQuery(t *testing.T) {
panic(fmt.Errorf("unexpected match for %d rows", len(timestamps)))
}
tenantIDs := []TenantID{tenantID}
mustRunQuery(tenantIDs, q, writeBlock)
mustRunQuery(t, tenantIDs, q, writeBlock)
})
t.Run("matching-tenant-id", func(t *testing.T) {
q := mustParseQuery(`tenant.id:*`)
@@ -147,7 +147,7 @@ func TestStorageRunQuery(t *testing.T) {
rowsCountTotal.Add(uint32(len(timestamps)))
}
tenantIDs := []TenantID{tenantID}
mustRunQuery(tenantIDs, q, writeBlock)
mustRunQuery(t, tenantIDs, q, writeBlock)
expectedRowsCount := streamsPerTenant * blocksPerStream * rowsPerBlock
if n := rowsCountTotal.Load(); n != uint32(expectedRowsCount) {
@@ -161,7 +161,7 @@ func TestStorageRunQuery(t *testing.T) {
writeBlock := func(_ uint, timestamps []int64, _ []BlockColumn) {
rowsCountTotal.Add(uint32(len(timestamps)))
}
mustRunQuery(allTenantIDs, q, writeBlock)
mustRunQuery(t, allTenantIDs, q, writeBlock)
expectedRowsCount := tenantsCount * streamsPerTenant * blocksPerStream * rowsPerBlock
if n := rowsCountTotal.Load(); n != uint32(expectedRowsCount) {
@@ -174,19 +174,19 @@ func TestStorageRunQuery(t *testing.T) {
writeBlock := func(_ uint, timestamps []int64, _ []BlockColumn) {
rowsCountTotal.Add(uint32(len(timestamps)))
}
mustRunQuery(allTenantIDs, q, writeBlock)
mustRunQuery(t, allTenantIDs, q, writeBlock)
expectedRowsCount := tenantsCount * streamsPerTenant * blocksPerStream * rowsPerBlock
if n := rowsCountTotal.Load(); n != uint32(expectedRowsCount) {
t.Fatalf("unexpected number of matching rows; got %d; want %d", n, expectedRowsCount)
}
})
t.Run("stream-filter-mismatch", func(_ *testing.T) {
t.Run("stream-filter-mismatch", func(t *testing.T) {
q := mustParseQuery(`_stream:{job="foobar",instance=~"host-.+:2345"} log`)
writeBlock := func(_ uint, timestamps []int64, _ []BlockColumn) {
panic(fmt.Errorf("unexpected match for %d rows", len(timestamps)))
}
mustRunQuery(allTenantIDs, q, writeBlock)
mustRunQuery(t, allTenantIDs, q, writeBlock)
})
t.Run("matching-stream-id", func(t *testing.T) {
for i := 0; i < streamsPerTenant; i++ {
@@ -220,7 +220,7 @@ func TestStorageRunQuery(t *testing.T) {
rowsCountTotal.Add(uint32(len(timestamps)))
}
tenantIDs := []TenantID{tenantID}
mustRunQuery(tenantIDs, q, writeBlock)
mustRunQuery(t, tenantIDs, q, writeBlock)
expectedRowsCount := blocksPerStream * rowsPerBlock
if n := rowsCountTotal.Load(); n != uint32(expectedRowsCount) {
@@ -239,7 +239,7 @@ func TestStorageRunQuery(t *testing.T) {
rowsCountTotal.Add(uint32(len(timestamps)))
}
tenantIDs := []TenantID{tenantID}
mustRunQuery(tenantIDs, q, writeBlock)
mustRunQuery(t, tenantIDs, q, writeBlock)
expectedRowsCount := streamsPerTenant * blocksPerStream * 2
if n := rowsCountTotal.Load(); n != uint32(expectedRowsCount) {
@@ -259,7 +259,7 @@ func TestStorageRunQuery(t *testing.T) {
rowsCountTotal.Add(uint32(len(timestamps)))
}
tenantIDs := []TenantID{tenantID}
mustRunQuery(tenantIDs, q, writeBlock)
mustRunQuery(t, tenantIDs, q, writeBlock)
expectedRowsCount := streamsPerTenant * blocksPerStream
if n := rowsCountTotal.Load(); n != uint32(expectedRowsCount) {
@@ -279,14 +279,14 @@ func TestStorageRunQuery(t *testing.T) {
rowsCountTotal.Add(uint32(len(timestamps)))
}
tenantIDs := []TenantID{tenantID}
mustRunQuery(tenantIDs, q, writeBlock)
mustRunQuery(t, tenantIDs, q, writeBlock)
expectedRowsCount := blocksPerStream
if n := rowsCountTotal.Load(); n != uint32(expectedRowsCount) {
t.Fatalf("unexpected number of rows; got %d; want %d", n, expectedRowsCount)
}
})
t.Run("matching-stream-id-missing-time-range", func(_ *testing.T) {
t.Run("matching-stream-id-missing-time-range", func(t *testing.T) {
minTimestamp := baseTimestamp + (rowsPerBlock+1)*1e9
maxTimestamp := baseTimestamp + (rowsPerBlock+2)*1e9
q := mustParseQuery(fmt.Sprintf(`_stream:{job="foobar",instance="host-1:234"} _time:[%d, %d)`, minTimestamp/1e9, maxTimestamp/1e9))
@@ -298,9 +298,9 @@ func TestStorageRunQuery(t *testing.T) {
panic(fmt.Errorf("unexpected match for %d rows", len(timestamps)))
}
tenantIDs := []TenantID{tenantID}
mustRunQuery(tenantIDs, q, writeBlock)
mustRunQuery(t, tenantIDs, q, writeBlock)
})
t.Run("missing-time-range", func(_ *testing.T) {
t.Run("missing-time-range", func(t *testing.T) {
minTimestamp := baseTimestamp + (rowsPerBlock+1)*1e9
maxTimestamp := baseTimestamp + (rowsPerBlock+2)*1e9
q := mustParseQuery(fmt.Sprintf(`_time:[%d, %d)`, minTimestamp/1e9, maxTimestamp/1e9))
@@ -312,7 +312,7 @@ func TestStorageRunQuery(t *testing.T) {
panic(fmt.Errorf("unexpected match for %d rows", len(timestamps)))
}
tenantIDs := []TenantID{tenantID}
mustRunQuery(tenantIDs, q, writeBlock)
mustRunQuery(t, tenantIDs, q, writeBlock)
})
t.Run("field_names-all", func(t *testing.T) {
q := mustParseQuery("*")
@@ -493,7 +493,7 @@ func TestStorageRunQuery(t *testing.T) {
resultRowsLock.Unlock()
}
}
mustRunQuery(allTenantIDs, q, writeBlock)
mustRunQuery(t, allTenantIDs, q, writeBlock)
assertRowsEqual(t, resultRows, rowsExpected)
}
@@ -505,6 +505,13 @@ func TestStorageRunQuery(t *testing.T) {
},
})
})
t.Run("_stream_id-filter", func(t *testing.T) {
f(t, `_stream_id:in(tenant.id:2 | fields _stream_id) | stats count() rows`, [][]Field{
{
{"rows", "105"},
},
})
})
t.Run("in-filter-with-subquery-match", func(t *testing.T) {
f(t, `tenant.id:in(tenant.id:2 | fields tenant.id) | stats count() rows`, [][]Field{
{
@@ -545,7 +552,7 @@ func TestStorageRunQuery(t *testing.T) {
},
})
})
t.Run("pipe-extract", func(*testing.T) {
t.Run("pipe-extract", func(t *testing.T) {
f(t, `* | extract "host-<host>:" from instance | uniq (host) with hits | sort by (host)`, [][]Field{
{
{"host", "0"},
@@ -561,7 +568,7 @@ func TestStorageRunQuery(t *testing.T) {
},
})
})
t.Run("pipe-extract-if-filter-with-subquery", func(*testing.T) {
t.Run("pipe-extract-if-filter-with-subquery", func(t *testing.T) {
f(t, `* | extract
if (tenant.id:in(tenant.id:(3 or 4) | fields tenant.id))
"host-<host>:" from instance
@@ -590,7 +597,7 @@ func TestStorageRunQuery(t *testing.T) {
},
})
})
t.Run("pipe-extract-if-filter-with-subquery-non-empty-host", func(*testing.T) {
t.Run("pipe-extract-if-filter-with-subquery-non-empty-host", func(t *testing.T) {
f(t, `* | extract
if (tenant.id:in(tenant.id:3 | fields tenant.id))
"host-<host>:" from instance
@@ -611,7 +618,7 @@ func TestStorageRunQuery(t *testing.T) {
},
})
})
t.Run("pipe-extract-if-filter-with-subquery-empty-host", func(*testing.T) {
t.Run("pipe-extract-if-filter-with-subquery-empty-host", func(t *testing.T) {
f(t, `* | extract
if (tenant.id:in(tenant.id:3 | fields tenant.id))
"host-<host>:" from instance
@@ -717,7 +724,7 @@ func TestStorageSearch(t *testing.T) {
}
}
t.Run("missing-tenant-smaller-than-existing", func(_ *testing.T) {
t.Run("missing-tenant-smaller-than-existing", func(t *testing.T) {
tenantID := TenantID{
AccountID: 0,
ProjectID: 0,
@@ -735,7 +742,7 @@ func TestStorageSearch(t *testing.T) {
}
s.search(workersCount, so, nil, processBlock)
})
t.Run("missing-tenant-bigger-than-existing", func(_ *testing.T) {
t.Run("missing-tenant-bigger-than-existing", func(t *testing.T) {
tenantID := TenantID{
AccountID: tenantsCount + 1,
ProjectID: 0,
@@ -753,7 +760,7 @@ func TestStorageSearch(t *testing.T) {
}
s.search(workersCount, so, nil, processBlock)
})
t.Run("missing-tenant-middle", func(_ *testing.T) {
t.Run("missing-tenant-middle", func(t *testing.T) {
tenantID := TenantID{
AccountID: 1,
ProjectID: 0,
@@ -817,7 +824,7 @@ func TestStorageSearch(t *testing.T) {
t.Fatalf("unexpected number of matching rows; got %d; want %d", n, expectedRowsCount)
}
})
t.Run("stream-filter-mismatch", func(_ *testing.T) {
t.Run("stream-filter-mismatch", func(t *testing.T) {
sf := mustNewTestStreamFilter(`{job="foobar",instance=~"host-.+:2345"}`)
minTimestamp := baseTimestamp
maxTimestamp := baseTimestamp + rowsPerBlock*1e9 + blocksPerStream
@@ -943,7 +950,7 @@ func TestStorageSearch(t *testing.T) {
t.Fatalf("unexpected number of rows; got %d; want %d", n, expectedRowsCount)
}
})
t.Run("matching-stream-id-missing-time-range", func(_ *testing.T) {
t.Run("matching-stream-id-missing-time-range", func(t *testing.T) {
sf := mustNewTestStreamFilter(`{job="foobar",instance="host-1:234"}`)
tenantID := TenantID{
AccountID: 1,