This is an automated email from the ASF dual-hosted git repository.

lzljs3620320 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/paimon.git


The following commit(s) were added to refs/heads/master by this push:
     new ad757d28c8 [spark] support 'SHOW VIEWS FROM' syntax (#6873)
ad757d28c8 is described below

commit ad757d28c86849f4d555319fd02e7def0ecd7045
Author: Yann Byron <[email protected]>
AuthorDate: Wed Dec 24 21:54:57 2025 +0800

    [spark] support 'SHOW VIEWS FROM' syntax (#6873)
---
 .../parser/extensions/RewritePaimonViewCommands.scala      | 13 ++++++++-----
 .../parser/extensions/RewritePaimonViewCommands.scala      | 13 ++++++++-----
 .../parser/extensions/RewritePaimonViewCommands.scala      | 14 ++++++++------
 .../org/apache/paimon/spark/sql/PaimonViewTestBase.scala   | 11 +++++++++++
 4 files changed, 35 insertions(+), 16 deletions(-)

diff --git 
a/paimon-spark/paimon-spark-3.2/src/main/scala/org/apache/spark/sql/catalyst/parser/extensions/RewritePaimonViewCommands.scala
 
b/paimon-spark/paimon-spark-3.2/src/main/scala/org/apache/spark/sql/catalyst/parser/extensions/RewritePaimonViewCommands.scala
index c8080ba7ad..5a458978ea 100644
--- 
a/paimon-spark/paimon-spark-3.2/src/main/scala/org/apache/spark/sql/catalyst/parser/extensions/RewritePaimonViewCommands.scala
+++ 
b/paimon-spark/paimon-spark-3.2/src/main/scala/org/apache/spark/sql/catalyst/parser/extensions/RewritePaimonViewCommands.scala
@@ -23,6 +23,7 @@ import 
org.apache.paimon.spark.catalyst.plans.logical.{CreatePaimonView, DropPai
 
 import org.apache.spark.sql.SparkSession
 import org.apache.spark.sql.catalyst.analysis.{CTESubstitution, 
ResolvedNamespace, UnresolvedView}
+import org.apache.spark.sql.catalyst.analysis.SimpleAnalyzer.ResolveNamespace
 import org.apache.spark.sql.catalyst.plans.logical._
 import org.apache.spark.sql.catalyst.rules.Rule
 import org.apache.spark.sql.connector.catalog.{CatalogManager, LookupCatalog}
@@ -60,11 +61,13 @@ case class RewritePaimonViewCommands(spark: SparkSession)
     case DropView(ResolvedIdent(resolved), ifExists: Boolean) =>
       DropPaimonView(resolved, ifExists)
 
-    case ShowViews(_, pattern, output) if 
catalogManager.currentCatalog.isInstanceOf[SupportView] =>
-      ShowPaimonViews(
-        ResolvedNamespace(catalogManager.currentCatalog, 
catalogManager.currentNamespace),
-        pattern,
-        output)
+    case ShowViews(namespace, pattern, output)
+        if catalogManager.currentCatalog.isInstanceOf[SupportView] =>
+      val resolvedNamespace = 
ResolveNamespace(catalogManager)(namespace).transform {
+        case r: ResolvedNamespace if r.namespace.isEmpty =>
+          r.copy(namespace = catalogManager.currentNamespace)
+      }
+      ShowPaimonViews(resolvedNamespace, pattern, output)
   }
 
   private def isTempView(nameParts: Seq[String]): Boolean = {
diff --git 
a/paimon-spark/paimon-spark-3.3/src/main/scala/org/apache/spark/sql/catalyst/parser/extensions/RewritePaimonViewCommands.scala
 
b/paimon-spark/paimon-spark-3.3/src/main/scala/org/apache/spark/sql/catalyst/parser/extensions/RewritePaimonViewCommands.scala
index e914ef1d76..953414fb23 100644
--- 
a/paimon-spark/paimon-spark-3.3/src/main/scala/org/apache/spark/sql/catalyst/parser/extensions/RewritePaimonViewCommands.scala
+++ 
b/paimon-spark/paimon-spark-3.3/src/main/scala/org/apache/spark/sql/catalyst/parser/extensions/RewritePaimonViewCommands.scala
@@ -23,6 +23,7 @@ import 
org.apache.paimon.spark.catalyst.plans.logical.{CreatePaimonView, DropPai
 
 import org.apache.spark.sql.SparkSession
 import org.apache.spark.sql.catalyst.analysis.{CTESubstitution, 
ResolvedNamespace, UnresolvedDBObjectName, UnresolvedView}
+import org.apache.spark.sql.catalyst.analysis.SimpleAnalyzer.ResolveNamespace
 import org.apache.spark.sql.catalyst.plans.logical._
 import org.apache.spark.sql.catalyst.rules.Rule
 import org.apache.spark.sql.connector.catalog.{CatalogManager, LookupCatalog}
@@ -59,11 +60,13 @@ case class RewritePaimonViewCommands(spark: SparkSession)
     case DropView(ResolvedIdent(resolved), ifExists: Boolean) =>
       DropPaimonView(resolved, ifExists)
 
-    case ShowViews(_, pattern, output) if 
catalogManager.currentCatalog.isInstanceOf[SupportView] =>
-      ShowPaimonViews(
-        ResolvedNamespace(catalogManager.currentCatalog, 
catalogManager.currentNamespace),
-        pattern,
-        output)
+    case ShowViews(namespace, pattern, output)
+        if catalogManager.currentCatalog.isInstanceOf[SupportView] =>
+      val resolvedNamespace = 
ResolveNamespace(catalogManager)(namespace).transform {
+        case r: ResolvedNamespace if r.namespace.isEmpty =>
+          r.copy(namespace = catalogManager.currentNamespace)
+      }
+      ShowPaimonViews(resolvedNamespace, pattern, output)
   }
 
   private def isTempView(nameParts: Seq[String]): Boolean = {
diff --git 
a/paimon-spark/paimon-spark-common/src/main/scala/org/apache/spark/sql/catalyst/parser/extensions/RewritePaimonViewCommands.scala
 
b/paimon-spark/paimon-spark-common/src/main/scala/org/apache/spark/sql/catalyst/parser/extensions/RewritePaimonViewCommands.scala
index 30b09a48e4..4b4187b2d8 100644
--- 
a/paimon-spark/paimon-spark-common/src/main/scala/org/apache/spark/sql/catalyst/parser/extensions/RewritePaimonViewCommands.scala
+++ 
b/paimon-spark/paimon-spark-common/src/main/scala/org/apache/spark/sql/catalyst/parser/extensions/RewritePaimonViewCommands.scala
@@ -22,7 +22,7 @@ import org.apache.paimon.spark.catalog.SupportView
 import org.apache.paimon.spark.catalyst.plans.logical.{CreatePaimonView, 
DropPaimonView, ResolvedIdentifier, ShowPaimonViews}
 
 import org.apache.spark.sql.SparkSession
-import org.apache.spark.sql.catalyst.analysis.{CTESubstitution, 
ResolvedNamespace, UnresolvedIdentifier}
+import org.apache.spark.sql.catalyst.analysis.{CTESubstitution, 
ResolveCatalogs, ResolvedNamespace, UnresolvedIdentifier}
 import org.apache.spark.sql.catalyst.plans.logical._
 import org.apache.spark.sql.catalyst.rules.Rule
 import org.apache.spark.sql.connector.catalog.{CatalogManager, LookupCatalog}
@@ -59,11 +59,13 @@ case class RewritePaimonViewCommands(spark: SparkSession)
     case DropView(ResolvedIdent(resolved), ifExists: Boolean) =>
       DropPaimonView(resolved, ifExists)
 
-    case ShowViews(_, pattern, output) if 
catalogManager.currentCatalog.isInstanceOf[SupportView] =>
-      ShowPaimonViews(
-        ResolvedNamespace(catalogManager.currentCatalog, 
catalogManager.currentNamespace),
-        pattern,
-        output)
+    case ShowViews(namespace, pattern, output)
+        if catalogManager.currentCatalog.isInstanceOf[SupportView] =>
+      val resolvedNamespace = new 
ResolveCatalogs(catalogManager)(namespace).transform {
+        case r: ResolvedNamespace if r.namespace.isEmpty =>
+          r.copy(namespace = catalogManager.currentNamespace)
+      }
+      ShowPaimonViews(resolvedNamespace, pattern, output)
   }
 
   private def isTempView(nameParts: Seq[String]): Boolean = {
diff --git 
a/paimon-spark/paimon-spark-ut/src/test/scala/org/apache/paimon/spark/sql/PaimonViewTestBase.scala
 
b/paimon-spark/paimon-spark-ut/src/test/scala/org/apache/paimon/spark/sql/PaimonViewTestBase.scala
index fa58b99aee..b276af89b5 100644
--- 
a/paimon-spark/paimon-spark-ut/src/test/scala/org/apache/paimon/spark/sql/PaimonViewTestBase.scala
+++ 
b/paimon-spark/paimon-spark-ut/src/test/scala/org/apache/paimon/spark/sql/PaimonViewTestBase.scala
@@ -84,6 +84,17 @@ abstract class PaimonViewTestBase extends PaimonHiveTestBase 
{
                     Row("test_db", "va", false),
                     Row("test_db", "vab", false),
                     Row("test_db", "vc", false)))
+
+                // show views from database
+                sql(s"USE $hiveDbName")
+                checkAnswer(
+                  sql("SHOW VIEWS FROM test_db"),
+                  Seq(
+                    Row("test_db", "va", false),
+                    Row("test_db", "vab", false),
+                    Row("test_db", "vc", false)))
+                sql("USE test_db")
+
                 checkAnswer(
                   sql("SHOW VIEWS LIKE 'va*'"),
                   Seq(Row("test_db", "va", false), Row("test_db", "vab", 
false)))

Reply via email to