mirror of
https://github.com/prometheus/prometheus.git
synced 2025-03-05 20:59:13 -08:00
PromQL: Fix unary operator precedence (#6579)
* PromQL: Fix unary operator precedence Fixes #6575 Signed-off-by: Tobias Guggenmos <tguggenm@redhat.com>
This commit is contained in:
parent
9d9bc524e5
commit
d8bc24349c
|
@ -152,10 +152,6 @@ START_METRIC_SELECTOR
|
||||||
%left MUL DIV MOD
|
%left MUL DIV MOD
|
||||||
%right POW
|
%right POW
|
||||||
|
|
||||||
// Fake token for giving unary expressions maximal precendence
|
|
||||||
%token PREC_MAX
|
|
||||||
%nonassoc PREC_MAX
|
|
||||||
|
|
||||||
// Offset modifiers do not have associativity.
|
// Offset modifiers do not have associativity.
|
||||||
%nonassoc OFFSET
|
%nonassoc OFFSET
|
||||||
|
|
||||||
|
@ -419,8 +415,8 @@ subquery_expr : expr LEFT_BRACKET duration COLON maybe_duration RIGHT_BRACKET
|
||||||
*/
|
*/
|
||||||
|
|
||||||
unary_expr :
|
unary_expr :
|
||||||
/* gives the rule the same prec as POW. This has the effect that unary opts are always evaluated with highest precedence */
|
/* gives the rule the same precedence as MUL. This aligns with mathematical conventions */
|
||||||
unary_op expr %prec PREC_MAX
|
unary_op expr %prec MUL
|
||||||
{
|
{
|
||||||
if nl, ok := $2.(*NumberLiteral); ok {
|
if nl, ok := $2.(*NumberLiteral); ok {
|
||||||
if $1.Typ == SUB {
|
if $1.Typ == SUB {
|
||||||
|
|
|
@ -103,7 +103,6 @@ const START_SERIES_DESCRIPTION = 57411
|
||||||
const START_EXPRESSION = 57412
|
const START_EXPRESSION = 57412
|
||||||
const START_METRIC_SELECTOR = 57413
|
const START_METRIC_SELECTOR = 57413
|
||||||
const startSymbolsEnd = 57414
|
const startSymbolsEnd = 57414
|
||||||
const PREC_MAX = 57415
|
|
||||||
|
|
||||||
var yyToknames = [...]string{
|
var yyToknames = [...]string{
|
||||||
"$end",
|
"$end",
|
||||||
|
@ -178,7 +177,6 @@ var yyToknames = [...]string{
|
||||||
"START_EXPRESSION",
|
"START_EXPRESSION",
|
||||||
"START_METRIC_SELECTOR",
|
"START_METRIC_SELECTOR",
|
||||||
"startSymbolsEnd",
|
"startSymbolsEnd",
|
||||||
"PREC_MAX",
|
|
||||||
}
|
}
|
||||||
var yyStatenames = [...]string{}
|
var yyStatenames = [...]string{}
|
||||||
|
|
||||||
|
@ -186,7 +184,7 @@ const yyEofCode = 1
|
||||||
const yyErrCode = 2
|
const yyErrCode = 2
|
||||||
const yyInitialStackSize = 16
|
const yyInitialStackSize = 16
|
||||||
|
|
||||||
//line promql/generated_parser.y:645
|
//line promql/generated_parser.y:641
|
||||||
|
|
||||||
//line yacctab:1
|
//line yacctab:1
|
||||||
var yyExca = [...]int{
|
var yyExca = [...]int{
|
||||||
|
@ -254,33 +252,33 @@ var yyAct = [...]int{
|
||||||
|
|
||||||
228, 179, 17, 119, 218, 219, 31, 152, 91, 57,
|
228, 179, 17, 119, 218, 219, 31, 152, 91, 57,
|
||||||
80, 79, 82, 156, 104, 157, 181, 6, 83, 158,
|
80, 79, 82, 156, 104, 157, 181, 6, 83, 158,
|
||||||
159, 78, 78, 231, 211, 212, 190, 153, 98, 206,
|
159, 78, 212, 231, 153, 98, 190, 211, 99, 206,
|
||||||
196, 210, 146, 226, 234, 86, 81, 87, 225, 99,
|
196, 210, 146, 229, 234, 86, 81, 87, 232, 226,
|
||||||
136, 85, 205, 154, 36, 135, 192, 193, 75, 84,
|
154, 85, 205, 36, 225, 48, 192, 193, 75, 84,
|
||||||
194, 224, 209, 145, 97, 232, 134, 229, 100, 182,
|
194, 97, 209, 145, 84, 52, 13, 224, 100, 182,
|
||||||
184, 186, 187, 195, 197, 200, 201, 202, 203, 204,
|
184, 186, 187, 195, 197, 200, 201, 202, 203, 204,
|
||||||
77, 77, 183, 185, 188, 189, 191, 198, 199, 48,
|
77, 7, 183, 185, 188, 189, 191, 198, 199, 88,
|
||||||
88, 93, 122, 2, 3, 4, 5, 132, 126, 129,
|
233, 93, 122, 2, 3, 4, 5, 132, 126, 129,
|
||||||
124, 92, 125, 82, 12, 52, 84, 207, 11, 83,
|
124, 92, 125, 82, 12, 52, 28, 207, 11, 83,
|
||||||
12, 13, 52, 155, 11, 144, 151, 13, 160, 161,
|
12, 13, 53, 155, 11, 144, 151, 61, 160, 161,
|
||||||
162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
|
162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
|
||||||
172, 173, 105, 106, 107, 108, 109, 110, 111, 112,
|
172, 173, 105, 106, 107, 108, 109, 110, 111, 112,
|
||||||
113, 114, 115, 116, 117, 118, 176, 181, 148, 138,
|
113, 114, 115, 116, 117, 118, 176, 181, 148, 138,
|
||||||
175, 128, 59, 233, 208, 150, 7, 190, 61, 223,
|
175, 128, 59, 14, 208, 150, 1, 190, 221, 223,
|
||||||
48, 196, 58, 174, 127, 178, 121, 213, 143, 153,
|
48, 196, 58, 174, 127, 178, 121, 213, 143, 153,
|
||||||
214, 215, 216, 217, 220, 139, 141, 192, 193, 14,
|
214, 215, 216, 217, 220, 139, 141, 192, 193, 35,
|
||||||
35, 194, 28, 9, 9, 154, 140, 142, 53, 222,
|
8, 194, 9, 9, 15, 154, 140, 142, 33, 222,
|
||||||
182, 184, 186, 187, 195, 197, 200, 201, 202, 203,
|
182, 184, 186, 187, 195, 197, 200, 201, 202, 203,
|
||||||
204, 1, 93, 183, 185, 188, 189, 191, 198, 199,
|
204, 27, 26, 183, 185, 188, 189, 191, 198, 199,
|
||||||
96, 78, 92, 8, 123, 95, 221, 15, 90, 227,
|
136, 78, 96, 25, 123, 135, 24, 95, 120, 227,
|
||||||
59, 121, 120, 230, 63, 33, 94, 78, 27, 121,
|
93, 121, 10, 230, 63, 121, 134, 78, 94, 103,
|
||||||
58, 26, 25, 133, 72, 73, 56, 235, 75, 62,
|
92, 23, 54, 133, 72, 73, 90, 235, 75, 62,
|
||||||
63, 64, 236, 65, 66, 67, 68, 69, 70, 71,
|
63, 64, 236, 65, 66, 67, 68, 69, 70, 71,
|
||||||
72, 73, 74, 10, 75, 76, 24, 103, 23, 22,
|
72, 73, 74, 59, 75, 76, 22, 21, 101, 130,
|
||||||
77, 78, 21, 54, 101, 130, 20, 102, 19, 18,
|
77, 78, 20, 58, 102, 19, 18, 149, 60, 56,
|
||||||
149, 60, 147, 62, 63, 64, 77, 65, 66, 67,
|
147, 177, 55, 62, 63, 64, 77, 65, 66, 67,
|
||||||
68, 69, 70, 71, 72, 73, 74, 177, 75, 76,
|
68, 69, 70, 71, 72, 73, 74, 34, 75, 76,
|
||||||
55, 78, 34, 180, 137, 29, 89, 0, 0, 0,
|
180, 78, 137, 29, 89, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 62, 63, 64, 0, 65, 66, 67,
|
0, 0, 0, 62, 63, 64, 0, 65, 66, 67,
|
||||||
77, 69, 70, 71, 72, 73, 74, 0, 75, 76,
|
77, 69, 70, 71, 72, 73, 74, 0, 75, 76,
|
||||||
0, 78, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 78, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
@ -304,38 +302,38 @@ var yyAct = [...]int{
|
||||||
}
|
}
|
||||||
var yyPact = [...]int{
|
var yyPact = [...]int{
|
||||||
|
|
||||||
15, 136, 88, 88, 346, 82, -1000, -1000, -1000, 94,
|
15, 61, 88, 88, 346, 82, -1000, -1000, -1000, 43,
|
||||||
-1000, -1000, -1000, 208, -1000, 146, -1000, 237, -1000, -1000,
|
-1000, -1000, -1000, 241, -1000, 105, -1000, 237, -1000, -1000,
|
||||||
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 34,
|
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 34,
|
||||||
81, -1000, 390, -1000, 390, 89, -1000, -1000, -1000, -1000,
|
39, -1000, 390, -1000, 390, 42, -1000, -1000, -1000, -1000,
|
||||||
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
|
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
|
||||||
-1000, -1000, 190, -1000, -1000, 198, -1000, -1000, 26, -1000,
|
-1000, -1000, 208, -1000, -1000, 200, -1000, -1000, 23, -1000,
|
||||||
17, -1000, -44, -44, -44, -44, -44, -44, -44, -44,
|
6, -1000, -44, -44, -44, -44, -44, -44, -44, -44,
|
||||||
-44, -44, -44, -44, -44, -44, -44, 210, 202, 81,
|
-44, -44, -44, -44, -44, -44, -44, 206, 202, 39,
|
||||||
-47, -1000, 139, 139, 328, -1000, 203, 8, -1000, 38,
|
-47, -1000, 139, 139, 328, -1000, 203, 7, -1000, 198,
|
||||||
-1000, -1000, 137, -1000, -1000, 140, -1000, 30, -1000, 133,
|
-1000, -1000, 137, -1000, -1000, 140, -1000, 30, -1000, 133,
|
||||||
390, -1000, -49, -41, -1000, 390, 390, 390, 390, 390,
|
390, -1000, -49, -41, -1000, 390, 390, 390, 390, 390,
|
||||||
390, 390, 390, 390, 390, 390, 390, 390, 390, -1000,
|
390, 390, 390, 390, 390, 390, 390, 390, 390, -1000,
|
||||||
-1000, -1000, 134, -1000, -1000, -1000, -1000, 135, -1000, -1000,
|
-1000, -1000, 134, -1000, -1000, -1000, -1000, 135, -1000, -1000,
|
||||||
22, -1000, 237, -1000, -1000, 79, -1000, 29, -1000, -1000,
|
22, -1000, 237, -1000, -1000, 79, -1000, 29, -1000, -1000,
|
||||||
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 0, 1,
|
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 3, -2,
|
||||||
-1000, -1000, -1000, 62, 62, 187, 139, 139, 139, 139,
|
-1000, -1000, -1000, 28, 28, 187, 139, 139, 139, 139,
|
||||||
7, 420, 420, 420, 297, 267, 420, 420, 297, 7,
|
7, 420, 420, 420, 297, 267, 420, 420, 297, 7,
|
||||||
7, 420, 7, 187, -1000, 147, -1000, 31, -1000, -1000,
|
7, 420, 7, 187, -1000, 147, -1000, 37, -1000, -1000,
|
||||||
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
|
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
|
||||||
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
|
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
|
||||||
-1000, -1000, -1000, -1000, -1000, -1000, 390, -1000, -1000, -1000,
|
-1000, -1000, -1000, -1000, -1000, -1000, 390, -1000, -1000, -1000,
|
||||||
-1000, 40, 40, -1, -1000, -1000, -1000, -1000, -1000, -1000,
|
-1000, 16, 16, -1, -1000, -1000, -1000, -1000, -1000, -1000,
|
||||||
-1000, 36, 141, -1000, -1000, 14, -1000, 237, -1000, -1000,
|
-1000, 19, 78, -1000, -1000, 14, -1000, 237, -1000, -1000,
|
||||||
-1000, 40, -1000, -1000, -1000, -1000, -1000,
|
-1000, 16, -1000, -1000, -1000, -1000, -1000,
|
||||||
}
|
}
|
||||||
var yyPgo = [...]int{
|
var yyPgo = [...]int{
|
||||||
|
|
||||||
0, 286, 44, 8, 285, 1, 284, 283, 170, 282,
|
0, 284, 43, 8, 283, 1, 282, 280, 169, 277,
|
||||||
243, 280, 203, 9, 277, 5, 4, 262, 261, 0,
|
212, 262, 170, 9, 261, 5, 4, 260, 258, 0,
|
||||||
6, 260, 7, 259, 11, 58, 258, 257, 2, 256,
|
6, 257, 7, 256, 11, 58, 255, 254, 2, 252,
|
||||||
255, 10, 254, 252, 249, 248, 247, 246, 222, 221,
|
249, 10, 248, 247, 246, 221, 219, 206, 203, 192,
|
||||||
218, 172, 215, 3, 206, 191, 169,
|
191, 96, 178, 3, 148, 146, 143,
|
||||||
}
|
}
|
||||||
var yyR1 = [...]int{
|
var yyR1 = [...]int{
|
||||||
|
|
||||||
|
@ -444,7 +442,7 @@ var yyTok2 = [...]int{
|
||||||
42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
|
42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
|
||||||
52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
|
52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
|
||||||
62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
|
62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
|
||||||
72, 73,
|
72,
|
||||||
}
|
}
|
||||||
var yyTok3 = [...]int{
|
var yyTok3 = [...]int{
|
||||||
0,
|
0,
|
||||||
|
@ -789,61 +787,61 @@ yydefault:
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
//line promql/generated_parser.y:170
|
//line promql/generated_parser.y:166
|
||||||
{
|
{
|
||||||
yylex.(*parser).generatedParserResult = yyDollar[2].labels
|
yylex.(*parser).generatedParserResult = yyDollar[2].labels
|
||||||
}
|
}
|
||||||
case 3:
|
case 3:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
//line promql/generated_parser.y:173
|
//line promql/generated_parser.y:169
|
||||||
{
|
{
|
||||||
yylex.(*parser).errorf("no expression found in input")
|
yylex.(*parser).errorf("no expression found in input")
|
||||||
}
|
}
|
||||||
case 4:
|
case 4:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
//line promql/generated_parser.y:175
|
//line promql/generated_parser.y:171
|
||||||
{
|
{
|
||||||
yylex.(*parser).generatedParserResult = yyDollar[2].node
|
yylex.(*parser).generatedParserResult = yyDollar[2].node
|
||||||
}
|
}
|
||||||
case 5:
|
case 5:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
//line promql/generated_parser.y:177
|
//line promql/generated_parser.y:173
|
||||||
{
|
{
|
||||||
yylex.(*parser).generatedParserResult = yyDollar[2].node
|
yylex.(*parser).generatedParserResult = yyDollar[2].node
|
||||||
}
|
}
|
||||||
case 7:
|
case 7:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line promql/generated_parser.y:180
|
//line promql/generated_parser.y:176
|
||||||
{
|
{
|
||||||
yylex.(*parser).unexpected("", "")
|
yylex.(*parser).unexpected("", "")
|
||||||
}
|
}
|
||||||
case 19:
|
case 19:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
//line promql/generated_parser.y:202
|
//line promql/generated_parser.y:198
|
||||||
{
|
{
|
||||||
yyVAL.node = yylex.(*parser).newAggregateExpr(yyDollar[1].item, yyDollar[2].node, yyDollar[3].node)
|
yyVAL.node = yylex.(*parser).newAggregateExpr(yyDollar[1].item, yyDollar[2].node, yyDollar[3].node)
|
||||||
}
|
}
|
||||||
case 20:
|
case 20:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
//line promql/generated_parser.y:204
|
//line promql/generated_parser.y:200
|
||||||
{
|
{
|
||||||
yyVAL.node = yylex.(*parser).newAggregateExpr(yyDollar[1].item, yyDollar[3].node, yyDollar[2].node)
|
yyVAL.node = yylex.(*parser).newAggregateExpr(yyDollar[1].item, yyDollar[3].node, yyDollar[2].node)
|
||||||
}
|
}
|
||||||
case 21:
|
case 21:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
//line promql/generated_parser.y:206
|
//line promql/generated_parser.y:202
|
||||||
{
|
{
|
||||||
yyVAL.node = yylex.(*parser).newAggregateExpr(yyDollar[1].item, &AggregateExpr{}, yyDollar[2].node)
|
yyVAL.node = yylex.(*parser).newAggregateExpr(yyDollar[1].item, &AggregateExpr{}, yyDollar[2].node)
|
||||||
}
|
}
|
||||||
case 22:
|
case 22:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
//line promql/generated_parser.y:208
|
//line promql/generated_parser.y:204
|
||||||
{
|
{
|
||||||
yylex.(*parser).unexpected("aggregation", "")
|
yylex.(*parser).unexpected("aggregation", "")
|
||||||
}
|
}
|
||||||
case 23:
|
case 23:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
//line promql/generated_parser.y:213
|
//line promql/generated_parser.y:209
|
||||||
{
|
{
|
||||||
yyVAL.node = &AggregateExpr{
|
yyVAL.node = &AggregateExpr{
|
||||||
Grouping: yyDollar[2].strings,
|
Grouping: yyDollar[2].strings,
|
||||||
|
@ -851,7 +849,7 @@ yydefault:
|
||||||
}
|
}
|
||||||
case 24:
|
case 24:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
//line promql/generated_parser.y:219
|
//line promql/generated_parser.y:215
|
||||||
{
|
{
|
||||||
yyVAL.node = &AggregateExpr{
|
yyVAL.node = &AggregateExpr{
|
||||||
Grouping: yyDollar[2].strings,
|
Grouping: yyDollar[2].strings,
|
||||||
|
@ -860,97 +858,97 @@ yydefault:
|
||||||
}
|
}
|
||||||
case 25:
|
case 25:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
//line promql/generated_parser.y:232
|
//line promql/generated_parser.y:228
|
||||||
{
|
{
|
||||||
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
||||||
}
|
}
|
||||||
case 26:
|
case 26:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
//line promql/generated_parser.y:233
|
//line promql/generated_parser.y:229
|
||||||
{
|
{
|
||||||
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
||||||
}
|
}
|
||||||
case 27:
|
case 27:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
//line promql/generated_parser.y:234
|
//line promql/generated_parser.y:230
|
||||||
{
|
{
|
||||||
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
||||||
}
|
}
|
||||||
case 28:
|
case 28:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
//line promql/generated_parser.y:235
|
//line promql/generated_parser.y:231
|
||||||
{
|
{
|
||||||
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
||||||
}
|
}
|
||||||
case 29:
|
case 29:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
//line promql/generated_parser.y:236
|
//line promql/generated_parser.y:232
|
||||||
{
|
{
|
||||||
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
||||||
}
|
}
|
||||||
case 30:
|
case 30:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
//line promql/generated_parser.y:237
|
//line promql/generated_parser.y:233
|
||||||
{
|
{
|
||||||
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
||||||
}
|
}
|
||||||
case 31:
|
case 31:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
//line promql/generated_parser.y:238
|
//line promql/generated_parser.y:234
|
||||||
{
|
{
|
||||||
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
||||||
}
|
}
|
||||||
case 32:
|
case 32:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
//line promql/generated_parser.y:239
|
//line promql/generated_parser.y:235
|
||||||
{
|
{
|
||||||
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
||||||
}
|
}
|
||||||
case 33:
|
case 33:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
//line promql/generated_parser.y:240
|
//line promql/generated_parser.y:236
|
||||||
{
|
{
|
||||||
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
||||||
}
|
}
|
||||||
case 34:
|
case 34:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
//line promql/generated_parser.y:241
|
//line promql/generated_parser.y:237
|
||||||
{
|
{
|
||||||
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
||||||
}
|
}
|
||||||
case 35:
|
case 35:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
//line promql/generated_parser.y:242
|
//line promql/generated_parser.y:238
|
||||||
{
|
{
|
||||||
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
||||||
}
|
}
|
||||||
case 36:
|
case 36:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
//line promql/generated_parser.y:243
|
//line promql/generated_parser.y:239
|
||||||
{
|
{
|
||||||
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
||||||
}
|
}
|
||||||
case 37:
|
case 37:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
//line promql/generated_parser.y:244
|
//line promql/generated_parser.y:240
|
||||||
{
|
{
|
||||||
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
||||||
}
|
}
|
||||||
case 38:
|
case 38:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
//line promql/generated_parser.y:245
|
//line promql/generated_parser.y:241
|
||||||
{
|
{
|
||||||
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
||||||
}
|
}
|
||||||
case 39:
|
case 39:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
//line promql/generated_parser.y:246
|
//line promql/generated_parser.y:242
|
||||||
{
|
{
|
||||||
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
||||||
}
|
}
|
||||||
case 41:
|
case 41:
|
||||||
yyDollar = yyS[yypt-0 : yypt+1]
|
yyDollar = yyS[yypt-0 : yypt+1]
|
||||||
//line promql/generated_parser.y:254
|
//line promql/generated_parser.y:250
|
||||||
{
|
{
|
||||||
yyVAL.node = &BinaryExpr{
|
yyVAL.node = &BinaryExpr{
|
||||||
VectorMatching: &VectorMatching{Card: CardOneToOne},
|
VectorMatching: &VectorMatching{Card: CardOneToOne},
|
||||||
|
@ -958,7 +956,7 @@ yydefault:
|
||||||
}
|
}
|
||||||
case 42:
|
case 42:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line promql/generated_parser.y:259
|
//line promql/generated_parser.y:255
|
||||||
{
|
{
|
||||||
yyVAL.node = &BinaryExpr{
|
yyVAL.node = &BinaryExpr{
|
||||||
VectorMatching: &VectorMatching{Card: CardOneToOne},
|
VectorMatching: &VectorMatching{Card: CardOneToOne},
|
||||||
|
@ -967,14 +965,14 @@ yydefault:
|
||||||
}
|
}
|
||||||
case 43:
|
case 43:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
//line promql/generated_parser.y:267
|
//line promql/generated_parser.y:263
|
||||||
{
|
{
|
||||||
yyVAL.node = yyDollar[1].node
|
yyVAL.node = yyDollar[1].node
|
||||||
yyVAL.node.(*BinaryExpr).VectorMatching.MatchingLabels = yyDollar[3].strings
|
yyVAL.node.(*BinaryExpr).VectorMatching.MatchingLabels = yyDollar[3].strings
|
||||||
}
|
}
|
||||||
case 44:
|
case 44:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
//line promql/generated_parser.y:272
|
//line promql/generated_parser.y:268
|
||||||
{
|
{
|
||||||
yyVAL.node = yyDollar[1].node
|
yyVAL.node = yyDollar[1].node
|
||||||
yyVAL.node.(*BinaryExpr).VectorMatching.MatchingLabels = yyDollar[3].strings
|
yyVAL.node.(*BinaryExpr).VectorMatching.MatchingLabels = yyDollar[3].strings
|
||||||
|
@ -982,7 +980,7 @@ yydefault:
|
||||||
}
|
}
|
||||||
case 47:
|
case 47:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
//line promql/generated_parser.y:282
|
//line promql/generated_parser.y:278
|
||||||
{
|
{
|
||||||
yyVAL.node = yyDollar[1].node
|
yyVAL.node = yyDollar[1].node
|
||||||
yyVAL.node.(*BinaryExpr).VectorMatching.Card = CardManyToOne
|
yyVAL.node.(*BinaryExpr).VectorMatching.Card = CardManyToOne
|
||||||
|
@ -990,7 +988,7 @@ yydefault:
|
||||||
}
|
}
|
||||||
case 48:
|
case 48:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
//line promql/generated_parser.y:288
|
//line promql/generated_parser.y:284
|
||||||
{
|
{
|
||||||
yyVAL.node = yyDollar[1].node
|
yyVAL.node = yyDollar[1].node
|
||||||
yyVAL.node.(*BinaryExpr).VectorMatching.Card = CardOneToMany
|
yyVAL.node.(*BinaryExpr).VectorMatching.Card = CardOneToMany
|
||||||
|
@ -998,49 +996,49 @@ yydefault:
|
||||||
}
|
}
|
||||||
case 49:
|
case 49:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
//line promql/generated_parser.y:297
|
//line promql/generated_parser.y:293
|
||||||
{
|
{
|
||||||
yyVAL.strings = yyDollar[2].strings
|
yyVAL.strings = yyDollar[2].strings
|
||||||
}
|
}
|
||||||
case 50:
|
case 50:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
//line promql/generated_parser.y:299
|
//line promql/generated_parser.y:295
|
||||||
{
|
{
|
||||||
yyVAL.strings = yyDollar[2].strings
|
yyVAL.strings = yyDollar[2].strings
|
||||||
}
|
}
|
||||||
case 51:
|
case 51:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
//line promql/generated_parser.y:301
|
//line promql/generated_parser.y:297
|
||||||
{
|
{
|
||||||
yyVAL.strings = []string{}
|
yyVAL.strings = []string{}
|
||||||
}
|
}
|
||||||
case 52:
|
case 52:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line promql/generated_parser.y:303
|
//line promql/generated_parser.y:299
|
||||||
{
|
{
|
||||||
yylex.(*parser).unexpected("grouping opts", "\"(\"")
|
yylex.(*parser).unexpected("grouping opts", "\"(\"")
|
||||||
}
|
}
|
||||||
case 53:
|
case 53:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
//line promql/generated_parser.y:309
|
//line promql/generated_parser.y:305
|
||||||
{
|
{
|
||||||
yyVAL.strings = append(yyDollar[1].strings, yyDollar[3].item.Val)
|
yyVAL.strings = append(yyDollar[1].strings, yyDollar[3].item.Val)
|
||||||
}
|
}
|
||||||
case 54:
|
case 54:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line promql/generated_parser.y:311
|
//line promql/generated_parser.y:307
|
||||||
{
|
{
|
||||||
yyVAL.strings = []string{yyDollar[1].item.Val}
|
yyVAL.strings = []string{yyDollar[1].item.Val}
|
||||||
}
|
}
|
||||||
case 55:
|
case 55:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
//line promql/generated_parser.y:313
|
//line promql/generated_parser.y:309
|
||||||
{
|
{
|
||||||
yylex.(*parser).unexpected("grouping opts", "\",\" or \")\"")
|
yylex.(*parser).unexpected("grouping opts", "\",\" or \")\"")
|
||||||
}
|
}
|
||||||
case 56:
|
case 56:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line promql/generated_parser.y:317
|
//line promql/generated_parser.y:313
|
||||||
{
|
{
|
||||||
if !isLabel(yyDollar[1].item.Val) {
|
if !isLabel(yyDollar[1].item.Val) {
|
||||||
yylex.(*parser).unexpected("grouping opts", "label")
|
yylex.(*parser).unexpected("grouping opts", "label")
|
||||||
|
@ -1049,13 +1047,13 @@ yydefault:
|
||||||
}
|
}
|
||||||
case 57:
|
case 57:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line promql/generated_parser.y:324
|
//line promql/generated_parser.y:320
|
||||||
{
|
{
|
||||||
yylex.(*parser).unexpected("grouping opts", "label")
|
yylex.(*parser).unexpected("grouping opts", "label")
|
||||||
}
|
}
|
||||||
case 58:
|
case 58:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
//line promql/generated_parser.y:332
|
//line promql/generated_parser.y:328
|
||||||
{
|
{
|
||||||
fn, exist := getFunction(yyDollar[1].item.Val)
|
fn, exist := getFunction(yyDollar[1].item.Val)
|
||||||
if !exist {
|
if !exist {
|
||||||
|
@ -1068,50 +1066,50 @@ yydefault:
|
||||||
}
|
}
|
||||||
case 59:
|
case 59:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
//line promql/generated_parser.y:345
|
//line promql/generated_parser.y:341
|
||||||
{
|
{
|
||||||
yyVAL.node = yyDollar[2].node
|
yyVAL.node = yyDollar[2].node
|
||||||
}
|
}
|
||||||
case 60:
|
case 60:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
//line promql/generated_parser.y:347
|
//line promql/generated_parser.y:343
|
||||||
{
|
{
|
||||||
yyVAL.node = Expressions{}
|
yyVAL.node = Expressions{}
|
||||||
}
|
}
|
||||||
case 61:
|
case 61:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
//line promql/generated_parser.y:351
|
//line promql/generated_parser.y:347
|
||||||
{
|
{
|
||||||
yyVAL.node = append(yyDollar[1].node.(Expressions), yyDollar[3].node.(Expr))
|
yyVAL.node = append(yyDollar[1].node.(Expressions), yyDollar[3].node.(Expr))
|
||||||
}
|
}
|
||||||
case 62:
|
case 62:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line promql/generated_parser.y:353
|
//line promql/generated_parser.y:349
|
||||||
{
|
{
|
||||||
yyVAL.node = Expressions{yyDollar[1].node.(Expr)}
|
yyVAL.node = Expressions{yyDollar[1].node.(Expr)}
|
||||||
}
|
}
|
||||||
case 63:
|
case 63:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
//line promql/generated_parser.y:361
|
//line promql/generated_parser.y:357
|
||||||
{
|
{
|
||||||
yyVAL.node = &ParenExpr{Expr: yyDollar[2].node.(Expr)}
|
yyVAL.node = &ParenExpr{Expr: yyDollar[2].node.(Expr)}
|
||||||
}
|
}
|
||||||
case 64:
|
case 64:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
//line promql/generated_parser.y:369
|
//line promql/generated_parser.y:365
|
||||||
{
|
{
|
||||||
yylex.(*parser).addOffset(yyDollar[1].node, yyDollar[3].duration)
|
yylex.(*parser).addOffset(yyDollar[1].node, yyDollar[3].duration)
|
||||||
yyVAL.node = yyDollar[1].node
|
yyVAL.node = yyDollar[1].node
|
||||||
}
|
}
|
||||||
case 65:
|
case 65:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
//line promql/generated_parser.y:374
|
//line promql/generated_parser.y:370
|
||||||
{
|
{
|
||||||
yylex.(*parser).unexpected("offset", "duration")
|
yylex.(*parser).unexpected("offset", "duration")
|
||||||
}
|
}
|
||||||
case 66:
|
case 66:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
//line promql/generated_parser.y:382
|
//line promql/generated_parser.y:378
|
||||||
{
|
{
|
||||||
vs, ok := yyDollar[1].node.(*VectorSelector)
|
vs, ok := yyDollar[1].node.(*VectorSelector)
|
||||||
if !ok {
|
if !ok {
|
||||||
|
@ -1129,7 +1127,7 @@ yydefault:
|
||||||
}
|
}
|
||||||
case 67:
|
case 67:
|
||||||
yyDollar = yyS[yypt-6 : yypt+1]
|
yyDollar = yyS[yypt-6 : yypt+1]
|
||||||
//line promql/generated_parser.y:400
|
//line promql/generated_parser.y:396
|
||||||
{
|
{
|
||||||
yyVAL.node = &SubqueryExpr{
|
yyVAL.node = &SubqueryExpr{
|
||||||
Expr: yyDollar[1].node.(Expr),
|
Expr: yyDollar[1].node.(Expr),
|
||||||
|
@ -1139,31 +1137,31 @@ yydefault:
|
||||||
}
|
}
|
||||||
case 68:
|
case 68:
|
||||||
yyDollar = yyS[yypt-6 : yypt+1]
|
yyDollar = yyS[yypt-6 : yypt+1]
|
||||||
//line promql/generated_parser.y:408
|
//line promql/generated_parser.y:404
|
||||||
{
|
{
|
||||||
yylex.(*parser).unexpected("subquery selector", "\"]\"")
|
yylex.(*parser).unexpected("subquery selector", "\"]\"")
|
||||||
}
|
}
|
||||||
case 69:
|
case 69:
|
||||||
yyDollar = yyS[yypt-5 : yypt+1]
|
yyDollar = yyS[yypt-5 : yypt+1]
|
||||||
//line promql/generated_parser.y:410
|
//line promql/generated_parser.y:406
|
||||||
{
|
{
|
||||||
yylex.(*parser).unexpected("subquery selector", "duration or \"]\"")
|
yylex.(*parser).unexpected("subquery selector", "duration or \"]\"")
|
||||||
}
|
}
|
||||||
case 70:
|
case 70:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
//line promql/generated_parser.y:412
|
//line promql/generated_parser.y:408
|
||||||
{
|
{
|
||||||
yylex.(*parser).unexpected("subquery or range", "\":\" or \"]\"")
|
yylex.(*parser).unexpected("subquery or range", "\":\" or \"]\"")
|
||||||
}
|
}
|
||||||
case 71:
|
case 71:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
//line promql/generated_parser.y:414
|
//line promql/generated_parser.y:410
|
||||||
{
|
{
|
||||||
yylex.(*parser).unexpected("subquery selector", "duration")
|
yylex.(*parser).unexpected("subquery selector", "duration")
|
||||||
}
|
}
|
||||||
case 72:
|
case 72:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
//line promql/generated_parser.y:424
|
//line promql/generated_parser.y:420
|
||||||
{
|
{
|
||||||
if nl, ok := yyDollar[2].node.(*NumberLiteral); ok {
|
if nl, ok := yyDollar[2].node.(*NumberLiteral); ok {
|
||||||
if yyDollar[1].item.Typ == SUB {
|
if yyDollar[1].item.Typ == SUB {
|
||||||
|
@ -1176,164 +1174,164 @@ yydefault:
|
||||||
}
|
}
|
||||||
case 73:
|
case 73:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
//line promql/generated_parser.y:441
|
//line promql/generated_parser.y:437
|
||||||
{
|
{
|
||||||
yyVAL.node = yylex.(*parser).newVectorSelector(yyDollar[1].item.Val, yyDollar[2].matchers)
|
yyVAL.node = yylex.(*parser).newVectorSelector(yyDollar[1].item.Val, yyDollar[2].matchers)
|
||||||
}
|
}
|
||||||
case 74:
|
case 74:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line promql/generated_parser.y:443
|
//line promql/generated_parser.y:439
|
||||||
{
|
{
|
||||||
yyVAL.node = yylex.(*parser).newVectorSelector(yyDollar[1].item.Val, nil)
|
yyVAL.node = yylex.(*parser).newVectorSelector(yyDollar[1].item.Val, nil)
|
||||||
}
|
}
|
||||||
case 75:
|
case 75:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line promql/generated_parser.y:445
|
//line promql/generated_parser.y:441
|
||||||
{
|
{
|
||||||
yyVAL.node = yylex.(*parser).newVectorSelector("", yyDollar[1].matchers)
|
yyVAL.node = yylex.(*parser).newVectorSelector("", yyDollar[1].matchers)
|
||||||
}
|
}
|
||||||
case 76:
|
case 76:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
//line promql/generated_parser.y:449
|
//line promql/generated_parser.y:445
|
||||||
{
|
{
|
||||||
yyVAL.matchers = yyDollar[2].matchers
|
yyVAL.matchers = yyDollar[2].matchers
|
||||||
}
|
}
|
||||||
case 77:
|
case 77:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
//line promql/generated_parser.y:451
|
//line promql/generated_parser.y:447
|
||||||
{
|
{
|
||||||
yyVAL.matchers = yyDollar[2].matchers
|
yyVAL.matchers = yyDollar[2].matchers
|
||||||
}
|
}
|
||||||
case 78:
|
case 78:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
//line promql/generated_parser.y:453
|
//line promql/generated_parser.y:449
|
||||||
{
|
{
|
||||||
yyVAL.matchers = []*labels.Matcher{}
|
yyVAL.matchers = []*labels.Matcher{}
|
||||||
}
|
}
|
||||||
case 79:
|
case 79:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
//line promql/generated_parser.y:458
|
//line promql/generated_parser.y:454
|
||||||
{
|
{
|
||||||
yyVAL.matchers = append(yyDollar[1].matchers, yyDollar[3].matcher)
|
yyVAL.matchers = append(yyDollar[1].matchers, yyDollar[3].matcher)
|
||||||
}
|
}
|
||||||
case 80:
|
case 80:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line promql/generated_parser.y:460
|
//line promql/generated_parser.y:456
|
||||||
{
|
{
|
||||||
yyVAL.matchers = []*labels.Matcher{yyDollar[1].matcher}
|
yyVAL.matchers = []*labels.Matcher{yyDollar[1].matcher}
|
||||||
}
|
}
|
||||||
case 81:
|
case 81:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
//line promql/generated_parser.y:462
|
//line promql/generated_parser.y:458
|
||||||
{
|
{
|
||||||
yylex.(*parser).unexpected("label matching", "\",\" or \"}\"")
|
yylex.(*parser).unexpected("label matching", "\",\" or \"}\"")
|
||||||
}
|
}
|
||||||
case 82:
|
case 82:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
//line promql/generated_parser.y:466
|
//line promql/generated_parser.y:462
|
||||||
{
|
{
|
||||||
yyVAL.matcher = yylex.(*parser).newLabelMatcher(yyDollar[1].item, yyDollar[2].item, yyDollar[3].item)
|
yyVAL.matcher = yylex.(*parser).newLabelMatcher(yyDollar[1].item, yyDollar[2].item, yyDollar[3].item)
|
||||||
}
|
}
|
||||||
case 83:
|
case 83:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
//line promql/generated_parser.y:468
|
//line promql/generated_parser.y:464
|
||||||
{
|
{
|
||||||
yylex.(*parser).unexpected("label matching", "string")
|
yylex.(*parser).unexpected("label matching", "string")
|
||||||
}
|
}
|
||||||
case 84:
|
case 84:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
//line promql/generated_parser.y:470
|
//line promql/generated_parser.y:466
|
||||||
{
|
{
|
||||||
yylex.(*parser).unexpected("label matching", "label matching operator")
|
yylex.(*parser).unexpected("label matching", "label matching operator")
|
||||||
}
|
}
|
||||||
case 85:
|
case 85:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line promql/generated_parser.y:472
|
//line promql/generated_parser.y:468
|
||||||
{
|
{
|
||||||
yylex.(*parser).unexpected("label matching", "identifier or \"}\"")
|
yylex.(*parser).unexpected("label matching", "identifier or \"}\"")
|
||||||
}
|
}
|
||||||
case 86:
|
case 86:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
//line promql/generated_parser.y:480
|
//line promql/generated_parser.y:476
|
||||||
{
|
{
|
||||||
yyVAL.labels = append(yyDollar[2].labels, labels.Label{Name: labels.MetricName, Value: yyDollar[1].item.Val})
|
yyVAL.labels = append(yyDollar[2].labels, labels.Label{Name: labels.MetricName, Value: yyDollar[1].item.Val})
|
||||||
sort.Sort(yyVAL.labels)
|
sort.Sort(yyVAL.labels)
|
||||||
}
|
}
|
||||||
case 87:
|
case 87:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line promql/generated_parser.y:482
|
//line promql/generated_parser.y:478
|
||||||
{
|
{
|
||||||
yyVAL.labels = yyDollar[1].labels
|
yyVAL.labels = yyDollar[1].labels
|
||||||
}
|
}
|
||||||
case 90:
|
case 90:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
//line promql/generated_parser.y:489
|
//line promql/generated_parser.y:485
|
||||||
{
|
{
|
||||||
yyVAL.labels = labels.New(yyDollar[2].labels...)
|
yyVAL.labels = labels.New(yyDollar[2].labels...)
|
||||||
}
|
}
|
||||||
case 91:
|
case 91:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
//line promql/generated_parser.y:491
|
//line promql/generated_parser.y:487
|
||||||
{
|
{
|
||||||
yyVAL.labels = labels.New(yyDollar[2].labels...)
|
yyVAL.labels = labels.New(yyDollar[2].labels...)
|
||||||
}
|
}
|
||||||
case 92:
|
case 92:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
//line promql/generated_parser.y:493
|
//line promql/generated_parser.y:489
|
||||||
{
|
{
|
||||||
yyVAL.labels = labels.New()
|
yyVAL.labels = labels.New()
|
||||||
}
|
}
|
||||||
case 93:
|
case 93:
|
||||||
yyDollar = yyS[yypt-0 : yypt+1]
|
yyDollar = yyS[yypt-0 : yypt+1]
|
||||||
//line promql/generated_parser.y:495
|
//line promql/generated_parser.y:491
|
||||||
{
|
{
|
||||||
yyVAL.labels = labels.New()
|
yyVAL.labels = labels.New()
|
||||||
}
|
}
|
||||||
case 94:
|
case 94:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
//line promql/generated_parser.y:499
|
//line promql/generated_parser.y:495
|
||||||
{
|
{
|
||||||
yyVAL.labels = append(yyDollar[1].labels, yyDollar[3].label)
|
yyVAL.labels = append(yyDollar[1].labels, yyDollar[3].label)
|
||||||
}
|
}
|
||||||
case 95:
|
case 95:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line promql/generated_parser.y:501
|
//line promql/generated_parser.y:497
|
||||||
{
|
{
|
||||||
yyVAL.labels = []labels.Label{yyDollar[1].label}
|
yyVAL.labels = []labels.Label{yyDollar[1].label}
|
||||||
}
|
}
|
||||||
case 96:
|
case 96:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
//line promql/generated_parser.y:503
|
//line promql/generated_parser.y:499
|
||||||
{
|
{
|
||||||
yylex.(*parser).unexpected("label set", "\",\" or \"}\"")
|
yylex.(*parser).unexpected("label set", "\",\" or \"}\"")
|
||||||
}
|
}
|
||||||
case 97:
|
case 97:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
//line promql/generated_parser.y:508
|
//line promql/generated_parser.y:504
|
||||||
{
|
{
|
||||||
yyVAL.label = labels.Label{Name: yyDollar[1].item.Val, Value: yylex.(*parser).unquoteString(yyDollar[3].item.Val)}
|
yyVAL.label = labels.Label{Name: yyDollar[1].item.Val, Value: yylex.(*parser).unquoteString(yyDollar[3].item.Val)}
|
||||||
}
|
}
|
||||||
case 98:
|
case 98:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
//line promql/generated_parser.y:510
|
//line promql/generated_parser.y:506
|
||||||
{
|
{
|
||||||
yylex.(*parser).unexpected("label set", "string")
|
yylex.(*parser).unexpected("label set", "string")
|
||||||
}
|
}
|
||||||
case 99:
|
case 99:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
//line promql/generated_parser.y:512
|
//line promql/generated_parser.y:508
|
||||||
{
|
{
|
||||||
yylex.(*parser).unexpected("label set", "\"=\"")
|
yylex.(*parser).unexpected("label set", "\"=\"")
|
||||||
}
|
}
|
||||||
case 100:
|
case 100:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line promql/generated_parser.y:514
|
//line promql/generated_parser.y:510
|
||||||
{
|
{
|
||||||
yylex.(*parser).unexpected("label set", "identifier or \"}\"")
|
yylex.(*parser).unexpected("label set", "identifier or \"}\"")
|
||||||
}
|
}
|
||||||
case 101:
|
case 101:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
//line promql/generated_parser.y:522
|
//line promql/generated_parser.y:518
|
||||||
{
|
{
|
||||||
yylex.(*parser).generatedParserResult = &seriesDescription{
|
yylex.(*parser).generatedParserResult = &seriesDescription{
|
||||||
labels: yyDollar[1].labels,
|
labels: yyDollar[1].labels,
|
||||||
|
@ -1342,37 +1340,37 @@ yydefault:
|
||||||
}
|
}
|
||||||
case 102:
|
case 102:
|
||||||
yyDollar = yyS[yypt-0 : yypt+1]
|
yyDollar = yyS[yypt-0 : yypt+1]
|
||||||
//line promql/generated_parser.y:531
|
//line promql/generated_parser.y:527
|
||||||
{
|
{
|
||||||
yyVAL.series = []sequenceValue{}
|
yyVAL.series = []sequenceValue{}
|
||||||
}
|
}
|
||||||
case 103:
|
case 103:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
//line promql/generated_parser.y:533
|
//line promql/generated_parser.y:529
|
||||||
{
|
{
|
||||||
yyVAL.series = append(yyDollar[1].series, yyDollar[3].series...)
|
yyVAL.series = append(yyDollar[1].series, yyDollar[3].series...)
|
||||||
}
|
}
|
||||||
case 104:
|
case 104:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
//line promql/generated_parser.y:535
|
//line promql/generated_parser.y:531
|
||||||
{
|
{
|
||||||
yyVAL.series = yyDollar[1].series
|
yyVAL.series = yyDollar[1].series
|
||||||
}
|
}
|
||||||
case 105:
|
case 105:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line promql/generated_parser.y:537
|
//line promql/generated_parser.y:533
|
||||||
{
|
{
|
||||||
yylex.(*parser).unexpected("series values", "")
|
yylex.(*parser).unexpected("series values", "")
|
||||||
}
|
}
|
||||||
case 106:
|
case 106:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line promql/generated_parser.y:541
|
//line promql/generated_parser.y:537
|
||||||
{
|
{
|
||||||
yyVAL.series = []sequenceValue{{omitted: true}}
|
yyVAL.series = []sequenceValue{{omitted: true}}
|
||||||
}
|
}
|
||||||
case 107:
|
case 107:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
//line promql/generated_parser.y:543
|
//line promql/generated_parser.y:539
|
||||||
{
|
{
|
||||||
yyVAL.series = []sequenceValue{}
|
yyVAL.series = []sequenceValue{}
|
||||||
for i := uint64(0); i < yyDollar[3].uint; i++ {
|
for i := uint64(0); i < yyDollar[3].uint; i++ {
|
||||||
|
@ -1381,13 +1379,13 @@ yydefault:
|
||||||
}
|
}
|
||||||
case 108:
|
case 108:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line promql/generated_parser.y:550
|
//line promql/generated_parser.y:546
|
||||||
{
|
{
|
||||||
yyVAL.series = []sequenceValue{{value: yyDollar[1].float}}
|
yyVAL.series = []sequenceValue{{value: yyDollar[1].float}}
|
||||||
}
|
}
|
||||||
case 109:
|
case 109:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
//line promql/generated_parser.y:552
|
//line promql/generated_parser.y:548
|
||||||
{
|
{
|
||||||
yyVAL.series = []sequenceValue{}
|
yyVAL.series = []sequenceValue{}
|
||||||
for i := uint64(0); i <= yyDollar[3].uint; i++ {
|
for i := uint64(0); i <= yyDollar[3].uint; i++ {
|
||||||
|
@ -1396,7 +1394,7 @@ yydefault:
|
||||||
}
|
}
|
||||||
case 110:
|
case 110:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
//line promql/generated_parser.y:559
|
//line promql/generated_parser.y:555
|
||||||
{
|
{
|
||||||
yyVAL.series = []sequenceValue{}
|
yyVAL.series = []sequenceValue{}
|
||||||
for i := uint64(0); i <= yyDollar[4].uint; i++ {
|
for i := uint64(0); i <= yyDollar[4].uint; i++ {
|
||||||
|
@ -1406,7 +1404,7 @@ yydefault:
|
||||||
}
|
}
|
||||||
case 111:
|
case 111:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line promql/generated_parser.y:569
|
//line promql/generated_parser.y:565
|
||||||
{
|
{
|
||||||
if yyDollar[1].item.Val != "stale" {
|
if yyDollar[1].item.Val != "stale" {
|
||||||
yylex.(*parser).unexpected("series values", "number or \"stale\"")
|
yylex.(*parser).unexpected("series values", "number or \"stale\"")
|
||||||
|
@ -1415,31 +1413,31 @@ yydefault:
|
||||||
}
|
}
|
||||||
case 154:
|
case 154:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line promql/generated_parser.y:599
|
//line promql/generated_parser.y:595
|
||||||
{
|
{
|
||||||
yyVAL.node = &NumberLiteral{yyDollar[1].float}
|
yyVAL.node = &NumberLiteral{yyDollar[1].float}
|
||||||
}
|
}
|
||||||
case 155:
|
case 155:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line promql/generated_parser.y:601
|
//line promql/generated_parser.y:597
|
||||||
{
|
{
|
||||||
yyVAL.float = yylex.(*parser).number(yyDollar[1].item.Val)
|
yyVAL.float = yylex.(*parser).number(yyDollar[1].item.Val)
|
||||||
}
|
}
|
||||||
case 156:
|
case 156:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
//line promql/generated_parser.y:603
|
//line promql/generated_parser.y:599
|
||||||
{
|
{
|
||||||
yyVAL.float = yyDollar[2].float
|
yyVAL.float = yyDollar[2].float
|
||||||
}
|
}
|
||||||
case 157:
|
case 157:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
//line promql/generated_parser.y:604
|
//line promql/generated_parser.y:600
|
||||||
{
|
{
|
||||||
yyVAL.float = -yyDollar[2].float
|
yyVAL.float = -yyDollar[2].float
|
||||||
}
|
}
|
||||||
case 158:
|
case 158:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line promql/generated_parser.y:608
|
//line promql/generated_parser.y:604
|
||||||
{
|
{
|
||||||
var err error
|
var err error
|
||||||
yyVAL.uint, err = strconv.ParseUint(yyDollar[1].item.Val, 10, 64)
|
yyVAL.uint, err = strconv.ParseUint(yyDollar[1].item.Val, 10, 64)
|
||||||
|
@ -1449,7 +1447,7 @@ yydefault:
|
||||||
}
|
}
|
||||||
case 159:
|
case 159:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line promql/generated_parser.y:618
|
//line promql/generated_parser.y:614
|
||||||
{
|
{
|
||||||
var err error
|
var err error
|
||||||
yyVAL.duration, err = parseDuration(yyDollar[1].item.Val)
|
yyVAL.duration, err = parseDuration(yyDollar[1].item.Val)
|
||||||
|
@ -1459,25 +1457,25 @@ yydefault:
|
||||||
}
|
}
|
||||||
case 160:
|
case 160:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line promql/generated_parser.y:628
|
//line promql/generated_parser.y:624
|
||||||
{
|
{
|
||||||
yyVAL.node = &StringLiteral{yyDollar[1].string}
|
yyVAL.node = &StringLiteral{yyDollar[1].string}
|
||||||
}
|
}
|
||||||
case 161:
|
case 161:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line promql/generated_parser.y:630
|
//line promql/generated_parser.y:626
|
||||||
{
|
{
|
||||||
yyVAL.string = yylex.(*parser).unquoteString(yyDollar[1].item.Val)
|
yyVAL.string = yylex.(*parser).unquoteString(yyDollar[1].item.Val)
|
||||||
}
|
}
|
||||||
case 162:
|
case 162:
|
||||||
yyDollar = yyS[yypt-0 : yypt+1]
|
yyDollar = yyS[yypt-0 : yypt+1]
|
||||||
//line promql/generated_parser.y:637
|
//line promql/generated_parser.y:633
|
||||||
{
|
{
|
||||||
yyVAL.duration = 0
|
yyVAL.duration = 0
|
||||||
}
|
}
|
||||||
case 164:
|
case 164:
|
||||||
yyDollar = yyS[yypt-0 : yypt+1]
|
yyDollar = yyS[yypt-0 : yypt+1]
|
||||||
//line promql/generated_parser.y:641
|
//line promql/generated_parser.y:637
|
||||||
{
|
{
|
||||||
yyVAL.strings = nil
|
yyVAL.strings = nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -104,7 +104,38 @@ var testExpr = []struct {
|
||||||
expected: &BinaryExpr{LTE, &NumberLiteral{1}, &NumberLiteral{1}, nil, true},
|
expected: &BinaryExpr{LTE, &NumberLiteral{1}, &NumberLiteral{1}, nil, true},
|
||||||
}, {
|
}, {
|
||||||
input: "-1^2",
|
input: "-1^2",
|
||||||
expected: &BinaryExpr{POW, &NumberLiteral{-1}, &NumberLiteral{2}, nil, false},
|
expected: &UnaryExpr{
|
||||||
|
Op: SUB,
|
||||||
|
Expr: &BinaryExpr{
|
||||||
|
Op: POW,
|
||||||
|
LHS: &NumberLiteral{1},
|
||||||
|
RHS: &NumberLiteral{2},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}, {
|
||||||
|
input: "-1*2",
|
||||||
|
expected: &BinaryExpr{
|
||||||
|
Op: MUL,
|
||||||
|
LHS: &NumberLiteral{-1},
|
||||||
|
RHS: &NumberLiteral{2},
|
||||||
|
},
|
||||||
|
}, {
|
||||||
|
input: "-1+2",
|
||||||
|
expected: &BinaryExpr{
|
||||||
|
Op: ADD,
|
||||||
|
LHS: &NumberLiteral{-1},
|
||||||
|
RHS: &NumberLiteral{2},
|
||||||
|
},
|
||||||
|
}, {
|
||||||
|
input: "-1^-2",
|
||||||
|
expected: &UnaryExpr{
|
||||||
|
Op: SUB,
|
||||||
|
Expr: &BinaryExpr{
|
||||||
|
Op: POW,
|
||||||
|
LHS: &NumberLiteral{1},
|
||||||
|
RHS: &NumberLiteral{-2},
|
||||||
|
},
|
||||||
|
},
|
||||||
}, {
|
}, {
|
||||||
input: "+1 + -2 * 1",
|
input: "+1 + -2 * 1",
|
||||||
expected: &BinaryExpr{
|
expected: &BinaryExpr{
|
||||||
|
|
10
promql/testdata/operators.test
vendored
10
promql/testdata/operators.test
vendored
|
@ -35,6 +35,16 @@ eval instant at 50m - - - SUM(http_requests) BY (job)
|
||||||
eval instant at 50m - - - 1
|
eval instant at 50m - - - 1
|
||||||
-1
|
-1
|
||||||
|
|
||||||
|
eval instant at 50m -2^---1*3
|
||||||
|
-1.5
|
||||||
|
|
||||||
|
eval instant at 50m 2/-2^---1*3+2
|
||||||
|
-10
|
||||||
|
|
||||||
|
eval instant at 50m -10^3 * - SUM(http_requests) BY (job) ^ -1
|
||||||
|
{job="api-server"} 1
|
||||||
|
{job="app-server"} 0.38461538461538464
|
||||||
|
|
||||||
eval instant at 50m 1000 / SUM(http_requests) BY (job)
|
eval instant at 50m 1000 / SUM(http_requests) BY (job)
|
||||||
{job="api-server"} 1
|
{job="api-server"} 1
|
||||||
{job="app-server"} 0.38461538461538464
|
{job="app-server"} 0.38461538461538464
|
||||||
|
|
Loading…
Reference in a new issue