@@ -552,21 +552,22 @@ type timeExprVisitor struct {
552552}
553553
554554func (tev timeExprVisitor ) Visit (node parser.Node , path []parser.Node ) (parser.Visitor , error ) {
555- checkTimeExpr := func (expr parser.Expr ) (float64 , error ) {
555+ evaluateTimeExpr := func (expr parser.Expr ) (float64 , error ) {
556556 if expr == nil {
557557 return 0 , nil
558558 }
559559
560+ if nl , ok := expr .(* parser.NumberLiteral ); ok {
561+ return nl .Val , nil
562+ }
563+
560564 hasStorageDependency , hasEvalTimeDependency := inspectTimeExpr (expr )
561565 if hasStorageDependency {
562566 return 0 , ErrTimeExprUsesStorage
563567 }
564568 if tev .inSubquery && hasEvalTimeDependency {
565569 return 0 , ErrTimeExprDependsOnEvalTime
566570 }
567- if nl , ok := expr .(* parser.NumberLiteral ); ok {
568- return nl .Val , nil
569- }
570571 val , err := tev .ev .scalarValueOf (expr )
571572 if err != nil {
572573 return 0 , err
@@ -577,15 +578,15 @@ func (tev timeExprVisitor) Visit(node parser.Node, path []parser.Node) (parser.V
577578
578579 switch e := node .(type ) {
579580 case * parser.VectorSelector :
580- v , err := checkTimeExpr (e .OriginalOffsetExpr )
581+ v , err := evaluateTimeExpr (e .OriginalOffsetExpr )
581582 if err != nil {
582583 * tev .err = err
583584 return tev , err
584585 }
585586 e .OriginalOffset = secondsValueToDuration (v )
586587 return tev , nil
587588 case * parser.SubqueryExpr :
588- v , err := checkTimeExpr (e .OriginalOffsetExpr )
589+ v , err := evaluateTimeExpr (e .OriginalOffsetExpr )
589590 if err != nil {
590591 * tev .err = err
591592 return tev , err
0 commit comments