-- Pruebas que no dependen de ninguna extensión de vectores, así que corren en -- cualquier PostgreSQL. Cubren lo que hay que garantizar aunque el usuario no -- tenga pgvector instalado: que la extensión carga, que el descubrimiento no -- inventa índices, y que los errores enseñan en vez de devolver un número. -- Sin esto, el CONTEXT de cada error trae el numero de linea de la funcion -- plpgsql ("line 19 at RAISE") y el test se rompe cada vez que alguien edita el -- SQL, aunque el comportamiento sea identico. Un test que falla por motivos que -- no son fallas se termina ignorando. \set SHOW_CONTEXT never CREATE EXTENSION IF NOT EXISTS pg_recall_guard CASCADE; -- La vista existe y no rompe en una base sin índices vectoriales. SELECT count(*) >= 0 AS vista_responde FROM recall_guard.vector_indexes; -- Las tablas de estado están y arrancan vacías. SELECT count(*) AS baselines FROM recall_guard.baselines; SELECT count(*) AS measurements FROM recall_guard.measurements; -- check() sin nada aprobado devuelve cero filas, no un error. SELECT count(*) AS chequeos FROM recall_guard.check(); -- Un índice que NO ordena por operador de distancia debe ser rechazado con un -- mensaje que diga dónde mirar. Es el caso más probable de mal uso: alguien -- apunta la herramienta a un btree cualquiera. CREATE TABLE rg_t (id int PRIMARY KEY, txt text); CREATE INDEX rg_btree ON rg_t (txt); \set ON_ERROR_STOP off SELECT recall_guard.evaluate_query('rg_btree'::regclass, '[1,2,3]', 10); SELECT recall_guard.measure('rg_btree'::regclass, 10, 5); \set ON_ERROR_STOP on -- Un btree tampoco debe aparecer en el descubrimiento. SELECT count(*) AS btree_descubierto FROM recall_guard.vector_indexes WHERE index_name = 'rg_btree'; DROP TABLE rg_t;