Re: Why should invalidate all of the caches of HANDLERS when adding a new RelNode class in JaninoRelMetadataProvider.revise() method?

2022-01-16 Thread Jinpeng Wu
Hi, James. Thanks very much for your kind reply. Actually I am not worrying about the polymorphic calls. And I know that cascading simple if statements works well in some scenarios. I was just wondering whether a bunch of instance-of would be much slower than simple comparisons of integers. Let al

Re: Why should invalidate all of the caches of HANDLERS when adding a new RelNode class in JaninoRelMetadataProvider.revise() method?

2022-01-16 Thread James Starr
Cascading if statements such as the ones generated, are generally faster than polymorphic calls in java. Do you worry about polymorphic calls to rel nodes? The map look up is at least a magnitudes more expensive than the dispatch. The key generation for the map look was also a magnitude more expe

Re: Why should invalidate all of the caches of HANDLERS when adding a new RelNode class in JaninoRelMetadataProvider.revise() method?

2022-01-16 Thread Jinpeng Wu
Hi, James. I just noticed the change. And I have a little concern about it. The original implementation uses a switch-case against the class id (an integer). So it has to regenerate the handler after a new relnode type arrives. It could be bad for some adhoc optimization processes. But it is frie

Re: Why should invalidate all of the caches of HANDLERS when adding a new RelNode class in JaninoRelMetadataProvider.revise() method?

2022-01-16 Thread guangyuan wang
Thank you very much for your answer. James Starr 于2022年1月17日周一 09:09写道: > That is old code. The generated code depends on knowing all types of rel > node, so all the code must be regenerated after discovering a new type or > rel node. Apache calcite main does not have this requirement. > > Jam

Re: Why should invalidate all of the caches of HANDLERS when adding a new RelNode class in JaninoRelMetadataProvider.revise() method?

2022-01-16 Thread James Starr
That is old code. The generated code depends on knowing all types of rel node, so all the code must be regenerated after discovering a new type or rel node. Apache calcite main does not have this requirement. James On Sun, Jan 16, 2022 at 4:35 PM guangyuan wang wrote: > Yes, I can. > Here is

Re: Why should invalidate all of the caches of HANDLERS when adding a new RelNode class in JaninoRelMetadataProvider.revise() method?

2022-01-16 Thread guangyuan wang
Yes, I can. Here is the link: https://github.com/apache/calcite/blob/7655bd735f10de5be1eca8bb9af475b3b2ac63b6/core/src/main/java/org/apache/calcite/rel/metadata/JaninoRelMetadataProvider.java#L481 Jacques Nadeau 于2022年1月17日周一 03:09写道: > Can you please provide a url link to the line of code you a

Basic query execution question: RelRunner fails due to SchemaPlusImpl#snapshot throwing "UnsupportedOperation"

2022-01-16 Thread Gavin Ray
I hate to bother with such a small question but I feel like I've hit a wall after spending most of yesterday on it. I get this when trying to execute a RelNode expression as a query, it seems to be because the "SchemaPlusImpl" throws "UnsupportedException" for the "snapshot" function. https://git

Re: Why should invalidate all of the caches of HANDLERS when adding a new RelNode class in JaninoRelMetadataProvider.revise() method?

2022-01-16 Thread Jacques Nadeau
Can you please provide a url link to the line of code you are referring to in github? On Sat, Jan 15, 2022, 5:52 PM guangyuan wang wrote: > Thank you very much for your answer. > I'm reading source code these days, I'm a little confused about the " > JaninoRelMetadataProvider.revise()" method. >