Commit f1e6c99b authored by unknown's avatar unknown

Merge


sql/ha_myisam.cc:
  merged
sql/share/russian/errmsg.txt:
  merged
parents f012e34d b8c91f58
...@@ -158,6 +158,7 @@ FT_DOCLIST * ft_init_search(void *info, uint keynr, byte *key, ...@@ -158,6 +158,7 @@ FT_DOCLIST * ft_init_search(void *info, uint keynr, byte *key,
ALL_IN_ONE aio; ALL_IN_ONE aio;
FT_DOCLIST *dlist; FT_DOCLIST *dlist;
FT_DOC *dptr; FT_DOC *dptr;
my_off_t saved_lastpos=((MI_INFO *)info)->lastpos;
/* black magic ON */ /* black magic ON */
if ((int) (keynr = _mi_check_index((MI_INFO *)info,keynr)) < 0) if ((int) (keynr = _mi_check_index((MI_INFO *)info,keynr)) < 0)
...@@ -204,6 +205,7 @@ FT_DOCLIST * ft_init_search(void *info, uint keynr, byte *key, ...@@ -204,6 +205,7 @@ FT_DOCLIST * ft_init_search(void *info, uint keynr, byte *key,
delete_tree(&aio.dtree); delete_tree(&aio.dtree);
delete_tree(wtree); delete_tree(wtree);
my_free((char*) wtree,MYF(0)); my_free((char*) wtree,MYF(0));
((MI_INFO *)info)->lastpos=saved_lastpos;
return dlist; return dlist;
} }
......
...@@ -1094,7 +1094,17 @@ int ha_myisam::ft_read(byte * buf) ...@@ -1094,7 +1094,17 @@ int ha_myisam::ft_read(byte * buf)
if (error=ft_read_next((FT_DOCLIST *) ft_handler,(char*) buf)) if (error=ft_read_next((FT_DOCLIST *) ft_handler,(char*) buf))
ft_handler=NULL; // Magic here ! See Item_func_match::val() ft_handler=NULL; // Magic here ! See Item_func_match::val()
// and ha_myisam::index_init()
table->status=error ? STATUS_NOT_FOUND: 0; table->status=error ? STATUS_NOT_FOUND: 0;
return error; return error;
} }
int ha_myisam::index_init(uint idx)
{
if (idx != active_index)
ft_handler=NULL; // Magic here !
active_index=idx;
return 0;
}
...@@ -71,6 +71,7 @@ class ha_myisam: public handler ...@@ -71,6 +71,7 @@ class ha_myisam: public handler
int index_first(byte * buf); int index_first(byte * buf);
int index_last(byte * buf); int index_last(byte * buf);
int index_next_same(byte *buf, const byte *key, uint keylen); int index_next_same(byte *buf, const byte *key, uint keylen);
int index_init(uint idx);
int ft_init() int ft_init()
{ if(!ft_handler) return 1; ft_reinit_search(ft_handler); return 0; } { if(!ft_handler) return 1; ft_reinit_search(ft_handler); return 0; }
void *ft_init_ext(uint inx,const byte *key, uint keylen, bool presort) void *ft_init_ext(uint inx,const byte *key, uint keylen, bool presort)
......
...@@ -1840,9 +1840,12 @@ longlong Item_func_inet_aton::val_int() ...@@ -1840,9 +1840,12 @@ longlong Item_func_inet_aton::val_int()
double Item_func_match::val() double Item_func_match::val()
{ {
// Don't know how to return an error from val(), so NULL will be returned /* If called uninitialized we should return neither NULL nor 0 (important
if ((null_value=(ft_handler==NULL))) for const_tables) so, let's return -1, which is obviously incorrect
return 0.0; for normal operation, and could be easily spotted */
if (ft_handler==NULL)
return -1.0;
if (join_key) if (join_key)
{ {
......
...@@ -393,7 +393,7 @@ QUICK_SELECT::QUICK_SELECT(TABLE *table,uint key_nr,bool no_alloc) ...@@ -393,7 +393,7 @@ QUICK_SELECT::QUICK_SELECT(TABLE *table,uint key_nr,bool no_alloc)
else else
bzero((char*) &alloc,sizeof(alloc)); bzero((char*) &alloc,sizeof(alloc));
file=head->file; file=head->file;
error=file->index_init(index); // error=file->index_init(index);
record=head->record[0]; record=head->record[0];
} }
...@@ -403,13 +403,16 @@ QUICK_SELECT::~QUICK_SELECT() ...@@ -403,13 +403,16 @@ QUICK_SELECT::~QUICK_SELECT()
free_root(&alloc,MYF(0)); free_root(&alloc,MYF(0));
} }
int QUICK_SELECT::init()
{
return error=file->index_init(index);
}
QUICK_RANGE::QUICK_RANGE() QUICK_RANGE::QUICK_RANGE()
:min_key(0),max_key(0),min_length(0),max_length(0), :min_key(0),max_key(0),min_length(0),max_length(0),
flag(NO_MIN_RANGE | NO_MAX_RANGE) flag(NO_MIN_RANGE | NO_MAX_RANGE)
{} {}
SEL_ARG::SEL_ARG(SEL_ARG &arg) :Sql_alloc() SEL_ARG::SEL_ARG(SEL_ARG &arg) :Sql_alloc()
{ {
type=arg.type; type=arg.type;
......
...@@ -73,7 +73,7 @@ class QUICK_SELECT { ...@@ -73,7 +73,7 @@ class QUICK_SELECT {
QUICK_SELECT(TABLE *table,uint index_arg,bool no_alloc=0); QUICK_SELECT(TABLE *table,uint index_arg,bool no_alloc=0);
virtual ~QUICK_SELECT(); virtual ~QUICK_SELECT();
void reset(void) { next=0; it.rewind(); } void reset(void) { next=0; it.rewind(); }
virtual int init() { return 0; } virtual int init();
virtual int get_next(); virtual int get_next();
int cmp_next(QUICK_RANGE *range); int cmp_next(QUICK_RANGE *range);
bool unique_key_range(); bool unique_key_range();
......
...@@ -163,7 +163,7 @@ ...@@ -163,7 +163,7 @@
" ", " ",
" ", " ",
" " " "
"Timeout ", " ",
" ", " ",
" ", " ",
" max_allowed_packet", " max_allowed_packet",
...@@ -171,25 +171,25 @@ ...@@ -171,25 +171,25 @@
" AUTO_INCREMENT", " AUTO_INCREMENT",
"INSERT DELAYED '%-.64s', LOCK TABLES", "INSERT DELAYED '%-.64s', LOCK TABLES",
" '%-.100s'", " '%-.100s'",
" table handler '%-.64s'", " '%-.64s'",
"All tables in the MERGE table are not defined identically", " MERGE ",
"Can't write, because of unique constraint, to table '%-.64s'", " '%-.64s' - UNIQUE ",
"BLOB column '%-.64s' used in key specification without a key length", " BLOB '%-.64s' ",
"All parts of a PRIMARY KEY must be NOT NULL; If you need NULL in a key, use UNIQUE instead", " PRIMARY KEY NOT NULL; NULL , UNIQUE",
"Result consisted of more than one row", " ",
"This table type requires a primary key", " PRIMARY KEY",
"This version of MySQL is not compiled with RAID support", " MySQL RAID",
"You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column", "You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column",
"Key '%-.64s' doesn't exist in table '%-.64s'", " '%-.64s' '%-.64s'",
"Can't open table", " ",
"The handler for the table doesn't support check/repair", " check/repair",
"You are not allowed to execute this command in a transaction", " ",
"Got error %d during COMMIT", " %d COMMIT",
"Got error %d during ROLLBACK", " %d ROLLBACK",
"Got error %d during FLUSH_LOGS", " %d FLUSH_LOGS",
"Got error %d during CHECKPOINT", " %d CHECKPOINT",
"Aborted connection %ld to db: '%-.64s' user: '%-.32s' host: `%-.64s' (%-.64s)", " %ld : '%-.64s' : '%-.32s' : `%-.64s' (%-.64s)",
"The handler for the table does not support binary table dump", " binary table dump",
"Binlog closed while trying to FLUSH MASTER", "Binlog closed while trying to FLUSH MASTER",
"Failed rebuilding the index of dumped table '%-.64s'", "Failed rebuilding the index of dumped table '%-.64s'",
"Error from master: '%-.64s'", "Error from master: '%-.64s'",
...@@ -197,7 +197,7 @@ ...@@ -197,7 +197,7 @@
"Net error writing to master", "Net error writing to master",
"FULLTEXT , , ", "FULLTEXT , , ",
"Can't execute the given command because you have active locked tables or an active transaction", "Can't execute the given command because you have active locked tables or an active transaction",
"Unknown system variable '%-.64'", " '%-.64'",
"Table '%-.64s' is marked as crashed and should be repaired", " '%-.64s' ",
"Table '%-.64s' is marked as crashed and last (automatic?) repair failed", " '%-.64s' (?) ",
"Warning: Some non-transactional changed tables couldn't be rolled back", "Warning: Some non-transactional changed tables couldn't be rolled back",
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