summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <gluh@gluh.mysql.r18.ru>2004-06-07 20:35:05 +0400
committerunknown <gluh@gluh.mysql.r18.ru>2004-06-07 20:35:05 +0400
commit3665b3be90c2821dc95903cdf39df7a54e3c91a1 (patch)
treea34c4cbfb7f606a4bae2519b711f152d78116a5d
parent21a4f53e0e4bd6484ac0862013b17669e77dc9eb (diff)
downloadmariadb-git-3665b3be90c2821dc95903cdf39df7a54e3c91a1.tar.gz
Fix for bug #4036 multiple SELECT DATE_FORMAT, incorrect results
-rw-r--r--mysql-test/r/type_date.result2
-rw-r--r--mysql-test/t/type_date.test8
-rw-r--r--sql/field.cc18
-rw-r--r--sql/field.h1
4 files changed, 29 insertions, 0 deletions
diff --git a/mysql-test/r/type_date.result b/mysql-test/r/type_date.result
index df8f0ee1814..535cad40b8c 100644
--- a/mysql-test/r/type_date.result
+++ b/mysql-test/r/type_date.result
@@ -22,3 +22,5 @@ DATE_FORMAT("2002-03-06 10:11:12", CONCAT('%a, %d %M %Y %H:%i:%s ' , t2.GMT))
Wed, 06 March 2002 10:11:12 GMT-0800
DATE_FORMAT("2002-03-06 10:11:12", CONCAT('%a, %d %M %Y %H:%i:%s ' , t2.GMT)) DATE_FORMAT("2002-03-06 10:11:12", CONCAT('%a, %d %M %Y %H:%i:%s ' , t2.GMT))
Wed, 06 March 2002 10:11:12 GMT-0800 Wed, 06 March 2002 10:11:12 GMT-0800
+DATE_FORMAT(f1, "%l.%i %p") DATE_FORMAT(f2, "%l.%i %p")
+9.00 AM 12.00 PM
diff --git a/mysql-test/t/type_date.test b/mysql-test/t/type_date.test
index 68c2d55aac9..f3c2acab16e 100644
--- a/mysql-test/t/type_date.test
+++ b/mysql-test/t/type_date.test
@@ -75,3 +75,11 @@ SELECT DATE_FORMAT("2002-03-06 10:11:12", CONCAT('%a, %d %M %Y %H:%i:%s ' , t2.
INSERT INTO t1 VALUES(1);
SELECT DATE_FORMAT("2002-03-06 10:11:12", CONCAT('%a, %d %M %Y %H:%i:%s ' , t2.GMT)), DATE_FORMAT("2002-03-06 10:11:12", CONCAT('%a, %d %M %Y %H:%i:%s ' , t2.GMT)) FROM t1,t2 GROUP BY t1.AFIELD;
drop table t1,t2;
+
+#
+# Bug 4036
+#
+CREATE TABLE t1 (f1 time default NULL, f2 time default NULL) TYPE=MyISAM;
+INSERT INTO t1 (f1, f2) VALUES ('09:00', '12:00');
+SELECT DATE_FORMAT(f1, "%l.%i %p") , DATE_FORMAT(f2, "%l.%i %p") FROM t1;
+DROP TABLE t1;
diff --git a/sql/field.cc b/sql/field.cc
index 246427cc2ac..d98c9e69d5e 100644
--- a/sql/field.cc
+++ b/sql/field.cc
@@ -2649,6 +2649,24 @@ String *Field_time::val_str(String *val_buffer,
return val_buffer;
}
+bool Field_time::get_date(TIME *ltime,
+ bool fuzzydate __attribute__((unused)))
+{
+ long tmp=(long) sint3korr(ptr);
+ ltime->neg=0;
+ if (tmp < 0)
+ {
+ ltime->neg= 1;
+ tmp=-tmp;
+ }
+ ltime->hour=tmp/10000;
+ tmp-=ltime->hour*10000;
+ ltime->minute= tmp/100;
+ ltime->second= tmp % 100;
+ ltime->year= ltime->month= ltime->day= ltime->second_part= 0;
+ return 0;
+}
+
bool Field_time::get_time(TIME *ltime)
{
long tmp=(long) sint3korr(ptr);
diff --git a/sql/field.h b/sql/field.h
index fb3cf2178e2..657c45cabe6 100644
--- a/sql/field.h
+++ b/sql/field.h
@@ -658,6 +658,7 @@ public:
double val_real(void);
longlong val_int(void);
String *val_str(String*,String *);
+ bool get_date(TIME *ltime,bool fuzzydate);
bool get_time(TIME *ltime);
int cmp(const char *,const char*);
void sort_string(char *buff,uint length);