diff options
author | unknown <monty@narttu.mysql.fi> | 2003-02-27 02:10:19 +0200 |
---|---|---|
committer | unknown <monty@narttu.mysql.fi> | 2003-02-27 02:10:19 +0200 |
commit | 3f9ea80268126f8401bd27f03b842cd03cde7c9f (patch) | |
tree | 100a0bcb7776279c8d8c822cac9164e8c17acc14 | |
parent | 66afa065530f724702b82e51c3c88a8770330230 (diff) | |
download | mariadb-git-3f9ea80268126f8401bd27f03b842cd03cde7c9f.tar.gz |
Integer values between 9223372036854775807 and 9999999999999999999 are now
regarded as unsigned longlongss, not as floats. This make these values work
similar to values between 10000000000000000000 and 18446744073709551615.
mysql-test/r/bigint.result:
Fixed results for bigints
mysql-test/t/bigint.test:
Fixed results for bigints
sql/item.h:
Mark unsigned big ints as unsigned
sql/sql_lex.cc:
Returns numbers between 9223372036854775807 and 9999999999999999999 as unsigned 64 bit numbers
-rw-r--r-- | mysql-test/r/bigint.result | 4 | ||||
-rw-r--r-- | mysql-test/t/bigint.test | 6 | ||||
-rw-r--r-- | sql/item.h | 5 | ||||
-rw-r--r-- | sql/sql_lex.cc | 2 |
4 files changed, 8 insertions, 9 deletions
diff --git a/mysql-test/r/bigint.result b/mysql-test/r/bigint.result index 40d29e17237..d7d811dc5f3 100644 --- a/mysql-test/r/bigint.result +++ b/mysql-test/r/bigint.result @@ -6,13 +6,13 @@ select 9223372036854775807,-009223372036854775808; 9223372036854775807 -9223372036854775808 select +9999999999999999999,-9999999999999999999; +9999999999999999999 -9999999999999999999 -10000000000000000000 -10000000000000000000 +9999999999999999999 -10000000000000000000 select cast(9223372036854775808 as unsigned)+1; cast(9223372036854775808 as unsigned)+1 9223372036854775809 select 9223372036854775808+1; 9223372036854775808+1 -9223372036854775808 +9223372036854775809 drop table if exists t1; create table t1 (a bigint unsigned not null, primary key(a)); insert into t1 values (18446744073709551615), (0xFFFFFFFFFFFFFFFE); diff --git a/mysql-test/t/bigint.test b/mysql-test/t/bigint.test index 287d157e5d6..c5691a760c7 100644 --- a/mysql-test/t/bigint.test +++ b/mysql-test/t/bigint.test @@ -5,12 +5,6 @@ select 0,256,00000000000000065536,2147483647,-2147483648,2147483648,+4294967296; select 9223372036854775807,-009223372036854775808; select +9999999999999999999,-9999999999999999999; select cast(9223372036854775808 as unsigned)+1; - -# -# We need to do a REPLACE here as the atof() function returns different -# values on True64 and HPUX11 -# ---replace_result 9223372036854775800 9223372036854775808 select 9223372036854775808+1; # # In 3.23 we have to disable the test of column to bigint as diff --git a/sql/item.h b/sql/item.h index c669c266f0f..a72079a6856 100644 --- a/sql/item.h +++ b/sql/item.h @@ -212,6 +212,11 @@ public: String *val_str(String*); void make_field(Send_field *field); Item *new_item() { return new Item_uint(name,max_length); } + bool fix_fields(THD *thd,struct st_table_list *table_list) + { + unsigned_flag= 1; + return 0; + } void print(String *str); unsigned int size_of() { return sizeof(*this);} }; diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index 854f3924155..d5a225d95dd 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -407,7 +407,7 @@ inline static uint int_token(const char *str,uint length) { cmp=longlong_str; smaller=LONG_NUM; - bigger=REAL_NUM; + bigger= ULONGLONG_NUM; } } while (*cmp && *cmp++ == *str++) ; |