From 93f3d33d74454078974a938172f53de7b3eb36e0 Mon Sep 17 00:00:00 2001 From: cedretaber Date: Thu, 24 Aug 2023 00:08:32 +0900 Subject: [PATCH] Fixed auto-generated variable names did not follow grammar specifications. --- src/inlining.ml | 2 +- src/sql2ast.ml | 6 +-- test/inlining_test.ml | 18 ++++----- test/sql2ast_test.ml | 92 +++++++++++++++++++++---------------------- 4 files changed, 59 insertions(+), 59 deletions(-) diff --git a/src/inlining.ml b/src/inlining.ml index 1be51bf..96e2fd9 100644 --- a/src/inlining.ml +++ b/src/inlining.ml @@ -4,7 +4,7 @@ open Utils (** The prefix used for variables generated during inlining. *) -let generated_variable_prefix = "GenV" +let generated_variable_prefix = "GENV" type named_var = diff --git a/src/sql2ast.ml b/src/sql2ast.ml index a447b56..2ff5e4d 100644 --- a/src/sql2ast.ml +++ b/src/sql2ast.ml @@ -168,7 +168,7 @@ let update_to_datalog (update : sql_update) (columns : sql_column_name list) : ( * The variable names are generated by sequential numbering from `V0`. *) let column_var_list = columns - |> make_column_var_list (fun idx _ -> Expr.NamedVar (Printf.sprintf "GenV%d" (idx + 1))) in + |> make_column_var_list (fun idx _ -> Expr.NamedVar (Printf.sprintf "GENV%d" (idx + 1))) in let colvarmap = make_colvarmap column_var_list in (* @@ -195,9 +195,9 @@ let update_to_datalog (update : sql_update) (columns : sql_column_name list) : ( |> make_column_var_list (fun idx column_name -> let column_name = string_of_sql_column_ignore_instance (None, column_name) in if ColumnSet.exists (fun c -> c = column_name) in_set then - Expr.NamedVar (Printf.sprintf "GenV%d_2" (idx + 1)) + Expr.NamedVar (Printf.sprintf "GENV%d_2" (idx + 1)) else - Expr.NamedVar (Printf.sprintf "GenV%d" (idx + 1)) + Expr.NamedVar (Printf.sprintf "GENV%d" (idx + 1)) ) in let colvarmap' = make_colvarmap column_var_list' in diff --git a/test/inlining_test.ml b/test/inlining_test.ml index 6e0743c..7296210 100644 --- a/test/inlining_test.ml +++ b/test/inlining_test.ml @@ -92,8 +92,8 @@ let main () = bar(A, B) :- qux(A, B, _). *) expected = make_lines [ - "+foo(X) :- qux(X, GenV1, GenV3)."; - "bar(A, B) :- qux(A, B, GenV2)."; + "+foo(X) :- qux(X, GENV1, GENV3)."; + "bar(A, B) :- qux(A, B, GENV2)."; ]; }; { @@ -110,8 +110,8 @@ let main () = bar(A, B) :- qux(A, B, _). *) expected = make_lines [ - "+foo(X, Y) :- qux(X, GenV1, GenV4) , qux(Y, GenV2, GenV5)."; - "bar(A, B) :- qux(A, B, GenV3)."; + "+foo(X, Y) :- qux(X, GENV1, GENV4) , qux(Y, GENV2, GENV5)."; + "bar(A, B) :- qux(A, B, GENV3)."; ]; }; { @@ -127,10 +127,10 @@ let main () = bar(B) :- thud(_, B). *) expected = make_lines [ - "+foo(X) :- qux(X, GenV3)."; - "+foo(X) :- thud(GenV4, X)."; - "bar(A) :- qux(A, GenV1)."; - "bar(B) :- thud(GenV2, B)."; + "+foo(X) :- qux(X, GENV3)."; + "+foo(X) :- thud(GENV4, X)."; + "bar(A) :- qux(A, GENV1)."; + "bar(B) :- thud(GENV2, B)."; ]; }; { @@ -147,7 +147,7 @@ let main () = bar(B) :- qux(A, B), A = 42. *) expected = make_lines [ - "+foo(X) :- qux(GenV1, X) , GenV1 = 42."; + "+foo(X) :- qux(GENV1, X) , GENV1 = 42."; "bar(B) :- qux(A, B) , A = 42."; ]; }; diff --git a/test/sql2ast_test.ml b/test/sql2ast_test.ml index 71639a1..2f4eca2 100644 --- a/test/sql2ast_test.ml +++ b/test/sql2ast_test.ml @@ -64,8 +64,8 @@ let main () = * dname = 'Dev' * * datalog: - * -ced(GenV1, GenV2) :- ced(GenV1, GenV2), GenV2 = 'Dev', GenV2 <> 'R&D'. - * +ced(GenV1, GenV2) :- GenV2 = 'R&D', -ced(GenV1, GenV2_2) + * -ced(GENV1, GENV2) :- ced(GENV1, GENV2), GENV2 = 'Dev', GENV2 <> 'R&D'. + * +ced(GENV1, GENV2) :- GENV2 = 'R&D', -ced(GENV1, GENV2_2) * *) input = ( @@ -84,18 +84,18 @@ let main () = ); expected = [ ( - Deltadelete ("ced", [NamedVar "GenV1"; NamedVar "GenV2"]), + Deltadelete ("ced", [NamedVar "GENV1"; NamedVar "GENV2"]), [ - Rel (Pred ("ced", [NamedVar "GenV1"; NamedVar "GenV2"])); - Equat (Equation ("=", (Var (NamedVar "GenV2")), (Var (ConstVar (String "'Dev'"))))); - Equat (Equation ("<>", (Var (NamedVar "GenV2")), (Var (ConstVar (String "'R&D'"))))) + Rel (Pred ("ced", [NamedVar "GENV1"; NamedVar "GENV2"])); + Equat (Equation ("=", (Var (NamedVar "GENV2")), (Var (ConstVar (String "'Dev'"))))); + Equat (Equation ("<>", (Var (NamedVar "GENV2")), (Var (ConstVar (String "'R&D'"))))) ] ); ( - Deltainsert ("ced", [NamedVar "GenV1"; NamedVar "GenV2"]), + Deltainsert ("ced", [NamedVar "GENV1"; NamedVar "GENV2"]), [ - Equat (Equation ("=", (Var (NamedVar "GenV2")), (Var (ConstVar (String "'R&D'"))))); - Rel (Deltadelete ("ced", [NamedVar "GenV1"; NamedVar "GenV2_2"])); + Equat (Equation ("=", (Var (NamedVar "GENV2")), (Var (ConstVar (String "'R&D'"))))); + Rel (Deltadelete ("ced", [NamedVar "GENV1"; NamedVar "GENV2_2"])); ] ) ] @@ -115,10 +115,10 @@ let main () = * AND c3 = 'v100' * * datalog: - * -t(GenV1, GenV2, GenV3, GenV4, GenV5, GenV6) :- t(GenV1, GenV2, GenV3, GenV4, GenV5, GenV6), GenV2 = 'v2', GenV3 = 'v100', GenV1 <> 'v1'. - * -t(GenV1, GenV2, GenV3, GenV4, GenV5, GenV6) :- t(GenV1, GenV2, GenV3, GenV4, GenV5, GenV6), GenV2 = 'v2', GenV3 = 'v100', GenV3 <> 'v3'. - * -t(GenV1, GenV2, GenV3, GenV4, GenV5, GenV6) :- t(GenV1, GenV2, GenV3, GenV4, GenV5, GenV6), GenV2 = 'v2', GenV3 = 'v100', GenV5 <> 'v5'. - * +t(GenV1, GenV2, GenV3, GenV4, GenV5, GenV6) :- GenV1 = 'v1', GenV3 = 'v3', GenV5 = 'v5', -t(GenV1_2, GenV2, GenV3_2, GenV4, GenV5_2, GenV6). + * -t(GENV1, GENV2, GENV3, GENV4, GENV5, GENV6) :- t(GENV1, GENV2, GENV3, GENV4, GENV5, GENV6), GENV2 = 'v2', GENV3 = 'v100', GENV1 <> 'v1'. + * -t(GENV1, GENV2, GENV3, GENV4, GENV5, GENV6) :- t(GENV1, GENV2, GENV3, GENV4, GENV5, GENV6), GENV2 = 'v2', GENV3 = 'v100', GENV3 <> 'v3'. + * -t(GENV1, GENV2, GENV3, GENV4, GENV5, GENV6) :- t(GENV1, GENV2, GENV3, GENV4, GENV5, GENV6), GENV2 = 'v2', GENV3 = 'v100', GENV5 <> 'v5'. + * +t(GENV1, GENV2, GENV3, GENV4, GENV5, GENV6) :- GENV1 = 'v1', GENV3 = 'v3', GENV5 = 'v5', -t(GENV1_2, GENV2, GENV3_2, GENV4, GENV5_2, GENV6). * *) input = ( @@ -146,39 +146,39 @@ let main () = ); expected = [ ( - Deltadelete ("t", [NamedVar "GenV1"; NamedVar "GenV2"; NamedVar "GenV3"; NamedVar "GenV4"; NamedVar "GenV5"; NamedVar "GenV6"]), + Deltadelete ("t", [NamedVar "GENV1"; NamedVar "GENV2"; NamedVar "GENV3"; NamedVar "GENV4"; NamedVar "GENV5"; NamedVar "GENV6"]), [ - Rel (Pred ("t", [NamedVar "GenV1"; NamedVar "GenV2"; NamedVar "GenV3"; NamedVar "GenV4"; NamedVar "GenV5"; NamedVar "GenV6"])); - Equat (Equation ("=", (Var (NamedVar "GenV2")), (Var (ConstVar (String "'v2'"))))); - Equat (Equation ("=", (Var (NamedVar "GenV3")), (Var (ConstVar (String "'v100'"))))); - Equat (Equation ("<>", (Var (NamedVar "GenV1")), (Var (ConstVar (String "'v1'"))))) + Rel (Pred ("t", [NamedVar "GENV1"; NamedVar "GENV2"; NamedVar "GENV3"; NamedVar "GENV4"; NamedVar "GENV5"; NamedVar "GENV6"])); + Equat (Equation ("=", (Var (NamedVar "GENV2")), (Var (ConstVar (String "'v2'"))))); + Equat (Equation ("=", (Var (NamedVar "GENV3")), (Var (ConstVar (String "'v100'"))))); + Equat (Equation ("<>", (Var (NamedVar "GENV1")), (Var (ConstVar (String "'v1'"))))) ] ); ( - Deltadelete ("t", [NamedVar "GenV1"; NamedVar "GenV2"; NamedVar "GenV3"; NamedVar "GenV4"; NamedVar "GenV5"; NamedVar "GenV6"]), + Deltadelete ("t", [NamedVar "GENV1"; NamedVar "GENV2"; NamedVar "GENV3"; NamedVar "GENV4"; NamedVar "GENV5"; NamedVar "GENV6"]), [ - Rel (Pred ("t", [NamedVar "GenV1"; NamedVar "GenV2"; NamedVar "GenV3"; NamedVar "GenV4"; NamedVar "GenV5"; NamedVar "GenV6"])); - Equat (Equation ("=", (Var (NamedVar "GenV2")), (Var (ConstVar (String "'v2'"))))); - Equat (Equation ("=", (Var (NamedVar "GenV3")), (Var (ConstVar (String "'v100'"))))); - Equat (Equation ("<>", (Var (NamedVar "GenV3")), (Var (ConstVar (String "'v3'"))))) + Rel (Pred ("t", [NamedVar "GENV1"; NamedVar "GENV2"; NamedVar "GENV3"; NamedVar "GENV4"; NamedVar "GENV5"; NamedVar "GENV6"])); + Equat (Equation ("=", (Var (NamedVar "GENV2")), (Var (ConstVar (String "'v2'"))))); + Equat (Equation ("=", (Var (NamedVar "GENV3")), (Var (ConstVar (String "'v100'"))))); + Equat (Equation ("<>", (Var (NamedVar "GENV3")), (Var (ConstVar (String "'v3'"))))) ] ); ( - Deltadelete ("t", [NamedVar "GenV1"; NamedVar "GenV2"; NamedVar "GenV3"; NamedVar "GenV4"; NamedVar "GenV5"; NamedVar "GenV6"]), + Deltadelete ("t", [NamedVar "GENV1"; NamedVar "GENV2"; NamedVar "GENV3"; NamedVar "GENV4"; NamedVar "GENV5"; NamedVar "GENV6"]), [ - Rel (Pred ("t", [NamedVar "GenV1"; NamedVar "GenV2"; NamedVar "GenV3"; NamedVar "GenV4"; NamedVar "GenV5"; NamedVar "GenV6"])); - Equat (Equation ("=", (Var (NamedVar "GenV2")), (Var (ConstVar (String "'v2'"))))); - Equat (Equation ("=", (Var (NamedVar "GenV3")), (Var (ConstVar (String "'v100'"))))); - Equat (Equation ("<>", (Var (NamedVar "GenV5")), (Var (ConstVar (String "'v5'"))))) + Rel (Pred ("t", [NamedVar "GENV1"; NamedVar "GENV2"; NamedVar "GENV3"; NamedVar "GENV4"; NamedVar "GENV5"; NamedVar "GENV6"])); + Equat (Equation ("=", (Var (NamedVar "GENV2")), (Var (ConstVar (String "'v2'"))))); + Equat (Equation ("=", (Var (NamedVar "GENV3")), (Var (ConstVar (String "'v100'"))))); + Equat (Equation ("<>", (Var (NamedVar "GENV5")), (Var (ConstVar (String "'v5'"))))) ] ); ( - Deltainsert ("t", [NamedVar "GenV1"; NamedVar "GenV2"; NamedVar "GenV3"; NamedVar "GenV4"; NamedVar "GenV5"; NamedVar "GenV6"]), + Deltainsert ("t", [NamedVar "GENV1"; NamedVar "GENV2"; NamedVar "GENV3"; NamedVar "GENV4"; NamedVar "GENV5"; NamedVar "GENV6"]), [ - Equat (Equation ("=", (Var (NamedVar "GenV1")), (Var (ConstVar (String "'v1'"))))); - Equat (Equation ("=", (Var (NamedVar "GenV3")), (Var (ConstVar (String "'v3'"))))); - Equat (Equation ("=", (Var (NamedVar "GenV5")), (Var (ConstVar (String "'v5'"))))); - Rel (Deltadelete ("t", [NamedVar "GenV1_2"; NamedVar "GenV2"; NamedVar "GenV3_2"; NamedVar "GenV4"; NamedVar "GenV5_2"; NamedVar "GenV6"])); + Equat (Equation ("=", (Var (NamedVar "GENV1")), (Var (ConstVar (String "'v1'"))))); + Equat (Equation ("=", (Var (NamedVar "GENV3")), (Var (ConstVar (String "'v3'"))))); + Equat (Equation ("=", (Var (NamedVar "GENV5")), (Var (ConstVar (String "'v5'"))))); + Rel (Deltadelete ("t", [NamedVar "GENV1_2"; NamedVar "GENV2"; NamedVar "GENV3_2"; NamedVar "GENV4"; NamedVar "GENV5_2"; NamedVar "GENV6"])); ] ) ] @@ -194,9 +194,9 @@ let main () = * c2 = c3 * * datalog: - * -t(GenV1, GenV2, GenV3, GenV4) :- t(GenV1, GenV2, GenV3, GenV4), GenV1 <> GenV2. - * -t(GenV1, GenV2, GenV3, GenV4) :- t(GenV1, GenV2, GenV3, GenV4), GenV2 <> GenV3. - * +t(GenV1, GenV2, GenV3, GenV4) :- GenV1 = GenV2_2, GenV2 = GenV3, -t(GenV1_2, GenV2_2, GenV3, GenV4). + * -t(GENV1, GENV2, GENV3, GENV4) :- t(GENV1, GENV2, GENV3, GENV4), GENV1 <> GENV2. + * -t(GENV1, GENV2, GENV3, GENV4) :- t(GENV1, GENV2, GENV3, GENV4), GENV2 <> GENV3. + * +t(GENV1, GENV2, GENV3, GENV4) :- GENV1 = GENV2_2, GENV2 = GENV3, -t(GENV1_2, GENV2_2, GENV3, GENV4). * *) input = ( @@ -212,25 +212,25 @@ let main () = ); expected = [ ( - Deltadelete ("t", [NamedVar "GenV1"; NamedVar "GenV2"; NamedVar "GenV3"; NamedVar "GenV4"]), + Deltadelete ("t", [NamedVar "GENV1"; NamedVar "GENV2"; NamedVar "GENV3"; NamedVar "GENV4"]), [ - Rel (Pred ("t", [NamedVar "GenV1"; NamedVar "GenV2"; NamedVar "GenV3"; NamedVar "GenV4"])); - Equat (Equation ("<>", (Var (NamedVar "GenV1")), (Var (NamedVar "GenV2")))) + Rel (Pred ("t", [NamedVar "GENV1"; NamedVar "GENV2"; NamedVar "GENV3"; NamedVar "GENV4"])); + Equat (Equation ("<>", (Var (NamedVar "GENV1")), (Var (NamedVar "GENV2")))) ] ); ( - Deltadelete ("t", [NamedVar "GenV1"; NamedVar "GenV2"; NamedVar "GenV3"; NamedVar "GenV4"]), + Deltadelete ("t", [NamedVar "GENV1"; NamedVar "GENV2"; NamedVar "GENV3"; NamedVar "GENV4"]), [ - Rel (Pred ("t", [NamedVar "GenV1"; NamedVar "GenV2"; NamedVar "GenV3"; NamedVar "GenV4"])); - Equat (Equation ("<>", (Var (NamedVar "GenV2")), (Var (NamedVar "GenV3")))) + Rel (Pred ("t", [NamedVar "GENV1"; NamedVar "GENV2"; NamedVar "GENV3"; NamedVar "GENV4"])); + Equat (Equation ("<>", (Var (NamedVar "GENV2")), (Var (NamedVar "GENV3")))) ] ); ( - Deltainsert ("t", [NamedVar "GenV1"; NamedVar "GenV2"; NamedVar "GenV3"; NamedVar "GenV4"]), + Deltainsert ("t", [NamedVar "GENV1"; NamedVar "GENV2"; NamedVar "GENV3"; NamedVar "GENV4"]), [ - Equat (Equation ("=", (Var (NamedVar "GenV1")), (Var (NamedVar "GenV2_2")))); - Equat (Equation ("=", (Var (NamedVar "GenV2")), (Var (NamedVar "GenV3")))); - Rel (Deltadelete ("t", [NamedVar "GenV1_2"; NamedVar "GenV2_2"; NamedVar "GenV3"; NamedVar "GenV4"])); + Equat (Equation ("=", (Var (NamedVar "GENV1")), (Var (NamedVar "GENV2_2")))); + Equat (Equation ("=", (Var (NamedVar "GENV2")), (Var (NamedVar "GENV3")))); + Rel (Deltadelete ("t", [NamedVar "GENV1_2"; NamedVar "GENV2_2"; NamedVar "GENV3"; NamedVar "GENV4"])); ] ) ]