/** * Determines whether or not a query is able to be processed using * the Sql backend. * * @param druidQuery The query to check if is able to be processed. * * @return true if a valid query, else false. */ protected boolean isValidQuery(DruidQuery<?> druidQuery) { QueryType queryType = druidQuery.getQueryType(); LOG.debug("Processing {} query\n {}", queryType, druidQuery); if (queryType instanceof DefaultQueryType) { DefaultQueryType defaultQueryType = (DefaultQueryType) queryType; switch (defaultQueryType) { case TIMESERIES: case GROUP_BY: return true; } } return false; }
/** * If this query is nestable, and has a nested query return it. * * @return the nested query or empty if there is no nested query */ @JsonIgnore default Optional<? extends DruidQuery> getInnerQuery() { return getDataSource().getQuery(); }
/** * If this structure is part of a query stack, return the lowest element. * * @return Return the most nested inner query OR the object itself if it has no children */ @JsonIgnore default DruidQuery<?> getInnermostQuery() { return getInnerQuery().isPresent() ? getInnerQuery().get().getInnermostQuery() : this; }
REGISTRY.meter("request.logical.table." + table.getName() + "." + table.getGranularity()).mark(); RequestLog.record(new BardQueryInfo(druidQuery.getQueryType().toJson())); RequestLog.record( new DataRequest( metrics, dimensions, druidQuery.getDataSource().getNames(), readCache, request.getFormat().toString()
@Override @JsonIgnore default Optional<? extends DruidFactQuery> getInnerQuery() { return (Optional<? extends DruidFactQuery>) DruidQuery.super.getInnerQuery(); }
@Override @JsonIgnore default DruidFactQuery<?> getInnermostQuery() { return (DruidFactQuery<?>) DruidQuery.super.getInnermostQuery(); } }
DruidQuery<?> druidQuery ) { long seqNum = druidQuery.getContext().getSequenceNumber(); String entityBody; RequestLog.startTiming("DruidQuerySerializationSeq" + seqNum); long totalQueries = druidQuery.getContext().getNumberOfQueries(); String format = String.format("%%0%dd", String.valueOf(totalQueries).length()); String timerName;
/** * JSON tree walk to determine if there is a nested query below the current json node or not. * * @param gen the Json Generator to retrieve the tree to walk on. * * @return a Boolean where true indicates there are more nested query below this node, false otherwise */ public static Boolean hasInnerQuery(JsonGenerator gen) { return mapNearestDruidQuery(gen, druidQuery -> druidQuery.getInnerQuery().isPresent()).orElse(false); }
if (lastQuery.getQueryType() instanceof DefaultQueryType) { DefaultQueryType defaultQueryType = (DefaultQueryType) lastQuery.getQueryType(); switch (defaultQueryType) { case GROUP_BY: break; default: throw new IllegalArgumentException("Illegal query type : " + lastQuery.getQueryType());
/** * JSON tree walk up to physical table to retrieve physical name for a dimension. * * @param value the dimension to retrieve api name. * @param gen the Json Generator to retrieve the tree to walk on. * * @return an Optional String of physical name */ public static Optional<String> findPhysicalName(Dimension value, JsonGenerator gen) { String apiName = value.getApiName(); // Search for physical name return mapNearestDruidQuery( gen, druidQuery -> druidQuery.getDataSource().getPhysicalTable().getPhysicalColumnName(apiName) ); }
if (lastQuery.getQueryType() instanceof DefaultQueryType) { DefaultQueryType defaultQueryType = (DefaultQueryType) lastQuery.getQueryType(); switch (defaultQueryType) { case GROUP_BY: break; default: throw new IllegalArgumentException("Illegal query type : " + lastQuery.getQueryType());