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
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
fb41ec6f
Commit
fb41ec6f
authored
Nov 28, 2006
by
gkodinov/kgeorge@rakia.gmz
Browse files
Options
Browse Files
Download
Plain Diff
Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into rakia.gmz:/home/kgeorge/mysql/autopush/B11927-5.0-opt
parents
0421d489
42cd9567
Changes
13
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
183 additions
and
24 deletions
+183
-24
mysql-test/r/compare.result
mysql-test/r/compare.result
+4
-0
mysql-test/r/func_gconcat.result
mysql-test/r/func_gconcat.result
+38
-0
mysql-test/r/func_group.result
mysql-test/r/func_group.result
+7
-0
mysql-test/r/type_varchar.result
mysql-test/r/type_varchar.result
+35
-0
mysql-test/t/type_varchar.test
mysql-test/t/type_varchar.test
+9
-0
sql/field.cc
sql/field.cc
+52
-8
sql/item.cc
sql/item.cc
+17
-7
sql/item.h
sql/item.h
+6
-0
sql/item_func.h
sql/item_func.h
+2
-2
sql/item_subselect.h
sql/item_subselect.h
+1
-1
sql/item_sum.cc
sql/item_sum.cc
+4
-4
sql/item_sum.h
sql/item_sum.h
+2
-2
sql/sql_string.h
sql/sql_string.h
+6
-0
No files found.
mysql-test/r/compare.result
View file @
fb41ec6f
...
...
@@ -46,6 +46,10 @@ create table t1 (a tinyint(1),b binary(1));
insert into t1 values (0x01,0x01);
select * from t1 where a=b;
a b
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: ''
select * from t1 where a=b and b=0x01;
a b
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: ''
drop table if exists t1;
mysql-test/r/func_gconcat.result
View file @
fb41ec6f
...
...
@@ -64,11 +64,49 @@ grp group_concat(a order by a,d+c-ascii(c)-a)
1 1
2 2,3
3 4,5,6,7,8,9
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: 'a '
Warning 1292 Truncated incorrect DOUBLE value: 'a '
Warning 1292 Truncated incorrect DOUBLE value: 'a '
Warning 1292 Truncated incorrect DOUBLE value: 'b '
Warning 1292 Truncated incorrect DOUBLE value: 'b '
Warning 1292 Truncated incorrect DOUBLE value: 'c '
Warning 1292 Truncated incorrect DOUBLE value: 'a '
Warning 1292 Truncated incorrect DOUBLE value: 'E '
Warning 1292 Truncated incorrect DOUBLE value: 'b '
Warning 1292 Truncated incorrect DOUBLE value: 'C '
Warning 1292 Truncated incorrect DOUBLE value: 'b '
Warning 1292 Truncated incorrect DOUBLE value: 'D '
Warning 1292 Truncated incorrect DOUBLE value: 'd '
Warning 1292 Truncated incorrect DOUBLE value: 'd '
Warning 1292 Truncated incorrect DOUBLE value: 'd '
Warning 1292 Truncated incorrect DOUBLE value: 'd '
Warning 1292 Truncated incorrect DOUBLE value: 'c '
Warning 1292 Truncated incorrect DOUBLE value: 'D '
select grp,group_concat(a order by d+c-ascii(c),a) from t1 group by grp;
grp group_concat(a order by d+c-ascii(c),a)
1 1
2 3,2
3 7,8,4,6,9,5
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: 'a '
Warning 1292 Truncated incorrect DOUBLE value: 'a '
Warning 1292 Truncated incorrect DOUBLE value: 'a '
Warning 1292 Truncated incorrect DOUBLE value: 'b '
Warning 1292 Truncated incorrect DOUBLE value: 'b '
Warning 1292 Truncated incorrect DOUBLE value: 'c '
Warning 1292 Truncated incorrect DOUBLE value: 'a '
Warning 1292 Truncated incorrect DOUBLE value: 'E '
Warning 1292 Truncated incorrect DOUBLE value: 'b '
Warning 1292 Truncated incorrect DOUBLE value: 'C '
Warning 1292 Truncated incorrect DOUBLE value: 'b '
Warning 1292 Truncated incorrect DOUBLE value: 'D '
Warning 1292 Truncated incorrect DOUBLE value: 'd '
Warning 1292 Truncated incorrect DOUBLE value: 'd '
Warning 1292 Truncated incorrect DOUBLE value: 'd '
Warning 1292 Truncated incorrect DOUBLE value: 'd '
Warning 1292 Truncated incorrect DOUBLE value: 'c '
Warning 1292 Truncated incorrect DOUBLE value: 'D '
select grp,group_concat(c order by 1) from t1 group by grp;
grp group_concat(c order by 1)
1 a
...
...
mysql-test/r/func_group.result
View file @
fb41ec6f
...
...
@@ -62,6 +62,13 @@ NULL NULL
1 7
2 20.25
3 45.483163247594
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: 'a '
Warning 1292 Truncated incorrect DOUBLE value: 'a '
Warning 1292 Truncated incorrect DOUBLE value: 'b '
Warning 1292 Truncated incorrect DOUBLE value: 'c '
Warning 1292 Truncated incorrect DOUBLE value: 'C '
Warning 1292 Truncated incorrect DOUBLE value: 'E '
create table t2 (grp int, a bigint unsigned, c char(10));
insert into t2 select grp,max(a)+max(grp),max(c) from t1 group by grp;
replace into t2 select grp, a, c from t1 limit 2,1;
...
...
mysql-test/r/type_varchar.result
View file @
fb41ec6f
...
...
@@ -453,3 +453,38 @@ id name_id id en cz
2 3 2 en string 2 cz string 2
3 3 3 en string 3 cz string 3
drop table t1, t2, t3;
CREATE TABLE t1 (a CHAR(2));
INSERT INTO t1 VALUES (10), (50), (30), ('1a'), (60), ('t');
SELECT a,(a + 0) FROM t1 ORDER BY a;
a (a + 0)
10 10
1a 1
30 30
50 50
60 60
t 0
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: '1a'
Warning 1292 Truncated incorrect DOUBLE value: 't '
SELECT a,(a DIV 2) FROM t1 ORDER BY a;
a (a DIV 2)
10 5
1a 0
30 15
50 25
60 30
t 0
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '1a'
Warning 1292 Truncated incorrect INTEGER value: 't '
SELECT a,CAST(a AS SIGNED) FROM t1 ORDER BY a;
a CAST(a AS SIGNED)
10 10
1a 1
30 30
50 50
60 60
t 0
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '1a'
Warning 1292 Truncated incorrect INTEGER value: 't'
mysql-test/t/type_varchar.test
View file @
fb41ec6f
...
...
@@ -187,3 +187,12 @@ left join t3 on t1.id=t3.id order by t3.id;
--
disable_metadata
--
enable_ps_protocol
drop
table
t1
,
t2
,
t3
;
#
# Bug #11927: Warnings shown for CAST( chr as signed) but not (chr + 0)
#
CREATE
TABLE
t1
(
a
CHAR
(
2
));
INSERT
INTO
t1
VALUES
(
10
),
(
50
),
(
30
),
(
'1a'
),
(
60
),
(
't'
);
SELECT
a
,(
a
+
0
)
FROM
t1
ORDER
BY
a
;
SELECT
a
,(
a
DIV
2
)
FROM
t1
ORDER
BY
a
;
SELECT
a
,
CAST
(
a
AS
SIGNED
)
FROM
t1
ORDER
BY
a
;
sql/field.cc
View file @
fb41ec6f
...
...
@@ -47,6 +47,8 @@ uchar Field_null::null[1]={1};
const
char
field_separator
=
','
;
#define DOUBLE_TO_STRING_CONVERSION_BUFFER_SIZE 320
#define LONGLONG_TO_STRING_CONVERSION_BUFFER_SIZE 128
#define DECIMAL_TO_STRING_CONVERSION_BUFFER_SIZE 128
#define BLOB_PACK_LENGTH_TO_MAX_LENGH(arg) \
((ulong) ((LL(1) << min(arg, 4) * 8) - LL(1)))
...
...
@@ -6056,19 +6058,49 @@ int Field_longstr::store_decimal(const my_decimal *d)
double
Field_string
::
val_real
(
void
)
{
int
not_used
;
char
*
end
_not_used
;
int
error
;
char
*
end
;
CHARSET_INFO
*
cs
=
charset
();
return
my_strntod
(
cs
,
ptr
,
field_length
,
&
end_not_used
,
&
not_used
);
double
result
;
result
=
my_strntod
(
cs
,
ptr
,
field_length
,
&
end
,
&
error
);
if
(
!
table
->
in_use
->
no_errors
&&
(
error
||
(
field_length
!=
(
uint32
)(
end
-
ptr
)
&&
!
check_if_only_end_space
(
cs
,
end
,
ptr
+
field_length
))))
{
char
buf
[
DOUBLE_TO_STRING_CONVERSION_BUFFER_SIZE
];
String
tmp
(
buf
,
sizeof
(
buf
),
cs
);
tmp
.
copy
(
ptr
,
field_length
,
cs
);
push_warning_printf
(
current_thd
,
MYSQL_ERROR
::
WARN_LEVEL_WARN
,
ER_TRUNCATED_WRONG_VALUE
,
ER
(
ER_TRUNCATED_WRONG_VALUE
),
"DOUBLE"
,
tmp
.
c_ptr
());
}
return
result
;
}
longlong
Field_string
::
val_int
(
void
)
{
int
not_used
;
char
*
end_not_used
;
CHARSET_INFO
*
cs
=
charset
();
return
my_strntoll
(
cs
,
ptr
,
field_length
,
10
,
&
end_not_used
,
&
not_used
);
int
error
;
char
*
end
;
CHARSET_INFO
*
cs
=
charset
();
longlong
result
;
result
=
my_strntoll
(
cs
,
ptr
,
field_length
,
10
,
&
end
,
&
error
);
if
(
!
table
->
in_use
->
no_errors
&&
(
error
||
(
field_length
!=
(
uint32
)(
end
-
ptr
)
&&
!
check_if_only_end_space
(
cs
,
end
,
ptr
+
field_length
))))
{
char
buf
[
LONGLONG_TO_STRING_CONVERSION_BUFFER_SIZE
];
String
tmp
(
buf
,
sizeof
(
buf
),
cs
);
tmp
.
copy
(
ptr
,
field_length
,
cs
);
push_warning_printf
(
current_thd
,
MYSQL_ERROR
::
WARN_LEVEL_WARN
,
ER_TRUNCATED_WRONG_VALUE
,
ER
(
ER_TRUNCATED_WRONG_VALUE
),
"INTEGER"
,
tmp
.
c_ptr
());
}
return
result
;
}
...
...
@@ -6085,8 +6117,20 @@ String *Field_string::val_str(String *val_buffer __attribute__((unused)),
my_decimal
*
Field_string
::
val_decimal
(
my_decimal
*
decimal_value
)
{
str2my_decimal
(
E_DEC_FATAL_ERROR
,
ptr
,
field_length
,
charset
(),
int
err
=
str2my_decimal
(
E_DEC_FATAL_ERROR
,
ptr
,
field_length
,
charset
(),
decimal_value
);
if
(
!
table
->
in_use
->
no_errors
&&
err
)
{
char
buf
[
DECIMAL_TO_STRING_CONVERSION_BUFFER_SIZE
];
CHARSET_INFO
*
cs
=
charset
();
String
tmp
(
buf
,
sizeof
(
buf
),
cs
);
tmp
.
copy
(
ptr
,
field_length
,
cs
);
push_warning_printf
(
current_thd
,
MYSQL_ERROR
::
WARN_LEVEL_WARN
,
ER_TRUNCATED_WRONG_VALUE
,
ER
(
ER_TRUNCATED_WRONG_VALUE
),
"DECIMAL"
,
tmp
.
c_ptr
());
}
return
decimal_value
;
}
...
...
sql/item.cc
View file @
fb41ec6f
...
...
@@ -2175,12 +2175,6 @@ void Item_string::print(String *str)
}
inline
bool
check_if_only_end_space
(
CHARSET_INFO
*
cs
,
char
*
str
,
char
*
end
)
{
return
str
+
cs
->
cset
->
scan
(
cs
,
str
,
end
,
MY_SEQ_SPACES
)
==
end
;
}
double
Item_string
::
val_real
()
{
DBUG_ASSERT
(
fixed
==
1
);
...
...
@@ -4764,6 +4758,22 @@ bool Item_field::send(Protocol *protocol, String *buffer)
}
void
Item_field
::
update_null_value
()
{
/*
need to set no_errors to prevent warnings about type conversion
popping up.
*/
THD
*
thd
=
field
->
table
->
in_use
;
int
no_errors
;
no_errors
=
thd
->
no_errors
;
thd
->
no_errors
=
1
;
Item
::
update_null_value
();
thd
->
no_errors
=
no_errors
;
}
Item_ref
::
Item_ref
(
Name_resolution_context
*
context_arg
,
Item
**
item
,
const
char
*
table_name_arg
,
const
char
*
field_name_arg
)
...
...
@@ -6120,7 +6130,7 @@ bool Item_cache_row::null_inside()
}
else
{
values
[
i
]
->
val_int
();
values
[
i
]
->
update_null_value
();
if
(
values
[
i
]
->
null_value
)
return
1
;
}
...
...
sql/item.h
View file @
fb41ec6f
...
...
@@ -703,6 +703,11 @@ class Item {
*/
virtual
bool
is_null
()
{
return
0
;
}
/*
Make sure the null_value member has a correct value.
*/
virtual
void
update_null_value
()
{
(
void
)
val_int
();
}
/*
Inform the item that there will be no distinction between its result
being FALSE or NULL.
...
...
@@ -1270,6 +1275,7 @@ class Item_field :public Item_ident
bool
get_date_result
(
TIME
*
ltime
,
uint
fuzzydate
);
bool
get_time
(
TIME
*
ltime
);
bool
is_null
()
{
return
field
->
is_null
();
}
void
update_null_value
();
Item
*
get_tmp_table_item
(
THD
*
thd
);
bool
collect_item_field_processor
(
byte
*
arg
);
bool
find_item_in_field_list_processor
(
byte
*
arg
);
...
...
sql/item_func.h
View file @
fb41ec6f
...
...
@@ -157,7 +157,7 @@ class Item_func :public Item_result_field
return
(
null_value
=
args
[
0
]
->
get_time
(
ltime
));
}
bool
is_null
()
{
(
void
)
val_int
();
/* Discard result. It sets null_value as side-effect. */
update_null_value
();
return
null_value
;
}
void
signal_divide_by_null
();
...
...
@@ -241,7 +241,7 @@ class Item_func_numhybrid: public Item_func
virtual
double
real_op
()
=
0
;
virtual
my_decimal
*
decimal_op
(
my_decimal
*
)
=
0
;
virtual
String
*
str_op
(
String
*
)
=
0
;
bool
is_null
()
{
(
void
)
val_real
();
return
null_value
;
}
bool
is_null
()
{
update_null_value
();
return
null_value
;
}
};
/* function where type of result detected by first argument */
...
...
sql/item_subselect.h
View file @
fb41ec6f
...
...
@@ -91,7 +91,7 @@ class Item_subselect :public Item_result_field
enum
Type
type
()
const
;
bool
is_null
()
{
val_int
();
update_null_value
();
return
null_value
;
}
bool
fix_fields
(
THD
*
thd
,
Item
**
ref
);
...
...
sql/item_sum.cc
View file @
fb41ec6f
...
...
@@ -1050,7 +1050,7 @@ bool Item_sum_count::add()
count
++
;
else
{
(
void
)
args
[
0
]
->
val_int
();
args
[
0
]
->
update_null_value
();
if
(
!
args
[
0
]
->
null_value
)
count
++
;
}
...
...
@@ -1957,7 +1957,7 @@ void Item_sum_count::reset_field()
nr
=
1
;
else
{
(
void
)
args
[
0
]
->
val_int
();
args
[
0
]
->
update_null_value
();
if
(
!
args
[
0
]
->
null_value
)
nr
=
1
;
}
...
...
@@ -2067,7 +2067,7 @@ void Item_sum_count::update_field()
nr
++
;
else
{
(
void
)
args
[
0
]
->
val_int
();
args
[
0
]
->
update_null_value
();
if
(
!
args
[
0
]
->
null_value
)
nr
++
;
}
...
...
@@ -2547,7 +2547,7 @@ bool Item_sum_count_distinct::setup(THD *thd)
return
TRUE
;
// End of memory
if
(
item
->
const_item
())
{
(
void
)
item
->
val_int
();
item
->
update_null_value
();
if
(
item
->
null_value
)
always_null
=
1
;
}
...
...
sql/item_sum.h
View file @
fb41ec6f
...
...
@@ -618,7 +618,7 @@ class Item_avg_field :public Item_result_field
double
val_real
();
longlong
val_int
();
my_decimal
*
val_decimal
(
my_decimal
*
);
bool
is_null
()
{
(
void
)
val_int
();
return
null_value
;
}
bool
is_null
()
{
update_null_value
();
return
null_value
;
}
String
*
val_str
(
String
*
);
enum_field_types
field_type
()
const
{
...
...
@@ -685,7 +685,7 @@ class Item_variance_field :public Item_result_field
{
/* can't be fix_fields()ed */
return
(
longlong
)
rint
(
val_real
());
}
String
*
val_str
(
String
*
);
my_decimal
*
val_decimal
(
my_decimal
*
);
bool
is_null
()
{
(
void
)
val_int
();
return
null_value
;
}
bool
is_null
()
{
update_null_value
();
return
null_value
;
}
enum_field_types
field_type
()
const
{
return
hybrid_type
==
DECIMAL_RESULT
?
...
...
sql/sql_string.h
View file @
fb41ec6f
...
...
@@ -363,3 +363,9 @@ class String
return
(
s
->
alloced
&&
Ptr
>=
s
->
Ptr
&&
Ptr
<
s
->
Ptr
+
s
->
str_length
);
}
};
static
inline
bool
check_if_only_end_space
(
CHARSET_INFO
*
cs
,
char
*
str
,
char
*
end
)
{
return
str
+
cs
->
cset
->
scan
(
cs
,
str
,
end
,
MY_SEQ_SPACES
)
==
end
;
}
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