summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/sql_class.h3
-rw-r--r--sql/sql_parse.cc5
-rw-r--r--sql/sql_string.cc4
-rw-r--r--sql/table.cc5
4 files changed, 10 insertions, 7 deletions
diff --git a/sql/sql_class.h b/sql/sql_class.h
index 3ffac72c1db..5dc761ff811 100644
--- a/sql/sql_class.h
+++ b/sql/sql_class.h
@@ -221,9 +221,6 @@ public:
List<key_part_spec> columns;
const char *Name;
- Key(enum Keytype type_par,const char *name_arg,List<key_part_spec> &cols)
- :type(type_par), columns(cols),Name(name_arg) {}
-
Key(enum Keytype type_par, enum ha_key_alg alg_par, const char *name_arg, List<key_part_spec> &cols)
:type(type_par), algorithm(alg_par), columns(cols), Name(name_arg)
{}
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index 06431124356..469de136fbb 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -2787,14 +2787,14 @@ bool add_field_to_list(char *field_name, enum_field_types type,
if (type_modifier & PRI_KEY_FLAG)
{
lex->col_list.push_back(new key_part_spec(field_name,0));
- lex->key_list.push_back(new Key(Key::PRIMARY,NullS,
+ lex->key_list.push_back(new Key(Key::PRIMARY, HA_KEY_ALG_UNDEF, NullS,
lex->col_list));
lex->col_list.empty();
}
if (type_modifier & (UNIQUE_FLAG | UNIQUE_KEY_FLAG))
{
lex->col_list.push_back(new key_part_spec(field_name,0));
- lex->key_list.push_back(new Key(Key::UNIQUE,NullS,
+ lex->key_list.push_back(new Key(Key::UNIQUE, HA_KEY_ALG_UNDEF, NullS,
lex->col_list));
lex->col_list.empty();
}
@@ -2858,6 +2858,7 @@ bool add_field_to_list(char *field_name, enum_field_types type,
case FIELD_TYPE_STRING:
case FIELD_TYPE_VAR_STRING:
case FIELD_TYPE_NULL:
+ case FIELD_TYPE_GEOMETRY:
break;
case FIELD_TYPE_DECIMAL:
if (!length)
diff --git a/sql/sql_string.cc b/sql/sql_string.cc
index c05a7b85f77..b8e2ba7b536 100644
--- a/sql/sql_string.cc
+++ b/sql/sql_string.cc
@@ -123,7 +123,7 @@ bool String::set(double num,uint decimals)
char *pos,*to;
VOID(fconvert(num,(int) decimals,&decpt,&sign,buff+1));
- if (!isdigit(buff[1]))
+ if (!my_isdigit(system_charset_info, buff[1]))
{ // Nan or Inf
pos=buff+1;
if (sign)
@@ -490,7 +490,7 @@ void String::qs_append(double d)
void String::qs_append(double *d)
{
double ld;
- float8get(ld, d);
+ float8get(ld, (char*) d);
qs_append(ld);
}
diff --git a/sql/table.cc b/sql/table.cc
index 29c50fd8dcc..05a5c5e6bd2 100644
--- a/sql/table.cc
+++ b/sql/table.cc
@@ -199,7 +199,12 @@ int openfrm(const char *name, const char *alias, uint db_stat, uint prgflag,
/* Read key types */
keyinfo=outparam->key_info;
for (i=0 ; i < keys ; i++, keyinfo++)
+ {
keyinfo->algorithm= (enum ha_key_alg) *(strpos++);
+ /* Temporary fix to get spatial index to work */
+ if (keyinfo->algorithm == HA_KEY_ALG_RTREE)
+ keyinfo->flags|= HA_SPATIAL;
+ }
}
else
{