dedupjoin

package
v0.0.0-debug-20260702 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 2, 2026 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

View Source
const (
	Build = iota
	Probe
	Finalize
	End
)

Variables

This section is empty.

Functions

This section is empty.

Types

type DedupJoin

type DedupJoin struct {
	Result     []colexec.ResultPos
	LeftTypes  []types.Type
	RightTypes []types.Type
	Conditions [][]*plan.Expr

	IsShuffle          bool
	ShuffleIdx         int32
	RuntimeFilterSpecs []*plan.RuntimeFilterSpec
	JoinMapTag         int32

	Channel  chan *WorkerJoinMsg
	NumCPU   uint64
	IsMerger bool

	OnDuplicateAction         plan.Node_OnDuplicateAction
	DedupBuildKeepLast        bool
	DedupColName              string
	DedupColTypes             []plan.Type
	DelColIdx                 int32
	DedupDeleteMarkerColIdx   int32
	DedupDeleteKeepColIdxList []int32
	UpdateColIdxList          []int32
	UpdateColExprList         []*plan.Expr

	// OldColCapturePlaceholderIdxList / OldColCaptureProbeIdxList are parallel
	// arrays. For each i, when probe hits a build bucket the probe-side column
	// at OldColCaptureProbeIdxList[i] is captured and, in finalize(), emitted
	// into every Result entry whose (Rel=1, Pos) equals
	// OldColCapturePlaceholderIdxList[i]. Used by the REPLACE INTO merged
	// main-table scan path; empty for regular INSERT/UPDATE.
	OldColCapturePlaceholderIdxList []int32
	OldColCaptureProbeIdxList       []int32

	vm.OperatorBase
	// contains filtered or unexported fields
}

func NewArgument

func NewArgument() *DedupJoin

func (*DedupJoin) Call

func (dedupJoin *DedupJoin) Call(proc *process.Process) (vm.CallResult, error)

func (*DedupJoin) ExecProjection

func (dedupJoin *DedupJoin) ExecProjection(proc *process.Process, input *batch.Batch) (*batch.Batch, error)

func (*DedupJoin) Free

func (dedupJoin *DedupJoin) Free(proc *process.Process, pipelineFailed bool, err error)

func (*DedupJoin) GetOperatorBase

func (dedupJoin *DedupJoin) GetOperatorBase() *vm.OperatorBase

func (*DedupJoin) OpType

func (dedupJoin *DedupJoin) OpType() vm.OpType

func (*DedupJoin) Prepare

func (dedupJoin *DedupJoin) Prepare(proc *process.Process) (err error)

func (*DedupJoin) Release

func (dedupJoin *DedupJoin) Release()

func (*DedupJoin) Reset

func (dedupJoin *DedupJoin) Reset(proc *process.Process, pipelineFailed bool, err error)

func (*DedupJoin) String

func (dedupJoin *DedupJoin) String(buf *bytes.Buffer)

func (DedupJoin) TypeName

func (dedupJoin DedupJoin) TypeName() string

type WorkerJoinMsg

type WorkerJoinMsg struct {
	// contains filtered or unexported fields
}

WorkerJoinMsg carries per-worker state from non-merger workers to the merger worker at finalize time. Regular DEDUP JOIN only populates matched; the REPLACE INTO merged main-table scan path (OldColCapture) additionally populates captured and capturedVecs.

Ownership: once a non-merger worker sends this message on the channel, it must relinquish its references to captured / capturedVecs so that the merger is the sole owner and is responsible for Free'ing capturedVecs.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL