aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--distribution/src/resources/drill-override-example.conf3
-rw-r--r--exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/SqlConverter.java1
-rw-r--r--exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestCTTAS.java26
3 files changed, 28 insertions, 2 deletions
diff --git a/distribution/src/resources/drill-override-example.conf b/distribution/src/resources/drill-override-example.conf
index 3baac5e2b..43f9942ba 100644
--- a/distribution/src/resources/drill-override-example.conf
+++ b/distribution/src/resources/drill-override-example.conf
@@ -185,8 +185,7 @@ drill.exec: {
root: "/app/drill"
}
},
- # Settings for Temporary Tables.
- # See https://gist.github.com/arina-ielchiieva/50158175867a18eee964b5ba36455fbf#file-temporarytablessupport-md.
+ # Settings for Temporary Tables (see https://issues.apache.org/jira/browse/DRILL-4956 for details).
# Temporary table can be created ONLY in default temporary workspace.
# Full workspace name should be indicated (including schema and workspace separated by dot).
# Workspace MUST be file-based and writable. Workspace name is case-sensitive.
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/SqlConverter.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/SqlConverter.java
index 28196c112..d20fc060e 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/SqlConverter.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/SqlConverter.java
@@ -333,6 +333,7 @@ public class SqlConverter {
}
private RelNode expandView(String queryString, SqlConverter converter) {
+ converter.disallowTemporaryTables();
final SqlNode parsedNode = converter.parse(queryString);
final SqlNode validatedNode = converter.validate(parsedNode);
return converter.toRel(validatedNode);
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestCTTAS.java b/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestCTTAS.java
index 93c8cad3c..5d83beb26 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestCTTAS.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestCTTAS.java
@@ -338,6 +338,32 @@ public class TestCTTAS extends BaseTestQuery {
}
}
+ @Test(expected = UserRemoteException.class)
+ public void testTemporaryTablesInViewExpansionLogic() throws Exception {
+ String tableName = "table_for_expansion_logic_test";
+ String viewName = "view_for_expansion_logic_test";
+ test("use %s", TEMP_SCHEMA);
+ test("create table %s as select 'TABLE' as c1 from (values(1))", tableName);
+ test("create view %s as select * from %s", viewName, tableName);
+
+ testBuilder()
+ .sqlQuery("select * from %s", viewName)
+ .unOrdered()
+ .baselineColumns("c1")
+ .baselineValues("TABLE")
+ .go();
+
+ test("drop table %s", tableName);
+ test("create temporary table %s as select 'TEMP' as c1 from (values(1))", tableName);
+ try {
+ test("select * from %s", viewName);
+ } catch (UserRemoteException e) {
+ assertThat(e.getMessage(), containsString(String.format(
+ "VALIDATION ERROR: Temporary tables usage is disallowed. Used temporary table name: [%s]", tableName)));
+ throw e;
+ }
+ }
+
@Test
public void testManualDropWithoutSchema() throws Exception {
String temporaryTableName = "temporary_table_to_drop_without_schema";