diff options
author | monty@donna.mysql.com <> | 2001-01-16 06:02:05 +0200 |
---|---|---|
committer | monty@donna.mysql.com <> | 2001-01-16 06:02:05 +0200 |
commit | c1b5a5b00fb0f72ab34211cc42cf6b567f19d0f7 (patch) | |
tree | d2fb03ef30e8182ca60cf1262a5a9db0e97a08a5 /sql/field.cc | |
parent | 3857c6a31c546f4a0bf016c51b8936b640267d72 (diff) | |
download | mariadb-git-c1b5a5b00fb0f72ab34211cc42cf6b567f19d0f7.tar.gz |
Removed not used variable 'last_ref'
Fixed problem with negative DECIMAL() keys
Fixed some bugs with NULL keys in BDB
More mysql-test tests
Diffstat (limited to 'sql/field.cc')
-rw-r--r-- | sql/field.cc | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/sql/field.cc b/sql/field.cc index 67f93532e99..1c6aa32e167 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -597,24 +597,23 @@ String *Field_decimal::val_str(String *val_buffer __attribute__((unused)), int Field_decimal::cmp(const char *a_ptr,const char *b_ptr) { const char *end; + int swap=0; /* First remove prefixes '0', ' ', and '-' */ for (end=a_ptr+field_length; a_ptr != end && (*a_ptr == *b_ptr || ((isspace(*a_ptr) || *a_ptr == '+' || *a_ptr == '0') && (isspace(*b_ptr) || *b_ptr == '+' || *b_ptr == '0'))); - a_ptr++,b_ptr++) ; - + a_ptr++,b_ptr++) + { + if (*a_ptr == '-') // If both numbers are negative + swap= -1 ^ 1; // Swap result + } if (a_ptr == end) return 0; - int swap=0; if (*a_ptr == '-') - { - if (*b_ptr != '-') - return -1; - swap= -1 ^ 1; // Swap result - a_ptr++, b_ptr++; - } else if (*b_ptr == '-') + return -1; + else if (*b_ptr == '-') return 1; while (a_ptr != end) |