mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
- added commands --query_vertical and --query_horisontal to client/mysqltest.cc
- get my_strtod to return inf - get Field_float::store(double) and Field_double::store(float) to set null for nan value (as extra serg's recomendations to fix for patch on Bug #2082 'mysqldump converts "inf" to null')
This commit is contained in:
@ -216,6 +216,7 @@ Q_ENABLE_WARNINGS, Q_DISABLE_WARNINGS,
|
|||||||
Q_ENABLE_INFO, Q_DISABLE_INFO,
|
Q_ENABLE_INFO, Q_DISABLE_INFO,
|
||||||
Q_EXEC, Q_DELIMITER,
|
Q_EXEC, Q_DELIMITER,
|
||||||
Q_DISPLAY_VERTICAL_RESULTS, Q_DISPLAY_HORISONTAL_RESULTS,
|
Q_DISPLAY_VERTICAL_RESULTS, Q_DISPLAY_HORISONTAL_RESULTS,
|
||||||
|
Q_QUERY_VERTICAL, Q_QUERY_HORISONTAL,
|
||||||
|
|
||||||
Q_UNKNOWN, /* Unknown command. */
|
Q_UNKNOWN, /* Unknown command. */
|
||||||
Q_COMMENT, /* Comments, ignored. */
|
Q_COMMENT, /* Comments, ignored. */
|
||||||
@ -291,6 +292,8 @@ const char *command_names[]=
|
|||||||
"delimiter",
|
"delimiter",
|
||||||
"vertical_results",
|
"vertical_results",
|
||||||
"horisontal_results",
|
"horisontal_results",
|
||||||
|
"query_vertical",
|
||||||
|
"query_horisontal",
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -2586,6 +2589,28 @@ int main(int argc, char **argv)
|
|||||||
if (q->query == q->query_buf)
|
if (q->query == q->query_buf)
|
||||||
q->query= q->first_argument;
|
q->query= q->first_argument;
|
||||||
/* fall through */
|
/* fall through */
|
||||||
|
case Q_QUERY_VERTICAL:
|
||||||
|
case Q_QUERY_HORISONTAL:
|
||||||
|
{
|
||||||
|
my_bool old_display_result_vertically= display_result_vertically;
|
||||||
|
if (!q->query[q->first_word_len])
|
||||||
|
{
|
||||||
|
/* This happens when we use 'query_..' on it's own line */
|
||||||
|
q_send_flag=1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
/* fix up query pointer if this is * first iteration for this line */
|
||||||
|
if (q->query == q->query_buf)
|
||||||
|
q->query += q->first_word_len + 1;
|
||||||
|
switch(q->type)
|
||||||
|
{
|
||||||
|
case Q_QUERY_VERTICAL: display_result_vertically= TRUE; break;
|
||||||
|
case Q_QUERY_HORISONTAL: display_result_vertically= FALSE; break;
|
||||||
|
}
|
||||||
|
error |= run_query(&cur_con->mysql, q, QUERY_REAP|QUERY_SEND);
|
||||||
|
display_result_vertically= old_display_result_vertically;
|
||||||
|
break;
|
||||||
|
}
|
||||||
case Q_QUERY:
|
case Q_QUERY:
|
||||||
case Q_REAP:
|
case Q_REAP:
|
||||||
{
|
{
|
||||||
|
@ -169,6 +169,7 @@ set @value= "1e+1111111111a";
|
|||||||
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1265 Data truncated for column 'f_double ' at row 1
|
Warning 1265 Data truncated for column 'f_double ' at row 1
|
||||||
|
Warning 1264 Data truncated, out of range for column 'f_double ' at row 1
|
||||||
Warning 1265 Data truncated for column 'f_float ' at row 1
|
Warning 1265 Data truncated for column 'f_float ' at row 1
|
||||||
Warning 1264 Data truncated, out of range for column 'f_float ' at row 1
|
Warning 1264 Data truncated, out of range for column 'f_float ' at row 1
|
||||||
Warning 1265 Data truncated for column 'f_double_7_2 ' at row 1
|
Warning 1265 Data truncated for column 'f_double_7_2 ' at row 1
|
||||||
@ -176,6 +177,7 @@ Warning 1264 Data truncated, out of range for column 'f_double_7_2 ' at row 1
|
|||||||
Warning 1265 Data truncated for column 'f_float_4_3 ' at row 1
|
Warning 1265 Data truncated for column 'f_float_4_3 ' at row 1
|
||||||
Warning 1264 Data truncated, out of range for column 'f_float_4_3 ' at row 1
|
Warning 1264 Data truncated, out of range for column 'f_float_4_3 ' at row 1
|
||||||
Warning 1265 Data truncated for column 'f_double_u ' at row 1
|
Warning 1265 Data truncated for column 'f_double_u ' at row 1
|
||||||
|
Warning 1264 Data truncated, out of range for column 'f_double_u ' at row 1
|
||||||
Warning 1265 Data truncated for column 'f_float_u ' at row 1
|
Warning 1265 Data truncated for column 'f_float_u ' at row 1
|
||||||
Warning 1264 Data truncated, out of range for column 'f_float_u ' at row 1
|
Warning 1264 Data truncated, out of range for column 'f_float_u ' at row 1
|
||||||
Warning 1265 Data truncated for column 'f_double_15_1_u ' at row 1
|
Warning 1265 Data truncated for column 'f_double_15_1_u ' at row 1
|
||||||
@ -197,6 +199,7 @@ set @value= "-1e+1111111111a";
|
|||||||
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1265 Data truncated for column 'f_double ' at row 1
|
Warning 1265 Data truncated for column 'f_double ' at row 1
|
||||||
|
Warning 1264 Data truncated, out of range for column 'f_double ' at row 1
|
||||||
Warning 1265 Data truncated for column 'f_float ' at row 1
|
Warning 1265 Data truncated for column 'f_float ' at row 1
|
||||||
Warning 1264 Data truncated, out of range for column 'f_float ' at row 1
|
Warning 1264 Data truncated, out of range for column 'f_float ' at row 1
|
||||||
Warning 1265 Data truncated for column 'f_double_7_2 ' at row 1
|
Warning 1265 Data truncated for column 'f_double_7_2 ' at row 1
|
||||||
@ -225,15 +228,17 @@ f_float_3_1_u 0.0
|
|||||||
set @value= 1e+1111111111;
|
set @value= 1e+1111111111;
|
||||||
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
||||||
Warnings:
|
Warnings:
|
||||||
|
Warning 1264 Data truncated, out of range for column 'f_double ' at row 1
|
||||||
Warning 1264 Data truncated, out of range for column 'f_float ' at row 1
|
Warning 1264 Data truncated, out of range for column 'f_float ' at row 1
|
||||||
Warning 1264 Data truncated, out of range for column 'f_double_7_2 ' at row 1
|
Warning 1264 Data truncated, out of range for column 'f_double_7_2 ' at row 1
|
||||||
Warning 1264 Data truncated, out of range for column 'f_float_4_3 ' at row 1
|
Warning 1264 Data truncated, out of range for column 'f_float_4_3 ' at row 1
|
||||||
|
Warning 1264 Data truncated, out of range for column 'f_double_u ' at row 1
|
||||||
Warning 1264 Data truncated, out of range for column 'f_float_u ' at row 1
|
Warning 1264 Data truncated, out of range for column 'f_float_u ' at row 1
|
||||||
Warning 1264 Data truncated, out of range for column 'f_double_15_1_u ' at row 1
|
Warning 1264 Data truncated, out of range for column 'f_double_15_1_u ' at row 1
|
||||||
Warning 1264 Data truncated, out of range for column 'f_float_3_1_u ' at row 1
|
Warning 1264 Data truncated, out of range for column 'f_float_3_1_u ' at row 1
|
||||||
select * from t1 where `number `=last_insert_id();
|
select * from t1 where `number `=last_insert_id();
|
||||||
number 6
|
number 6
|
||||||
original_value 1.7976931348623e+308
|
original_value inf
|
||||||
f_double 1.79769313486232e+308
|
f_double 1.79769313486232e+308
|
||||||
f_float 3.40282e+38
|
f_float 3.40282e+38
|
||||||
f_double_7_2 99999.99
|
f_double_7_2 99999.99
|
||||||
@ -245,6 +250,7 @@ f_float_3_1_u 99.9
|
|||||||
set @value= -1e+1111111111;
|
set @value= -1e+1111111111;
|
||||||
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
||||||
Warnings:
|
Warnings:
|
||||||
|
Warning 1264 Data truncated, out of range for column 'f_double ' at row 1
|
||||||
Warning 1264 Data truncated, out of range for column 'f_float ' at row 1
|
Warning 1264 Data truncated, out of range for column 'f_float ' at row 1
|
||||||
Warning 1264 Data truncated, out of range for column 'f_double_7_2 ' at row 1
|
Warning 1264 Data truncated, out of range for column 'f_double_7_2 ' at row 1
|
||||||
Warning 1264 Data truncated, out of range for column 'f_float_4_3 ' at row 1
|
Warning 1264 Data truncated, out of range for column 'f_float_4_3 ' at row 1
|
||||||
@ -254,7 +260,7 @@ Warning 1264 Data truncated, out of range for column 'f_double_15_1_u ' at row 1
|
|||||||
Warning 1264 Data truncated, out of range for column 'f_float_3_1_u ' at row 1
|
Warning 1264 Data truncated, out of range for column 'f_float_3_1_u ' at row 1
|
||||||
select * from t1 where `number `=last_insert_id();
|
select * from t1 where `number `=last_insert_id();
|
||||||
number 7
|
number 7
|
||||||
original_value -1.7976931348623e+308
|
original_value -inf
|
||||||
f_double -1.79769313486232e+308
|
f_double -1.79769313486232e+308
|
||||||
f_float -3.40282e+38
|
f_float -3.40282e+38
|
||||||
f_double_7_2 -99999.99
|
f_double_7_2 -99999.99
|
||||||
|
@ -46,6 +46,8 @@ UNLOCK TABLES;
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
CREATE TABLE t1 (a double);
|
CREATE TABLE t1 (a double);
|
||||||
INSERT INTO t1 VALUES (-9e999999);
|
INSERT INTO t1 VALUES (-9e999999);
|
||||||
|
Warnings:
|
||||||
|
Warning 1264 Data truncated, out of range for column 'a' at row 1
|
||||||
|
|
||||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT, CHARACTER_SET_CLIENT=utf8 */;
|
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT, CHARACTER_SET_CLIENT=utf8 */;
|
||||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||||
|
@ -90,7 +90,8 @@ drop database mysqltest;
|
|||||||
|
|
||||||
#
|
#
|
||||||
# Test of wrong values for float data (bug #2082)
|
# Test of wrong values for float data (bug #2082)
|
||||||
#
|
#
|
||||||
|
|
||||||
use test;
|
use test;
|
||||||
create table t1(
|
create table t1(
|
||||||
`number ` int auto_increment primary key,
|
`number ` int auto_increment primary key,
|
||||||
@ -107,68 +108,46 @@ create table t1(
|
|||||||
|
|
||||||
set @value= "aa";
|
set @value= "aa";
|
||||||
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
||||||
vertical_results;
|
--query_vertical select * from t1 where `number `=last_insert_id()
|
||||||
select * from t1 where `number `=last_insert_id();
|
|
||||||
horisontal_results;
|
|
||||||
|
|
||||||
set @value= "1aa";
|
set @value= "1aa";
|
||||||
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
||||||
vertical_results;
|
--query_vertical select * from t1 where `number `=last_insert_id()
|
||||||
select * from t1 where `number `=last_insert_id();
|
|
||||||
horisontal_results;
|
|
||||||
|
|
||||||
set @value= "aa1";
|
set @value= "aa1";
|
||||||
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
||||||
vertical_results;
|
--query_vertical select * from t1 where `number `=last_insert_id()
|
||||||
select * from t1 where `number `=last_insert_id();
|
|
||||||
horisontal_results;
|
|
||||||
|
|
||||||
set @value= "1e+1111111111a";
|
set @value= "1e+1111111111a";
|
||||||
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
||||||
vertical_results;
|
--query_vertical select * from t1 where `number `=last_insert_id()
|
||||||
select * from t1 where `number `=last_insert_id();
|
|
||||||
horisontal_results;
|
|
||||||
|
|
||||||
set @value= "-1e+1111111111a";
|
set @value= "-1e+1111111111a";
|
||||||
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
||||||
vertical_results;
|
--query_vertical select * from t1 where `number `=last_insert_id()
|
||||||
select * from t1 where `number `=last_insert_id();
|
|
||||||
horisontal_results;
|
|
||||||
|
|
||||||
set @value= 1e+1111111111;
|
set @value= 1e+1111111111;
|
||||||
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
||||||
vertical_results;
|
--query_vertical select * from t1 where `number `=last_insert_id()
|
||||||
select * from t1 where `number `=last_insert_id();
|
|
||||||
horisontal_results;
|
|
||||||
|
|
||||||
set @value= -1e+1111111111;
|
set @value= -1e+1111111111;
|
||||||
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
||||||
vertical_results;
|
--query_vertical select * from t1 where `number `=last_insert_id()
|
||||||
select * from t1 where `number `=last_insert_id();
|
|
||||||
horisontal_results;
|
|
||||||
|
|
||||||
set @value= 1e+111;
|
set @value= 1e+111;
|
||||||
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
||||||
vertical_results;
|
--query_vertical select * from t1 where `number `=last_insert_id()
|
||||||
select * from t1 where `number `=last_insert_id();
|
|
||||||
horisontal_results;
|
|
||||||
|
|
||||||
set @value= -1e+111;
|
set @value= -1e+111;
|
||||||
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
||||||
vertical_results;
|
--query_vertical select * from t1 where `number `=last_insert_id()
|
||||||
select * from t1 where `number `=last_insert_id();
|
|
||||||
horisontal_results;
|
|
||||||
|
|
||||||
set @value= 1;
|
set @value= 1;
|
||||||
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
||||||
vertical_results;
|
--query_vertical select * from t1 where `number `=last_insert_id()
|
||||||
select * from t1 where `number `=last_insert_id();
|
|
||||||
horisontal_results;
|
|
||||||
|
|
||||||
set @value= -1;
|
set @value= -1;
|
||||||
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
||||||
vertical_results;
|
--query_vertical select * from t1 where `number `=last_insert_id()
|
||||||
select * from t1 where `number `=last_insert_id();
|
|
||||||
horisontal_results;
|
|
||||||
|
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
18
sql/field.cc
18
sql/field.cc
@ -2291,7 +2291,14 @@ int Field_float::store(double nr)
|
|||||||
float j;
|
float j;
|
||||||
int error= 0;
|
int error= 0;
|
||||||
|
|
||||||
if (isnan(nr) || unsigned_flag && nr < 0)
|
if (isnan(nr))
|
||||||
|
{
|
||||||
|
j= 0;
|
||||||
|
set_null();
|
||||||
|
set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
|
||||||
|
error= 1;
|
||||||
|
}
|
||||||
|
else if (unsigned_flag && nr < 0)
|
||||||
{
|
{
|
||||||
j= 0;
|
j= 0;
|
||||||
set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
|
set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
|
||||||
@ -2581,7 +2588,14 @@ int Field_double::store(double nr)
|
|||||||
{
|
{
|
||||||
int error= 0;
|
int error= 0;
|
||||||
|
|
||||||
if (isnan(nr) || unsigned_flag && nr < 0)
|
if (isnan(nr))
|
||||||
|
{
|
||||||
|
nr= 0;
|
||||||
|
set_null();
|
||||||
|
set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
|
||||||
|
error= 1;
|
||||||
|
}
|
||||||
|
else if (unsigned_flag && nr < 0)
|
||||||
{
|
{
|
||||||
nr= 0;
|
nr= 0;
|
||||||
set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
|
set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE);
|
||||||
|
@ -93,7 +93,7 @@ double my_strtod(const char *str, char **end)
|
|||||||
if (neg)
|
if (neg)
|
||||||
result= 0.0;
|
result= 0.0;
|
||||||
else
|
else
|
||||||
result= DBL_MAX;
|
result= DBL_MAX*10;
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
while (exp >= 100)
|
while (exp >= 100)
|
||||||
@ -113,9 +113,6 @@ done:
|
|||||||
if (end)
|
if (end)
|
||||||
*end = (char *)str;
|
*end = (char *)str;
|
||||||
|
|
||||||
if (isinf(result))
|
|
||||||
result=DBL_MAX;
|
|
||||||
|
|
||||||
return negative ? -result : result;
|
return negative ? -result : result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user