[ https://issues.apache.org/jira/browse/ARROW-14725?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17476143#comment-17476143 ]
Krisztian Szucs commented on ARROW-14725: ----------------------------------------- Postponing to 8.0 since the PR is still in draft status. Feel free to move back if it is expected to land in 7.0 > [C++][Compute] Extract Expression simplification passes to an extensible > registry > --------------------------------------------------------------------------------- > > Key: ARROW-14725 > URL: https://issues.apache.org/jira/browse/ARROW-14725 > Project: Apache Arrow > Issue Type: Improvement > Components: C++ > Reporter: Ben Kietzman > Assignee: Ben Kietzman > Priority: Major > Labels: pull-request-available, query-engine > Fix For: 7.0.0 > > Time Spent: 20m > Remaining Estimate: 0h > > Currenly, SimplifyWithGuarantee makes a hard-coded set of passes over an > input expression. This not ideal for maintenance or extension of built-in > simplification passes. Furthermore, it renders optimization of non-built-in > function calls awkward or impossible. > Instead it would be preferable to provide an extensible registry of > optimization passes to clarify and regularize addition of new passes. > LLVM's extensive optimization framework can offer inspiration here: > https://llvm.org/docs/WritingAnLLVMPass.html#pass-classes-and-requirements > LLVM passes come with several levels of access and can declare invalidation > and pre-requirement relationships with other passes. > in the case of expression optimization in arrow, even a minimal registry of > passes will require at least two types of pass: one which operates given a > guarantee like a partition expression and one which operates independently. > I'm not sure if it makes sense to include cost based optimizations in this > registry (currently only rule based optimizations are provided), but I think > it's worth mentioning them here at least. -- This message was sent by Atlassian Jira (v8.20.1#820001)