aboutsummaryrefslogtreecommitdiff
path: root/sql/catalyst
diff options
context:
space:
mode:
authorgatorsmile <gatorsmile@gmail.com>2016-03-31 12:03:55 -0700
committerAndrew Or <andrew@databricks.com>2016-03-31 12:04:03 -0700
commit446c45bd87035e20653394fcaf9dc8caa4299038 (patch)
treef6c69cc2f87f2c87ba7f9285521230116fb7ab4b /sql/catalyst
parentac1b8b302a92678bbeece6e9c7879f1cb8fdad12 (diff)
downloadspark-446c45bd87035e20653394fcaf9dc8caa4299038.tar.gz
spark-446c45bd87035e20653394fcaf9dc8caa4299038.tar.bz2
spark-446c45bd87035e20653394fcaf9dc8caa4299038.zip
[SPARK-14182][SQL] Parse DDL Command: Alter View
This PR is to provide native parsing support for DDL commands: `Alter View`. Since its AST trees are highly similar to `Alter Table`. Thus, both implementation are integrated into the same one. Based on the Hive DDL document: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL and https://cwiki.apache.org/confluence/display/Hive/PartitionedViews **Syntax:** ```SQL ALTER VIEW view_name RENAME TO new_view_name ``` - to change the name of a view to a different name **Syntax:** ```SQL ALTER VIEW view_name SET TBLPROPERTIES ('comment' = new_comment); ``` - to add metadata to a view **Syntax:** ```SQL ALTER VIEW view_name UNSET TBLPROPERTIES [IF EXISTS] ('comment', 'key') ``` - to remove metadata from a view **Syntax:** ```SQL ALTER VIEW view_name ADD [IF NOT EXISTS] PARTITION spec1[, PARTITION spec2, ...] ``` - to add the partitioning metadata for a view. - the syntax of partition spec in `ALTER VIEW` is identical to `ALTER TABLE`, **EXCEPT** that it is **ILLEGAL** to specify a `LOCATION` clause. **Syntax:** ```SQL ALTER VIEW view_name DROP [IF EXISTS] PARTITION spec1[, PARTITION spec2, ...] ``` - to drop the related partition metadata for a view. Added the related test cases to `DDLCommandSuite` Author: gatorsmile <gatorsmile@gmail.com> Author: xiaoli <lixiao1983@gmail.com> Author: Xiao Li <xiaoli@Xiaos-MacBook-Pro.local> Closes #11987 from gatorsmile/parseAlterView.
Diffstat (limited to 'sql/catalyst')
-rw-r--r--sql/catalyst/src/main/antlr4/org/apache/spark/sql/catalyst/parser/SqlBase.g420
1 files changed, 8 insertions, 12 deletions
diff --git a/sql/catalyst/src/main/antlr4/org/apache/spark/sql/catalyst/parser/SqlBase.g4 b/sql/catalyst/src/main/antlr4/org/apache/spark/sql/catalyst/parser/SqlBase.g4
index 3b9f82a80f..a857e670da 100644
--- a/sql/catalyst/src/main/antlr4/org/apache/spark/sql/catalyst/parser/SqlBase.g4
+++ b/sql/catalyst/src/main/antlr4/org/apache/spark/sql/catalyst/parser/SqlBase.g4
@@ -57,10 +57,11 @@ statement
(AS? query)? #createTable
| ANALYZE TABLE tableIdentifier partitionSpec? COMPUTE STATISTICS
(identifier | FOR COLUMNS identifierSeq?)? #analyze
- | ALTER TABLE from=tableIdentifier RENAME TO to=tableIdentifier #renameTable
- | ALTER TABLE tableIdentifier
+ | ALTER (TABLE | VIEW) from=tableIdentifier
+ RENAME TO to=tableIdentifier #renameTable
+ | ALTER (TABLE | VIEW) tableIdentifier
SET TBLPROPERTIES tablePropertyList #setTableProperties
- | ALTER TABLE tableIdentifier
+ | ALTER (TABLE | VIEW) tableIdentifier
UNSET TBLPROPERTIES (IF EXISTS)? tablePropertyList #unsetTableProperties
| ALTER TABLE tableIdentifier (partitionSpec)?
SET SERDE STRING (WITH SERDEPROPERTIES tablePropertyList)? #setTableSerDe
@@ -76,12 +77,16 @@ statement
SET SKEWED LOCATION skewedLocationList #setTableSkewLocations
| ALTER TABLE tableIdentifier ADD (IF NOT EXISTS)?
partitionSpecLocation+ #addTablePartition
+ | ALTER VIEW tableIdentifier ADD (IF NOT EXISTS)?
+ partitionSpec+ #addTablePartition
| ALTER TABLE tableIdentifier
from=partitionSpec RENAME TO to=partitionSpec #renameTablePartition
| ALTER TABLE from=tableIdentifier
EXCHANGE partitionSpec WITH TABLE to=tableIdentifier #exchangeTablePartition
| ALTER TABLE tableIdentifier
DROP (IF EXISTS)? partitionSpec (',' partitionSpec)* PURGE? #dropTablePartitions
+ | ALTER VIEW tableIdentifier
+ DROP (IF EXISTS)? partitionSpec (',' partitionSpec)* #dropTablePartitions
| ALTER TABLE tableIdentifier ARCHIVE partitionSpec #archiveTablePartition
| ALTER TABLE tableIdentifier UNARCHIVE partitionSpec #unarchiveTablePartition
| ALTER TABLE tableIdentifier partitionSpec?
@@ -133,15 +138,6 @@ hiveNativeCommands
| DELETE FROM tableIdentifier (WHERE booleanExpression)?
| TRUNCATE TABLE tableIdentifier partitionSpec?
(COLUMNS identifierList)?
- | ALTER VIEW from=tableIdentifier AS? RENAME TO to=tableIdentifier
- | ALTER VIEW from=tableIdentifier AS?
- SET TBLPROPERTIES tablePropertyList
- | ALTER VIEW from=tableIdentifier AS?
- UNSET TBLPROPERTIES (IF EXISTS)? tablePropertyList
- | ALTER VIEW from=tableIdentifier AS?
- ADD (IF NOT EXISTS)? partitionSpecLocation+
- | ALTER VIEW from=tableIdentifier AS?
- DROP (IF EXISTS)? partitionSpec (',' partitionSpec)* PURGE?
| DROP VIEW (IF EXISTS)? qualifiedName
| SHOW COLUMNS (FROM | IN) tableIdentifier ((FROM|IN) identifier)?
| START TRANSACTION (transactionMode (',' transactionMode)*)?