Documentation
¶
Overview ¶
Package plan implements the HNSW plugin's plan-layer hooks.
Phase 6 split: bodies for ANN rewrite (CanApply, ApplyForSort) live in pkg/sql/plan/apply_indices_hnsw.go as methods on *QueryBuilder. Plugin Hooks are thin one-line redirects via the planplugin.PlanBuilder facade. Hidden-table schema (BuildSecondaryIndexDefs in schema.go) and the hnsw_create / hnsw_search table-function builders (tablefunc.go) stay here.
Index ¶
- Constants
- Variables
- type Hooks
- func (Hooks) ApplyForSort(pb planplugin.PlanBuilder, vctx *planplugin.VectorSortContext, ...) (int32, bool, error)
- func (Hooks) BuildFullTextIndexDefs(_ planplugin.CompilerContext, _ *tree.FullTextIndex, _ map[string]*plan.ColDef, ...) ([]*plan.IndexDef, []*plan.TableDef, error)
- func (Hooks) BuildSecondaryIndexDefs(ctx planplugin.CompilerContext, indexInfo *tree.Index, ...) ([]*plan.IndexDef, []*plan.TableDef, error)
- func (Hooks) CanApply(pb planplugin.PlanBuilder, vctx *planplugin.VectorSortContext, ...) (bool, error)
Constants ¶
const ( HNSWCreateFuncName = "hnsw_create" HNSWSearchFuncName = "hnsw_search" )
Variables ¶
Functions ¶
This section is empty.
Types ¶
type Hooks ¶
type Hooks struct{}
func (Hooks) ApplyForSort ¶
func (Hooks) ApplyForSort(pb planplugin.PlanBuilder, vctx *planplugin.VectorSortContext, mti *planplugin.MultiTableIndexRef, nodeID int32, opts planplugin.ApplyForSortOpts) (int32, bool, error)
ApplyForSort redirects to (*plan.QueryBuilder).ApplyIndicesForSortUsingHnsw.
func (Hooks) BuildFullTextIndexDefs ¶
func (Hooks) BuildFullTextIndexDefs( _ planplugin.CompilerContext, _ *tree.FullTextIndex, _ map[string]*plan.ColDef, _ []*plan.IndexDef, _ string, ) ([]*plan.IndexDef, []*plan.TableDef, error)
BuildFullTextIndexDefs is unreachable for hnsw — the plan-build dispatch only routes *tree.FullTextIndex parse trees to the fulltext plugin. Returning an error here makes any misrouting visible.
func (Hooks) BuildSecondaryIndexDefs ¶
func (Hooks) BuildSecondaryIndexDefs( ctx planplugin.CompilerContext, indexInfo *tree.Index, colMap map[string]*plan.ColDef, existedIndexes []*plan.IndexDef, pkeyName string, ) ([]*plan.IndexDef, []*plan.TableDef, error)
BuildSecondaryIndexDefs constructs the IndexDef + TableDef pair for the two hidden tables HNSW requires (metadata + storage). Lifted from pkg/sql/plan/build_ddl.go:2810 (buildHnswSecondaryIndexDef, now deleted).
Differs from CAGRA/IVF-PQ:
- HNSW supports both T_array_float32 and T_array_float64 (CAGRA/IVF-PQ are float32 only).
- No INCLUDE columns (no validateIncludeColumns call).
- The composite-PK column references Cols[3] (Tag), matching the pre-lift behaviour at build_ddl.go:3034.
func (Hooks) CanApply ¶
func (Hooks) CanApply(pb planplugin.PlanBuilder, vctx *planplugin.VectorSortContext, mti *planplugin.MultiTableIndexRef) (bool, error)
CanApply redirects to (*plan.QueryBuilder).CanApplyHnsw.