mirror of
https://github.com/MariaDB/server.git
synced 2026-01-24 12:24:46 +01:00
- Introduce a class FTSQueryRunner to handle queries for fulltext
internal tables. Basically it creates a query, prepares the
fulltext internal table for read or write process. Build a tuple
based on the given table and assign the FTS_CONFIG, FTS_COMMON_TABLES
and FTS_AUX_TABLE fields based on the given value. This class
also handles INSERT, DELETE, REPLACE, UPDATE and
execute the function for each record (record_executor).
FTSQueryRunner::create_query_thread(): Create a query thread to execute
the statement on internal FULLTEXT tables
FTSQueryRunner::build_tuple(): Build a tuple for the operation
FTSQueryRunner::build_clust_ref(): Build a clustered index reference
for clustered index lookup for the secondary index record
FTSQueryRunner::assign_config_fields(): Assign the tuple for the
FTS CONFIG internal table
FTSQueryRunner::assign_common_table_fields(): Assign the tuple for
FTS_DELETED, FTS_DELETED_CACHE, FTS_BEGIN_DELETED,
FTS_BEGIN_DELETED_CACHE common tables
FTSQueryRunner::assign_aux_table_fields(): Assign the tuple for
FTS_PREFIX_INDEX tables.
FTSQueryRunner::handle_error(): Handling error for DB_LOCK_WAIT,
retry the operation
FTSQueryRunner::open_table(): Open the table based on the fulltext
auxiliary table name and FTS common table name
FTSQueryRunner::prepare_for_write(): Lock the table for write
process by taking Intention Exclusive lock
FTSQueryRunner::prepare_for_read(): Lock the table for read
process by taking Intention Shared lock
FTSQueryRunner::write_record(): Insert the tuple into the given table
FTSQueryRunner::lock_or_sees_rec(): Lock the record in case of
DELETE, SELECT_UPDATE operation. Fetch the correct version of record in
case of READ operation. It also does clustered index lookup in case
of search is on secondary index
fts_cmp_rec_dtuple_prefix(): Compare the record with given tuple field
for tuple field length
FTSQueryRunner::record_executor(): Read the record of the given index and
do call the callback function for each record
FTSQueryRunner::build_update_config(): Build the update vector for
FULLTEXT CONFIG table
FTSQueryRunner::update_record(): Update the record with update vector
exist in FTSQueryRunner
Removed the fts_parse_sql(), fts_eval_sql(), fts_get_select_columns_str()
and fts_get_docs_clear().
Moved fts_get_table_id() & fts_get_table_name() from fts0sql.cc to
fts0fts.cc and deleted the file fts0sql.cc
Removed ins_graph, sel_graph from fts_index_cache_t
Changed the callback function default read function parameter for
each clustered index record to
bool fts_sql_callback(dict_index_t*, const rec_t *, const rec_offs*,
void *);
Following parameters are changed to default read function parameter:
fts_read_stopword()
fts_fetch_store_doc_id()
fts_query_expansion_fetch_doc()
fts_read_count()
fts_get_rows_count()
fts_init_doc_id()
fts_init_recover_doc()
read_fts_config()
fts_optimize_read_node()
fts_optimize_index_fetch_node()
fts_index_fetch_nodes()
fts_fetch_index_words()
fts_index_fetch_words()
fts_fetch_doc_ids()
fts_table_fetch_doc_ids()
fts_read_ulint()
fts_copy_doc_ids()
fts_optimize_create_deleted_doc_id_snapshot()
fts_query_index_fetch_nodes()
fts_query_fetch_document()
fts_query_index_fetch_nodes()
row_upd_clust_rec_low(): Function does updates a clustered
index record of a row when ordering fields don't change.
Function doesn't have dependency on row_prebuilt_t. This can be
used by fulltext internal table update operation
Row_sel_get_clust_rec_for_mysql::operator(): Removed the
parameter row_prebuilt_t and caller does pass the prebuilt
related variables
Removed the parser usage and execute the query directly on
fulltext internal tables in the following function:
fts_read_stopword()
fts_fetch_store_doc_id()
fts_query_expansion_fetch_doc()
fts_read_count()
fts_get_rows_count()
fts_init_doc_id()
fts_init_recover_doc()
read_fts_config()
fts_optimize_read_node()
fts_optimize_index_fetch_node()
fts_index_fetch_nodes()
fts_fetch_index_words()
fts_index_fetch_words()
fts_fetch_doc_ids()
fts_table_fetch_doc_ids()
fts_read_ulint()
fts_copy_doc_ids()
fts_optimize_create_deleted_doc_id_snapshot()
fts_query_index_fetch_nodes()
fts_query_fetch_document()
fts_query_index_fetch_nodes()
i_s_fts_deleted_generic_fill()
i_s_fts_index_table_fill_selected()
|
||
|---|---|---|
| .. | ||
| btr0btr.h | ||
| btr0btr.inl | ||
| btr0bulk.h | ||
| btr0cur.h | ||
| btr0cur.inl | ||
| btr0pcur.h | ||
| btr0pcur.inl | ||
| btr0sea.h | ||
| btr0types.h | ||
| buf0buddy.h | ||
| buf0buf.h | ||
| buf0buf.inl | ||
| buf0checksum.h | ||
| buf0dblwr.h | ||
| buf0dump.h | ||
| buf0flu.h | ||
| buf0lru.h | ||
| buf0rea.h | ||
| buf0types.h | ||
| cache.h | ||
| data0data.h | ||
| data0data.inl | ||
| data0type.h | ||
| data0type.inl | ||
| data0types.h | ||
| db0err.h | ||
| dict0boot.h | ||
| dict0crea.h | ||
| dict0crea.inl | ||
| dict0dict.h | ||
| dict0dict.inl | ||
| dict0load.h | ||
| dict0mem.h | ||
| dict0mem.inl | ||
| dict0pagecompress.h | ||
| dict0pagecompress.inl | ||
| dict0stats.h | ||
| dict0stats_bg.h | ||
| dict0types.h | ||
| dyn0buf.h | ||
| dyn0types.h | ||
| eval0eval.h | ||
| eval0eval.inl | ||
| eval0proc.h | ||
| eval0proc.inl | ||
| fil0crypt.h | ||
| fil0crypt.inl | ||
| fil0fil.h | ||
| fil0pagecompress.h | ||
| fsp0file.h | ||
| fsp0fsp.h | ||
| fsp0space.h | ||
| fsp0sysspace.h | ||
| fsp0types.h | ||
| fts0ast.h | ||
| fts0blex.h | ||
| fts0fts.h | ||
| fts0opt.h | ||
| fts0pars.h | ||
| fts0plugin.h | ||
| fts0priv.h | ||
| fts0priv.inl | ||
| fts0tlex.h | ||
| fts0tokenize.h | ||
| fts0types.h | ||
| fts0types.inl | ||
| fts0vlc.h | ||
| fut0lst.h | ||
| gis0geo.h | ||
| gis0rtree.h | ||
| gis0rtree.inl | ||
| gis0type.h | ||
| ha0storage.h | ||
| ha0storage.inl | ||
| ha_prototypes.h | ||
| handler0alter.h | ||
| hash0hash.h | ||
| ibuf0ibuf.h | ||
| lock0iter.h | ||
| lock0lock.h | ||
| lock0lock.inl | ||
| lock0prdt.h | ||
| lock0priv.h | ||
| lock0priv.inl | ||
| lock0types.h | ||
| log0crypt.h | ||
| log0log.h | ||
| log0recv.h | ||
| log0types.h | ||
| mach0data.h | ||
| mach0data.inl | ||
| mariadb_stats.h | ||
| mem0mem.h | ||
| mem0mem.inl | ||
| mtr0log.h | ||
| mtr0mtr.h | ||
| mtr0types.h | ||
| os0file.h | ||
| os0file.inl | ||
| page0cur.h | ||
| page0cur.inl | ||
| page0page.h | ||
| page0page.inl | ||
| page0types.h | ||
| page0zip.h | ||
| page0zip.inl | ||
| pars0grm.h | ||
| pars0opt.h | ||
| pars0pars.h | ||
| pars0sym.h | ||
| pars0types.h | ||
| que0que.h | ||
| que0que.inl | ||
| que0types.h | ||
| read0types.h | ||
| rem0cmp.h | ||
| rem0rec.h | ||
| rem0rec.inl | ||
| rem0types.h | ||
| row0ext.h | ||
| row0ext.inl | ||
| row0ftsort.h | ||
| row0import.h | ||
| row0ins.h | ||
| row0log.h | ||
| row0merge.h | ||
| row0mysql.h | ||
| row0purge.h | ||
| row0quiesce.h | ||
| row0row.h | ||
| row0row.inl | ||
| row0sel.h | ||
| row0types.h | ||
| row0uins.h | ||
| row0umod.h | ||
| row0undo.h | ||
| row0upd.h | ||
| row0upd.inl | ||
| row0vers.h | ||
| rw_lock.h | ||
| small_vector.h | ||
| srv0mon.h | ||
| srv0mon.inl | ||
| srv0srv.h | ||
| srv0start.h | ||
| srw_lock.h | ||
| sux_lock.h | ||
| transactional_lock_guard.h | ||
| trx0i_s.h | ||
| trx0purge.h | ||
| trx0rec.h | ||
| trx0roll.h | ||
| trx0rseg.h | ||
| trx0sys.h | ||
| trx0trx.h | ||
| trx0trx.inl | ||
| trx0types.h | ||
| trx0undo.h | ||
| trx0undo.inl | ||
| trx0xa.h | ||
| univ.i | ||
| ut0byte.h | ||
| ut0byte.inl | ||
| ut0counter.h | ||
| ut0dbg.h | ||
| ut0list.h | ||
| ut0list.inl | ||
| ut0lst.h | ||
| ut0mem.h | ||
| ut0mem.inl | ||
| ut0new.h | ||
| ut0pool.h | ||
| ut0rbt.h | ||
| ut0rnd.h | ||
| ut0sort.h | ||
| ut0stage.h | ||
| ut0ut.h | ||
| ut0vec.h | ||
| ut0vec.inl | ||
| ut0wqueue.h | ||