join

package
v0.0.0-...-b19370d Latest Latest
Warning

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

Go to latest
Published: Jan 3, 2025 License: MIT Imports: 10 Imported by: 0

README

"On the correct and complete enumeration of the core search space" by Moerkotte, Fender, and Eich

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ConflictRule

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

func NewConflictRule

func NewConflictRule(antecedent, consequent uint) ConflictRule

func (ConflictRule) Applies

func (r ConflictRule) Applies(s1, s2 uint) bool

type ConflictRuleSet

type ConflictRuleSet interface {
	Applicable(op JoinDescriptor, s1, s2 uint) bool
}

func NewConflictRuleSet

func NewConflictRuleSet(ds DescriptorSet) ConflictRuleSet

type DescriptorSet

type DescriptorSet interface {
	NumRelations() int
	Relation(mask uint) plan.LogicalNode
	ForEachDescriptor(f func(JoinDescriptor))
}

func NewDescriptorSet

func NewDescriptorSet(node JoinNode) DescriptorSet

type DescriptorSetBuilder

type DescriptorSetBuilder interface {
	AddRelation(relation plan.LogicalNode) uint
	AddNode(node JoinDescriptor) uint
	MaskReferencedTables(condition impls.Expression) uint
}

type JoinDescriptor

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

func (JoinDescriptor) Applicable

func (n JoinDescriptor) Applicable(s1, s2 uint) bool

func (JoinDescriptor) IsAssociative

func (op1 JoinDescriptor) IsAssociative(op2 JoinDescriptor) bool

func (JoinDescriptor) IsCommutative

func (op JoinDescriptor) IsCommutative() bool

func (JoinDescriptor) IsLeftAsscom

func (op1 JoinDescriptor) IsLeftAsscom(op2 JoinDescriptor) bool

func (JoinDescriptor) IsRightAsscom

func (op1 JoinDescriptor) IsRightAsscom(op2 JoinDescriptor) bool

type JoinNode

type JoinNode interface {
	fmt.Stringer
	ConvertRightJoinsToLeftJoins() JoinNode
	BuildDescriptor(b DescriptorSetBuilder) uint
	plan.LogicalNode
}

func EnumerateValidJoinTrees

func EnumerateValidJoinTrees(node JoinNode) []JoinNode

func NewJoinInternalNode

func NewJoinInternalNode(left, right JoinNode, operator JoinOperator) JoinNode

func NewJoinLeafNode

func NewJoinLeafNode(relation plan.LogicalNode) JoinNode

type JoinOperator

type JoinOperator struct {
	JoinType  join.JoinType
	Condition impls.Expression
}

type ProposedJoin

type ProposedJoin interface {
	Reconstruct(ds DescriptorSet, vaild map[uint][]ProposedJoin) []JoinNode
}

Jump to

Keyboard shortcuts

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