mirror of
https://github.com/MariaDB/server.git
synced 2026-05-09 16:44:29 +02: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:
parent
9ccf02a9a7
commit
d6add9a03d
28 changed files with 888 additions and 89 deletions
|
|
@ -24,6 +24,19 @@
|
|||
#include <my_global.h>
|
||||
#include "item.h"
|
||||
|
||||
key_map Item_func_vec_distance::part_of_sortkey() const
|
||||
{
|
||||
key_map map(0);
|
||||
if (Item_field *item= get_field_arg())
|
||||
{
|
||||
Field *f= item->field;
|
||||
for (uint i= f->table->s->keys; i < f->table->s->total_keys; i++)
|
||||
if (f->table->s->key_info[i].algorithm == HA_KEY_ALG_VECTOR &&
|
||||
f->key_start.is_set(i))
|
||||
map.set_bit(i);
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
double Item_func_vec_distance::val_real()
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue