You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "tivanli (JIRA)" <ji...@apache.org> on 2019/01/14 01:43:00 UTC

[jira] [Commented] (FLINK-8921) Split code generated call expression

    [ https://issues.apache.org/jira/browse/FLINK-8921?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16741704#comment-16741704 ] 

tivanli commented on FLINK-8921:
--------------------------------

I met the same problem.

I found "case when" statement, the execution plan is "or",  However, when using the "where" statement, the execution plan is "in".
h2.  *{color:#d04437}where{color} execution plan*
{code:java}
where: (IN(word, _UTF-16LE'43', _UTF-16LE'44', _UTF-16LE'45', _UTF-16LE'46', _UTF-16LE'47', _UTF-16LE'48', _UTF-16LE'49', _UTF-16LE'50', _UTF-16LE'gd1', _UTF-16LE'bj1', _UTF-16LE'sh1', _UTF-16LE'sc1', _UTF-16LE'hn1', _UTF-16LE'sd1', _UTF-16LE'js1', _UTF-16LE'hub1', _UTF-16LE'hb1', _UTF-16LE'zj1', _UTF-16LE'xb1', _UTF-16LE'db1', _UTF-16LE'fj1', _UTF-16LE'gd2', _UTF-16LE'sh2', _UTF-16LE'xn1', _UTF-16LE'db2', _UTF-16LE'hb2', _UTF-16LE'js2', _UTF-16LE'zj2', _UTF-16LE'gd3', _UTF-16LE'db3', _UTF-16LE'hub2', _UTF-16LE'hn2', _UTF-16LE'sc2', _UTF-16LE'hen1', _UTF-16LE'gx1', _UTF-16LE'jx1', _UTF-16LE'ah1', _UTF-16LE'ln1', _UTF-16LE'sx1', _UTF-16LE'shx1', _UTF-16LE'gz1', _UTF-16LE'bj2', _UTF-16LE'sh3', _UTF-16LE'sd2', _UTF-16LE'heb1', _UTF-16LE'cq1', _UTF-16LE'hlj1', _UTF-16LE'js3', _UTF-16LE'jl1', _UTF-16LE'hen2', _UTF-16LE'fj2', _UTF-16LE'gd4', _UTF-16LE'xb2', _UTF-16LE'hub3', _UTF-16LE'xn2', _UTF-16LE'hn3', _UTF-16LE'gd5', _UTF-16LE'js4', _UTF-16LE'hb3', _UTF-16LE'zj3', _UTF-16LE'sc3', _UTF-16LE'ah2', _UTF-16LE'jx2', _UTF-16LE'shx2', _UTF-16LE'gx2', _UTF-16LE'gd6', _UTF-16LE'hn4', _UTF-16LE'hub4', _UTF-16LE'sc4', _UTF-16LE'gd7', _UTF-16LE'cq2', _UTF-16LE'hn5', _UTF-16LE'hub5', _UTF-16LE'gd8', _UTF-16LE'sc5', _UTF-16LE'hn6', _UTF-16LE'gx3', _UTF-16LE'gd9', _UTF-16LE'xn3', _UTF-16LE'hub6', _UTF-16LE'gd10', _UTF-16LE'gd11', _UTF-16LE'sc6', _UTF-16LE'hub7', _UTF-16LE'hn7', _UTF-16LE'yn1', _UTF-16LE'gui1', _UTF-16LE'xj1', _UTF-16LE'yg1', _UTF-16LE'gd12', _UTF-16LE'hub8', _UTF-16LE'gx5', _UTF-16LE'gd13', _UTF-16LE'33', _UTF-16LE'34', _UTF-16LE'35', _UTF-16LE'ln2', _UTF-16LE'hlj2', _UTF-16LE'hen3', _UTF-16LE'sd3', _UTF-16LE'ln3', _UTF-16LE'heb2', _UTF-16LE'hen4', _UTF-16LE'bj3', _UTF-16LE'sd4', _UTF-16LE'hen5', _UTF-16LE'sd5', _UTF-16LE'js5', _UTF-16LE'fj3', _UTF-16LE'db4', _UTF-16LE'zj4', _UTF-16LE'hb4', _UTF-16LE'js6', _UTF-16LE'sh4', _UTF-16LE'sx2', _UTF-16LE'jx3', _UTF-16LE'hen6', _UTF-16LE'ah3', _UTF-16LE'sd6', _UTF-16LE'js8', _UTF-16LE'zj6', _UTF-16LE'heb4', _UTF-16LE'tj1', _UTF-16LE'nm1', _UTF-16LE'zj7', _UTF-16LE'heb5', _UTF-16LE'hen7'))
{code}
h2. 
{color:#d04437}*case when*{color} execution plan
{code:java}

select: (CASE(OR(=(word, _UTF-16LE'43'), =(word, _UTF-16LE'44'), =(word, _UTF-16LE'45'), =(word, _UTF-16LE'46'), =(word, _UTF-16LE'47'), =(word, _UTF-16LE'48'), =(word, _UTF-16LE'49'), =(word, _UTF-16LE'50'), =(word, _UTF-16LE'gd1'), =(word, _UTF-16LE'bj1'), =(word, _UTF-16LE'sh1'), =(word, _UTF-16LE'sc1'), =(word, _UTF-16LE'hn1'), =(word, _UTF-16LE'sd1'), =(word, _UTF-16LE'js1'), =(word, _UTF-16LE'hub1'), =(word, _UTF-16LE'hb1'), =(word, _UTF-16LE'zj1'), =(word, _UTF-16LE'xb1'), =(word, _UTF-16LE'db1'), =(word, _UTF-16LE'fj1'), =(word, _UTF-16LE'gd2'), =(word, _UTF-16LE'sh2'), =(word, _UTF-16LE'xn1'), =(word, _UTF-16LE'db2'), =(word, _UTF-16LE'hb2'), =(word, _UTF-16LE'js2'), =(word, _UTF-16LE'zj2'), =(word, _UTF-16LE'gd3'), =(word, _UTF-16LE'db3'), =(word, _UTF-16LE'hub2'), =(word, _UTF-16LE'hn2'), =(word, _UTF-16LE'sc2'), =(word, _UTF-16LE'hen1'), =(word, _UTF-16LE'gx1'), =(word, _UTF-16LE'jx1'), =(word, _UTF-16LE'ah1'), =(word, _UTF-16LE'ln1'), =(word, _UTF-16LE'sx1'), =(word, _UTF-16LE'shx1'), =(word, _UTF-16LE'gz1'), =(word, _UTF-16LE'bj2'), =(word, _UTF-16LE'sh3'), =(word, _UTF-16LE'sd2'), =(word, _UTF-16LE'heb1'), =(word, _UTF-16LE'cq1'), =(word, _UTF-16LE'hlj1'), =(word, _UTF-16LE'js3'), =(word, _UTF-16LE'jl1'), =(word, _UTF-16LE'hen2'), =(word, _UTF-16LE'fj2'), =(word, _UTF-16LE'gd4'), =(word, _UTF-16LE'xb2'), =(word, _UTF-16LE'hub3'), =(word, _UTF-16LE'xn2'), =(word, _UTF-16LE'hn3'), =(word, _UTF-16LE'gd5'), =(word, _UTF-16LE'js4'), =(word, _UTF-16LE'hb3'), =(word, _UTF-16LE'zj3'), =(word, _UTF-16LE'sc3'), =(word, _UTF-16LE'ah2'), =(word, _UTF-16LE'jx2'), =(word, _UTF-16LE'shx2'), =(word, _UTF-16LE'gx2'), =(word, _UTF-16LE'gd6'), =(word, _UTF-16LE'hn4'), =(word, _UTF-16LE'hub4'), =(word, _UTF-16LE'sc4'), =(word, _UTF-16LE'gd7'), =(word, _UTF-16LE'cq2'), =(word, _UTF-16LE'hn5'), =(word, _UTF-16LE'hub5'), =(word, _UTF-16LE'gd8'), =(word, _UTF-16LE'sc5'), =(word, _UTF-16LE'hn6'), =(word, _UTF-16LE'gx3'), =(word, _UTF-16LE'gd9'), =(word, _UTF-16LE'xn3'), =(word, _UTF-16LE'hub6'), =(word, _UTF-16LE'gd10'), =(word, _UTF-16LE'gd11'), =(word, _UTF-16LE'sc6'), =(word, _UTF-16LE'hub7'), =(word, _UTF-16LE'hn7'), =(word, _UTF-16LE'yn1'), =(word, _UTF-16LE'gui1'), =(word, _UTF-16LE'xj1'), =(word, _UTF-16LE'yg1'), =(word, _UTF-16LE'gd12'), =(word, _UTF-16LE'hub8'), =(word, _UTF-16LE'gx5'), =(word, _UTF-16LE'gd13'), =(word, _UTF-16LE'33'), =(word, _UTF-16LE'34'), =(word, _UTF-16LE'35'), =(word, _UTF-16LE'ln2'), =(word, _UTF-16LE'hlj2'), =(word, _UTF-16LE'hen3'), =(word, _UTF-16LE'sd3'), =(word, _UTF-16LE'ln3'), =(word, _UTF-16LE'heb2'), =(word, _UTF-16LE'hen4'), =(word, _UTF-16LE'bj3'), =(word, _UTF-16LE'sd4'), =(word, _UTF-16LE'hen5'), =(word, _UTF-16LE'sd5'), =(word, _UTF-16LE'js5'), =(word, _UTF-16LE'fj3'), =(word, _UTF-16LE'db4'), =(word, _UTF-16LE'zj4'), =(word, _UTF-16LE'hb4'), =(word, _UTF-16LE'js6'), =(word, _UTF-16LE'sh4'), =(word, _UTF-16LE'sx2'), =(word, _UTF-16LE'jx3'), =(word, _UTF-16LE'hen6'), =(word, _UTF-16LE'ah3'), =(word, _UTF-16LE'sd6'), =(word, _UTF-16LE'js8'), =(word, _UTF-16LE'zj6'), =(word, _UTF-16LE'heb4'), =(word, _UTF-16LE'tj1'), =(word, _UTF-16LE'nm1'), =(word, _UTF-16LE'zj7'), =(word, _UTF-16LE'heb5'), =(word, _UTF-16LE'hen7')), _UTF-16LE'1', _UTF-16LE'2') AS wordType)
{code}
 

> Split code generated call expression 
> -------------------------------------
>
>                 Key: FLINK-8921
>                 URL: https://issues.apache.org/jira/browse/FLINK-8921
>             Project: Flink
>          Issue Type: Improvement
>          Components: Table API &amp; SQL
>            Reporter: Timo Walther
>            Assignee: xueyu
>            Priority: Major
>              Labels: pull-request-available
>
> In FLINK-8274 we introduced the possibility of splitting the generated code into multiple methods in order to exceed the JVMs maximum method size (see also https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.9).
> At the moment we only split methods by fields, however, this is not enough in all case. We should also split expressions. I suggest to split the operands of a {{RexCall}} in {{org.apache.flink.table.codegen.CodeGenerator#visitCall}} if we reach a certain threshold. However, this should happen as lazily as possible to keep the runtime overhead low.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)