diff options
author | unknown <ramil/ram@mysql.com/myoffice.izhnet.ru> | 2006-10-05 15:29:00 +0500 |
---|---|---|
committer | unknown <ramil/ram@mysql.com/myoffice.izhnet.ru> | 2006-10-05 15:29:00 +0500 |
commit | 89a4a3e92c91a403740f1f2cdd057ab63afeef46 (patch) | |
tree | 01e23ee67e9e0f6fe3075028754bdbbcdda3aebe | |
parent | 78f47b1b1080833241860c6213854fe04487ff12 (diff) | |
download | mariadb-git-89a4a3e92c91a403740f1f2cdd057ab63afeef46.tar.gz |
Fix for bug #22029: str_to_date returning NULL, while date_format works using identical format.
The problem appears when we have a space followed by a non-format symbol.
Fix: properly skip spaces.
mysql-test/r/date_formats.result:
Fix for bug #22029: str_to_date returning NULL, while date_format works using identical format.
- test result.
mysql-test/t/date_formats.test:
Fix for bug #22029: str_to_date returning NULL, while date_format works using identical format.
- test case.
sql/item_timefunc.cc:
Fix for bug #22029: str_to_date returning NULL, while date_format works using identical format.
- skipping pre-spaces between each argument moved.
-rw-r--r-- | mysql-test/r/date_formats.result | 9 | ||||
-rw-r--r-- | mysql-test/t/date_formats.test | 8 | ||||
-rw-r--r-- | sql/item_timefunc.cc | 8 |
3 files changed, 21 insertions, 4 deletions
diff --git a/mysql-test/r/date_formats.result b/mysql-test/r/date_formats.result index 035d98d2b74..07cc37fe6bc 100644 --- a/mysql-test/r/date_formats.result +++ b/mysql-test/r/date_formats.result @@ -530,4 +530,13 @@ DATE_FORMAT('%Y-%m-%d %H:%i:%s', 1151414896) NULL Warnings: Warning 1292 Truncated incorrect datetime value: '%Y-%m-%d %H:%i:%s' +select str_to_date('04 /30/2004', '%m /%d/%Y'); +str_to_date('04 /30/2004', '%m /%d/%Y') +2004-04-30 +select str_to_date('04/30 /2004', '%m /%d /%Y'); +str_to_date('04/30 /2004', '%m /%d /%Y') +2004-04-30 +select str_to_date('04/30/2004 ', '%m/%d/%Y '); +str_to_date('04/30/2004 ', '%m/%d/%Y ') +2004-04-30 "End of 4.1 tests" diff --git a/mysql-test/t/date_formats.test b/mysql-test/t/date_formats.test index 922d047eac8..7e74c128dee 100644 --- a/mysql-test/t/date_formats.test +++ b/mysql-test/t/date_formats.test @@ -317,4 +317,12 @@ SELECT TIME_FORMAT("25:00:00", '%l %p'); # SELECT DATE_FORMAT('%Y-%m-%d %H:%i:%s', 1151414896); +# +# Bug #22029: str_to_date returning NULL +# + +select str_to_date('04 /30/2004', '%m /%d/%Y'); +select str_to_date('04/30 /2004', '%m /%d /%Y'); +select str_to_date('04/30/2004 ', '%m/%d/%Y '); + --echo "End of 4.1 tests" diff --git a/sql/item_timefunc.cc b/sql/item_timefunc.cc index 2da0e8956c2..b2036999d88 100644 --- a/sql/item_timefunc.cc +++ b/sql/item_timefunc.cc @@ -171,15 +171,15 @@ static bool extract_date_time(DATE_TIME_FORMAT *format, for (; ptr != end && val != val_end; ptr++) { + /* Skip pre-space between each argument */ + while (val != val_end && my_isspace(cs, *val)) + val++; + if (*ptr == '%' && ptr+1 != end) { int val_len; char *tmp; - /* Skip pre-space between each argument */ - while (val != val_end && my_isspace(cs, *val)) - val++; - val_len= (uint) (val_end - val); switch (*++ptr) { /* Year */ |