private String buildMainQuery(String orderBy, OrmQueryRequest<?> request, CQueryPredicates predicates, RawSql.Sql sql) { sb.append(sql.getPreFrom()); sb.append(" "); String s = sql.getPreWhere(); BindParams bindParams = request.getQuery().getBindParams(); if (bindParams != null && bindParams.requiresNamedParamsPrepare()) { if (sql.isAndWhereExpr()) { sb.append(" and "); } else { String preHaving = sql.getPreHaving(); if (!isEmpty(preHaving)) { sb.append(preHaving); if (!isEmpty(dbHaving)) { sb.append(" "); if (sql.isAndHavingExpr()) { sb.append("and "); } else { sb.append(" ").append(sql.getOrderByPrefix()).append(" ").append(orderBy);
private Sql parse() { if (!hasPlaceHolders()) { // parse the sql for the keywords... // select, from, where, having, group by, order by parseSqlFindKeywords(true); } whereExprPos = findWhereExprPosition(); havingExprPos = findHavingExprPosition(); String preFrom = removeWhitespace(findPreFromSql()); String preWhere = removeWhitespace(findPreWhereSql()); String preHaving = removeWhitespace(findPreHavingSql()); String orderBySql = findOrderBySql(); preFrom = trimSelectKeyword(preFrom); return new Sql(sql.hashCode(), preFrom, preWhere, whereExprAnd, preHaving, havingExprAnd, orderBySql, (distinctPos > -1)); }
private String buildMainQuery(String orderBy, OrmQueryRequest<?> request, CQueryPredicates predicates, RawSql.Sql sql) { sb.append(sql.getPreFrom()); sb.append(" "); sb.append(NEW_LINE); String s = sql.getPreWhere(); BindParams bindParams = request.getQuery().getBindParams(); if (bindParams != null && bindParams.requiresNamedParamsPrepare()){ if (sql.isAndWhereExpr()) { sb.append("and "); } else { String preHaving = sql.getPreHaving(); if (!isEmpty(preHaving)) { sb.append(NEW_LINE); sb.append(" "); sb.append(NEW_LINE); if (sql.isAndHavingExpr()) { sb.append("and "); } else {
private String buildMainQuery(String orderBy, OrmQueryRequest<?> request, CQueryPredicates predicates, RawSql.Sql sql) { sb.append(sql.getPreFrom()); sb.append(" "); sb.append(NEW_LINE); String s = sql.getPreWhere(); BindParams bindParams = request.getQuery().getBindParams(); if (bindParams != null && bindParams.requiresNamedParamsPrepare()){ if (sql.isAndWhereExpr()) { sb.append("and "); } else { String preHaving = sql.getPreHaving(); if (!isEmpty(preHaving)) { sb.append(NEW_LINE); sb.append(" "); sb.append(NEW_LINE); if (sql.isAndHavingExpr()) { sb.append("and "); } else {
String s = query.getRawSql().getSql().getPreWhere(); if (bindParams.requiresNamedParamsPrepare()) { BindParamsParser.parse(bindParams, s);
String s = query.getRawSql().getSql().getPreWhere(); if (bindParams.requiresNamedParamsPrepare()) { BindParamsParser.parse(bindParams, s);
if (!rsql.isParsed()){ String sql = rsql.getUnparsedSql(); BindParams bindParams = request.getQuery().getBindParams(); if (bindParams != null && bindParams.requiresNamedParamsPrepare()){ String prefix = "select "+ (rsql.isDistinct() ? "distinct " : ""); sql = prefix + sql; return new SqlLimitResponse(sql, false);
if (!rsql.isParsed()) { String sql = rsql.getUnparsedSql(); BindParams bindParams = request.getQuery().getBindParams(); if (bindParams != null && bindParams.requiresNamedParamsPrepare()) { String prefix = "select " + (rsql.isDistinct() ? "distinct " : ""); sql = prefix + sql; return new SqlLimitResponse(sql, false);
if (!rsql.isParsed()){ String sql = rsql.getUnparsedSql(); BindParams bindParams = request.getQuery().getBindParams(); if (bindParams != null && bindParams.requiresNamedParamsPrepare()){ String prefix = "select "+ (rsql.isDistinct() ? "distinct " : ""); sql = prefix + sql; return new SqlLimitResponse(sql, false);
/** * Appends the Id property to the OrderBy clause if it is not believed * to be already contained in the order by. * <p> * This is primarily used for paging queries to ensure that an order by clause is provided and that the order by * provides unique ordering of the rows (so that the paging is predicable). * </p> */ public void appendOrderById(SpiQuery<T> query) { if (idProperty != null && !idProperty.isEmbedded()) { OrderBy<T> orderBy = query.getOrderBy(); if (orderBy == null || orderBy.isEmpty()) { RawSql rawSql = query.getRawSql(); if (rawSql != null) { query.order(rawSql.getSql().getOrderBy()); } query.order().asc(idProperty.getName()); } else if (!orderBy.containsProperty(idProperty.getName())) { query.order().asc(idProperty.getName()); } } }
/** * Return a RawSqlBuilder parsing the sql. * <p> * The sql statement will be parsed so that Ebean can determine where it can * insert additional WHERE or HAVING expressions. * </p> * <p> * Additionally the selected columns are parsed to determine the column * ordering. This also means additional checks can be made with the column * mapping - specifically we can check that all columns are mapped and that * correct column names are entered into the mapping. * </p> */ public static RawSqlBuilder parse(String sql) { Sql sql2 = DRawSqlParser.parse(sql); String select = sql2.getPreFrom(); ColumnMapping mapping = DRawSqlColumnsParser.parse(select); return new RawSqlBuilder(sql2, mapping); }
/** * Convert named parameters into an OrderedList. */ private void buildBindWhereRawSql(boolean buildSql) { if (!buildSql && bindParams != null && bindParams.requiresNamedParamsPrepare()) { if (query.isNativeSql()) { // convert named params into positioned params String sql = query.getNativeSql(); BindParamsParser.parse(bindParams, sql); } else if (query.isRawSql()) { // RawSql query hit cached query plan. Need to convert // named parameters into positioned parameters so that // the named parameters are bound RawSql.Sql sql = query.getRawSql().getSql(); String s = sql.isParsed() ? sql.getPreWhere() : sql.getUnparsedSql(); BindParamsParser.parse(bindParams, s); } } }
/** * Return a RawSqlBuilder parsing the sql. * <p> * The sql statement will be parsed so that Ebean can determine where it can * insert additional WHERE or HAVING expressions. * </p> * <p> * Additionally the selected columns are parsed to determine the column * ordering. This also means additional checks can be made with the column * mapping - specifically we can check that all columns are mapped and that * correct column names are entered into the mapping. * </p> */ public static RawSqlBuilder parse(String sql) { Sql sql2 = DRawSqlParser.parse(sql); String select = sql2.getPreFrom(); ColumnMapping mapping = DRawSqlColumnsParser.parse(select); return new RawSqlBuilder(sql2, mapping); }
/** * Return a RawSqlBuilder parsing the sql. * <p> * The sql statement will be parsed so that Ebean can determine where it can * insert additional WHERE or HAVING expressions. * </p> * <p> * Additionally the selected columns are parsed to determine the column * ordering. This also means additional checks can be made with the column * mapping - specifically we can check that all columns are mapped and that * correct column names are entered into the mapping. * </p> */ public static RawSqlBuilder parse(String sql) { Sql sql2 = DRawSqlParser.parse(sql); String select = sql2.getPreFrom(); ColumnMapping mapping = DRawSqlColumnsParser.parse(select); return new RawSqlBuilder(sql2, mapping); }
private Sql parse() { if (!hasPlaceHolders()) { // parse the sql for the keywords... // select, from, where, having, group by, order by parseSqlFindKeywords(true); } whereExprPos = findWhereExprPosition(); havingExprPos = findHavingExprPosition(); String preFrom = removeWhitespace(findPreFromSql()); String preWhere = removeWhitespace(findPreWhereSql()); String preHaving = removeWhitespace(findPreHavingSql()); String orderByPrefix = findOrderByPrefixSql(); String orderBySql = findOrderBySql(); preFrom = trimSelectKeyword(preFrom); return new Sql(sql, preFrom, preWhere, whereExprAnd, preHaving, havingExprAnd, orderByPrefix, orderBySql, (distinctPos > -1)); }
private Sql parse() { if (!hasPlaceHolders()) { // parse the sql for the keywords... // select, from, where, having, group by, order by parseSqlFindKeywords(true); } whereExprPos = findWhereExprPosition(); havingExprPos = findHavingExprPosition(); String preFrom = removeWhitespace(findPreFromSql()); String preWhere = removeWhitespace(findPreWhereSql()); String preHaving = removeWhitespace(findPreHavingSql()); String orderBySql = findOrderBySql(); preFrom = trimSelectKeyword(preFrom); return new Sql(sql.hashCode(), preFrom, preWhere, whereExprAnd, preHaving, havingExprAnd, orderBySql, (distinctPos > -1)); }
/** * Return an unparsed RawSqlBuilder. Unlike a parsed one this query can not be * modified - so no additional WHERE or HAVING expressions can be added to * this query. */ public static RawSqlBuilder unparsed(String sql) { Sql s = new Sql(sql); return new RawSqlBuilder(s, new ColumnMapping()); }
private String getOrderBy(CQueryPredicates predicates, RawSql.Sql sql) { String orderBy = predicates.getDbOrderBy(); if (orderBy != null) { return orderBy; } else { return sql.getOrderBy(); } } }
private String getOrderBy(CQueryPredicates predicates, RawSql.Sql sql) { String orderBy = predicates.getDbOrderBy(); if (orderBy != null) { return orderBy; } else { return sql.getOrderBy(); } } }
/** * Return an unparsed RawSqlBuilder. Unlike a parsed one this query can not be * modified - so no additional WHERE or HAVING expressions can be added to * this query. */ public static RawSqlBuilder unparsed(String sql) { Sql s = new Sql(sql); return new RawSqlBuilder(s, new ColumnMapping()); }