From 3b5eb7083d3e1955de288e4fd365dca6221f32fb Mon Sep 17 00:00:00 2001
From: u0jing <u9jing@gmail.com>
Date: Wed, 27 Aug 2014 12:47:14 -0700
Subject: [PATCH] [SPARK-3118][SQL]add "SHOW TBLPROPERTIES tblname;" and "SHOW
 COLUMNS (FROM|IN) table_name [(FROM|IN) db_name]" support

JIRA issue: [SPARK-3118] https://issues.apache.org/jira/browse/SPARK-3118

eg:
> SHOW TBLPROPERTIES test;
SHOW TBLPROPERTIES test;
numPartitions	0
numFiles	1
transient_lastDdlTime	1407923642
numRows	0
totalSize	82
rawDataSize	0

eg:
> SHOW COLUMNS  in test;
SHOW COLUMNS  in test;
OK
Time taken: 0.304 seconds
id
stid
bo

Author: u0jing <u9jing@gmail.com>

Closes #2034 from u0jing/spark-3118 and squashes the following commits:

b231d87 [u0jing] add golden answer files
35f4885 [u0jing] add 'show columns' and 'show tblproperties' support
---
 .../spark/sql/hive/execution/HiveCompatibilitySuite.scala   | 2 ++
 .../src/main/scala/org/apache/spark/sql/hive/HiveQl.scala   | 2 ++
 .../golden/show_columns-0-d84a430d0ab7a63a0a73361f8d188a4b  | 0
 .../golden/show_columns-1-ac73cff018bf94944244117a2eb76f7f  | 0
 .../golden/show_columns-10-695a68c82308540eba1d0a04e032cf39 | 0
 .../golden/show_columns-11-691b4e6664e6d435233ea4e8c3b585d5 | 0
 .../golden/show_columns-12-afc350d459a8f794cc3ca93092163a0c | 1 +
 .../golden/show_columns-13-e86d559aeb84a4cc017a103182c22bfb | 0
 .../golden/show_columns-14-7c1d63fa270b4d94b69ad49c3e2378a6 | 1 +
 .../golden/show_columns-15-2c404655e35f7bd7ce54500c832f9d8e | 1 +
 .../golden/show_columns-2-b74990316ec4245fd8a7011e684b39da  | 3 +++
 .../golden/show_columns-3-6e40309b0ca10f353a68395ccd64d566  | 0
 .../golden/show_columns-4-a62fc229d241303bffb29b34ad125f8c  | 0
 .../golden/show_columns-5-691b4e6664e6d435233ea4e8c3b585d5  | 0
 .../golden/show_columns-6-37c88438bd364343a50f64cf39bfcaf6  | 0
 .../golden/show_columns-7-afc350d459a8f794cc3ca93092163a0c  | 1 +
 .../golden/show_columns-8-9b0b96593ca513c6932f3ed8df68808a  | 1 +
 .../golden/show_columns-9-6c0fa8be1c19d4d216dfe7427df1275f  | 0
 .../show_tblproperties-0-ca75bef7d151a44b6a89dd92333eb12a   | 0
 .../show_tblproperties-1-be4adb893c7f946ebd76a648ce3cc1ae   | 1 +
 .../show_tblproperties-2-7c7993eea8e41cf095afae07772cc16e   | 0
 .../show_tblproperties-3-2b4b8c43ef08bdb418405917d475ac1d   | 0
 .../show_tblproperties-4-6c63215ea599f6533666c4d70606b139   | 6 ++++++
 .../show_tblproperties-5-be4adb893c7f946ebd76a648ce3cc1ae   | 1 +
 .../show_tblproperties-6-9dd8d67460f558955d96a107ca996ad    | 0
 25 files changed, 20 insertions(+)
 create mode 100644 sql/hive/src/test/resources/golden/show_columns-0-d84a430d0ab7a63a0a73361f8d188a4b
 create mode 100644 sql/hive/src/test/resources/golden/show_columns-1-ac73cff018bf94944244117a2eb76f7f
 create mode 100644 sql/hive/src/test/resources/golden/show_columns-10-695a68c82308540eba1d0a04e032cf39
 create mode 100644 sql/hive/src/test/resources/golden/show_columns-11-691b4e6664e6d435233ea4e8c3b585d5
 create mode 100644 sql/hive/src/test/resources/golden/show_columns-12-afc350d459a8f794cc3ca93092163a0c
 create mode 100644 sql/hive/src/test/resources/golden/show_columns-13-e86d559aeb84a4cc017a103182c22bfb
 create mode 100644 sql/hive/src/test/resources/golden/show_columns-14-7c1d63fa270b4d94b69ad49c3e2378a6
 create mode 100644 sql/hive/src/test/resources/golden/show_columns-15-2c404655e35f7bd7ce54500c832f9d8e
 create mode 100644 sql/hive/src/test/resources/golden/show_columns-2-b74990316ec4245fd8a7011e684b39da
 create mode 100644 sql/hive/src/test/resources/golden/show_columns-3-6e40309b0ca10f353a68395ccd64d566
 create mode 100644 sql/hive/src/test/resources/golden/show_columns-4-a62fc229d241303bffb29b34ad125f8c
 create mode 100644 sql/hive/src/test/resources/golden/show_columns-5-691b4e6664e6d435233ea4e8c3b585d5
 create mode 100644 sql/hive/src/test/resources/golden/show_columns-6-37c88438bd364343a50f64cf39bfcaf6
 create mode 100644 sql/hive/src/test/resources/golden/show_columns-7-afc350d459a8f794cc3ca93092163a0c
 create mode 100644 sql/hive/src/test/resources/golden/show_columns-8-9b0b96593ca513c6932f3ed8df68808a
 create mode 100644 sql/hive/src/test/resources/golden/show_columns-9-6c0fa8be1c19d4d216dfe7427df1275f
 create mode 100644 sql/hive/src/test/resources/golden/show_tblproperties-0-ca75bef7d151a44b6a89dd92333eb12a
 create mode 100644 sql/hive/src/test/resources/golden/show_tblproperties-1-be4adb893c7f946ebd76a648ce3cc1ae
 create mode 100644 sql/hive/src/test/resources/golden/show_tblproperties-2-7c7993eea8e41cf095afae07772cc16e
 create mode 100644 sql/hive/src/test/resources/golden/show_tblproperties-3-2b4b8c43ef08bdb418405917d475ac1d
 create mode 100644 sql/hive/src/test/resources/golden/show_tblproperties-4-6c63215ea599f6533666c4d70606b139
 create mode 100644 sql/hive/src/test/resources/golden/show_tblproperties-5-be4adb893c7f946ebd76a648ce3cc1ae
 create mode 100644 sql/hive/src/test/resources/golden/show_tblproperties-6-9dd8d67460f558955d96a107ca996ad

diff --git a/sql/hive/compatibility/src/test/scala/org/apache/spark/sql/hive/execution/HiveCompatibilitySuite.scala b/sql/hive/compatibility/src/test/scala/org/apache/spark/sql/hive/execution/HiveCompatibilitySuite.scala
index 66243879b9..7a69e3c512 100644
--- a/sql/hive/compatibility/src/test/scala/org/apache/spark/sql/hive/execution/HiveCompatibilitySuite.scala
+++ b/sql/hive/compatibility/src/test/scala/org/apache/spark/sql/hive/execution/HiveCompatibilitySuite.scala
@@ -644,9 +644,11 @@ class HiveCompatibilitySuite extends HiveQueryFileTest with BeforeAndAfter {
     "show_create_table_db_table",
     "show_create_table_does_not_exist",
     "show_create_table_index",
+    "show_columns",
     "show_describe_func_quotes",
     "show_functions",
     "show_partitions",
+    "show_tblproperties",
     "skewjoinopt13",
     "skewjoinopt18",
     "skewjoinopt9",
diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveQl.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveQl.scala
index 581332e600..fa3adfdf58 100644
--- a/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveQl.scala
+++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveQl.scala
@@ -54,6 +54,7 @@ private[hive] object HiveQl {
     "TOK_DESCFUNCTION",
     "TOK_DESCDATABASE",
     "TOK_SHOW_CREATETABLE",
+    "TOK_SHOWCOLUMNS",
     "TOK_SHOW_TABLESTATUS",
     "TOK_SHOWDATABASES",
     "TOK_SHOWFUNCTIONS",
@@ -61,6 +62,7 @@ private[hive] object HiveQl {
     "TOK_SHOWINDEXES",
     "TOK_SHOWPARTITIONS",
     "TOK_SHOWTABLES",
+    "TOK_SHOW_TBLPROPERTIES",
 
     "TOK_LOCKTABLE",
     "TOK_SHOWLOCKS",
diff --git a/sql/hive/src/test/resources/golden/show_columns-0-d84a430d0ab7a63a0a73361f8d188a4b b/sql/hive/src/test/resources/golden/show_columns-0-d84a430d0ab7a63a0a73361f8d188a4b
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/sql/hive/src/test/resources/golden/show_columns-1-ac73cff018bf94944244117a2eb76f7f b/sql/hive/src/test/resources/golden/show_columns-1-ac73cff018bf94944244117a2eb76f7f
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/sql/hive/src/test/resources/golden/show_columns-10-695a68c82308540eba1d0a04e032cf39 b/sql/hive/src/test/resources/golden/show_columns-10-695a68c82308540eba1d0a04e032cf39
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/sql/hive/src/test/resources/golden/show_columns-11-691b4e6664e6d435233ea4e8c3b585d5 b/sql/hive/src/test/resources/golden/show_columns-11-691b4e6664e6d435233ea4e8c3b585d5
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/sql/hive/src/test/resources/golden/show_columns-12-afc350d459a8f794cc3ca93092163a0c b/sql/hive/src/test/resources/golden/show_columns-12-afc350d459a8f794cc3ca93092163a0c
new file mode 100644
index 0000000000..1711d0c2bb
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/show_columns-12-afc350d459a8f794cc3ca93092163a0c
@@ -0,0 +1 @@
+a                   
diff --git a/sql/hive/src/test/resources/golden/show_columns-13-e86d559aeb84a4cc017a103182c22bfb b/sql/hive/src/test/resources/golden/show_columns-13-e86d559aeb84a4cc017a103182c22bfb
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/sql/hive/src/test/resources/golden/show_columns-14-7c1d63fa270b4d94b69ad49c3e2378a6 b/sql/hive/src/test/resources/golden/show_columns-14-7c1d63fa270b4d94b69ad49c3e2378a6
new file mode 100644
index 0000000000..1711d0c2bb
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/show_columns-14-7c1d63fa270b4d94b69ad49c3e2378a6
@@ -0,0 +1 @@
+a                   
diff --git a/sql/hive/src/test/resources/golden/show_columns-15-2c404655e35f7bd7ce54500c832f9d8e b/sql/hive/src/test/resources/golden/show_columns-15-2c404655e35f7bd7ce54500c832f9d8e
new file mode 100644
index 0000000000..1711d0c2bb
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/show_columns-15-2c404655e35f7bd7ce54500c832f9d8e
@@ -0,0 +1 @@
+a                   
diff --git a/sql/hive/src/test/resources/golden/show_columns-2-b74990316ec4245fd8a7011e684b39da b/sql/hive/src/test/resources/golden/show_columns-2-b74990316ec4245fd8a7011e684b39da
new file mode 100644
index 0000000000..70c14c3ef3
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/show_columns-2-b74990316ec4245fd8a7011e684b39da
@@ -0,0 +1,3 @@
+key                 
+value               
+ds                  
diff --git a/sql/hive/src/test/resources/golden/show_columns-3-6e40309b0ca10f353a68395ccd64d566 b/sql/hive/src/test/resources/golden/show_columns-3-6e40309b0ca10f353a68395ccd64d566
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/sql/hive/src/test/resources/golden/show_columns-4-a62fc229d241303bffb29b34ad125f8c b/sql/hive/src/test/resources/golden/show_columns-4-a62fc229d241303bffb29b34ad125f8c
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/sql/hive/src/test/resources/golden/show_columns-5-691b4e6664e6d435233ea4e8c3b585d5 b/sql/hive/src/test/resources/golden/show_columns-5-691b4e6664e6d435233ea4e8c3b585d5
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/sql/hive/src/test/resources/golden/show_columns-6-37c88438bd364343a50f64cf39bfcaf6 b/sql/hive/src/test/resources/golden/show_columns-6-37c88438bd364343a50f64cf39bfcaf6
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/sql/hive/src/test/resources/golden/show_columns-7-afc350d459a8f794cc3ca93092163a0c b/sql/hive/src/test/resources/golden/show_columns-7-afc350d459a8f794cc3ca93092163a0c
new file mode 100644
index 0000000000..1711d0c2bb
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/show_columns-7-afc350d459a8f794cc3ca93092163a0c
@@ -0,0 +1 @@
+a                   
diff --git a/sql/hive/src/test/resources/golden/show_columns-8-9b0b96593ca513c6932f3ed8df68808a b/sql/hive/src/test/resources/golden/show_columns-8-9b0b96593ca513c6932f3ed8df68808a
new file mode 100644
index 0000000000..1711d0c2bb
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/show_columns-8-9b0b96593ca513c6932f3ed8df68808a
@@ -0,0 +1 @@
+a                   
diff --git a/sql/hive/src/test/resources/golden/show_columns-9-6c0fa8be1c19d4d216dfe7427df1275f b/sql/hive/src/test/resources/golden/show_columns-9-6c0fa8be1c19d4d216dfe7427df1275f
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/sql/hive/src/test/resources/golden/show_tblproperties-0-ca75bef7d151a44b6a89dd92333eb12a b/sql/hive/src/test/resources/golden/show_tblproperties-0-ca75bef7d151a44b6a89dd92333eb12a
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/sql/hive/src/test/resources/golden/show_tblproperties-1-be4adb893c7f946ebd76a648ce3cc1ae b/sql/hive/src/test/resources/golden/show_tblproperties-1-be4adb893c7f946ebd76a648ce3cc1ae
new file mode 100644
index 0000000000..0f6cc6f44f
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/show_tblproperties-1-be4adb893c7f946ebd76a648ce3cc1ae
@@ -0,0 +1 @@
+Table tmpfoo does not have property: bar	 
diff --git a/sql/hive/src/test/resources/golden/show_tblproperties-2-7c7993eea8e41cf095afae07772cc16e b/sql/hive/src/test/resources/golden/show_tblproperties-2-7c7993eea8e41cf095afae07772cc16e
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/sql/hive/src/test/resources/golden/show_tblproperties-3-2b4b8c43ef08bdb418405917d475ac1d b/sql/hive/src/test/resources/golden/show_tblproperties-3-2b4b8c43ef08bdb418405917d475ac1d
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/sql/hive/src/test/resources/golden/show_tblproperties-4-6c63215ea599f6533666c4d70606b139 b/sql/hive/src/test/resources/golden/show_tblproperties-4-6c63215ea599f6533666c4d70606b139
new file mode 100644
index 0000000000..ce1a3441a1
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/show_tblproperties-4-6c63215ea599f6533666c4d70606b139
@@ -0,0 +1,6 @@
+	 
+last_modified_by	ocquery
+last_modified_time	1408598216
+tmp	true
+transient_lastDdlTime	1408598216
+bar	bar value
diff --git a/sql/hive/src/test/resources/golden/show_tblproperties-5-be4adb893c7f946ebd76a648ce3cc1ae b/sql/hive/src/test/resources/golden/show_tblproperties-5-be4adb893c7f946ebd76a648ce3cc1ae
new file mode 100644
index 0000000000..37214958da
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/show_tblproperties-5-be4adb893c7f946ebd76a648ce3cc1ae
@@ -0,0 +1 @@
+bar value	 
diff --git a/sql/hive/src/test/resources/golden/show_tblproperties-6-9dd8d67460f558955d96a107ca996ad b/sql/hive/src/test/resources/golden/show_tblproperties-6-9dd8d67460f558955d96a107ca996ad
new file mode 100644
index 0000000000..e69de29bb2
-- 
GitLab