diff --git a/presto-iceberg/src/test/java/com/facebook/presto/iceberg/rest/TestIcebergSmokeRestNestedNamespace.java b/presto-iceberg/src/test/java/com/facebook/presto/iceberg/rest/TestIcebergSmokeRestNestedNamespace.java index 6660515ae6811..1613bcfd9ba10 100644 --- a/presto-iceberg/src/test/java/com/facebook/presto/iceberg/rest/TestIcebergSmokeRestNestedNamespace.java +++ b/presto-iceberg/src/test/java/com/facebook/presto/iceberg/rest/TestIcebergSmokeRestNestedNamespace.java @@ -339,10 +339,12 @@ public void testView() assertUpdate(session, "CREATE VIEW view_orders AS SELECT * from orders"); assertQuery(session, "SELECT * FROM view_orders", "SELECT * from orders"); assertThat(computeActual("SHOW CREATE VIEW view_orders").getOnlyValue()) - .isEqualTo(format("CREATE VIEW iceberg.\"%s\".view_orders AS\n" + - "SELECT *\n" + - "FROM\n" + - " orders", schemaName)); + .isEqualTo(format("CREATE VIEW iceberg.\"%s\".view_orders SECURITY %s AS\n" + + "SELECT *\n" + + "FROM\n" + + " orders", + schemaName, + "DEFINER")); assertUpdate(session, "DROP VIEW view_orders"); } diff --git a/presto-main/src/main/java/com/facebook/presto/sql/rewrite/ShowQueriesRewrite.java b/presto-main/src/main/java/com/facebook/presto/sql/rewrite/ShowQueriesRewrite.java index 55493e19736a9..0b56b19409727 100644 --- a/presto-main/src/main/java/com/facebook/presto/sql/rewrite/ShowQueriesRewrite.java +++ b/presto-main/src/main/java/com/facebook/presto/sql/rewrite/ShowQueriesRewrite.java @@ -472,7 +472,8 @@ protected Node visitShowCreate(ShowCreate node, Void context) } Query query = parseView(viewDefinition.get().getOriginalSql(), objectName, node); - String sql = formatSql(new CreateView(createQualifiedName(objectName), query, false, Optional.empty()), Optional.of(parameters)).trim(); + CreateView.Security security = (viewDefinition.get().isRunAsInvoker()) ? CreateView.Security.INVOKER : CreateView.Security.DEFINER; + String sql = formatSql(new CreateView(createQualifiedName(objectName), query, false, Optional.of(security)), Optional.of(parameters)).trim(); return singleValueQuery("Create View", sql); } diff --git a/presto-parser/src/main/java/com/facebook/presto/sql/SqlFormatter.java b/presto-parser/src/main/java/com/facebook/presto/sql/SqlFormatter.java index bb853ba01a8e2..29553e2bc4c95 100644 --- a/presto-parser/src/main/java/com/facebook/presto/sql/SqlFormatter.java +++ b/presto-parser/src/main/java/com/facebook/presto/sql/SqlFormatter.java @@ -583,8 +583,7 @@ protected Void visitCreateView(CreateView node, Integer indent) node.getSecurity().ifPresent(security -> builder.append(" SECURITY ") - .append(security.toString()) - .append(" ")); + .append(security.toString())); builder.append(" AS\n"); diff --git a/presto-spark-base/src/test/java/com/facebook/presto/spark/TestPrestoSparkQueryRunner.java b/presto-spark-base/src/test/java/com/facebook/presto/spark/TestPrestoSparkQueryRunner.java index 1a030f4184c0a..9a07a74e15ecb 100644 --- a/presto-spark-base/src/test/java/com/facebook/presto/spark/TestPrestoSparkQueryRunner.java +++ b/presto-spark-base/src/test/java/com/facebook/presto/spark/TestPrestoSparkQueryRunner.java @@ -1202,7 +1202,7 @@ public void testCreateAlterTable() public void testCreateDropView() { // create table with default format orc - String createViewSql = "CREATE VIEW hive.hive_test.hive_view AS\n" + + String createViewSql = "CREATE VIEW hive.hive_test.hive_view SECURITY DEFINER AS\n" + "SELECT *\n" + "FROM\n" + " orders"; diff --git a/presto-tests/src/main/java/com/facebook/presto/tests/AbstractTestDistributedQueries.java b/presto-tests/src/main/java/com/facebook/presto/tests/AbstractTestDistributedQueries.java index 76197a25dae8a..af59766dd458e 100644 --- a/presto-tests/src/main/java/com/facebook/presto/tests/AbstractTestDistributedQueries.java +++ b/presto-tests/src/main/java/com/facebook/presto/tests/AbstractTestDistributedQueries.java @@ -968,10 +968,11 @@ public void testViewMetadata() // test SHOW CREATE VIEW String expectedSql = formatSqlText(format( - "CREATE VIEW %s.%s.%s AS %s", + "CREATE VIEW %s.%s.%s SECURITY %s AS %s", getSession().getCatalog().get(), getSession().getSchema().get(), "meta_test_view", + "DEFINER", query)).trim(); actual = computeActual("SHOW CREATE VIEW meta_test_view");