@@ -91,7 +91,7 @@ func (s *dbserver) Query(ctx context.Context, query *server.DataQuery) (result *
91
91
92
92
var dataResult * server.DataQueryResult
93
93
now := time .Now ()
94
- if dataResult , err = sqlQuery (ctx , query .Sql , db ); err == nil {
94
+ if dataResult , err = runMultilineSQL (ctx , query .Sql , db ); err == nil {
95
95
result .Items = dataResult .Items
96
96
result .Meta .Duration = time .Since (now ).String ()
97
97
@@ -101,9 +101,19 @@ func (s *dbserver) Query(ctx context.Context, query *server.DataQuery) (result *
101
101
return
102
102
}
103
103
104
- func sqlQuery (ctx context.Context , sql string , db * gorm.DB ) (result * server.DataQueryResult , err error ) {
105
- rows , err := db .Raw (sql ).Rows ()
106
- if err != nil {
104
+ func runMultilineSQL (ctx context.Context , multilineSQL string , db * gorm.DB ) (result * server.DataQueryResult , err error ) {
105
+ lines := strings .Split (multilineSQL , ";" )
106
+ for _ , line := range lines {
107
+ if result , err = sqlQuery (ctx , line , db ); err != nil {
108
+ return
109
+ }
110
+ }
111
+ return
112
+ }
113
+
114
+ func sqlQuery (ctx context.Context , sqlText string , db * gorm.DB ) (result * server.DataQueryResult , err error ) {
115
+ var rows * sql.Rows
116
+ if rows , err = db .Raw (sqlText ).Rows (); err != nil {
107
117
return
108
118
}
109
119
defer func () {
@@ -119,7 +129,7 @@ func sqlQuery(ctx context.Context, sql string, db *gorm.DB) (result *server.Data
119
129
}
120
130
121
131
if rows == nil {
122
- if rows , err = db .ConnPool .QueryContext (ctx , sql ); err != nil {
132
+ if rows , err = db .ConnPool .QueryContext (ctx , sqlText ); err != nil {
123
133
return
124
134
} else if rows == nil {
125
135
fmt .Println ("no rows found" )
0 commit comments