Commit b01622e3 authored by serg@serg.mysql.com's avatar serg@serg.mysql.com

Merge

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