diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2000-08-11 23:45:35 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2000-08-11 23:45:35 +0000 |
commit | 4951a8826d4f7731c7650af447e673e210991189 (patch) | |
tree | ea7ba24261e7e05cd9eec8ad32ae0ad5a28279cd /src/backend/commands/trigger.c | |
parent | 66fd8f854fdc3faa30e4015020268217b4bb6747 (diff) | |
download | postgresql-4951a8826d4f7731c7650af447e673e210991189.tar.gz postgresql-4951a8826d4f7731c7650af447e673e210991189.zip |
copyObject() and equal() now know about all parse-time node types,
including utility statements. Still can't copy or compare executor
state, but at present that doesn't seem to be necessary. This makes
it possible to execute most (all?) utility statements in plpgsql.
Had to change parsetree representation of CreateTrigStmt so that it
contained only legal Nodes, and not bare string constants.
Diffstat (limited to 'src/backend/commands/trigger.c')
-rw-r--r-- | src/backend/commands/trigger.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c index a03f140b64f..4a63094d6e2 100644 --- a/src/backend/commands/trigger.c +++ b/src/backend/commands/trigger.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/trigger.c,v 1.75 2000/08/03 19:19:18 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/trigger.c,v 1.76 2000/08/11 23:45:28 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -212,7 +212,7 @@ CreateTrigger(CreateTrigStmt *stmt) foreach(le, stmt->args) { - char *ar = (char *) lfirst(le); + char *ar = ((Value*) lfirst(le))->val.str; len += strlen(ar) + 4; for (; *ar; ar++) @@ -222,10 +222,10 @@ CreateTrigger(CreateTrigStmt *stmt) } } args = (char *) palloc(len + 1); - args[0] = 0; + args[0] = '\0'; foreach(le, stmt->args) { - char *s = (char *) lfirst(le); + char *s = ((Value*) lfirst(le))->val.str; char *d = args + strlen(args); while (*s) @@ -234,8 +234,7 @@ CreateTrigger(CreateTrigStmt *stmt) *d++ = '\\'; *d++ = *s++; } - *d = 0; - strcat(args, "\\000"); + strcpy(d, "\\000"); } values[Anum_pg_trigger_tgnargs - 1] = Int16GetDatum(nargs); values[Anum_pg_trigger_tgargs - 1] = DirectFunctionCall1(byteain, |