@@ -55,13 +55,13 @@ impl SimpleQueryHandler for DuckDBBackend {
5555 let mut stmt = conn
5656 . prepare ( query)
5757 . map_err ( |e| PgWireError :: ApiError ( Box :: new ( e) ) ) ?;
58- let header = Arc :: new ( row_desc_from_stmt ( & stmt, & Format :: UnifiedText ) ? ) ;
59- stmt . query ( params ! [ ] )
60- . map ( |rows| {
61- let s = encode_row_data ( rows, header . clone ( ) ) ;
62- vec ! [ Response :: Query ( QueryResponse :: new( header , s ) ) ]
63- } )
64- . map_err ( |e| PgWireError :: ApiError ( Box :: new ( e ) ) )
58+ let rows = stmt
59+ . query ( params ! [ ] )
60+ . map_err ( |e| PgWireError :: ApiError ( Box :: new ( e ) ) ) ? ;
61+ let row_stmt = rows. as_ref ( ) . unwrap ( ) ;
62+ let header = Arc :: new ( row_desc_from_stmt ( row_stmt , & Format :: UnifiedText ) ? ) ;
63+ let s = encode_row_data ( rows , header . clone ( ) ) ;
64+ Ok ( vec ! [ Response :: Query ( QueryResponse :: new( header , s ) ) ] )
6565 } else {
6666 conn. execute ( query, params ! [ ] )
6767 . map ( |affected_rows| {
@@ -262,13 +262,13 @@ impl ExtendedQueryHandler for DuckDBBackend {
262262 . collect :: < Vec < & dyn duckdb:: ToSql > > ( ) ;
263263
264264 if query. to_uppercase ( ) . starts_with ( "SELECT" ) {
265- let header = Arc :: new ( row_desc_from_stmt ( & stmt, & portal . result_column_format ) ? ) ;
266- stmt . query :: < & [ & dyn duckdb:: ToSql ] > ( params_ref. as_ref ( ) )
267- . map ( |rows| {
268- let s = encode_row_data ( rows, header . clone ( ) ) ;
269- Response :: Query ( QueryResponse :: new ( header , s ) )
270- } )
271- . map_err ( |e| PgWireError :: ApiError ( Box :: new ( e ) ) )
265+ let rows : Rows < ' _ > = stmt
266+ . query :: < & [ & dyn duckdb:: ToSql ] > ( params_ref. as_ref ( ) )
267+ . map_err ( |e| PgWireError :: ApiError ( Box :: new ( e ) ) ) ? ;
268+ let row_stmt = rows. as_ref ( ) . unwrap ( ) ;
269+ let header = Arc :: new ( row_desc_from_stmt ( row_stmt , & portal . result_column_format ) ? ) ;
270+ let s = encode_row_data ( rows , header . clone ( ) ) ;
271+ Ok ( Response :: Query ( QueryResponse :: new ( header , s ) ) )
272272 } else {
273273 stmt. execute :: < & [ & dyn duckdb:: ToSql ] > ( params_ref. as_ref ( ) )
274274 . map ( |affected_rows| {
0 commit comments