@@ -57,14 +57,15 @@ func reportError(err error, code int, reqIdx int, noFail bool, results []respons
5757 if ! noFail {
5858 panic (newWSError (reqIdx , code , err .Error ()))
5959 }
60- results [reqIdx ] = responseItem {false , nil , nil , nil , nil , capitalize (err .Error ())}
60+ results [reqIdx ] = responseItem {false , nil , nil , nil , nil , nil , capitalize (err .Error ())}
6161}
6262
6363// Processes a query, and returns a suitable responseItem
6464//
6565// This method is needed to execute properly the defers.
6666func processWithResultSet (tx * sql.Tx , query string , isListResultSet bool , params requestParams ) (* responseItem , error ) {
67- resultSet := make ([]interface {}, 0 )
67+ resultSet := make ([]orderedmap.OrderedMap , 0 )
68+ resultSetList := make ([][]interface {}, 0 )
6869
6970 rows := (* sql .Rows )(nil )
7071 err := (error )(nil )
@@ -80,10 +81,10 @@ func processWithResultSet(tx *sql.Tx, query string, isListResultSet bool, params
8081 }
8182 defer rows .Close ()
8283
83- fields , _ := rows .Columns () // I can ignore the error, rows aren't closed
84+ headers , _ := rows .Columns () // I can ignore the error, rows aren't closed
8485 for rows .Next () {
85- values := make ([]interface {}, len (fields )) // values of the various fields
86- scans := make ([]interface {}, len (fields )) // pointers to the values, to pass to Scan()
86+ values := make ([]interface {}, len (headers )) // values of the various fields
87+ scans := make ([]interface {}, len (headers )) // pointers to the values, to pass to Scan()
8788 for i := range values {
8889 scans [i ] = & values [i ]
8990 }
@@ -93,16 +94,14 @@ func processWithResultSet(tx *sql.Tx, query string, isListResultSet bool, params
9394
9495 if isListResultSet {
9596 // List-style result set
96- toAdd := make ([]interface {}, 0 )
97- for i := range values {
98- toAdd = append (toAdd , values [i ])
99- }
100- resultSet = append (resultSet , toAdd )
97+
98+ resultSetList = append (resultSetList , values )
10199 } else {
102100 // Map-style result set
101+
103102 toAdd := orderedmap .New ()
104103 for i := range values {
105- toAdd .Set (fields [i ], values [i ])
104+ toAdd .Set (headers [i ], values [i ])
106105 }
107106
108107 resultSet = append (resultSet , * toAdd )
@@ -113,7 +112,10 @@ func processWithResultSet(tx *sql.Tx, query string, isListResultSet bool, params
113112 return nil , err
114113 }
115114
116- return & responseItem {true , nil , nil , fields , resultSet , "" }, nil
115+ if isListResultSet {
116+ return & responseItem {true , nil , nil , headers , nil , resultSetList , "" }, nil
117+ }
118+ return & responseItem {true , nil , nil , headers , resultSet , nil , "" }, nil
117119}
118120
119121// Process a single statement, and returns a suitable responseItem
@@ -136,7 +138,7 @@ func processForExec(tx *sql.Tx, statement string, params requestParams) (*respon
136138 return nil , err
137139 }
138140
139- return & responseItem {true , & rowsUpdated , nil , nil , nil , "" }, nil
141+ return & responseItem {true , & rowsUpdated , nil , nil , nil , nil , "" }, nil
140142}
141143
142144// Process a batch statement, and returns a suitable responseItem.
@@ -171,7 +173,7 @@ func processForExecBatch(tx *sql.Tx, q string, paramsBatch []requestParams) (*re
171173 rowsUpdatedBatch = append (rowsUpdatedBatch , rowsUpdated )
172174 }
173175
174- return & responseItem {true , nil , rowsUpdatedBatch , nil , nil , "" }, nil
176+ return & responseItem {true , nil , rowsUpdatedBatch , nil , nil , nil , "" }, nil
175177}
176178
177179func ckSQL (sql string ) string {
0 commit comments