diff options
author | unknown <serg@serg.mysql.com> | 2003-01-21 19:24:34 +0100 |
---|---|---|
committer | unknown <serg@serg.mysql.com> | 2003-01-21 19:24:34 +0100 |
commit | 76078f2c8417df4695f14b75fc4711417d1f3c08 (patch) | |
tree | 2c7d9d1b4d148a8335c0f806f6c7bc3dcab8e3ce /myisam/sort.c | |
parent | e503a5807d12c8f08ae4a791d97f8507eb90bb38 (diff) | |
download | mariadb-git-76078f2c8417df4695f14b75fc4711417d1f3c08.tar.gz |
Two-level index structure for FULLTEXT indexes
myisam/ftdefs.h:
intermediate cleanup checkin
myisam/mi_create.c:
intermediate cleanup checkin
myisam/myisamchk.c:
intermediate cleanup checkin
myisam/ft_parser.c:
intermediate cleanup checkin
myisam/ft_update.c:
intermediate cleanup checkin
myisam/mi_update.c:
intermediate cleanup checkin
mysql-test/r/fulltext.result:
stopword test
mysql-test/t/fulltext.test:
stopword test
mysys/mulalloc.c:
function comments clarified
include/my_handler.h:
get_key_length_rdonly utility macro
include/myisam.h:
this kind of hacks bites :)
myisam/ft_dump.c:
bugfix
myisam/mi_open.c:
bugfix
myisam/sort.c:
bugfixing
myisam/mi_rnext.c:
not a solution at all, but a temporary fix to make
mi_rnext to work on ft2 index. (only ft_dump uses mi_rnext
on fulltext indexes for now).
myisam/ft_boolean_search.c:
ft_sintXkorr, ft_intXstore
myisam/ft_nlq_search.c:
ft_sintXkorr, ft_intXstore
myisam/fulltext.h:
ft_sintXkorr, ft_intXstore
myisam/mi_check.c:
ft_sintXkorr, ft_intXstore
myisam/ft_static.c:
two-level tree support in wi_write()
myisam/mi_write.c:
two-level tree support in wi_write()
myisam/myisamdef.h:
two-level tree support in wi_write()
myisam/mi_delete.c:
support for ft2 in mi_delete
mysql-test/r/fulltext2.result:
support for ft2 in mi_delete
mysql-test/t/fulltext2.test:
support for ft2 in mi_delete
Diffstat (limited to 'myisam/sort.c')
-rw-r--r-- | myisam/sort.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/myisam/sort.c b/myisam/sort.c index 7ad23df9358..d86aeb6aa3b 100644 --- a/myisam/sort.c +++ b/myisam/sort.c @@ -71,7 +71,8 @@ static int NEAR_F merge_buffers(MI_SORT_PARAM *info,uint keys, BUFFPEK *Fb, BUFFPEK *Tb); static int NEAR_F merge_index(MI_SORT_PARAM *,uint,uchar **,BUFFPEK *, int, IO_CACHE *); - +static int flush_ft_buf(MI_SORT_PARAM *info); + static int NEAR_F write_keys_varlen(MI_SORT_PARAM *info,uchar **sort_keys, uint count, BUFFPEK *buffpek, IO_CACHE *tempfile); @@ -120,7 +121,7 @@ int _create_index_by_sort(MI_SORT_PARAM *info,my_bool no_messages, info->read_to_buffer=read_to_buffer; info->write_key=write_merge_key; } - + my_b_clear(&tempfile); my_b_clear(&tempfile_for_exceptions); bzero((char*) &buffpek,sizeof(buffpek)); @@ -207,7 +208,7 @@ int _create_index_by_sort(MI_SORT_PARAM *info,my_bool no_messages, goto err; /* purecov: inspected */ } - if (flush_pending_blocks(info)) + if (flush_ft_buf(info) || flush_pending_blocks(info)) goto err; if (my_b_inited(&tempfile_for_exceptions)) @@ -478,7 +479,7 @@ int thr_write_keys(MI_SORT_PARAM *sort_param) fflush(stdout); } if (write_index(sinfo, sinfo->sort_keys, sinfo->keys) || - flush_pending_blocks(sinfo)) + flush_ft_buf(sinfo) || flush_pending_blocks(sinfo)) got_error=1; } } @@ -551,6 +552,7 @@ int thr_write_keys(MI_SORT_PARAM *sort_param) if (merge_index(sinfo, keys, (uchar **)mergebuf, dynamic_element(&sinfo->buffpek,0,BUFFPEK *), maxbuffer,&sinfo->tempfile) || + flush_ft_buf(sinfo) || flush_pending_blocks(sinfo)) { got_error=1; @@ -976,3 +978,16 @@ merge_index(MI_SORT_PARAM *info, uint keys, uchar **sort_keys, DBUG_RETURN(0); } /* merge_index */ +static int +flush_ft_buf(MI_SORT_PARAM *info) +{ + int err=0; + if (info->sort_info->ft_buf) + { + err=sort_ft_buf_flush(info); + my_free((gptr)info->sort_info->ft_buf, MYF(0)); + info->sort_info->ft_buf=0; + } + return err; +} + |