summaryrefslogtreecommitdiff
path: root/sql/field.h
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2017-09-21 21:21:36 +0200
committerSergei Golubchik <serg@mariadb.org>2017-09-22 14:01:26 +0200
commit68d1a598bcda36d375fd295e3e65cdf8aef027f1 (patch)
treeca6ea610a74af81bbfbc256f0670e9c16f647d6a /sql/field.h
parenta5e1f60b3167e0057e64166df06424f1fb96bec3 (diff)
downloadmariadb-git-68d1a598bcda36d375fd295e3e65cdf8aef027f1.tar.gz
bugfix: copy timestamps correctly in INSERT...SELECT
Implement Field_timestamp::save_in_field(timestamp_field) that stores timestamp values without converting them to MYSQL_TIME and back, because this conversion is lossy around DST change time. This fixes main.old-mode test. This is 10.2 version of f8a800bec81
Diffstat (limited to 'sql/field.h')
-rw-r--r--sql/field.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/sql/field.h b/sql/field.h
index cd65cb9c580..2167b90e26c 100644
--- a/sql/field.h
+++ b/sql/field.h
@@ -842,6 +842,7 @@ public:
virtual int store(longlong nr, bool unsigned_val)=0;
virtual int store_decimal(const my_decimal *d)=0;
virtual int store_time_dec(MYSQL_TIME *ltime, uint dec);
+ virtual int store_timestamp(my_time_t timestamp, ulong sec_part);
int store_time(MYSQL_TIME *ltime)
{ return store_time_dec(ltime, TIME_SECOND_PART_DIGITS); }
int store(const char *to, uint length, CHARSET_INFO *cs,
@@ -2395,6 +2396,8 @@ public:
int store(longlong nr, bool unsigned_val);
int store_time_dec(MYSQL_TIME *ltime, uint dec);
int store_decimal(const my_decimal *);
+ int store_timestamp(my_time_t timestamp, ulong sec_part);
+ int save_in_field(Field *to);
double val_real(void);
longlong val_int(void);
String *val_str(String*,String *);