Skip to content

Commit

Permalink
#393 Simplify OracleDialect generated queries
Browse files Browse the repository at this point in the history
  • Loading branch information
ericbn committed Mar 27, 2015
1 parent bef8143 commit 9611675
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -99,17 +99,11 @@ protected void appendSubQuery(StringBuilder query, String subQuery) {
}
}

protected void appendSelect(StringBuilder query, String tableName, String tableAlias, String subQuery,
List<String> orderBys) {
protected void appendSelect(StringBuilder query, String tableName, String subQuery, List<String> orderBys) {
if (tableName == null) {
query.append(subQuery);
} else {
if (tableAlias == null) {
query.append("SELECT * FROM ").append(tableName);
} else {
query.append("SELECT ").append(tableAlias).append(".* FROM ").append(tableName).append(' ')
.append(tableAlias);
}
query.append("SELECT * FROM ").append(tableName);
appendSubQuery(query, subQuery);
}
appendOrderBy(query, orderBys);
Expand All @@ -118,7 +112,7 @@ protected void appendSelect(StringBuilder query, String tableName, String tableA
@Override
public String formSelect(String tableName, String subQuery, List<String> orderBys, long limit, long offset) {
StringBuilder fullQuery = new StringBuilder();
appendSelect(fullQuery, tableName, null, subQuery, orderBys);
appendSelect(fullQuery, tableName, subQuery, orderBys);
return fullQuery.toString();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,16 +55,15 @@ public String formSelect(String tableName, String subQuery, List<String> orderBy

StringBuilder fullQuery = new StringBuilder();
if (needOffset) {
fullQuery.append("SELECT * FROM (SELECT t2.*, ROWNUM AS oracle_row_number FROM (");
fullQuery.append("SELECT * FROM (SELECT a.*, ROWNUM AS oracle_row_number FROM (");
} else if (needLimit) { // if needLimit and don't needOffset
fullQuery.append("SELECT * FROM (");
}
//TODO check if this can be simplified removing the alias t
appendSelect(fullQuery, tableName, (needLimit || needOffset) ? "t" : null, subQuery, orderBys);
appendSelect(fullQuery, tableName, subQuery, orderBys);

if (needOffset) {
// Oracle offset starts with 1, not like MySQL with 0;
fullQuery.append(") t2) WHERE oracle_row_number >= ").append(offset + 1);
fullQuery.append(") a) WHERE oracle_row_number >= ").append(offset + 1);
if (needLimit) {
fullQuery.append(" AND ROWNUM <= ").append(limit);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ public class PostgreSQLDialect extends DefaultDialect {
@Override
public String formSelect(String tableName, String subQuery, List<String> orderBys, long limit, long offset) {
StringBuilder fullQuery = new StringBuilder();
appendSelect(fullQuery, tableName, null, subQuery, orderBys);

appendSelect(fullQuery, tableName, subQuery, orderBys);

if(limit != -1){
fullQuery.append(" LIMIT ").append(limit);
Expand Down

0 comments on commit 9611675

Please sign in to comment.