Documentation ¶
Overview ¶
Package plantest contains utilities for testing each query planning phase
Index ¶
- Variables
- func CompareLogicalPlanNodes(p, q plan.Node) error
- func CompareLogicalPlans(p, q *plan.Spec) error
- func ComparePhysicalPlanNodes(p, q plan.Node) error
- func ComparePlans(p, q *plan.Spec, f func(p, q plan.Node) error) error
- func ComparePlansShallow(p, q *plan.Spec) error
- func CreateLogicalMockNode(id string) *plan.LogicalNode
- func CreatePhysicalMockNode(id string) *plan.PhysicalPlanNode
- func CreatePhysicalNode(id plan.NodeID, spec plan.PhysicalProcedureSpec) *plan.PhysicalPlanNode
- func CreatePlanSpec(ps *PlanSpec) *plan.Spec
- func LogicalRuleTestHelper(t *testing.T, tc *RuleTestCase, options ...cmp.Option)
- func PhysicalRuleTestHelper(t *testing.T, tc *RuleTestCase, options ...cmp.Option)
- type CreateCycleRule
- type FunctionRule
- type MockProcedureSpec
- type MultiRootRule
- type PlanSpec
- type RuleTestCase
- type SimpleRule
- type SmashPlanRule
Constants ¶
This section is empty.
Variables ¶
var CmpOptions = append( semantictest.CmpOptions, cmp.AllowUnexported(operation.Spec{}), cmp.AllowUnexported(universe.JoinOpSpec{}), cmpopts.IgnoreUnexported(operation.Spec{}), cmpopts.IgnoreUnexported(universe.JoinOpSpec{}), cmp.AllowUnexported(kafka.ToKafkaProcedureSpec{}), cmpopts.IgnoreUnexported(kafka.ToKafkaProcedureSpec{}), valuestest.ScopeTransformer, )
CmpOptions are the options needed to compare plan.ProcedureSpecs inside plan.Spec.
Functions ¶
func CompareLogicalPlanNodes ¶
CompareLogicalPlanNodes is a comparator function for LogicalPlanNodes
func CompareLogicalPlans ¶ added in v0.26.0
CompareLogicalPlans compares two logical plans.
func ComparePhysicalPlanNodes ¶
ComparePhysicalPlanNodes is a comparator function for PhysicalPlanNodes
func ComparePlans ¶
ComparePlans compares two query plans using an arbitrary comparator function f
func ComparePlansShallow ¶ added in v0.26.0
ComparePlansShallow Compares the two specs, but only compares the metadata and the types of each node. Individual fields of procedure specs are not compared.
func CreateLogicalMockNode ¶
func CreateLogicalMockNode(id string) *plan.LogicalNode
func CreatePhysicalMockNode ¶
func CreatePhysicalMockNode(id string) *plan.PhysicalPlanNode
func CreatePhysicalNode ¶ added in v0.158.0
func CreatePhysicalNode(id plan.NodeID, spec plan.PhysicalProcedureSpec) *plan.PhysicalPlanNode
func CreatePlanSpec ¶
func LogicalRuleTestHelper ¶ added in v0.19.0
func LogicalRuleTestHelper(t *testing.T, tc *RuleTestCase, options ...cmp.Option)
LogicalRuleTestHelper will run a rule test case.
func PhysicalRuleTestHelper ¶ added in v0.19.0
func PhysicalRuleTestHelper(t *testing.T, tc *RuleTestCase, options ...cmp.Option)
PhysicalRuleTestHelper will run a rule test case.
Types ¶
type CreateCycleRule ¶ added in v0.10.0
type CreateCycleRule struct { Node plan.Node Kind plan.ProcedureKind }
CreateCycleRule creates a cycle between the given `Node` and its predecessor. It creates exactly one cycle. After the rule is triggered once, it won't have any effect later. This rule breaks the integrity of the plan. If `Kind` is specified, it takes precedence over `Node`, and the rule will use it to match.
func (CreateCycleRule) Name ¶ added in v0.10.0
func (CreateCycleRule) Name() string
func (CreateCycleRule) Pattern ¶ added in v0.10.0
func (ccr CreateCycleRule) Pattern() plan.Pattern
type FunctionRule ¶ added in v0.67.0
type FunctionRule struct {
RewriteFn func(ctx context.Context, node plan.Node) (plan.Node, bool, error)
}
FunctionRule is a simple rule intended to invoke a Rewrite function.
func (*FunctionRule) Name ¶ added in v0.67.0
func (fr *FunctionRule) Name() string
func (*FunctionRule) Pattern ¶ added in v0.67.0
func (fr *FunctionRule) Pattern() plan.Pattern
type MockProcedureSpec ¶
type MockProcedureSpec = spec.MockProcedureSpec
type MultiRootRule ¶ added in v0.67.0
MultiRootRule matches a set of plan nodes at the root and stores the NodeIDs of nodes it has visited in SeenNodes.
func (*MultiRootRule) Name ¶ added in v0.67.0
func (sr *MultiRootRule) Name() string
func (*MultiRootRule) Pattern ¶ added in v0.67.0
func (sr *MultiRootRule) Pattern() plan.Pattern
type RuleTestCase ¶ added in v0.8.0
type RuleTestCase struct { Name string Context context.Context Rules []plan.Rule Before *PlanSpec After *PlanSpec NoChange bool SkipValidation bool ValidateError error }
RuleTestCase allows for concise creation of test cases that exercise rules
type SimpleRule ¶
SimpleRule is a simple rule whose pattern matches any plan node and just stores the NodeIDs of nodes it has visited in SeenNodes.
func (*SimpleRule) Name ¶
func (sr *SimpleRule) Name() string
func (*SimpleRule) Pattern ¶
func (sr *SimpleRule) Pattern() plan.Pattern
type SmashPlanRule ¶ added in v0.10.0
SmashPlanRule adds an `Intruder` as predecessor of the given `Node` without marking it as successor of it. It breaks the integrity of the plan. If `Kind` is specified, it takes precedence over `Node`, and the rule will use it to match.
func (SmashPlanRule) Name ¶ added in v0.10.0
func (SmashPlanRule) Name() string
func (SmashPlanRule) Pattern ¶ added in v0.10.0
func (spp SmashPlanRule) Pattern() plan.Pattern