diff options
author | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2016-03-23 23:01:35 -0300 |
---|---|---|
committer | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2016-03-23 23:01:35 -0300 |
commit | 473b93287040b20017cc25a157cffdc5b978c254 (patch) | |
tree | 58f662a65247525b2e5e178b9050feb3f3056590 /src/backend/tcop/utility.c | |
parent | 2c6af4f44228d76d3351fe26f68b00b55cdd239a (diff) |
Support CREATE ACCESS METHOD
This enables external code to create access methods. This is useful so
that extensions can add their own access methods which can be formally
tracked for dependencies, so that DROP operates correctly. Also, having
explicit support makes pg_dump work correctly.
Currently only index AMs are supported, but we expect different types to
be added in the future.
Authors: Alexander Korotkov, Petr Jelínek
Reviewed-By: Teodor Sigaev, Petr Jelínek, Jim Nasby
Commitfest-URL: https://commitfest.postgresql.org/9/353/
Discussion: https://www.postgresql.org/message-id/CAPpHfdsXwZmojm6Dx+TJnpYk27kT4o7Ri6X_4OSWcByu1Rm+VA@mail.gmail.com
Diffstat (limited to 'src/backend/tcop/utility.c')
-rw-r--r-- | src/backend/tcop/utility.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c index 045f7f06ee2..4d0aac979fc 100644 --- a/src/backend/tcop/utility.c +++ b/src/backend/tcop/utility.c @@ -1520,6 +1520,10 @@ ProcessUtilitySlow(Node *parsetree, address = ExecSecLabelStmt((SecLabelStmt *) parsetree); break; + case T_CreateAmStmt: + address = CreateAccessMethod((CreateAmStmt *) parsetree); + break; + default: elog(ERROR, "unrecognized node type: %d", (int) nodeTag(parsetree)); @@ -2160,6 +2164,9 @@ CreateCommandTag(Node *parsetree) case OBJECT_TRANSFORM: tag = "DROP TRANSFORM"; break; + case OBJECT_ACCESS_METHOD: + tag = "DROP ACCESS METHOD"; + break; default: tag = "???"; } @@ -2256,6 +2263,9 @@ CreateCommandTag(Node *parsetree) case OBJECT_COLLATION: tag = "CREATE COLLATION"; break; + case OBJECT_ACCESS_METHOD: + tag = "CREATE ACCESS METHOD"; + break; default: tag = "???"; } @@ -2519,6 +2529,10 @@ CreateCommandTag(Node *parsetree) tag = "ALTER POLICY"; break; + case T_CreateAmStmt: + tag = "CREATE ACCESS METHOD"; + break; + case T_PrepareStmt: tag = "PREPARE"; break; @@ -3076,6 +3090,10 @@ GetCommandLogLevel(Node *parsetree) lev = LOGSTMT_DDL; break; + case T_CreateAmStmt: + lev = LOGSTMT_DDL; + break; + /* already-planned queries */ case T_PlannedStmt: { |