summaryrefslogtreecommitdiffstats
path: root/database/sqlite/sqlite.c
diff options
context:
space:
mode:
authorDavid Sommerseth <dazo@users.sourceforge.net>2008-12-08 16:45:07 +0100
committerDavid Sommerseth <dazo@users.sourceforge.net>2008-12-08 16:45:07 +0100
commitca570b1a032b7cb50c5bf17cc0711570ebc13be6 (patch)
treeb297572b7d394dbfc495a23cc105ac7631c472b8 /database/sqlite/sqlite.c
parent2bd515a018247ecc03a0b22b015f3e3b3872a5e4 (diff)
downloadeurephia-ca570b1a032b7cb50c5bf17cc0711570ebc13be6.tar.gz
eurephia-ca570b1a032b7cb50c5bf17cc0711570ebc13be6.tar.xz
eurephia-ca570b1a032b7cb50c5bf17cc0711570ebc13be6.zip
Do not encapsulate key-value pairs with () in UPDATE mode
And added support for setting fields to NULL if flagged via the field type value ft_SETNULL
Diffstat (limited to 'database/sqlite/sqlite.c')
-rw-r--r--database/sqlite/sqlite.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/database/sqlite/sqlite.c b/database/sqlite/sqlite.c
index 2bc362b..beb0b8e 100644
--- a/database/sqlite/sqlite.c
+++ b/database/sqlite/sqlite.c
@@ -276,6 +276,10 @@ char *_build_value_string(eDBfieldMap *ptr) {
}
break;
+ case ft_SETNULL:
+ val = sqlite3_mprintf("%q", ptr->value);
+ break;
+
case ft_PASSWD:
case ft_STRING:
default:
@@ -298,8 +302,12 @@ char *_build_sqlpart(int btyp, eDBfieldMap *map) {
switch( btyp ) {
case btWHERE:
case btUPDATE:
- fsep = (btyp == btWHERE ? " AND " : ",");
- append_str(buf, "(", 8192);
+ if( btyp == btWHERE ) {
+ fsep = " AND ";
+ append_str(buf, "(", 8192);
+ } else {
+ fsep = ",";
+ }
for( ptr = map; ptr != NULL; ptr = ptr->next ) {
char *val = NULL;
@@ -322,7 +330,9 @@ char *_build_sqlpart(int btyp, eDBfieldMap *map) {
sqlite3_free(val);
first = 0;
}
- append_str(buf, ")", 8192);
+ if( btyp == btWHERE ) {
+ append_str(buf, ")", 8192);
+ }
break;
case btINSERT: // (field_name, field_name, field_name) VALUES ('val','val','val')