]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
dict-sql: Change "uint" type to mean 64bit instead of 32bit integer.
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Tue, 15 Aug 2017 11:27:40 +0000 (14:27 +0300)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Wed, 27 Sep 2017 09:38:56 +0000 (12:38 +0300)
This is likely what is usually wanted (especially in e.g. quotas).
If someone actually wants it to be restricted to 32bit, we could add
uint32 later on.

src/lib-dict/dict-sql.c

index 7adc76a3185c496d7886259251409a6d9da557b6..bf7c2fa5e32d92594225a292d357c9e6ee3cdb73 100644 (file)
@@ -231,7 +231,7 @@ sql_dict_value_escape(string_t *str, struct sql_dict *dict,
                      const char **error_r)
 {
        buffer_t *buf;
-       unsigned int num;
+       uint64_t num;
 
        switch (value_type) {
        case DICT_SQL_TYPE_STRING:
@@ -239,13 +239,13 @@ sql_dict_value_escape(string_t *str, struct sql_dict *dict,
                            value_suffix);
                return 0;
        case DICT_SQL_TYPE_UINT:
-               if (value_suffix[0] != '\0' || str_to_uint(value, &num) < 0) {
+               if (value_suffix[0] != '\0' || str_to_uint64(value, &num) < 0) {
                        *error_r = t_strdup_printf(
-                               "%s field's value isn't unsigned integer: %s%s (in pattern: %s)",
+                               "%s field's value isn't 64bit unsigned integer: %s%s (in pattern: %s)",
                                field_name, value, value_suffix, map->pattern);
                        return -1;
                }
-               str_printfa(str, "%u", num);
+               str_printfa(str, "%llu", (unsigned long long)num);
                return 0;
        case DICT_SQL_TYPE_HEXBLOB:
                break;