Quote column names when inserting CDRs into postgres to avoid conflicts
authorSean Bright <sean@malleable.com>
Sun, 29 Jun 2008 12:06:46 +0000 (12:06 +0000)
committerSean Bright <sean@malleable.com>
Sun, 29 Jun 2008 12:06:46 +0000 (12:06 +0000)
with reserved words.

(closes issue #12947)
Reported by: panolex

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@126274 65c4cc65-6c06-0410-ace0-fbb531ad65f3

cdr/cdr_pgsql.c

index ffc5203..e4d9b69 100644 (file)
@@ -146,8 +146,8 @@ static int pgsql_log(struct ast_cdr *cdr)
                        if (!value) {
                                if (cur->notnull && !cur->hasdefault) {
                                        /* Field is NOT NULL (but no default), must include it anyway */
-                                       LENGTHEN_BUF1(strlen(cur->name));
-                                       lensql += snprintf(sql + lensql, sizesql - lensql, "%s,", cur->name);
+                                       LENGTHEN_BUF1(strlen(cur->name) + 2);
+                                       lensql += snprintf(sql + lensql, sizesql - lensql, "\"%s\",", cur->name);
                                        LENGTHEN_BUF2(3);
                                        strcat(sql2, "'',");
                                        lensql2 += 3;
@@ -155,8 +155,8 @@ static int pgsql_log(struct ast_cdr *cdr)
                                continue;
                        }
                        
-                       LENGTHEN_BUF1(strlen(cur->name));
-                       lensql += snprintf(sql + lensql, sizesql - lensql, "%s,", cur->name);
+                       LENGTHEN_BUF1(strlen(cur->name) + 2);
+                       lensql += snprintf(sql + lensql, sizesql - lensql, "\"%s\",", cur->name);
 
                        if (strcmp(cur->name, "start") == 0 || strcmp(cur->name, "calldate") == 0) {
                                if (strncmp(cur->type, "int", 3) == 0) {