diff options
author | David Sommerseth <dazo@users.sourceforge.net> | 2008-12-08 16:45:07 +0100 |
---|---|---|
committer | David Sommerseth <dazo@users.sourceforge.net> | 2008-12-08 16:45:07 +0100 |
commit | ca570b1a032b7cb50c5bf17cc0711570ebc13be6 (patch) | |
tree | b297572b7d394dbfc495a23cc105ac7631c472b8 /database/sqlite/sqlite.c | |
parent | 2bd515a018247ecc03a0b22b015f3e3b3872a5e4 (diff) | |
download | eurephia-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.c | 16 |
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') |