@@ -123,7 +123,6 @@ impl Connection {
123123
124124#[ derive( Debug ) ]
125125pub struct Query {
126- res : xdb_res_t ,
127126 ptr : * mut xdb_res_t ,
128127 columns : Columns ,
129128}
@@ -141,28 +140,27 @@ unsafe impl Sync for Query {}
141140
142141impl Query {
143142 pub ( crate ) unsafe fn from_res ( ptr : * mut xdb_res_t ) -> Result < Self > {
144- let res = * ptr;
145- if res . errcode != xdb_errno_e_XDB_OK as u16 {
143+ let code = xdb_errcode ( ptr) ;
144+ if code != xdb_errno_e_XDB_OK {
146145 let msg = CStr :: from_ptr ( xdb_errmsg ( ptr) ) . to_str ( ) ?. to_string ( ) ;
147- return Err ( Error :: Query ( res . errcode , msg) ) ;
146+ return Err ( Error :: Query ( code , msg) ) ;
148147 }
149148 Ok ( Self {
150- res,
151149 ptr,
152150 columns : Columns :: from_res ( ptr) ,
153151 } )
154152 }
155153
156154 pub fn column_count ( & self ) -> usize {
157- self . res . col_count as usize
155+ unsafe { xdb_column_count ( self . ptr ) as usize }
158156 }
159157
160158 pub fn row_count ( & self ) -> usize {
161- self . res . row_count as usize
159+ unsafe { xdb_row_count ( self . ptr ) as usize }
162160 }
163161
164162 pub fn affected_rows ( & self ) -> u64 {
165- self . res . affected_rows
163+ unsafe { xdb_affected_rows ( self . ptr ) as u64 }
166164 }
167165
168166 pub fn columns ( & self ) -> & Columns {
@@ -179,7 +177,7 @@ impl Query {
179177 self . fetch_row ( ) . map ( |row| row. deserialize ( ) )
180178 }
181179
182- pub fn fetch_rows_as < ' a , T : DeserializeOwned > ( & mut self ) -> Result < Vec < T > , DeError > {
180+ pub fn fetch_rows_as < T : DeserializeOwned > ( & mut self ) -> Result < Vec < T > , DeError > {
183181 let mut rows = Vec :: with_capacity ( self . row_count ( ) ) ;
184182 while let Some ( row) = self . fetch_row ( ) {
185183 rows. push ( row. deserialize ( ) ?) ;
@@ -189,14 +187,14 @@ impl Query {
189187
190188 fn inner_fetch_row_values ( & mut self ) -> Option < Vec < Value < ' _ > > > {
191189 unsafe {
192- let row = xdb_fetch_row ( self . ptr ) ;
190+ let row: * mut c_void = xdb_fetch_row ( self . ptr ) ;
193191 if row. is_null ( ) {
194192 return None ;
195193 }
196- let mut values = Vec :: with_capacity ( self . column_count ( ) ) ;
197- let iter = from_raw_parts ( row, self . column_count ( ) ) . iter ( ) . enumerate ( ) ;
194+ let count = self . columns . len ( ) ;
195+ let mut values = Vec :: with_capacity ( count) ;
196+ let iter = from_raw_parts ( row, count) . iter ( ) . enumerate ( ) ;
198197 for ( i, ptr) in iter {
199- let ptr = * ptr as * const c_void ;
200198 values. push ( Value :: from_ptr ( ptr, self . columns . datatype ( i) ) ) ;
201199 }
202200 Some ( values)
0 commit comments