select.xml 11.5 KB
Newer Older
1 2 3
<?xml version="1.0" encoding="UTF-8"?>
<sqls>
    <sql id="assertSelectEqualsWithSingleTable" value="SELECT * FROM t_order WHERE user_id = %s AND order_id = %s">
4 5 6 7 8
        <sharding-rule value="tbl">
            <data parameter="10,1000" expected="select/SelectEqualsWithSingleTable_0.xml" />
            <data parameter="11,1109" expected="select/SelectEqualsWithSingleTable_1.xml" />
            <data parameter="12,1000" />
        </sharding-rule>
9
        <sharding-rule value="db,masterslave,dbtbl">
10 11 12 13
            <data parameter="10,1000" expected="select/SelectEqualsWithSingleTable_0.xml" />
            <data parameter="12,1201" expected="select/SelectEqualsWithSingleTable_1.xml" />
            <data parameter="12,1000" />
        </sharding-rule>
14 15
    </sql>
    <sql id="assertSelectBetweenWithSingleTable" value="SELECT * FROM t_order WHERE user_id BETWEEN %s AND %s AND order_id BETWEEN %s AND %s ORDER BY user_id, order_id">
16
        <sharding-rule value="tbl,masterslave,dbtbl">
17 18 19 20 21
            <data parameter="10,12,1009,1108" expected="select/SelectBetweenWithSingleTable.xml" />
        </sharding-rule>
        <sharding-rule value="db">
            <data parameter="10,12,1001,1200" expected="select/SelectBetweenWithSingleTable.xml" />
        </sharding-rule>
22
        <data parameter="10,12,1309,1408" />
23 24
    </sql>
    <sql id="assertSelectInWithSingleTable" value="SELECT * FROM t_order WHERE user_id IN (%s, %s, %s) AND order_id IN (%s, %s) ORDER BY user_id, order_id">
25 26 27 28 29 30 31 32 33 34
        <sharding-rule value="tbl">
            <data parameter="10,11,15,1009,1108" expected="select/SelectInWithSingleTable_0.xml" />
            <data parameter="10,12,15,1009,1108" expected="select/SelectInWithSingleTable_1.xml" />
            <data parameter="10,12,15,1309,1408" />
        </sharding-rule>
        <sharding-rule value="db">
            <data parameter="10,12,15,1000,1201" expected="select/SelectInWithSingleTable_0.xml" />
            <data parameter="10,12,15,1000,1101" expected="select/SelectInWithSingleTable_1.xml" />
            <data parameter="10,12,15,1309,1408" />
        </sharding-rule>
35
        <sharding-rule value="masterslave,dbtbl">
36 37 38 39
            <data parameter="10,12,15,1009,1208" expected="select/SelectInWithSingleTable_0.xml" />
            <data parameter="10,12,15,1009,1108" expected="select/SelectInWithSingleTable_1.xml" />
            <data parameter="10,12,15,1309,1408" />
        </sharding-rule>
40 41
    </sql>
    <sql id="assertSelectIterator" value="SELECT t.* FROM t_order_item t WHERE t.item_id IN (%s, %s)">
42 43 44 45 46 47
        <sharding-rule value="tbl">
            <data parameter="100000,100001" expected="select/SelectIteratorSql_0.xml" />
            <data parameter="100900,100901" expected="select/SelectIteratorSql_1.xml" />
            <data parameter="100000,100900" expected="select/SelectIteratorSql_2.xml" />
            <data parameter="100000,100200" expected="select/SelectIteratorSql_3.xml" />
        </sharding-rule>
48 49 50 51 52 53
        <sharding-rule value="db">
            <data parameter="100001,100002" expected="select/SelectIteratorSql_0.xml" />
            <data parameter="200101,200102" expected="select/SelectIteratorSql_1.xml" />
            <data parameter="100001,200102" expected="select/SelectIteratorSql_2.xml" />
            <data parameter="100001,100101" expected="select/SelectIteratorSql_3.xml" />
        </sharding-rule>
54
        <sharding-rule value="masterslave,dbtbl">
55
            <data parameter="100000,100001" expected="select/SelectIteratorSql_0.xml" />
56
            <data parameter="190900,190901" expected="select/SelectIteratorSql_1.xml" />
57 58 59 60 61 62
            <data parameter="100000,100900" expected="select/SelectIteratorSql_2.xml" />
            <data parameter="100000,100200" expected="select/SelectIteratorSql_3.xml" />
        </sharding-rule>
        <sharding-rule>
            <data parameter="10,11" />
        </sharding-rule>
63 64
    </sql>
    <sql id="assertSelectNoShardingTable" value="SELECT i.* FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id ORDER BY i.item_id">
65
        <sharding-rule value="tbl,db,dbtbl">
66 67 68 69 70 71 72
            <data expected="select/SelectNoShardingTable.xml" />
        </sharding-rule>
    </sql>
    <sql id="assertSelectLikeWithCount" value="SELECT count(0) as orders_count FROM `t_order` o WHERE o.status LIKE CONCAT('%%', %s, '%%') AND o.`user_id` IN (%s, %s) AND o.`order_id` BETWEEN %s AND %s" type="MySQL,H2">
        <sharding-rule value="tbl">
            <data parameter="'init',10,11,1000,1909" expected="select/SelectLikeWithCount.xml" />
        </sharding-rule>
73
        <sharding-rule value="db,masterslave,dbtbl">
74 75
            <data parameter="'init',10,11,1000,2901" expected="select/SelectLikeWithCount.xml" />
        </sharding-rule>
76 77
    </sql>
    <sql id="assertSelectWithBindingTable" value="SELECT i.* 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 ORDER BY i.item_id">
78 79 80 81 82 83
        <sharding-rule value="tbl">
            <data parameter="10,11,1009,1108" expected="select/SelectWithBindingTable.xml" />
        </sharding-rule>
        <sharding-rule value="db">
            <data parameter="10,11,1000,1909" expected="select/SelectWithBindingTable.xml" />
        </sharding-rule>
84
        <sharding-rule value="masterslave,dbtbl">
85 86
            <data parameter="10,11,1009,1108" expected="select/SelectWithBindingTable.xml" />
        </sharding-rule>
87 88
    </sql>
    <sql id="assertSelectWithBindingTableAndConfigTable" value="SELECT i.* FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id JOIN t_config c ON o.status = c.status WHERE o.user_id IN (%s, %s) AND o.order_id BETWEEN %s AND %s AND c.status = %s ORDER BY i.item_id">
89
        <sharding-rule value="tbl">
90
            <data parameter="10,11,1009,1108,'init'" expected="select/SelectWithBindingTableAndConfigTable.xml" />
91
            
92
        </sharding-rule>
93 94
        <sharding-rule value="masterslave">
            <data parameter="10,11,1009,1108,'init_slave'" expected="select/SelectWithBindingTableAndConfigTable.xml" />
95 96 97 98 99
        </sharding-rule>
        <sharding-rule value="dbtbl">
            <data parameter="10,11,1009,1108,'init'" expected="select/SelectWithBindingTableAndConfigTable.xml" />
        </sharding-rule>
        <sharding-rule>
100 101
            <data parameter="10,11,1009,1108,'none"/>
        </sharding-rule>
102 103
    </sql>
    <sql id="assertSelectSubQuerySingleTableWithParentheses" value="SELECT t.* FROM ((SELECT o.* FROM t_order o WHERE o.order_id IN (%s, %s))) t ORDER BY t.order_id" type="MySQL,PostgreSQL,SQLServer,Oracle">
104
        <sharding-rule>
105 106
            <data parameter="1000,1001" expected="select/SelectSubquerySingleTableWithParentheses.xml" />
        </sharding-rule>
107 108
    </sql>
    <sql id="assertSelectSubQueryMultiTableWithParentheses" value="SELECT t.* FROM ((SELECT i.* FROM t_order o, t_order_item i WHERE o.order_id = i.order_id and o.order_id IN (%s, %s))) t ORDER BY t.item_id" type="MySQL,PostgreSQL,SQLServer,Oracle">
109
        <sharding-rule>
110 111
            <data parameter="1000,1001" expected="select/SelectSubqueryMultiTableWithParentheses.xml" />
        </sharding-rule>
112 113
    </sql>
    <sql id="assertSelectPagingWithOffset" value="SELECT i.* 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 ORDER BY i.item_id DESC OFFSET %s" type="PostgreSQL">
114 115 116
        <sharding-rule value="tbl,db">
            <data parameter="10,19,1000,1909,18" expected="select/postgresql/SelectPagingWithOffsetSql.xml" />
        </sharding-rule>
117
        <sharding-rule value="masterslave,dbtbl">
118 119
            <data parameter="10,19,1000,1909,38" expected="select/postgresql/SelectPagingWithOffsetSql.xml" />
        </sharding-rule>
120 121
    </sql>
    <sql id="assertSelectPagingWithRowCount" value="SELECT i.* 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 ORDER BY i.item_id DESC LIMIT %s" type="MySQL,H2,PostgreSQL">
122
        <sharding-rule>
123 124
            <data parameter="10,19,1000,1909,2" expected="select/SelectPagingWithRowCountSql.xml" />
        </sharding-rule>
125 126
    </sql>
    <sql id="assertSelectPagingWithRowCountInSQLServer" value="SELECT * FROM (SELECT TOP (%s) row_number() OVER (ORDER BY i.item_id DESC) AS rownum_, i.item_id, o.order_id as order_id, o.status as status, o.user_id as 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) AS row_" type="SQLServer">
127
        <sharding-rule>
128 129
            <data parameter="2,10,19,1000,1909" expected="select/sqlserver/SelectPagingWithRowCountSql.xml" />
        </sharding-rule>
130 131
    </sql>
    <sql id="assertSelectPagingWithRowCountInOracle" value="SELECT * FROM (SELECT row_.*, rownum rownum_ FROM (SELECT order0_.order_id as order_id, order0_.status as status, order0_.user_id as user_id FROM t_order order0_ JOIN t_order_item i ON order0_.user_id = i.user_id AND order0_.order_id = i.order_id WHERE order0_.user_id IN (%s, %s) AND order0_.order_id BETWEEN %s AND %s ORDER BY i.item_id DESC) row_ WHERE rownum &lt;= %s)" type="Oracle">
132
        <sharding-rule>
133 134
            <data parameter="10,19,1000,1909,2" expected="select/oracle/SelectPagingWithRowCountSql.xml" />
        </sharding-rule>
135 136
    </sql>
    <sql id="assertSelectPagingWithOffsetAndRowCount" value="SELECT i.* 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 ORDER BY i.item_id DESC LIMIT %s, %s" type="MySQL,H2">
137
        <sharding-rule>
138 139
            <data parameter="10,19,1000,1909,2,2" expected="select/SelectPagingWithOffsetAndRowCountSql.xml" />
        </sharding-rule>
140 141
    </sql>
    <sql id="assertSelectPagingWithOffsetAndRowCountInPostgreSQL" value="SELECT i.* 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 ORDER BY i.item_id DESC OFFSET %s LIMIT %s" type="PostgreSQL">
142 143
        <sharding-rule>
            <data parameter="10,19,1000,1909,2,2" expected="select/postgresql/SelectPagingWithOffsetAndRowCountSql.xml" />
144
        </sharding-rule>
145 146
    </sql>
    <sql id="assertSelectPagingWithOffsetAndRowCountInSQLServer" value="SELECT * FROM (SELECT TOP (%s) row_number() OVER (ORDER BY i.item_id DESC) AS rownum_, i.item_id, o.order_id as order_id, o.status as status, o.user_id as 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) AS row_ WHERE row_.rownum_ &gt; %s" type="SQLServer">
147
        <sharding-rule>
148 149
            <data parameter="4,10,19,1000,1909,2" expected="select/sqlserver/SelectPagingWithOffsetAndRowCountSql.xml" />
        </sharding-rule>
150 151
    </sql>
    <sql id="assertSelectPagingWithOffsetAndRowCountInOracle" value="SELECT * FROM (SELECT row_.*, rownum rownum_ FROM (SELECT order0_.order_id as order_id, order0_.status as status, order0_.user_id as user_id FROM t_order order0_ JOIN t_order_item i ON order0_.user_id = i.user_id AND order0_.order_id = i.order_id WHERE order0_.user_id IN (%s, %s) AND order0_.order_id BETWEEN %s AND %s ORDER BY i.item_id DESC) row_ WHERE rownum &lt;= %s) t WHERE t.rownum_ &gt; %s" type="Oracle">
152 153 154
        <sharding-rule>
            <data parameter="10,19,1000,1909,4,2" expected="select/oracle/SelectPagingWithOffsetAndRowCountSql.xml" />
        </sharding-rule>
155 156
    </sql>
</sqls>