a28ed86a38
### What changes were proposed in this pull request? Previously, user can issue `SHOW TABLES` to get info of both tables and views. This PR (SPARK-31113) implements `SHOW VIEWS` SQL command similar to HIVE to get views only.(https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-ShowViews) **Hive** -- Only show view names ``` hive> SHOW VIEWS; OK view_1 view_2 ... ``` **Spark(Hive-Compatible)** -- Only show view names, used in tests and `SparkSQLDriver` for CLI applications ``` SHOW VIEWS IN showdb; view_1 view_2 ... ``` **Spark** -- Show more information database/viewName/isTemporary ``` spark-sql> SHOW VIEWS; userdb view_1 false userdb view_2 false ... ``` ### Why are the changes needed? `SHOW VIEWS` command provides better granularity to only get information of views. ### Does this PR introduce any user-facing change? Add new `SHOW VIEWS` SQL command ### How was this patch tested? Add new test `show-views.sql` and pass existing tests Closes #27897 from Eric5553/ShowViews. Authored-by: Eric Wu <492960551@qq.com> Signed-off-by: Dongjoon Hyun <dongjoon@apache.org>
122 lines
4.9 KiB
Markdown
122 lines
4.9 KiB
Markdown
---
|
||
layout: global
|
||
title: SHOW VIEWS
|
||
displayTitle: SHOW VIEWS
|
||
license: |
|
||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||
contributor license agreements. See the NOTICE file distributed with
|
||
this work for additional information regarding copyright ownership.
|
||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||
(the "License"); you may not use this file except in compliance with
|
||
the License. You may obtain a copy of the License at
|
||
|
||
http://www.apache.org/licenses/LICENSE-2.0
|
||
|
||
Unless required by applicable law or agreed to in writing, software
|
||
distributed under the License is distributed on an "AS IS" BASIS,
|
||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
See the License for the specific language governing permissions and
|
||
limitations under the License.
|
||
---
|
||
### Description
|
||
|
||
The `SHOW VIEWS` statement returns all the views for an optionally specified database.
|
||
Additionally, the output of this statement may be filtered by an optional matching
|
||
pattern. If no database is specified then the views are returned from the
|
||
current database. If the specified database is global temporary view database, we will
|
||
list global temporary views. Note that the command also lists local temporary views
|
||
regardless of a given database.
|
||
|
||
### Syntax
|
||
{% highlight sql %}
|
||
SHOW VIEWS [ { FROM | IN } database_name ] [ LIKE 'regex_pattern' ]
|
||
{% endhighlight %}
|
||
|
||
### Parameters
|
||
<dl>
|
||
<dt><code><em>{ FROM | IN } database_name</em></code></dt>
|
||
<dd>
|
||
Specifies the database name from which views are listed.
|
||
</dd>
|
||
<dt><code><em>LIKE regex_pattern</em></code></dt>
|
||
<dd>
|
||
Specifies the regular expression pattern that is used to filter out unwanted views.
|
||
<ul>
|
||
<li> Except for `*` and `|` character, the pattern works like a regex.</li>
|
||
<li> `*` alone matches 0 or more characters and `|` is used to separate multiple different regexes,
|
||
any of which can match. </li>
|
||
<li> The leading and trailing blanks are trimmed in the input pattern before processing.</li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
|
||
### Example
|
||
{% highlight sql %}
|
||
-- Create views in different databases, also create global/local temp views.
|
||
CREATE VIEW sam AS SELECT id, salary FROM employee WHERE name = 'sam';
|
||
CREATE VIEW sam1 AS SELECT id, salary FROM employee WHERE name = 'sam1';
|
||
CREATE VIEW suj AS SELECT id, salary FROM employee WHERE name = 'suj';
|
||
USE userdb;
|
||
CREATE VIEW user1 AS SELECT id, salary FROM default.employee WHERE name = 'user1';
|
||
CREATE VIEW user2 AS SELECT id, salary FROM default.employee WHERE name = 'user2';
|
||
USE default;
|
||
CREATE GLOBAL TEMP VIEW temp1 AS SELECT 1 as col1;
|
||
CREATE TEMP VIEW temp2 AS SELECT 1 as col1;
|
||
|
||
-- List all views in default database
|
||
SHOW VIEWS;
|
||
+-------------+------------+--------------+--+
|
||
| namespace | viewName | isTemporary |
|
||
+-------------+------------+--------------+--+
|
||
| default | sam | false |
|
||
| default | sam1 | false |
|
||
| default | suj | false |
|
||
| | temp2 | true |
|
||
+-------------+------------+--------------+--+
|
||
|
||
-- List all views from userdb database
|
||
SHOW VIEWS FROM userdb;
|
||
+-------------+------------+--------------+--+
|
||
| namespace | viewName | isTemporary |
|
||
+-------------+------------+--------------+--+
|
||
| userdb | user1 | false |
|
||
| userdb | user2 | false |
|
||
| | temp2 | true |
|
||
+-------------+------------+--------------+--+
|
||
|
||
-- List all views in global temp view database
|
||
SHOW VIEWS IN global_temp;
|
||
+-------------+------------+--------------+--+
|
||
| namespace | viewName | isTemporary |
|
||
+-------------+------------+--------------+--+
|
||
| global_temp | temp1 | true |
|
||
| | temp2 | true |
|
||
+-------------+------------+--------------+--+
|
||
|
||
-- List all views from default database matching the pattern `sam*`
|
||
SHOW VIEWS FROM default LIKE 'sam*';
|
||
+-----------+------------+--------------+--+
|
||
| namespace | viewName | isTemporary |
|
||
+-----------+------------+--------------+--+
|
||
| default | sam | false |
|
||
| default | sam1 | false |
|
||
+-----------+------------+--------------+--+
|
||
|
||
-- List all views from the current database matching the pattern `sam|suj|temp*`
|
||
SHOW VIEWS LIKE 'sam|suj|temp*';
|
||
+-------------+------------+--------------+--+
|
||
| namespace | viewName | isTemporary |
|
||
+-------------+------------+--------------+--+
|
||
| default | sam | false |
|
||
| default | suj | false |
|
||
| | temp2 | true |
|
||
+-------------+------------+--------------+--+
|
||
|
||
{% endhighlight %}
|
||
|
||
### Related statements
|
||
- [CREATE VIEW](sql-ref-syntax-ddl-create-view.html)
|
||
- [DROP VIEW](sql-ref-syntax-ddl-drop-view.html)
|
||
- [CREATE DATABASE](sql-ref-syntax-ddl-create-database.html)
|
||
- [DROP DATABASE](sql-ref-syntax-ddl-drop-database.html)
|