summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.in3
-rw-r--r--sql/ha_myisam.cc8
-rw-r--r--sql/sql_show.cc2
-rw-r--r--sql/sql_table.cc11
-rw-r--r--sql/structs.h1
-rw-r--r--sql/table.cc13
6 files changed, 28 insertions, 10 deletions
diff --git a/configure.in b/configure.in
index 6e303f32e9b..cfd6ae5747c 100644
--- a/configure.in
+++ b/configure.in
@@ -2086,6 +2086,9 @@ do
esac
done
+dnl Always compile latin1
+AC_DEFINE(HAVE_CHARSET_latin1)
+
if test "$use_mb" = "yes"
then
AC_DEFINE(USE_MB)
diff --git a/sql/ha_myisam.cc b/sql/ha_myisam.cc
index df4de96b6c5..eabf9536fd0 100644
--- a/sql/ha_myisam.cc
+++ b/sql/ha_myisam.cc
@@ -124,8 +124,12 @@ const char **ha_myisam::bas_ext() const
const char *ha_myisam::index_type(uint key_number)
{
- return ((table->key_info[key_number].flags & HA_FULLTEXT) ?
+ return ((table->key_info[key_number].flags & HA_FULLTEXT) ?
"FULLTEXT" :
+ (table->key_info[key_number].flags & HA_SPATIAL) ?
+ "SPATIAL" :
+ (table->key_info[key_number].algorithm == HA_KEY_ALG_RTREE) ?
+ "RTREE" :
"BTREE");
}
@@ -1006,7 +1010,7 @@ int ha_myisam::create(const char *name, register TABLE *table,
for (i=0; i < table->keys ; i++, pos++)
{
keydef[i].flag= (pos->flags & (HA_NOSAME | HA_FULLTEXT | HA_SPATIAL));
- keydef[i].key_alg=pos->key_alg; // +BAR
+ keydef[i].key_alg=pos->algorithm;
keydef[i].seg=keyseg;
keydef[i].keysegs=pos->key_parts;
for (j=0 ; j < pos->key_parts ; j++)
diff --git a/sql/sql_show.cc b/sql/sql_show.cc
index 0aa0c643ba9..95705c19d68 100644
--- a/sql/sql_show.cc
+++ b/sql/sql_show.cc
@@ -890,7 +890,7 @@ store_create_info(THD *thd, TABLE *table, String *packet)
append_identifier(thd,packet,key_info->name);
// +BAR: send USING only in non-default case: non-spatial rtree
- if((key_info->key_alg == HA_KEY_ALG_RTREE) && !(key_info->flags & HA_SPATIAL))
+ if((key_info->algorithm == HA_KEY_ALG_RTREE) && !(key_info->flags & HA_SPATIAL))
packet->append(" USING RTREE",12);
packet->append(" (", 2);
diff --git a/sql/sql_table.cc b/sql/sql_table.cc
index 19fcf5970c2..f5cb9a07a41 100644
--- a/sql/sql_table.cc
+++ b/sql/sql_table.cc
@@ -454,7 +454,7 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name,
key_info->flags = HA_NOSAME;
}
- key_info->key_alg = key->algorithm;
+ key_info->algorithm = key->algorithm;
key_info->key_parts=(uint8) key->columns.elements;
key_info->key_part=key_part_info;
key_info->usable_key_parts= key_number;
@@ -476,7 +476,10 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name,
in near future when new frm file is ready
checking for proper key parts number:
*/
-
+
+printf("key_info->flags=%d key_info->algorithm=%d\n",
+ key_info->flags,key_info->algorithm);
+
if(key_info->flags == HA_SPATIAL){
if(key_info->key_parts!=1){
my_printf_error(ER_WRONG_ARGUMENTS,
@@ -485,7 +488,7 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name,
}
}else
{
- if(key_info->key_alg == HA_KEY_ALG_RTREE){
+ if(key_info->algorithm == HA_KEY_ALG_RTREE){
if((key_info->key_parts&1)==1){
my_printf_error(ER_WRONG_ARGUMENTS,
ER(ER_WRONG_ARGUMENTS),MYF(0),"RTREE INDEX");
@@ -1584,7 +1587,7 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name,
Key::PRIMARY : Key::UNIQUE) :
(key_info->flags & HA_FULLTEXT ?
Key::FULLTEXT : Key::MULTIPLE)),
- key_info->key_alg,
+ key_info->algorithm,
key_name,key_parts));
}
key_it.rewind();
diff --git a/sql/structs.h b/sql/structs.h
index 978a523df7f..2250ea784f2 100644
--- a/sql/structs.h
+++ b/sql/structs.h
@@ -64,7 +64,6 @@ typedef struct st_key_part_info { /* Info about a key part */
typedef struct st_key {
uint key_length; /* Tot length of key */
uint flags; /* dupp key and pack flags */
- enum ha_key_alg key_alg; /* +BAR Algorithm BTREE or RTREE */
uint key_parts; /* How many key_parts */
uint extra_length;
uint usable_key_parts; /* Should normally be = key_parts */
diff --git a/sql/table.cc b/sql/table.cc
index 122357a1fb1..7e4faa1ba7c 100644
--- a/sql/table.cc
+++ b/sql/table.cc
@@ -201,6 +201,13 @@ int openfrm(const char *name, const char *alias, uint db_stat, uint prgflag,
for (i=0 ; i < keys ; i++, keyinfo++)
keyinfo->algorithm= (enum ha_key_alg) *(strpos++);
}
+ else
+ {
+ /* Set key types to BTREE, BAR TODO: how to be with HASH/RBTREE? */
+ keyinfo=outparam->key_info;
+ for (i=0 ; i < keys ; i++, keyinfo++)
+ keyinfo->algorithm= HA_KEY_ALG_BTREE;
+ }
outparam->reclength = uint2korr((head+16));
if (*(head+26) == 1)
outparam->system=1; /* one-record-database */
@@ -408,10 +415,12 @@ int openfrm(const char *name, const char *alias, uint db_stat, uint prgflag,
}
}
- keyinfo->key_alg=HA_KEY_ALG_BTREE; // BAR : btree by default
+ if (keyinfo->name[0]=='S')
+ keyinfo->flags |= HA_SPATIAL;
-#define BAR_DIRTY_HACK
#ifdef BAR_DIRTY_HACK
+ keyinfo->key_alg=HA_KEY_ALG_BTREE; // BAR : btree by default
+
// BAR FIXME: Dirty hack while waiting for new .frm format
switch(keyinfo->name[0]){
case 'R':