Github user maropu commented on a diff in the pull request:
https://github.com/apache/spark/pull/21770#discussion_r202563817
--- Diff:
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/codegen/CodeGenerator.scala
---
@@ -1588,6 +1588,15 @@ object CodeGenerator extends Logging {
def primitiveTypeName(dt: DataType): String =
primitiveTypeName(javaType(dt))
+ def getClassName(cls: Class[_]): String = {
+ try {
+ return Option(cls.getCanonicalName).getOrElse(cls.getName)
+ } catch {
+ case err: InternalError =>
--- End diff --
Please see the commit
https://github.com/apache/spark/commit/cc88d7fad16e8b5cbf7b6b9bfe412908782b4a45
and this is the same fix with
[Utils.getSimpleName](https://github.com/apache/spark/blob/master/core/src/main/scala/org/apache/spark/util/Utils.scala#L2732).
Yea, I see and I think this is workaround now.
Yea, in some cases, the doc says that `getCanonicalName` could return null;
```
/**
* Returns the canonical name of the underlying class as
* defined by the Java Language Specification. Returns null if
* the underlying class does not have a canonical name (i.e., if
* it is a local or anonymous class or an array whose component
* type does not have a canonical name).
* @return the canonical name of the underlying class if it exists, and
* {@code null} otherwise.
* @since 1.5
*/
public String getCanonicalName() {
```
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]