# Installed SQL Object And Option Inventory Generated by `scripts/generate-sql-object-inventory.sh` from `sql/pgcontext--0.2.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: `6ac8ce941ba8260ebc0673643b3e36090cbd7a9e38829b74ff3cb628f1c5b981` 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 | 0 | | Functions | 272 | | Tables | 16 | | Views | 12 | | Triggers | 4 | | Casts | 23 | | Operators | 42 | | Operator classes | 18 | | Aggregates | 8 | | Access methods | 1 | ## Types - `BitVec` - `BuildJobStatus` - `EmbeddingMigrationStatus` - `HalfVec` - `IndexAdvisorRecommendation` - `IndexDiagnosticStatus` - `IndexLifecycleStatus` - `IndexMemoryEstimateStatus` - `OptimizationStatus` - `QueryCohortStatus` - `QueryExplainStatus` - `QueryLatencyBucket` - `QueryLifecycleState` - `RecallCheckStatus` - `SparseVec` - `TelemetryStatus` - `VacuumAdviceStatus` - `Vector` ## Schemas, Tables, Views, And Triggers - table `pgcontext._artifact_reader_pins` - table `pgcontext._artifact_segments` - table `pgcontext._build_deltas` - table `pgcontext._build_jobs` - table `pgcontext._collection_aliases` - table `pgcontext._collection_late_interaction_tokens` - table `pgcontext._collection_late_interaction` - 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._pgvector_ownership_conversions` - table `pgcontext._query_stats` - trigger `pgcontext_build_jobs_no_progress_regression` - trigger `pgcontext_build_jobs_terminal_state` - trigger `pgcontext_capture_build_point_delta` - trigger `pgcontext_cleanup_late_interaction_registration` - view `pgcontext._collection_acl` - view `pgcontext._visible_artifact_segments` - view `pgcontext._visible_build_jobs` - view `pgcontext._visible_collection_late_interaction` - 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` - view `pgcontext._visible_collections` - view `pgcontext._visible_pgvector_ownership_conversions` - view `pgcontext._visible_query_stats` ## Function Names Overload argument and result identities are pinned by the artifact fingerprint and bidirectional `contract_registry` test. - `"_begin_pgvector_ownership_conversion"` - `"_hnsw_candidates"` - `"_hnsw_masked_candidates"` - `"_hnsw_sparse_candidates"` - `"_hnsw_sparse_masked_candidates"` - `"_mmap_hnsw_artifact_candidates"` - `"_sync_pgvector_ownership_columns"` - `"_transition_pgvector_ownership_conversion"` - `"adopt_pgvector"` - `"artifact_segment_diagnostics"` - `"artifact_segment_memory"` - `"artifact_segment_mmap_payload"` - `"artifact_segment_serving_readiness"` - `"artifact_segments"` - `"attach_hnsw_index"` - `"attach_sparse_hnsw_index"` - `"backfill_points"` - `"binary_quantize"` - `"bitvec"` - `"bitvec_and_transition"` - `"bitvec_bits_final"` - `"bitvec_cmp"` - `"bitvec_dims"` - `"bitvec_enforce_typmod"` - `"bitvec_eq"` - `"bitvec_from_bool_array"` - `"bitvec_ge"` - `"bitvec_gt"` - `"bitvec_hamming_distance"` - `"bitvec_in"` - `"bitvec_jaccard_distance"` - `"bitvec_le"` - `"bitvec_lt"` - `"bitvec_ne"` - `"bitvec_or_transition"` - `"bitvec_out"` - `"bitvec_to_bool_array"` - `"bitvec_typmod_in"` - `"bitvec_typmod_out"` - `"build_jobs"` - `"build_mmap_hnsw_artifact"` - `"bulk_delete_points"` - `"bulk_upsert_points"` - `"cleanup_artifact_segments"` - `"clear_payload"` - `"collection_aliases"` - `"collection_info"` - `"collection_limits"` - `"collection_sparse_vectors"` - `"collection_vectors"` - `"compact"` - `"compare_indexes"` - `"configure_collection_limits"` - `"configure_sparse_vector"` - `"configure_vector"` - `"cosine_distance"` - `"count"` - `"create_collection"` - `"create_collection_alias"` - `"create_embedding_migration"` - `"cutover_pgvector_ownership_conversion"` - `"delete_payload"` - `"delete_points"` - `"discover"` - `"drop_collection"` - `"drop_collection_alias"` - `"embedding_migrations"` - `"enable_pgvector_binding"` - `"encode_artifact_segment"` - `"estimate_index_memory"` - `"execute_query"` - `"explain"` - `"explain_late_interaction"` - `"explain_late_interaction_ann"` - `"explain_sparse"` - `"explore"` - `"facet"` - `"finalize_pgvector_ownership_conversion"` - `"grouped_search"` - `"halfvec"` - `"halfvec_avg_final"` - `"halfvec_cmp"` - `"halfvec_cosine_distance"` - `"halfvec_dims"` - `"halfvec_enforce_typmod"` - `"halfvec_eq"` - `"halfvec_from_double_array"` - `"halfvec_from_integer_array"` - `"halfvec_from_real_array"` - `"halfvec_ge"` - `"halfvec_gt"` - `"halfvec_in"` - `"halfvec_inner_product"` - `"halfvec_l1_distance"` - `"halfvec_l2_distance"` - `"halfvec_le"` - `"halfvec_lt"` - `"halfvec_ne"` - `"halfvec_negative_inner_product"` - `"halfvec_out"` - `"halfvec_sum_final"` - `"halfvec_sum_transition"` - `"halfvec_to_real_array"` - `"halfvec_to_vector"` - `"halfvec_typmod_in"` - `"halfvec_typmod_out"` - `"hnsw_build_stats"` - `"hnsw_l2_distance"` - `"hnsw_last_scan_work"` - `"hnsw_serving_stats"` - `"index_advisor"` - `"index_diagnostics"` - `"index_status"` - `"inner_product"` - `"l1_distance"` - `"l2_distance"` - `"migration_report"` - `"model_versions"` - `"negative_inner_product"` - `"optimization_status"` - `"pgvector_ownership_conversions"` - `"product_quantize"` - `"product_reconstruct"` - `"publish_artifact_segment"` - `"publish_artifact_segment_file"` - `"query"` - `"query_cohort_stats"` - `"query_discover"` - `"query_execution_stats"` - `"query_formula"` - `"query_full_text"` - `"query_late_interaction"` - `"query_lookup"` - `"query_nearest"` - `"query_prefetch"` - `"query_recommend"` - `"query_rerank"` - `"query_score_threshold"` - `"query_sparse_nearest"` - `"query_telemetry_queue_stats"` - `"query_weight"` - `"recall_check"` - `"recommend"` - `"record_query_stat"` - `"register_filter_column"` - `"register_jsonb_path"` - `"register_late_interaction"` - `"register_model_version"` - `"register_sparse_vector"` - `"register_vector"` - `"repair_late_interaction"` - `"request_build_cancel"` - `"rerank_late_interaction"` - `"rerank_quantized_candidates"` - `"retire_artifact_segment"` - `"retry_build_job"` - `"rollback_pgvector_ownership_conversion"` - `"run_build_job"` - `"run_pgvector_ownership_conversion"` - `"scalar_quantize"` - `"scalar_reconstruct"` - `"scroll"` - `"search"` - `"search_late_interaction"` - `"search_late_interaction_ann"` - `"search_mmap_hnsw_artifact"` - `"search_sparse"` - `"set_payload"` - `"sparsevec"` - `"sparsevec_avg_final"` - `"sparsevec_cmp"` - `"sparsevec_cosine_distance"` - `"sparsevec_dims"` - `"sparsevec_enforce_typmod"` - `"sparsevec_eq"` - `"sparsevec_from_arrays"` - `"sparsevec_from_real_array"` - `"sparsevec_from_vector"` - `"sparsevec_ge"` - `"sparsevec_gt"` - `"sparsevec_in"` - `"sparsevec_indices"` - `"sparsevec_inner_product"` - `"sparsevec_l1_distance"` - `"sparsevec_l2_distance"` - `"sparsevec_le"` - `"sparsevec_lt"` - `"sparsevec_ne"` - `"sparsevec_negative_inner_product"` - `"sparsevec_out"` - `"sparsevec_sum_final"` - `"sparsevec_sum_transition"` - `"sparsevec_to_real_array"` - `"sparsevec_to_vector"` - `"sparsevec_typmod_in"` - `"sparsevec_typmod_out"` - `"sparsevec_values"` - `"start_build_job"` - `"start_pgvector_ownership_conversion"` - `"telemetry"` - `"update_build_job"` - `"update_embedding_migration"` - `"upsert_points"` - `"vacuum_advice"` - `"validate_artifact_segment"` - `"validate_hnsw_graph_artifact"` - `"vector_avg_final"` - `"vector_cmp"` - `"vector_dims"` - `"vector_enforce_typmod"` - `"vector_eq"` - `"vector_from_double_array"` - `"vector_from_integer_array"` - `"vector_from_real_array"` - `"vector_ge"` - `"vector_gt"` - `"vector_in"` - `"vector_le"` - `"vector_lt"` - `"vector_ne"` - `"vector_out"` - `"vector_sum_final"` - `"vector_sum_transition"` - `"vector_to_real_array"` - `"vector_typmod_in"` - `"vector_typmod_out"` - `pgcontext._begin_late_interaction_registration` - `pgcontext._capture_build_point_delta` - `pgcontext._capture_late_interaction_tokens` - `pgcontext._cleanup_late_interaction_registration` - `pgcontext._cosine_distance_fast` - `pgcontext._enforce_build_job_terminal_state` - `pgcontext._finish_late_interaction_registration` - `pgcontext._l1_distance_fast` - `pgcontext._l2_distance_fast8` - `pgcontext._l2_distance_fast` - `pgcontext._late_interaction_ann_candidate_points` - `pgcontext._mapped_hnsw_sql_drop` - `pgcontext._negative_inner_product_fast` - `pgcontext._prepare_late_interaction_repair` - `pgcontext._refresh_collection_source_table` - `pgcontext._refresh_payload_source_bindings` - `pgcontext._refresh_sparse_vector_source_binding` - `pgcontext._refresh_vector_source_binding` - `pgcontext._reject_build_job_progress_regression` - `pgcontext._store_late_interaction_tokens` - `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 | Stable | | `halfvec_hnsw_ip_ops` | operator class | pgcontext_hnsw, halfvec | Stable | | `halfvec_hnsw_cosine_ops` | operator class | pgcontext_hnsw, halfvec | Stable | | `halfvec_hnsw_l1_ops` | operator class | pgcontext_hnsw, halfvec | Stable | | `sparsevec_hnsw_ops` | operator class | pgcontext_hnsw, sparsevec | Stable | | `sparsevec_hnsw_ip_ops` | operator class | pgcontext_hnsw, sparsevec | Stable | | `sparsevec_hnsw_cosine_ops` | operator class | pgcontext_hnsw, sparsevec | Stable | | `sparsevec_hnsw_l1_ops` | operator class | pgcontext_hnsw, sparsevec | Stable | | `bitvec_hnsw_hamming_ops` | operator class | pgcontext_hnsw, bitvec | Stable | | `bitvec_hnsw_jaccard_ops` | operator class | pgcontext_hnsw, bitvec | 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 | 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_hnsw_jaccard_ops` - operator class `pgcontext.bitvec_ops` - operator class `pgcontext.halfvec_hnsw_cosine_ops` - operator class `pgcontext.halfvec_hnsw_ip_ops` - operator class `pgcontext.halfvec_hnsw_l1_ops` - operator class `pgcontext.halfvec_hnsw_ops` - operator class `pgcontext.halfvec_ops` - operator class `pgcontext.sparsevec_hnsw_cosine_ops` - operator class `pgcontext.sparsevec_hnsw_ip_ops` - operator class `pgcontext.sparsevec_hnsw_l1_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 |