diff --git a/src/ast2sql.ml b/src/ast2sql.ml index 22fb365..fd67724 100644 --- a/src/ast2sql.ml +++ b/src/ast2sql.ml @@ -2505,6 +2505,7 @@ let convert_expr_to_operation_based_sql (expr : expr) : (sql_operation list, err table_env |> TableEnv.add table cols ) TableEnv.empty in + let (view_name, _) = get_view expr in let existent_tables = table_env |> TableEnv.to_list |> List.map fst |> TableSet.of_list in let rules = List.rev expr.rules in (* `expr` holds its rules in the reversed order *) divide_rules_into_groups table_env rules >>= fun (rule_groups, table_env) -> @@ -2559,7 +2560,7 @@ let convert_expr_to_operation_based_sql (expr : expr) : (sql_operation list, err get_column_names_from_table ~error_detail:(InGroup delta_key) table_env table >>= fun cols -> let delta_env = delta_env |> DeltaEnv.add delta_key (temporary_table, cols) in let creation = SqlCreateTemporaryTable (temporary_table, sql_query) in - if TableSet.mem table existent_tables then + if table <> view_name && TableSet.mem table existent_tables then let update = match delta_kind with | Insert -> @@ -2584,7 +2585,7 @@ let convert_expr_to_operation_based_sql (expr : expr) : (sql_operation list, err in return (i + 1, creation :: creation_acc, update :: update_acc, delta_env, table_env) else - return (i + 1, creation :: creation_acc, update_acc, delta_env, table_env) + return (i + 1, creation :: creation_acc, update_acc, delta_env, table_env) ) (0, [], [], DeltaEnv.empty, table_env) >>= fun (_, creation_acc, update_acc, _, _) ->