test_remote_sort/
test_remote_sort.rs1use reifydb_client::Client;
3
4fn main() -> Result<(), Box<dyn std::error::Error>> {
5 println!("Connecting to ws://192.168.100.52:8090/\n");
6
7 let client = Client::ws(("192.168.100.52", 8090))?;
9
10 let token = std::env::var("REIFYDB_TOKEN").unwrap_or_else(|_| "root".to_string());
12 println!(
13 "Using auth token: {}\n",
14 if token == "root" {
15 "root (default)"
16 } else {
17 &token
18 }
19 );
20
21 let mut session = client.blocking_session(Some(token))?;
23
24 println!("Connected successfully!\n");
25
26 println!("=== TEST 1: ASC (should show smallest first) ===");
28 println!("Query:");
29 println!("from system.table_storage_stats");
30 println!("sort total_bytes asc\n");
31
32 let query_asc = "from system.table_storage_stats\nsort total_bytes asc";
33 let result_asc = session.query(query_asc, None)?;
34
35 if let Some(frame) = result_asc.frames.first() {
36 if let Some(total_bytes_col) = frame.columns.iter().find(|c| c.name == "total_bytes") {
37 let mut values: Vec<u64> = Vec::new();
38 for i in 0..total_bytes_col.data.len() {
39 let val = total_bytes_col.data.as_string(i).parse::<u64>().unwrap_or(0);
40 values.push(val);
41 }
42 println!("ASC Results: {:?}", values);
43 println!("First value (should be smallest): {}", values[0]);
44 println!("Last value (should be largest): {}\n", values[values.len() - 1]);
45 }
46 }
47
48 println!("=== TEST 2: DESC (should show largest first) ===");
50 println!("Query:");
51 println!("from system.table_storage_stats");
52 println!("sort total_bytes desc\n");
53
54 let query = "from system.table_storage_stats\nsort total_bytes desc";
55 let result = session.query(query, None)?;
56
57 println!("Query executed: {} frames returned\n", result.frames.len());
58
59 if let Some(frame) = result.frames.first() {
61 println!("Frame output:");
62 println!("{}\n", frame);
63
64 if let Some(total_bytes_col) = frame.columns.iter().find(|c| c.name == "total_bytes") {
66 println!("=== Analyzing total_bytes column ===");
67 let mut values: Vec<u64> = Vec::new();
68 for i in 0..total_bytes_col.data.len() {
69 let val = total_bytes_col.data.as_string(i).parse::<u64>().unwrap_or(0);
70 values.push(val);
71 println!("Row {}: {} bytes", i, val);
72 }
73
74 println!("\nValues in order: {:?}", values);
75
76 let mut is_desc_sorted = true;
78 for i in 1..values.len() {
79 if values[i - 1] < values[i] {
80 is_desc_sorted = false;
81 println!(
82 "\n⚠️ SORTING ERROR at position {}: {} < {}",
83 i,
84 values[i - 1],
85 values[i]
86 );
87 }
88 }
89
90 if is_desc_sorted {
91 println!("\n✅ Correctly sorted in DESCENDING order (largest first)");
92 } else {
93 println!("\n❌ NOT correctly sorted in descending order!");
94 println!(" Expected: Largest value first, decreasing values");
95 println!(" Got: {:?}", values);
96 }
97 }
98 }
99
100 Ok(())
101}