Commit 6e65a749 authored by Ryan Wisnesky's avatar Ryan Wisnesky
Browse files

query composition now uses fresh variables

parent eff93217
Loading
Loading
Loading
Loading
+1 −4
Changes for resources/examples/aql/Compose.aql: 1 added line, 4 removed lines.
Original line number Diff line number Diff line

typeside ty = literal { 
	java_types
		Integer = "java.lang.Integer"
	java_constants
		Integer = "return java.lang.Integer.parseInt(input[0])"
	imports sql
	java_functions
		neg : Integer -> Integer = "return (-input[0]).intValue()"
}
+1 −0
Changes for src/catdata/aql/Query.java: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -877,6 +877,7 @@ public final class Query<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2> implements Sem
		 * "concat('(" + x + "=', concat(" + convert(x.var + "." + idCol) +
		 * ", ')'))").collect(Collectors.toList()); return Util.sep(l, " + ");
		 */
	
	}

	private String whereToString(Collection<Eq<Ty, En1, Sym, Fk1, Att1, Var, Var>> eqs, String idCol) {
+2 −2
Changes for src/catdata/aql/exp/QueryExp.java: 2 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -271,7 +271,7 @@ public abstract class QueryExp<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2>


			Map<En3, Pair<Ctx<Var, Pair<Var, Var>>, Ctx<Pair<Var, Var>, Var>>> isos = new HashMap<>(); 
		//	int i = 0;
			int i = 0;
			for (En3 en3 : q2.dst.ens) {
				Pair<Ctx<Var, Pair<Var, Var>>, Ctx<Pair<Var, Var>, Var>> iso = new Pair<>(new Ctx<>(), new Ctx<>());

@@ -281,7 +281,7 @@ public abstract class QueryExp<Ty, En1, Sym, Fk1, Att1, En2, Fk2, Att2>
				for (Entry<Var, En2> v : q2.ens.get(en3).gens.map.entrySet()) {
					Frozen<Ty, En1, Sym, Fk1, Att1> I = q1.ens.get(v.getValue());
					for (Entry<Var, En1> u : I.gens.map.entrySet()) {
						Var newV = new Var("\"(" + v.getKey() + "," + u.getKey() + ")\"");
						Var newV = new Var("v" + (i++)); //new Var("\"(" + v.getKey() + "," + u.getKey() + ")\"");
						iso.first.put(newV, new Pair<>(v.getKey(), u.getKey()));
						iso.second.put(new Pair<>(v.getKey(), u.getKey()), newV);
						fr.put(newV, u.getValue());