@@ -91,7 +91,7 @@ func (s *dbserver) Query(ctx context.Context, query *server.DataQuery) (result *
9191
9292 var dataResult * server.DataQueryResult
9393 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 {
9595 result .Items = dataResult .Items
9696 result .Meta .Duration = time .Since (now ).String ()
9797
@@ -101,9 +101,19 @@ func (s *dbserver) Query(ctx context.Context, query *server.DataQuery) (result *
101101 return
102102}
103103
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 {
107117 return
108118 }
109119 defer func () {
@@ -119,7 +129,7 @@ func sqlQuery(ctx context.Context, sql string, db *gorm.DB) (result *server.Data
119129 }
120130
121131 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 {
123133 return
124134 } else if rows == nil {
125135 fmt .Println ("no rows found" )
0 commit comments