Uploaded image for project: 'Spark'
  1. Spark
  2. SPARK-37448

Multiple optimizations related to CurrentOrigin.withOrigin

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: In Progress
    • Major
    • Resolution: Unresolved
    • 4.0.0
    • None
    • Optimizer

    Description

      This PR / Jira proposes multiple optimizations related to CurrentOrigin.withOrigin, including:

      Avoid CurrentOrigin.withOrigin calls in tree transformation methods when partial function isn't defined

      `CurrentOrigin.withOrigin { block }` performs a ThreadLocal.get() call to retrieve the current value of the `origin` thread local so it can be restored after `block` exits.

      TreeNode has transform methods which apply PartialFunctions to every node in the tree. By checking `rule.isDefinedAt` before applying a rule we can skip the `CurrentOrigin.withOrigin` call in cases where we know the partial function isn't defined. This avoids the performance overhead associated with thread-local reads and sets.

      Small optimizations to withOrigin itself to save a thread-local write.

      See PR for full details.

      Attachments

        Issue Links

          Activity

            People

              joshrosen Josh Rosen
              joshrosen Josh Rosen
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated: