pub struct Row<'stmt> { /* private fields */ }Expand description
A single result row of a query.
Implementations§
Source§impl Row<'_>
impl Row<'_>
Sourcepub fn get_unwrap<I, T>(&self, idx: I) -> T
pub fn get_unwrap<I, T>(&self, idx: I) -> T
Get the value of a particular column of the result row.
§Panics
Panics if calling row.get(idx) would return an error,
including:
- If the underlying SQLite column type is not a valid type as a source
for
T - If the underlying SQLite integral value is outside the range
representable by
T - If
idxis outside the range of columns in the returned query
Sourcepub fn get<I, T>(&self, idx: I) -> Result<T, Error>
pub fn get<I, T>(&self, idx: I) -> Result<T, Error>
Get the value of a particular column of the result row.
§Failure
Returns an Error::InvalidColumnType if the underlying SQLite column
type is not a valid type as a source for T.
Returns an Error::InvalidColumnIndex if idx is outside the valid
column range for this row.
Returns an Error::InvalidColumnName if idx is not a valid column
name for this row.
If the result type is i128 (which requires the i128_blob feature to be
enabled), and the underlying SQLite column is a blob whose size is not
16 bytes, Error::InvalidColumnType will also be returned.
Examples found in repository?
113fn execute_workload(
114 connection: &mut Connection,
115 config: &WorkloadConfig,
116) -> Result<WorkloadStats, ExampleError> {
117 let started = Instant::now();
118 let transaction = connection.transaction()?;
119 let mut read_operations = 0;
120 let mut write_operations = 0;
121 let mut checksum = 0_i64;
122 {
123 let mut point_lookup = transaction.prepare("SELECT value FROM kv WHERE id = ?1")?;
124 let mut point_update =
125 transaction.prepare("UPDATE kv SET value = value + ?2 WHERE id = ?1")?;
126 for operation_index in 0..config.operation_count {
127 let key_index = operation_index % config.key_count;
128 let key = i64::try_from(key_index + 1)?;
129 let cycle_index = operation_index % OPERATIONS_PER_CYCLE;
130 if cycle_index < READ_OPERATIONS_PER_CYCLE {
131 let value = point_lookup.query_row(params![key], |row| row.get::<_, i64>(0))?;
132 checksum = checksum.wrapping_add(value);
133 read_operations += 1;
134 } else {
135 let changed_rows = point_update.execute(params![key, WRITE_INCREMENT])?;
136 if changed_rows != 1 {
137 return Err(io::Error::other(format!(
138 "point update changed {changed_rows} rows for key {key}"
139 ))
140 .into());
141 }
142 write_operations += 1;
143 }
144 }
145 }
146 transaction.commit()?;
147 let elapsed = started.elapsed();
148 let stats = WorkloadStats {
149 read_operations,
150 write_operations,
151 checksum,
152 elapsed,
153 };
154 if stats.operation_count() != config.operation_count {
155 return Err(io::Error::other(format!(
156 "completed {} of {} workload operations",
157 stats.operation_count(),
158 config.operation_count
159 ))
160 .into());
161 }
162 Ok(stats)
163}Sourcepub fn get_ref<I>(&self, idx: I) -> Result<ValueRef<'_>, Error>where
I: RowIndex,
pub fn get_ref<I>(&self, idx: I) -> Result<ValueRef<'_>, Error>where
I: RowIndex,
Get the value of a particular column of the result row as a ValueRef,
allowing data to be read out of a row without copying.
This ValueRef is valid only as long as this Row, which is enforced by
its lifetime. This means that while this method is completely safe,
it can be somewhat difficult to use, and most callers will be better
served by get or get_unwrap.
§Failure
Returns an Error::InvalidColumnIndex if idx is outside the valid
column range for this row.
Returns an Error::InvalidColumnName if idx is not a valid column
name for this row.
Sourcepub fn get_ref_unwrap<I>(&self, idx: I) -> ValueRef<'_>where
I: RowIndex,
pub fn get_ref_unwrap<I>(&self, idx: I) -> ValueRef<'_>where
I: RowIndex,
Get the value of a particular column of the result row as a ValueRef,
allowing data to be read out of a row without copying.
This ValueRef is valid only as long as this Row, which is enforced by
its lifetime. This means that while this method is completely safe,
it can be difficult to use, and most callers will be better served by
get or get_unwrap.
§Panics
Panics if calling row.get_ref(idx) would return an
error, including:
- If
idxis outside the range of columns in the returned query. - If
idxis not a valid column name for this row.