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
a2261d57
Commit
a2261d57
authored
Jun 15, 2006
by
evgen@moonbone.local
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Many files:
After merge fix
parent
e35a0ca4
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
52 additions
and
73 deletions
+52
-73
mysql-test/r/cast.result
mysql-test/r/cast.result
+1
-1
mysql-test/r/func_concat.result
mysql-test/r/func_concat.result
+7
-7
mysql-test/r/func_time.result
mysql-test/r/func_time.result
+3
-1
sql/field.cc
sql/field.cc
+32
-50
sql/item_cmpfunc.cc
sql/item_cmpfunc.cc
+4
-4
sql/item_cmpfunc.h
sql/item_cmpfunc.h
+5
-10
No files found.
mysql-test/r/cast.result
View file @
a2261d57
...
...
@@ -254,7 +254,7 @@ cast("2001-1-1" as datetime) = "2001-01-01 00:00:00"
1
select cast("1:2:3" as TIME) = "1:02:03";
cast("1:2:3" as TIME) = "1:02:03"
1
0
select cast(NULL as DATE);
cast(NULL as DATE)
NULL
...
...
mysql-test/r/func_concat.result
View file @
a2261d57
...
...
@@ -68,13 +68,6 @@ select 'a' union select concat('a', -0.0000);
a
a
a0.0000
create table t1(f1 varchar(6)) charset=utf8;
insert into t1 values ("123456");
select concat(f1, 2) a from t1 union select 'x' a from t1;
a
1234562
x
drop table t1;
select concat((select x from (select 'a' as x) as t1 ),
(select y from (select 'b' as y) as t2 )) from (select 1 union select 2 )
as t3;
...
...
@@ -82,3 +75,10 @@ concat((select x from (select 'a' as x) as t1 ),
(select y from (select 'b' as y) as t2 ))
ab
ab
create table t1(f1 varchar(6)) charset=utf8;
insert into t1 values ("123456");
select concat(f1, 2) a from t1 union select 'x' a from t1;
a
1234562
x
drop table t1;
mysql-test/r/func_time.result
View file @
a2261d57
...
...
@@ -784,7 +784,9 @@ f1
select f1 from t1 where "2006-1-1" between f1 and 'zzz';
f1
Warnings:
Warning 1292 Truncated incorrect date value: 'zzz'
Warning 1292 Incorrect date value: 'zzz' for column 'f1' at row 1
Warning 1292 Truncated incorrect INTEGER value: 'zzz'
Warning 1292 Truncated incorrect INTEGER value: 'zzz'
select f1 from t1 where makedate(2006,1) between date(f1) and date(f3);
f1
2006-01-01
...
...
sql/field.cc
View file @
a2261d57
...
...
@@ -4530,11 +4530,11 @@ int Field_timestamp::store(const char *from,uint len,CHARSET_INFO *cs)
int
error
;
bool
have_smth_to_conv
;
my_bool
in_dst_time_gap
;
THD
*
thd
=
table
->
in_use
;
THD
*
thd
=
table
?
table
->
in_use
:
current_thd
;
/* We don't want to store invalid or fuzzy datetime values in TIMESTAMP */
have_smth_to_conv
=
(
str_to_datetime
(
from
,
len
,
&
l_time
,
(
t
able
->
in_use
->
variables
.
sql_mode
&
(
t
hd
->
variables
.
sql_mode
&
MODE_NO_ZERO_DATE
)
|
MODE_NO_ZERO_IN_DATE
,
&
error
)
>
MYSQL_TIMESTAMP_ERROR
);
...
...
@@ -4599,7 +4599,7 @@ int Field_timestamp::store(longlong nr, bool unsigned_val)
my_time_t
timestamp
=
0
;
int
error
;
my_bool
in_dst_time_gap
;
THD
*
thd
=
table
->
in_use
;
THD
*
thd
=
table
?
table
->
in_use
:
current_thd
;
/* We don't want to store invalid or fuzzy datetime values in TIMESTAMP */
longlong
tmp
=
number_to_datetime
(
nr
,
&
l_time
,
(
thd
->
variables
.
sql_mode
&
...
...
@@ -4653,7 +4653,7 @@ longlong Field_timestamp::val_int(void)
{
uint32
temp
;
TIME
time_tmp
;
THD
*
thd
=
table
->
in_use
;
THD
*
thd
=
table
?
table
->
in_use
:
current_thd
;
#ifdef WORDS_BIGENDIAN
if
(
table
->
s
->
db_low_byte_first
)
...
...
@@ -4678,7 +4678,7 @@ String *Field_timestamp::val_str(String *val_buffer, String *val_ptr)
{
uint32
temp
,
temp2
;
TIME
time_tmp
;
THD
*
thd
=
table
->
in_use
;
THD
*
thd
=
table
?
table
->
in_use
:
current_thd
;
char
*
to
;
val_buffer
->
alloc
(
field_length
+
1
);
...
...
@@ -4749,7 +4749,7 @@ String *Field_timestamp::val_str(String *val_buffer, String *val_ptr)
bool
Field_timestamp
::
get_date
(
TIME
*
ltime
,
uint
fuzzydate
)
{
long
temp
;
THD
*
thd
=
table
->
in_use
;
THD
*
thd
=
table
?
table
->
in_use
:
current_thd
;
#ifdef WORDS_BIGENDIAN
if
(
table
->
s
->
db_low_byte_first
)
temp
=
uint4korr
(
ptr
);
...
...
@@ -4832,7 +4832,8 @@ void Field_timestamp::sql_type(String &res) const
void
Field_timestamp
::
set_time
()
{
long
tmp
=
(
long
)
table
->
in_use
->
query_start
();
THD
*
thd
=
table
?
table
->
in_use
:
current_thd
;
long
tmp
=
(
long
)
thd
->
query_start
();
set_notnull
();
#ifdef WORDS_BIGENDIAN
if
(
table
->
s
->
db_low_byte_first
)
...
...
@@ -5024,12 +5025,13 @@ String *Field_time::val_str(String *val_buffer,
bool
Field_time
::
get_date
(
TIME
*
ltime
,
uint
fuzzydate
)
{
long
tmp
;
THD
*
thd
=
table
?
table
->
in_use
:
current_thd
;
if
(
!
(
fuzzydate
&
TIME_FUZZY_DATE
))
{
push_warning_printf
(
t
able
->
in_use
,
MYSQL_ERROR
::
WARN_LEVEL_WARN
,
push_warning_printf
(
t
hd
,
MYSQL_ERROR
::
WARN_LEVEL_WARN
,
ER_WARN_DATA_OUT_OF_RANGE
,
ER
(
ER_WARN_DATA_OUT_OF_RANGE
),
field_name
,
t
able
->
in_use
->
row_count
);
t
hd
->
row_count
);
return
1
;
}
tmp
=
(
long
)
sint3korr
(
ptr
);
...
...
@@ -5217,9 +5219,10 @@ int Field_date::store(const char *from, uint len,CHARSET_INFO *cs)
TIME
l_time
;
uint32
tmp
;
int
error
;
THD
*
thd
=
table
?
table
->
in_use
:
current_thd
;
if
(
str_to_datetime
(
from
,
len
,
&
l_time
,
TIME_FUZZY_DATE
|
(
t
able
->
in_use
->
variables
.
sql_mode
&
(
t
hd
->
variables
.
sql_mode
&
(
MODE_NO_ZERO_IN_DATE
|
MODE_NO_ZERO_DATE
|
MODE_INVALID_DATES
)),
&
error
)
<=
MYSQL_TIMESTAMP_ERROR
)
...
...
@@ -5272,9 +5275,10 @@ int Field_date::store(longlong nr, bool unsigned_val)
TIME
not_used
;
int
error
;
longlong
initial_nr
=
nr
;
THD
*
thd
=
table
?
table
->
in_use
:
current_thd
;
nr
=
number_to_datetime
(
nr
,
&
not_used
,
(
TIME_FUZZY_DATE
|
(
t
able
->
in_use
->
variables
.
sql_mode
&
(
t
hd
->
variables
.
sql_mode
&
(
MODE_NO_ZERO_IN_DATE
|
MODE_NO_ZERO_DATE
|
MODE_INVALID_DATES
))),
&
error
);
...
...
@@ -5420,9 +5424,10 @@ int Field_newdate::store(const char *from,uint len,CHARSET_INFO *cs)
TIME
l_time
;
long
tmp
;
int
error
;
THD
*
thd
=
table
?
table
->
in_use
:
current_thd
;
if
(
str_to_datetime
(
from
,
len
,
&
l_time
,
(
TIME_FUZZY_DATE
|
(
t
able
->
in_use
->
variables
.
sql_mode
&
(
t
hd
->
variables
.
sql_mode
&
(
MODE_NO_ZERO_IN_DATE
|
MODE_NO_ZERO_DATE
|
MODE_INVALID_DATES
))),
&
error
)
<=
MYSQL_TIMESTAMP_ERROR
)
...
...
@@ -5460,9 +5465,10 @@ int Field_newdate::store(longlong nr, bool unsigned_val)
TIME
l_time
;
longlong
tmp
;
int
error
;
THD
*
thd
=
table
?
table
->
in_use
:
current_thd
;
if
(
number_to_datetime
(
nr
,
&
l_time
,
(
TIME_FUZZY_DATE
|
(
t
able
->
in_use
->
variables
.
sql_mode
&
(
t
hd
->
variables
.
sql_mode
&
(
MODE_NO_ZERO_IN_DATE
|
MODE_NO_ZERO_DATE
|
MODE_INVALID_DATES
))),
&
error
)
==
LL
(
-
1
))
...
...
@@ -5605,10 +5611,11 @@ int Field_datetime::store(const char *from,uint len,CHARSET_INFO *cs)
int
error
;
ulonglong
tmp
=
0
;
enum
enum_mysql_timestamp_type
func_res
;
THD
*
thd
=
table
?
table
->
in_use
:
current_thd
;
func_res
=
str_to_datetime
(
from
,
len
,
&
time_tmp
,
(
TIME_FUZZY_DATE
|
(
t
able
->
in_use
->
variables
.
sql_mode
&
(
t
hd
->
variables
.
sql_mode
&
(
MODE_NO_ZERO_IN_DATE
|
MODE_NO_ZERO_DATE
|
MODE_INVALID_DATES
))),
&
error
);
...
...
@@ -5655,9 +5662,10 @@ int Field_datetime::store(longlong nr, bool unsigned_val)
TIME
not_used
;
int
error
;
longlong
initial_nr
=
nr
;
THD
*
thd
=
table
?
table
->
in_use
:
current_thd
;
nr
=
number_to_datetime
(
nr
,
&
not_used
,
(
TIME_FUZZY_DATE
|
(
t
able
->
in_use
->
variables
.
sql_mode
&
(
t
hd
->
variables
.
sql_mode
&
(
MODE_NO_ZERO_IN_DATE
|
MODE_NO_ZERO_DATE
|
MODE_INVALID_DATES
))),
&
error
);
...
...
@@ -9076,10 +9084,10 @@ Field::set_datetime_warning(MYSQL_ERROR::enum_warning_level level, uint code,
const
char
*
str
,
uint
str_length
,
timestamp_type
ts_type
,
int
cuted_increment
)
{
if
(
table
->
in_use
->
really_abort_on_warning
()
||
THD
*
thd
=
table
?
table
->
in_use
:
current_thd
;
if
(
thd
->
really_abort_on_warning
()
||
set_warning
(
level
,
code
,
cuted_increment
))
make_truncated_value_warning
(
table
?
table
->
in_use
:
current_thd
,
str
,
str_length
,
ts_type
,
make_truncated_value_warning
(
thd
,
str
,
str_length
,
ts_type
,
field_name
);
}
...
...
@@ -9106,13 +9114,13 @@ Field::set_datetime_warning(MYSQL_ERROR::enum_warning_level level, uint code,
longlong
nr
,
timestamp_type
ts_type
,
int
cuted_increment
)
{
if
(
table
->
in_use
->
really_abort_on_warning
()
||
THD
*
thd
=
table
?
table
->
in_use
:
current_thd
;
if
(
thd
->
really_abort_on_warning
()
||
set_warning
(
level
,
code
,
cuted_increment
))
{
char
str_nr
[
22
];
char
*
str_end
=
longlong10_to_str
(
nr
,
str_nr
,
-
10
);
make_truncated_value_warning
(
table
?
table
->
in_use
:
current_thd
,
str_nr
,
(
uint
)
(
str_end
-
str_nr
),
make_truncated_value_warning
(
thd
,
str_nr
,
(
uint
)
(
str_end
-
str_nr
),
ts_type
,
field_name
);
}
}
...
...
@@ -9138,41 +9146,15 @@ void
Field
::
set_datetime_warning
(
MYSQL_ERROR
::
enum_warning_level
level
,
uint
code
,
double
nr
,
timestamp_type
ts_type
)
{
if
(
table
->
in_use
->
really_abort_on_warning
()
||
THD
*
thd
=
table
?
table
->
in_use
:
current_thd
;
if
(
thd
->
really_abort_on_warning
()
||
set_warning
(
level
,
code
,
1
))
{
/* DBL_DIG is enough to print '-[digits].E+###' */
char
str_nr
[
DBL_DIG
+
8
];
uint
str_len
=
my_sprintf
(
str_nr
,
(
str_nr
,
"%g"
,
nr
));
make_truncated_value_warning
(
table
?
table
->
in_use
:
current_thd
,
str_nr
,
str_len
,
ts_type
,
make_truncated_value_warning
(
thd
,
str_nr
,
str_len
,
ts_type
,
field_name
);
}
}
/*
maximum possible display length for blob
SYNOPSIS
Field_blob::max_length()
RETURN
length
*/
uint32
Field_blob
::
max_length
()
{
switch
(
packlength
)
{
case
1
:
return
255
*
field_charset
->
mbmaxlen
;
case
2
:
return
65535
*
field_charset
->
mbmaxlen
;
case
3
:
return
16777215
*
field_charset
->
mbmaxlen
;
case
4
:
return
(
uint32
)
4294967295U
;
default:
DBUG_ASSERT
(
0
);
// we should never go here
return
0
;
}
}
sql/item_cmpfunc.cc
View file @
a2261d57
...
...
@@ -366,18 +366,18 @@ static bool convert_constant_item(THD *thd, Field *field, Item **item)
if
(
!
(
*
item
)
->
with_subselect
&&
(
*
item
)
->
const_item
())
{
/* For comparison purposes allow invalid dates like 2000-01-32 */
ulong
orig_sql_mode
=
field
->
table
->
in_use
->
variables
.
sql_mode
;
field
->
table
->
in_use
->
variables
.
sql_mode
|=
MODE_INVALID_DATES
;
ulong
orig_sql_mode
=
thd
->
variables
.
sql_mode
;
thd
->
variables
.
sql_mode
|=
MODE_INVALID_DATES
;
if
(
!
(
*
item
)
->
save_in_field
(
field
,
1
)
&&
!
((
*
item
)
->
null_value
))
{
Item
*
tmp
=
new
Item_int_with_ref
(
field
->
val_int
(),
*
item
,
test
(
field
->
flags
&
UNSIGNED_FLAG
));
field
->
table
->
in_use
->
variables
.
sql_mode
=
orig_sql_mode
;
thd
->
variables
.
sql_mode
=
orig_sql_mode
;
if
(
tmp
)
thd
->
change_item_tree
(
item
,
tmp
);
return
1
;
// Item was replaced
}
field
->
table
->
in_use
->
variables
.
sql_mode
=
orig_sql_mode
;
thd
->
variables
.
sql_mode
=
orig_sql_mode
;
}
return
0
;
}
...
...
sql/item_cmpfunc.h
View file @
a2261d57
...
...
@@ -45,11 +45,8 @@ public:
int
set_compare_func
(
Item_bool_func2
*
owner
,
Item_result
type
);
inline
int
set_compare_func
(
Item_bool_func2
*
owner_arg
)
{
Item_result
ar
=
(
*
a
)
->
result_as_longlong
()
&&
(
*
b
)
->
const_item
()
?
INT_RESULT
:
(
*
a
)
->
result_type
();
Item_result
br
=
(
*
b
)
->
result_as_longlong
()
&&
(
*
a
)
->
const_item
()
?
INT_RESULT
:
(
*
b
)
->
result_type
();
return
set_compare_func
(
owner_arg
,
item_cmp_type
(
ar
,
br
));
return
set_compare_func
(
owner_arg
,
item_cmp_type
((
*
a
)
->
result_type
(),
(
*
b
)
->
result_type
()));
}
inline
int
set_cmp_func
(
Item_bool_func2
*
owner_arg
,
Item
**
a1
,
Item
**
a2
,
...
...
@@ -62,11 +59,9 @@ public:
inline
int
set_cmp_func
(
Item_bool_func2
*
owner_arg
,
Item
**
a1
,
Item
**
a2
)
{
Item_result
ar
=
(
*
a1
)
->
result_as_longlong
()
&&
(
*
a2
)
->
const_item
()
?
INT_RESULT
:
(
*
a1
)
->
result_type
();
Item_result
br
=
(
*
a2
)
->
result_as_longlong
()
&&
(
*
a1
)
->
const_item
()
?
INT_RESULT
:
(
*
a2
)
->
result_type
();
return
set_cmp_func
(
owner_arg
,
a1
,
a2
,
item_cmp_type
(
ar
,
br
));
return
set_cmp_func
(
owner_arg
,
a1
,
a2
,
item_cmp_type
((
*
a1
)
->
result_type
(),
(
*
a2
)
->
result_type
()));
}
inline
int
compare
()
{
return
(
this
->*
func
)();
}
...
...
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