[SPARK-27221][SQL] Improve the assert error message in TreeNode.parseToJson
## What changes were proposed in this pull request? When `TreeNode.parseToJson` may throw an assert error without any error message when a TreeNode is not implemented properly, and it's hard to find the bad TreeNode implementation. This PR adds the assert message to improve the error, like what `TreeNode.jsonFields` does. ## How was this patch tested? Jenkins Closes #24159 from zsxwing/SPARK-27221. Authored-by: Shixiong Zhu <zsxwing@gmail.com> Signed-off-by: Hyukjin Kwon <gurwls223@apache.org>
This commit is contained in:
parent
2e090ba628
commit
c26379b446
|
@ -630,7 +630,7 @@ abstract class TreeNode[BaseType <: TreeNode[BaseType]] extends Product {
|
|||
val fieldNames = getConstructorParameterNames(getClass)
|
||||
val fieldValues = productIterator.toSeq ++ otherCopyArgs
|
||||
assert(fieldNames.length == fieldValues.length, s"${getClass.getSimpleName} fields: " +
|
||||
fieldNames.mkString(", ") + s", values: " + fieldValues.map(_.toString).mkString(", "))
|
||||
fieldNames.mkString(", ") + s", values: " + fieldValues.mkString(", "))
|
||||
|
||||
fieldNames.zip(fieldValues).map {
|
||||
// If the field value is a child, then use an int to encode it, represents the index of
|
||||
|
@ -683,7 +683,8 @@ abstract class TreeNode[BaseType <: TreeNode[BaseType]] extends Product {
|
|||
try {
|
||||
val fieldNames = getConstructorParameterNames(p.getClass)
|
||||
val fieldValues = p.productIterator.toSeq
|
||||
assert(fieldNames.length == fieldValues.length)
|
||||
assert(fieldNames.length == fieldValues.length, s"${getClass.getSimpleName} fields: " +
|
||||
fieldNames.mkString(", ") + s", values: " + fieldValues.mkString(", "))
|
||||
("product-class" -> JString(p.getClass.getName)) :: fieldNames.zip(fieldValues).map {
|
||||
case (name, value) => name -> parseToJson(value)
|
||||
}.toList
|
||||
|
|
Loading…
Reference in a new issue