func (tracer *LogicalOptimizeTracer) AppendRuleTracerBeforeRuleOptimize(name string, before *LogicalPlanTrace) {
	ruleTracer := buildLogicalRuleOptimizeTracerBeforeOptimize(name, before)
	tracer.Steps = append(tracer.Steps, ruleTracer)
	tracer.curRuleTracer = ruleTracer
}
// AppendRuleTracerBeforeRuleOptimize add plan tracer before optimize
AppendRuleTracerBeforeRuleOptimize add plan tracer before optimize
// AppendRuleTracerBeforeRuleOptimize add plan tracer before optimize
func (tracer *LogicalOptimizeTracer) AppendRuleTracerBeforeRuleOptimize(name string, before *LogicalPlanTrace) {
	ruleTracer := buildLogicalRuleOptimizeTracerBeforeOptimize(name, before)
	tracer.Steps = append(tracer.Steps, ruleTracer)
	tracer.curRuleTracer = ruleTracer
}
func ( tracer * LogicalOptimizeTracer ) AppendRuleTracerBeforeRuleOptimize ( name string , before * LogicalPlanTrace ) { ruleTracer := buildLogicalRuleOptimizeTracerBeforeOptimize ( name , before ) tracer . Steps = append ( tracer . Steps , ruleTracer ) tracer . curRuleTracer = ruleTracer }
AppendRuleTracerBeforeRuleOptimize add plan tracer before optimize
AppendRuleTracerBeforeRuleOptimize add plan tracer before optimize