Skip to content

[CH]Optimize nested function calls #8557

@KevinyhZou

Description

@KevinyhZou

Description

In our online sqls, there are many nested functions calls, such as

  • select a.b.c from test_tbl => select get_struct_field((get_struct_field(a, b),c) from test_tbl
  • select count(1) from test_tbl where a = 1 and b = 2 and c = 3 => select count(1) from test_tbl where and(and(a = 1, b = 2), c = 3 )
  • select count(1) from test_tbl where a = 1 or b = 2 or c = 3 => select count(1) from test_tbl where or(or(a = 1, b = 2), c = 3 )
    .....

and these functions can be optimized by make the nested arguments collapsed , which means
get_struct_field((get_struct_field(a, b),c) => get_struct_field(a, b, c)
and(and(a = 1, b = 2), c = 3 ) => and(a =1, b=2, c=3)
or(or(a=1, b= 2), c=3) => or(a=1, b=2, c=3)
get_json_object(get_json_object(a, '$.b'), '$.c') => get_json_object(a, '$.b', '$.c')
.....

which can reduce the function calls and improve performance.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions