wip logical plan
This commit is contained in:
parent
5ee4c6f2c2
commit
93970e6ddc
@ -1,5 +1,5 @@
|
||||
type logical_plan =
|
||||
| Project of logical_plan * string list
|
||||
| Project of logical_plan option * string list
|
||||
| Scan of string (* Table name *)
|
||||
| Filter of logical_plan
|
||||
| Join of logical_plan * Ast.join_type * logical_plan
|
||||
@ -7,9 +7,14 @@ type logical_plan =
|
||||
|
||||
let rec ast_to_logical ast =
|
||||
match ast with
|
||||
| Ast.Select(cols, _) -> Project(Scan("table"), (columns_to_logical cols))
|
||||
| Ast.Select(cols, table_exp) -> Project((table_expression_to_logical table_exp), (columns_to_logical cols))
|
||||
| _ -> failwith "Query not supported yet"
|
||||
|
||||
and table_expression_to_logical table_exp =
|
||||
match table_exp with
|
||||
| Ast.TableExpression(Some(tables), None, None) -> tables_to_logical tables
|
||||
| _ -> failwith "Table expression not supported yet"
|
||||
|
||||
and columns_to_logical columns =
|
||||
let rec aux cols acc =
|
||||
match cols with
|
||||
@ -26,9 +31,19 @@ and expression_to_logical exp =
|
||||
| Ast.Ref(s) -> s
|
||||
| _ -> failwith "Expression not supported yet"
|
||||
|
||||
and tables_to_logical tables =
|
||||
let rec aux t =
|
||||
match t with
|
||||
| [] -> None
|
||||
| [Ast.Table(table_name)] -> Some(Scan(table_name))
|
||||
| _ -> failwith "tables not supported"
|
||||
in
|
||||
match tables with
|
||||
| None -> None
|
||||
| Some(t) -> aux t
|
||||
|
||||
|
||||
let rec pp_logical_plan plan =
|
||||
match plan with
|
||||
| Project(plan2, name) -> pp_logical_plan plan2 ^ (String.concat ";" name)
|
||||
| _ -> "Not supported"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user