richardc-db commented on code in PR #46312:
URL: https://github.com/apache/spark/pull/46312#discussion_r1586798259


##########
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/ResolveDefaultColumnsUtil.scala:
##########
@@ -84,9 +84,16 @@ object ResolveDefaultColumns extends QueryErrorsBase
     if (SQLConf.get.enableDefaultColumns) {
       val newFields: Seq[StructField] = tableSchema.fields.map { field =>
         if (field.metadata.contains(CURRENT_DEFAULT_COLUMN_METADATA_KEY)) {
-          val analyzed: Expression = analyze(field, statementType)
+          val defaultSql: String = if 
(field.dataType.isInstanceOf[VariantType]) {
+            // A variant's SQL/string representation is its JSON string which 
cannot be directly
+            // casted to a variant type. Thus, we lazily evaluate the default 
expression to avoid

Review Comment:
   Yep, `parse_json('1')` works (even before this PR, but unintentionally). 
This is because the current code inserts a cast to variant, which is ok in this 
case because `CAST(1 as VARIANT)` succeeds
   
   In the more complex case such as a default of `parse_json('{'k': 'v'}')`, 
the analyzer actually fails because it tries to analyze the sql text `{'k': 
'v'}` (note the lack of outer quotations). An alternative to the taken approach 
in this PR is to create a string literal from  `{'k': 'v'}` and wrap it with 
`parse_json` (effectively coercing it to the correct variant type). This feels 
inefficient, however, because we have variant->string->variant conversion 
rather than lazily evaluating it once



-- 
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