diff options
author | unknown <monty@hundin.mysql.fi> | 2001-11-04 16:14:09 +0200 |
---|---|---|
committer | unknown <monty@hundin.mysql.fi> | 2001-11-04 16:14:09 +0200 |
commit | 0d1ba873aa11ea581ebbda9f450027329f2e1a3b (patch) | |
tree | 689c9d0271e23431f1ab0ac09e1af4d68a58ca76 /sql/field.cc | |
parent | 9f90ff3f12f1fc2bcb70cde74dbd6f27e33e230c (diff) | |
parent | 0176dacd54b7eb62ebc4a81909b189517aee2cb4 (diff) | |
download | mariadb-git-0d1ba873aa11ea581ebbda9f450027329f2e1a3b.tar.gz |
merge with 3.23.44
BitKeeper/etc/ignore:
auto-union
BitKeeper/etc/logging_ok:
auto-union
Docs/manual.texi:
Auto merged
include/my_base.h:
Auto merged
mysql-test/t/func_time.test:
Auto merged
mysql-test/t/join.test:
Auto merged
mysql-test/t/rpl000012.test:
Auto merged
BUILD/FINISH.sh:
Auto merged
BitKeeper/deleted/.del-db_ext.h~a1e210bbd0de0a48:
Auto merged
BitKeeper/deleted/.del-mutex_ext.h~f20f47ddc346598b:
Auto merged
BitKeeper/deleted/.del-violite.c~984c09cffe14a11b:
Auto merged
BitKeeper/deleted/.del-violite.c~d7b85be615595ace:
Auto merged
Build-tools/Do-all-build-steps:
Auto merged
client/client_priv.h:
Auto merged
client/mysqladmin.c:
Auto merged
innobase/include/srv0srv.h:
Auto merged
innobase/include/univ.i:
Auto merged
innobase/log/log0log.c:
Auto merged
innobase/srv/srv0srv.c:
Auto merged
innobase/srv/srv0start.c:
Auto merged
isam/pack_isam.c:
Auto merged
libmysql_r/Makefile.am:
Auto merged
myisam/myisamchk.c:
Auto merged
mysql-test/t/having.test:
Auto merged
mysql-test/t/rpl000015-slave.sh:
Auto merged
mysql-test/t/rpl000016-slave.sh:
Auto merged
mysys/mf_cache.c:
Auto merged
mysys/mf_casecnv.c:
Auto merged
mysys/mf_tempfile.c:
Auto merged
readline/vi_mode.c:
Auto merged
strings/strto.c:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
sql/ha_berkeley.cc:
Auto merged
sql/ha_myisammrg.cc:
Auto merged
sql/handler.cc:
Auto merged
sql/item.h:
Auto merged
sql/log_event.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/time.cc:
Auto merged
BUILD/SETUP.sh:
Use -mcpu as default (safe for all x86 cpu's)
client/mysqldump.c:
Merge from 3.23.44
configure.in:
Update version number
extra/resolveip.c:
Portability fix
Diffstat (limited to 'sql/field.cc')
-rw-r--r-- | sql/field.cc | 42 |
1 files changed, 26 insertions, 16 deletions
diff --git a/sql/field.cc b/sql/field.cc index 07f521abf3e..df6c2a80424 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -2412,8 +2412,7 @@ String *Field_timestamp::val_str(String *val_buffer, return val_buffer; } -bool Field_timestamp::get_date(TIME *ltime, - bool fuzzydate __attribute__((unused))) +bool Field_timestamp::get_date(TIME *ltime, bool fuzzydate) { long temp; #ifdef WORDS_BIGENDIAN @@ -2424,6 +2423,8 @@ bool Field_timestamp::get_date(TIME *ltime, longget(temp,ptr); if (temp == 0L) { /* Zero time is "000000" */ + if (!fuzzydate) + return 1; bzero((char*) ltime,sizeof(*ltime)); } else @@ -2447,8 +2448,7 @@ bool Field_timestamp::get_date(TIME *ltime, bool Field_timestamp::get_time(TIME *ltime) { - Field_timestamp::get_date(ltime,0); - return 0; + return Field_timestamp::get_date(ltime,0); } int Field_timestamp::cmp(const char *a_ptr, const char *b_ptr) @@ -3029,13 +3029,12 @@ bool Field_newdate::get_date(TIME *ltime,bool fuzzydate) ltime->month= (tmp >> 5) & 15; ltime->year= (tmp >> 9); ltime->time_type=TIMESTAMP_DATE; - return (!fuzzydate && (!ltime->month || !ltime->day) && ltime->year) ? 1 : 0; + return (!fuzzydate && (!ltime->month || !ltime->day)) ? 1 : 0; } bool Field_newdate::get_time(TIME *ltime) { - Field_newdate::get_date(ltime,0); - return 0; + return Field_newdate::get_date(ltime,0); } int Field_newdate::cmp(const char *a_ptr, const char *b_ptr) @@ -3214,13 +3213,12 @@ bool Field_datetime::get_date(TIME *ltime,bool fuzzydate) ltime->day= part1%100; ltime->month= part1/100%100; ltime->year= part1/10000; - return (!fuzzydate && (!ltime->month || !ltime->day) && ltime->year) ? 1 : 0; + return (!fuzzydate && (!ltime->month || !ltime->day)) ? 1 : 0; } bool Field_datetime::get_time(TIME *ltime) { - Field_datetime::get_date(ltime,0); - return 0; + return Field_datetime::get_date(ltime,0); } int Field_datetime::cmp(const char *a_ptr, const char *b_ptr) @@ -3468,9 +3466,9 @@ int Field_string::pack_cmp(const char *b, uint length) } -uint Field_string::packed_col_length(const char *ptr) +uint Field_string::packed_col_length(const char *ptr, uint length) { - if (field_length > 255) + if (length > 255) return uint2korr(ptr)+2; else return (uint) ((uchar) *ptr)+1; @@ -3478,7 +3476,7 @@ uint Field_string::packed_col_length(const char *ptr) uint Field_string::max_packed_col_length(uint max_length) { - return (field_length > 255 ? 2 : 1)+max_length; + return (max_length > 255 ? 2 : 1)+max_length; } @@ -3687,9 +3685,9 @@ int Field_varstring::pack_cmp(const char *b, uint key_length) return my_sortncmp(a,a_length, b,b_length); } -uint Field_varstring::packed_col_length(const char *ptr) +uint Field_varstring::packed_col_length(const char *ptr, uint length) { - if (field_length > 255) + if (length > 255) return uint2korr(ptr)+2; else return (uint) ((uchar) *ptr)+1; @@ -3697,7 +3695,7 @@ uint Field_varstring::packed_col_length(const char *ptr) uint Field_varstring::max_packed_col_length(uint max_length) { - return (field_length > 255 ? 2 : 1)+max_length; + return (max_length > 255 ? 2 : 1)+max_length; } /**************************************************************************** @@ -4173,6 +4171,18 @@ char *Field_blob::pack_key_from_key_image(char *to, const char *from, return to+length; } +uint Field_blob::packed_col_length(const char *ptr, uint length) +{ + if (length > 255) + return uint2korr(ptr)+2; + else + return (uint) ((uchar) *ptr)+1; +} + +uint Field_blob::max_packed_col_length(uint max_length) +{ + return (max_length > 255 ? 2 : 1)+max_length; +} /**************************************************************************** ** enum type. |