blob: a9bbefc44130a5c6f4cb229f0ccefa9682f89682 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
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.
-->
<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept rev="1.1" id="alter_view">
<title>ALTER VIEW Statement</title>
<titlealts audience="PDF">
<navtitle>ALTER VIEW</navtitle>
</titlealts>
<prolog>
<metadata>
<data name="Category" value="Impala"/>
<data name="Category" value="SQL"/>
<data name="Category" value="DDL"/>
<data name="Category" value="Tables"/>
<data name="Category" value="Schemas"/>
<data name="Category" value="Views"/>
<data name="Category" value="Developers"/>
<data name="Category" value="Data Analysts"/>
</metadata>
</prolog>
<conbody>
<p>
The <codeph>ALTER VIEW</codeph> statement changes the characteristics of a view.
</p>
<p>
Because a view is a logical construct, an alias for a query, with no physical data behind
it, <codeph>ALTER VIEW</codeph> only involves changes to metadata in the metastore
database, not any data files in HDFS.
</p>
<p>
To see the definition of the updated view, issue a <codeph>DESCRIBE FORMATTED</codeph>
statement.
</p>
<p conref="../shared/impala_common.xml#common/syntax_blurb"/>
<codeblock>ALTER VIEW [<varname>database_name</varname>.]<varname>view_name</varname>
[(<varname>column_name</varname> [COMMENT '<varname>column_comment</varname>'][, ...])]
AS <varname>select_statement</varname>;
ALTER VIEW [<varname>database_name</varname>.]<varname>view_name</varname>
RENAME TO [<varname>database_name</varname>.]<varname>view_name</varname>;
ALTER VIEW [<varname>database_name</varname>.]<varname>view_name</varname> SET OWNER USER user_name;
ALTER VIEW [<varname>database_name</varname>.]<varname>view_name</varname>
SET TBLPROPERTIES ('<varname>name</varname>' = '<varname>value</varname>'[, '<varname>name</varname>' = '<varname>value</varname>' ...]);
ALTER VIEW [<varname>database_name</varname>.]<varname>view_name</varname>
UNSET TBLPROPERTIES ('<varname>name</varname>'[, ...]);
</codeblock>
<ul>
<li>
The <codeph>AS</codeph> clause associates the view with a different query.
<p>
An optional list of column names can be specified with or without the column-level
comments.
</p>
<p>
For example:
<codeblock>
ALTER VIEW v1 AS SELECT x, UPPER(s) s FROM t2;
ALTER VIEW v1 (c1, c2) AS SELECT x, UPPER(s) s FROM t2;
ALTER VIEW v7 (c1 COMMENT 'Comment for c1', c2) AS SELECT t1.c1, t1.c2 FROM t1;
</codeblock>
</p>
</li>
<li>
The <codeph>RENAME TO</codeph> clause changes the name of the view, moves the view to a
different database, or both.
<p>
For example:
<codeblock>ALTER VIEW db1.v1 RENAME TO db2.v2; -- Move the view to a different database with a new name.
ALTER VIEW db1.v1 RENAME TO db1.v2; -- Rename the view in the same database.
ALTER VIEW db1.v1 RENAME TO db2.v1; -- Move the view to a difference database with the same view name.</codeblock>
</p>
</li>
<li rev="3.1 IMPALA-6988">
The <codeph>SET OWNER</codeph> clause transfers the ownership of the view from the
current owner to another user.
<p>
The view owner is originally set to the user who creates the view.
The term <codeph>OWNER</codeph> is used to differentiate between the
<codeph>ALL</codeph> privilege that is explicitly granted via the
<codeph>GRANT</codeph> statement and a privilege that is implicitly granted by the
<codeph>CREATE VIEW</codeph> statement.
</p>
</li>
<li rev="IMPALA-11420">
The <codeph>SET TBLPROPERTIES</codeph> clause is primarily a way to associate arbitrary
user-specified data items with a particular view.
<p>
You can associate arbitrary items of metadata with a table by specifying the
<codeph>TBLPROPERTIES</codeph> clause. This clause takes a comma-separated list of
key-value pairs and stores those items in the metastore database. You can also unset the
view properties later with an <codeph>UNSET TBLPROPERTIES</codeph> clause.
</p>
<p>
For example:
<codeblock>ALTER VIEW v1 SET TBLPROPERTIES ('tblp1' = '1', 'tblp2' = '2');
ALTER VIEW v1 UNSET TBLPROPERTIES ('tblp1', 'tblp2');
</codeblock>
</p>
</li>
</ul>
<p conref="../shared/impala_common.xml#common/ddl_blurb"/>
<p conref="../shared/impala_common.xml#common/sync_ddl_blurb"/>
<p conref="../shared/impala_common.xml#common/security_blurb"/>
<p conref="../shared/impala_common.xml#common/redaction_yes"/>
<p conref="../shared/impala_common.xml#common/cancel_blurb_no"/>
<p conref="../shared/impala_common.xml#common/permissions_blurb_no"/>
<p conref="../shared/impala_common.xml#common/related_info"/>
<p>
<xref href="impala_views.xml#views"/>, <xref href="impala_create_view.xml#create_view"/>,
<xref href="impala_drop_view.xml#drop_view"/>
</p>
</conbody>
</concept>