diff options
-rw-r--r-- | configure.in | 3 | ||||
-rw-r--r-- | sql/ha_myisam.cc | 8 | ||||
-rw-r--r-- | sql/sql_show.cc | 2 | ||||
-rw-r--r-- | sql/sql_table.cc | 11 | ||||
-rw-r--r-- | sql/structs.h | 1 | ||||
-rw-r--r-- | sql/table.cc | 13 |
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': |