James Starr created CALCITE-4539:
------------------------------------

             Summary: Support pluggable metadata handlers and caching
                 Key: CALCITE-4539
                 URL: https://issues.apache.org/jira/browse/CALCITE-4539
             Project: Calcite
          Issue Type: Improvement
          Components: core
            Reporter: James Starr


Calcite janino backed metadata does not support all the functionality that the 
java reflection backed metadata system, such as customizing the cache to use 
soft refs or have a max size.  Furthermore, the janino backed metadata provider 
has many opinion that other are not universally shared, such as lazy loading, 
requiring all rels to registered to a global singleton, use of thread locals.  
There is no easy way to currently override these opinions.

Calcites metadata system should consist of 3 APIs: metadata consumer, metadata 
implementors, metadata behavior.  The metadata consumer need to able to fetch 
the appropriate metadata and invalidate the cache.  Currently this is all done 
through RelMetadataQuery with some very leaky abstractions.  Metadata 
implementors create functions that extract the metadata for particular node 
types.  These functions are registered via ReflectiveRelMetadataProvider and 
ChainedRelMetadataProvider.  Attempting to configure the internal behavior does 
not currently have an api.  Currently porptions of it a scattered through out 
various class and are frequently not extensible.  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to