[ 
https://issues.apache.org/jira/browse/CALCITE-3932?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=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)

Reply via email to