diff options
author | unknown <hf@genie.(none)> | 2002-11-07 12:20:08 +0400 |
---|---|---|
committer | unknown <hf@genie.(none)> | 2002-11-07 12:20:08 +0400 |
commit | 36140ba7c5c44e62242fdadaa77da7fc555b400c (patch) | |
tree | 36edaa6da720c34af8ee97ad2d903a40e055fef5 /sql/field.cc | |
parent | ef5edca39360f1a84591b6004d7b2eecb39b5a35 (diff) | |
parent | 328fdfa08668fce1884c452b163bab3f0e9cce90 (diff) | |
download | mariadb-git-36140ba7c5c44e62242fdadaa77da7fc555b400c.tar.gz |
Merged by hands
BitKeeper/etc/gone:
auto-union
BitKeeper/etc/logging_ok:
auto-union
BitKeeper/deleted/.del-skipkeys~207548ca813d5081:
'Auto converge rename'
libmysqld/lib_sql.cc:
Auto merged
sql/field.h:
Auto merged
sql/ha_myisam.cc:
Auto merged
sql/item.h:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_handler.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_table.cc:
Auto merged
Diffstat (limited to 'sql/field.cc')
-rw-r--r-- | sql/field.cc | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/sql/field.cc b/sql/field.cc index 73ef4439bc9..a3698f10553 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -4472,7 +4472,7 @@ void Field_blob::set_key_image(char *buff,uint length) void Field_geom::get_key_image(char *buff,uint length, imagetype type) { - length-=HA_KEY_BLOB_LENGTH; +/* length-=HA_KEY_BLOB_LENGTH; ulong blob_length=get_length(ptr); char *blob; get_ptr(&blob); @@ -4487,12 +4487,19 @@ void Field_geom::get_key_image(char *buff,uint length, imagetype type) float8store(buff+16, mbr.ymin); float8store(buff+24, mbr.ymax); return; +*/ + Field_blob::get_key_image(buff, length, type); } void Field_geom::set_key_image(char *buff,uint length) { + Field_blob::set_key_image(buff, length); } +void Field_geom::sql_type(String &res) const +{ + res.set("geometry", 8U, default_charset_info); +} int Field_blob::key_cmp(const byte *key_ptr, uint max_key_length) { @@ -5163,6 +5170,7 @@ uint32 calc_pack_length(enum_field_types type,uint32 length) case FIELD_TYPE_BLOB: return 2+portable_sizeof_char_ptr; case FIELD_TYPE_MEDIUM_BLOB: return 3+portable_sizeof_char_ptr; case FIELD_TYPE_LONG_BLOB: return 4+portable_sizeof_char_ptr; + case FIELD_TYPE_GEOMETRY: return 2+portable_sizeof_char_ptr; case FIELD_TYPE_SET: case FIELD_TYPE_ENUM: abort(); return 0; // This shouldn't happen default: return 0; @@ -5209,15 +5217,15 @@ Field *make_field(char *ptr, uint32 field_length, f_packtype(pack_flag), field_length); - if (f_is_blob(pack_flag)) - return new Field_blob(ptr,null_pos,null_bit, - unireg_check, field_name, table, - pack_length, field_charset); if (f_is_geom(pack_flag)) return new Field_geom(ptr,null_pos,null_bit, unireg_check, field_name, table, - pack_length); - + pack_length,f_is_binary(pack_flag) != 0); + if (f_is_blob(pack_flag)) + return new Field_blob(ptr,null_pos,null_bit, + unireg_check, field_name, table, + pack_length,f_is_binary(pack_flag) != 0, + default_charset_info); if (interval) { if (f_is_enum(pack_flag)) |