@@ -14,15 +14,34 @@ type Printer interface {
14
14
print (statementResult StatementResult , outF io.Writer ) error
15
15
}
16
16
17
+ type ExplainQueryPrinter struct {}
18
+
19
+ func (eqp ExplainQueryPrinter ) print (statementResult StatementResult , outF io.Writer ) error {
20
+ data := [][]string {}
21
+
22
+ tableData , err := appendData (statementResult , data , TABLE )
23
+ if err != nil {
24
+ return err
25
+ }
26
+
27
+ root , err := BuildQueryPlanTree (tableData )
28
+ if err != nil {
29
+ return err
30
+ }
31
+ println ("QUERY PLAN" )
32
+ PrintQueryPlanTree (root , "" )
33
+
34
+ return nil
35
+ }
36
+
17
37
type TablePrinter struct {
18
38
withoutHeader bool
19
39
}
20
40
21
41
func (t TablePrinter ) print (statementResult StatementResult , outF io.Writer ) error {
22
42
data := [][]string {}
23
43
table := createTable (outF )
24
- showHeader := ! IsResultComingFromExplainQueryPlan (statementResult ) && ! t .withoutHeader
25
- if showHeader {
44
+ if ! t .withoutHeader {
26
45
table .SetHeader (statementResult .ColumnNames )
27
46
}
28
47
@@ -33,6 +52,7 @@ func (t TablePrinter) print(statementResult StatementResult, outF io.Writer) err
33
52
34
53
table .AppendBulk (tableData )
35
54
table .Render ()
55
+
36
56
return nil
37
57
}
38
58
@@ -102,14 +122,13 @@ func appendData(statementResult StatementResult, data [][]string, mode FormatTyp
102
122
data = append (data , formattedRow )
103
123
}
104
124
105
- if IsResultComingFromExplainQueryPlan (statementResult ) {
106
- data = [][]string {{"Tree goes here!" }}
107
- }
108
-
109
125
return data , nil
110
126
}
111
127
112
- func getPrinter (mode enums.PrintMode , withoutHeader bool ) (Printer , error ) {
128
+ func getPrinter (mode enums.PrintMode , withoutHeader bool , isExplainQueryPlan bool ) (Printer , error ) {
129
+ if isExplainQueryPlan {
130
+ return & ExplainQueryPrinter {}, nil
131
+ }
113
132
switch mode {
114
133
case enums .TABLE_MODE :
115
134
return & TablePrinter {
@@ -149,7 +168,8 @@ func PrintStatementResult(statementResult StatementResult, outF io.Writer, witho
149
168
return & UnableToPrintStatementResult {}
150
169
}
151
170
152
- printer , err := getPrinter (mode , withoutHeader )
171
+ isExplainQueryPlan := IsResultComingFromExplainQueryPlan (statementResult )
172
+ printer , err := getPrinter (mode , withoutHeader , isExplainQueryPlan )
153
173
if err != nil {
154
174
return err
155
175
}
0 commit comments