Skip to content

Commit 7934160

Browse files
committed
mysql: output vertical format when query ends in \G
1 parent 05758b0 commit 7934160

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

main_test.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,19 @@ var baseTests = tests{
8181
},
8282
}
8383

84+
var mysqlTests = tests{{
85+
name: `mysql outputs vertical with \G`,
86+
targetDBs: []string{"db1"},
87+
query: `SELECT id, name FROM table1 order by id asc limit 1\G`,
88+
expected: []string{
89+
"",
90+
"*************************** 1. row ***************************",
91+
"id: 1",
92+
"name: John",
93+
},
94+
},
95+
}
96+
8497
func Test_MySQL(t *testing.T) {
8598
awaitDB(mySQL, t)
8699

@@ -92,6 +105,7 @@ func Test_MySQL(t *testing.T) {
92105
}
93106
)
94107
runTests(baseTests, testConfig, t)
108+
runTests(mysqlTests, testConfig, t)
95109
}
96110

97111
func Test_PostgreSQL(t *testing.T) {

sql_runner.go

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,12 @@ type sqlType int
1414

1515
const (
1616
mySQL sqlType = iota + 1
17+
mySQLVertical
1718
postgreSQL
1819
)
1920

2021
func (t sqlType) String() string {
21-
return [...]string{"", "MySQL", "PostgreSQL"}[t]
22+
return [...]string{"", "MySQL", "MySQL", "PostgreSQL"}[t]
2223
}
2324

2425
type exists struct{}
@@ -47,6 +48,14 @@ var sqlTypeToOptions = map[sqlType]sqlOptions{
4748
"%v",
4849
"-Nsre",
4950
},
51+
mySQLVertical: {
52+
"mysql",
53+
"-u%v",
54+
"-h%v",
55+
"-p%v",
56+
"%v",
57+
"-Ee",
58+
},
5059
postgreSQL: {
5160
"psql",
5261
"-U %v",
@@ -62,14 +71,21 @@ type sqlRunner struct {
6271
query string
6372
quitContext context.Context
6473
multi bool
74+
vertical bool
6575
}
6676

6777
func mustNewSQLRunner(quitContext context.Context, printer func(string), query string, multi bool) *sqlRunner {
78+
var vertical bool
79+
if strings.HasSuffix(query, `\G`) {
80+
vertical = true
81+
query = strings.TrimSuffix(query, `\G`)
82+
}
6883
return &sqlRunner{
6984
printer,
7085
query,
7186
quitContext,
7287
multi,
88+
vertical,
7389
}
7490
}
7591

@@ -78,6 +94,9 @@ func (sr *sqlRunner) runSQL(db database, key string) bool {
7894
if !ok {
7995
return maybeErrorResult(key, fmt.Sprintf("Unknown sql type %v for %v", db.SQLType, key))
8096
}
97+
if sr.vertical && typ == mySQL {
98+
typ = mySQLVertical
99+
}
81100

82101
sqlOptions := sqlTypeToOptions[typ]
83102

0 commit comments

Comments
 (0)