|
| 1 | +use assert_matches::assert_matches; |
1 | 2 | use futures::TryStreamExt;
|
| 3 | +use scylla::errors::PagerExecutionError; |
2 | 4 | use scylla::{
|
3 | 5 | batch::{Batch, BatchType},
|
4 | 6 | client::session::Session,
|
@@ -136,6 +138,44 @@ async fn query_iter_should_iterate_over_all_pages_asynchronously_cross_partition
|
136 | 138 | assert_eq!(i, 2 * ROWS_PER_PARTITION);
|
137 | 139 | }
|
138 | 140 |
|
| 141 | +#[tokio::test] |
| 142 | +async fn query_iter_no_results() { |
| 143 | + let (session, ks) = initialize_cluster_two_partitions().await; |
| 144 | + |
| 145 | + let query = Query::new(format!("SELECT * FROM {}.t where k0 = ?", ks)); |
| 146 | + |
| 147 | + let query_result = session.query_iter(query, ("part3",)).await.unwrap(); |
| 148 | + let mut iter = query_result.rows_stream::<(String, i32, i32)>().unwrap(); |
| 149 | + |
| 150 | + assert_eq!(iter.try_next().await.unwrap(), None); |
| 151 | +} |
| 152 | + |
| 153 | +#[tokio::test] |
| 154 | +async fn query_iter_prepare_error() { |
| 155 | + let (session, ks) = initialize_cluster_two_partitions().await; |
| 156 | + |
| 157 | + // Wrong table name |
| 158 | + let query = Query::new(format!("SELECT * FROM {}.test where k0 = ?", ks)); |
| 159 | + |
| 160 | + assert_matches!( |
| 161 | + session.query_iter(query, (PARTITION_KEY1,)).await, |
| 162 | + Err(PagerExecutionError::PrepareError(_)) |
| 163 | + ); |
| 164 | +} |
| 165 | + |
| 166 | +#[tokio::test] |
| 167 | +async fn query_iter_serialization_error() { |
| 168 | + let (session, ks) = initialize_cluster_two_partitions().await; |
| 169 | + |
| 170 | + let query = Query::new(format!("SELECT * FROM {}.t where k0 = ?", ks)); |
| 171 | + |
| 172 | + // Wrong value type |
| 173 | + assert_matches!( |
| 174 | + session.query_iter(query, (1,)).await, |
| 175 | + Err(PagerExecutionError::SerializationError(_)) |
| 176 | + ); |
| 177 | +} |
| 178 | + |
139 | 179 | #[tokio::test]
|
140 | 180 | async fn execute_single_page_should_only_iterate_over_rows_in_current_page() {
|
141 | 181 | let (session, ks) = initialize_cluster_two_partitions().await;
|
@@ -221,3 +261,37 @@ async fn execute_iter_should_iterate_over_all_pages_asynchronously_cross_partiti
|
221 | 261 | }
|
222 | 262 | assert_eq!(i, 2 * ROWS_PER_PARTITION);
|
223 | 263 | }
|
| 264 | + |
| 265 | +#[tokio::test] |
| 266 | +async fn execute_iter_no_results() { |
| 267 | + let (session, ks) = initialize_cluster_two_partitions().await; |
| 268 | + |
| 269 | + let prepared_query = session |
| 270 | + .prepare(format!("SELECT * FROM {}.t where k0 = ?", ks)) |
| 271 | + .await |
| 272 | + .unwrap(); |
| 273 | + |
| 274 | + let query_result = session |
| 275 | + .execute_iter(prepared_query, ("part3",)) |
| 276 | + .await |
| 277 | + .unwrap(); |
| 278 | + let mut iter = query_result.rows_stream::<(String, i32, i32)>().unwrap(); |
| 279 | + |
| 280 | + assert_eq!(iter.try_next().await.unwrap(), None); |
| 281 | +} |
| 282 | + |
| 283 | +#[tokio::test] |
| 284 | +async fn execute_iter_serialization_error() { |
| 285 | + let (session, ks) = initialize_cluster_two_partitions().await; |
| 286 | + |
| 287 | + let prepared_query = session |
| 288 | + .prepare(format!("SELECT * FROM {}.t where k0 = ?", ks)) |
| 289 | + .await |
| 290 | + .unwrap(); |
| 291 | + |
| 292 | + // Wrong value type |
| 293 | + assert_matches!( |
| 294 | + session.execute_iter(prepared_query, (1,)).await, |
| 295 | + Err(PagerExecutionError::SerializationError(_)) |
| 296 | + ) |
| 297 | +} |
0 commit comments