diff options
Diffstat (limited to 'src/backend/tcop/utility.c')
-rw-r--r-- | src/backend/tcop/utility.c | 46 |
1 files changed, 45 insertions, 1 deletions
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c index 493dbd7587a..a45c449535e 100644 --- a/src/backend/tcop/utility.c +++ b/src/backend/tcop/utility.c @@ -10,7 +10,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.182 2002/11/15 03:09:38 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.183 2002/12/06 03:28:33 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -36,6 +36,7 @@ #include "commands/sequence.h" #include "commands/tablecmds.h" #include "commands/trigger.h" +#include "commands/typecmds.h" #include "commands/user.h" #include "commands/vacuum.h" #include "commands/view.h" @@ -560,6 +561,49 @@ ProcessUtility(Node *parsetree, } break; + case T_AlterDomainStmt: + { + AlterDomainStmt *stmt = (AlterDomainStmt *) parsetree; + + /* + * Some or all of these functions are recursive to cover + * inherited things, so permission checks are done there. + */ + switch (stmt->subtype) + { + case 'T': /* ALTER COLUMN DEFAULT */ + + /* + * Recursively alter column default for table and, + * if requested, for descendants + */ + AlterDomainDefault(stmt->typename, + stmt->def); + break; + case 'N': /* ALTER COLUMN DROP NOT NULL */ + AlterDomainNotNull(stmt->typename, + false); + break; + case 'O': /* ALTER COLUMN SET NOT NULL */ + AlterDomainNotNull(stmt->typename, + true); + break; + case 'C': /* ADD CONSTRAINT */ + AlterDomainAddConstraint(stmt->typename, + stmt->def); + break; + case 'X': /* DROP CONSTRAINT */ + AlterDomainDropConstraint(stmt->typename, + stmt->name, + stmt->behavior); + break; + default: /* oops */ + elog(ERROR, "T_AlterDomainStmt: unknown subtype"); + break; + } + } + break; + case T_GrantStmt: ExecuteGrantStmt((GrantStmt *) parsetree); |