@Override public Numbers reach(long[] combo, int level, FutureIds futureIds) { Numbers src = futureIds.optional() ? null : futureIds.fetch(); for (JoinBridgeRel bridgeRel : fromRels) { long id = combo[bridgeRel.index]; Numbers filter = bridgeRel.rel.linksTo(id); src = inter(src, filter); } for (JoinBridgeRel bridgeRel : toRels) { long id = combo[bridgeRel.index]; Numbers filter = bridgeRel.rel.linksFrom(id); src = inter(src, filter); } if (src == null) { src = futureIds.fetch(); } return src; }
private boolean match2(AJoin[] joins, LinksBuilder[] builders, JoinSide[] sides, boolean exists) { long[] combo = new long[2]; JoinSide side1 = sides[1]; Numbers src0 = sides[0].futureIds.fetch(); for (int i0 = -1; i0 < src0.size(); i0++) { combo[0] = i0 < 0 ? -1 : src0.at(i0); Numbers src1 = side1.bridge.reach(combo, 1, sides[1].futureIds); for (int i1 = -1; i1 < src1.size(); i1++) { combo[1] = i1 < 0 ? -1 : src1.at(i1); if (check(joins, combo, builders, sides, exists) && exists) { return true; } } } return false; }
private void order(JoinSide[] sides, AJoin[] joins) { Arrays.sort(sides, this); for (int i = 0; i < sides.length; i++) { sides[i].position = i; } Set<JoinSide> optional = new HashSet<JoinSide>(); for (int i = 0; i < sides.length; i++) { JoinSide side = sides[i]; if (side.futureIds.optional()) { optional.add(side); sides[i].position = Integer.MAX_VALUE; } } // System.out.println("NULLED: " + U.textln(nulled.toArray())); while (!optional.isEmpty()) { int readyCount = sides.length - optional.size(); JoinSide best = pickBestOptional(optional, sides, readyCount); // System.out.println("BEST: " + best); optional.remove(best); sides[readyCount] = best; best.position = readyCount; } }
private boolean match2(AJoin[] joins, LinksBuilder[] builders, JoinSide[] sides, boolean exists) { long[] combo = new long[2]; JoinSide side1 = sides[1]; Numbers src0 = sides[0].futureIds.fetch(); for (int i0 = -1; i0 < src0.size(); i0++) { combo[0] = i0 < 0 ? -1 : src0.at(i0); Numbers src1 = side1.bridge.reach(combo, 1, sides[1].futureIds); for (int i1 = -1; i1 < src1.size(); i1++) { combo[1] = i1 < 0 ? -1 : src1.at(i1); if (check(joins, combo, builders, sides, exists) && exists) { return true; } } } return false; }
private void order(JoinSide[] sides, AJoin[] joins) { Arrays.sort(sides, this); for (int i = 0; i < sides.length; i++) { sides[i].position = i; } Set<JoinSide> optional = new HashSet<JoinSide>(); for (int i = 0; i < sides.length; i++) { JoinSide side = sides[i]; if (side.futureIds.optional()) { optional.add(side); sides[i].position = Integer.MAX_VALUE; } } // System.out.println("NULLED: " + U.textln(nulled.toArray())); while (!optional.isEmpty()) { int readyCount = sides.length - optional.size(); JoinSide best = pickBestOptional(optional, sides, readyCount); // System.out.println("BEST: " + best); optional.remove(best); sides[readyCount] = best; best.position = readyCount; } }
@Override public Numbers reach(long[] combo, int level, FutureIds futureIds) { Numbers src = futureIds.optional() ? null : futureIds.fetch(); for (JoinBridgeRel bridgeRel : fromRels) { long id = combo[bridgeRel.index]; Numbers filter = bridgeRel.rel.linksTo(id); src = inter(src, filter); } for (JoinBridgeRel bridgeRel : toRels) { long id = combo[bridgeRel.index]; Numbers filter = bridgeRel.rel.linksFrom(id); src = inter(src, filter); } if (src == null) { src = futureIds.fetch(); } return src; }
private boolean match2(AJoin[] joins, LinksBuilder[] builders, JoinSide[] sides, boolean exists) { long[] combo = new long[2]; JoinSide side1 = sides[1]; Numbers src0 = sides[0].futureIds.fetch(); for (int i0 = -1; i0 < src0.size(); i0++) { combo[0] = i0 < 0 ? -1 : src0.at(i0); Numbers src1 = side1.bridge.reach(combo, 1, sides[1].futureIds); for (int i1 = -1; i1 < src1.size(); i1++) { combo[1] = i1 < 0 ? -1 : src1.at(i1); if (check(joins, combo, builders, sides, exists) && exists) { return true; } } } return false; }
private void order(JoinSide[] sides, AJoin[] joins) { Arrays.sort(sides, this); for (int i = 0; i < sides.length; i++) { sides[i].position = i; } Set<JoinSide> optional = new HashSet<JoinSide>(); for (int i = 0; i < sides.length; i++) { JoinSide side = sides[i]; if (side.futureIds.optional()) { optional.add(side); sides[i].position = Integer.MAX_VALUE; } } // System.out.println("NULLED: " + U.textln(nulled.toArray())); while (!optional.isEmpty()) { int readyCount = sides.length - optional.size(); JoinSide best = pickBestOptional(optional, sides, readyCount); // System.out.println("BEST: " + best); optional.remove(best); sides[readyCount] = best; best.position = readyCount; } }
@Override public Numbers reach(long[] combo, int level, FutureIds futureIds) { Numbers src = futureIds.optional() ? null : futureIds.fetch(); for (JoinBridgeRel bridgeRel : fromRels) { long id = combo[bridgeRel.index]; Numbers filter = bridgeRel.rel.linksTo(id); src = inter(src, filter); } for (JoinBridgeRel bridgeRel : toRels) { long id = combo[bridgeRel.index]; Numbers filter = bridgeRel.rel.linksFrom(id); src = inter(src, filter); } if (src == null) { src = futureIds.fetch(); } return src; }
private boolean match3(AJoin[] joins, LinksBuilder[] builders, JoinSide[] sides, boolean exists) { long[] combo = new long[3]; JoinSide side1 = sides[1], side2 = sides[2]; Numbers src0 = sides[0].futureIds.fetch(); for (int i0 = -1; i0 < src0.size(); i0++) { combo[0] = i0 < 0 ? -1 : src0.at(i0); Numbers src1 = side1.bridge.reach(combo, 1, sides[1].futureIds); for (int i1 = -1; i1 < src1.size(); i1++) { combo[1] = i1 < 0 ? -1 : src1.at(i1); Numbers src2 = side2.bridge.reach(combo, 2, sides[2].futureIds); for (int i2 = -1; i2 < src2.size(); i2++) { combo[2] = i2 < 0 ? -1 : src2.at(i2); if (check(joins, combo, builders, sides, exists) && exists) { return true; } } } } return false; }
if (!side.futureIds.optional()) { withIds++;
private boolean has(AJoin join, long[] combo, JoinSide[] sides) { long from = combo[join.from2]; long to = combo[join.to2]; FutureIds fromIds = sides[join.from2].futureIds; FutureIds toIds = sides[join.to2].futureIds; Numbers filterFroms = fromIds.optional() ? null : fromIds.fetch(); Numbers filterTos = toIds.optional() ? null : toIds.fetch(); boolean lefty = to == -1 && from >= 0 && (filterTos == null || !join.rel.linksFrom(from).hasAny(filterTos)); boolean righty = from == -1 && to >= 0 && (filterFroms == null || !join.rel.linksTo(to).hasAny(filterFroms)); boolean linked = join.rel.hasLink(from, to); switch (join.mode) { case INNER: return hasInfo(linked, from, to, join.rel); case LEFT_OUTER: return hasInfo(U.xor(lefty, linked), from, to, join.rel); case RIGHT_OUTER: return hasInfo(U.xor(righty, linked), from, to, join.rel); case FULL_OUTER: return hasInfo(U.xor(U.xor(lefty, righty), linked), from, to, join.rel); } throw Errors.notExpected(); }
private boolean match3(AJoin[] joins, LinksBuilder[] builders, JoinSide[] sides, boolean exists) { long[] combo = new long[3]; JoinSide side1 = sides[1], side2 = sides[2]; Numbers src0 = sides[0].futureIds.fetch(); for (int i0 = -1; i0 < src0.size(); i0++) { combo[0] = i0 < 0 ? -1 : src0.at(i0); Numbers src1 = side1.bridge.reach(combo, 1, sides[1].futureIds); for (int i1 = -1; i1 < src1.size(); i1++) { combo[1] = i1 < 0 ? -1 : src1.at(i1); Numbers src2 = side2.bridge.reach(combo, 2, sides[2].futureIds); for (int i2 = -1; i2 < src2.size(); i2++) { combo[2] = i2 < 0 ? -1 : src2.at(i2); if (check(joins, combo, builders, sides, exists) && exists) { return true; } } } } return false; }
if (!side.futureIds.optional()) { withIds++;
private boolean has(AJoin join, long[] combo, JoinSide[] sides) { long from = combo[join.from2]; long to = combo[join.to2]; FutureIds fromIds = sides[join.from2].futureIds; FutureIds toIds = sides[join.to2].futureIds; Numbers filterFroms = fromIds.optional() ? null : fromIds.fetch(); Numbers filterTos = toIds.optional() ? null : toIds.fetch(); boolean lefty = to == -1 && from >= 0 && (filterTos == null || !join.rel.linksFrom(from).hasAny(filterTos)); boolean righty = from == -1 && to >= 0 && (filterFroms == null || !join.rel.linksTo(to).hasAny(filterFroms)); boolean linked = join.rel.hasLink(from, to); switch (join.mode) { case INNER: return hasInfo(linked, from, to, join.rel); case LEFT_OUTER: return hasInfo(U.xor(lefty, linked), from, to, join.rel); case RIGHT_OUTER: return hasInfo(U.xor(righty, linked), from, to, join.rel); case FULL_OUTER: return hasInfo(U.xor(U.xor(lefty, righty), linked), from, to, join.rel); } throw Errors.notExpected(); }
private boolean match3(AJoin[] joins, LinksBuilder[] builders, JoinSide[] sides, boolean exists) { long[] combo = new long[3]; JoinSide side1 = sides[1], side2 = sides[2]; Numbers src0 = sides[0].futureIds.fetch(); for (int i0 = -1; i0 < src0.size(); i0++) { combo[0] = i0 < 0 ? -1 : src0.at(i0); Numbers src1 = side1.bridge.reach(combo, 1, sides[1].futureIds); for (int i1 = -1; i1 < src1.size(); i1++) { combo[1] = i1 < 0 ? -1 : src1.at(i1); Numbers src2 = side2.bridge.reach(combo, 2, sides[2].futureIds); for (int i2 = -1; i2 < src2.size(); i2++) { combo[2] = i2 < 0 ? -1 : src2.at(i2); if (check(joins, combo, builders, sides, exists) && exists) { return true; } } } } return false; }
if (!side.futureIds.optional()) { withIds++;