summaryrefslogtreecommitdiff
path: root/sql/field.cc
diff options
context:
space:
mode:
authorunknown <hf@genie.(none)>2002-11-07 12:20:08 +0400
committerunknown <hf@genie.(none)>2002-11-07 12:20:08 +0400
commit36140ba7c5c44e62242fdadaa77da7fc555b400c (patch)
tree36edaa6da720c34af8ee97ad2d903a40e055fef5 /sql/field.cc
parentef5edca39360f1a84591b6004d7b2eecb39b5a35 (diff)
parent328fdfa08668fce1884c452b163bab3f0e9cce90 (diff)
downloadmariadb-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.cc22
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))