Skip to content

Commit e3425e1

Browse files
committed
tests: introduce integration test for prepared statement metadata
I noticed that `get_variable_col_specs` and `get_result_set_col_specs` methods were not tested anywhere. I added a simple test case for them.
1 parent 5222eb2 commit e3425e1

File tree

2 files changed

+58
-0
lines changed

2 files changed

+58
-0
lines changed

scylla/tests/integration/main.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,6 @@ mod shards;
1717
mod silent_prepare_batch;
1818
mod silent_prepare_query;
1919
mod skip_metadata_optimization;
20+
mod statement;
2021
mod tablets;
2122
pub(crate) mod utils;
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
use scylla::cluster::metadata::{ColumnType, NativeType};
2+
use scylla::frame::response::result::{ColumnSpec, TableSpec};
3+
4+
use crate::utils::{create_new_session_builder, setup_tracing, unique_keyspace_name, PerformDDL};
5+
6+
#[tokio::test]
7+
async fn test_prepared_statement_col_specs() {
8+
setup_tracing();
9+
let session = create_new_session_builder().build().await.unwrap();
10+
11+
let ks = unique_keyspace_name();
12+
session
13+
.ddl(format!(
14+
"CREATE KEYSPACE IF NOT EXISTS {} WITH REPLICATION =
15+
{{'class' : 'NetworkTopologyStrategy', 'replication_factor' : 3}}",
16+
ks
17+
))
18+
.await
19+
.unwrap();
20+
session.use_keyspace(&ks, false).await.unwrap();
21+
22+
session
23+
.ddl(
24+
"CREATE TABLE t (k1 int, k2 varint, c1 timestamp,
25+
a tinyint, b text, c smallint, PRIMARY KEY ((k1, k2), c1))",
26+
)
27+
.await
28+
.unwrap();
29+
30+
let spec = |name: &'static str, typ: ColumnType<'static>| -> ColumnSpec<'_> {
31+
ColumnSpec::borrowed(name, typ, TableSpec::borrowed(&ks, "t"))
32+
};
33+
34+
let prepared = session
35+
.prepare("SELECT * FROM t WHERE k1 = ? AND k2 = ? AND c1 > ?")
36+
.await
37+
.unwrap();
38+
39+
let variable_col_specs = prepared.get_variable_col_specs().as_slice();
40+
let expected_variable_col_specs = &[
41+
spec("k1", ColumnType::Native(NativeType::Int)),
42+
spec("k2", ColumnType::Native(NativeType::Varint)),
43+
spec("c1", ColumnType::Native(NativeType::Timestamp)),
44+
];
45+
assert_eq!(variable_col_specs, expected_variable_col_specs);
46+
47+
let result_set_col_specs = prepared.get_result_set_col_specs().as_slice();
48+
let expected_result_set_col_specs = &[
49+
spec("k1", ColumnType::Native(NativeType::Int)),
50+
spec("k2", ColumnType::Native(NativeType::Varint)),
51+
spec("c1", ColumnType::Native(NativeType::Timestamp)),
52+
spec("a", ColumnType::Native(NativeType::TinyInt)),
53+
spec("b", ColumnType::Native(NativeType::Text)),
54+
spec("c", ColumnType::Native(NativeType::SmallInt)),
55+
];
56+
assert_eq!(result_set_col_specs, expected_result_set_col_specs);
57+
}

0 commit comments

Comments
 (0)