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
c102112f
Commit
c102112f
authored
Nov 10, 2007
by
ramil/ram@ramil.myoffice.izhnet.ru
Browse files
Options
Browse Files
Download
Plain Diff
Merge mysql.com:/home/ram/work/b32137/b32137.5.0
into mysql.com:/home/ram/work/b32137/b32137.5.1
parents
04ed1811
f3813c92
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
36 additions
and
22 deletions
+36
-22
mysql-test/t/ps.test
mysql-test/t/ps.test
+10
-0
sql/item_timefunc.cc
sql/item_timefunc.cc
+26
-22
No files found.
mysql-test/t/ps.test
View file @
c102112f
...
...
@@ -1223,6 +1223,16 @@ EXECUTE st1;
DEALLOCATE
PREPARE
st1
;
DROP
TABLE
t1
;
#
# Bug #32137: prepared statement crash with str_to_date in update clause
#
create
table
t1
(
a
int
,
b
tinyint
);
prepare
st1
from
'update t1 set b= (str_to_date(a, a))'
;
execute
st1
;
deallocate
prepare
st1
;
drop
table
t1
;
--
echo
End
of
4.1
tests
.
############################# 5.0 tests start ################################
...
...
sql/item_timefunc.cc
View file @
c102112f
...
...
@@ -3235,38 +3235,42 @@ get_date_time_result_type(const char *format, uint length)
void
Item_func_str_to_date
::
fix_length_and_dec
()
{
char
format_buff
[
64
];
String
format_str
(
format_buff
,
sizeof
(
format_buff
),
&
my_charset_bin
),
*
format
;
maybe_null
=
1
;
decimals
=
0
;
cached_field_type
=
MYSQL_TYPE_STRING
;
max_length
=
MAX_DATETIME_FULL_WIDTH
*
MY_CHARSET_BIN_MB_MAXLEN
;
cached_timestamp_type
=
MYSQL_TIMESTAMP_NONE
;
format
=
args
[
1
]
->
val_str
(
&
format_str
);
if
(
!
args
[
1
]
->
null_value
&&
(
const_item
=
args
[
1
]
->
const_item
()))
if
((
const_item
=
args
[
1
]
->
const_item
()))
{
cached_format_type
=
get_date_time_result_type
(
format
->
ptr
(),
format
->
length
());
switch
(
cached_format_type
)
{
case
DATE_ONLY
:
cached_timestamp_type
=
MYSQL_TIMESTAMP_DATE
;
cached_field_type
=
MYSQL_TYPE_DATE
;
max_length
=
MAX_DATE_WIDTH
*
MY_CHARSET_BIN_MB_MAXLEN
;
break
;
case
TIME_ONLY
:
case
TIME_MICROSECOND
:
cached_timestamp_type
=
MYSQL_TIMESTAMP_TIME
;
cached_field_type
=
MYSQL_TYPE_TIME
;
max_length
=
MAX_TIME_WIDTH
*
MY_CHARSET_BIN_MB_MAXLEN
;
break
;
default:
cached_timestamp_type
=
MYSQL_TIMESTAMP_DATETIME
;
cached_field_type
=
MYSQL_TYPE_DATETIME
;
break
;
char
format_buff
[
64
];
String
format_str
(
format_buff
,
sizeof
(
format_buff
),
&
my_charset_bin
);
String
*
format
=
args
[
1
]
->
val_str
(
&
format_str
);
if
(
!
args
[
1
]
->
null_value
)
{
cached_format_type
=
get_date_time_result_type
(
format
->
ptr
(),
format
->
length
());
switch
(
cached_format_type
)
{
case
DATE_ONLY
:
cached_timestamp_type
=
MYSQL_TIMESTAMP_DATE
;
cached_field_type
=
MYSQL_TYPE_DATE
;
max_length
=
MAX_DATE_WIDTH
*
MY_CHARSET_BIN_MB_MAXLEN
;
break
;
case
TIME_ONLY
:
case
TIME_MICROSECOND
:
cached_timestamp_type
=
MYSQL_TIMESTAMP_TIME
;
cached_field_type
=
MYSQL_TYPE_TIME
;
max_length
=
MAX_TIME_WIDTH
*
MY_CHARSET_BIN_MB_MAXLEN
;
break
;
default:
cached_timestamp_type
=
MYSQL_TIMESTAMP_DATETIME
;
cached_field_type
=
MYSQL_TYPE_DATETIME
;
break
;
}
}
}
}
bool
Item_func_str_to_date
::
get_date
(
MYSQL_TIME
*
ltime
,
uint
fuzzy_date
)
{
DATE_TIME_FORMAT
date_time_format
;
...
...
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