AddTimeRange adds a time range to the given SelectNode's WHERE clause.
(n *SelectNode, tr *TimeRange)
| 736 | |
| 737 | // AddTimeRange adds a time range to the given SelectNode's WHERE clause. |
| 738 | func (a *AST) AddTimeRange(n *SelectNode, tr *TimeRange) error { |
| 739 | if tr == nil || tr.IsZero() || (a.MetricsView.TimeDimension == "" && tr.TimeDimension == "") { |
| 740 | return nil |
| 741 | } |
| 742 | |
| 743 | // Since resolving time ranges may require contextual info (like watermarks), the upstream caller is responsible for resolving them. |
| 744 | if tr.Start.IsZero() && tr.End.IsZero() { |
| 745 | panic("ast received a non-empty, unresolved time range") |
| 746 | } |
| 747 | |
| 748 | timeDimExpr, typeCode, err := a.getTimeDimensionExpression(tr) |
| 749 | if err != nil { |
| 750 | return err |
| 751 | } |
| 752 | |
| 753 | expr, args := a.sqlForTimeRange(timeDimExpr, typeCode, tr.Start, tr.End) |
| 754 | n.TimeWhere = &ExprNode{ |
| 755 | Expr: expr, |
| 756 | Args: args, |
| 757 | } |
| 758 | |
| 759 | return nil |
| 760 | } |
| 761 | |
| 762 | // AddMeasureField adds a measure field to the given SelectNode. |
| 763 | // Depending on the measure type, it may rewrite the SelectNode to accommodate the measure. |
no test coverage detected