MySQL 5.6.14 Source Code Document
|
#include "univ.i"
#include "data0data.h"
#include "dict0types.h"
#include "row0mysql.h"
#include "fts0fts.h"
#include "fts0types.h"
#include "fts0priv.h"
#include "row0merge.h"
Go to the source code of this file.
Classes | |
struct | fts_doc_item |
struct | fts_psort_common_t |
struct | fts_psort_t |
struct | fts_tokenize_ctx |
struct | fts_psort_insert |
Macros | |
#define | FTS_NUM_AUX_INDEX 6 |
#define | FTS_PLL_MERGE 1 |
#define | FTS_PARENT_COMPLETE 1 |
#define | FTS_CHILD_COMPLETE 1 |
#define | FTS_CHILD_EXITING 2 |
#define | FTSORT_PRINT |
#define | DEBUG_FTS_SORT_PRINT(str) |
Typedefs | |
typedef struct fts_doc_item | fts_doc_item_t |
typedef struct fts_tokenize_ctx | fts_tokenize_ctx_t |
typedef struct fts_psort_insert | fts_psort_insert_t |
Create Full Text Index with (parallel) merge sort
Created 10/13/2010 Jimmy Yang
Definition in file row0ftsort.h.
#define DEBUG_FTS_SORT_PRINT | ( | str | ) |
Definition at line 134 of file row0ftsort.h.
#define FTS_PARENT_COMPLETE 1 |
status bit used for communication between parent and child thread
Definition at line 126 of file row0ftsort.h.
#define FTSORT_PRINT |
Print some debug information
Definition at line 131 of file row0ftsort.h.
typedef struct fts_doc_item fts_doc_item_t |
This structure defineds information the scan thread will fetch
and put to the linked list for parallel tokenization/sort threads to process
Definition at line 41 of file row0ftsort.h.
UNIV_INTERN os_thread_ret_t fts_parallel_merge | ( | void * | arg | ) |
Function performs the merge and insertion of the sorted records.
Function performs the merge and insertion of the sorted records.
arg | in: parallel merge info |
Definition at line 881 of file row0ftsort.cc.
UNIV_INTERN os_thread_ret_t fts_parallel_tokenization | ( | void * | arg | ) |
Function performs parallel tokenization of the incoming doc strings.
Function performs parallel tokenization of the incoming doc strings. It also performs the initial in memory sort of the parsed records.
arg | in: psort_info for the thread |
Definition at line 553 of file row0ftsort.cc.
UNIV_INTERN void row_fts_free_pll_merge_buf | ( | fts_psort_t * | psort_info | ) |
Free up merge buffers when merge sort is done in: parallel sort info
Free up merge buffers when merge sort is done
psort_info | in: parallel sort info |
Definition at line 332 of file row0ftsort.cc.
UNIV_INTERN void row_fts_insert_tuple | ( | fts_psort_insert_t * | ins_ctx, |
fts_tokenizer_word_t * | word, | ||
ib_vector_t * | positions, | ||
doc_id_t * | in_doc_id, | ||
dtuple_t * | dtuple | ||
) |
Read sorted FTS data files and insert data tuples to auxillary tables.
ins_ctx | in: insert context |
word | in: last processed tokenized word |
positions | in: word position |
in_doc_id | in: last item doc id |
UNIV_INTERN dberr_t row_fts_merge_insert | ( | dict_index_t * | index, |
dict_table_t * | table, | ||
fts_psort_t * | psort_info, | ||
ulint | id | ||
) |
Read sorted file containing index data tuples and insert these data tuples to the index
index | in: index |
table | in: new table |
psort_info | parallel sort info |
UNIV_INTERN void row_fts_psort_info_destroy | ( | fts_psort_t * | psort_info, |
fts_psort_t * | merge_info | ||
) |
Clean up and deallocate FTS parallel sort structures, and close temparary merge sort files parallel merge info
Clean up and deallocate FTS parallel sort structures, and close the merge sort files
psort_info | parallel sort info |
merge_info | parallel merge info |
Definition at line 294 of file row0ftsort.cc.
UNIV_INTERN ibool row_fts_psort_info_init | ( | trx_t * | trx, |
row_merge_dup_t * | dup, | ||
const dict_table_t * | new_table, | ||
ibool | opt_doc_id_size, | ||
fts_psort_t ** | psort, | ||
fts_psort_t ** | merge | ||
) |
Initialize FTS parallel sort structures.
trx | in: transaction |
dup | in,own: descriptor of FTS index being created |
new_table | in: table on which indexes are created |
opt_doc_id_size | in: whether to use 4 bytes instead of 8 bytes integer to store Doc ID during sort |
psort | out: parallel sort info to be instantiated |
merge | out: parallel merge info to be instantiated |
Definition at line 171 of file row0ftsort.cc.
UNIV_INTERN void row_fts_start_parallel_merge | ( | fts_psort_t * | merge_info | ) |
Kick off the parallel merge and insert thread in: parallel sort info
Kick off the parallel merge and insert thread
merge_info | in: parallel sort info |
Definition at line 913 of file row0ftsort.cc.
UNIV_INTERN void row_fts_start_psort | ( | fts_psort_t * | psort_info | ) |
Start the parallel tokenization and parallel merge sort in: parallel sort info
Start the parallel tokenization and parallel merge sort
psort_info | parallel sort structure |
Definition at line 861 of file row0ftsort.cc.
UNIV_INTERN dict_index_t* row_merge_create_fts_sort_index | ( | dict_index_t * | index, |
const dict_table_t * | table, | ||
ibool * | opt_doc_id_size | ||
) |
Create a temporary "fts sort index" used to merge sort the tokenized doc string. The index has three "fields":
1) Tokenized word, 2) Doc ID 3) Word's position in original 'doc'.
Create a temporary "fts sort index" used to merge sort the tokenized doc string. The index has three "fields":
1) Tokenized word, 2) Doc ID (depend on number of records to sort, it can be a 4 bytes or 8 bytes integer value) 3) Word's position in original doc.
index | in: Original FTS index based on which this sort index is created |
table | in: table that FTS index is being created on |
opt_doc_id_size | out: whether to use 4 bytes instead of 8 bytes integer to store Doc ID during sort |
Definition at line 63 of file row0ftsort.cc.
UNIV_INTERN int row_merge_fts_sel_propagate | ( | int | propogated, |
int * | sel_tree, | ||
ulint | level, | ||
const mrec_t ** | mrec, | ||
ulint ** | offsets, | ||
dict_index_t * | index | ||
) |
Propagate a newly added record up one level in the selection tree
typedef UT_LIST_BASE_NODE_T | ( | fts_doc_item_t | ) |
This defines the list type that scan thread would feed the parallel
tokenization threads and sort threads.