(
env: &mut Environment,
statement: &Statement,
data_provider: &Box<dyn DataProvider>,
gitql_object: &mut GitQLObject,
alias_table: &mut HashMap<String, String>,
hidden_selecti
| 30 | |
| 31 | #[allow(clippy::borrowed_box)] |
| 32 | pub fn execute_statement( |
| 33 | env: &mut Environment, |
| 34 | statement: &Statement, |
| 35 | data_provider: &Box<dyn DataProvider>, |
| 36 | gitql_object: &mut GitQLObject, |
| 37 | alias_table: &mut HashMap<String, String>, |
| 38 | hidden_selection: &HashMap<String, Vec<String>>, |
| 39 | has_group_by_statement: bool, |
| 40 | ) -> Result<(), String> { |
| 41 | match statement { |
| 42 | Statement::Select(statement) => execute_select_statement( |
| 43 | env, |
| 44 | statement, |
| 45 | alias_table, |
| 46 | data_provider, |
| 47 | gitql_object, |
| 48 | hidden_selection, |
| 49 | ), |
| 50 | Statement::Where(statement) => execute_where_statement(env, statement, gitql_object), |
| 51 | Statement::Having(statement) => execute_having_statement(env, statement, gitql_object), |
| 52 | Statement::Limit(statement) => execute_limit_statement(statement, gitql_object), |
| 53 | Statement::Offset(statement) => execute_offset_statement(env, statement, gitql_object), |
| 54 | Statement::OrderBy(statement) => { |
| 55 | if gitql_object.len() > 1 { |
| 56 | gitql_object.flat(); |
| 57 | } |
| 58 | let main_group_index = 0; |
| 59 | execute_order_by_statement(env, statement, gitql_object, main_group_index) |
| 60 | } |
| 61 | Statement::GroupBy(statement) => execute_group_by_statement(env, statement, gitql_object), |
| 62 | Statement::AggregateFunction(statement) => execute_aggregation_functions_statement( |
| 63 | env, |
| 64 | statement, |
| 65 | gitql_object, |
| 66 | alias_table, |
| 67 | has_group_by_statement, |
| 68 | ), |
| 69 | Statement::WindowFunction(statement) => { |
| 70 | execute_window_functions_statement(env, statement, gitql_object, alias_table) |
| 71 | } |
| 72 | Statement::Qualify(statement) => execute_qualify_statement(env, statement, gitql_object), |
| 73 | Statement::Into(statement) => execute_into_statement(statement, gitql_object), |
| 74 | } |
| 75 | } |
| 76 | |
| 77 | #[allow(clippy::borrowed_box)] |
| 78 | fn execute_select_statement( |
no test coverage detected
searching dependent graphs…