@@ -6,7 +6,6 @@ pub enum ParseError {
66 UnsupportedCommand ,
77 EmptyResultSet ,
88 NullRow ,
9- ColumnValueMissed ,
109 ColumnNameNotDefined ,
1110 FlatBufferError ,
1211 ErrorMessage ( String ) ,
@@ -18,7 +17,6 @@ impl std::fmt::Display for ParseError {
1817 ParseError :: UnsupportedCommand => write ! ( f, "Unsupported command" ) ,
1918 ParseError :: EmptyResultSet => write ! ( f, "Empty resultSet" ) ,
2019 ParseError :: NullRow => write ! ( f, "Null row" ) ,
21- ParseError :: ColumnValueMissed => write ! ( f, "Column value missed" ) ,
2220 ParseError :: ColumnNameNotDefined => write ! ( f, "Column name is not defined" ) ,
2321 ParseError :: FlatBufferError => write ! ( f, "FlatBuffer parsing error" ) ,
2422 ParseError :: ErrorMessage ( msg) => write ! ( f, "Error: {}" , msg) ,
@@ -50,27 +48,24 @@ pub fn parse_cubestore_ws_result(
5048 . ok_or ( ParseError :: EmptyResultSet ) ?;
5149
5250 let result_set_columns = result_set. columns ( ) . ok_or ( ParseError :: EmptyResultSet ) ?;
53- let columns_len = result_set_columns. len ( ) ;
54- let mut columns = Vec :: with_capacity ( columns_len) ;
5551
56- for column in result_set_columns. iter ( ) {
57- if column. is_empty ( ) {
58- return Err ( ParseError :: ColumnNameNotDefined ) ;
59- }
60- columns. push ( column) ;
52+ if result_set_columns. iter ( ) . any ( |c| c. is_empty ( ) ) {
53+ return Err ( ParseError :: ColumnNameNotDefined ) ;
6154 }
6255
6356 let result_set_rows = result_set. rows ( ) . ok_or ( ParseError :: EmptyResultSet ) ?;
6457 let mut result = Vec :: with_capacity ( result_set_rows. len ( ) ) ;
6558
6659 for row in result_set_rows. iter ( ) {
6760 let values = row. values ( ) . ok_or ( ParseError :: NullRow ) ?;
68- let mut row_obj = HashMap :: with_capacity ( columns_len) ;
69-
70- for ( i, val) in values. iter ( ) . enumerate ( ) {
71- let value = val. string_value ( ) . ok_or ( ParseError :: ColumnValueMissed ) ?;
72- row_obj. insert ( columns[ i] , value) ;
73- }
61+ let row_obj: HashMap < _ , _ > = result_set_columns
62+ . iter ( )
63+ . zip ( values. iter ( ) )
64+ . map ( |( col, val) | {
65+ let value = val. string_value ( ) . unwrap_or ( "" ) ;
66+ ( col, value)
67+ } )
68+ . collect ( ) ;
7469
7570 result. push ( row_obj) ;
7671 }
0 commit comments