diff options
author | Vadim B. Mikheev <vadim4o@yahoo.com> | 1997-10-02 13:52:29 +0000 |
---|---|---|
committer | Vadim B. Mikheev <vadim4o@yahoo.com> | 1997-10-02 13:52:29 +0000 |
commit | 1b677e7e34aefd11031e204a3c31aefa93ee944c (patch) | |
tree | cac3f8448806e815bd0dc253abfca89186cb24e4 | |
parent | 0c8ef6e5cb97470958ec33720cff6114ef237f65 (diff) | |
download | postgresql-1b677e7e34aefd11031e204a3c31aefa93ee944c.tar.gz postgresql-1b677e7e34aefd11031e204a3c31aefa93ee944c.zip |
Fix \ handling
-rw-r--r-- | src/backend/commands/trigger.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c index c3116ca8829..9215f410555 100644 --- a/src/backend/commands/trigger.c +++ b/src/backend/commands/trigger.c @@ -159,14 +159,31 @@ CreateTrigger(CreateTrigStmt * stmt) foreach(le, stmt->args) { - char *ar = (char *) lfirst(le); + char *ar = (char *) lfirst(le); len += strlen(ar) + 4; + for ( ; *ar; ar++) + { + if (*ar == '\\') + len++; + } } args = (char *) palloc(len + 1); args[0] = 0; foreach(le, stmt->args) - sprintf(args + strlen(args), "%s\\000", (char *) lfirst(le)); + { + char *s = (char *) lfirst(le); + char *d = args + strlen(args); + + while (*s) + { + if (*s == '\\') + *d++ = '\\'; + *d++ = *s++; + } + *d = 0; + strcat(args, "\\000"); + } values[Anum_pg_trigger_tgnargs - 1] = Int16GetDatum(nargs); values[Anum_pg_trigger_tgargs - 1] = PointerGetDatum(byteain(args)); } |