join

package
v0.195.1 Latest Latest
Warning

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

Go to latest
Published: Sep 17, 2023 License: MIT Imports: 20 Imported by: 0

Documentation

Index

Constants

View Source
const EquiJoinKind = "equijoin"
View Source
const Join2Kind = "join.tables"
View Source
const SortMergeJoinKind = "sortmergejoin"

Variables

This section is empty.

Functions

This section is empty.

Types

type ColumnPair

type ColumnPair struct {
	Left, Right string
}

type EquiJoinPredicateRule

type EquiJoinPredicateRule struct{}

func (EquiJoinPredicateRule) Name

func (EquiJoinPredicateRule) Pattern

func (EquiJoinPredicateRule) Rewrite

type EquiJoinProcedureSpec

type EquiJoinProcedureSpec struct {
	On     []ColumnPair
	As     interpreter.ResolvedFunction
	Left   *flux.TableObject
	Right  *flux.TableObject
	Method string
}

func (*EquiJoinProcedureSpec) Copy

func (*EquiJoinProcedureSpec) Cost

func (p *EquiJoinProcedureSpec) Cost(inStats []plan.Statistics) (cost plan.Cost, outStats plan.Statistics)

func (*EquiJoinProcedureSpec) Kind

type JoinFn

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

JoinFn handles the logic of calling the function in the `as` parameter of join.tables()

func NewJoinFn

func NewJoinFn(fn interpreter.ResolvedFunction) *JoinFn

func (*JoinFn) Eval

func (f *JoinFn) Eval(ctx context.Context, p *joinProduct, method string, mem memory.Allocator) ([]table.Chunk, bool, error)

Produces the output of the joinProduct, if there is any to be produced. In some cases, the specified join method might require that no output be produced if one side is empty. If the returned bool == true, that means this function returned a non-empty table chunk containing the joined data.

func (*JoinFn) Prepare

func (f *JoinFn) Prepare(ctx context.Context, lcols, rcols []flux.ColMeta) error

func (*JoinFn) ReturnType

func (f *JoinFn) ReturnType() semantic.MonoType

func (*JoinFn) Type

func (f *JoinFn) Type() semantic.MonoType

type JoinOpSpec

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

func (*JoinOpSpec) Kind

func (o *JoinOpSpec) Kind() flux.OperationKind

type JoinProcedureSpec

type JoinProcedureSpec struct {
	On     interpreter.ResolvedFunction
	As     interpreter.ResolvedFunction
	Left   *flux.TableObject
	Right  *flux.TableObject
	Method string
}

func (*JoinProcedureSpec) Copy

func (*JoinProcedureSpec) Kind

type MergeJoinTransformation

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

MergeJoinTransformation performs a sort-merge-join on two table streams. It assumes that input tables are sorted by the columns in the `on` parameter, and that we're performing an equijoin. The planner should ensure that both of these assumptions are true.

func (*MergeJoinTransformation) Dataset

func (*MergeJoinTransformation) ProcessMessage

func (t *MergeJoinTransformation) ProcessMessage(m execute.Message) error

type SortMergeJoinPredicateRule

type SortMergeJoinPredicateRule struct{}

func (SortMergeJoinPredicateRule) Name

func (SortMergeJoinPredicateRule) Pattern

func (SortMergeJoinPredicateRule) Rewrite

type SortMergeJoinProcedureSpec

type SortMergeJoinProcedureSpec EquiJoinProcedureSpec

func (*SortMergeJoinProcedureSpec) Copy

func (*SortMergeJoinProcedureSpec) Cost

func (p *SortMergeJoinProcedureSpec) Cost(inStats []plan.Statistics) (cost plan.Cost, outStats plan.Statistics)

func (*SortMergeJoinProcedureSpec) Kind

func (*SortMergeJoinProcedureSpec) RequiredAttributes

func (p *SortMergeJoinProcedureSpec) RequiredAttributes() []plan.PhysicalAttributes

RequiredAttributes says that merge join must have its left input sorted by the left side join keys, and the right input must be sorted by the right side join keys.

Jump to

Keyboard shortcuts

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