Commit f8afbe6f authored by jimw@mysql.com's avatar jimw@mysql.com

Merge mysql.com:/home/jimw/my/mysql-4.1-clean

into  mysql.com:/home/jimw/my/mysql-5.0-clean
parents 04d1ef90 f353bec5
...@@ -1270,3 +1270,29 @@ id ...@@ -1270,3 +1270,29 @@ id
5 5
99 99
drop table t1; drop table t1;
create table t1 (f1 decimal(60,25), f2 decimal(60,25));
insert into t1 values (0.0,0.0);
select f1 from t1 union all select f2 from t1;
f1
0.0000000000000000000000000
0.0000000000000000000000000
select 'XXXXXXXXXXXXXXXXXXXX' as description, f1 from t1
union all
select 'YYYYYYYYYYYYYYYYYYYY' as description, f2 from t1;
description f1
XXXXXXXXXXXXXXXXXXXX 0.0000000000000000000000000
YYYYYYYYYYYYYYYYYYYY 0.0000000000000000000000000
drop table t1;
create table t1 (f1 decimal(60,24), f2 decimal(60,24));
insert into t1 values (0.0,0.0);
select f1 from t1 union all select f2 from t1;
f1
0.000000000000000000000000
0.000000000000000000000000
select 'XXXXXXXXXXXXXXXXXXXX' as description, f1 from t1
union all
select 'YYYYYYYYYYYYYYYYYYYY' as description, f2 from t1;
description f1
XXXXXXXXXXXXXXXXXXXX 0.000000000000000000000000
YYYYYYYYYYYYYYYYYYYY 0.000000000000000000000000
drop table t1;
...@@ -753,6 +753,24 @@ create table t2 select a from t1 union select b from t1; ...@@ -753,6 +753,24 @@ create table t2 select a from t1 union select b from t1;
show columns from t2; show columns from t2;
drop table t2, t1; drop table t2, t1;
#
# Bug #14216: UNION + DECIMAL wrong values in result
#
create table t1 (f1 decimal(60,25), f2 decimal(60,25));
insert into t1 values (0.0,0.0);
select f1 from t1 union all select f2 from t1;
select 'XXXXXXXXXXXXXXXXXXXX' as description, f1 from t1
union all
select 'YYYYYYYYYYYYYYYYYYYY' as description, f2 from t1;
drop table t1;
create table t1 (f1 decimal(60,24), f2 decimal(60,24));
insert into t1 values (0.0,0.0);
select f1 from t1 union all select f2 from t1;
select 'XXXXXXXXXXXXXXXXXXXX' as description, f1 from t1
union all
select 'YYYYYYYYYYYYYYYYYYYY' as description, f2 from t1;
drop table t1;
# #
# Test that union with VARCHAR produces dynamic row tables # Test that union with VARCHAR produces dynamic row tables
# #
......
...@@ -5812,8 +5812,11 @@ bool Item_type_holder::join_types(THD *thd, Item *item) ...@@ -5812,8 +5812,11 @@ bool Item_type_holder::join_types(THD *thd, Item *item)
{ {
int delta1= max_length_orig - decimals_orig; int delta1= max_length_orig - decimals_orig;
int delta2= item->max_length - item->decimals; int delta2= item->max_length - item->decimals;
max_length= min(max(delta1, delta2) + decimals, if (fld_type == MYSQL_TYPE_DECIMAL)
(fld_type == MYSQL_TYPE_FLOAT) ? FLT_DIG+6 : DBL_DIG+7); max_length= max(delta1, delta2) + decimals;
else
max_length= min(max(delta1, delta2) + decimals,
(fld_type == MYSQL_TYPE_FLOAT) ? FLT_DIG+6 : DBL_DIG+7);
} }
else else
max_length= (fld_type == MYSQL_TYPE_FLOAT) ? FLT_DIG+6 : DBL_DIG+7; max_length= (fld_type == MYSQL_TYPE_FLOAT) ? FLT_DIG+6 : DBL_DIG+7;
......
...@@ -191,9 +191,6 @@ void netware_ssl_cleanup() ...@@ -191,9 +191,6 @@ void netware_ssl_cleanup()
/* NetWare SSL initialization */ /* NetWare SSL initialization */
static void netware_ssl_init() static void netware_ssl_init()
{ {
/* initialize OpenSSL library */
SSL_library_init();
/* cleanup OpenSSL library */ /* cleanup OpenSSL library */
NXVmRegisterExitHandler(netware_ssl_cleanup, NULL); NXVmRegisterExitHandler(netware_ssl_cleanup, NULL);
} }
...@@ -228,16 +225,17 @@ new_VioSSLConnectorFd(const char* key_file, ...@@ -228,16 +225,17 @@ new_VioSSLConnectorFd(const char* key_file,
ptr->ssl_method= 0; ptr->ssl_method= 0;
/* FIXME: constants! */ /* FIXME: constants! */
#ifdef __NETWARE__
netware_ssl_init();
#endif
if (!ssl_algorithms_added) if (!ssl_algorithms_added)
{ {
DBUG_PRINT("info", ("todo: OpenSSL_add_all_algorithms()")); DBUG_PRINT("info", ("todo: OpenSSL_add_all_algorithms()"));
ssl_algorithms_added = TRUE; ssl_algorithms_added = TRUE;
SSL_library_init();
OpenSSL_add_all_algorithms(); OpenSSL_add_all_algorithms();
} }
#ifdef __NETWARE__
netware_ssl_init();
#endif
if (!ssl_error_strings_loaded) if (!ssl_error_strings_loaded)
{ {
DBUG_PRINT("info", ("todo:SSL_load_error_strings()")); DBUG_PRINT("info", ("todo:SSL_load_error_strings()"));
...@@ -319,17 +317,18 @@ new_VioSSLAcceptorFd(const char *key_file, ...@@ -319,17 +317,18 @@ new_VioSSLAcceptorFd(const char *key_file,
/* FIXME: constants! */ /* FIXME: constants! */
ptr->session_id_context= ptr; ptr->session_id_context= ptr;
#ifdef __NETWARE__
netware_ssl_init();
#endif
if (!ssl_algorithms_added) if (!ssl_algorithms_added)
{ {
DBUG_PRINT("info", ("todo: OpenSSL_add_all_algorithms()")); DBUG_PRINT("info", ("todo: OpenSSL_add_all_algorithms()"));
ssl_algorithms_added = TRUE; ssl_algorithms_added = TRUE;
SSL_library_init();
OpenSSL_add_all_algorithms(); OpenSSL_add_all_algorithms();
} }
#ifdef __NETWARE__
netware_ssl_init();
#endif
if (!ssl_error_strings_loaded) if (!ssl_error_strings_loaded)
{ {
DBUG_PRINT("info", ("todo: SSL_load_error_strings()")); DBUG_PRINT("info", ("todo: SSL_load_error_strings()"));
......
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