mirror of
https://github.com/pgvector/pgvector.git
synced 2026-07-01 10:11:20 +08:00
Added checks for invalid indexes - #591
This commit is contained in:
@@ -300,6 +300,9 @@ HnswGetMetaPageInfo(Relation index, int *m, HnswElement * entryPoint)
|
||||
page = BufferGetPage(buf);
|
||||
metap = HnswPageGetMeta(page);
|
||||
|
||||
if (unlikely(metap->magicNumber != HNSW_MAGIC_NUMBER))
|
||||
elog(ERROR, "hnsw index is not valid");
|
||||
|
||||
if (m != NULL)
|
||||
*m = metap->m;
|
||||
|
||||
|
||||
@@ -19,6 +19,9 @@ FindInsertPage(Relation index, Datum *values, BlockNumber *insertPage, ListInfo
|
||||
FmgrInfo *procinfo;
|
||||
Oid collation;
|
||||
|
||||
/* Ensure index is valid */
|
||||
IvfflatGetMetaPageInfo(index, NULL, NULL);
|
||||
|
||||
/* Avoid compiler warning */
|
||||
listInfo->blkno = nextblkno;
|
||||
listInfo->offno = FirstOffsetNumber;
|
||||
|
||||
@@ -170,7 +170,11 @@ IvfflatGetMetaPageInfo(Relation index, int *lists, int *dimensions)
|
||||
page = BufferGetPage(buf);
|
||||
metap = IvfflatPageGetMeta(page);
|
||||
|
||||
*lists = metap->lists;
|
||||
if (unlikely(metap->magicNumber != IVFFLAT_MAGIC_NUMBER))
|
||||
elog(ERROR, "ivfflat index is not valid");
|
||||
|
||||
if (lists != NULL)
|
||||
*lists = metap->lists;
|
||||
|
||||
if (dimensions != NULL)
|
||||
*dimensions = metap->dimensions;
|
||||
|
||||
Reference in New Issue
Block a user