summaryrefslogtreecommitdiff
path: root/src/backend/tcop
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2002-12-06 05:00:34 +0000
committerBruce Momjian <bruce@momjian.us>2002-12-06 05:00:34 +0000
commit05a6b3791268cfb3739f7e48b8bc034a3b7e92b5 (patch)
treef7de6c95b745c534b2f1716e7253b8468ef98e30 /src/backend/tcop
parent78705d0a190343598e85f3041200b96cf1003568 (diff)
downloadpostgresql-05a6b3791268cfb3739f7e48b8bc034a3b7e92b5.tar.gz
Re-addd Rod's ALTER DOMAIN patch.
Diffstat (limited to 'src/backend/tcop')
-rw-r--r--src/backend/tcop/postgres.c8
-rw-r--r--src/backend/tcop/utility.c46
2 files changed, 51 insertions, 3 deletions
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index 7bc800bd3c..9ac2a052d6 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.312 2002/12/06 03:43:13 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.313 2002/12/06 05:00:26 momjian Exp $
*
* NOTES
* this is the "main" module of the postgres backend and
@@ -1781,7 +1781,7 @@ PostgresMain(int argc, char *argv[], const char *username)
if (!IsUnderPostmaster)
{
puts("\nPOSTGRES backend interactive interface ");
- puts("$Revision: 1.312 $ $Date: 2002/12/06 03:43:13 $\n");
+ puts("$Revision: 1.313 $ $Date: 2002/12/06 05:00:26 $\n");
}
/*
@@ -2319,6 +2319,10 @@ CreateCommandTag(Node *parsetree)
tag = "ALTER TABLE";
break;
+ case T_AlterDomainStmt:
+ tag = "ALTER DOMAIN";
+ break;
+
case T_GrantStmt:
{
GrantStmt *stmt = (GrantStmt *) parsetree;
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c
index d52ed258f3..40228601d7 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.184 2002/12/06 03:43:16 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.185 2002/12/06 05:00:31 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);