cloud-fan commented on code in PR #49445:
URL: https://github.com/apache/spark/pull/49445#discussion_r1931442079


##########
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/ResolveCatalogs.scala:
##########
@@ -34,11 +37,29 @@ class ResolveCatalogs(val catalogManager: CatalogManager)
   override def apply(plan: LogicalPlan): LogicalPlan = plan 
resolveOperatorsDown {
     // We only support temp variables for now and the system catalog is not 
properly implemented
     // yet. We need to resolve `UnresolvedIdentifier` for variable commands 
specially.
-    case c @ CreateVariable(UnresolvedIdentifier(nameParts, _), _, _) =>
-      val resolved = resolveVariableName(nameParts)
-      c.copy(name = resolved)
+    case c @ CreateVariable(UnresolvedIdentifier(nameParts, _), _, _, _) =>
+      // From scripts we can only create local variables, which must be 
unqualified,
+      // and must not be DECLARE OR REPLACE.
+      if (SqlScriptingLocalVariableManager.get().isDefined) {
+        // TODO [SPARK-50785]: Uncomment this when For Statement starts 
properly using local vars.
+//        if (c.replace) {
+//          throw new AnalysisException(
+//            "INVALID_VARIABLE_DECLARATION.REPLACE_LOCAL_VARIABLE",
+//            Map("varName" -> toSQLId(nameParts))
+//          )
+//        }
+
+        if (nameParts.length != 1) {
+          throw new AnalysisException(
+            "INVALID_VARIABLE_DECLARATION.QUALIFIED_LOCAL_VARIABLE",
+            Map("varName" -> toSQLId(nameParts)))
+        }
+      }
+
+      val resolved = resolveCreateVariableName(nameParts)
+      c.copy(name = resolved, sessionVariablesOnly = 
AnalysisContext.get.isExecuteImmediate)

Review Comment:
   `ResolvedIdentifier` needs a catalog and it's system catalog for creating 
session variables. What catalog should we put for creating local variables? 
also the system catalog?



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