[
https://issues.apache.org/jira/browse/CALCITE-1742?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Maryann Xue updated CALCITE-1742:
---------------------------------
Description:
{{CalciteSchema}} is designed to have two sets of objects, the explicit and the
implicit. A explicit object means an object we add through explicit
{{CalciteSchema#addTable}} (or {{CalciteSchema.addFunction}}, etc) calls, while
an implicit object means an object we get from the underlying {{Schema}}
object's getXXX methods.
However, in {{CalciteCatalogReader#getTableFrom}}, after a table is resolved
through {{CalciteSchema.getTable}} method, it will be added to the
{{CalciteSchema}} again as an explicit object regardless of whether it is
originally implicit or explicit. So if it happens to be an implicit table, any
change about that table later on will be shadowed by the newly added explicit
object and thus cannot be accessed.
was:We have two implementations of CalciteSchema, {{CachingCalciteSchema}}
and {{SimpleCalciteSchema}}. There is still caching in the parent class
{{CalciteSchema}}, though, that causes objects to be cached even if caching is
not enabled (as in {{SimpleCalciteSchema}}).
> CalciteCatalogReader should not add resolved tables into CalciteSchema's
> explicit table map
> -------------------------------------------------------------------------------------------
>
> Key: CALCITE-1742
> URL: https://issues.apache.org/jira/browse/CALCITE-1742
> Project: Calcite
> Issue Type: Bug
> Components: core
> Affects Versions: 1.12.0
> Reporter: Maryann Xue
> Assignee: Maryann Xue
>
> {{CalciteSchema}} is designed to have two sets of objects, the explicit and
> the implicit. A explicit object means an object we add through explicit
> {{CalciteSchema#addTable}} (or {{CalciteSchema.addFunction}}, etc) calls,
> while an implicit object means an object we get from the underlying
> {{Schema}} object's getXXX methods.
>
> However, in {{CalciteCatalogReader#getTableFrom}}, after a table is resolved
> through {{CalciteSchema.getTable}} method, it will be added to the
> {{CalciteSchema}} again as an explicit object regardless of whether it is
> originally implicit or explicit. So if it happens to be an implicit table,
> any change about that table later on will be shadowed by the newly added
> explicit object and thus cannot be accessed.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)