<assert id="assertSelectWithOrForOne" sql="select id from travel_record where fee in (3) or days = 5 or name = 'zhangsan'" expected-sql="SELECT id FROM [Token(travel_record)] WHERE fee IN (3) OR days = 5 OR name = 'zhangsan'">
<assert id="assertSelectWithOrAnd" sql="select id from travel_record where fee in (3) and ( days = 5 or name = 'zhangsan') and age = 3" expected-sql="SELECT id FROM [Token(travel_record)] WHERE fee IN (3) AND (days = 5 OR name = 'zhangsan') AND age = 3">
<assert id="assertSelectWithComplicatedOrExpression" sql="select id from travel_record where id = 1 and ( fee=3 or days=5 or (travel_date = '2015-05-04 00:00:07.375' and (user_id=2 or days=2 or fee = 0))) and id=2" expected-sql="SELECT id FROM [Token(travel_record)] WHERE id = 1 AND (fee = 3 OR days = 5 OR travel_date = '2015-05-04 00:00:07.375' AND (user_id = 2 OR days = 2 OR fee = 0)) AND id = 2">
<assertid="assertInsertWithParameterAndGenerateKeyColumnIsShardingColumn"sql="insert into `order`('state') values(?)"expected-sql="insert into [Token(order)]('state', order_id) values(?, ?)">
<assertid="assertDeleteWithAlias"sql="DELETE FROM `order` o WHERE order_id BETWEEN 1 AND 3"expected-sql="DELETE FROM [Token(order)] o WHERE order_id BETWEEN 1 AND 3">
<assertid="assertInsertWithGenerateKeyColumn"sql="insert into `order`('state') values('RUNNING')"expected-sql="insert into [Token(order)]('state', order_id) values('RUNNING', 1)">
<assertid="assertSelectWithJoin"sql="SELECT * FROM order INNER JOIN user u ON u.user_id = order.user_id JOIN order_item i ON u.user_id = i.user_id WHERE u.user_id = 1000"expected-sql="SELECT * FROM [Token(order)] INNER JOIN [Token(user)] u ON u.user_id = [Token(order)].user_id JOIN [Token(order_item)] i ON u.user_id = i.user_id WHERE u.user_id = 1000">
<assertid="assertSelectWithJoinUsing"sql="SELECT * FROM user u JOIN order o USING(user_id) JOIN order_item USING(user_id) WHERE u.user_id = 1000"expected-sql="SELECT * FROM [Token(user)] u JOIN [Token(order)] o USING(user_id) JOIN [Token(order_item)] USING(user_id) WHERE u.user_id = 1000">
<assertid="assertSelectAmbiguousTableName"sql="SELECT * FROM user u JOIN order o USING(user_id) JOIN order_item USING(user_id) WHERE u.user_id = 1000"expected-sql="SELECT * FROM [Token(user)] u JOIN [Token(order)] o USING(user_id) JOIN [Token(order_item)] USING(user_id) WHERE u.user_id = 1000">
<assertid="assertSelectWithTableNameAsAlias"sql="select * from order where order.order_id = 1"expected-sql="SELECT * FROM [Token(order)] WHERE [Token(order)].order_id = 1">
<assertid="assertSelectWithCondition"sql="select * from order where order_id = 1 and state = 'RUNNING'"expected-sql="select * from [Token(order)] where order_id = 1 and state = 'RUNNING'">
<assertid="assertSelectForShardingKeySelectCondition"sql="select * from order where order_id = 1 and other_state = 'RUNNING'"expected-sql="select * from [Token(order)] where order_id = 1 and other_state = 'RUNNING'">
<assertid="assertSelectForBetween"sql="select * from order where order_id between 1 and 10 and other_state = 'RUNNING'"expected-sql="select * from [Token(order)] where order_id between 1 and 10 and other_state = 'RUNNING'">
<assertid="assertSelectForIn"sql="select * from order where order_id in (1,2,3) and other_state = 'RUNNING'"expected-sql="select * from [Token(order)] where order_id in (1,2,3) and other_state = 'RUNNING'">
<assertid="assertSelectForInWithTableName"sql="select * from order where order.order_id in (1,2,3) and order.other_state = 'RUNNING'"expected-sql="SELECT * FROM [Token(order)] WHERE [Token(order)].order_id IN (1, 2, 3) AND [Token(order)].other_state = 'RUNNING'">
<assertid="assertSelectForBetweenWithTableName"sql="select * from order where order.order_id between 1 and 3 and order.other_state = 'RUNNING'"expected-sql="SELECT * FROM [Token(order)] WHERE [Token(order)].order_id BETWEEN 1 AND 3 AND [Token(order)].other_state = 'RUNNING'">
<assertid="assertSelectWithDateFunction"sql="select * from order where date = str_to_date('2013-01-01 01:21:01','%Y-%m-%d %H:%i:%s')"expected-sql="select * from [Token(order)] where date = str_to_date('2013-01-01 01:21:01','%Y-%m-%d %H:%i:%s')">
<tables>
<tablename="order"/>
</tables>
<condition-contexts>
<condition-context/>
</condition-contexts>
</assert>
<!-- // TODO 这里可优化,将两个字段AND = 替换为永false -->
<!-- // TODO 测试用例condition条件不对 -->
<!--
<assert id="assertSelectWithSameShardingColumnForAnd" sql="select * from order where order_id = 1 and order_id = 2" expected-sql="select * from [Token(order)] where order_id = 1 and order_id = 2">
<assert id="assertSelectWithSameShardingColumnForIn" sql="select * from order where order_id in(1,3) and order_id in (2,4)" expected-sql="select * from [Token(order)] where order_id in(1,3) and order_id in (2,4)">