You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@spark.apache.org by "Anurag Mantripragada (Jira)" <ji...@apache.org> on 2026/10/08 02:05:00 UTC

[jira] [Created] (SPARK-60075) Avoid infinite recursion in toString of a V2 expression that V2ExpressionSQLBuilder does not know

Anurag Mantripragada created SPARK-60075:
--------------------------------------------

             Summary: Avoid infinite recursion in toString of a V2 expression that V2ExpressionSQLBuilder does not know
                 Key: SPARK-60075
                 URL: https://issues.apache.org/jira/browse/SPARK-60075
             Project: Spark
          Issue Type: Bug
          Components: SQL
    Affects Versions: 5.0.0
            Reporter: Anurag Mantripragada


V2ExpressionSQLBuilder.visitUnexpectedExpr builds its UNEXPECTED_V2_EXPRESSION error with String.valueOf(expr). For an ExpressionWithToString (for example a GeneralScalarExpression whose name the builder does not know, such as new GeneralScalarExpression("DATE_TRUNC", ...)), toString() calls ToStringSQLBuilder.build, which reaches visitUnexpectedExpr again, so toString() recurses until StackOverflowError instead of producing a string or a clean error.

Anything that prints such an expression is affected: describe(), log messages, error messages and explain output. SPARK-34586 (https://github.com/apache/spark/pull/58153) works around it for DESCRIBE TABLE EXTENDED of a declared write ordering.

visitUnexpectedExpr should describe the expression without calling its toString(), for example by its class name and the name of a GeneralScalarExpression.




--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@spark.apache.org
For additional commands, e-mail: issues-help@spark.apache.org