You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by kg...@apache.org on 2018/02/16 14:52:49 UTC
hive git commit: HIVE-18373: Make it easier to search for column name
in a table (Madhudeep Petwal via Zoltan Haindrich)
Repository: hive
Updated Branches:
refs/heads/master 9e27ad08f -> 80697867a
HIVE-18373: Make it easier to search for column name in a table (Madhudeep Petwal via Zoltan Haindrich)
Signed-off-by: Zoltan Haindrich <ki...@rxd.hu>
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/80697867
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/80697867
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/80697867
Branch: refs/heads/master
Commit: 80697867afc219924c67a55a2f479b7af51ff393
Parents: 9e27ad0
Author: Madhudeep Petwal <ma...@gmail.com>
Authored: Fri Feb 16 15:49:51 2018 +0100
Committer: Zoltan Haindrich <ki...@rxd.hu>
Committed: Fri Feb 16 15:50:21 2018 +0100
----------------------------------------------------------------------
.../org/apache/hadoop/hive/ql/exec/DDLTask.java | 56 ++++++-
.../hive/ql/parse/DDLSemanticAnalyzer.java | 42 ++++-
.../apache/hadoop/hive/ql/parse/HiveParser.g | 4 +-
.../hadoop/hive/ql/plan/ShowColumnsDesc.java | 27 ++++
.../test/queries/clientnegative/show_columns2.q | 7 +-
.../test/queries/clientnegative/show_columns3.q | 3 +-
.../test/queries/clientpositive/show_columns.q | 17 +-
.../results/clientnegative/show_columns2.q.out | 28 +++-
.../results/clientnegative/show_columns3.q.out | 2 +-
.../results/clientpositive/show_columns.q.out | 160 ++++++++++++++++++-
10 files changed, 322 insertions(+), 24 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/80697867/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java
index 3716c15..16b9107 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java
@@ -48,6 +48,8 @@ import java.util.Set;
import java.util.SortedSet;
import java.util.TreeMap;
import java.util.TreeSet;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import java.util.concurrent.ExecutionException;
import com.google.common.collect.ImmutableSet;
@@ -2708,16 +2710,28 @@ public class DDLTask extends Task<DDLWork> implements Serializable {
return 0;
}
+ /**
+ * Write a list of the columns in the table to a file.
+ *
+ * @param db
+ * The database in context.
+ * @param showCols
+ * A ShowColumnsDesc for columns we're interested in.
+ * @return Returns 0 when execution succeeds.
+ * @throws HiveException
+ * Throws this exception if an unexpected error occurs.
+ */
public int showColumns(Hive db, ShowColumnsDesc showCols)
throws HiveException {
Table table = db.getTable(showCols.getTableName());
// write the results in the file
- DataOutputStream outStream = getOutputStream(showCols.getResFile());;
+ DataOutputStream outStream = getOutputStream(showCols.getResFile());
try {
- List<FieldSchema> cols = table.getCols();
- cols.addAll(table.getPartCols());
+ List<FieldSchema> allCols = table.getCols();
+ allCols.addAll(table.getPartCols());
+ List<FieldSchema> cols = getColumnsByPattern(allCols,showCols.getPattern());
// In case the query is served by HiveServer2, don't pad it with spaces,
// as HiveServer2 output is consumed by JDBC/ODBC clients.
boolean isOutputPadded = !SessionState.get().isHiveServerQuery();
@@ -2735,6 +2749,42 @@ public class DDLTask extends Task<DDLWork> implements Serializable {
}
/**
+ * Returns a sorted list of columns matching a column pattern.
+ *
+ * @param cols
+ * Columns of a table.
+ * @param columnPattern
+ * we want to find columns similar to a column pattern.
+ * @return sorted list of columns.
+ */
+ private List<FieldSchema> getColumnsByPattern(List<FieldSchema> cols, String columnPattern) {
+
+ if(columnPattern == null) {
+ columnPattern = "*";
+ }
+ columnPattern = columnPattern.toLowerCase();
+ columnPattern = columnPattern.replaceAll("\\*", ".*");
+ Pattern pattern = Pattern.compile(columnPattern);
+ Matcher matcher = pattern.matcher("");
+
+ SortedSet<FieldSchema> sortedCol = new TreeSet<>( new Comparator<FieldSchema>() {
+ @Override
+ public int compare(FieldSchema f1, FieldSchema f2) {
+ return f1.getName().compareTo(f2.getName());
+ }
+ });
+
+ for(FieldSchema column : cols) {
+ matcher.reset(column.getName());
+ if(matcher.matches()) {
+ sortedCol.add(column);
+ }
+ }
+
+ return new ArrayList<FieldSchema>(sortedCol);
+ }
+
+ /**
* Write a list of the user defined functions to a file.
* @param db
*
http://git-wip-us.apache.org/repos/asf/hive/blob/80697867/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java
index 41d878f..8ad6fce 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java
@@ -2556,17 +2556,45 @@ public class DDLSemanticAnalyzer extends BaseSemanticAnalyzer {
}
private void analyzeShowColumns(ASTNode ast) throws SemanticException {
+
+ // table name has to be present so min child 1 and max child 4
+ if (ast.getChildCount() > 4 || ast.getChildCount()<1) {
+ throw new SemanticException(ErrorMsg.INVALID_AST_TREE.getMsg(ast.toStringTree()));
+ }
+
String tableName = getUnescapedName((ASTNode) ast.getChild(0));
- if (ast.getChildCount() > 1) {
- if (tableName.contains(".")) {
- throw new SemanticException("Duplicates declaration for database name");
- }
- tableName = getUnescapedName((ASTNode) ast.getChild(1)) + "." + tableName;
+
+ ShowColumnsDesc showColumnsDesc = null;
+ String pattern = null;
+ switch(ast.getChildCount()) {
+ case 1: // only tablename no pattern and db
+ showColumnsDesc = new ShowColumnsDesc(ctx.getResFile(), tableName);
+ break;
+ case 2: // tablename and pattern
+ pattern = unescapeSQLString(ast.getChild(1).getText());
+ showColumnsDesc = new ShowColumnsDesc(ctx.getResFile(), tableName, pattern);
+ break;
+ case 3: // specifies db
+ if (tableName.contains(".")) {
+ throw new SemanticException("Duplicates declaration for database name");
+ }
+ tableName = getUnescapedName((ASTNode) ast.getChild(2)) + "." + tableName;
+ showColumnsDesc = new ShowColumnsDesc(ctx.getResFile(), tableName);
+ break;
+ case 4: // specifies db and pattern
+ if (tableName.contains(".")) {
+ throw new SemanticException("Duplicates declaration for database name");
+ }
+ tableName = getUnescapedName((ASTNode) ast.getChild(2)) + "." + tableName;
+ pattern = unescapeSQLString(ast.getChild(3).getText());
+ showColumnsDesc = new ShowColumnsDesc(ctx.getResFile(), tableName, pattern);
+ break;
+ default:
+ break;
}
+
Table tab = getTable(tableName);
inputs.add(new ReadEntity(tab));
-
- ShowColumnsDesc showColumnsDesc = new ShowColumnsDesc(ctx.getResFile(), tableName);
rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(),
showColumnsDesc), conf));
setFetchTask(createFetchTask(showColumnsDesc.getSchema()));
http://git-wip-us.apache.org/repos/asf/hive/blob/80697867/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g b/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g
index 3e84fd6..e431271 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g
@@ -1532,8 +1532,8 @@ showStatement
| KW_SHOW KW_TABLES ((KW_FROM|KW_IN) db_name=identifier)? (KW_LIKE showStmtIdentifier|showStmtIdentifier)? -> ^(TOK_SHOWTABLES (TOK_FROM $db_name)? showStmtIdentifier?)
| KW_SHOW KW_VIEWS ((KW_FROM|KW_IN) db_name=identifier)? (KW_LIKE showStmtIdentifier|showStmtIdentifier)? -> ^(TOK_SHOWVIEWS (TOK_FROM $db_name)? showStmtIdentifier?)
| KW_SHOW KW_MATERIALIZED KW_VIEWS ((KW_FROM|KW_IN) db_name=identifier)? (KW_LIKE showStmtIdentifier|showStmtIdentifier)? -> ^(TOK_SHOWMATERIALIZEDVIEWS (TOK_FROM $db_name)? showStmtIdentifier?)
- | KW_SHOW KW_COLUMNS (KW_FROM|KW_IN) tableName ((KW_FROM|KW_IN) db_name=identifier)?
- -> ^(TOK_SHOWCOLUMNS tableName $db_name?)
+ | KW_SHOW KW_COLUMNS (KW_FROM|KW_IN) tableName ((KW_FROM|KW_IN) db_name=identifier)? (KW_LIKE showStmtIdentifier|showStmtIdentifier)?
+ -> ^(TOK_SHOWCOLUMNS tableName (TOK_FROM $db_name)? showStmtIdentifier?)
| KW_SHOW KW_FUNCTIONS (KW_LIKE showFunctionIdentifier|showFunctionIdentifier)? -> ^(TOK_SHOWFUNCTIONS KW_LIKE? showFunctionIdentifier?)
| KW_SHOW KW_PARTITIONS tabName=tableName partitionSpec? -> ^(TOK_SHOWPARTITIONS $tabName partitionSpec?)
| KW_SHOW KW_CREATE (
http://git-wip-us.apache.org/repos/asf/hive/blob/80697867/ql/src/java/org/apache/hadoop/hive/ql/plan/ShowColumnsDesc.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/ShowColumnsDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/ShowColumnsDesc.java
index 7c6173e..7047f56 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/plan/ShowColumnsDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/ShowColumnsDesc.java
@@ -24,6 +24,7 @@ import org.apache.hadoop.hive.ql.plan.Explain.Level;
public class ShowColumnsDesc extends DDLDesc implements Serializable {
private static final long serialVersionUID = 1L;
+ String pattern;
String tableName;
String resFile;
/**
@@ -63,6 +64,32 @@ public class ShowColumnsDesc extends DDLDesc implements Serializable {
}
/**
+ * @param tableName name of table to show columns of
+ */
+ public ShowColumnsDesc(Path resFile, String tableName, String pattern) {
+ this.resFile = resFile.toString();
+ this.pattern = pattern;
+ this.tableName = tableName;
+ }
+
+
+ /**
+ * @return the pattern
+ */
+ @Explain(displayName = "pattern")
+ public String getPattern() {
+ return pattern;
+ }
+
+ /**
+ * @param pattern
+ * the pattern to set
+ */
+ public void setPattern(String pattern) {
+ this.pattern = pattern;
+ }
+
+ /**
* @return the tableName
*/
@Explain(displayName = "table name", explainLevels = { Level.USER, Level.DEFAULT, Level.EXTENDED })
http://git-wip-us.apache.org/repos/asf/hive/blob/80697867/ql/src/test/queries/clientnegative/show_columns2.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientnegative/show_columns2.q b/ql/src/test/queries/clientnegative/show_columns2.q
index c55b449..508a786 100644
--- a/ql/src/test/queries/clientnegative/show_columns2.q
+++ b/ql/src/test/queries/clientnegative/show_columns2.q
@@ -1,2 +1,7 @@
-SHOW COLUMNS from shcol_test foo;
+CREATE DATABASE test_db;
+USE test_db;
+CREATE TABLE foo(a INT);
+
+use default;
+SHOW COLUMNS from test_db.foo from test_db;
http://git-wip-us.apache.org/repos/asf/hive/blob/80697867/ql/src/test/queries/clientnegative/show_columns3.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientnegative/show_columns3.q b/ql/src/test/queries/clientnegative/show_columns3.q
index 508a786..a17d2dd 100644
--- a/ql/src/test/queries/clientnegative/show_columns3.q
+++ b/ql/src/test/queries/clientnegative/show_columns3.q
@@ -3,5 +3,4 @@ USE test_db;
CREATE TABLE foo(a INT);
use default;
-SHOW COLUMNS from test_db.foo from test_db;
-
+SHOW COLUMNS from foo like "a*" from test_db;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hive/blob/80697867/ql/src/test/queries/clientpositive/show_columns.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/show_columns.q b/ql/src/test/queries/clientpositive/show_columns.q
index 58a3a2c..fdd1ea8 100644
--- a/ql/src/test/queries/clientpositive/show_columns.q
+++ b/ql/src/test/queries/clientpositive/show_columns.q
@@ -8,19 +8,32 @@ SHOW COLUMNS from shcol_test;
-- SHOW COLUMNS
CREATE DATABASE test_db;
USE test_db;
-CREATE TABLE foo(a INT);
+CREATE TABLE foo(col1 INT, col2 INT, col3 INT, cola INT, colb INT, colc INT, a INT, b INT, c INT);
-- SHOW COLUMNS basic syntax tests
USE test_db;
SHOW COLUMNS from foo;
SHOW COLUMNS in foo;
+SHOW COLUMNS in foo 'col*';
+SHOW COLUMNS in foo "col*";
+SHOW COLUMNS from foo 'col*';
+SHOW COLUMNS from foo "col*";
+SHOW COLUMNS from foo "col1|cola";
-- SHOW COLUMNS from a database with a name that requires escaping
CREATE DATABASE `database`;
USE `database`;
-CREATE TABLE foo(a INT);
+CREATE TABLE foo(col1 INT, col2 INT, col3 INT, cola INT, colb INT, colc INT, a INT, b INT, c INT);
SHOW COLUMNS from foo;
+SHOW COLUMNS in foo "col*";
+
+-- Non existing column pattern
+SHOW COLUMNS in foo "nomatch*";
+SHOW COLUMNS in foo "col+";
+SHOW COLUMNS in foo "nomatch";
use default;
SHOW COLUMNS from test_db.foo;
SHOW COLUMNS from foo from test_db;
+SHOW COLUMNS from foo from test_db "col*";
+SHOW COLUMNS from foo from test_db like 'col*';
http://git-wip-us.apache.org/repos/asf/hive/blob/80697867/ql/src/test/results/clientnegative/show_columns2.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientnegative/show_columns2.q.out b/ql/src/test/results/clientnegative/show_columns2.q.out
index c2921eb..a84dedb 100644
--- a/ql/src/test/results/clientnegative/show_columns2.q.out
+++ b/ql/src/test/results/clientnegative/show_columns2.q.out
@@ -1 +1,27 @@
-FAILED: ParseException line 1:29 extraneous input 'foo' expecting EOF near '<EOF>'
+PREHOOK: query: CREATE DATABASE test_db
+PREHOOK: type: CREATEDATABASE
+PREHOOK: Output: database:test_db
+POSTHOOK: query: CREATE DATABASE test_db
+POSTHOOK: type: CREATEDATABASE
+POSTHOOK: Output: database:test_db
+PREHOOK: query: USE test_db
+PREHOOK: type: SWITCHDATABASE
+PREHOOK: Input: database:test_db
+POSTHOOK: query: USE test_db
+POSTHOOK: type: SWITCHDATABASE
+POSTHOOK: Input: database:test_db
+PREHOOK: query: CREATE TABLE foo(a INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:test_db
+PREHOOK: Output: test_db@foo
+POSTHOOK: query: CREATE TABLE foo(a INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:test_db
+POSTHOOK: Output: test_db@foo
+PREHOOK: query: use default
+PREHOOK: type: SWITCHDATABASE
+PREHOOK: Input: database:default
+POSTHOOK: query: use default
+POSTHOOK: type: SWITCHDATABASE
+POSTHOOK: Input: database:default
+FAILED: SemanticException Duplicates declaration for database name
http://git-wip-us.apache.org/repos/asf/hive/blob/80697867/ql/src/test/results/clientnegative/show_columns3.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientnegative/show_columns3.q.out b/ql/src/test/results/clientnegative/show_columns3.q.out
index a84dedb..e7dcbf9 100644
--- a/ql/src/test/results/clientnegative/show_columns3.q.out
+++ b/ql/src/test/results/clientnegative/show_columns3.q.out
@@ -24,4 +24,4 @@ PREHOOK: Input: database:default
POSTHOOK: query: use default
POSTHOOK: type: SWITCHDATABASE
POSTHOOK: Input: database:default
-FAILED: SemanticException Duplicates declaration for database name
+FAILED: ParseException line 2:32 missing EOF at 'from' near '"a*"'
http://git-wip-us.apache.org/repos/asf/hive/blob/80697867/ql/src/test/results/clientpositive/show_columns.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/show_columns.q.out b/ql/src/test/results/clientpositive/show_columns.q.out
index 4a67fb3..7ad2686 100644
--- a/ql/src/test/results/clientpositive/show_columns.q.out
+++ b/ql/src/test/results/clientpositive/show_columns.q.out
@@ -33,9 +33,9 @@ PREHOOK: Input: default@shcol_test
POSTHOOK: query: SHOW COLUMNS from shcol_test
POSTHOOK: type: SHOWCOLUMNS
POSTHOOK: Input: default@shcol_test
+ds
key
value
-ds
PREHOOK: query: CREATE DATABASE test_db
PREHOOK: type: CREATEDATABASE
PREHOOK: Output: database:test_db
@@ -48,11 +48,11 @@ PREHOOK: Input: database:test_db
POSTHOOK: query: USE test_db
POSTHOOK: type: SWITCHDATABASE
POSTHOOK: Input: database:test_db
-PREHOOK: query: CREATE TABLE foo(a INT)
+PREHOOK: query: CREATE TABLE foo(col1 INT, col2 INT, col3 INT, cola INT, colb INT, colc INT, a INT, b INT, c INT)
PREHOOK: type: CREATETABLE
PREHOOK: Output: database:test_db
PREHOOK: Output: test_db@foo
-POSTHOOK: query: CREATE TABLE foo(a INT)
+POSTHOOK: query: CREATE TABLE foo(col1 INT, col2 INT, col3 INT, cola INT, colb INT, colc INT, a INT, b INT, c INT)
POSTHOOK: type: CREATETABLE
POSTHOOK: Output: database:test_db
POSTHOOK: Output: test_db@foo
@@ -69,6 +69,14 @@ POSTHOOK: query: SHOW COLUMNS from foo
POSTHOOK: type: SHOWCOLUMNS
POSTHOOK: Input: test_db@foo
a
+b
+c
+col1
+col2
+col3
+cola
+colb
+colc
PREHOOK: query: SHOW COLUMNS in foo
PREHOOK: type: SHOWCOLUMNS
PREHOOK: Input: test_db@foo
@@ -76,6 +84,70 @@ POSTHOOK: query: SHOW COLUMNS in foo
POSTHOOK: type: SHOWCOLUMNS
POSTHOOK: Input: test_db@foo
a
+b
+c
+col1
+col2
+col3
+cola
+colb
+colc
+PREHOOK: query: SHOW COLUMNS in foo 'col*'
+PREHOOK: type: SHOWCOLUMNS
+PREHOOK: Input: test_db@foo
+POSTHOOK: query: SHOW COLUMNS in foo 'col*'
+POSTHOOK: type: SHOWCOLUMNS
+POSTHOOK: Input: test_db@foo
+col1
+col2
+col3
+cola
+colb
+colc
+PREHOOK: query: SHOW COLUMNS in foo "col*"
+PREHOOK: type: SHOWCOLUMNS
+PREHOOK: Input: test_db@foo
+POSTHOOK: query: SHOW COLUMNS in foo "col*"
+POSTHOOK: type: SHOWCOLUMNS
+POSTHOOK: Input: test_db@foo
+col1
+col2
+col3
+cola
+colb
+colc
+PREHOOK: query: SHOW COLUMNS from foo 'col*'
+PREHOOK: type: SHOWCOLUMNS
+PREHOOK: Input: test_db@foo
+POSTHOOK: query: SHOW COLUMNS from foo 'col*'
+POSTHOOK: type: SHOWCOLUMNS
+POSTHOOK: Input: test_db@foo
+col1
+col2
+col3
+cola
+colb
+colc
+PREHOOK: query: SHOW COLUMNS from foo "col*"
+PREHOOK: type: SHOWCOLUMNS
+PREHOOK: Input: test_db@foo
+POSTHOOK: query: SHOW COLUMNS from foo "col*"
+POSTHOOK: type: SHOWCOLUMNS
+POSTHOOK: Input: test_db@foo
+col1
+col2
+col3
+cola
+colb
+colc
+PREHOOK: query: SHOW COLUMNS from foo "col1|cola"
+PREHOOK: type: SHOWCOLUMNS
+PREHOOK: Input: test_db@foo
+POSTHOOK: query: SHOW COLUMNS from foo "col1|cola"
+POSTHOOK: type: SHOWCOLUMNS
+POSTHOOK: Input: test_db@foo
+col1
+cola
PREHOOK: query: CREATE DATABASE `database`
PREHOOK: type: CREATEDATABASE
PREHOOK: Output: database:database
@@ -88,11 +160,11 @@ PREHOOK: Input: database:database
POSTHOOK: query: USE `database`
POSTHOOK: type: SWITCHDATABASE
POSTHOOK: Input: database:database
-PREHOOK: query: CREATE TABLE foo(a INT)
+PREHOOK: query: CREATE TABLE foo(col1 INT, col2 INT, col3 INT, cola INT, colb INT, colc INT, a INT, b INT, c INT)
PREHOOK: type: CREATETABLE
PREHOOK: Output: database:database
PREHOOK: Output: database@foo
-POSTHOOK: query: CREATE TABLE foo(a INT)
+POSTHOOK: query: CREATE TABLE foo(col1 INT, col2 INT, col3 INT, cola INT, colb INT, colc INT, a INT, b INT, c INT)
POSTHOOK: type: CREATETABLE
POSTHOOK: Output: database:database
POSTHOOK: Output: database@foo
@@ -103,6 +175,44 @@ POSTHOOK: query: SHOW COLUMNS from foo
POSTHOOK: type: SHOWCOLUMNS
POSTHOOK: Input: database@foo
a
+b
+c
+col1
+col2
+col3
+cola
+colb
+colc
+PREHOOK: query: SHOW COLUMNS in foo "col*"
+PREHOOK: type: SHOWCOLUMNS
+PREHOOK: Input: database@foo
+POSTHOOK: query: SHOW COLUMNS in foo "col*"
+POSTHOOK: type: SHOWCOLUMNS
+POSTHOOK: Input: database@foo
+col1
+col2
+col3
+cola
+colb
+colc
+PREHOOK: query: SHOW COLUMNS in foo "nomatch*"
+PREHOOK: type: SHOWCOLUMNS
+PREHOOK: Input: database@foo
+POSTHOOK: query: SHOW COLUMNS in foo "nomatch*"
+POSTHOOK: type: SHOWCOLUMNS
+POSTHOOK: Input: database@foo
+PREHOOK: query: SHOW COLUMNS in foo "col+"
+PREHOOK: type: SHOWCOLUMNS
+PREHOOK: Input: database@foo
+POSTHOOK: query: SHOW COLUMNS in foo "col+"
+POSTHOOK: type: SHOWCOLUMNS
+POSTHOOK: Input: database@foo
+PREHOOK: query: SHOW COLUMNS in foo "nomatch"
+PREHOOK: type: SHOWCOLUMNS
+PREHOOK: Input: database@foo
+POSTHOOK: query: SHOW COLUMNS in foo "nomatch"
+POSTHOOK: type: SHOWCOLUMNS
+POSTHOOK: Input: database@foo
PREHOOK: query: use default
PREHOOK: type: SWITCHDATABASE
PREHOOK: Input: database:default
@@ -116,6 +226,14 @@ POSTHOOK: query: SHOW COLUMNS from test_db.foo
POSTHOOK: type: SHOWCOLUMNS
POSTHOOK: Input: test_db@foo
a
+b
+c
+col1
+col2
+col3
+cola
+colb
+colc
PREHOOK: query: SHOW COLUMNS from foo from test_db
PREHOOK: type: SHOWCOLUMNS
PREHOOK: Input: test_db@foo
@@ -123,3 +241,35 @@ POSTHOOK: query: SHOW COLUMNS from foo from test_db
POSTHOOK: type: SHOWCOLUMNS
POSTHOOK: Input: test_db@foo
a
+b
+c
+col1
+col2
+col3
+cola
+colb
+colc
+PREHOOK: query: SHOW COLUMNS from foo from test_db "col*"
+PREHOOK: type: SHOWCOLUMNS
+PREHOOK: Input: test_db@foo
+POSTHOOK: query: SHOW COLUMNS from foo from test_db "col*"
+POSTHOOK: type: SHOWCOLUMNS
+POSTHOOK: Input: test_db@foo
+col1
+col2
+col3
+cola
+colb
+colc
+PREHOOK: query: SHOW COLUMNS from foo from test_db like 'col*'
+PREHOOK: type: SHOWCOLUMNS
+PREHOOK: Input: test_db@foo
+POSTHOOK: query: SHOW COLUMNS from foo from test_db like 'col*'
+POSTHOOK: type: SHOWCOLUMNS
+POSTHOOK: Input: test_db@foo
+col1
+col2
+col3
+cola
+colb
+colc