maria:bb-11.4-vec

Last commit made on 2024-02-10
Get this branch:
git clone -b bb-11.4-vec https://git.launchpad.net/maria

Branch merges

Branch information

Name:
bb-11.4-vec
Repository:
lp:maria

Recent commits

8148350... by Sergei Golubchik

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.

a663226... by Sergei Golubchik

Revert "MDEV-15458 Segfault in heap_scan() upon UPDATE after ADD SYSTEM VERSIONING"

This partially reverts 43623f04a98

Engines have to set ::position() after ::write_row(), otherwise
the server won't be able to refer to the row just inserted.
This is important for high-level indexes.

heap part isn't reverted, so heap doesn't support high-level indexes.
to fix this, it'll need info->lastpos in addition to info->current_ptr

50e86fc... by Sergei Golubchik

cleanup: unused function argument

60d2533... by Sergei Golubchik

open frm for DROP TABLE

needed to get partitioning and information about
secondary objects

546b5d9... by Sergei Golubchik

cleanup: extract ha_create_table_from_share()

6bbd724... by Sergei Golubchik

cleanup: generalize ER_INNODB_NO_FT_TEMP_TABLE

2f4afbf... by Sergei Golubchik

cleanup: generalize ER_SPATIAL_CANT_HAVE_NULL

429e41b... by Sergei Golubchik

cleanup: make_long_hash_field_name() and add_hash_field()

c2e4cf7... by Sergei Golubchik

cleanup: key algorithm vs key flags

the information about index algorithm was stored in two
places inconsistently split between both.

BTREE index could have key->algorithm == HA_KEY_ALG_BTREE, if the user
explicitly specified USING BTREE or HA_KEY_ALG_UNDEF, if not.

RTREE index had key->algorithm == HA_KEY_ALG_RTREE
and always had key->flags & HA_SPATIAL

FULLTEXT index had key->algorithm == HA_KEY_ALG_FULLTEXT
and always had key->flags & HA_FULLTEXT

HASH index had key->algorithm == HA_KEY_ALG_HASH or HA_KEY_ALG_UNDEF

long unique index always had key->algorithm == HA_KEY_ALG_LONG_HASH

In this commit:

All indexes except BTREE and HASH always have key->algorithm
set, HA_SPATIAL and HA_FULLTEXT flags are not used anymore (except
for storage to keep frms backward compatible).

abf91cc... by Sergei Golubchik

cleanup: Queue and Bounded_queue

Bounded_queue<> pretended to be a typesafe C++ wrapper
on top of pure C queues.h.

But it wasn't, it was tightly bounded to filesort and only useful there.

* implement Queue<> - a typesafe C++ wrapper on top of QUEUE
* move Bounded_queue to filesort.cc, remove pointless "generalizations"
  change it to use Queue.
* remove bounded_queue.h
* change subselect_rowid_merge_engine to use Queue, not QUEUE