GetAQL construct AQLQuery via read through SQL2AqlCtx
()
| 1613 | |
| 1614 | // GetAQL construct AQLQuery via read through SQL2AqlCtx |
| 1615 | func (v *ASTBuilder) GetAQL() *queryCom.AQLQuery { |
| 1616 | var ( |
| 1617 | table string |
| 1618 | joins []queryCom.Join |
| 1619 | ) |
| 1620 | |
| 1621 | if len(v.SQL2AqlCtx.MapQueryIdentifier) == 0 { |
| 1622 | // there is no subquery/withQuery in sql |
| 1623 | table = v.SQL2AqlCtx.MapJoinTables[0][0].Table |
| 1624 | |
| 1625 | if len(v.SQL2AqlCtx.MapJoinTables[0]) > 1 { |
| 1626 | joins = v.SQL2AqlCtx.MapJoinTables[0][1:] |
| 1627 | } |
| 1628 | |
| 1629 | v.aql = &queryCom.AQLQuery{ |
| 1630 | Table: table, |
| 1631 | Joins: joins, |
| 1632 | Measures: v.SQL2AqlCtx.MapMeasures[0], |
| 1633 | Dimensions: v.SQL2AqlCtx.MapDimensions[0], |
| 1634 | Filters: v.SQL2AqlCtx.MapRowFilters[0], |
| 1635 | TimeFilter: v.SQL2AqlCtx.timeFilter, |
| 1636 | Timezone: v.SQL2AqlCtx.timezone, |
| 1637 | Now: v.SQL2AqlCtx.timeNow, |
| 1638 | Limit: v.SQL2AqlCtx.MapLimit[0], |
| 1639 | Sorts: v.SQL2AqlCtx.MapOrderBy[0], |
| 1640 | } |
| 1641 | // remove measures that should be dimensions |
| 1642 | dimsMap := make(map[string]bool) |
| 1643 | for _, d := range v.aql.Dimensions { |
| 1644 | dimsMap[d.Expr] = true |
| 1645 | } |
| 1646 | measuresOld := v.aql.Measures |
| 1647 | v.aql.Measures = []queryCom.Measure{} |
| 1648 | for _, m := range measuresOld { |
| 1649 | if !dimsMap[m.Expr] { |
| 1650 | v.aql.Measures = append(v.aql.Measures, m) |
| 1651 | } |
| 1652 | } |
| 1653 | |
| 1654 | } else { |
| 1655 | v.aql = &queryCom.AQLQuery{ |
| 1656 | SupportingMeasures: make([]queryCom.Measure, 0, defaultSliceCap), |
| 1657 | SupportingDimensions: make([]queryCom.Dimension, 0, defaultSliceCap), |
| 1658 | } |
| 1659 | v.mergeWithOrSubQueries() |
| 1660 | } |
| 1661 | |
| 1662 | return v.aql |
| 1663 | } |
| 1664 | |
| 1665 | // GetTextIfPresent visits the node |
| 1666 | func (v *ASTBuilder) GetTextIfPresent(token antlr.Token) string { |
no test coverage detected