Commit 85896c0a authored by cmiller@zippy.cornsilk.net's avatar cmiller@zippy.cornsilk.net

Merge bk-internal.mysql.com:/home/bk/mysql-4.1

into  zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-4.1-maint
parents 658777d8 a53b50d0
...@@ -14,6 +14,10 @@ DOT_FRM_VERSION=6 ...@@ -14,6 +14,10 @@ DOT_FRM_VERSION=6
SHARED_LIB_MAJOR_VERSION=14 SHARED_LIB_MAJOR_VERSION=14
SHARED_LIB_VERSION=$SHARED_LIB_MAJOR_VERSION:0:0 SHARED_LIB_VERSION=$SHARED_LIB_MAJOR_VERSION:0:0
NDB_SHARED_LIB_MAJOR_VERSION=1
NDB_SHARED_LIB_VERSION=$NDB_SHARED_LIB_MAJOR_VERSION:0:0
# ndb version # ndb version
NDB_VERSION_MAJOR=4 NDB_VERSION_MAJOR=4
NDB_VERSION_MINOR=1 NDB_VERSION_MINOR=1
...@@ -73,6 +77,9 @@ AC_DEFINE_UNQUOTED([DOT_FRM_VERSION], [$DOT_FRM_VERSION], ...@@ -73,6 +77,9 @@ AC_DEFINE_UNQUOTED([DOT_FRM_VERSION], [$DOT_FRM_VERSION],
[Version of .frm files]) [Version of .frm files])
AC_SUBST(SHARED_LIB_MAJOR_VERSION) AC_SUBST(SHARED_LIB_MAJOR_VERSION)
AC_SUBST(SHARED_LIB_VERSION) AC_SUBST(SHARED_LIB_VERSION)
AC_SUBST(NDB_SHARED_LIB_MAJOR_VERSION)
AC_SUBST(NDB_SHARED_LIB_VERSION)
AC_SUBST(AVAILABLE_LANGUAGES) AC_SUBST(AVAILABLE_LANGUAGES)
AC_SUBST(AVAILABLE_LANGUAGES_ERRORS) AC_SUBST(AVAILABLE_LANGUAGES_ERRORS)
AC_SUBST_FILE(AVAILABLE_LANGUAGES_ERRORS_RULES) AC_SUBST_FILE(AVAILABLE_LANGUAGES_ERRORS_RULES)
...@@ -442,6 +449,15 @@ if $LD --version 2>/dev/null|grep -q GNU; then ...@@ -442,6 +449,15 @@ if $LD --version 2>/dev/null|grep -q GNU; then
fi fi
AC_SUBST(LD_VERSION_SCRIPT) AC_SUBST(LD_VERSION_SCRIPT)
# libndbclient versioning when linked with GNU ld.
if $LD --version 2>/dev/null|grep -q GNU; then
NDB_LD_VERSION_SCRIPT="-Wl,--version-script=\$(top_builddir)/ndb/src/libndb.ver"
AC_CONFIG_FILES(ndb/src/libndb.ver)
fi
AC_SUBST(NDB_LD_VERSION_SCRIPT)
# Avoid bug in fcntl on some versions of linux # Avoid bug in fcntl on some versions of linux
AC_MSG_CHECKING([if we should use 'skip-external-locking' as default for $target_os]) AC_MSG_CHECKING([if we should use 'skip-external-locking' as default for $target_os])
# Any wariation of Linux # Any wariation of Linux
......
...@@ -504,8 +504,8 @@ select count(*) from t1 where x = 18446744073709551601; ...@@ -504,8 +504,8 @@ select count(*) from t1 where x = 18446744073709551601;
count(*) count(*)
1 1
create table t2 (x bigint not null); create table t2 (x bigint not null);
insert into t2(x) values (0xfffffffffffffff0); insert into t2(x) values (-16);
insert into t2(x) values (0xfffffffffffffff1); insert into t2(x) values (-15);
select * from t2; select * from t2;
x x
-16 -16
......
...@@ -2819,3 +2819,20 @@ select min(key1) from t1 where key1 >= 0.3762 and rand() + 0.5 >= 0.5; ...@@ -2819,3 +2819,20 @@ select min(key1) from t1 where key1 >= 0.3762 and rand() + 0.5 >= 0.5;
min(key1) min(key1)
0.37619999051094 0.37619999051094
DROP TABLE t1,t2; DROP TABLE t1,t2;
create table t1(a bigint unsigned, b bigint);
insert into t1 values (0xfffffffffffffffff, 0xfffffffffffffffff),
(0x10000000000000000, 0x10000000000000000),
(0x8fffffffffffffff, 0x8fffffffffffffff);
Warnings:
Warning 1264 Data truncated; out of range for column 'a' at row 1
Warning 1264 Data truncated; out of range for column 'b' at row 1
Warning 1264 Data truncated; out of range for column 'a' at row 2
Warning 1264 Data truncated; out of range for column 'b' at row 2
Warning 1264 Data truncated; out of range for column 'b' at row 3
select hex(a), hex(b) from t1;
hex(a) hex(b)
FFFFFFFFFFFFFFFF 7FFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFF 7FFFFFFFFFFFFFFF
8FFFFFFFFFFFFFFF 7FFFFFFFFFFFFFFF
drop table t1;
End of 4.1 tests
...@@ -400,8 +400,8 @@ select count(*) from t1 where x = 18446744073709551601; ...@@ -400,8 +400,8 @@ select count(*) from t1 where x = 18446744073709551601;
create table t2 (x bigint not null); create table t2 (x bigint not null);
insert into t2(x) values (0xfffffffffffffff0); insert into t2(x) values (-16);
insert into t2(x) values (0xfffffffffffffff1); insert into t2(x) values (-15);
select * from t2; select * from t2;
select count(*) from t2 where x>0; select count(*) from t2 where x>0;
select count(*) from t2 where x=0; select count(*) from t2 where x=0;
......
...@@ -2342,4 +2342,15 @@ select min(key1) from t1 where key1 >= 0.3762 and rand() + 0.5 >= 0.5; ...@@ -2342,4 +2342,15 @@ select min(key1) from t1 where key1 >= 0.3762 and rand() + 0.5 >= 0.5;
DROP TABLE t1,t2; DROP TABLE t1,t2;
--enable_ps_protocol --enable_ps_protocol
# End of 4.1 tests #
# Bug #22533: storing large hex strings
#
create table t1(a bigint unsigned, b bigint);
insert into t1 values (0xfffffffffffffffff, 0xfffffffffffffffff),
(0x10000000000000000, 0x10000000000000000),
(0x8fffffffffffffff, 0x8fffffffffffffff);
select hex(a), hex(b) from t1;
drop table t1;
--echo End of 4.1 tests
...@@ -6,6 +6,8 @@ ndblib_LTLIBRARIES = libndbclient.la ...@@ -6,6 +6,8 @@ ndblib_LTLIBRARIES = libndbclient.la
libndbclient_la_SOURCES = libndbclient_la_SOURCES =
libndbclient_la_LDFLAGS = -version-info @NDB_SHARED_LIB_VERSION@ @NDB_LD_VERSION_SCRIPT@
libndbclient_la_LIBADD = \ libndbclient_la_LIBADD = \
ndbapi/libndbapi.la \ ndbapi/libndbapi.la \
common/transporter/libtransporter.la \ common/transporter/libtransporter.la \
......
libndbclient_@NDB_SHARED_LIB_MAJOR_VERSION@ { global: *; };
...@@ -2369,18 +2369,31 @@ longlong Item_varbinary::val_int() ...@@ -2369,18 +2369,31 @@ longlong Item_varbinary::val_int()
int Item_varbinary::save_in_field(Field *field, bool no_conversions) int Item_varbinary::save_in_field(Field *field, bool no_conversions)
{ {
int error;
field->set_notnull(); field->set_notnull();
if (field->result_type() == STRING_RESULT) if (field->result_type() == STRING_RESULT)
return field->store(str_value.ptr(), str_value.length(),
collation.collation);
ulonglong nr;
uint32 length= str_value.length();
if (length > 8)
{ {
error=field->store(str_value.ptr(),str_value.length(),collation.collation); nr= field->flags & UNSIGNED_FLAG ? ULONGLONG_MAX : LONGLONG_MAX;
goto warn;
} }
else nr= (ulonglong) val_int();
if ((length == 8) && !(field->flags & UNSIGNED_FLAG) && (nr > LONGLONG_MAX))
{ {
longlong nr=val_int(); nr= LONGLONG_MAX;
error=field->store(nr); goto warn;
} }
return error; return field->store((longlong) nr);
warn:
if (!field->store((longlong) nr))
field->set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE,
1);
return 1;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment