@Override public PhysicalTableSchema getSchema() { return getSourceTable().getSchema(); }
@Override public String getName() { return getSourceTable().getName(); }
/** * Create a constrained copy of the source table. * * @param constraint The dataSourceConstraint which narrows the view of the underlying availability * * @return a constrained table whose availability and serialization are narrowed by this constraint */ @Override public ConstrainedTable withConstraint(DataSourceConstraint constraint) { return getSourceTable().withConstraint(constraint); } }
@Override public String getPhysicalColumnName(String logicalName) { return getSourceTable().getPhysicalColumnName(logicalName); }
@Override public TableName getTableName() { return getSourceTable().getTableName(); }
@Override public DateTime getTableAlignment() { return getSourceTable().getTableAlignment(); }
@Override public void query(Dimension dimension, DataSource dataSource) { SuccessCallback successCallback = buildSuccessCallback(dimension); SqlPhysicalTable sqlTable = (SqlPhysicalTable) dataSource.getPhysicalTable().getSourceTable(); GroupByQuery groupByQuery = new GroupByQuery( dataSource, AllGranularity.INSTANCE, Collections.singletonList(dimension), null, null, Collections.emptyList(), Collections.emptyList(), Collections.singletonList(INTERVAL), new LimitSpec(Utils.asLinkedHashSet(), OptionalInt.of(ROW_LIMIT)) ); sqlBackedClient.executeQuery(groupByQuery, successCallback, failureCallback); }
/** * Return a view of the available intervals for the original source table given a constraint. * * @param constraint The constraint which limits available intervals * * @return The intervals that the table can report on */ @Override public SimplifiedIntervalList getAvailableIntervals(DataSourceConstraint constraint) { if (getConstraint().equals(constraint)) { return getAvailableIntervals(); } return getSourceTable().getAvailableIntervals(constraint); }
/** * Return the {@link TableName} of the dataSources which back the original source table given a constraint. * * @param constraint A constraint which may narrow the data sources participating. * * @return A set of tablenames for backing dataSources */ @Override public Set<DataSourceName> getDataSourceNames(DataSourceConstraint constraint) { if (getConstraint().equals(constraint)) { return getDataSourceNames(); } return getSourceTable().getDataSourceNames(constraint); }
/** * Builds the druid query as sql and returns it as a string. * * @param druidQuery The query to convert to sql. * @param apiToFieldMapper The mapping between api and physical names for the query. * * @return the sql equivalent of the query. */ public String buildSqlQuery(DruidAggregationQuery<?> druidQuery, ApiToFieldMapper apiToFieldMapper) { SqlPhysicalTable sqlTable = (SqlPhysicalTable) druidQuery.getDataSource() .getPhysicalTable() .getSourceTable(); LOG.debug( "Querying table {} with schema {} using timestampColumn {}", sqlTable.getName(), sqlTable.getSchemaName(), sqlTable.getTimestampColumn() ); RelNode query = convertDruidQueryToRelNode(druidQuery, apiToFieldMapper, sqlTable); RelToSqlConverter relToSql = calciteHelper.getNewRelToSqlConverter(); SqlPrettyWriter sqlWriter = calciteHelper.getNewSqlWriter(); return writeSql(sqlWriter, relToSql, query); }
boolean isSqlBacked = druidQuery.getDataSource() .getPhysicalTable() .getSourceTable() instanceof SqlPhysicalTable;