github.com/dolthub/go-mysql-server@v0.18.0/sql/expression/format.go (about) 1 package expression 2 3 //func formatExpr(e sql.Expression) string { 4 // f := new(exprFormatter) 5 // f.formatExpr(e) 6 // return f.String() 7 //} 8 // 9 //type exprFormatter struct { 10 // l int 11 // pre string 12 // b strings.Builder 13 //} 14 // 15 //func (f *exprFormatter) String() string { 16 // return f.b.String() 17 //} 18 // 19 //func (f *exprFormatter) formatExpr(e sql.Expression) string { 20 // name, attrs := format(e) 21 // f.b.WriteString("") 22 // children := e.Children() 23 // 24 //} 25 // 26 //func (f *exprFormatter) setPre() { 27 // l := f.l 28 // for l > 0 { 29 // if l == 1 { 30 // f.pre += "├─" 31 // } 32 // f.pre += "│" 33 // } 34 //} 35 // 36 //func format(e sql.Expression) (string, []string) { 37 // var attrs []string 38 // var name string 39 // switch e := e.(type) { 40 // case *Alias: 41 // name = "Alias" 42 // attrs = append(attrs, fmt.Sprintf("name: %s", e.name)) 43 // case *Arithmetic: 44 // name = "Arithmetic" 45 // attrs = append(attrs, fmt.Sprintf("op: %s", e.Op)) 46 // attrs = append(attrs) 47 // case *AutoIncrement: 48 // name = "AutoIncrement" 49 // case *Between: 50 // name = "Between" 51 // case *Binary: 52 // name = "Binary" 53 // case *BindVar: 54 // name = "BindVar" 55 // case *Not: 56 // name = "Not" 57 // case *Case: 58 // name = "Case" 59 // case *CollatedExpression: 60 // name = "CollatedExpression" 61 // case *Equals: 62 // name = "Equals" 63 // case *NullSafeEquals: 64 // name = "NullSafeEquals" 65 // case *GreaterThan: 66 // name = "GreaterThan" 67 // case *GreaterThanOrEqual: 68 // name = "GreaterThanOrEqual" 69 // case *LessThan: 70 // name = "LessThan" 71 // case *LessThanOrEqual: 72 // name = "LessThanOrEqual" 73 // case *InTuple: 74 // name = "InTuple" 75 // case *HashInTuple: 76 // name = "HashInTuple" 77 // case *Regexp: 78 // name = "Regexp" 79 // case *Interval: 80 // name = "Interval" 81 // case *IsNull: 82 // name = "IsNull" 83 // case *IsTrue: 84 // name = "IsTrue" 85 // case *Like: 86 // name = "Like" 87 // case *Literal: 88 // name = "Literal" 89 // case *And: 90 // name = "And" 91 // case *Or: 92 // name = "Or" 93 // case *Xor: 94 // name = "Xor" 95 // case *ProcedureParam: 96 // name = "ProcedureParam" 97 // case *SetField: 98 // name = "SetField" 99 // case *Star: 100 // name = "Star" 101 // case *Tuple: 102 // name = "Tuple" 103 // case *UnresolvedColumn: 104 // name = "UnresolvedColumn" 105 // case *UnresolvedFunction: 106 // name = "UnresolvedFunction" 107 // case *SystemVar: 108 // name = "SystemVar" 109 // case *UserVar: 110 // name = "UserVar" 111 // case *Wrapper: 112 // name = "Wrapper" 113 // default: 114 // panic(fmt.Sprintf("unknown expression type: %T", e)) 115 // } 116 // return name, attrs 117 //}