@@ -24,7 +24,7 @@ use std::pin::Pin;
24
24
use std:: sync:: Arc ;
25
25
use std:: task:: { Context , Poll } ;
26
26
27
- use super :: rows:: { RowInner , RowsInner } ;
27
+ use super :: rows:: { ColumnsInner , RowInner , RowsInner } ;
28
28
29
29
pub ( crate ) type Result < T > = std:: result:: Result < T , HranaError > ;
30
30
@@ -261,7 +261,12 @@ where
261
261
async fn next ( & mut self ) -> crate :: Result < Option < super :: Row > > {
262
262
self . next ( ) . await
263
263
}
264
+ }
264
265
266
+ impl < S > ColumnsInner for HranaRows < S >
267
+ where
268
+ S : Stream < Item = std:: io:: Result < Bytes > > + Send + Sync + Unpin ,
269
+ {
265
270
fn column_count ( & self ) -> i32 {
266
271
self . column_count ( )
267
272
}
@@ -303,13 +308,6 @@ impl RowInner for Row {
303
308
Ok ( into_value2 ( v) )
304
309
}
305
310
306
- fn column_name ( & self , idx : i32 ) -> Option < & str > {
307
- self . cols
308
- . get ( idx as usize )
309
- . and_then ( |c| c. name . as_ref ( ) )
310
- . map ( |s| s. as_str ( ) )
311
- }
312
-
313
311
fn column_str ( & self , idx : i32 ) -> crate :: Result < & str > {
314
312
if let Some ( value) = self . inner . get ( idx as usize ) {
315
313
if let proto:: Value :: Text { value } = value {
@@ -321,6 +319,15 @@ impl RowInner for Row {
321
319
Err ( crate :: Error :: ColumnNotFound ( idx) )
322
320
}
323
321
}
322
+ }
323
+
324
+ impl ColumnsInner for Row {
325
+ fn column_name ( & self , idx : i32 ) -> Option < & str > {
326
+ self . cols
327
+ . get ( idx as usize )
328
+ . and_then ( |c| c. name . as_ref ( ) )
329
+ . map ( |s| s. as_str ( ) )
330
+ }
324
331
325
332
fn column_type ( & self , idx : i32 ) -> crate :: Result < ValueType > {
326
333
if let Some ( value) = self . inner . get ( idx as usize ) {
@@ -337,8 +344,8 @@ impl RowInner for Row {
337
344
}
338
345
}
339
346
340
- fn column_count ( & self ) -> usize {
341
- self . cols . len ( )
347
+ fn column_count ( & self ) -> i32 {
348
+ self . cols . len ( ) as i32
342
349
}
343
350
}
344
351
@@ -417,7 +424,9 @@ impl RowsInner for StmtResultRows {
417
424
inner : Box :: new ( row) ,
418
425
} ) )
419
426
}
427
+ }
420
428
429
+ impl ColumnsInner for StmtResultRows {
421
430
fn column_count ( & self ) -> i32 {
422
431
self . cols . len ( ) as i32
423
432
}
0 commit comments