Spaces:
Running
Running
File size: 5,615 Bytes
d76e281 5c793cc 2100726 baaa888 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 | from pathlib import Path
def test_hybrid_search_dynamic_sql_escapes_format_percent_signs() -> None:
contract = Path("sql/aws_pgvector_contract.sql").read_text(encoding="utf-8")
dynamic_sql = contract.split("RETURN QUERY EXECUTE format($query$", maxsplit=1)[1]
dynamic_sql = dynamic_sql.split("$query$, target_table)", maxsplit=1)[0]
remaining_percent_signs = dynamic_sql.replace("%%", "").replace("%I", "")
assert "%" not in remaining_percent_signs
def test_post_feed_contract_is_synchronized() -> None:
migration = Path("sql/migrate_post_feed_v1.sql").read_text(encoding="utf-8")
base_contract = Path("sql/aws_pgvector_contract.sql").read_text(encoding="utf-8")
full_setup = Path("sql/aws_pgvector_full_setup.psql.sql").read_text(encoding="utf-8")
required = {
"post_cluster_runs",
"post_cluster_memberships",
"post_embedding_tombstones",
"user_interest_embeddings",
"post_sync_checkpoints",
"get_post_feed_features",
"deactivate_post_embedding",
"validate_post_cluster_run",
"fail_post_cluster_run",
"get_post_cluster_run",
"reset_user_interest_profiles",
"reset_post_sync_checkpoint",
"activate_post_cluster_run",
}
assert all(name in migration for name in required)
base_required = {
"post_cluster_runs",
"post_cluster_memberships",
"post_embedding_tombstones",
"user_interest_embeddings",
"post_sync_checkpoints",
}
assert all(name in base_contract for name in base_required)
assert "\\ir migrate_post_feed_v1.sql" in full_setup
assert "\\ir migrate_post_feed_v2.sql" in full_setup
assert Path("sql/verify_post_feed_v1.sql").exists()
assert Path("sql/rollback_post_feed_v1.sql").exists()
def test_post_feed_v2_and_convergent_schema_are_present() -> None:
migration = Path("sql/migrate_post_feed_v2.sql").read_text(encoding="utf-8")
verifier = Path("sql/verify_post_feed_v2.sql").read_text(encoding="utf-8")
convergent = Path("sql/new_pgvector_schema.sql").read_text(encoding="utf-8")
assert "source_version es obligatorio" in migration
assert "EXCLUDED.source_version > post_embeddings.source_version" in migration
assert "cluster_count <> expected_k" in migration
assert "post_embedding_dimension_ok" in verifier
assert "aws_pgvector_contract" not in convergent # contenido inline, sin includes
assert "CREATE TABLE IF NOT EXISTS post_embeddings" in convergent
assert "CREATE OR REPLACE FUNCTION public.get_post_feed_features" in convergent
assert "migrate_post_feed_v2.sql" not in convergent # contenido inline, sin includes
def test_global_search_candidate_filters_are_convergent_and_incremental() -> None:
contract = Path("sql/aws_pgvector_contract.sql").read_text(encoding="utf-8")
convergent = Path("sql/new_pgvector_schema.sql").read_text(encoding="utf-8")
migration = Path(
"sql/migrations/20260712_01_global_search_candidate_filters.sql"
).read_text(encoding="utf-8")
verifier = Path("sql/verify_global_search_candidate_filters.sql")
for token in (
"event_active_at",
"min_semantic_score",
"min_lexical_score",
"make_interval",
"try_parse_timestamptz",
"try_parse_positive_integer",
):
assert token in contract
assert token in convergent
assert token in migration
upper_migration = migration.upper()
assert "BEGIN;" in upper_migration
assert "COMMIT;" in upper_migration
assert "CREATE OR REPLACE FUNCTION PUBLIC.SEARCH_RESOURCE_EMBEDDINGS" in upper_migration
assert "CREATE TABLE" not in upper_migration
assert "ALTER TABLE" not in upper_migration
assert "CREATE INDEX" not in upper_migration
assert "DROP FUNCTION" not in upper_migration
assert "TO NLP_READER" in upper_migration
assert verifier.exists()
verifier_sql = verifier.read_text(encoding="utf-8")
assert "RAISE EXCEPTION 'Verify search V2" in verifier_sql
assert "SET TRANSACTION READ ONLY" in verifier_sql
def test_global_search_sql_does_not_directly_cast_untrusted_event_metadata() -> None:
for path in (
Path("sql/aws_pgvector_contract.sql"),
Path("sql/new_pgvector_schema.sql"),
Path("sql/migrations/20260712_01_global_search_candidate_filters.sql"),
):
sql = path.read_text(encoding="utf-8")
assert "NULLIF(e.metadata->>'start_time', '')::timestamptz" not in sql
assert "(e.metadata->>'duration_minutes')::integer" not in sql
def test_places_semantic_index_is_additive_and_hybrid() -> None:
migration = Path(
"sql/migrations/20260716_02_places_semantic_v1.sql"
).read_text(encoding="utf-8")
upper = migration.upper()
assert "PLACE_EMBEDDINGS_SEMANTIC_V1" in upper
assert "VECTOR(768)" in upper
assert "SEARCH_PLACES_SEMANTIC_V1" in upper
assert "FULL OUTER JOIN" in upper
assert "WEBSEARCH_TO_TSQUERY" in upper
assert "USING HNSW" in upper
assert "AS MATERIALIZED" not in upper
assert "FROM PUBLIC.PLACE_EMBEDDINGS_SEMANTIC_V1 AS PLACE" in upper
assert "ALTER TABLE PUBLIC.PLACE_EMBEDDINGS" not in upper
assert "DROP TABLE" not in upper
verifier = Path("sql/verify_places_semantic_v1.sql")
assert verifier.exists()
verifier_sql = verifier.read_text(encoding="utf-8").upper()
assert "SET TRANSACTION READ ONLY" in verifier_sql
assert "VECTOR(768)" in verifier_sql
assert "USING HNSW" in verifier_sql
assert "EXPLAIN (ANALYZE, BUFFERS" in verifier_sql
|