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

Reply via email to