In Quark, dont use hooks to define materializations. We use a tablefactory [1] to defer until the schema is loaded[2].
1. https://github.com/qubole/quark/blob/master/optimizer/src/main/java/com/qubole/quark/planner/MetadataSchema.java#L85 2. https://github.com/apache/calcite/blob/master/core/src/main/java/org/apache/calcite/materialize/MaterializationService.java#L132 Hopefully, I've understood your problem correctly. On Thu, Feb 25, 2016 at 10:16 PM Maryann Xue <maryann....@gmail.com> wrote: > Hi Michael, > > We had a little difficulty defining our secondary indices as materialized > views with our Schema SPI implementation too, and this made the code pretty > hacky. In order to call that defineMaterialization method, we hold the > parent SchemaPlus object within our own Schema impl object so that we can > get its own corresponding SchemaPlus object by calling "parentSchema > .getSubSchema(this.name)" later on. We do this after the schema/table > resolving phase (that is when the entire schema tree incl. your own schema > objects have been initiated) and call defineMaterialization for each > secondary index under each subSchema. We add a hook in "Hook.TRIMMED" for > this, which sounds pretty weird, but this is exactly a point after you have > the whole schema tree ready and before the materializations are asked for > by the planner. > > Anyway, I do hope the interface can be modified to avoid all this trouble. > > > Thanks, > Maryann > > On Thu, Feb 25, 2016 at 9:24 AM, Michael Mior <mm...@uwaterloo.ca> wrote: > > > Any suggestions on the best place to hook in and add the materialized > > views? It seems like doing so requires the SchemaPlus object > corresponding > > to the current schema. The current best approach I see is to save a > > reference to the parent schema and then pull out the appropriate > SchemaPlus > > object in getTableMap. This seems like a bit of a hack though. > > > > -- > > Michael Mior > > mm...@uwaterloo.ca > > > > 2016-02-24 17:22 GMT-05:00 Julian Hyde <jh...@apache.org>: > > > > > By the way, interesting that you are interested in Cassandra and > > > materialized views. Cassandra announced materialized view support > > > recently[1] but they solved only half of a problem (not an > > > insignificant half, I hasten to add), namely materialized view > > > maintenance. They don't transparently substitute them into the query - > > > you have to reference the materialized view explicitly in y our query > > > - so in my book they've not delivered materialized view support. If > > > you're planning to deliver REAL materialized view support to Cassandra > > > that would be awesome. > > > > > > Julian > > > > > > [1] > > > > http://www.datastax.com/dev/blog/new-in-cassandra-3-0-materialized-views > > > > > > > > > On Wed, Feb 24, 2016 at 2:17 PM, Julian Hyde <jh...@apache.org> wrote: > > > > As is typical for complex pieces of code like this, the documentation > > > > is in the code (and the unit test). It's probably not what you wanted > > > > to hear, but the code mutates quite fast and so if we'd written a > > > > design doc a few months ago it would be partially inaccurate. > > > > > > > > I, Maryann Xue and Amogh Margoor are the main authors of this code. > > > > > > > > Suggest you find a relevant test case in MaterializationTest (or > write > > > > a new one) and run it with trace enabled and/or in a debugger. You > > > > will see the process of matching an expression to a MV bottom up if > > > > you watch each call to UnifyRule.unify. > > > > > > > > Julian > > > > > > > > > > > > On Wed, Feb 24, 2016 at 1:40 PM, Michael Mior <mm...@uwaterloo.ca> > > > wrote: > > > >> Is there any documentation anywhere on how the current > implementation > > of > > > >> query rewriting for materialized views work? Mostly I'm referring > > > >> to MaterializedViewSubstitutionVisitor. There's a lot of code to > > digest > > > >> with not a lot of documentation and it would be helpful to have a > > > reference > > > >> to refer. Thanks! > > > >> > > > >> Cheers, > > > >> -- > > > >> Michael Mior > > > >> mm...@uwaterloo.ca > > > > > >