# Installed SQL Object And Option Inventory Generated by `scripts/generate-sql-object-inventory.sh` from `sql/pgcontext--0.1.0.sql` and the HNSW reloptions callback. Run the generator after changing the installed SQL contract, or use `scripts/generate-sql-object-inventory.sh --check` to verify it. Do not edit this file by hand. The SQL contract registry owns lifecycle classification; this inventory pins the installed object and option shape consumed by the capability contract. Full SQL artifact SHA-256: `2205f1b314bc83f6ff501d74ba3aef5f9de23eb28972a73218fe0edd05e70aae` The artifact fingerprint covers every object declaration, function result shape, cast method/context, operator identity, and opclass strategy. `contract_registry` separately compares installed functions and catalog objects bidirectionally, including typed operator and access-method/input-type opclass identities. | Object kind | Installed count | |---|---:| | Types | 18 | | Schemas | 1 | | Functions | 232 | | Tables | 13 | | Views | 8 | | Triggers | 3 | | Casts | 23 | | Operators | 42 | | Operator classes | 11 | | Aggregates | 8 | | Access methods | 1 | ## Types - `BitVec` - `HalfVec` - `SparseVec` - `Vector` - `pgcontext.BuildJobStatus` - `pgcontext.EmbeddingMigrationStatus` - `pgcontext.IndexAdvisorRecommendation` - `pgcontext.IndexDiagnosticStatus` - `pgcontext.IndexLifecycleStatus` - `pgcontext.IndexMemoryEstimateStatus` - `pgcontext.OptimizationStatus` - `pgcontext.QueryCohortStatus` - `pgcontext.QueryExplainStatus` - `pgcontext.QueryLatencyBucket` - `pgcontext.QueryLifecycleState` - `pgcontext.RecallCheckStatus` - `pgcontext.TelemetryStatus` - `pgcontext.VacuumAdviceStatus` ## Schemas, Tables, Views, And Triggers - schema `pgcontext` - table `pgcontext._artifact_reader_pins` - table `pgcontext._artifact_segments` - table `pgcontext._build_deltas` - table `pgcontext._build_jobs` - table `pgcontext._collection_aliases` - table `pgcontext._collection_payload_columns` - table `pgcontext._collection_points` - table `pgcontext._collection_sparse_vectors` - table `pgcontext._collection_vectors` - table `pgcontext._collections` - table `pgcontext._embedding_migrations` - table `pgcontext._model_versions` - table `pgcontext._query_stats` - trigger `pgcontext_build_jobs_no_progress_regression` - trigger `pgcontext_build_jobs_terminal_state` - trigger `pgcontext_capture_build_point_delta` - view `pgcontext._collection_acl` - view `pgcontext._visible_artifact_segments` - view `pgcontext._visible_build_jobs` - view `pgcontext._visible_collection_limits` - view `pgcontext._visible_collection_payload_columns` - view `pgcontext._visible_collection_points` - view `pgcontext._visible_collection_sparse_vectors` - view `pgcontext._visible_collection_vectors` ## Function Names Overload argument and result identities are pinned by the artifact fingerprint and bidirectional `contract_registry` test. - `"bitvec_in"` - `"bitvec_out"` - `"halfvec_in"` - `"halfvec_out"` - `"sparsevec_in"` - `"sparsevec_out"` - `"vector_in"` - `"vector_out"` - `pgcontext."_hnsw_masked_candidates"` - `pgcontext."adopt_pgvector"` - `pgcontext."artifact_segment_diagnostics"` - `pgcontext."artifact_segment_memory"` - `pgcontext."artifact_segment_mmap_payload"` - `pgcontext."artifact_segment_serving_readiness"` - `pgcontext."artifact_segments"` - `pgcontext."attach_hnsw_index"` - `pgcontext."backfill_points"` - `pgcontext."binary_quantize"` - `pgcontext."bitvec"` - `pgcontext."bitvec_and_transition"` - `pgcontext."bitvec_bits_final"` - `pgcontext."bitvec_cmp"` - `pgcontext."bitvec_dims"` - `pgcontext."bitvec_enforce_typmod"` - `pgcontext."bitvec_eq"` - `pgcontext."bitvec_from_bool_array"` - `pgcontext."bitvec_ge"` - `pgcontext."bitvec_gt"` - `pgcontext."bitvec_hamming_distance"` - `pgcontext."bitvec_jaccard_distance"` - `pgcontext."bitvec_le"` - `pgcontext."bitvec_lt"` - `pgcontext."bitvec_ne"` - `pgcontext."bitvec_or_transition"` - `pgcontext."bitvec_to_bool_array"` - `pgcontext."bitvec_typmod_in"` - `pgcontext."bitvec_typmod_out"` - `pgcontext."build_jobs"` - `pgcontext."build_mmap_hnsw_artifact"` - `pgcontext."bulk_delete_points"` - `pgcontext."bulk_upsert_points"` - `pgcontext."cleanup_artifact_segments"` - `pgcontext."clear_payload"` - `pgcontext."collection_aliases"` - `pgcontext."collection_info"` - `pgcontext."collection_limits"` - `pgcontext."collection_sparse_vectors"` - `pgcontext."collection_vectors"` - `pgcontext."compact"` - `pgcontext."compare_indexes"` - `pgcontext."configure_collection_limits"` - `pgcontext."configure_sparse_vector"` - `pgcontext."configure_vector"` - `pgcontext."cosine_distance"` - `pgcontext."count"` - `pgcontext."create_collection"` - `pgcontext."create_collection_alias"` - `pgcontext."create_embedding_migration"` - `pgcontext."delete_payload"` - `pgcontext."delete_points"` - `pgcontext."discover"` - `pgcontext."drop_collection"` - `pgcontext."drop_collection_alias"` - `pgcontext."embedding_migrations"` - `pgcontext."enable_pgvector_binding"` - `pgcontext."encode_artifact_segment"` - `pgcontext."estimate_index_memory"` - `pgcontext."explain"` - `pgcontext."explain_late_interaction"` - `pgcontext."explain_late_interaction_ann"` - `pgcontext."explore"` - `pgcontext."facet"` - `pgcontext."grouped_search"` - `pgcontext."halfvec"` - `pgcontext."halfvec_avg_final"` - `pgcontext."halfvec_cmp"` - `pgcontext."halfvec_cosine_distance"` - `pgcontext."halfvec_dims"` - `pgcontext."halfvec_enforce_typmod"` - `pgcontext."halfvec_eq"` - `pgcontext."halfvec_from_double_array"` - `pgcontext."halfvec_from_integer_array"` - `pgcontext."halfvec_from_real_array"` - `pgcontext."halfvec_ge"` - `pgcontext."halfvec_gt"` - `pgcontext."halfvec_inner_product"` - `pgcontext."halfvec_l1_distance"` - `pgcontext."halfvec_l2_distance"` - `pgcontext."halfvec_le"` - `pgcontext."halfvec_lt"` - `pgcontext."halfvec_ne"` - `pgcontext."halfvec_negative_inner_product"` - `pgcontext."halfvec_sum_final"` - `pgcontext."halfvec_sum_transition"` - `pgcontext."halfvec_to_real_array"` - `pgcontext."halfvec_to_vector"` - `pgcontext."halfvec_typmod_in"` - `pgcontext."halfvec_typmod_out"` - `pgcontext."hnsw_build_stats"` - `pgcontext."hnsw_l2_distance"` - `pgcontext."hnsw_last_scan_work"` - `pgcontext."hnsw_serving_stats"` - `pgcontext."index_advisor"` - `pgcontext."index_diagnostics"` - `pgcontext."index_status"` - `pgcontext."inner_product"` - `pgcontext."l1_distance"` - `pgcontext."l2_distance"` - `pgcontext."migration_report"` - `pgcontext."model_versions"` - `pgcontext."negative_inner_product"` - `pgcontext."optimization_status"` - `pgcontext."product_quantize"` - `pgcontext."product_reconstruct"` - `pgcontext."publish_artifact_segment"` - `pgcontext."publish_artifact_segment_file"` - `pgcontext."query"` - `pgcontext."query_cohort_stats"` - `pgcontext."query_discover"` - `pgcontext."query_formula"` - `pgcontext."query_lookup"` - `pgcontext."query_nearest"` - `pgcontext."query_prefetch"` - `pgcontext."query_recommend"` - `pgcontext."query_rerank"` - `pgcontext."query_score_threshold"` - `pgcontext."query_weight"` - `pgcontext."recall_check"` - `pgcontext."recommend"` - `pgcontext."record_query_stat"` - `pgcontext."register_filter_column"` - `pgcontext."register_jsonb_path"` - `pgcontext."register_model_version"` - `pgcontext."register_sparse_vector"` - `pgcontext."register_vector"` - `pgcontext."request_build_cancel"` - `pgcontext."rerank_late_interaction"` - `pgcontext."rerank_quantized_candidates"` - `pgcontext."retire_artifact_segment"` - `pgcontext."retry_build_job"` - `pgcontext."run_build_job"` - `pgcontext."scalar_quantize"` - `pgcontext."scalar_reconstruct"` - `pgcontext."scroll"` - `pgcontext."search"` - `pgcontext."search_late_interaction"` - `pgcontext."search_late_interaction_ann"` - `pgcontext."search_mmap_hnsw_artifact"` - `pgcontext."search_sparse"` - `pgcontext."set_payload"` - `pgcontext."sparsevec"` - `pgcontext."sparsevec_avg_final"` - `pgcontext."sparsevec_cmp"` - `pgcontext."sparsevec_cosine_distance"` - `pgcontext."sparsevec_dims"` - `pgcontext."sparsevec_enforce_typmod"` - `pgcontext."sparsevec_eq"` - `pgcontext."sparsevec_from_arrays"` - `pgcontext."sparsevec_from_real_array"` - `pgcontext."sparsevec_from_vector"` - `pgcontext."sparsevec_ge"` - `pgcontext."sparsevec_gt"` - `pgcontext."sparsevec_indices"` - `pgcontext."sparsevec_inner_product"` - `pgcontext."sparsevec_l1_distance"` - `pgcontext."sparsevec_l2_distance"` - `pgcontext."sparsevec_le"` - `pgcontext."sparsevec_lt"` - `pgcontext."sparsevec_ne"` - `pgcontext."sparsevec_negative_inner_product"` - `pgcontext."sparsevec_sum_final"` - `pgcontext."sparsevec_sum_transition"` - `pgcontext."sparsevec_to_real_array"` - `pgcontext."sparsevec_to_vector"` - `pgcontext."sparsevec_typmod_in"` - `pgcontext."sparsevec_typmod_out"` - `pgcontext."sparsevec_values"` - `pgcontext."start_build_job"` - `pgcontext."telemetry"` - `pgcontext."update_build_job"` - `pgcontext."update_embedding_migration"` - `pgcontext."upsert_points"` - `pgcontext."vacuum_advice"` - `pgcontext."validate_artifact_segment"` - `pgcontext."validate_hnsw_graph_artifact"` - `pgcontext."vector_avg_final"` - `pgcontext."vector_cmp"` - `pgcontext."vector_dims"` - `pgcontext."vector_enforce_typmod"` - `pgcontext."vector_eq"` - `pgcontext."vector_from_double_array"` - `pgcontext."vector_from_integer_array"` - `pgcontext."vector_from_real_array"` - `pgcontext."vector_ge"` - `pgcontext."vector_gt"` - `pgcontext."vector_le"` - `pgcontext."vector_lt"` - `pgcontext."vector_ne"` - `pgcontext."vector_sum_final"` - `pgcontext."vector_sum_transition"` - `pgcontext."vector_to_real_array"` - `pgcontext."vector_typmod_in"` - `pgcontext."vector_typmod_out"` - `pgcontext._capture_build_point_delta` - `pgcontext._cosine_distance_fast` - `pgcontext._enforce_build_job_terminal_state` - `pgcontext._l1_distance_fast` - `pgcontext._l2_distance_fast8` - `pgcontext._l2_distance_fast` - `pgcontext._negative_inner_product_fast` - `pgcontext._reject_build_job_progress_regression` - `pgcontext.current_vector_config_revision` - `pgcontext.hamming_distance` - `pgcontext.hnsw_handler` - `pgcontext.jaccard_distance` ## Cast Identities - `(bit AS bitvec) WITH INOUT AS ASSIGNMENT;` - `(bit varying AS bitvec) WITH INOUT AS ASSIGNMENT;` - `(bitvec AS bit varying) WITH INOUT AS ASSIGNMENT;` - `(bitvec AS bit) WITH INOUT;` - `(bitvec AS bitvec)` - `(bitvec AS boolean[]) WITH FUNCTION pgcontext.bitvec_to_bool_array(bitvec) AS ASSIGNMENT;` - `(boolean[] AS bitvec) WITH FUNCTION pgcontext.bitvec_from_bool_array(boolean[]) AS ASSIGNMENT;` - `(double precision[] AS halfvec)` - `(double precision[] AS vector)` - `(halfvec AS halfvec)` - `(halfvec AS real[])` - `(halfvec AS vector)` - `(integer[] AS halfvec)` - `(integer[] AS vector)` - `(real[] AS halfvec)` - `(real[] AS sparsevec)` - `(real[] AS vector)` - `(sparsevec AS real[])` - `(sparsevec AS sparsevec)` - `(sparsevec AS vector)` - `(vector AS real[])` - `(vector AS sparsevec)` - `(vector AS vector)` ## Typed Operator Registry Entries | Entry | Kind | Applies to | Lifecycle | |---|---|---|---| | `vector_ops` | operator class | btree, vector | Stable | | `halfvec_ops` | operator class | btree, halfvec | Experimental | | `sparsevec_ops` | operator class | btree, sparsevec | Experimental | | `bitvec_ops` | operator class | btree, bitvec | Experimental | | `vector_hnsw_ops` | operator class | pgcontext_hnsw, vector | Experimental | | `vector_hnsw_ip_ops` | operator class | pgcontext_hnsw, vector | Experimental | | `vector_hnsw_cosine_ops` | operator class | pgcontext_hnsw, vector | Experimental | | `vector_hnsw_l1_ops` | operator class | pgcontext_hnsw, vector | Experimental | | `halfvec_hnsw_ops` | operator class | pgcontext_hnsw, halfvec | Experimental | | `sparsevec_hnsw_ops` | operator class | pgcontext_hnsw, sparsevec | Experimental | | `bitvec_hnsw_hamming_ops` | operator class | pgcontext_hnsw, bitvec | Experimental | | `<->` | operator | vector, vector | Stable | | `<#>` | operator | vector, vector | Stable | | `<=>` | operator | vector, vector | Stable | | `<+>` | operator | vector, vector | Stable | | `<` | operator | vector, vector | Stable | | `<=` | operator | vector, vector | Stable | | `=` | operator | vector, vector | Stable | | `<>` | operator | vector, vector | Stable | | `>=` | operator | vector, vector | Stable | | `>` | operator | vector, vector | Stable | | `<->` | operator | halfvec, halfvec | Experimental | | `<#>` | operator | halfvec, halfvec | Experimental | | `<=>` | operator | halfvec, halfvec | Experimental | | `<+>` | operator | halfvec, halfvec | Experimental | | `<` | operator | halfvec, halfvec | Experimental | | `<=` | operator | halfvec, halfvec | Experimental | | `=` | operator | halfvec, halfvec | Experimental | | `<>` | operator | halfvec, halfvec | Experimental | | `>=` | operator | halfvec, halfvec | Experimental | | `>` | operator | halfvec, halfvec | Experimental | | `<->` | operator | sparsevec, sparsevec | Experimental | | `<#>` | operator | sparsevec, sparsevec | Experimental | | `<=>` | operator | sparsevec, sparsevec | Experimental | | `<+>` | operator | sparsevec, sparsevec | Experimental | | `<` | operator | sparsevec, sparsevec | Experimental | | `<=` | operator | sparsevec, sparsevec | Experimental | | `=` | operator | sparsevec, sparsevec | Experimental | | `<>` | operator | sparsevec, sparsevec | Experimental | | `>=` | operator | sparsevec, sparsevec | Experimental | | `>` | operator | sparsevec, sparsevec | Experimental | | `<` | operator | bitvec, bitvec | Experimental | | `<=` | operator | bitvec, bitvec | Experimental | | `=` | operator | bitvec, bitvec | Experimental | | `<>` | operator | bitvec, bitvec | Experimental | | `>=` | operator | bitvec, bitvec | Experimental | | `>` | operator | bitvec, bitvec | Experimental | | `<~>` | operator | bitvec, bitvec | Experimental | | `<%>` | operator | bitvec, bitvec | Experimental | | `<~>` | operator | bit, bit | Experimental | | `<%>` | operator | bit, bit | Experimental | | `<~>` | operator | bit varying, bit varying | Experimental | | `<%>` | operator | bit varying, bit varying | Experimental | ## Aggregate Identities - `pgcontext.avg(halfvec) (` - `pgcontext.avg(sparsevec) (` - `pgcontext.avg(vector) (` - `pgcontext.bit_and(bitvec) (` - `pgcontext.bit_or(bitvec) (` - `pgcontext.sum(halfvec) (` - `pgcontext.sum(sparsevec) (` - `pgcontext.sum(vector) (` ## Access Methods And Operator Classes - access method `pgcontext_hnsw` - operator class `pgcontext.bitvec_hnsw_hamming_ops` - operator class `pgcontext.bitvec_ops` - operator class `pgcontext.halfvec_hnsw_ops` - operator class `pgcontext.halfvec_ops` - operator class `pgcontext.sparsevec_hnsw_ops` - operator class `pgcontext.sparsevec_ops` - operator class `pgcontext.vector_hnsw_cosine_ops` - operator class `pgcontext.vector_hnsw_ip_ops` - operator class `pgcontext.vector_hnsw_l1_ops` - operator class `pgcontext.vector_hnsw_ops` - operator class `pgcontext.vector_ops` ## `pgcontext_hnsw` Index Reloptions | Option | Accepted shape | Lifecycle | |---|---|---| | `quantization` | `none`, `scalar`, `sq8`, or `pq` | Experimental until quantized serving is complete | | `scalar_min` | finite lower bound | Experimental | | `scalar_max` | finite upper bound greater than `scalar_min` | Experimental | | `scalar_levels` | integer from 2 through 256 | Experimental | | `pq_subvector_dimensions` | positive divisor of vector dimensions | Experimental | | `pq_codebooks` | validated JSON codebook array | Experimental | ## HNSW GUCs | Setting | Default | Lifecycle | |---|---:|---| | `pgcontext.hnsw_m` | `16` | Experimental HNSW serving policy | | `pgcontext.hnsw_ef_construction` | `64` | Experimental HNSW build policy | | `pgcontext.hnsw_ef_search` | `32` | Experimental HNSW search policy | | `pgcontext.hnsw_candidate_budget` | `32` | Experimental filtered/iterative policy | | `pgcontext.hnsw_iterative_expansion_limit` | `10000` | Experimental bounded expansion policy | | `pgcontext.hnsw_recall_threshold` | `0.95` | Experimental recall-health policy |