From 7a17cd0797e9aee23d0c3a1f615118f423da6aa8 Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Tue, 19 Apr 2022 15:44:08 +1200 Subject: [PATCH] Tidy DefaultDbSqlContext, remove excess space from sql left join, tidy whitespace --- .../server/query/DefaultDbSqlContext.java | 26 +++---------------- .../query/joins/TestQueryJoinOnFormula.java | 14 +++++----- 2 files changed, 10 insertions(+), 30 deletions(-) diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/query/DefaultDbSqlContext.java b/ebean-core/src/main/java/io/ebeaninternal/server/query/DefaultDbSqlContext.java index 308e79f9f..d61038eb5 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/query/DefaultDbSqlContext.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/query/DefaultDbSqlContext.java @@ -18,46 +18,27 @@ final class DefaultDbSqlContext implements DbSqlContext { private static final String tableAliasManyPlaceHolder = "${mta}"; private final String columnAliasPrefix; - private final ArrayStack tableAliasStack = new ArrayStack<>(); - private final ArrayStack joinStack = new ArrayStack<>(); - private final ArrayStack prefixStack = new ArrayStack<>(); - private final String fromForUpdate; - private boolean useColumnAlias; - private int columnIndex; private int asOfTableCount; - private StringBuilder sb = new StringBuilder(STRING_BUILDER_INITIAL_CAPACITY); - /** * A Set used to make sure formula joins are only added once to a query. */ private HashSet formulaJoins; - private HashSet tableJoins; - private final SqlTreeAlias alias; - private String currentPrefix; - private List encryptedProps; - private List extraJoins; - private final CQueryDraftSupport draftSupport; - private final CQueryHistorySupport historySupport; - private final boolean historyQuery; - /** - * Construct for SELECT clause (with column alias settings). - */ DefaultDbSqlContext(SqlTreeAlias alias, String columnAliasPrefix, CQueryHistorySupport historySupport, CQueryDraftSupport draftSupport, String fromForUpdate) { this.alias = alias; @@ -117,7 +98,6 @@ final class DefaultDbSqlContext implements DbSqlContext { if (encryptedProps == null) { return null; } - return encryptedProps.toArray(new BeanProperty[0]); } @@ -243,7 +223,7 @@ final class DefaultDbSqlContext implements DbSqlContext { @Override public void appendFormulaJoin(String sqlFormulaJoin, SqlJoinType joinType, String manyWhere) { - // replace ${ta} place holder with the real table alias... + // replace ${ta} placeholder with the real table alias... String tableAlias = manyWhere == null ? tableAliasStack.peek() : getTableAliasManyWhere(manyWhere); String converted = sqlFormulaJoin.replace(tableAliasPlaceHolder, tableAlias); if (formulaJoins == null) { @@ -257,9 +237,9 @@ final class DefaultDbSqlContext implements DbSqlContext { formulaJoins.add(converted); sb.append(" "); if (joinType == SqlJoinType.OUTER) { - if ("join".equals(sqlFormulaJoin.substring(0, 4).toLowerCase())) { + if ("join".equalsIgnoreCase(sqlFormulaJoin.substring(0, 4))) { // prepend left as we are in the 'many' part - append(" left "); + sb.append("left "); } } sb.append(converted); diff --git a/ebean-test/src/test/java/org/tests/query/joins/TestQueryJoinOnFormula.java b/ebean-test/src/test/java/org/tests/query/joins/TestQueryJoinOnFormula.java index 81eb2cfc1..66c2a7616 100644 --- a/ebean-test/src/test/java/org/tests/query/joins/TestQueryJoinOnFormula.java +++ b/ebean-test/src/test/java/org/tests/query/joins/TestQueryJoinOnFormula.java @@ -68,7 +68,7 @@ public class TestQueryJoinOnFormula extends BaseTestCase { List sql = LoggedSql.stop(); assertEquals(1, sql.size()); assertSql(sql.get(0)).contains("join (select order_id, count(*) as total_items,"); - assertSql(sql.get(0)).contains("select count(*) from ( select t0.id from o_order t0 left join (select order_id,"); + assertSql(sql.get(0)).contains("select count(*) from ( select t0.id from o_order t0 left join (select order_id,"); } @Test @@ -83,7 +83,7 @@ public class TestQueryJoinOnFormula extends BaseTestCase { shipQuery.findList(); assertSql(shipQuery.getGeneratedSql()).isEqualTo("select t0.id " + "from or_order_ship t0 " - + "left join o_order t1 on t1.id = t0.order_id " + + "left join o_order t1 on t1.id = t0.order_id " + "left join (select order_id, count(*) as total_items, sum(order_qty*unit_price) as total_amount from o_order_detail group by order_id) z_bt1 on z_bt1.order_id = t1.id " + "order by z_bt1.total_amount"); } @@ -100,7 +100,7 @@ public class TestQueryJoinOnFormula extends BaseTestCase { shipQuery.findList(); assertSql(shipQuery.getGeneratedSql()).isEqualTo("select t0.id " + "from or_order_ship t0 " - + "left join o_order t1 on t1.id = t0.order_id " + + "left join o_order t1 on t1.id = t0.order_id " + "left join (select order_id, count(*) as total_items, sum(order_qty*unit_price) as total_amount from o_order_detail group by order_id) z_bt1 on z_bt1.order_id = t1.id " + "where z_bt1.total_amount is not null"); } @@ -124,7 +124,7 @@ public class TestQueryJoinOnFormula extends BaseTestCase { "from or_order_ship t0 " + "join o_order u1 on u1.id = t0.order_id " + "join or_order_ship u2 on u2.order_id = u1.id " + - "join o_order u3 on u3.id = u2.order_id " + + "join o_order u3 on u3.id = u2.order_id " + "left join (select order_id, count(*) as total_items, sum(order_qty*unit_price) as total_amount from o_order_detail group by order_id) z_bu3 on z_bu3.order_id = u3.id " + "where z_bu3.total_amount is not null"); } @@ -141,7 +141,7 @@ public class TestQueryJoinOnFormula extends BaseTestCase { shipQuery.findList(); assertSql(shipQuery.getGeneratedSql()).isEqualTo("select t0.id, t1.id, z_bt1.total_amount " + "from or_order_ship t0 " - + "left join o_order t1 on t1.id = t0.order_id " + + "left join o_order t1 on t1.id = t0.order_id " + "left join (select order_id, count(*) as total_items, sum(order_qty*unit_price) as total_amount from o_order_detail group by order_id) z_bt1 on z_bt1.order_id = t1.id " + "order by z_bt1.total_amount"); @@ -158,7 +158,7 @@ public class TestQueryJoinOnFormula extends BaseTestCase { shipQuery.findList(); assertSql(shipQuery.getGeneratedSql()).isEqualTo("select t0.id, t1.id, z_bt1.total_amount " + "from or_order_ship t0 " - + "left join o_order t1 on t1.id = t0.order_id " + + "left join o_order t1 on t1.id = t0.order_id " + "left join (select order_id, count(*) as total_items, sum(order_qty*unit_price) as total_amount from o_order_detail group by order_id) z_bt1 on z_bt1.order_id = t1.id " + "where z_bt1.total_amount is not null"); @@ -179,7 +179,7 @@ public class TestQueryJoinOnFormula extends BaseTestCase { List sql = LoggedSql.stop(); assertEquals(1, sql.size()); - assertSql(sql.get(0)).contains("select count(*) from ( select t0.id from o_order t0 left join (select order_id,"); + assertSql(sql.get(0)).contains("select count(*) from ( select t0.id from o_order t0 left join (select order_id,"); } @Test