/** Gathers a list of all materialized tables known within a given root * schema. (Each root schema defines a disconnected namespace, with no overlap * with the current schema. Especially in a test run, the contents of two * root schemas may look similar.) */ public List<Prepare.Materialization> query(CalciteSchema rootSchema) { final List<Prepare.Materialization> list = new ArrayList<>(); for (MaterializationActor.Materialization materialization : actor.keyMap.values()) { if (materialization.rootSchema.schema == rootSchema.schema && materialization.materializedTable != null) { list.add( new Prepare.Materialization(materialization.materializedTable, materialization.sql, materialization.viewSchemaPath)); } } return list; }
/** Gathers a list of all materialized tables known within a given root * schema. (Each root schema defines a disconnected namespace, with no overlap * with the current schema. Especially in a test run, the contents of two * root schemas may look similar.) */ public List<Prepare.Materialization> query(CalciteSchema rootSchema) { final List<Prepare.Materialization> list = new ArrayList<>(); for (MaterializationActor.Materialization materialization : actor.keyMap.values()) { if (materialization.rootSchema.schema == rootSchema.schema && materialization.materializedTable != null) { list.add( new Prepare.Materialization(materialization.materializedTable, materialization.sql, materialization.viewSchemaPath)); } } return list; }
/** Converts a relational expression to use a * {@link StarTable} defined in {@code schema}. * Uses the first star table that fits. */ private void useStar(CalciteSchema schema, Materialization materialization) { for (Callback x : useStar(schema, materialization.queryRel)) { // Success -- we found a star table that matches. materialization.materialize(x.rel, x.starRelOptTable); if (CalcitePrepareImpl.DEBUG) { System.out.println("Materialization " + materialization.materializedTable + " matched star table " + x.starTable + "; query after re-write: " + RelOptUtil.toString(materialization.queryRel)); } } }
/** Converts a relational expression to use a * {@link StarTable} defined in {@code schema}. * Uses the first star table that fits. */ private void useStar(CalciteSchema schema, Materialization materialization) { for (Callback x : useStar(schema, materialization.queryRel)) { // Success -- we found a star table that matches. materialization.materialize(x.rel, x.starRelOptTable); if (CalcitePrepareImpl.DEBUG) { System.out.println("Materialization " + materialization.materializedTable + " matched star table " + x.starTable + "; query after re-write: " + RelOptUtil.toString(materialization.queryRel)); } } }
public void populateMaterializations(CalcitePrepare.Context context, QuarkMaterializeCluster.RelOptPlannerHolder holder) { MaterializePrepare prepare = new MaterializePrepare(holder); for (Prepare.Materialization materialization : materializations) { if (materialization.queryRel == null || materialization.tableRel == null) { prepare.populateMaterializations(context, materialization); } holder.getPlanner().addMaterialization( new RelOptMaterialization(materialization.tableRel, materialization.queryRel, materialization.getStarTableIdentified())); } }