Skip to content

Commit

Permalink
wip: Add implementation of explaining both limit nodes.
Browse files Browse the repository at this point in the history
  • Loading branch information
shahzadlone committed Jul 9, 2022
1 parent de97dc2 commit 7d4a224
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 6 deletions.
16 changes: 10 additions & 6 deletions query/graphql/planner/explain.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,18 +21,20 @@ type explainablePlanNode interface {

// Compile time check for all planNodes that should be explainable (satisfy explainablePlanNode).
var (
_ explainablePlanNode = (*createNode)(nil)
_ explainablePlanNode = (*deleteNode)(nil)
_ explainablePlanNode = (*scanNode)(nil)
_ explainablePlanNode = (*selectNode)(nil)
_ explainablePlanNode = (*selectTopNode)(nil)
_ explainablePlanNode = (*typeIndexJoin)(nil)
_ explainablePlanNode = (*averageNode)(nil)
_ explainablePlanNode = (*commitSelectNode)(nil)
_ explainablePlanNode = (*countNode)(nil)
_ explainablePlanNode = (*createNode)(nil)
_ explainablePlanNode = (*dagScanNode)(nil)
_ explainablePlanNode = (*deleteNode)(nil)
_ explainablePlanNode = (*hardLimitNode)(nil)
_ explainablePlanNode = (*orderNode)(nil)
_ explainablePlanNode = (*renderLimitNode)(nil)
_ explainablePlanNode = (*scanNode)(nil)
_ explainablePlanNode = (*selectNode)(nil)
_ explainablePlanNode = (*selectTopNode)(nil)
_ explainablePlanNode = (*sumNode)(nil)
_ explainablePlanNode = (*typeIndexJoin)(nil)
_ explainablePlanNode = (*updateNode)(nil)
)

Expand All @@ -44,6 +46,8 @@ const (
fieldNameLabel = "fieldName"
filterLabel = "filter"
idsLabel = "ids"
limitLabel = "limit"
offsetLabel = "offset"
sourcesLabel = "sources"
spansLabel = "spans"
)
Expand Down
14 changes: 14 additions & 0 deletions query/graphql/planner/limit.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,13 @@ func (n *hardLimitNode) Next() (bool, error) {

func (n *hardLimitNode) Source() planNode { return n.plan }

func (n *hardLimitNode) Explain() (map[string]interface{}, error) {
return map[string]interface{}{
limitLabel: n.limit,
offsetLabel: n.offset,
}, nil
}

// limit the results, flagging any records outside the bounds of limit/offset with
// with a 'hidden' flag blocking rendering. Used if consumers of the results require
// the full dataset.
Expand Down Expand Up @@ -139,3 +146,10 @@ func (n *renderLimitNode) Next() (bool, error) {
}

func (n *renderLimitNode) Source() planNode { return n.plan }

func (n *renderLimitNode) Explain() (map[string]interface{}, error) {
return map[string]interface{}{
limitLabel: n.limit,
offsetLabel: n.offset,
}, nil
}

0 comments on commit 7d4a224

Please sign in to comment.