mirror of
https://github.com/MariaDB/server.git
synced 2025-12-28 08:10:14 +00:00
When the source row is deleted, mark the corresponding node in HNSW index by setting `tref` to null. An index is added for the `tref` in secondary table for faster searching of the to-be-marked nodes. The nodes marked as deleted will still be used for search, but will not be included in the final query results. As skipping deleted nodes and not adding deleted nodes for new-inserted nodes' neighbor list could impact the performance, we now only skip these nodes in search results. - for some reason the bitmap is not set for hlindex during the delete so I had to temporarily comment out one line All new code of the whole pull request, including one or several files that are either new files or modified ones, are contributed under the BSD-new license. I am contributing on behalf of my employer Amazon Web Services, Inc.
32 lines
1.1 KiB
C
32 lines
1.1 KiB
C
/*
|
|
Copyright (c) 2024, MariaDB plc
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; version 2 of the License.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA
|
|
*/
|
|
|
|
#include <my_global.h>
|
|
#include "item.h"
|
|
#include "m_string.h"
|
|
#include "structs.h"
|
|
#include "table.h"
|
|
|
|
const LEX_CSTRING mhnsw_hlindex_table_def(THD *thd, uint ref_length);
|
|
int mhnsw_insert(TABLE *table, KEY *keyinfo);
|
|
int mhnsw_read_first(TABLE *table, KEY *keyinfo, Item *dist, ulonglong limit);
|
|
int mhnsw_read_next(TABLE *table);
|
|
int mhnsw_invalidate(TABLE *table, uchar *rec, KEY *keyinfo);
|
|
void mhnsw_free(TABLE_SHARE *share);
|
|
|
|
extern ulonglong mhnsw_cache_size;
|