@@ -63,7 +64,7 @@ public final class SQLRewriteEngineTest {
@Test
publicvoidassertRewriteWithoutChange(){
SQLRewriteEnginerewriteEngine=newSQLRewriteEngine(shardingRule,"SELECT table_y.id FROM table_y WHERE table_y.id=?",selectStatement);
SQLRewriteEnginerewriteEngine=newSQLRewriteEngine(shardingRule,"SELECT table_y.id FROM table_y WHERE table_y.id=?",DatabaseType.MySQL,selectStatement);
assertThat(rewriteEngine.rewrite(true).toSQL(tableTokens),is("SELECT table_y.id FROM table_y WHERE table_y.id=?"));
}
...
...
@@ -72,7 +73,7 @@ public final class SQLRewriteEngineTest {
SQLRewriteEnginerewriteEngine=newSQLRewriteEngine(shardingRule,"SELECT table_x.id, x.name FROM table_x x WHERE table_x.id=? AND x.name=?",selectStatement);
SQLRewriteEnginerewriteEngine=newSQLRewriteEngine(shardingRule,"SELECT table_x.id, x.name FROM table_x x WHERE table_x.id=? AND x.name=?",DatabaseType.MySQL,selectStatement);
assertThat(rewriteEngine.rewrite(true).toSQL(tableTokens),is("SELECT table_1.id, x.name FROM table_1 x WHERE table_1.id=? AND x.name=?"));
}
...
...
@@ -82,7 +83,7 @@ public final class SQLRewriteEngineTest {
ItemsTokenitemsToken=newItemsToken(12);
itemsToken.getItems().addAll(Arrays.asList("x.id as ORDER_BY_DERIVED_0","x.name as GROUP_BY_DERIVED_0"));
selectStatement.getSqlTokens().add(itemsToken);
SQLRewriteEnginerewriteEngine=newSQLRewriteEngine(shardingRule,"SELECT x.age FROM table_x x GROUP BY x.id ORDER BY x.name",selectStatement);
SQLRewriteEnginerewriteEngine=newSQLRewriteEngine(shardingRule,"SELECT x.age FROM table_x x GROUP BY x.id ORDER BY x.name",DatabaseType.MySQL,selectStatement);
assertThat(rewriteEngine.rewrite(true).toSQL(tableTokens),is("SELECT x.age, x.id as ORDER_BY_DERIVED_0, x.name as GROUP_BY_DERIVED_0 FROM table_1 x GROUP BY x.id ORDER BY x.name"));
}
...
...
@@ -92,7 +93,7 @@ public final class SQLRewriteEngineTest {
ItemsTokenitemsToken=newItemsToken(17);
itemsToken.getItems().addAll(Arrays.asList("COUNT(x.age) as AVG_DERIVED_COUNT_0","SUM(x.age) as AVG_DERIVED_SUM_0"));
selectStatement.getSqlTokens().add(itemsToken);
SQLRewriteEnginerewriteEngine=newSQLRewriteEngine(shardingRule,"SELECT AVG(x.age) FROM table_x x",selectStatement);
SQLRewriteEnginerewriteEngine=newSQLRewriteEngine(shardingRule,"SELECT AVG(x.age) FROM table_x x",DatabaseType.MySQL,selectStatement);
assertThat(rewriteEngine.rewrite(true).toSQL(tableTokens),is("SELECT AVG(x.age), COUNT(x.age) as AVG_DERIVED_COUNT_0, SUM(x.age) as AVG_DERIVED_SUM_0 FROM table_1 x"));
}
...
...
@@ -104,7 +105,7 @@ public final class SQLRewriteEngineTest {
"SELECT * FROM (SELECT row_.*, rownum rownum_ FROM (SELECT x.id FROM table_x x) row_ WHERE rownum<=4) t WHERE t.rownum_>2",selectStatement);
"SELECT * FROM (SELECT row_.*, rownum rownum_ FROM (SELECT x.id FROM table_x x) row_ WHERE rownum<=4) t WHERE t.rownum_>2",DatabaseType.MySQL,selectStatement);
assertThat(rewriteEngine.rewrite(true).toSQL(tableTokens),is("SELECT * FROM (SELECT row_.*, rownum rownum_ FROM (SELECT x.id FROM table_1 x) row_ WHERE rownum<=4) t WHERE t.rownum_>0"));
}
...
...
@@ -142,7 +143,7 @@ public final class SQLRewriteEngineTest {
"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",selectStatement);
"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",DatabaseType.MySQL,selectStatement);
assertThat(rewriteEngine.rewrite(true).toSQL(tableTokens),is("SELECT * FROM (SELECT TOP(4) row_number() OVER (ORDER BY x.id) AS rownum_, x.id FROM table_1 x) AS row_ WHERE row_.rownum_>0"));
}
...
...
@@ -156,7 +157,7 @@ public final class SQLRewriteEngineTest {
"SELECT * FROM (SELECT row_.*, rownum rownum_ FROM (SELECT x.id FROM table_x x) row_ WHERE rownum<=4) t WHERE t.rownum_>2",selectStatement);
"SELECT * FROM (SELECT row_.*, rownum rownum_ FROM (SELECT x.id FROM table_x x) row_ WHERE rownum<=4) t WHERE t.rownum_>2",DatabaseType.MySQL,selectStatement);
"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",selectStatement);
"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",DatabaseType.MySQL,selectStatement);
"SELECT * FROM (SELECT row_.*, rownum rownum_ FROM (SELECT x.id FROM table_x x) row_ WHERE rownum<=4) t WHERE t.rownum_>2",selectStatement);
"SELECT * FROM (SELECT row_.*, rownum rownum_ FROM (SELECT x.id FROM table_x x) row_ WHERE rownum<=4) t WHERE t.rownum_>2",DatabaseType.MySQL,selectStatement);
assertThat(rewriteEngine.rewrite(false).toSQL(tableTokens),is("SELECT * FROM (SELECT row_.*, rownum rownum_ FROM (SELECT x.id FROM table_1 x) row_ WHERE rownum<=4) t WHERE t.rownum_>2"));
}
...
...
@@ -226,7 +227,7 @@ public final class SQLRewriteEngineTest {
"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",selectStatement);
"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",DatabaseType.MySQL,selectStatement);
SQLRewriteEnginerewriteEngine=newSQLRewriteEngine(shardingRule,"SELECT x.id, x.name FROM table_x x GROUP BY x.id, x.name DESC",selectStatement);
SQLRewriteEnginerewriteEngine=newSQLRewriteEngine(shardingRule,"SELECT x.id, x.name FROM table_x x GROUP BY x.id, x.name DESC",DatabaseType.MySQL,selectStatement);
assertThat(rewriteEngine.rewrite(true).toSQL(tableTokens),is("SELECT x.id, x.name FROM table_1 x GROUP BY x.id, x.name DESC ORDER BY id ASC,name DESC "));
}
...
...
@@ -249,7 +250,8 @@ public final class SQLRewriteEngineTest {
SQLRewriteEnginesqlRewriteEngine=newSQLRewriteEngine(shardingRule,"SELECT table_x.id, x.name FROM table_x x, table_y y WHERE table_x.id=? AND x.name=?",selectStatement);
SQLRewriteEnginesqlRewriteEngine=
newSQLRewriteEngine(shardingRule,"SELECT table_x.id, x.name FROM table_x x, table_y y WHERE table_x.id=? AND x.name=?",DatabaseType.MySQL,selectStatement);
assertThat(sqlRewriteEngine.generateSQL(newTableUnit("db0","table_x","table_x"),sqlBuilder),is("SELECT table_x.id, x.name FROM table_x x, table_y y WHERE table_x.id=? AND x.name=?"));
}
...
...
@@ -259,7 +261,7 @@ public final class SQLRewriteEngineTest {
SQLRewriteEnginesqlRewriteEngine=newSQLRewriteEngine(shardingRule,"SELECT table_x.id, x.name FROM table_x x WHERE table_x.id=? AND x.name=?",selectStatement);
SQLRewriteEnginesqlRewriteEngine=newSQLRewriteEngine(shardingRule,"SELECT table_x.id, x.name FROM table_x x WHERE table_x.id=? AND x.name=?",DatabaseType.MySQL,selectStatement);
assertThat(sqlRewriteEngine.generateSQL(cartesianTableReference,sqlBuilder),is("SELECT table_x.id, x.name FROM table_x x WHERE table_x.id=? AND x.name=?"));
<sqlid="assertSelectCountWithGroupByBindingTable"value="SELECT count(*) as items_count, o.user_id FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.user_id IN (%s, %s) AND o.order_id BETWEEN %s AND %s GROUP BY o.user_id"/>
<sqlid="assertSelectWithGroupByAndLimit"value="SELECT user_id FROM t_order GROUP BY user_id LIMIT %s"type="H2,MySQL,PostgreSQL"/>
<sqlid="assertSelectWithGroupByAndOrderByAndLimit"value="SELECT user_id, SUM(order_id) FROM t_order GROUP BY user_id ORDER BY SUM(order_id) LIMIT %s"type="H2,MySQL,PostgreSQL"/>
<sqlid="assertSelectGroupByWithAliasIsKeyword"value="SELECT SUM(order_id) AS orders_sum, user_id as `key` FROM t_order GROUP BY `key`"type="MySQL"/>