Andrew Kane
b738ffecc1
Dropped support for Postgres 12
2024-09-19 18:13:54 -07:00
Heikki Linnakangas
7117513532
Add error codes to a few errors ( #657 )
...
With elog(), you get XX000 "internal_error", which sounds scary.
It's not self-evident what the right error codes for some of these
errors are, but I tried to use my best judgment.
2024-09-19 18:04:23 -07:00
Andrew Kane
57fb706242
Fixed locking for parallel HNSW index builds - fixes #635
2024-08-04 11:27:51 -07:00
Narek Galstyan
9dcf1bdc80
Fix init_fork WAL-logging on unlogged indexes ( #591 )
...
Currently pgvector does not create any WAL records for unlogged tables
Postgres assumes INIT_FORK of unlogged tables is persistent and uses it
to reset the table index to its default empty state after a server
crash.
This patch makes INIT_FORK of unlogged table WAL-tracked, which ensures
an unlogged table is usable after a crash-restart
2024-06-10 21:16:32 -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
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
de410a2915
Use variable for max dimemsions [skip ci]
2024-03-29 10:57:16 -07:00
Andrew Kane
8e59455c3c
Removed normvec for simplicity (no difference in performance)
2024-03-27 16:33:11 -07:00
Andrew Kane
1dc6514b66
Updated comment [skip ci]
2024-03-15 12:38:14 -07:00
Andrew Kane
6c53f7ca02
Updated comment [skip ci]
2024-03-15 12:37:47 -07:00
Andrew Kane
3ea2ce89be
Reduced lock contention with parallel HNSW index builds
2024-03-11 20:16:55 -07:00
Andrew Kane
b447ae4989
Avoid base address for relptr for Postgres < 14.5
2024-02-28 14:10:14 -08:00
Andrew Kane
5ba62fca84
Fixed crash with shared_preload_libraries - fixes #460
2024-02-14 17:13:30 -08:00
Andrew Kane
f43cd0ed98
Improved type [skip ci]
2024-02-05 19:38:52 -08:00
Andrew Kane
cad9e22d9a
Updated variable name to be consistent with CreateGraphPages [skip ci]
2024-01-28 23:02:13 -08:00
Andrew Kane
a7d43904f7
Zero memory for each element
2024-01-28 23:00:39 -08:00
Andrew Kane
ded649891b
DRY HNSW tuple alloc size [skip ci]
2024-01-28 22:58:38 -08:00
Andrew Kane
86b31fdf96
Revert "Update neighbor tuples in-place for HNSW index build"
...
This reverts commit 270dd8189a .
2024-01-28 22:18:22 -08:00
Andrew Kane
642ee1f423
Improved function names
2024-01-28 21:00:12 -08:00
Andrew Kane
270dd8189a
Update neighbor tuples in-place for HNSW index build
2024-01-28 20:53:56 -08:00
Heikki Linnakangas
121f53b8ff
Remove unused heapRel arguments ( #443 )
2024-01-26 12:45:10 -08:00
Heikki Linnakangas
571697fee7
Remove unnecessary UpdateProgress() wrappers ( #433 )
...
Now that we require PostgreSQL v12, we can use
pgstat_progress_update_param directly.
2024-01-25 00:07:57 -08:00
Heikki Linnakangas
c8be3a369b
Include generic_xlog.h directly in the .c files where it's needed
...
There are no references to anything that's in generic_xlog.h in the
header files.
2024-01-23 13:04:03 +02:00
Heikki Linnakangas
f31d708c2b
Add direct include to pairingheap.h in headers
...
ivfflat.h and hnsw.h have references to pairingheap_node, so they need
to include lib/pairingheap.h. It happened to work, because
lib/pairingheap.h was being included indirectly through
nodes/execnodes.h, but let's be explicit.
Remove the include from hnswbuild.c, because there are no calls to
pairingheap functions in that file. Instead, add the includes to
hnswutils.c and ivfscan.c, which do have such calls. They are not
strictly necessary again because of the indirect include from hnsw.h
and ivfflat.h, but let's be explicit while we're messing with this.
2024-01-23 12:53:22 +02:00
Heikki Linnakangas
a1b1c99ff7
Remove unused #include
...
pg_list.h has not been used in hnswbuild.c since commit cb4c770df2 .
2024-01-23 12:53:13 +02:00
Andrew Kane
a1e526ef82
Dropped support for Postgres 11
2024-01-22 23:52:54 -08:00
Andrew Kane
8ffb3718a4
Leave more space for other shared memory
2024-01-22 23:31:55 -08:00
Andrew Kane
2d0f162bd7
Added support for in-memory parallel index builds for HNSW
...
Co-authored-by: Heikki Linnakangas <heikki.linnakangas@iki.fi >
2024-01-22 23:19:10 -08:00
Heikki Linnakangas
4c6928bd3c
Remove HnswSpool
...
It was just used to pass heap/index relations to
HnswParallelScanAndInsert. I think it was copied from nbtsort.c, which
is more complicated. I don't think we need a struct like this.
(That said, I actually think that we should have a state object that
would hold fields like 'heap', 'index', 'procinfo', 'collation'
etc. Passing that object around would simplify the signatures of many
functions. But that's a different story).
2024-01-22 23:11:25 -08:00
Heikki Linnakangas
6fd05dd6f6
Remove unused 'scantuplesortstates' field
2024-01-22 23:08:20 -08:00
Andrew Kane
597bfdc76b
Added HnswGetNeighbors macro
2024-01-13 20:00:34 -08:00
Andrew Kane
cbf3eb4fa5
Improved HNSW build and insert code
2024-01-13 10:07:42 -08:00
Andrew Kane
65d060ac86
Reverted FlushPages pattern for parallel builds
2024-01-08 10:45:31 -08:00
Andrew Kane
62ee33bb92
Improved locking code
2024-01-08 09:05:12 -08:00
Andrew Kane
520e274dde
Improved locking code
2024-01-07 22:34:41 -08:00
Andrew Kane
9e680884bd
Moved indtuples to HnswGraph
2024-01-07 22:23:49 -08:00
Andrew Kane
19a0e1b341
Moved graph to separate struct
2024-01-07 20:15:30 -08:00
Andrew Kane
c7fe1571ee
Improved code
2024-01-07 18:30:51 -08:00
Andrew Kane
cb4c770df2
Switched to slist for elements to reduce allocations and remove limit
2024-01-07 18:26:19 -08:00
Andrew Kane
85fdecd79b
Moved FlushPages before HnswEndParallel
2024-01-07 17:50:46 -08:00
Andrew Kane
6132428914
Improved number of parallel workers for HNSW index builds - closes #397
2024-01-05 19:46:08 -08:00