@@ -268,14 +268,15 @@ private[client] object GrpcExceptionConverter {
268268 errorClass = getErrorClassOrFallback(params),
269269 messageParameters = errorParamsToMessageParameters(params),
270270 queryContext = params.queryContext)),
271- errorConstructor(params =>
271+ errorConstructor(params => {
272+ val updatedParams = getParamsWithLegacyErrorClass(params, " _LEGACY_ERROR_TEMP_3100" )
272273 new AnalysisException (
273- message = params.message ,
274- cause = params.cause ,
275- errorClass = resolveParams(params).errorClass ,
276- messageParameters = errorParamsToMessageParameters(params) ,
277- context = params.queryContext,
278- sqlState = getSqlStateOrFallback(params)) ),
274+ errorClass = updatedParams.errorClass.get ,
275+ messageParameters = updatedParams.messageParameters ,
276+ cause = updatedParams.cause ,
277+ context = updatedParams.queryContext ,
278+ sqlState = getSqlStateOrFallback(updatedParams))
279+ } ),
279280 errorConstructor(params =>
280281 new NamespaceAlreadyExistsException (
281282 getErrorClassOrFallback(params),
@@ -304,45 +305,57 @@ private[client] object GrpcExceptionConverter {
304305 getErrorClassOrFallback(params),
305306 errorParamsToMessageParameters(params),
306307 params.cause)),
307- errorConstructor[NumberFormatException ](params =>
308+ errorConstructor[NumberFormatException ](params => {
309+ val updatedParams = getParamsWithLegacyErrorClass(params, " _LEGACY_ERROR_TEMP_3104" )
308310 new SparkNumberFormatException (
309- errorClass = params.errorClass.getOrElse(" _LEGACY_ERROR_TEMP_3104" ),
310- messageParameters = errorParamsToMessageParameters(params),
311- params.queryContext,
312- getSqlStateOrFallback(params))),
313- errorConstructor[IllegalArgumentException ](params =>
311+ errorClass = updatedParams.errorClass.get,
312+ messageParameters = updatedParams.messageParameters,
313+ updatedParams.queryContext,
314+ getSqlStateOrFallback(updatedParams))
315+ }),
316+ errorConstructor[IllegalArgumentException ](params => {
317+ val updatedParams = getParamsWithLegacyErrorClass(params, " _LEGACY_ERROR_TEMP_3105" )
314318 new SparkIllegalArgumentException (
315- errorClass = params .errorClass.getOrElse( " _LEGACY_ERROR_TEMP_3105 " ) ,
316- messageParameters = errorParamsToMessageParameters(params) ,
317- params .queryContext,
319+ errorClass = updatedParams .errorClass.get ,
320+ messageParameters = updatedParams.messageParameters ,
321+ updatedParams .queryContext,
318322 summary = " " ,
319- cause = params.cause.orNull,
320- getSqlStateOrFallback(params))),
321- errorConstructor[ArithmeticException ](params =>
323+ cause = updatedParams.cause.orNull,
324+ getSqlStateOrFallback(updatedParams))
325+ }),
326+ errorConstructor[ArithmeticException ](params => {
327+ val updatedParams = getParamsWithLegacyErrorClass(params, " _LEGACY_ERROR_TEMP_3106" )
322328 new SparkArithmeticException (
323- errorClass = params.errorClass.getOrElse(" _LEGACY_ERROR_TEMP_3106" ),
324- messageParameters = errorParamsToMessageParameters(params),
325- params.queryContext,
326- getSqlStateOrFallback(params))),
327- errorConstructor[UnsupportedOperationException ](params =>
329+ errorClass = updatedParams.errorClass.get,
330+ messageParameters = updatedParams.messageParameters,
331+ updatedParams.queryContext,
332+ getSqlStateOrFallback(updatedParams))
333+ }),
334+ errorConstructor[UnsupportedOperationException ](params => {
335+ val updatedParams = getParamsWithLegacyErrorClass(params, " _LEGACY_ERROR_TEMP_3107" )
328336 new SparkUnsupportedOperationException (
329- errorClass = params.errorClass.getOrElse(" _LEGACY_ERROR_TEMP_3107" ),
330- messageParameters = errorParamsToMessageParameters(params),
331- getSqlStateOrFallback(params))),
332- errorConstructor[ArrayIndexOutOfBoundsException ](params =>
337+ errorClass = updatedParams.errorClass.get,
338+ messageParameters = updatedParams.messageParameters,
339+ getSqlStateOrFallback(updatedParams))
340+ }),
341+ errorConstructor[ArrayIndexOutOfBoundsException ](params => {
342+ val updatedParams = getParamsWithLegacyErrorClass(params, " _LEGACY_ERROR_TEMP_3108" )
333343 new SparkArrayIndexOutOfBoundsException (
334- errorClass = params.errorClass.getOrElse(" _LEGACY_ERROR_TEMP_3108" ),
335- messageParameters = errorParamsToMessageParameters(params),
336- params.queryContext,
337- getSqlStateOrFallback(params))),
338- errorConstructor[DateTimeException ](params =>
344+ errorClass = updatedParams.errorClass.get,
345+ messageParameters = updatedParams.messageParameters,
346+ updatedParams.queryContext,
347+ getSqlStateOrFallback(updatedParams))
348+ }),
349+ errorConstructor[DateTimeException ](params => {
350+ val updatedParams = getParamsWithLegacyErrorClass(params, " _LEGACY_ERROR_TEMP_3109" )
339351 new SparkDateTimeException (
340- errorClass = params .errorClass.getOrElse( " _LEGACY_ERROR_TEMP_3109 " ) ,
341- messageParameters = errorParamsToMessageParameters(params) ,
342- params .queryContext,
352+ errorClass = updatedParams .errorClass.get ,
353+ messageParameters = updatedParams.messageParameters ,
354+ updatedParams .queryContext,
343355 summary = " " ,
344356 cause = None ,
345- getSqlStateOrFallback(params))),
357+ getSqlStateOrFallback(updatedParams))
358+ }),
346359 errorConstructor(params =>
347360 new SparkRuntimeException (
348361 getErrorClassOrFallback(params),
@@ -365,6 +378,18 @@ private[client] object GrpcExceptionConverter {
365378 context = params.queryContext,
366379 sqlState = getSqlStateOrFallback(params))))
367380
381+ // Explicitly deal with cases where there are fallback legacy error classes
382+ private def getParamsWithLegacyErrorClass (
383+ params : ErrorParams ,
384+ fallbackErrorClass : String ): ErrorParams = {
385+ if (params.errorClass.isDefined) {
386+ return params
387+ }
388+ params.copy(
389+ errorClass = Some (fallbackErrorClass),
390+ messageParameters = Map (" message" -> params.message))
391+ }
392+
368393 /**
369394 * errorsToThrowable reconstructs the exception based on a list of protobuf messages
370395 * FetchErrorDetailsResponse.Error with un-truncated error messages and server-side stacktrace
0 commit comments