diff --git a/sharding-core/sharding-core-merge/src/test/java/org/apache/shardingsphere/core/merge/dql/DQLMergeEngineTest.java b/sharding-core/sharding-core-merge/src/test/java/org/apache/shardingsphere/core/merge/dql/DQLMergeEngineTest.java index 0c4541b21ca20bfa0410c77062c8db06b81d2fc2..abb721ff0f837404bd9ce3a17e82b9961d4762e2 100644 --- a/sharding-core/sharding-core-merge/src/test/java/org/apache/shardingsphere/core/merge/dql/DQLMergeEngineTest.java +++ b/sharding-core/sharding-core-merge/src/test/java/org/apache/shardingsphere/core/merge/dql/DQLMergeEngineTest.java @@ -90,13 +90,14 @@ public final class DQLMergeEngineTest { @Test public void assertBuildIteratorStreamMergedResultWithLimit() throws SQLException { + routeResult.setLimit(new Limit(null, null)); mergeEngine = new DQLMergeEngine(DatabaseType.MySQL, routeResult, singleQueryResult); assertThat(mergeEngine.merge(), instanceOf(IteratorStreamMergedResult.class)); } @Test public void assertBuildIteratorStreamMergedResultWithMySQLLimit() throws SQLException { - routeResult.setLimit(new Limit()); + routeResult.setLimit(new Limit(null, null)); mergeEngine = new DQLMergeEngine(DatabaseType.MySQL, routeResult, queryResults); MergedResult actual = mergeEngine.merge(); assertThat(actual, instanceOf(LimitDecoratorMergedResult.class)); @@ -105,7 +106,7 @@ public final class DQLMergeEngineTest { @Test public void assertBuildIteratorStreamMergedResultWithOracleLimit() throws SQLException { - routeResult.setLimit(new Limit()); + routeResult.setLimit(new Limit(null, null)); mergeEngine = new DQLMergeEngine(DatabaseType.Oracle, routeResult, queryResults); MergedResult actual = mergeEngine.merge(); assertThat(actual, instanceOf(RowNumberDecoratorMergedResult.class)); @@ -114,7 +115,7 @@ public final class DQLMergeEngineTest { @Test public void assertBuildIteratorStreamMergedResultWithSQLServerLimit() throws SQLException { - routeResult.setLimit(new Limit()); + routeResult.setLimit(new Limit(null, null)); mergeEngine = new DQLMergeEngine(DatabaseType.SQLServer, routeResult, queryResults); MergedResult actual = mergeEngine.merge(); assertThat(actual, instanceOf(TopAndRowNumberDecoratorMergedResult.class)); @@ -130,7 +131,7 @@ public final class DQLMergeEngineTest { @Test public void assertBuildOrderByStreamMergedResultWithMySQLLimit() throws SQLException { - routeResult.setLimit(new Limit()); + routeResult.setLimit(new Limit(null, null)); selectStatement.getOrderByItems().add(new IndexOrderByItemSegment(0, 0, 1, OrderDirection.DESC, OrderDirection.ASC)); mergeEngine = new DQLMergeEngine(DatabaseType.MySQL, routeResult, queryResults); MergedResult actual = mergeEngine.merge(); @@ -140,7 +141,7 @@ public final class DQLMergeEngineTest { @Test public void assertBuildOrderByStreamMergedResultWithOracleLimit() throws SQLException { - routeResult.setLimit(new Limit()); + routeResult.setLimit(new Limit(null, null)); selectStatement.getOrderByItems().add(new IndexOrderByItemSegment(0, 0, 1, OrderDirection.DESC, OrderDirection.ASC)); mergeEngine = new DQLMergeEngine(DatabaseType.Oracle, routeResult, queryResults); MergedResult actual = mergeEngine.merge(); @@ -150,7 +151,7 @@ public final class DQLMergeEngineTest { @Test public void assertBuildOrderByStreamMergedResultWithSQLServerLimit() throws SQLException { - routeResult.setLimit(new Limit()); + routeResult.setLimit(new Limit(null, null)); selectStatement.getOrderByItems().add(new IndexOrderByItemSegment(0, 0, 1, OrderDirection.DESC, OrderDirection.ASC)); mergeEngine = new DQLMergeEngine(DatabaseType.SQLServer, routeResult, queryResults); MergedResult actual = mergeEngine.merge(); @@ -168,7 +169,7 @@ public final class DQLMergeEngineTest { @Test public void assertBuildGroupByStreamMergedResultWithMySQLLimit() throws SQLException { - routeResult.setLimit(new Limit()); + routeResult.setLimit(new Limit(null, null)); selectStatement.getGroupByItems().add(new IndexOrderByItemSegment(0, 0, 1, OrderDirection.DESC, OrderDirection.ASC)); selectStatement.getOrderByItems().add(new IndexOrderByItemSegment(0, 0, 1, OrderDirection.DESC, OrderDirection.ASC)); mergeEngine = new DQLMergeEngine(DatabaseType.MySQL, routeResult, queryResults); @@ -179,7 +180,7 @@ public final class DQLMergeEngineTest { @Test public void assertBuildGroupByStreamMergedResultWithOracleLimit() throws SQLException { - routeResult.setLimit(new Limit()); + routeResult.setLimit(new Limit(null, null)); selectStatement.getGroupByItems().add(new IndexOrderByItemSegment(0, 0, 1, OrderDirection.DESC, OrderDirection.ASC)); selectStatement.getOrderByItems().add(new IndexOrderByItemSegment(0, 0, 1, OrderDirection.DESC, OrderDirection.ASC)); mergeEngine = new DQLMergeEngine(DatabaseType.Oracle, routeResult, queryResults); @@ -190,7 +191,7 @@ public final class DQLMergeEngineTest { @Test public void assertBuildGroupByStreamMergedResultWithSQLServerLimit() throws SQLException { - routeResult.setLimit(new Limit()); + routeResult.setLimit(new Limit(null, null)); selectStatement.getGroupByItems().add(new IndexOrderByItemSegment(0, 0, 1, OrderDirection.DESC, OrderDirection.ASC)); selectStatement.getOrderByItems().add(new IndexOrderByItemSegment(0, 0, 1, OrderDirection.DESC, OrderDirection.ASC)); mergeEngine = new DQLMergeEngine(DatabaseType.SQLServer, routeResult, queryResults); @@ -208,7 +209,7 @@ public final class DQLMergeEngineTest { @Test public void assertBuildGroupByMemoryMergedResultWithMySQLLimit() throws SQLException { - routeResult.setLimit(new Limit()); + routeResult.setLimit(new Limit(null, null)); selectStatement.getGroupByItems().add(new IndexOrderByItemSegment(0, 0, 1, OrderDirection.DESC, OrderDirection.ASC)); mergeEngine = new DQLMergeEngine(DatabaseType.MySQL, routeResult, queryResults); MergedResult actual = mergeEngine.merge(); @@ -218,7 +219,7 @@ public final class DQLMergeEngineTest { @Test public void assertBuildGroupByMemoryMergedResultWithOracleLimit() throws SQLException { - routeResult.setLimit(new Limit()); + routeResult.setLimit(new Limit(null, null)); selectStatement.getGroupByItems().add(new IndexOrderByItemSegment(0, 0, 1, OrderDirection.DESC, OrderDirection.ASC)); selectStatement.getOrderByItems().add(new IndexOrderByItemSegment(0, 0, 2, OrderDirection.DESC, OrderDirection.ASC)); mergeEngine = new DQLMergeEngine(DatabaseType.Oracle, routeResult, queryResults); @@ -229,7 +230,7 @@ public final class DQLMergeEngineTest { @Test public void assertBuildGroupByMemoryMergedResultWithSQLServerLimit() throws SQLException { - routeResult.setLimit(new Limit()); + routeResult.setLimit(new Limit(null, null)); selectStatement.getGroupByItems().add(new IndexOrderByItemSegment(0, 0, 1, OrderDirection.DESC, OrderDirection.ASC)); selectStatement.getGroupByItems().add(new IndexOrderByItemSegment(0, 0, 1, OrderDirection.ASC, OrderDirection.ASC)); mergeEngine = new DQLMergeEngine(DatabaseType.SQLServer, routeResult, queryResults); @@ -247,7 +248,7 @@ public final class DQLMergeEngineTest { @Test public void assertBuildGroupByMemoryMergedResultWithAggregationOnlyWithMySQLLimit() throws SQLException { - routeResult.setLimit(new Limit()); + routeResult.setLimit(new Limit(null, null)); selectStatement.getItems().add(new AggregationSelectItem(AggregationType.COUNT, "(*)", Optional.absent())); mergeEngine = new DQLMergeEngine(DatabaseType.MySQL, routeResult, queryResults); MergedResult actual = mergeEngine.merge(); @@ -257,7 +258,7 @@ public final class DQLMergeEngineTest { @Test public void assertBuildGroupByMemoryMergedResultWithAggregationOnlyWithOracleLimit() throws SQLException { - routeResult.setLimit(new Limit()); + routeResult.setLimit(new Limit(null, null)); selectStatement.getItems().add(new AggregationSelectItem(AggregationType.COUNT, "(*)", Optional.absent())); mergeEngine = new DQLMergeEngine(DatabaseType.Oracle, routeResult, queryResults); MergedResult actual = mergeEngine.merge(); @@ -267,7 +268,7 @@ public final class DQLMergeEngineTest { @Test public void assertBuildGroupByMemoryMergedResultWithAggregationOnlyWithSQLServerLimit() throws SQLException { - routeResult.setLimit(new Limit()); + routeResult.setLimit(new Limit(null, null)); selectStatement.getItems().add(new AggregationSelectItem(AggregationType.COUNT, "(*)", Optional.absent())); mergeEngine = new DQLMergeEngine(DatabaseType.SQLServer, routeResult, queryResults); MergedResult actual = mergeEngine.merge(); diff --git a/sharding-core/sharding-core-merge/src/test/java/org/apache/shardingsphere/core/merge/dql/pagination/LimitDecoratorMergedResultTest.java b/sharding-core/sharding-core-merge/src/test/java/org/apache/shardingsphere/core/merge/dql/pagination/LimitDecoratorMergedResultTest.java index abec519e589a580f47b90a61120f888562016245..c6868113a5607f399d4735c2a34a05c81451e7ad 100644 --- a/sharding-core/sharding-core-merge/src/test/java/org/apache/shardingsphere/core/merge/dql/pagination/LimitDecoratorMergedResultTest.java +++ b/sharding-core/sharding-core-merge/src/test/java/org/apache/shardingsphere/core/merge/dql/pagination/LimitDecoratorMergedResultTest.java @@ -65,14 +65,12 @@ public final class LimitDecoratorMergedResultTest { } SelectStatement selectStatement = new SelectStatement(); routeResult = new SQLRouteResult(selectStatement); - routeResult.setLimit(new Limit()); + routeResult.setLimit(new Limit(null, null)); } @Test public void assertNextForSkipAll() throws SQLException { - Limit limit = new Limit(); - limit.setOffset(new LimitValue(Integer.MAX_VALUE, -1, new NumberLiteralLimitValueSegment(0, 0, Integer.MAX_VALUE, true))); - routeResult.setLimit(limit); + routeResult.setLimit(new Limit(new LimitValue(Integer.MAX_VALUE, -1, new NumberLiteralLimitValueSegment(0, 0, Integer.MAX_VALUE, true)), null)); mergeEngine = new DQLMergeEngine(DatabaseType.MySQL, routeResult, queryResults); MergedResult actual = mergeEngine.merge(); assertFalse(actual.next()); @@ -80,9 +78,7 @@ public final class LimitDecoratorMergedResultTest { @Test public void assertNextWithoutRowCount() throws SQLException { - Limit limit = new Limit(); - limit.setOffset(new LimitValue(2, -1, new NumberLiteralLimitValueSegment(0, 0, 2, true))); - routeResult.setLimit(limit); + routeResult.setLimit(new Limit(new LimitValue(2, -1, new NumberLiteralLimitValueSegment(0, 0, 2, true)), null)); mergeEngine = new DQLMergeEngine(DatabaseType.MySQL, routeResult, queryResults); MergedResult actual = mergeEngine.merge(); for (int i = 0; i < 6; i++) { @@ -93,10 +89,7 @@ public final class LimitDecoratorMergedResultTest { @Test public void assertNextWithRowCount() throws SQLException { - Limit limit = new Limit(); - limit.setOffset(new LimitValue(2, -1, new NumberLiteralLimitValueSegment(0, 0, 2, true))); - limit.setRowCount(new LimitValue(2, -1, new NumberLiteralLimitValueSegment(0, 0, 2, false))); - routeResult.setLimit(limit); + routeResult.setLimit(new Limit(new LimitValue(2, -1, new NumberLiteralLimitValueSegment(0, 0, 2, true)), new LimitValue(2, -1, new NumberLiteralLimitValueSegment(0, 0, 2, false)))); mergeEngine = new DQLMergeEngine(DatabaseType.MySQL, routeResult, queryResults); MergedResult actual = mergeEngine.merge(); assertTrue(actual.next()); diff --git a/sharding-core/sharding-core-merge/src/test/java/org/apache/shardingsphere/core/merge/dql/pagination/RowNumberDecoratorMergedResultTest.java b/sharding-core/sharding-core-merge/src/test/java/org/apache/shardingsphere/core/merge/dql/pagination/RowNumberDecoratorMergedResultTest.java index 7a8ac5ddfc4c9327ed16f75dd29d050513fb6977..ac0bc54bbdd712041021c4ce9e88a27cc741d580 100644 --- a/sharding-core/sharding-core-merge/src/test/java/org/apache/shardingsphere/core/merge/dql/pagination/RowNumberDecoratorMergedResultTest.java +++ b/sharding-core/sharding-core-merge/src/test/java/org/apache/shardingsphere/core/merge/dql/pagination/RowNumberDecoratorMergedResultTest.java @@ -71,9 +71,7 @@ public final class RowNumberDecoratorMergedResultTest { @Test public void assertNextForSkipAll() throws SQLException { - Limit limit = new Limit(); - limit.setOffset(new LimitValue(Integer.MAX_VALUE, -1, new NumberLiteralLimitValueSegment(0, 0, 2, true))); - routeResult.setLimit(limit); + routeResult.setLimit(new Limit(new LimitValue(Integer.MAX_VALUE, -1, new NumberLiteralLimitValueSegment(0, 0, 2, true)), null)); mergeEngine = new DQLMergeEngine(DatabaseType.Oracle, routeResult, queryResults); MergedResult actual = mergeEngine.merge(); assertFalse(actual.next()); @@ -81,7 +79,7 @@ public final class RowNumberDecoratorMergedResultTest { @Test public void assertNextWithoutOffsetWithoutRowCount() throws SQLException { - routeResult.setLimit(new Limit()); + routeResult.setLimit(new Limit(null, null)); mergeEngine = new DQLMergeEngine(DatabaseType.Oracle, routeResult, queryResults); MergedResult actual = mergeEngine.merge(); for (int i = 0; i < 8; i++) { @@ -92,10 +90,7 @@ public final class RowNumberDecoratorMergedResultTest { @Test public void assertNextForRowCountBoundOpenedFalse() throws SQLException { - Limit limit = new Limit(); - limit.setOffset(new LimitValue(2, -1, new NumberLiteralLimitValueSegment(0, 0, 2, true))); - limit.setRowCount(new LimitValue(4, -1, new NumberLiteralLimitValueSegment(0, 0, 4, false))); - routeResult.setLimit(limit); + routeResult.setLimit(new Limit(new LimitValue(2, -1, new NumberLiteralLimitValueSegment(0, 0, 2, true)), new LimitValue(4, -1, new NumberLiteralLimitValueSegment(0, 0, 4, false)))); mergeEngine = new DQLMergeEngine(DatabaseType.Oracle, routeResult, queryResults); MergedResult actual = mergeEngine.merge(); assertTrue(actual.next()); @@ -105,10 +100,7 @@ public final class RowNumberDecoratorMergedResultTest { @Test public void assertNextForRowCountBoundOpenedTrue() throws SQLException { - Limit limit = new Limit(); - limit.setOffset(new LimitValue(2, -1, new NumberLiteralLimitValueSegment(0, 0, 2, true))); - limit.setRowCount(new LimitValue(4, -1, new NumberLiteralLimitValueSegment(0, 0, 4, true))); - routeResult.setLimit(limit); + routeResult.setLimit(new Limit(new LimitValue(2, -1, new NumberLiteralLimitValueSegment(0, 0, 2, true)), new LimitValue(4, -1, new NumberLiteralLimitValueSegment(0, 0, 4, true)))); mergeEngine = new DQLMergeEngine(DatabaseType.Oracle, routeResult, queryResults); MergedResult actual = mergeEngine.merge(); assertTrue(actual.next()); diff --git a/sharding-core/sharding-core-merge/src/test/java/org/apache/shardingsphere/core/merge/dql/pagination/TopAndRowNumberDecoratorMergedResultTest.java b/sharding-core/sharding-core-merge/src/test/java/org/apache/shardingsphere/core/merge/dql/pagination/TopAndRowNumberDecoratorMergedResultTest.java index 57633bab3213caaa8b4d8018b7fc1354e14fe3c1..398f0d9ec5633a63f647a53255008588de48f6bb 100644 --- a/sharding-core/sharding-core-merge/src/test/java/org/apache/shardingsphere/core/merge/dql/pagination/TopAndRowNumberDecoratorMergedResultTest.java +++ b/sharding-core/sharding-core-merge/src/test/java/org/apache/shardingsphere/core/merge/dql/pagination/TopAndRowNumberDecoratorMergedResultTest.java @@ -71,9 +71,7 @@ public final class TopAndRowNumberDecoratorMergedResultTest { @Test public void assertNextForSkipAll() throws SQLException { - Limit limit = new Limit(); - limit.setOffset(new LimitValue(Integer.MAX_VALUE, -1, new NumberLiteralLimitValueSegment(0, 0, Integer.MAX_VALUE, true))); - routeResult.setLimit(limit); + routeResult.setLimit(new Limit(new LimitValue(Integer.MAX_VALUE, -1, new NumberLiteralLimitValueSegment(0, 0, Integer.MAX_VALUE, true)), null)); mergeEngine = new DQLMergeEngine(DatabaseType.SQLServer, routeResult, queryResults); MergedResult actual = mergeEngine.merge(); assertFalse(actual.next()); @@ -81,9 +79,7 @@ public final class TopAndRowNumberDecoratorMergedResultTest { @Test public void assertNextWithoutOffsetWithRowCount() throws SQLException { - Limit limit = new Limit(); - limit.setRowCount(new LimitValue(5, -1, new NumberLiteralLimitValueSegment(0, 0, 2, false))); - routeResult.setLimit(limit); + routeResult.setLimit(new Limit(null, new LimitValue(5, -1, new NumberLiteralLimitValueSegment(0, 0, 2, false)))); mergeEngine = new DQLMergeEngine(DatabaseType.SQLServer, routeResult, queryResults); MergedResult actual = mergeEngine.merge(); for (int i = 0; i < 5; i++) { @@ -94,9 +90,7 @@ public final class TopAndRowNumberDecoratorMergedResultTest { @Test public void assertNextWithOffsetWithoutRowCount() throws SQLException { - Limit limit = new Limit(); - limit.setOffset(new LimitValue(2, -1, new NumberLiteralLimitValueSegment(0, 0, 2, true))); - routeResult.setLimit(limit); + routeResult.setLimit(new Limit(new LimitValue(2, -1, new NumberLiteralLimitValueSegment(0, 0, 2, true)), null)); mergeEngine = new DQLMergeEngine(DatabaseType.SQLServer, routeResult, queryResults); MergedResult actual = mergeEngine.merge(); for (int i = 0; i < 7; i++) { @@ -107,10 +101,7 @@ public final class TopAndRowNumberDecoratorMergedResultTest { @Test public void assertNextWithOffsetBoundOpenedFalse() throws SQLException { - Limit limit = new Limit(); - limit.setOffset(new LimitValue(2, -1, new NumberLiteralLimitValueSegment(0, 0, 2, false))); - limit.setRowCount(new LimitValue(4, -1, new NumberLiteralLimitValueSegment(0, 0, 4, false))); - routeResult.setLimit(limit); + routeResult.setLimit(new Limit(new LimitValue(2, -1, new NumberLiteralLimitValueSegment(0, 0, 2, false)), new LimitValue(4, -1, new NumberLiteralLimitValueSegment(0, 0, 4, false)))); mergeEngine = new DQLMergeEngine(DatabaseType.SQLServer, routeResult, queryResults); MergedResult actual = mergeEngine.merge(); assertTrue(actual.next()); @@ -120,10 +111,7 @@ public final class TopAndRowNumberDecoratorMergedResultTest { @Test public void assertNextWithOffsetBoundOpenedTrue() throws SQLException { - Limit limit = new Limit(); - limit.setOffset(new LimitValue(2, -1, new NumberLiteralLimitValueSegment(0, 0, 2, true))); - limit.setRowCount(new LimitValue(4, -1, new NumberLiteralLimitValueSegment(0, 0, 4, false))); - routeResult.setLimit(limit); + routeResult.setLimit(new Limit(new LimitValue(2, -1, new NumberLiteralLimitValueSegment(0, 0, 2, true)), new LimitValue(4, -1, new NumberLiteralLimitValueSegment(0, 0, 4, false)))); mergeEngine = new DQLMergeEngine(DatabaseType.SQLServer, routeResult, queryResults); MergedResult actual = mergeEngine.merge(); assertTrue(actual.next()); diff --git a/sharding-core/sharding-core-rewrite/src/test/java/org/apache/shardingsphere/core/rewrite/rewriter/ShardingSQLRewriterTest.java b/sharding-core/sharding-core-rewrite/src/test/java/org/apache/shardingsphere/core/rewrite/rewriter/ShardingSQLRewriterTest.java index 15faedb3f5d0182db292f0585a6a8a31510a9840..61ba6dcd47ad0d6153f0cde016ba28fa2f229a42 100644 --- a/sharding-core/sharding-core-rewrite/src/test/java/org/apache/shardingsphere/core/rewrite/rewriter/ShardingSQLRewriterTest.java +++ b/sharding-core/sharding-core-rewrite/src/test/java/org/apache/shardingsphere/core/rewrite/rewriter/ShardingSQLRewriterTest.java @@ -344,10 +344,7 @@ public final class ShardingSQLRewriterTest { selectStatement.setLimit(new LimitSegment(0, 0, offsetSQLSegment, rowCountSQLSegment)); selectStatement.addSQLToken(new TableToken(17, 23, "table_x", QuoteCharacter.NONE)); routeResult = new SQLRouteResult(selectStatement); - Limit limit = new Limit(); - limit.setOffset(new LimitValue(2, -1, offsetSQLSegment)); - limit.setRowCount(new LimitValue(2, -1, rowCountSQLSegment)); - routeResult.setLimit(limit); + routeResult.setLimit(new Limit(new LimitValue(2, -1, offsetSQLSegment), new LimitValue(2, -1, rowCountSQLSegment))); routeResult.setRoutingResult(new RoutingResult()); selectStatement.setLogicSQL("SELECT x.id FROM table_x x LIMIT 2, 2"); SQLRewriteEngine rewriteEngine = createSQLRewriteEngine(DatabaseType.MySQL, Collections.emptyList()); @@ -361,10 +358,7 @@ public final class ShardingSQLRewriterTest { selectStatement.setLimit(new LimitSegment(0, 0, offsetSQLSegment, rowCountSQLSegment)); selectStatement.addSQLToken(new TableToken(68, 74, "table_x", QuoteCharacter.NONE)); routeResult = new SQLRouteResult(selectStatement); - Limit limit = new Limit(); - limit.setOffset(new LimitValue(2, -1, offsetSQLSegment)); - limit.setRowCount(new LimitValue(4, -1, rowCountSQLSegment)); - routeResult.setLimit(limit); + routeResult.setLimit(new Limit(new LimitValue(2, -1, offsetSQLSegment), new LimitValue(4, -1, rowCountSQLSegment))); routeResult.setRoutingResult(new RoutingResult()); selectStatement.setLogicSQL("SELECT * FROM (SELECT row_.*, rownum rownum_ FROM (SELECT x.id FROM table_x x) row_ WHERE rownum<=4) t WHERE t.rownum_>2"); SQLRewriteEngine rewriteEngine = createSQLRewriteEngine(DatabaseType.Oracle, Collections.emptyList()); @@ -379,10 +373,7 @@ public final class ShardingSQLRewriterTest { selectStatement.setLimit(new LimitSegment(0, 0, offsetSQLSegment, rowCountSQLSegment)); selectStatement.addSQLToken(new TableToken(85, 91, "table_x", QuoteCharacter.NONE)); routeResult = new SQLRouteResult(selectStatement); - Limit limit = new Limit(); - limit.setOffset(new LimitValue(2, -1, offsetSQLSegment)); - limit.setRowCount(new LimitValue(4, -1, rowCountSQLSegment)); - routeResult.setLimit(limit); + routeResult.setLimit(new Limit(new LimitValue(2, -1, offsetSQLSegment), new LimitValue(4, -1, rowCountSQLSegment))); routeResult.setRoutingResult(new RoutingResult()); selectStatement.setLogicSQL("SELECT * FROM (SELECT TOP(4) row_number() OVER (ORDER BY x.id) AS rownum_, x.id FROM table_x x) AS row_ WHERE row_.rownum_>2"); SQLRewriteEngine rewriteEngine = createSQLRewriteEngine(DatabaseType.SQLServer, Collections.emptyList()); @@ -401,10 +392,7 @@ public final class ShardingSQLRewriterTest { selectStatement.getGroupByItems().add(new ColumnOrderByItemSegment(0, 0, columnSegment, OrderDirection.DESC, OrderDirection.ASC)); selectStatement.addSQLToken(new TableToken(17, 23, "table_x", QuoteCharacter.NONE)); routeResult = new SQLRouteResult(selectStatement); - Limit limit = new Limit(); - limit.setOffset(new LimitValue(2, -1, offsetSQLSegment)); - limit.setRowCount(new LimitValue(4, -1, rowCountSQLSegment)); - routeResult.setLimit(limit); + routeResult.setLimit(new Limit(new LimitValue(2, -1, offsetSQLSegment), new LimitValue(4, -1, rowCountSQLSegment))); routeResult.setRoutingResult(new RoutingResult()); selectStatement.setLogicSQL("SELECT x.id FROM table_x x LIMIT 2, 2"); SQLRewriteEngine rewriteEngine = createSQLRewriteEngine(DatabaseType.MySQL, Collections.emptyList()); @@ -422,10 +410,7 @@ public final class ShardingSQLRewriterTest { selectStatement.getOrderByItems().add(new ColumnOrderByItemSegment(0, 0, columnSegment, OrderDirection.ASC, OrderDirection.ASC)); selectStatement.getGroupByItems().add(new ColumnOrderByItemSegment(0, 0, columnSegment, OrderDirection.DESC, OrderDirection.ASC)); routeResult = new SQLRouteResult(selectStatement); - Limit limit = new Limit(); - limit.setOffset(new LimitValue(2, -1, offsetSQLSegment)); - limit.setRowCount(new LimitValue(4, -1, rowCountSQLSegment)); - routeResult.setLimit(limit); + routeResult.setLimit(new Limit(new LimitValue(2, -1, offsetSQLSegment), new LimitValue(4, -1, rowCountSQLSegment))); routeResult.setRoutingResult(new RoutingResult()); selectStatement.setLogicSQL("SELECT * FROM (SELECT row_.*, rownum rownum_ FROM (SELECT x.id FROM table_x x) row_ WHERE rownum<=4) t WHERE t.rownum_>2"); SQLRewriteEngine rewriteEngine = createSQLRewriteEngine(DatabaseType.Oracle, Collections.emptyList()); @@ -444,10 +429,7 @@ public final class ShardingSQLRewriterTest { selectStatement.getOrderByItems().add(new ColumnOrderByItemSegment(0, 0, columnSegment, OrderDirection.ASC, OrderDirection.ASC)); selectStatement.getGroupByItems().add(new ColumnOrderByItemSegment(0, 0, columnSegment, OrderDirection.DESC, OrderDirection.ASC)); routeResult = new SQLRouteResult(selectStatement); - Limit limit = new Limit(); - limit.setOffset(new LimitValue(2, -1, offsetSQLSegment)); - limit.setRowCount(new LimitValue(4, -1, rowCountSQLSegment)); - routeResult.setLimit(limit); + routeResult.setLimit(new Limit(new LimitValue(2, -1, offsetSQLSegment), new LimitValue(4, -1, rowCountSQLSegment))); routeResult.setRoutingResult(new RoutingResult()); selectStatement.setLogicSQL("SELECT * FROM (SELECT TOP(4) row_number() OVER (ORDER BY x.id) AS rownum_, x.id FROM table_x x) AS row_ WHERE row_.rownum_>2"); SQLRewriteEngine rewriteEngine = createSQLRewriteEngine(DatabaseType.SQLServer, Collections.emptyList()); @@ -462,10 +444,7 @@ public final class ShardingSQLRewriterTest { selectStatement.setLimit(new LimitSegment(0, 0, offsetSQLSegment, rowCountSQLSegment)); selectStatement.addSQLToken(new TableToken(17, 23, "table_x", QuoteCharacter.NONE)); routeResult = new SQLRouteResult(selectStatement); - Limit limit = new Limit(); - limit.setOffset(new LimitValue(2, -1, offsetSQLSegment)); - limit.setRowCount(new LimitValue(4, -1, rowCountSQLSegment)); - routeResult.setLimit(limit); + routeResult.setLimit(new Limit(new LimitValue(2, -1, offsetSQLSegment), new LimitValue(4, -1, rowCountSQLSegment))); RoutingResult routingResult = new RoutingResult(); routingResult.getRoutingUnits().add(new RoutingUnit("ds")); routeResult.setRoutingResult(routingResult); @@ -481,10 +460,7 @@ public final class ShardingSQLRewriterTest { selectStatement.setLimit(new LimitSegment(0, 0, offsetSQLSegment, rowCountSQLSegment)); selectStatement.addSQLToken(new TableToken(68, 74, "table_x", QuoteCharacter.NONE)); routeResult = new SQLRouteResult(selectStatement); - Limit limit = new Limit(); - limit.setOffset(new LimitValue(2, -1, offsetSQLSegment)); - limit.setRowCount(new LimitValue(4, -1, rowCountSQLSegment)); - routeResult.setLimit(limit); + routeResult.setLimit(new Limit(new LimitValue(2, -1, offsetSQLSegment), new LimitValue(4, -1, rowCountSQLSegment))); RoutingResult routingResult = new RoutingResult(); routingResult.getRoutingUnits().add(new RoutingUnit("ds")); routeResult.setRoutingResult(routingResult); @@ -501,10 +477,7 @@ public final class ShardingSQLRewriterTest { selectStatement.setLimit(new LimitSegment(0, 0, offsetSQLSegment, rowCountSQLSegment)); selectStatement.addSQLToken(new TableToken(85, 91, "table_x", QuoteCharacter.NONE)); routeResult = new SQLRouteResult(selectStatement); - Limit limit = new Limit(); - limit.setOffset(new LimitValue(2, -1, offsetSQLSegment)); - limit.setRowCount(new LimitValue(4, -1, rowCountSQLSegment)); - routeResult.setLimit(limit); + routeResult.setLimit(new Limit(new LimitValue(2, -1, offsetSQLSegment), new LimitValue(4, -1, rowCountSQLSegment))); RoutingResult routingResult = new RoutingResult(); routingResult.getRoutingUnits().add(new RoutingUnit("ds")); routeResult.setRoutingResult(routingResult); diff --git a/sharding-core/sharding-core-route/src/main/java/org/apache/shardingsphere/core/route/limit/Limit.java b/sharding-core/sharding-core-route/src/main/java/org/apache/shardingsphere/core/route/limit/Limit.java index b6c4ac14aa8c275c135f45a1e0ec11bb57e5dec9..45c95be382e9d604d790efcb76f379a24cf763e4 100644 --- a/sharding-core/sharding-core-route/src/main/java/org/apache/shardingsphere/core/route/limit/Limit.java +++ b/sharding-core/sharding-core-route/src/main/java/org/apache/shardingsphere/core/route/limit/Limit.java @@ -18,7 +18,6 @@ package org.apache.shardingsphere.core.route.limit; import lombok.Getter; -import lombok.Setter; import lombok.ToString; import org.apache.shardingsphere.core.parse.exception.SQLParsingException; import org.apache.shardingsphere.core.util.NumberUtil; @@ -35,7 +34,6 @@ import java.util.Map; * @author zhangyonglun */ @Getter -@Setter @ToString public final class Limit { @@ -43,6 +41,11 @@ public final class Limit { private LimitValue rowCount; + public Limit(final LimitValue offset, final LimitValue rowCount) { + this.offset = offset; + this.rowCount = rowCount; + } + /** * Get offset value. * diff --git a/sharding-core/sharding-core-route/src/main/java/org/apache/shardingsphere/core/route/router/sharding/ParsingSQLRouter.java b/sharding-core/sharding-core-route/src/main/java/org/apache/shardingsphere/core/route/router/sharding/ParsingSQLRouter.java index 10951d383e79ad5670f31697ed825acf68f39ca5..c87af6144c4df79f38af1b97902c658270a9977f 100644 --- a/sharding-core/sharding-core-route/src/main/java/org/apache/shardingsphere/core/route/router/sharding/ParsingSQLRouter.java +++ b/sharding-core/sharding-core-route/src/main/java/org/apache/shardingsphere/core/route/router/sharding/ParsingSQLRouter.java @@ -196,14 +196,15 @@ public final class ParsingSQLRouter implements ShardingRouter { } private Limit createLimit(final LimitSegment limitSegment) { - Limit result = new Limit(); + LimitValue offset = null; if (limitSegment.getOffset().isPresent()) { - result.setOffset(createLimitValue(limitSegment.getOffset().get())); + offset = createLimitValue(limitSegment.getOffset().get()); } + LimitValue rowCount = null; if (limitSegment.getRowCount().isPresent()) { - result.setRowCount(createLimitValue(limitSegment.getRowCount().get())); + rowCount = createLimitValue(limitSegment.getRowCount().get()); } - return result; + return new Limit(offset, rowCount); } private LimitValue createLimitValue(final LimitValueSegment limitValueSegment) { diff --git a/sharding-integration-test/sharding-jdbc-test/src/test/resources/logback-test.xml b/sharding-integration-test/sharding-jdbc-test/src/test/resources/logback-test.xml new file mode 100644 index 0000000000000000000000000000000000000000..9c8231634dd1986b44ef7689f1a292331100bf3f --- /dev/null +++ b/sharding-integration-test/sharding-jdbc-test/src/test/resources/logback-test.xml @@ -0,0 +1,34 @@ + + + + + + + [%-5level] %d{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n + + + + + + + + + + + +