Hi. I'm trying to use Calcite to optimize queries rewriting the queries to use materialized views.
First, I found the following doc page about materialization in Calcite website by googling but I coudn't find a link to it in Calcite's website. Anyway, it does not explain how to add materialized views to the schema. http://calcite.apache.org/docs/materialized_views I'm trying to follow how Cassandra Adapter does it. It uses de Hook.TRIMMED to be called to add the materialized views. Is that the recommended approach? I noticed that MaterializationService.instance() first tries to get an instance from a ThreadLocal field (THREAD_INSTANCE) and if it is null then uses the field instance (INSTANCE). The comments in the class says that ThreadLocal instance is supposed to be used for testing. However, THREAD_INSTANCE field is initialized with ThreadLocal.withInitial(MaterializationService::new), so it seems that it will never be null, making instance() method always return the THREAD_INSTANCE instance. The problem is that I'm running the statements in worker threads and sometimes the materialized view is used and sometimes not. I think the problem is that the materialization is not available when running in a different thread. Is that a bug? Any tips on how to add materialized views to an AbstractSchema? Regards, Luis Fernando
