[
https://issues.apache.org/jira/browse/CALCITE-3932?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17091057#comment-17091057
]
Julian Hyde edited comment on CALCITE-3932 at 4/24/20, 12:39 AM:
-
I agree, won't-fix is the right remedy here.
I wonder whether we should reconsider (as a different Jira case) our interning
of types. Change from MUST intern to SHOULD intern, and always compare types
using {{equals}}.
We clearly want to do *some* interning, especially within a query, so that
there aren't hundreds of copies of the same record type all over the place. But
if people don't intern, or intern in different query-specific caches, then the
logic will still work.
If {{equals}} is written using the standard template
{code:java}
return this == o
|| o instanceof TheType && field1 == o.field1 && field2 == o.field2 {code}
(that is, avoiding deep comparison if possible) then the performance will be
pretty much the same.
was (Author: julianhyde):
I agree, won't-fix is the right remedy here.
I wonder whether we should reconsider (as a different Jira case) our interning
of types. Change from MUST intern to SHOULD intern, and always compare types
using {{equals}}.
We clearly want to do *some* interning, especially within a query, so that
there aren't hundreds of copies of the same record type all over the place. But
if people don't intern, or intern in different query-specific caches, then the
logic will still work.
If {{equals}} is written using the standard template
{code:java}
return this == o
|| o instanceof TheType && field1 == o.field1 and field2 == o.field2 {code}
(that is, avoiding deep comparison if possible) then the performance will be
pretty much the same.
> Make data type cache thread local, non-evictable
>
>
> Key: CALCITE-3932
> URL: https://issues.apache.org/jira/browse/CALCITE-3932
> Project: Calcite
> Issue Type: Improvement
> Components: core
>Reporter: Haisheng Yuan
>Priority: Major
> Fix For: 1.23.0
>
> Time Spent: 20m
> Remaining Estimate: 0h
>
> Data type can be evicted out of cache, which is global, thread-safe.
> It seems not necessary to cache them globally, because most of them are
> RelRecordType, which is query dependent, not sharable between different
> queries.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)