Loading src/catdata/aql/Query.java +18 −17 Changes for src/catdata/aql/Query.java: 18 added lines, 17 removed lines. Original line number Diff line number Diff line Loading @@ -9,7 +9,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors; import catdata.Chc; Loading Loading @@ -39,8 +38,8 @@ public final class Query<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2> implements Sem return Kind.QUERY; } public final Ctx<Var, Ty> params = new Ctx<>(); public final Ctx<Var, Term<Ty, Void, Sym, Void, Void, Void, Void>> consts = new Ctx<>(); public final Ctx<Var, Ty> params; //public final Ctx<Var, Term<Ty, Void, Sym, Void, Void, Void, Void>> consts = new Ctx<>(); public final Ctx<En2, Frozen<Ty, En1, Sym, Fk1, Att1>> ens = new Ctx<>(); public final Ctx<Att2, Term<Ty, En1, Sym, Fk1, Att1, Var, Var>> atts; Loading Loading @@ -72,8 +71,7 @@ public final class Query<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2> implements Sem Blob<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2> b = new Blob<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2>(conv1(ens), atts, conv2(), src, dst); b = unfoldNestedApplications(b); Query<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2> p = new Query<>(params, consts, b.ens, b.atts, b.fks, src, dst, true); Query<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2> p = new Query<>(params, new Ctx<>(), b.ens, b.atts, b.fks, src, dst, true); return p; } Loading Loading @@ -368,6 +366,7 @@ public final class Query<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2> implements Sem Util.assertNotNull(ens, atts, fks, src, dst); this.src = src; this.dst = dst; this.params = new Ctx<>(params.map); totalityCheck(ens, atts, fks); for (En2 en2 : ens.keySet()) { Loading @@ -379,11 +378,14 @@ public final class Query<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2> implements Sem throw new RuntimeException("In block for entity " + en2 + ", " + thr.getMessage()); } } Ctx<Var, Term<Ty, En1, Sym, Fk1, Att1, Var, Var>> www = new Ctx<>(); for (Var v : params.keySet()) { www.put(v, Term.Sk(v)); } for (Fk2 fk2 : fks.keySet()) { try { Boolean b = fks.get(fk2).second || doNotCheckPathEqs; this.fks.put(fk2, new LiteralTransform<>(fks.get(fk2).first.map, new HashMap<>(), this.fks.put(fk2, new LiteralTransform<>(fks.get(fk2).first.map, www.map, this.ens.get(dst.fks.get(fk2).second), this.ens.get(dst.fks.get(fk2).first), b)); doNotValidate.put(fk2, b); } catch (Throwable thr) { Loading Loading @@ -556,7 +558,7 @@ public final class Query<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2> implements Sem private DP<Ty, En1, Sym, Fk1, Att1, Var, Var> dp; public final AqlOptions options; private Ctx<Var, Ty> params; private Ctx<Var, Term<Ty, Void, Sym, Void, Void, Void, Void>> consts; //private Ctx<Var, Term<Ty, Void, Sym, Void, Void, Void, Void>> consts; public Frozen(Ctx<Var, Ty> params, Ctx<Var, Term<Ty, Void, Sym, Void, Void, Void, Void>> consts, Ctx<Var, En1> gens, Collection<Eq<Ty, En1, Sym, Fk1, Att1, Var, Var>> eqs, Loading @@ -565,7 +567,8 @@ public final class Query<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2> implements Sem this.eqs = eqs; this.schema = schema; this.params = params; this.consts = consts; // this.consts = consts; //this.sks = params; validateNoTalg(); Loading Loading @@ -640,9 +643,9 @@ public final class Query<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2> implements Sem if (!params.isEmpty()) { ret += "params " + Util.sep(params.map, ":", " "); } if (!consts.isEmpty()) { /* if (!consts.isEmpty()) { ret += "consts " + Util.sep(params.map, "=", " "); } } */ Map<String, String> m1 = new HashMap<>(); Loading Loading @@ -786,12 +789,6 @@ public final class Query<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2> implements Sem List<String> ret1 = new LinkedList<>(); Map<En2, String> ret2 = new HashMap<>(); /* * Map<En2, Triple<List<Chc<Fk2, Att2>>, List<String>, List<String>>> ss = * dst.toSQL_srcSchemas(post, "Varchar"); for (En2 en2 : dst.ens) { * ret.addAll(ss.get(en2).second); } */ for (En2 en2 : ens.keySet()) { Frozen<Ty, En1, Sym, Fk1, Att1> b = ens.get(en2); Ctx<Var, En1> gens = b.gens; Loading Loading @@ -884,12 +881,16 @@ public final class Query<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2> implements Sem String newLhs; if (eq.lhs.gen != null) { newLhs = eq.lhs.gen + "." + idCol; } else if (eq.lhs.sk != null) { newLhs = "?"; } else { newLhs = quotePrim(eq.lhs).toString(); } String newRhs; if (eq.rhs.gen != null) { newRhs = eq.rhs.gen + "." + idCol; } else if (eq.rhs.sk != null) { newRhs = "?"; } else { newRhs = quotePrim(eq.rhs).toString(); } Loading src/catdata/aql/Term.java +2 −1 Changes for src/catdata/aql/Term.java: 2 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -263,7 +263,8 @@ public final class Term<Ty, En, Sym, Fk, Att, Gen, Sk> { } else if (sk != null) { Ty tye = sks.get(sk); if (tye == null) { throw new RuntimeException("In " + this + ", " + "the type for labelled null " + sk + " is not defined"); String xxx = sks.size() > 64 ? " too big to print " : Util.sep(sks, ":", ", "); throw new RuntimeException("In " + this + ", " + "the type for labelled null " + sk + " is not defined.\n\nAvailable: " + xxx); } ret = Chc.inLeft(tye); } Loading src/catdata/aql/exp/AqlParser.java +1 −1 Changes for src/catdata/aql/exp/AqlParser.java: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -28,7 +28,7 @@ public abstract class AqlParser { "command", "graph", "exec_jdbc", "exec_js", "exec_cmdline", "literal", "add_to_classpath", "identity", "match", "attributes", "empty", "imports", "types", "constants", "functions", "equations", "forall", "java_types", "multi_equations", "pi", "toQuery", "toCoQuery", "anonymize", "frozen", "toQuery", "toCoQuery", "anonymize", "frozen", "params", "java_constants", "java_functions", "options", "entities", "src", "unique", "dst", "path_equations", "observation_equations", "generators", "rename", "remove", "modify", "foreign_keys", "lambda", "sigma", "delta", "pi", "unit", "counit", "eval", "coeval", "ed", "chase", "from", Loading src/catdata/aql/exp/CombinatorParser.java +9 −31 Changes for src/catdata/aql/exp/CombinatorParser.java: 9 added lines, 31 removed lines. Original line number Diff line number Diff line Loading @@ -1027,41 +1027,19 @@ public class CombinatorParser extends AqlParser { } private static Parser<QueryExpRaw> queryExpRaw() { /* * Parser<List<catdata.Pair<LocStr, String>>> fr = Parsers.tuple(token("from"), * env(ident, ":")).map(x -> x.b); * * Parser<catdata.Pair<Integer, catdata.Pair<RawTerm, RawTerm>>> eq = Parsers * .tuple(Parsers.INDEX, Parsers.tuple(term(), token("="), term()).map(x -> new * catdata.Pair<>(x.a, x.c))) .map(x -> new catdata.Pair<>(x.a, x.b)); * * Parser<List<catdata.Pair<Integer, catdata.Pair<RawTerm, RawTerm>>>> eqs = * Parsers .tuple(token("where"), eq.many()).map(x -> x.b); * * Parser<List<catdata.Pair<LocStr, RawTerm>>> atts = Parsers * .tuple(token("attributes"), Parsers.tuple(locstr, token("->"), term()).map(x * -> new catdata.Pair<>(x.a, x.c)).many()) .map(x -> x.b); * * Parser<List<catdata.Pair<LocStr, Trans>>> fks = Parsers * .tuple(token("foreign_keys"), Parsers.tuple(locstr, token("->"), * trans()).map(x -> new catdata.Pair<>(x.a, x.c)).many()) .map(x -> x.b); * * Parser<Tuple5<Token, LocStr, catdata.Pair<List<catdata.Pair<LocStr, String>>, * List<catdata.Pair<Integer, catdata.Pair<RawTerm, RawTerm>>>>, * Pair<List<catdata.Pair<LocStr, RawTerm>>, List<catdata.Pair<LocStr, Trans>>>, * List<catdata.Pair<String, String>>>> en = Parsers .tuple(token("entity"), * locstr.followedBy(token("->")), Parsers.tuple(token("{"), fr, eqs, * token("}")).map(x -> new catdata.Pair<>(x.b, x.c)), * Parsers.tuple(atts.optional(), fks.optional()), options); */ Parser<Tuple3<List<LocStr>, List<catdata.Pair<LocStr, PreBlock>>, List<catdata.Pair<String, String>>>> pa = Parsers .tuple(imports, preblock(false).many(), options); Parser<List<catdata.Pair<LocStr, String>>> q = Parsers.tuple(token("params"), env(ident, ":")).map(x->x.b).optional(); Parser<Tuple4<List<catdata.Pair<LocStr, String>>, List<LocStr>, List<catdata.Pair<LocStr, PreBlock>>, List<catdata.Pair<String, String>>>> pa = Parsers .tuple(q, imports, preblock(false).many(), options); Parser<Tuple5<Token, Token, SchExp<?, ?, ?, ?, ?>, SchExp<?, ?, ?, ?, ?>, Token>> l = Parsers.tuple( token("literal"), token(":"), sch_ref.lazy().followedBy(token("->")), sch_ref.lazy(), token("{")); /* * List<Pair<LocStr, String>> params, SchExp<?, ?, ?, ?, ?> c, SchExp<?, ?, ?, ?, ?> d, List<LocStr> imports, List<Pair<LocStr, PreBlock>> list, List<Pair<String, String>> options */ Parser<QueryExpRaw> ret = Parsers.tuple(l, pa, token("}")) .map(x -> new QueryExpRaw(x.a.c, x.a.d, x.b.a, Util.newIfNull(x.b.b), Util.newIfNull(x.b.c))); .map(x -> new QueryExpRaw(Util.newIfNull(x.b.a), x.a.c, x.a.d, x.b.b, Util.newIfNull(x.b.c), Util.newIfNull(x.b.d))); return ret; } Loading src/catdata/aql/exp/QueryExp.java +4 −2 Changes for src/catdata/aql/exp/QueryExp.java: 4 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -263,7 +263,9 @@ public abstract class QueryExp<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2> Query<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2> q1 = Q1.eval(env); Query<Ty, En2, Sym, Fk2, Att2, En3, Fk3, Att3> q2 = Q2.eval(env); if (!q1.params.equals(q2.params)) { throw new RuntimeException("Params do not match: " + q1.params + " and then " + q2.params); } Ctx<En3, Triple<Ctx<Var, En1>, Collection<Eq<Ty, En1, Sym, Fk1, Att1, Var, Var>>, AqlOptions>> ens = new Ctx<>(); Ctx<Att3, Term<Ty, En1, Sym, Fk1, Att1, Var, Var>> atts = new Ctx<>(); Loading Loading @@ -358,7 +360,7 @@ public abstract class QueryExp<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2> } return Query.makeQuery(ens, atts, fks, q1.src, q2.dst, return Query.makeQuery2(q1.params, new Ctx<>(), ens, atts, fks, q1.src, q2.dst, (Boolean) ops.getOrDefault(AqlOption.dont_validate_unsafe), (Boolean) ops.getOrDefault(AqlOption.query_remove_redundancy)); } Loading Loading
src/catdata/aql/Query.java +18 −17 Changes for src/catdata/aql/Query.java: 18 added lines, 17 removed lines. Original line number Diff line number Diff line Loading @@ -9,7 +9,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors; import catdata.Chc; Loading Loading @@ -39,8 +38,8 @@ public final class Query<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2> implements Sem return Kind.QUERY; } public final Ctx<Var, Ty> params = new Ctx<>(); public final Ctx<Var, Term<Ty, Void, Sym, Void, Void, Void, Void>> consts = new Ctx<>(); public final Ctx<Var, Ty> params; //public final Ctx<Var, Term<Ty, Void, Sym, Void, Void, Void, Void>> consts = new Ctx<>(); public final Ctx<En2, Frozen<Ty, En1, Sym, Fk1, Att1>> ens = new Ctx<>(); public final Ctx<Att2, Term<Ty, En1, Sym, Fk1, Att1, Var, Var>> atts; Loading Loading @@ -72,8 +71,7 @@ public final class Query<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2> implements Sem Blob<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2> b = new Blob<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2>(conv1(ens), atts, conv2(), src, dst); b = unfoldNestedApplications(b); Query<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2> p = new Query<>(params, consts, b.ens, b.atts, b.fks, src, dst, true); Query<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2> p = new Query<>(params, new Ctx<>(), b.ens, b.atts, b.fks, src, dst, true); return p; } Loading Loading @@ -368,6 +366,7 @@ public final class Query<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2> implements Sem Util.assertNotNull(ens, atts, fks, src, dst); this.src = src; this.dst = dst; this.params = new Ctx<>(params.map); totalityCheck(ens, atts, fks); for (En2 en2 : ens.keySet()) { Loading @@ -379,11 +378,14 @@ public final class Query<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2> implements Sem throw new RuntimeException("In block for entity " + en2 + ", " + thr.getMessage()); } } Ctx<Var, Term<Ty, En1, Sym, Fk1, Att1, Var, Var>> www = new Ctx<>(); for (Var v : params.keySet()) { www.put(v, Term.Sk(v)); } for (Fk2 fk2 : fks.keySet()) { try { Boolean b = fks.get(fk2).second || doNotCheckPathEqs; this.fks.put(fk2, new LiteralTransform<>(fks.get(fk2).first.map, new HashMap<>(), this.fks.put(fk2, new LiteralTransform<>(fks.get(fk2).first.map, www.map, this.ens.get(dst.fks.get(fk2).second), this.ens.get(dst.fks.get(fk2).first), b)); doNotValidate.put(fk2, b); } catch (Throwable thr) { Loading Loading @@ -556,7 +558,7 @@ public final class Query<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2> implements Sem private DP<Ty, En1, Sym, Fk1, Att1, Var, Var> dp; public final AqlOptions options; private Ctx<Var, Ty> params; private Ctx<Var, Term<Ty, Void, Sym, Void, Void, Void, Void>> consts; //private Ctx<Var, Term<Ty, Void, Sym, Void, Void, Void, Void>> consts; public Frozen(Ctx<Var, Ty> params, Ctx<Var, Term<Ty, Void, Sym, Void, Void, Void, Void>> consts, Ctx<Var, En1> gens, Collection<Eq<Ty, En1, Sym, Fk1, Att1, Var, Var>> eqs, Loading @@ -565,7 +567,8 @@ public final class Query<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2> implements Sem this.eqs = eqs; this.schema = schema; this.params = params; this.consts = consts; // this.consts = consts; //this.sks = params; validateNoTalg(); Loading Loading @@ -640,9 +643,9 @@ public final class Query<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2> implements Sem if (!params.isEmpty()) { ret += "params " + Util.sep(params.map, ":", " "); } if (!consts.isEmpty()) { /* if (!consts.isEmpty()) { ret += "consts " + Util.sep(params.map, "=", " "); } } */ Map<String, String> m1 = new HashMap<>(); Loading Loading @@ -786,12 +789,6 @@ public final class Query<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2> implements Sem List<String> ret1 = new LinkedList<>(); Map<En2, String> ret2 = new HashMap<>(); /* * Map<En2, Triple<List<Chc<Fk2, Att2>>, List<String>, List<String>>> ss = * dst.toSQL_srcSchemas(post, "Varchar"); for (En2 en2 : dst.ens) { * ret.addAll(ss.get(en2).second); } */ for (En2 en2 : ens.keySet()) { Frozen<Ty, En1, Sym, Fk1, Att1> b = ens.get(en2); Ctx<Var, En1> gens = b.gens; Loading Loading @@ -884,12 +881,16 @@ public final class Query<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2> implements Sem String newLhs; if (eq.lhs.gen != null) { newLhs = eq.lhs.gen + "." + idCol; } else if (eq.lhs.sk != null) { newLhs = "?"; } else { newLhs = quotePrim(eq.lhs).toString(); } String newRhs; if (eq.rhs.gen != null) { newRhs = eq.rhs.gen + "." + idCol; } else if (eq.rhs.sk != null) { newRhs = "?"; } else { newRhs = quotePrim(eq.rhs).toString(); } Loading
src/catdata/aql/Term.java +2 −1 Changes for src/catdata/aql/Term.java: 2 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -263,7 +263,8 @@ public final class Term<Ty, En, Sym, Fk, Att, Gen, Sk> { } else if (sk != null) { Ty tye = sks.get(sk); if (tye == null) { throw new RuntimeException("In " + this + ", " + "the type for labelled null " + sk + " is not defined"); String xxx = sks.size() > 64 ? " too big to print " : Util.sep(sks, ":", ", "); throw new RuntimeException("In " + this + ", " + "the type for labelled null " + sk + " is not defined.\n\nAvailable: " + xxx); } ret = Chc.inLeft(tye); } Loading
src/catdata/aql/exp/AqlParser.java +1 −1 Changes for src/catdata/aql/exp/AqlParser.java: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -28,7 +28,7 @@ public abstract class AqlParser { "command", "graph", "exec_jdbc", "exec_js", "exec_cmdline", "literal", "add_to_classpath", "identity", "match", "attributes", "empty", "imports", "types", "constants", "functions", "equations", "forall", "java_types", "multi_equations", "pi", "toQuery", "toCoQuery", "anonymize", "frozen", "toQuery", "toCoQuery", "anonymize", "frozen", "params", "java_constants", "java_functions", "options", "entities", "src", "unique", "dst", "path_equations", "observation_equations", "generators", "rename", "remove", "modify", "foreign_keys", "lambda", "sigma", "delta", "pi", "unit", "counit", "eval", "coeval", "ed", "chase", "from", Loading
src/catdata/aql/exp/CombinatorParser.java +9 −31 Changes for src/catdata/aql/exp/CombinatorParser.java: 9 added lines, 31 removed lines. Original line number Diff line number Diff line Loading @@ -1027,41 +1027,19 @@ public class CombinatorParser extends AqlParser { } private static Parser<QueryExpRaw> queryExpRaw() { /* * Parser<List<catdata.Pair<LocStr, String>>> fr = Parsers.tuple(token("from"), * env(ident, ":")).map(x -> x.b); * * Parser<catdata.Pair<Integer, catdata.Pair<RawTerm, RawTerm>>> eq = Parsers * .tuple(Parsers.INDEX, Parsers.tuple(term(), token("="), term()).map(x -> new * catdata.Pair<>(x.a, x.c))) .map(x -> new catdata.Pair<>(x.a, x.b)); * * Parser<List<catdata.Pair<Integer, catdata.Pair<RawTerm, RawTerm>>>> eqs = * Parsers .tuple(token("where"), eq.many()).map(x -> x.b); * * Parser<List<catdata.Pair<LocStr, RawTerm>>> atts = Parsers * .tuple(token("attributes"), Parsers.tuple(locstr, token("->"), term()).map(x * -> new catdata.Pair<>(x.a, x.c)).many()) .map(x -> x.b); * * Parser<List<catdata.Pair<LocStr, Trans>>> fks = Parsers * .tuple(token("foreign_keys"), Parsers.tuple(locstr, token("->"), * trans()).map(x -> new catdata.Pair<>(x.a, x.c)).many()) .map(x -> x.b); * * Parser<Tuple5<Token, LocStr, catdata.Pair<List<catdata.Pair<LocStr, String>>, * List<catdata.Pair<Integer, catdata.Pair<RawTerm, RawTerm>>>>, * Pair<List<catdata.Pair<LocStr, RawTerm>>, List<catdata.Pair<LocStr, Trans>>>, * List<catdata.Pair<String, String>>>> en = Parsers .tuple(token("entity"), * locstr.followedBy(token("->")), Parsers.tuple(token("{"), fr, eqs, * token("}")).map(x -> new catdata.Pair<>(x.b, x.c)), * Parsers.tuple(atts.optional(), fks.optional()), options); */ Parser<Tuple3<List<LocStr>, List<catdata.Pair<LocStr, PreBlock>>, List<catdata.Pair<String, String>>>> pa = Parsers .tuple(imports, preblock(false).many(), options); Parser<List<catdata.Pair<LocStr, String>>> q = Parsers.tuple(token("params"), env(ident, ":")).map(x->x.b).optional(); Parser<Tuple4<List<catdata.Pair<LocStr, String>>, List<LocStr>, List<catdata.Pair<LocStr, PreBlock>>, List<catdata.Pair<String, String>>>> pa = Parsers .tuple(q, imports, preblock(false).many(), options); Parser<Tuple5<Token, Token, SchExp<?, ?, ?, ?, ?>, SchExp<?, ?, ?, ?, ?>, Token>> l = Parsers.tuple( token("literal"), token(":"), sch_ref.lazy().followedBy(token("->")), sch_ref.lazy(), token("{")); /* * List<Pair<LocStr, String>> params, SchExp<?, ?, ?, ?, ?> c, SchExp<?, ?, ?, ?, ?> d, List<LocStr> imports, List<Pair<LocStr, PreBlock>> list, List<Pair<String, String>> options */ Parser<QueryExpRaw> ret = Parsers.tuple(l, pa, token("}")) .map(x -> new QueryExpRaw(x.a.c, x.a.d, x.b.a, Util.newIfNull(x.b.b), Util.newIfNull(x.b.c))); .map(x -> new QueryExpRaw(Util.newIfNull(x.b.a), x.a.c, x.a.d, x.b.b, Util.newIfNull(x.b.c), Util.newIfNull(x.b.d))); return ret; } Loading
src/catdata/aql/exp/QueryExp.java +4 −2 Changes for src/catdata/aql/exp/QueryExp.java: 4 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -263,7 +263,9 @@ public abstract class QueryExp<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2> Query<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2> q1 = Q1.eval(env); Query<Ty, En2, Sym, Fk2, Att2, En3, Fk3, Att3> q2 = Q2.eval(env); if (!q1.params.equals(q2.params)) { throw new RuntimeException("Params do not match: " + q1.params + " and then " + q2.params); } Ctx<En3, Triple<Ctx<Var, En1>, Collection<Eq<Ty, En1, Sym, Fk1, Att1, Var, Var>>, AqlOptions>> ens = new Ctx<>(); Ctx<Att3, Term<Ty, En1, Sym, Fk1, Att1, Var, Var>> atts = new Ctx<>(); Loading Loading @@ -358,7 +360,7 @@ public abstract class QueryExp<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2> } return Query.makeQuery(ens, atts, fks, q1.src, q2.dst, return Query.makeQuery2(q1.params, new Ctx<>(), ens, atts, fks, q1.src, q2.dst, (Boolean) ops.getOrDefault(AqlOption.dont_validate_unsafe), (Boolean) ops.getOrDefault(AqlOption.query_remove_redundancy)); } Loading