`sql/ruvector--0.3.0.sql` only carried a comment stub for the embedding
functions, so ruvector_embed() and friends were never created even in builds
compiled with `--features embeddings`.
Register all ten (#[pg_extern] in src/embeddings/functions.rs) inside the
same `DO $$ ... EXCEPTION WHEN OTHERS THEN RAISE NOTICE` guard the solver,
math and TDA sections use, so CREATE EXTENSION still succeeds on builds
without the feature. Declarations mirror the Rust signatures, including the
7-column ruvector_embedding_models() table and pgrx's default volatility;
#136's original block predates both and declared 4 columns.
Checked on postgres:17 (no library) and the published
ruvector-postgres:2.0.6-pg17 image (library without the embeddings feature):
both run the block with the skip NOTICE and exit 0.
Remaining part of #136; its control-file and Dockerfile halves are already
on main (4d02cc223, 229877fe9).
Co-Authored-By: John O'Hare <github@xrsystems.uk>
Co-Authored-By: claude-flow <ruv@ruv.net>
`CREATE EXTENSION ruvector` was failing when the extension was built
without optional feature flags (solver, math-distances, tda,
attention-extended, sona-learning, domain-expansion) because the SQL
migration unconditionally registered C functions whose symbols didn't
exist in the compiled .so file.
Wrap all 6 optional-feature sections in DO $ BEGIN ... EXCEPTION WHEN
OTHERS THEN RAISE NOTICE ... END $ blocks so PostgreSQL gracefully skips
missing C function symbols and logs an informational notice instead of
aborting the entire extension load.
Fixes#325
Co-authored-by: ruvnet <ruvnet@gmail.com>