]> git.ipfire.org Git - thirdparty/ulogd2.git/commitdiff
DB plugins: fixed bug with INSERT* procedures
authorRomain Bignon <romain@inl.fr>
Fri, 17 Apr 2009 12:56:19 +0000 (14:56 +0200)
committerEric Leblond <eric@inl.fr>
Sat, 18 Apr 2009 11:25:51 +0000 (13:25 +0200)
When procedure begins with INSERT* (without space), it considers it as an
INSERT statement.

Signed-off-by: Romain Bignon <romain@inl.fr>
util/db.c

index c2b674e236a18467af98771ac41126508fc9d1ff..184ad86f90726eeeb23fd3c9dbfda890fe37a31c 100644 (file)
--- a/util/db.c
+++ b/util/db.c
@@ -91,19 +91,22 @@ static int sql_createstmt(struct ulogd_pluginstance *upi)
                return -ENOMEM;
        }
 
-       if (strncasecmp(procedure, "INSERT INTO", strlen("INSERT INTO")) == 0)
-               sprintf(mi->stmt, "%s (", procedure);
+       if (strncasecmp(procedure,"INSERT", strlen("INSERT")) == 0 &&
+           (procedure[strlen("INSERT")] == '\0' ||
+                       procedure[strlen("INSERT")] == ' ')) {
+               char buf[ULOGD_MAX_KEYLEN];
+               char *underscore;
 
-       if (strcasecmp(procedure,"INSERT") == 0) {
-               if (mi->schema)
-                       sprintf(mi->stmt, "insert into %s.%s (", mi->schema, table);
+               if(procedure[6] == '\0') {
+                       /* procedure == "INSERT" */
+                       if (mi->schema)
+                               sprintf(mi->stmt, "insert into %s.%s (", mi->schema, table);
+                       else
+                               sprintf(mi->stmt, "insert into %s (", table);
+               }
                else
-                       sprintf(mi->stmt, "insert into %s (", table);
-       }
+                       sprintf(mi->stmt, "%s (", procedure);
 
-       if (strncasecmp(procedure,"INSERT", strlen("INSERT")) == 0) {
-               char buf[ULOGD_MAX_KEYLEN];
-               char *underscore;
                mi->stmt_val = mi->stmt + strlen(mi->stmt);
 
                for (i = 0; i < upi->input.num_keys; i++) {