Skip to content
This repository has been archived by the owner on Nov 21, 2024. It is now read-only.

HNSW Index creation fails on Greenplum (PostgreSQL 12.12) #11

Open
ahmedrachid opened this issue Jul 13, 2023 · 2 comments
Open

HNSW Index creation fails on Greenplum (PostgreSQL 12.12) #11

ahmedrachid opened this issue Jul 13, 2023 · 2 comments

Comments

@ahmedrachid
Copy link

Hello, I'm trying to install pg_embedding extension on Greenplum 7 (PostgreSQL 12.12 MPP), but getting the following errors when running: make PG_CONFIG=$GPHOME/bin/pg_config install (fyi: pgvector works fine with Greenplum)

gcc -Wall -Wmissing-prototypes -Wpointer-arith -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-unused-but-set-variable -Werror=implicit-fallthrough=3 -Wno-format-truncation -Wno-stringop-truncation -O3 -fargument-noalias-global -fno-omit-frame-pointer -g  -Werror=uninitialized -Werror=implicit-function-declaration -O3 -fPIC -I. -I./ -I/usr/local/greenplum-db-7.0.0-beta.3/include/postgresql/server -I/usr/local/greenplum-db-7.0.0-beta.3/include/postgresql/internal   -D_GNU_SOURCE -I/usr/include/libxml2   -c -o embedding.o embedding.c
embedding.c: In function ‘hnsw_options’:
embedding.c:401:19: error: implicit declaration of function ‘build_reloptions’; did you mean ‘view_reloptions’? [-Werror=implicit-function-declaration]
  return (bytea *) build_reloptions(reloptions, validate,
                   ^~~~~~~~~~~~~~~~
                   view_reloptions
embedding.c:401:9: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
  return (bytea *) build_reloptions(reloptions, validate,
         ^
embedding.c: In function ‘hnsw_handler’:
embedding.c:513:13: error: ‘IndexAmRoutine’ {aka ‘struct IndexAmRoutine’} has no member named ‘amoptsprocnum’; did you mean ‘amoptions’?
  amroutine->amoptsprocnum = 0;
             ^~~~~~~~~~~~~
             amoptions
embedding.c:527:11: error: ‘IndexAmRoutine’ {aka ‘struct IndexAmRoutine’} has no member named ‘amusemaintenanceworkmem’
  amroutine->amusemaintenanceworkmem = false; /* not used during VACUUM */
           ^~
embedding.c:528:11: error: ‘IndexAmRoutine’ {aka ‘struct IndexAmRoutine’} has no member named ‘amparallelvacuumoptions’
  amroutine->amparallelvacuumoptions = VACUUM_OPTION_PARALLEL_BULKDEL;
           ^~
embedding.c:528:39: error: ‘VACUUM_OPTION_PARALLEL_BULKDEL’ undeclared (first use in this function); did you mean ‘CURSOR_OPT_PARALLEL_OK’?
  amroutine->amparallelvacuumoptions = VACUUM_OPTION_PARALLEL_BULKDEL;
                                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                       CURSOR_OPT_PARALLEL_OK
embedding.c:528:39: note: each undeclared identifier is reported only once for each function it appears in
embedding.c:534:22: warning: assignment to ‘aminsert_function’ {aka ‘_Bool (*)(struct RelationData *, long unsigned int *, _Bool *, struct ItemPointerData *, struct RelationData *, enum IndexUniqueCheck,  struct IndexInfo *)’} from incompatible pointer type ‘_Bool (*)(struct RelationData *, Datum *, _Bool *, ItemPointerData *, struct RelationData *, IndexUniqueCheck,  _Bool,  IndexInfo *)’ {aka ‘_Bool (*)(struct RelationData *, long unsigned int *, _Bool *, struct ItemPointerData *, struct RelationData *, enum IndexUniqueCheck,  _Bool,  struct IndexInfo *)’} [-Wincompatible-pointer-types]
  amroutine->aminsert = hnsw_insert;
                      ^
embedding.c:543:11: error: ‘IndexAmRoutine’ {aka ‘struct IndexAmRoutine’} has no member named ‘amadjustmembers’
  amroutine->amadjustmembers = NULL;
           ^~
embedding.c: In function ‘l2_distance’:
embedding.c:583: warning: ignoring #pragma clang loop [-Wunknown-pragmas]
  #pragma clang loop vectorize(enable)```

@ahmedrachid
Copy link
Author

Hello, just updating / renaming this Github issue to "HNSW Index creation fails on Greenplum (PostgreSQL 12.12)"

Here's what I'm getting as error:

warehouse=# CREATE INDEX ON t USING hnsw (val) WITH (maxelements = 10, dims=3, m=3);
ERROR:  could not map shared memory segment "/PostgreSQL.90204": Invalid argument (dsm_impl.c:327)  (seg13 10.128.0.20:8001 pid=260965) (dsm_impl.c:327)
warehouse=#

Screenshot 2023-07-18 at 15 41 14

@ahmedrachid ahmedrachid changed the title Install from source on Greenplum (PostgreSQL 12) HNSW Index creation fails on Greenplum (PostgreSQL 12.12) Jul 18, 2023
@bayandin
Copy link
Collaborator

bayandin commented Aug 7, 2023

Thanks for the report!

The code has changed a lot since the bug was reported (see https://neon.tech/blog/pg_embedding-on-disk-hnsw-index).
Could you please check if it's still reproducible (you can use this PR where's the compilation for Postgres 12 is fixed).

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants