mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
initial support for vector indexes
MDEV-33407 Parser support for vector indexes The syntax is create table t1 (... vector index (v) ...); limitation: * v is a binary string and NOT NULL * only one vector index per table * temporary tables are not supported MDEV-33404 Engine-independent indexes: subtable method added support for so-called "high level indexes", they are not visible to the storage engine, implemented on the sql level. For every such an index in a table, say, t1, the server implicitly creates a second table named, like, t1#i#05 (where "05" is the index number in t1). This table has a fixed structure, no frm, not accessible directly, doesn't go into the table cache, needs no MDLs. MDEV-33406 basic optimizer support for k-NN searches for a query like SELECT ... ORDER BY func() optimizer will use item_func->part_of_sortkey() to decide what keys can be used to resolve ORDER BY.
This commit is contained in:
@ -933,6 +933,13 @@ bool mysql_insert(THD *thd, TABLE_LIST *table_list,
|
||||
table->file->extra(HA_EXTRA_WRITE_CAN_REPLACE);
|
||||
if (duplic == DUP_UPDATE)
|
||||
table->file->extra(HA_EXTRA_INSERT_WITH_UPDATE);
|
||||
|
||||
thd->abort_on_warning= !ignore && thd->is_strict_mode();
|
||||
|
||||
table->reset_default_fields();
|
||||
table->prepare_triggers_for_insert_stmt_or_event();
|
||||
table->mark_columns_needed_for_insert();
|
||||
|
||||
/*
|
||||
let's *try* to start bulk inserts. It won't necessary
|
||||
start them as values_list.elements should be greater than
|
||||
@ -960,7 +967,8 @@ bool mysql_insert(THD *thd, TABLE_LIST *table_list,
|
||||
goto abort;
|
||||
}
|
||||
}
|
||||
table->file->prepare_for_insert(create_lookup_handler);
|
||||
if (table->file->prepare_for_insert(create_lookup_handler))
|
||||
goto abort;
|
||||
/**
|
||||
This is a simple check for the case when the table has a trigger
|
||||
that reads from it, or when the statement invokes a stored function
|
||||
@ -978,12 +986,6 @@ bool mysql_insert(THD *thd, TABLE_LIST *table_list,
|
||||
table->file->ha_reset_copy_info();
|
||||
}
|
||||
|
||||
thd->abort_on_warning= !ignore && thd->is_strict_mode();
|
||||
|
||||
table->reset_default_fields();
|
||||
table->prepare_triggers_for_insert_stmt_or_event();
|
||||
table->mark_columns_needed_for_insert();
|
||||
|
||||
if (fields.elements || !value_count || table_list->view != 0)
|
||||
{
|
||||
if (table->triggers &&
|
||||
|
Reference in New Issue
Block a user