Andrew Kane
d72ee71f23
Fixed compilation errors with Postgres 19
2025-12-10 14:59:29 -08:00
Andrew Kane
2fe560dc58
Fixed extra-semi warnings [skip ci]
2025-01-18 13:08:11 -08:00
Andrew Kane
857d716d9e
Renamed iterative_search to iterative_scan
2024-10-27 14:02:22 -07:00
Andrew Kane
78b877bdaf
Revert "Renamed iterative_search to iterative_scan"
...
This reverts commit 7043cce893 .
2024-10-24 20:32:07 -07:00
Andrew Kane
7043cce893
Renamed iterative_search to iterative_scan
2024-10-24 20:31:43 -07:00
Andrew Kane
ac6576e53a
Added hnsw.search_mem_multiplier option
2024-10-24 18:02:20 -07:00
Andrew Kane
a2408e60fa
Revert "Added IndexTuple to HNSW elements (first step to support multiple attributes)"
...
This reverts commit 53a8734bac .
2024-10-11 14:57:57 -07:00
Andrew Kane
53a8734bac
Added IndexTuple to HNSW elements (first step to support multiple attributes)
2024-10-11 14:12:01 -07:00
Andrew Kane
9d15a76b60
Improved enum naming [skip ci]
2024-10-11 11:20:36 -07:00
Andrew Kane
a3a20f9816
Simplified GUC names [skip ci]
2024-10-11 11:18:01 -07:00
Andrew Kane
961cb17d80
Added iterative search for HNSW [skip ci]
2024-10-10 18:14:39 -07:00
Andrew Kane
2cbd08b6c0
Moved unions and macros [skip ci]
2024-10-10 09:41:26 -07:00
Andrew Kane
fa6782985a
Added HnswQuery struct for query data
2024-10-09 23:45:47 -07:00
Andrew Kane
32ab27d72a
Added HnswSupport struct for support functions
2024-10-09 23:10:26 -07:00
Andrew Kane
064db12de7
Moved procinfo initialization for inserts [skip ci]
2024-10-09 21:59:21 -07:00
Andrew Kane
a98534e5ab
DRY HNSW procinfo
2024-10-09 21:03:18 -07:00
Andrew Kane
57c05c59a2
DRY code for forming index value
2024-10-09 20:50:17 -07:00
Andrew Kane
658d74e2f6
Use Size for memory [skip ci]
2024-09-29 23:48:58 -07:00
Andrew Kane
525e3b81e1
Improved HnswUpdateConnection parameters [skip ci]
2024-09-29 19:47:25 -07:00
Andrew Kane
4ac86f62a1
Improved variable names [skip ci]
2024-09-29 19:22:35 -07:00
Andrew Kane
ee43ee9b16
Use HnswLoadNeighborTids for inserts
2024-09-29 18:52:12 -07:00
Andrew Kane
5ce367e18b
Removed lc from HnswUpdateConnection [skip ci]
2024-09-29 18:18:42 -07:00
Andrew Kane
0b6214aad6
Moved HnswLoadNeighbors to hnswinsert.c [skip ci]
2024-09-29 15:49:01 -07:00
Andrew Kane
cae3458329
Updated distance to use double
2024-09-29 15:06:50 -07:00
Andrew Kane
d5e8fc96a5
Changed HnswPairingHeapNode to HnswSearchCandidate to reduce allocations and improve code
2024-09-21 12:07:44 -07:00
Andrew Kane
b738ffecc1
Dropped support for Postgres 12
2024-09-19 18:13:54 -07:00
Andrew Kane
d74d3065bc
Reduced allocations for pairing heap
2024-09-19 01:59:46 -07:00
Andrew Kane
49c1f13095
Improved performance of on-disk HNSW index builds - #570
2024-05-29 12:03:58 -07:00
Andrew Kane
f23d7184e9
Moved version check to first header [skip ci]
2024-04-25 17:49:25 -07:00
Andrew Kane
1fdfff7349
Restored collation for consistency [skip ci]
2024-04-25 13:46:45 -07:00
Andrew Kane
38e365ed58
Restored HnswNormValue [skip ci]
2024-04-25 13:35:17 -07:00
Andrew Kane
58ec5296b0
Reduced support functions for HNSW - #527
2024-04-25 13:21:24 -07:00
Andrew Kane
47d5b2896e
Improved support functions for HNSW - #527
2024-04-25 13:00:40 -07:00
Andrew Kane
3eef1ff5c2
Removed type-specific code from HNSW [skip ci]
2024-04-24 14:53:45 -07:00
Andrew Kane
0da6213a60
Moved type lookup to support functions - #527
2024-04-23 13:02:47 -07:00
Andrew Kane
f14c21748b
Added support function for l2_normalize [skip ci]
2024-04-22 18:36:47 -07:00
Andrew Kane
5215c28923
Moved norm check to separate function
2024-04-15 15:32:08 -07:00
Andrew Kane
abac7a3f77
Added sparsevec type
2024-04-02 14:25:09 -07:00
Andrew Kane
32a502c838
Added halfvec type
2024-04-02 13:55:45 -07:00
Andrew Kane
94a444f029
Added support for bit vectors to HNSW
2024-04-01 20:30:55 -07:00
Andrew Kane
2c48e3edc2
Mark type-specific code
2024-03-29 14:01:48 -07:00
Andrew Kane
8e59455c3c
Removed normvec for simplicity (no difference in performance)
2024-03-27 16:33:11 -07:00
Heikki Linnakangas
0d35a14198
Fix compiler warnings in strict C99 mode ( #487 )
...
Redefining a typedef is a C11 feature:
In file included from src/hnsw.c:10:
src/hnsw.h:147:5: warning: redefinition of typedef 'HnswElementData' is a C11 feature [-Wtypedef-redefinition]
} HnswElementData;
^
src/hnsw.h:118:32: note: previous definition is here
typedef struct HnswElementData HnswElementData;
^
src/hnsw.h:163:5: warning: redefinition of typedef 'HnswNeighborArray' is a C11 feature [-Wtypedef-redefinition]
} HnswNeighborArray;
^
src/hnsw.h:119:34: note: previous definition is here
typedef struct HnswNeighborArray HnswNeighborArray;
^
2 warnings generated.
I got these warnings when I built PostgreSQL with "CC=clang
CFLAGS=-std=gnu99"; other similar options would surely produce the
warnings too.
2024-03-12 02:02:33 -07:00
Andrew Kane
3ea2ce89be
Reduced lock contention with parallel HNSW index builds
2024-03-11 20:16:55 -07:00
Andrew Kane
fa52511eaa
Fixed closer caching for Postgres 12
2024-02-28 15:44:38 -08:00
Andrew Kane
ca10cbaa7d
Revert "Remove offsethash"
...
This reverts commit 1cbd204f52 .
2024-02-20 16:07:32 -08:00
Heikki Linnakangas
1cbd204f52
Remove offsethash
...
The original motivation was to eliminate the superfluous HnswPtrAccess
call from AddToVisited. The caller has to call HnswPtrAccess() anyway,
so it makes sense to pass the HnswElement rather than HnswElementPtr
to AddToVisited(). But then I realized that we can use the
pointer-variant even with shared memory, because the visited-hash is
backend-private, and the addresses where the elements are mapped to in
shared memory are stable within the backend.
2024-02-19 14:12:26 +02:00
Andrew Kane
5ba62fca84
Fixed crash with shared_preload_libraries - fixes #460
2024-02-14 17:13:30 -08:00
Andrew Kane
ded649891b
DRY HNSW tuple alloc size [skip ci]
2024-01-28 22:58:38 -08:00
Heikki Linnakangas
121f53b8ff
Remove unused heapRel arguments ( #443 )
2024-01-26 12:45:10 -08:00