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  //}