return new boolean[] {false, true}; } else if (o instanceof QueryCast) { return whereHavingSafe(((QueryCast) o).getValue(), q); } else if (o instanceof QueryExpression) { QueryExpression qe = (QueryExpression) o; QueryEvaluable arg2 = qe.getArg2(); QueryEvaluable arg3 = qe.getArg3(); boolean[] s = whereHavingSafe(arg1, q); boolean whereSafe = s[0]; boolean havingSafe = s[1]; if (arg2 != null) { s = whereHavingSafe(arg2, q); whereSafe = whereSafe && s[0]; havingSafe = havingSafe && s[1]; s = whereHavingSafe(arg3, q); whereSafe = whereSafe && s[0]; havingSafe = havingSafe && s[1]; return new boolean[] {true, true}; } else { return whereHavingSafe(qc, q); QueryEvaluable arg2 = c.getArg2(); if (arg2 == null) { return whereHavingSafe(arg1, q); } else { boolean[] s1 = whereHavingSafe(arg1, q);
return new boolean[] {false, true}; } else if (o instanceof QueryCast) { return whereHavingSafe(((QueryCast) o).getValue(), q); } else if (o instanceof QueryExpression) { QueryExpression qe = (QueryExpression) o; QueryEvaluable arg2 = qe.getArg2(); QueryEvaluable arg3 = qe.getArg3(); boolean[] s = whereHavingSafe(arg1, q); boolean whereSafe = s[0]; boolean havingSafe = s[1]; if (arg2 != null) { s = whereHavingSafe(arg2, q); whereSafe = whereSafe && s[0]; havingSafe = havingSafe && s[1]; s = whereHavingSafe(arg3, q); whereSafe = whereSafe && s[0]; havingSafe = havingSafe && s[1]; return new boolean[] {true, true}; } else { return whereHavingSafe(qc, q); QueryEvaluable arg2 = c.getArg2(); if (arg2 == null) { return whereHavingSafe(arg1, q); } else { boolean[] s1 = whereHavingSafe(arg1, q);
constraints.addAll(0, ((ConstraintSet) con).getConstraints()); } else { boolean[] whs = whereHavingSafe(con, q); if (whs[1] && usingHaving) { StringBuffer buffer = state.getHavingBuffer();
constraints.addAll(0, ((ConstraintSet) con).getConstraints()); } else { boolean[] whs = whereHavingSafe(con, q); if (whs[1] && usingHaving) { StringBuffer buffer = state.getHavingBuffer();
public void testWhereHavingSafe() throws Exception { Query q = new Query(); QueryClass qc1 = new QueryClass(Employee.class); QueryField qf1 = new QueryField(qc1, "end"); QueryField qf2 = new QueryField(qc1, "name"); QueryFunction qf3 = new QueryFunction(); QueryField qf4 = new QueryField(qc1, "age"); q.addFrom(qc1); q.addToSelect(qf1); q.addToGroupBy(qf1); assertArrayEquals(new boolean[] {true, true}, SqlGenerator.whereHavingSafe(qf1, q)); assertArrayEquals(new boolean[] {true, false}, SqlGenerator.whereHavingSafe(qf2, q)); assertArrayEquals(new boolean[] {false, true}, SqlGenerator.whereHavingSafe(qf3, q)); assertArrayEquals(new boolean[] {true, false}, SqlGenerator.whereHavingSafe(qf4, q)); assertArrayEquals(new boolean[] {true, false}, SqlGenerator.whereHavingSafe(new SimpleConstraint(qf1, ConstraintOp.EQUALS, qf2), q)); assertArrayEquals(new boolean[] {false, false}, SqlGenerator.whereHavingSafe(new SimpleConstraint(qf3, ConstraintOp.EQUALS, new QueryCast(qf4, Long.class)), q)); }