Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
6023b58b
Commit
6023b58b
authored
Aug 11, 2004
by
serg@serg.mylan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bug #4797 - 32 bit and 64 bit builds behave differently on int32 overflow
parent
3c963455
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
47 additions
and
16 deletions
+47
-16
include/my_global.h
include/my_global.h
+17
-11
mysql-test/r/type_uint.result
mysql-test/r/type_uint.result
+2
-0
mysql-test/t/type_uint.test
mysql-test/t/type_uint.test
+1
-0
sql/field.cc
sql/field.cc
+27
-2
sql/sql_analyse.cc
sql/sql_analyse.cc
+0
-3
No files found.
include/my_global.h
View file @
6023b58b
...
...
@@ -642,21 +642,27 @@ extern double my_atof(const char*);
#endif
/* defined (HAVE_LONG_LONG) && !defined(ULONGLONG_MAX)*/
#if SIZEOF_LONG == 4
#define INT_MIN32 (long) 0x80000000L
#define INT_MAX32 (long) 0x7FFFFFFFL
#define INT_MIN24 ((long) 0xff800000L)
#define INT_MAX24 0x007fffffL
#define INT_MIN16 ((short int) 0x8000)
#define INT_MAX16 0x7FFF
#define INT_MIN8 ((char) 0x80)
#define INT_MAX8 ((char) 0x7F)
#define INT_MIN32 ((long) 0x80000000L)
#define INT_MAX32 ((long) 0x7FFFFFFFL)
#define UINT_MAX32 ((long) 0xFFFFFFFFL)
#define INT_MIN24 ((long) 0xFF800000L)
#define INT_MAX24 0x007FFFFFL
#define UINT_MAX24 0x00FFFFFFL
#define INT_MIN16 ((short int) 0x8000)
#define INT_MAX16 0x7FFF
#define UINT_MAX16 0xFFFF
#define INT_MIN8 ((char) 0x80)
#define INT_MAX8 ((char) 0x7F)
#else
/* Probably Alpha */
#define INT_MIN32 ((long) (int) 0x80000000)
#define INT_MAX32 ((long) (int) 0x7FFFFFFF)
#define INT_MIN24 ((long) (int) 0xff800000)
#define INT_MAX24 ((long) (int) 0x007fffff)
#define INT_MIN16 ((short int) 0xffff8000)
#define UINT_MAX32 ((long) (int) 0xFFFFFFFF)
#define INT_MIN24 ((long) (int) 0xFF800000)
#define INT_MAX24 ((long) (int) 0x007FFFFF)
#define UINT_MAX24 ((long) (int) 0x00FFFFFF)
#define INT_MIN16 ((short int) 0xFFFF8000)
#define INT_MAX16 ((short int) 0x00007FFF)
#define UINT_MAX16 ((short int) 0x0000FFFF)
#endif
/* From limits.h instead */
...
...
mysql-test/r/type_uint.result
View file @
6023b58b
...
...
@@ -2,8 +2,10 @@ drop table if exists t1;
create table t1 (this int unsigned);
insert into t1 values (1);
insert into t1 values (-1);
insert into t1 values ('5000000000');
select * from t1;
this
1
0
4294967295
drop table t1;
mysql-test/t/type_uint.test
View file @
6023b58b
...
...
@@ -6,5 +6,6 @@ drop table if exists t1;
create
table
t1
(
this
int
unsigned
);
insert
into
t1
values
(
1
);
insert
into
t1
values
(
-
1
);
insert
into
t1
values
(
'5000000000'
);
select
*
from
t1
;
drop
table
t1
;
sql/field.cc
View file @
6023b58b
...
...
@@ -1504,7 +1504,7 @@ void Field_long::store(const char *from,uint len)
{
len
--
;
from
++
;
}
long
tmp
;
long
tmp
,
cuted_fields
=
0
;
String
tmp_str
(
from
,
len
);
from
=
tmp_str
.
c_ptr
();
// Add end null if needed
errno
=
0
;
...
...
@@ -1520,9 +1520,34 @@ void Field_long::store(const char *from,uint len)
}
else
tmp
=
strtol
(
from
,
&
end
,
10
);
if
(
errno
||
if
(
errno
||
(
from
+
len
!=
end
&&
current_thd
->
count_cuted_fields
&&
!
test_if_int
(
from
,
len
)))
cuted_fields
=
1
;
#if SIZEOF_LONG > 4
if
(
unsigned_flag
)
{
if
(
tmp
>
UINT_MAX32
)
{
tmp
=
UINT_MAX32
;
cuted_fields
=
1
;
}
}
else
{
if
(
tmp
>
INT_MAX32
)
{
tmp
=
INT_MAX32
;
cuted_fields
=
1
;
}
else
if
(
tmp
<
INT_MIN32
)
{
tmp
=
INT_MIN32
;
cuted_fields
=
1
;
}
}
#endif
if
(
cuted_fields
)
current_thd
->
cuted_fields
++
;
#ifdef WORDS_BIGENDIAN
if
(
table
->
db_low_byte_first
)
...
...
sql/sql_analyse.cc
View file @
6023b58b
...
...
@@ -34,9 +34,6 @@
#define MAX_TREEMEM 8192
#define MAX_TREE_ELEMENTS 256
#define UINT_MAX16 0xffff
#define UINT_MAX24 0xffffff
#define UINT_MAX32 0xffffffff
int
sortcmp2
(
void
*
cmp_arg
__attribute__
((
unused
)),
const
String
*
a
,
const
String
*
b
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment