File tree 2 files changed +19
-13
lines changed
2 files changed +19
-13
lines changed Original file line number Diff line number Diff line change @@ -172,19 +172,25 @@ impl SimpleQueryHandler for SessionBackend {
172
172
_ => {
173
173
let mut guard = self . tx . lock ( ) ;
174
174
175
- let iter = if let Some ( transaction) = guard. as_mut ( ) {
176
- unsafe { transaction. as_mut ( ) . run ( query) } . map ( Box :: new)
177
- as Result < Box < dyn ResultIter > , _ >
178
- } else {
179
- self . inner . run ( query) . map ( Box :: new)
180
- }
181
- . map_err ( |e| PgWireError :: ApiError ( Box :: new ( e) ) ) ?;
182
-
183
175
let mut tuples = Vec :: new ( ) ;
184
- for tuple in iter {
185
- tuples. push ( tuple. map_err ( |e| PgWireError :: ApiError ( Box :: new ( e) ) ) ?) ;
186
- }
187
- Ok ( vec ! [ Response :: Query ( encode_tuples( iter. schema( ) , tuples) ?) ] )
176
+ let response = if let Some ( transaction) = guard. as_mut ( ) {
177
+ let mut iter = unsafe { transaction. as_mut ( ) . run ( query) }
178
+ . map_err ( |e| PgWireError :: ApiError ( Box :: new ( e) ) ) ?;
179
+ for tuple in iter. by_ref ( ) {
180
+ tuples. push ( tuple. map_err ( |e| PgWireError :: ApiError ( Box :: new ( e) ) ) ?) ;
181
+ }
182
+ encode_tuples ( iter. schema ( ) , tuples) ?
183
+ } else {
184
+ let mut iter = self
185
+ . inner
186
+ . run ( query)
187
+ . map_err ( |e| PgWireError :: ApiError ( Box :: new ( e) ) ) ?;
188
+ for tuple in iter. by_ref ( ) {
189
+ tuples. push ( tuple. map_err ( |e| PgWireError :: ApiError ( Box :: new ( e) ) ) ?) ;
190
+ }
191
+ encode_tuples ( iter. schema ( ) , tuples) ?
192
+ } ;
193
+ Ok ( vec ! [ Response :: Query ( response) ] )
188
194
}
189
195
}
190
196
}
Original file line number Diff line number Diff line change @@ -328,7 +328,7 @@ impl<S: Storage> Database<S> {
328
328
}
329
329
}
330
330
331
- pub trait ResultIter : Iterator < Item = Result < Tuple , DatabaseError > > + Sized {
331
+ pub trait ResultIter : Iterator < Item = Result < Tuple , DatabaseError > > {
332
332
fn schema ( & self ) -> & SchemaRef ;
333
333
334
334
fn done ( self ) -> Result < ( ) , DatabaseError > ;
You can’t perform that action at this time.
0 commit comments