Commit 2b141612 authored by unknown's avatar unknown

sql_table.cc, field.cc:

  Bug fix
opt_range.cc:
  Buf fix


sql/field.cc:
  Bug fix
sql/opt_range.cc:
  Buf fix
sql/sql_table.cc:
  Bug fix
parent b3982368
...@@ -4530,7 +4530,6 @@ void Field_geom::get_key_image(char *buff,uint length,CHARSET_INFO *cs, ...@@ -4530,7 +4530,6 @@ void Field_geom::get_key_image(char *buff,uint length,CHARSET_INFO *cs,
ulong blob_length=get_length(ptr); ulong blob_length=get_length(ptr);
char *blob; char *blob;
get_ptr(&blob); get_ptr(&blob);
memcpy(buff+2,blob,length);
MBR mbr; MBR mbr;
Geometry gobj; Geometry gobj;
......
...@@ -2153,7 +2153,7 @@ check_quick_keys(PARAM *param,uint idx,SEL_ARG *key_tree, ...@@ -2153,7 +2153,7 @@ check_quick_keys(PARAM *param,uint idx,SEL_ARG *key_tree,
if (tmp_min_flag & GEOM_FLAG) if (tmp_min_flag & GEOM_FLAG)
{ {
tmp= param->table->file-> tmp= param->table->file->
records_in_range((int) keynr, (byte*)(param->min_key + 1), records_in_range((int) keynr, (byte*)(param->min_key),
min_key_length, min_key_length,
(ha_rkey_function)(tmp_min_flag ^ GEOM_FLAG), (ha_rkey_function)(tmp_min_flag ^ GEOM_FLAG),
(byte *)NullS, 0, HA_READ_KEY_EXACT); (byte *)NullS, 0, HA_READ_KEY_EXACT);
......
...@@ -705,14 +705,6 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name, ...@@ -705,14 +705,6 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name,
{ {
if (key->type == Key::FULLTEXT) if (key->type == Key::FULLTEXT)
column->length=1; /* ft-code ignores it anyway :-) */ column->length=1; /* ft-code ignores it anyway :-) */
else if (key->type == Key::SPATIAL)
{
/*
BAR: 4 is: (Xmin,Xmax,Ymin,Ymax), this is for 2D case
Lately we'll extend this code to support more dimensions
*/
column->length=4*sizeof(double);
}
else else
{ {
my_printf_error(ER_BLOB_KEY_WITHOUT_LENGTH, my_printf_error(ER_BLOB_KEY_WITHOUT_LENGTH,
...@@ -722,6 +714,17 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name, ...@@ -722,6 +714,17 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name,
} }
} }
} }
if (key->type == Key::SPATIAL)
{
if (!column->length )
{
/*
BAR: 4 is: (Xmin,Xmax,Ymin,Ymax), this is for 2D case
Lately we'll extend this code to support more dimensions
*/
column->length=4*sizeof(double);
}
}
if (!(sql_field->flags & NOT_NULL_FLAG)) if (!(sql_field->flags & NOT_NULL_FLAG))
{ {
if (key->type == Key::PRIMARY) if (key->type == Key::PRIMARY)
...@@ -757,6 +760,9 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name, ...@@ -757,6 +760,9 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name,
DBUG_RETURN(-1); DBUG_RETURN(-1);
} }
} }
else if (f_is_geom(sql_field->pack_flag))
{
}
else if (column->length > length || else if (column->length > length ||
((f_is_packed(sql_field->pack_flag) || ((f_is_packed(sql_field->pack_flag) ||
((file->table_flags() & HA_NO_PREFIX_CHAR_KEYS) && ((file->table_flags() & HA_NO_PREFIX_CHAR_KEYS) &&
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment