aboutsummaryrefslogtreecommitdiff
path: root/src/backend/tcop/utility.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/tcop/utility.c')
-rw-r--r--src/backend/tcop/utility.c46
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);