From 4b97da8a03d9d2747cf70ede6dc3ca3388e8266c Mon Sep 17 00:00:00 2001 From: Igor Kuznetsov <kuznetsovin@gmail.com> Date: Mon, 1 Nov 2021 10:47:58 +0300 Subject: [PATCH] feat: add new query type test --- src/query.rs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/query.rs b/src/query.rs index 4290fa2b59..33c291ad06 100644 --- a/src/query.rs +++ b/src/query.rs @@ -518,6 +518,38 @@ mod tests { assert_eq!(q.transform().unwrap(), expected_result) } + #[test] + fn test_transform_complex_in_ext_cond() { + let test_query = "SELECT * FROM ( + SELECT * FROM \"complex_idx_test\" WHERE \"sys_from\" <= 0 AND \"sys_to\" >= 0 + UNION ALL + SELECT * FROM \"complex_idx_test\" WHERE \"sys_from\" <= 0 + ) AS \"t3\" + WHERE (\"identification_number\" = 1 OR (\"identification_number\" = 100 OR \"identification_number\" = 1000)) + AND ((\"product_code\" = \"222\" OR \"product_code\" = \"111\") AND \"amount\" > 0) + "; + + let first_sub_query = "SELECT * FROM \"complex_idx_test\" WHERE ((\"identification_number\" = 1 OR (\"identification_number\" = 100 OR \"identification_number\" = 1000)) AND ((\"product_code\" = \"222\" OR \"product_code\" = \"111\") AND \"amount\" > 0)) AND (\"sys_from\" <= 0 AND \"sys_to\" >= 0)".to_string(); + let second_sub_query = "SELECT * FROM \"complex_idx_test\" WHERE ((\"identification_number\" = 1 OR (\"identification_number\" = 100 OR \"identification_number\" = 1000)) AND ((\"product_code\" = \"222\" OR \"product_code\" = \"111\") AND \"amount\" > 0)) AND (\"sys_from\" <= 0)".to_string(); + let mut expected_result = Vec::new(); + expected_result.push(QueryResult { bucket_id: 2926, node_query: first_sub_query.clone() }); + expected_result.push(QueryResult { bucket_id: 22115, node_query: first_sub_query.clone() }); + expected_result.push(QueryResult { bucket_id: 6672, node_query: first_sub_query.clone() }); + expected_result.push(QueryResult { bucket_id: 4202, node_query: first_sub_query.clone() }); + expected_result.push(QueryResult { bucket_id: 23259, node_query: first_sub_query.clone() }); + expected_result.push(QueryResult { bucket_id: 6557, node_query: first_sub_query.clone() }); + expected_result.push(QueryResult { bucket_id: 2926, node_query: second_sub_query.clone() }); + expected_result.push(QueryResult { bucket_id: 22115, node_query: second_sub_query.clone() }); + expected_result.push(QueryResult { bucket_id: 6672, node_query: second_sub_query.clone() }); + expected_result.push(QueryResult { bucket_id: 4202, node_query: second_sub_query.clone() }); + expected_result.push(QueryResult { bucket_id: 23259, node_query: second_sub_query.clone() }); + expected_result.push(QueryResult { bucket_id: 6557, node_query: second_sub_query.clone() }); + + let s = ClusterSchema::from(TEST_SCHEMA.to_string()); + let q = UserQuery::new(test_query, s, 30000).unwrap(); + assert_eq!(q.transform().unwrap(), expected_result) + } + #[test] fn test_unsupported_query() { let s = ClusterSchema::from(TEST_SCHEMA.to_string()); -- GitLab