Fixed select with no data

This commit is contained in:
Andrew Kane
2023-08-15 23:25:28 -07:00
parent e8f36aee92
commit 2b138d6cb5
3 changed files with 13 additions and 4 deletions

View File

@@ -9,7 +9,7 @@
/* /*
* Algorithm 5 from paper * Algorithm 5 from paper
*/ */
static void static List *
GetScanItems(IndexScanDesc scan, Datum q) GetScanItems(IndexScanDesc scan, Datum q)
{ {
HnswScanOpaque so = (HnswScanOpaque) scan->opaque; HnswScanOpaque so = (HnswScanOpaque) scan->opaque;
@@ -21,7 +21,7 @@ GetScanItems(IndexScanDesc scan, Datum q)
HnswElement entryPoint = HnswGetEntryPoint(index); HnswElement entryPoint = HnswGetEntryPoint(index);
if (entryPoint == NULL) if (entryPoint == NULL)
return; return NIL;
ep = lappend(ep, HnswEntryCandidate(entryPoint, q, index, procinfo, collation, false)); ep = lappend(ep, HnswEntryCandidate(entryPoint, q, index, procinfo, collation, false));
@@ -31,7 +31,7 @@ GetScanItems(IndexScanDesc scan, Datum q)
ep = w; ep = w;
} }
so->w = HnswSearchLayer(q, ep, hnsw_ef_search, 0, index, procinfo, collation, false, NULL); return HnswSearchLayer(q, ep, hnsw_ef_search, 0, index, procinfo, collation, false, NULL);
} }
/* /*
@@ -144,7 +144,7 @@ hnswgettuple(IndexScanDesc scan, ScanDirection dir)
HnswNormValue(so->normprocinfo, so->collation, &value, NULL); HnswNormValue(so->normprocinfo, so->collation, &value, NULL);
} }
GetScanItems(scan, value); so->w = GetScanItems(scan, value);
so->first = false; so->first = false;
} }

View File

@@ -27,4 +27,10 @@ SELECT COUNT(*) FROM t;
5 5
(1 row) (1 row)
TRUNCATE t;
SELECT * FROM t ORDER BY val <-> '[3,3,3]';
val
-----
(0 rows)
DROP TABLE t; DROP TABLE t;

View File

@@ -10,4 +10,7 @@ SELECT * FROM t ORDER BY val <-> '[3,3,3]';
SELECT * FROM t ORDER BY val <-> (SELECT NULL::vector); SELECT * FROM t ORDER BY val <-> (SELECT NULL::vector);
SELECT COUNT(*) FROM t; SELECT COUNT(*) FROM t;
TRUNCATE t;
SELECT * FROM t ORDER BY val <-> '[3,3,3]';
DROP TABLE t; DROP TABLE t;