@@ -24,6 +24,7 @@ type database struct {
24
24
}
25
25
26
26
var help = flag .Bool ("help" , false , "shows usage" )
27
+ var printLock sync.Mutex
27
28
28
29
func init () {
29
30
flag .BoolVar (help , "h" , false , "shows usage" )
@@ -61,9 +62,6 @@ func main() {
61
62
targetDatabases = append (targetDatabases , k )
62
63
}
63
64
64
- out := make (chan string )
65
- go println (out )
66
-
67
65
quitContext , cancel := context .WithCancel (context .Background ())
68
66
go awaitSignal (cancel )
69
67
@@ -74,7 +72,7 @@ func main() {
74
72
for _ , k := range targetDatabases {
75
73
go func (db database , k string ) {
76
74
defer wg .Done ()
77
- if r := runSQL (quitContext , db , sql , k , len (targetDatabases ) > 1 , out ); ! r {
75
+ if r := runSQL (quitContext , db , sql , k , len (targetDatabases ) > 1 ); ! r {
78
76
returnCode = 1
79
77
}
80
78
}(databases [k ], k )
@@ -84,7 +82,7 @@ func main() {
84
82
os .Exit (returnCode )
85
83
}
86
84
87
- func runSQL (quitContext context.Context , db database , sql string , key string , prependKey bool , out chan string ) bool {
85
+ func runSQL (quitContext context.Context , db database , sql string , key string , prependKey bool ) bool {
88
86
userOption := ""
89
87
if db .User != "" {
90
88
userOption = fmt .Sprintf ("-u %v " , db .User )
@@ -136,7 +134,7 @@ func runSQL(quitContext context.Context, db database, sql string, key string, pr
136
134
137
135
scanner := bufio .NewScanner (stdout )
138
136
for scanner .Scan () {
139
- out <- prepend + scanner .Text ()
137
+ println ( prepend + scanner .Text () )
140
138
}
141
139
142
140
stderrLines := []string {}
@@ -159,10 +157,10 @@ func runSQL(quitContext context.Context, db database, sql string, key string, pr
159
157
return result
160
158
}
161
159
162
- func println (ss chan string ) {
163
- for s := range ss {
164
- fmt . Println ( s )
165
- }
160
+ func println (s string ) {
161
+ printLock . Lock ()
162
+ defer printLock . Unlock ( )
163
+ fmt . Println ( s )
166
164
}
167
165
168
166
func readInput (r io.Reader ) string {
0 commit comments