JoshRosen opened a new pull request, #46337:
URL: https://github.com/apache/spark/pull/46337

   branch-3.4 pick of PR https://github.com/apache/spark/pull/46333 , fixing 
test issue due to difference in expected error message parameter formatting 
across branches; original description follows below:
   
   ---
   
   ### What changes were proposed in this pull request?
   
   While migrating the `NTile` expression's type check failures to the new 
error class framework, PR https://github.com/apache/spark/pull/38457 removed a 
pair of not-unnecessary `return` statements and thus caused certain branches' 
values to be discarded rather than returned.
   
   As a result, invalid usages like
   
   ```
   select ntile(99.9) OVER (order by id) from range(10)
   ```
   
   trigger internal errors like errors like
   
   ```
    java.lang.ClassCastException: class org.apache.spark.sql.types.Decimal 
cannot be cast to class java.lang.Integer (org.apache.spark.sql.types.Decimal 
is in unnamed module of loader 'app'; java.lang.Integer is in module java.base 
of loader 'bootstrap')
     at scala.runtime.BoxesRunTime.unboxToInt(BoxesRunTime.java:99)
     at 
org.apache.spark.sql.catalyst.expressions.NTile.checkInputDataTypes(windowExpressions.scala:877)
   ```
   
   instead of clear error framework errors like
   
   ```
   org.apache.spark.sql.catalyst.ExtendedAnalysisException: 
[DATATYPE_MISMATCH.UNEXPECTED_INPUT_TYPE] Cannot resolve "ntile(99.9)" due to 
data type mismatch: The first parameter requires the "INT" type, however "99.9" 
has the type "DECIMAL(3,1)". SQLSTATE: 42K09; line 1 pos 7;
   'Project [unresolvedalias(ntile(99.9) windowspecdefinition(id#0L ASC NULLS 
FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())))]
   +- Range (0, 10, step=1, splits=None)
   
     at 
org.apache.spark.sql.catalyst.analysis.package$AnalysisErrorAt.dataTypeMismatch(package.scala:73)
     at 
org.apache.spark.sql.catalyst.analysis.CheckAnalysis.$anonfun$checkAnalysis0$7(CheckAnalysis.scala:315)
   ```
   
   
   ### Why are the changes needed?
   
   Improve error messages.
   
   ### Does this PR introduce _any_ user-facing change?
   
   Yes, it improves an error message.
   
   ### How was this patch tested?
   
   Added a new test case to AnalysisErrorSuite.
   
   ### Was this patch authored or co-authored using generative AI tooling?
   
   No.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org
For additional commands, e-mail: reviews-h...@spark.apache.org

Reply via email to