type logical_plan = | Project of logical_plan * string | Scan of string (* Table name *) | Filter of logical_plan | Join of logical_plan * Ast.join_type * logical_plan | Group of logical_plan * string list let ast_to_logical ast = match ast with | Ast.Select(_, _) -> Project(Scan("table"), "ok") | _ -> failwith "Query not supported yet" let rec pp_logical_plan plan = match plan with | Project(plan2, name) -> pp_logical_plan plan2 ^ name | _ -> "Not supported"