diff --git a/src/backend/commands/createas.c b/src/backend/commands/createas.c index d01b258b65..996fe8f53d 100644 --- a/src/backend/commands/createas.c +++ b/src/backend/commands/createas.c @@ -278,17 +278,12 @@ ExecCreateTableAs(CreateTableAsStmt *stmt, const char *queryString, Assert(query->commandType == CMD_SELECT); /* - * For materialized views, lock down security-restricted operations and - * arrange to make GUC variable changes local to this command. This is - * not necessary for security, but this keeps the behavior similar to - * REFRESH MATERIALIZED VIEW. Otherwise, one could create a materialized - * view not possible to refresh. + * For materialized views, arrange to make GUC variable changes local + * to this command. */ if (is_matview) { GetUserIdAndSecContext(&save_userid, &save_sec_context); - SetUserIdAndSecContext(save_userid, - save_sec_context | SECURITY_RESTRICTED_OPERATION); save_nestlevel = NewGUCNestLevel(); } diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index 2c2208ffb7..e59e53b154 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -420,7 +420,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); %type opt_trusted opt_restart_seqs %type OptTemp -%type OptNoLog +%type OptTempNoLog %type OnCommitOption %type for_locking_strength @@ -4054,7 +4054,7 @@ opt_with_data: *****************************************************************************/ CreateMatViewStmt: - CREATE OptNoLog MATERIALIZED VIEW create_mv_target AS SelectStmt opt_with_data + CREATE OptTempNoLog MATERIALIZED VIEW create_mv_target AS SelectStmt opt_with_data { CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); ctas->query = $7; @@ -4067,7 +4067,7 @@ CreateMatViewStmt: $5->skipData = !($8); $$ = (Node *) ctas; } - | CREATE OptNoLog MATERIALIZED VIEW IF_P NOT EXISTS create_mv_target AS SelectStmt opt_with_data + | CREATE OptTempNoLog MATERIALIZED VIEW IF_P NOT EXISTS create_mv_target AS SelectStmt opt_with_data { CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); ctas->query = $10; @@ -4096,8 +4096,11 @@ create_mv_target: } ; -OptNoLog: UNLOGGED { $$ = RELPERSISTENCE_UNLOGGED; } - | /*EMPTY*/ { $$ = RELPERSISTENCE_PERMANENT; } +OptTempNoLog: + TEMPORARY { $$ = RELPERSISTENCE_TEMP; } + | TEMP { $$ = RELPERSISTENCE_TEMP; } + | UNLOGGED { $$ = RELPERSISTENCE_UNLOGGED; } + | /*EMPTY*/ { $$ = RELPERSISTENCE_PERMANENT; } ;