# 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 |
