JingsongLi commented on code in PR #999:
URL: https://github.com/apache/paimon-rust/pull/999#discussion_r4164983889


##########
bindings/python/src/error.rs:
##########
@@ -30,3 +44,31 @@ pub fn to_py_err(err: paimon::Error) -> PyErr {
 pub fn df_to_py_err(err: datafusion::error::DataFusionError) -> PyErr {
     PyValueError::new_err(err.to_string())

Review Comment:
   [P2] Preserve ForkSafetyError through the Python SQL entry point
   
   The new fork classification also needs to cover `df_to_py_err()`: 
`SQLContext.sql()` uses this mapper for both planning and collection, and 
DataFusion preserves the Paimon error inside `DataFusionError::External`. An 
inherited Jindo-backed SQL query therefore raises `ValueError` here, so callers 
handling `ForkSafetyError` cannot recognize the failure. I reproduced this by 
passing 
`DataFusionError::External(Box::new(paimon::Error::ProcessForkUnsupported { 
message: "fork is not supported".into() }))` to `df_to_py_err()`; the returned 
exception was `ValueError: External error: fork is not supported`, and the 
ForkSafetyError assertion failed. The two existing direct/wrapped `to_py_err()` 
tests passed. Please inspect the DataFusion error chain for the fork-specific 
cause before constructing the Python exception and add this conversion 
regression test.



-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to