[ https://issues.apache.org/jira/browse/CALCITE-5703?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17723011#comment-17723011 ]
Dan Zou commented on CALCITE-5703: ---------------------------------- This is an interesting topic, and we have met similar problems in Flink (see in [1] and [2]). Remove redundant code such as redundant cast or null check may work in some cases, and Flink handle most of the cases by splitting methods(but this is not a panacea, we have encountered the problem of the split method itself being time-consuming in some corner cases). [1] https://issues.apache.org/jira/browse/FLINK-19363?jql=project%20%3D%20FLINK%20%20and%20summary%20~%20%2764%20KB%27%20ORDER%20BY%20created%20DESC [2] https://issues.apache.org/jira/browse/FLINK-23007 > Reduce amount of generated runtime code > --------------------------------------- > > Key: CALCITE-5703 > URL: https://issues.apache.org/jira/browse/CALCITE-5703 > Project: Calcite > Issue Type: Improvement > Components: core > Affects Versions: 1.34.0 > Reporter: Evgeny Stanilovsky > Assignee: Evgeny Stanilovsky > Priority: Major > Labels: patch-available > > In some cases runtime generates code like : > {noformat} > return case_when_value == null ? (String) null : some_oparation(); > or > return input_value == null ? (Long) null : Long.valueOf(...; > {noformat} > this redundant casting probably not harmful, but there is another side - > maximum method size, this size jdk[1], janino [2] throws : *Code grows beyond > 64 KB* . This PR reduces code generated by calcite runtime thus more huge > expressions can be executed. > [1] > https://github.com/openjdk/jdk/blob/d22bcc813eea719b817d3d541a843594675c0ca9/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassFile.java#L101 > [2] > https://github.com/janino-compiler/janino/blob/e69022f5aaabd36edc08a2074360d62514493a19/janino/src/main/java/org/codehaus/janino/CodeContext.java#L699 -- This message was sent by Atlassian Jira (v8.20.10#820010)