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 8aa971a639..f72e08c14f 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
@@ -2799,7 +2799,7 @@ private int showTablesOrViews(Hive db, ShowTablesDesc showDesc) throws HiveExcep
LOG.debug("Found {} table(s) matching the SHOW TABLES statement.", tablesOrViews.size());
} else if (type == TableType.MATERIALIZED_VIEW) {
materializedViews = new ArrayList<>();
- materializedViews.addAll(db.getAllMaterializedViewObjects(dbName));
+ materializedViews.addAll(db.getMaterializedViewObjectsByPattern(dbName, pattern));
LOG.debug("Found {} materialized view(s) matching the SHOW MATERIALIZED VIEWS statement.", materializedViews.size());
} else if (type == TableType.VIRTUAL_VIEW) {
tablesOrViews = db.getTablesByType(dbName, pattern, type);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
index 50e8c14ac0..e75cda22a9 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
@@ -1310,6 +1310,17 @@ public Table getTable(final String dbName, final String tableName,
return getTableObjects(dbName, ".*", TableType.MATERIALIZED_VIEW);
}
+ /**
+ * Get materialized views for the specified database that match the provided regex pattern.
+ * @param dbName
+ * @param pattern
+ * @return List of materialized view table objects
+ * @throws HiveException
+ */
+ public List
getMaterializedViewObjectsByPattern(String dbName, String pattern) throws HiveException {
+ return getTableObjects(dbName, pattern, TableType.MATERIALIZED_VIEW);
+ }
+
private List getTableObjects(String dbName, String pattern, TableType tableType) throws HiveException {
try {
return Lists.transform(getMSC().getTableObjectsByName(dbName, getTablesByType(dbName, pattern, tableType)),
diff --git a/ql/src/test/queries/clientpositive/show_materialized_views.q b/ql/src/test/queries/clientpositive/show_materialized_views.q
index 7c91b2eb5e..c6ae0210b7 100644
--- a/ql/src/test/queries/clientpositive/show_materialized_views.q
+++ b/ql/src/test/queries/clientpositive/show_materialized_views.q
@@ -30,9 +30,9 @@ SELECT * FROM shtb_test2 where KEY > 100 and KEY < 200;
USE test1;
SHOW MATERIALIZED VIEWS;
-SHOW MATERIALIZED VIEWS 'test_*';
+SHOW MATERIALIZED VIEWS '*test*';
SHOW MATERIALIZED VIEWS '*view2';
-SHOW MATERIALIZED VIEWS LIKE 'test_view1|test_view2';
+SHOW MATERIALIZED VIEWS LIKE 'shtb_test1_view1|shtb_test1_view2';
USE test2;
SHOW MATERIALIZED VIEWS 'shtb_*';
@@ -43,7 +43,7 @@ SHOW MATERIALIZED VIEWS FROM test1;
SHOW MATERIALIZED VIEWS FROM test2;
SHOW MATERIALIZED VIEWS IN test1;
SHOW MATERIALIZED VIEWS IN default;
-SHOW MATERIALIZED VIEWS IN test1 "shtb_test_*";
+SHOW MATERIALIZED VIEWS IN test1 "shtb_test*";
DESCRIBE FORMATTED test1.shtb_full_view2;
DESCRIBE FORMATTED test1.shtb_test1_view1;
DESCRIBE FORMATTED test1.shtb_test1_view2;
diff --git a/ql/src/test/results/clientpositive/show_materialized_views.q.out b/ql/src/test/results/clientpositive/show_materialized_views.q.out
index 2a00902ee0..6f5ba6a0e4 100644
--- a/ql/src/test/results/clientpositive/show_materialized_views.q.out
+++ b/ql/src/test/results/clientpositive/show_materialized_views.q.out
@@ -131,12 +131,11 @@ shtb_full_view2 Yes Manual refresh (Valid for 5min)
shtb_test1_view1 No Manual refresh
shtb_test1_view2 Yes Manual refresh (Valid always)
-PREHOOK: query: SHOW MATERIALIZED VIEWS 'test_*'
+PREHOOK: query: SHOW MATERIALIZED VIEWS '*test*'
PREHOOK: type: SHOWMATERIALIZEDVIEWS
-POSTHOOK: query: SHOW MATERIALIZED VIEWS 'test_*'
+POSTHOOK: query: SHOW MATERIALIZED VIEWS '*test*'
POSTHOOK: type: SHOWMATERIALIZEDVIEWS
# MV Name Rewriting Enabled Mode
-shtb_full_view2 Yes Manual refresh (Valid for 5min)
shtb_test1_view1 No Manual refresh
shtb_test1_view2 Yes Manual refresh (Valid always)
@@ -146,15 +145,13 @@ POSTHOOK: query: SHOW MATERIALIZED VIEWS '*view2'
POSTHOOK: type: SHOWMATERIALIZEDVIEWS
# MV Name Rewriting Enabled Mode
shtb_full_view2 Yes Manual refresh (Valid for 5min)
-shtb_test1_view1 No Manual refresh
shtb_test1_view2 Yes Manual refresh (Valid always)
-PREHOOK: query: SHOW MATERIALIZED VIEWS LIKE 'test_view1|test_view2'
+PREHOOK: query: SHOW MATERIALIZED VIEWS LIKE 'shtb_test1_view1|shtb_test1_view2'
PREHOOK: type: SHOWMATERIALIZEDVIEWS
-POSTHOOK: query: SHOW MATERIALIZED VIEWS LIKE 'test_view1|test_view2'
+POSTHOOK: query: SHOW MATERIALIZED VIEWS LIKE 'shtb_test1_view1|shtb_test1_view2'
POSTHOOK: type: SHOWMATERIALIZEDVIEWS
# MV Name Rewriting Enabled Mode
-shtb_full_view2 Yes Manual refresh (Valid for 5min)
shtb_test1_view1 No Manual refresh
shtb_test1_view2 Yes Manual refresh (Valid always)
@@ -208,12 +205,11 @@ PREHOOK: query: SHOW MATERIALIZED VIEWS IN default
PREHOOK: type: SHOWMATERIALIZEDVIEWS
POSTHOOK: query: SHOW MATERIALIZED VIEWS IN default
POSTHOOK: type: SHOWMATERIALIZEDVIEWS
-PREHOOK: query: SHOW MATERIALIZED VIEWS IN test1 "shtb_test_*"
+PREHOOK: query: SHOW MATERIALIZED VIEWS IN test1 "shtb_test*"
PREHOOK: type: SHOWMATERIALIZEDVIEWS
-POSTHOOK: query: SHOW MATERIALIZED VIEWS IN test1 "shtb_test_*"
+POSTHOOK: query: SHOW MATERIALIZED VIEWS IN test1 "shtb_test*"
POSTHOOK: type: SHOWMATERIALIZEDVIEWS
# MV Name Rewriting Enabled Mode
-shtb_full_view2 Yes Manual refresh (Valid for 5min)
shtb_test1_view1 No Manual refresh
shtb_test1_view2 Yes Manual refresh (Valid always)
@@ -343,10 +339,6 @@ PREHOOK: query: SHOW MATERIALIZED VIEWS IN test2 LIKE "nomatch"
PREHOOK: type: SHOWMATERIALIZEDVIEWS
POSTHOOK: query: SHOW MATERIALIZED VIEWS IN test2 LIKE "nomatch"
POSTHOOK: type: SHOWMATERIALIZEDVIEWS
-# MV Name Rewriting Enabled Mode
-shtb_test1_view1 No Manual refresh
-shtb_test2_view2 No Manual refresh
-
PREHOOK: query: CREATE DATABASE `database`
PREHOOK: type: CREATEDATABASE
PREHOOK: Output: database:database