explain

package
v1.2.3-hotfix-20241101 Latest Latest
Warning

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

Go to latest
Published: Oct 31, 2024 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

View Source
const (
	Label_Table_Name                = "Full table name"
	Label_Table_Columns             = "Columns"
	Label_Total_Columns             = "Total columns"
	Label_Scan_Columns              = "Scan columns"
	Label_List_Expression           = "List of expressions"
	Label_Grouping_Keys             = "Grouping keys"
	Label_Agg_Functions             = "Aggregate functions"
	Label_Filter_Conditions         = "Filter conditions"
	Label_Block_Filter_Conditions   = "Block Filter conditions"
	Label_Join_Type                 = "Join type"
	Label_Join_Conditions           = "Join conditions"
	Label_Left_NodeId               = "Left node id"
	Label_Right_NodeId              = "Right node id"
	Label_Sort_Keys                 = "Sort keys"
	Label_List_Values               = "List of values"
	Label_Union_Expressions         = "Union expressions"
	Label_Union_All_Expressions     = "Union all expressions"
	Label_Intersect_Expressions     = "Intersect expressions"
	Label_Intersect_All_Expressions = "Intersect all expressions"
	Label_Minus_Expressions         = "Minus expressions"
	Label_Pre_Insert                = "Pre insert"
	Label_Pre_InsertUk              = "Pre insert uk"
	Label_Pre_InsertSk              = "Pre insert sk"
	Label_Pre_Delete                = "Pre delete"
	Label_Sink                      = "Sink"
	Label_Sink_Scan                 = "Sink scan"
	Label_Recursive_SCAN            = "Recursive scan"
	Label_Recursive_CTE             = "CTE scan"
	Label_Lock_Op                   = "Lock op"
	Label_Row_Number                = "Number of rows"
	Label_Offset                    = "Offset"

	Label_Time_Window       = "Time window"
	Label_Partition         = "Partition"
	Label_Fill              = "Fill"
	Label_Boardcast         = "Boardcast"
	Label_Split             = "Split"
	Label_Gather            = "Gather"
	Label_Assert            = "Assert"
	Label_On_Duplicate_Key  = "On duplicate key"
	Label_Fuzzy_Filter      = "Fuzzy filter"
	Label_External_Function = "External Function"
	Label_Distinct          = "Distinct"
	Label_Sample            = "Sample"
	Label_Window            = "Window"
	Label_Minus_All         = "Minus All"
	Label_Unique            = "Unique"
	Label_Replace           = "Replace"
	Label_Unknown           = "Unknown"
	Label_Meterial          = "Meterial"
)
View Source
const (
	Statistic_Unit_ns    = "ns"
	Statistic_Unit_count = "count"
	Statistic_Unit_byte  = "byte"
)
View Source
const DiskIO = "Disk IO"
View Source
const ExternalScan = "External Scan"
View Source
const GB = MB * 1024
View Source
const InputRows = "Input Rows"
View Source
const InputSize = "Input Size"
View Source
const InsertTime = "Insert Time"
View Source
const MB = 1024 * 1024
View Source
const MILLION = 1000000
View Source
const MemorySize = "Memory Size"
View Source
const Network = "Network"
View Source
const OutputRows = "Output Rows"
View Source
const OutputSize = "Output Size"
View Source
const S3IOByte = "S3 IO Byte"
View Source
const S3IOInputCount = "S3 IO Input Count"
View Source
const S3IOOutputCount = "S3 IO Output Count"
View Source
const ScanTime = "Scan Time"
View Source
const TableScan = "Table Scan"
View Source
const TimeConsumed = "Time Consumed"
View Source
const WaitTime = "Wait Time"

Variables

View Source
var MarshalPlanOptions = ExplainOptions{
	Verbose: true,
	Analyze: true,
	Format:  EXPLAIN_FORMAT_TEXT,
}

The global variable is used to serialize plan and avoid objects being repeatedly created

Functions

func DebugPlan added in v1.0.0

func DebugPlan(pl *plan.Plan) string

func GetDeleteTableLabelValue added in v0.8.0

func GetDeleteTableLabelValue(deleteCtx *plan.DeleteCtx) []string

func GetExprsLabelValue added in v0.6.0

func GetExprsLabelValue(ctx context.Context, exprList []*plan.Expr, options *ExplainOptions) ([]string, error)

func GetInputRowsAndInputSize added in v1.0.0

func GetInputRowsAndInputSize(ctx context.Context, node *plan.Node, options *ExplainOptions) (rows int64, size int64)

GetInputRowsAndInputSize return plan.Node AnalyzeInfo InputRows and InputSize. migrate ExplainData.StatisticsRead to here

func GetOrderByLabelValue added in v0.8.0

func GetOrderByLabelValue(ctx context.Context, orderbyList []*plan.OrderBySpec, options *ExplainOptions) ([]string, error)

func GetStatistic4Trace added in v1.0.0

func GetStatistic4Trace(ctx context.Context, node *plan.Node, options *ExplainOptions) (s statistic.StatsArray)

func GetTableColsLableValue added in v0.6.0

func GetTableColsLableValue(ctx context.Context, cols []*plan.ColDef, options *ExplainOptions) []string

func PreOrderPlan added in v0.6.0

func PreOrderPlan(ctx context.Context, node *plan.Node, Nodes []*plan.Node, graphData *GraphData, options *ExplainOptions) error

Types

type AnalyzeInfoDescribeImpl added in v0.6.0

type AnalyzeInfoDescribeImpl struct {
	AnalyzeInfo *plan.AnalyzeInfo
}

func NewAnalyzeInfoDescribeImpl added in v0.6.0

func NewAnalyzeInfoDescribeImpl(analyze *plan.AnalyzeInfo) *AnalyzeInfoDescribeImpl

func (AnalyzeInfoDescribeImpl) GetDescription added in v0.6.0

func (a AnalyzeInfoDescribeImpl) GetDescription(ctx context.Context, options *ExplainOptions, buf *bytes.Buffer) error

type CostDescribeImpl

type CostDescribeImpl struct {
	Stats *plan.Stats
}

func (*CostDescribeImpl) GetDescription

func (c *CostDescribeImpl) GetDescription(ctx context.Context, options *ExplainOptions, buf *bytes.Buffer) error

type Edge added in v0.6.0

type Edge struct {
	Id     string `json:"id"`
	Src    string `json:"src"`
	Dst    string `json:"dst"`
	Output int64  `json:"output"`
	Unit   string `json:"unit"`
}

type ExplainData added in v0.6.0

type ExplainData struct {
	Steps        []Step `json:"steps"`
	Code         uint16 `json:"code"`
	Message      string `json:"message"`
	Uuid         string `json:"uuid"`
	NewPlanStats statistic.StatsInfo
}

func BuildJsonPlan added in v0.8.0

func BuildJsonPlan(ctx context.Context, uuid uuid.UUID, options *ExplainOptions, query *plan.Query) *ExplainData

func NewExplainData added in v0.6.0

func NewExplainData(uuid uuid.UUID) *ExplainData

func NewExplainDataFail added in v0.6.0

func NewExplainDataFail(uuid uuid.UUID, code uint16, msg string) *ExplainData

func (*ExplainData) StatisticsRead deprecated added in v0.6.0

func (d *ExplainData) StatisticsRead() (rows int64, size int64)

StatisticsRead statistics read rows, size in ExplainData

Deprecated: please use explain.GetInputRowsAndInputSize instead.

type ExplainDataBuffer

type ExplainDataBuffer struct {
	Start       int
	End         int
	CurrentLine int
	NodeSize    int
	Lines       []string
}

func NewExplainDataBuffer

func NewExplainDataBuffer() *ExplainDataBuffer

func (*ExplainDataBuffer) AppendCurrentLine

func (buf *ExplainDataBuffer) AppendCurrentLine(temp string)

func (*ExplainDataBuffer) PushNewLine

func (buf *ExplainDataBuffer) PushNewLine(line string, isNewNode bool, level int)

func (*ExplainDataBuffer) PushPlanTitle added in v0.8.0

func (buf *ExplainDataBuffer) PushPlanTitle(title string)

func (*ExplainDataBuffer) ToString added in v1.0.0

func (buf *ExplainDataBuffer) ToString() string

type ExplainFormat

type ExplainFormat int32
const (
	EXPLAIN_FORMAT_TEXT ExplainFormat = 0
	EXPLAIN_FORMAT_XML  ExplainFormat = 1
	EXPLAIN_FORMAT_JSON ExplainFormat = 2
	EXPLAIN_FORMAT_DOT  ExplainFormat = 3
)

type ExplainOptions

type ExplainOptions struct {
	Verbose  bool
	Analyze  bool
	Format   ExplainFormat
	NodeType plan.Node_NodeType
}

func NewExplainDefaultOptions

func NewExplainDefaultOptions() *ExplainOptions

type ExplainQuery

type ExplainQuery interface {
	ExplainPlan(ctx context.Context, buffer *ExplainDataBuffer, options *ExplainOptions) error
}

type ExplainQueryImpl

type ExplainQueryImpl struct {
	QueryPlan *plan.Query
}

func NewExplainQueryImpl

func NewExplainQueryImpl(query *plan.Query) *ExplainQueryImpl

func (*ExplainQueryImpl) ExplainPlan

func (e *ExplainQueryImpl) ExplainPlan(ctx context.Context, buffer *ExplainDataBuffer, options *ExplainOptions) error

type ExprListDescribeImpl

type ExprListDescribeImpl struct {
	ExprList []*plan.Expr // ProjectList,OnList,FilterList,GroupBy,GroupingSet and so on
}

func NewExprListDescribeImpl

func NewExprListDescribeImpl(ExprList []*plan.Expr) *ExprListDescribeImpl

func (*ExprListDescribeImpl) GetDescription

func (e *ExprListDescribeImpl) GetDescription(ctx context.Context, options *ExplainOptions, buf *bytes.Buffer) error

type FormatSettings

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

type Global added in v0.6.0

type Global struct {
	Statistics Statistics `json:"statistics"`
	TotalStats TotalStats `json:"totalStats"`
}

func NewGlobal added in v0.6.0

func NewGlobal() *Global

type GraphData added in v0.6.0

type GraphData struct {
	Nodes  []Node  `json:"nodes"`
	Edges  []Edge  `json:"edges"`
	Labels []Label `json:"labels"`
	Global Global  `json:"global"`
}

func NewGraphData added in v0.6.0

func NewGraphData(nodeSize int) *GraphData

func (*GraphData) StatisticsGlobalResource added in v0.7.0

func (graphData *GraphData) StatisticsGlobalResource(ctx context.Context) error

Statistics of global resource usage, adding resources of all nodes

type Label added in v0.6.0

type Label struct {
	Name  string      `json:"name"`
	Value interface{} `json:"value"`
}

func NewLabel added in v0.6.0

func NewLabel(name string, value interface{}) *Label

type MarshalNode added in v0.6.0

type MarshalNode interface {
	GetNodeName(ctx context.Context) (string, error)
	GetNodeTitle(ctx context.Context, options *ExplainOptions) (string, error)
	GetNodeLabels(ctx context.Context, options *ExplainOptions) ([]Label, error)
	GetStatistics(ctx context.Context, options *ExplainOptions) Statistics
	GetStats() Stats
	GetTotalStats() TotalStats
}

type MarshalNodeImpl added in v0.6.0

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

func NewMarshalNodeImpl added in v0.6.0

func NewMarshalNodeImpl(node *plan.Node) *MarshalNodeImpl

func (MarshalNodeImpl) GetNodeLabels added in v0.6.0

func (m MarshalNodeImpl) GetNodeLabels(ctx context.Context, options *ExplainOptions) ([]Label, error)

func (MarshalNodeImpl) GetNodeName added in v0.6.0

func (m MarshalNodeImpl) GetNodeName(ctx context.Context) (string, error)

func (MarshalNodeImpl) GetNodeTitle added in v0.6.0

func (m MarshalNodeImpl) GetNodeTitle(ctx context.Context, options *ExplainOptions) (string, error)

func (MarshalNodeImpl) GetStatistics added in v0.6.0

func (m MarshalNodeImpl) GetStatistics(ctx context.Context, options *ExplainOptions) Statistics

func (MarshalNodeImpl) GetStats added in v0.7.0

func (m MarshalNodeImpl) GetStats() Stats

func (MarshalNodeImpl) GetTotalStats added in v0.6.0

func (m MarshalNodeImpl) GetTotalStats() TotalStats

type Node added in v0.6.0

type Node struct {
	NodeId     string     `json:"id"`
	Name       string     `json:"name"`
	Title      string     `json:"title"`
	Labels     []Label    `json:"labels"`
	Statistics Statistics `json:"statistics"`
	Stats      Stats      `json:"stats"`
	TotalStats TotalStats `json:"totalStats"`
}

func ConvertNode added in v0.6.0

func ConvertNode(ctx context.Context, node *plan.Node, options *ExplainOptions) (*Node, error)

type NodeDescribe

type NodeDescribe interface {
	GetNodeBasicInfo(ctx context.Context, options *ExplainOptions) (string, error)
	GetExtraInfo(ctx context.Context, options *ExplainOptions) ([]string, error)
	GetProjectListInfo(ctx context.Context, options *ExplainOptions) (string, error)
	GetJoinTypeInfo(ctx context.Context, options *ExplainOptions) (string, error)
	GetJoinConditionInfo(ctx context.Context, options *ExplainOptions) (string, error)
	GetFilterConditionInfo(ctx context.Context, options *ExplainOptions) (string, error)
	GetOrderByInfo(ctx context.Context, options *ExplainOptions) (string, error)
	GetGroupByInfo(ctx context.Context, options *ExplainOptions) (string, error)
	GetTableDef(ctx context.Context, options *ExplainOptions) (string, error)
	GetActualAnalyzeInfo(ctx context.Context, options *ExplainOptions) (string, error)
}

type NodeDescribeImpl

type NodeDescribeImpl struct {
	Node *plan.Node
}

func NewNodeDescriptionImpl

func NewNodeDescriptionImpl(node *plan.Node) *NodeDescribeImpl

func (*NodeDescribeImpl) GetActualAnalyzeInfo added in v0.6.0

func (ndesc *NodeDescribeImpl) GetActualAnalyzeInfo(ctx context.Context, options *ExplainOptions) (string, error)

func (*NodeDescribeImpl) GetAggregationInfo

func (ndesc *NodeDescribeImpl) GetAggregationInfo(ctx context.Context, options *ExplainOptions) (string, error)

func (*NodeDescribeImpl) GetBlockFilterConditionInfo added in v0.8.0

func (ndesc *NodeDescribeImpl) GetBlockFilterConditionInfo(ctx context.Context, options *ExplainOptions) (string, error)

func (*NodeDescribeImpl) GetExtraInfo

func (ndesc *NodeDescribeImpl) GetExtraInfo(ctx context.Context, options *ExplainOptions) ([]string, error)

func (*NodeDescribeImpl) GetFillColsInfo added in v1.1.0

func (ndesc *NodeDescribeImpl) GetFillColsInfo(ctx context.Context, options *ExplainOptions) (string, error)

func (*NodeDescribeImpl) GetFillModeInfo added in v1.1.0

func (ndesc *NodeDescribeImpl) GetFillModeInfo(ctx context.Context, options *ExplainOptions) (string, error)

func (*NodeDescribeImpl) GetFilterConditionInfo

func (ndesc *NodeDescribeImpl) GetFilterConditionInfo(ctx context.Context, options *ExplainOptions) (string, error)

func (*NodeDescribeImpl) GetGroupByInfo

func (ndesc *NodeDescribeImpl) GetGroupByInfo(ctx context.Context, options *ExplainOptions) (string, error)

func (*NodeDescribeImpl) GetJoinConditionInfo

func (ndesc *NodeDescribeImpl) GetJoinConditionInfo(ctx context.Context, options *ExplainOptions) (string, error)

func (*NodeDescribeImpl) GetJoinTypeInfo

func (ndesc *NodeDescribeImpl) GetJoinTypeInfo(ctx context.Context, options *ExplainOptions) (string, error)

func (*NodeDescribeImpl) GetNodeBasicInfo

func (ndesc *NodeDescribeImpl) GetNodeBasicInfo(ctx context.Context, options *ExplainOptions) (string, error)

func (*NodeDescribeImpl) GetOrderByInfo

func (ndesc *NodeDescribeImpl) GetOrderByInfo(ctx context.Context, options *ExplainOptions) (string, error)

func (*NodeDescribeImpl) GetPartitionPruneInfo added in v1.0.0

func (ndesc *NodeDescribeImpl) GetPartitionPruneInfo(ctx context.Context, options *ExplainOptions) (string, error)

func (*NodeDescribeImpl) GetProjectListInfo

func (ndesc *NodeDescribeImpl) GetProjectListInfo(ctx context.Context, options *ExplainOptions) (string, error)

func (*NodeDescribeImpl) GetRecvMessageInfo added in v1.2.0

func (ndesc *NodeDescribeImpl) GetRecvMessageInfo(ctx context.Context, options *ExplainOptions) (string, error)

func (*NodeDescribeImpl) GetRuntimeFilteProbeInfo added in v0.8.0

func (ndesc *NodeDescribeImpl) GetRuntimeFilteProbeInfo(ctx context.Context, options *ExplainOptions) (string, error)

func (*NodeDescribeImpl) GetRuntimeFilterBuildInfo added in v0.8.0

func (ndesc *NodeDescribeImpl) GetRuntimeFilterBuildInfo(ctx context.Context, options *ExplainOptions) (string, error)

func (*NodeDescribeImpl) GetSampleFuncInfo added in v1.1.0

func (ndesc *NodeDescribeImpl) GetSampleFuncInfo(ctx context.Context, options *ExplainOptions) (string, error)

func (*NodeDescribeImpl) GetSendMessageInfo added in v1.2.0

func (ndesc *NodeDescribeImpl) GetSendMessageInfo(ctx context.Context, options *ExplainOptions) (string, error)

func (*NodeDescribeImpl) GetTableDef

func (ndesc *NodeDescribeImpl) GetTableDef(ctx context.Context, options *ExplainOptions) (string, error)

func (*NodeDescribeImpl) GetWindowSpectListInfo added in v0.8.0

func (ndesc *NodeDescribeImpl) GetWindowSpectListInfo(ctx context.Context, options *ExplainOptions) (string, error)

type NodeElemDescribe

type NodeElemDescribe interface {
	GetDescription(ctx context.Context, options *ExplainOptions, buf *bytes.Buffer) error
}

type OrderByDescribeImpl

type OrderByDescribeImpl struct {
	OrderBy []*plan.OrderBySpec
}

func NewOrderByDescribeImpl

func NewOrderByDescribeImpl(OrderBy []*plan.OrderBySpec) *OrderByDescribeImpl

func (*OrderByDescribeImpl) GetDescription

func (o *OrderByDescribeImpl) GetDescription(ctx context.Context, options *ExplainOptions, buf *bytes.Buffer) error

type PlanStats added in v0.7.0

type PlanStats struct {
}

type RowsetDataDescribeImpl

type RowsetDataDescribeImpl struct {
	RowsetData *plan.RowsetData
}

func (*RowsetDataDescribeImpl) GetDescription

func (r *RowsetDataDescribeImpl) GetDescription(ctx context.Context, options *ExplainOptions, buf *bytes.Buffer) error

type StatisticValue added in v0.6.0

type StatisticValue struct {
	Name  string `json:"name"`
	Value int64  `json:"value"`
	Unit  string `json:"unit"`
}

func NewStatisticValue added in v0.7.0

func NewStatisticValue(name string, unit string) *StatisticValue

type Statistics added in v0.6.0

type Statistics struct {
	Time       []StatisticValue `json:"Time"`
	Memory     []StatisticValue `json:"Memory"`
	Throughput []StatisticValue `json:"Throughput"`
	IO         []StatisticValue `json:"IO"`
	Network    []StatisticValue `json:"Network"`
}

func NewStatistics added in v0.6.0

func NewStatistics() *Statistics

type Stats added in v0.6.0

type Stats struct {
	BlockNum    int32   `json:"blocknum"`
	Outcnt      float64 `json:"outcnt"`
	Cost        float64 `json:"cost"`
	HashmapSize float64 `json:"hashmapsize"`
	Rowsize     float64 `json:"rowsize"`
}

type Step added in v0.6.0

type Step struct {
	GraphData   GraphData `json:"graphData"`
	Step        int       `json:"step"`
	Description string    `json:"description"`
	State       string    `json:"state"`
	PlanStats   PlanStats `json:"stats"`
}

func NewStep added in v0.6.0

func NewStep(step int) *Step

type TotalStats added in v0.6.0

type TotalStats struct {
	Name  string `json:"name"`
	Value int64  `json:"value"`
	Unit  string `json:"unit"`
}

type WinSpecDescribeImpl

type WinSpecDescribeImpl struct {
	WinSpec *plan.WindowSpec
}

func (*WinSpecDescribeImpl) GetDescription

func (w *WinSpecDescribeImpl) GetDescription(ctx context.Context, options *ExplainOptions, buf *bytes.Buffer) error

Jump to

Keyboard shortcuts

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