diff --git a/src/query.rs b/src/query.rs
index 4290fa2b5900a8c77814ec7e17755da0e6c737ed..33c291ad06c31eb81ba2d1bde3e5f1928d54160f 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());