@@ -957,5 +957,262 @@ public void Test052()
957957
958958 Assert . IsTrue ( CompareExecuteNonQuery ( nativeSql , select ) ) ;
959959 }
960+
961+ [ Test ]
962+ public void Test053 ( )
963+ {
964+ Require . ProviderVersionAtLeast ( new Version ( 8 , 0 ) ) ;
965+
966+ var nativeSql =
967+ "SELECT `a`.`ArtistId` FROM ((SELECT ArtistId FROM dotest.album where AlbumId >= 0 and AlbumId < 50 LIMIT 10)"
968+ + " UNION (SELECT ArtistId FROM dotest.album where AlbumId >= 50 and AlbumId < 100 LIMIT 10)"
969+ + " UNION (SELECT ArtistId FROM dotest.album where AlbumId >= 100 and AlbumId < 200 LIMIT 10)"
970+ + " UNION (SELECT ArtistId FROM dotest.album where AlbumId >= 20 and AlbumId < 300 LIMIT 10)) `a`;" ;
971+
972+ var albums = SqlDml . TableRef ( schema . Tables [ "album" ] ) ;
973+
974+ var s1 = SqlDml . Select ( albums ) ;
975+ s1 . Columns . Add ( albums . Columns [ "ArtistId" ] ) ;
976+ s1 . Where = albums . Columns [ "AlbumId" ] >= 0 && albums . Columns [ "AlbumId" ] < 50 ;
977+ s1 . Limit = 10 ;
978+
979+ albums = SqlDml . TableRef ( schema . Tables [ "album" ] ) ;
980+ var s2 = SqlDml . Select ( albums ) ;
981+ s2 . Columns . Add ( albums . Columns [ "ArtistId" ] ) ;
982+ s2 . Where = albums . Columns [ "AlbumId" ] >= 50 && albums . Columns [ "AlbumId" ] < 100 ;
983+ s2 . Limit = 10 ;
984+
985+ albums = SqlDml . TableRef ( schema . Tables [ "album" ] ) ;
986+ var s3 = SqlDml . Select ( albums ) ;
987+ s3 . Columns . Add ( albums . Columns [ "ArtistId" ] ) ;
988+ s3 . Where = albums . Columns [ "AlbumId" ] >= 100 && albums . Columns [ "AlbumId" ] < 200 ;
989+ s3 . Limit = 10 ;
990+
991+ albums = SqlDml . TableRef ( schema . Tables [ "album" ] ) ;
992+ var s4 = SqlDml . Select ( albums ) ;
993+ s4 . Columns . Add ( albums . Columns [ "ArtistId" ] ) ;
994+ s4 . Where = albums . Columns [ "AlbumId" ] >= 200 && albums . Columns [ "AlbumId" ] < 300 ;
995+ s4 . Limit = 10 ;
996+
997+ var qr = SqlDml . QueryRef ( s1 . Union ( s2 ) . Union ( s3 . Union ( s4 ) ) , "a" ) ;
998+ var select = SqlDml . Select ( qr ) ;
999+ select . Columns . Add ( qr [ "ArtistId" ] ) ;
1000+
1001+ Assert . IsTrue ( CompareExecuteNonQuery ( nativeSql , select ) ) ;
1002+ }
1003+
1004+ [ Test ]
1005+ public void Test054 ( )
1006+ {
1007+ Require . ProviderVersionAtLeast ( new Version ( 8 , 0 ) ) ;
1008+
1009+ var nativeSql =
1010+ "SELECT `a`.`ArtistId` FROM ((SELECT ArtistId FROM dotest.album where AlbumId >= 0 and AlbumId < 50 LIMIT 10 OFFSET 10)"
1011+ + " UNION (SELECT ArtistId FROM dotest.album where AlbumId >= 50 and AlbumId < 100 LIMIT 10 OFFSET 10)"
1012+ + " UNION (SELECT ArtistId FROM dotest.album where AlbumId >= 100 and AlbumId < 200 LIMIT 10 OFFSET 10)"
1013+ + " UNION (SELECT ArtistId FROM dotest.album where AlbumId >= 20 and AlbumId < 300 LIMIT 10 OFFSET 10)) `a`;" ;
1014+
1015+ var albums = SqlDml . TableRef ( schema . Tables [ "album" ] ) ;
1016+
1017+ var s1 = SqlDml . Select ( albums ) ;
1018+ s1 . Columns . Add ( albums . Columns [ "ArtistId" ] ) ;
1019+ s1 . Where = albums . Columns [ "AlbumId" ] >= 0 && albums . Columns [ "AlbumId" ] < 50 ;
1020+ s1 . Limit = 10 ;
1021+ s1 . Offset = 10 ;
1022+
1023+ albums = SqlDml . TableRef ( schema . Tables [ "album" ] ) ;
1024+ var s2 = SqlDml . Select ( albums ) ;
1025+ s2 . Columns . Add ( albums . Columns [ "ArtistId" ] ) ;
1026+ s2 . Where = albums . Columns [ "AlbumId" ] >= 50 && albums . Columns [ "AlbumId" ] < 100 ;
1027+ s2 . Limit = 10 ;
1028+ s2 . Offset = 10 ;
1029+
1030+ albums = SqlDml . TableRef ( schema . Tables [ "album" ] ) ;
1031+ var s3 = SqlDml . Select ( albums ) ;
1032+ s3 . Columns . Add ( albums . Columns [ "ArtistId" ] ) ;
1033+ s3 . Where = albums . Columns [ "AlbumId" ] >= 100 && albums . Columns [ "AlbumId" ] < 200 ;
1034+ s3 . Limit = 10 ;
1035+ s3 . Offset = 10 ;
1036+
1037+ albums = SqlDml . TableRef ( schema . Tables [ "album" ] ) ;
1038+ var s4 = SqlDml . Select ( albums ) ;
1039+ s4 . Columns . Add ( albums . Columns [ "ArtistId" ] ) ;
1040+ s4 . Where = albums . Columns [ "AlbumId" ] >= 200 && albums . Columns [ "AlbumId" ] < 300 ;
1041+ s4 . Limit = 10 ;
1042+ s4 . Offset = 10 ;
1043+
1044+ var qr = SqlDml . QueryRef ( s1 . Union ( s2 ) . Union ( s3 . Union ( s4 ) ) , "a" ) ;
1045+ var select = SqlDml . Select ( qr ) ;
1046+ select . Columns . Add ( qr [ "ArtistId" ] ) ;
1047+
1048+ Assert . IsTrue ( CompareExecuteNonQuery ( nativeSql , select ) ) ;
1049+ }
1050+
1051+ [ Test ]
1052+ public void Test055 ( )
1053+ {
1054+ Require . ProviderVersionAtLeast ( new Version ( 8 , 0 ) ) ;
1055+
1056+ var nativeSql =
1057+ "SELECT `a`.`ArtistId` FROM ((SELECT ArtistId FROM dotest.album where AlbumId >= 0 and AlbumId < 50 FOR SHARE)"
1058+ + " UNION (SELECT ArtistId FROM dotest.album where AlbumId >= 50 and AlbumId < 100 FOR SHARE)"
1059+ + " UNION (SELECT ArtistId FROM dotest.album where AlbumId >= 100 and AlbumId < 200 FOR SHARE)"
1060+ + " UNION (SELECT ArtistId FROM dotest.album where AlbumId >= 20 and AlbumId < 300 FOR SHARE)) `a`;" ;
1061+
1062+ var albums = SqlDml . TableRef ( schema . Tables [ "album" ] ) ;
1063+
1064+ var s1 = SqlDml . Select ( albums ) ;
1065+ s1 . Columns . Add ( albums . Columns [ "ArtistId" ] ) ;
1066+ s1 . Where = albums . Columns [ "AlbumId" ] >= 0 && albums . Columns [ "AlbumId" ] < 50 ;
1067+ s1 . Lock = SqlLockType . Shared ;
1068+
1069+ albums = SqlDml . TableRef ( schema . Tables [ "album" ] ) ;
1070+ var s2 = SqlDml . Select ( albums ) ;
1071+ s2 . Columns . Add ( albums . Columns [ "ArtistId" ] ) ;
1072+ s2 . Where = albums . Columns [ "AlbumId" ] >= 50 && albums . Columns [ "AlbumId" ] < 100 ;
1073+ s2 . Lock = SqlLockType . Shared ;
1074+
1075+ albums = SqlDml . TableRef ( schema . Tables [ "album" ] ) ;
1076+ var s3 = SqlDml . Select ( albums ) ;
1077+ s3 . Columns . Add ( albums . Columns [ "ArtistId" ] ) ;
1078+ s3 . Where = albums . Columns [ "AlbumId" ] >= 100 && albums . Columns [ "AlbumId" ] < 200 ;
1079+ s3 . Lock = SqlLockType . Shared ;
1080+
1081+ albums = SqlDml . TableRef ( schema . Tables [ "album" ] ) ;
1082+ var s4 = SqlDml . Select ( albums ) ;
1083+ s4 . Columns . Add ( albums . Columns [ "ArtistId" ] ) ;
1084+ s4 . Where = albums . Columns [ "AlbumId" ] >= 200 && albums . Columns [ "AlbumId" ] < 300 ;
1085+ s4 . Lock = SqlLockType . Shared ;
1086+
1087+ var qr = SqlDml . QueryRef ( s1 . Union ( s2 ) . Union ( s3 . Union ( s4 ) ) , "a" ) ;
1088+ var select = SqlDml . Select ( qr ) ;
1089+ select . Columns . Add ( qr [ "ArtistId" ] ) ;
1090+
1091+ Assert . IsTrue ( CompareExecuteNonQuery ( nativeSql , select ) ) ;
1092+ }
1093+
1094+ [ Test ]
1095+ public void Test056 ( )
1096+ {
1097+ Require . ProviderVersionAtLeast ( new Version ( 8 , 0 ) ) ;
1098+
1099+ var nativeSql =
1100+ "SELECT `a`.`ArtistId` FROM ((SELECT ArtistId FROM dotest.album where AlbumId >= 0 and AlbumId < 50 ORDER BY ArtistId)"
1101+ + " UNION (SELECT ArtistId FROM dotest.album where AlbumId >= 50 and AlbumId < 100 ORDER BY ArtistId)"
1102+ + " UNION (SELECT ArtistId FROM dotest.album where AlbumId >= 100 and AlbumId < 200 ORDER BY ArtistId)"
1103+ + " UNION (SELECT ArtistId FROM dotest.album where AlbumId >= 20 and AlbumId < 300 ORDER BY ArtistId)) `a`;" ;
1104+
1105+ var albums = SqlDml . TableRef ( schema . Tables [ "album" ] ) ;
1106+
1107+ var s1 = SqlDml . Select ( albums ) ;
1108+ s1 . Columns . Add ( albums . Columns [ "ArtistId" ] ) ;
1109+ s1 . Where = albums . Columns [ "AlbumId" ] >= 0 && albums . Columns [ "AlbumId" ] < 50 ;
1110+ s1 . OrderBy . Add ( albums . Columns [ "ArtistId" ] ) ;
1111+
1112+ albums = SqlDml . TableRef ( schema . Tables [ "album" ] ) ;
1113+ var s2 = SqlDml . Select ( albums ) ;
1114+ s2 . Columns . Add ( albums . Columns [ "ArtistId" ] ) ;
1115+ s2 . Where = albums . Columns [ "AlbumId" ] >= 50 && albums . Columns [ "AlbumId" ] < 100 ;
1116+ s2 . OrderBy . Add ( albums . Columns [ "ArtistId" ] ) ;
1117+
1118+ albums = SqlDml . TableRef ( schema . Tables [ "album" ] ) ;
1119+ var s3 = SqlDml . Select ( albums ) ;
1120+ s3 . Columns . Add ( albums . Columns [ "ArtistId" ] ) ;
1121+ s3 . Where = albums . Columns [ "AlbumId" ] >= 100 && albums . Columns [ "AlbumId" ] < 200 ;
1122+ s3 . OrderBy . Add ( albums . Columns [ "ArtistId" ] ) ;
1123+
1124+ albums = SqlDml . TableRef ( schema . Tables [ "album" ] ) ;
1125+ var s4 = SqlDml . Select ( albums ) ;
1126+ s4 . Columns . Add ( albums . Columns [ "ArtistId" ] ) ;
1127+ s4 . Where = albums . Columns [ "AlbumId" ] >= 200 && albums . Columns [ "AlbumId" ] < 300 ;
1128+ s4 . OrderBy . Add ( albums . Columns [ "ArtistId" ] ) ;
1129+
1130+ var qr = SqlDml . QueryRef ( s1 . Union ( s2 ) . Union ( s3 . Union ( s4 ) ) , "a" ) ;
1131+ var select = SqlDml . Select ( qr ) ;
1132+ select . Columns . Add ( qr [ "ArtistId" ] ) ;
1133+
1134+ Assert . IsTrue ( CompareExecuteNonQuery ( nativeSql , select ) ) ;
1135+ }
1136+
1137+
1138+ [ Test ]
1139+ public void Test057 ( )
1140+ {
1141+ Require . ProviderVersionAtLeast ( new Version ( 8 , 0 ) ) ;
1142+
1143+ var nativeSql =
1144+ "SELECT `a`.`ArtistId` FROM (SELECT ArtistId FROM dotest.album where AlbumId >= 0 and AlbumId < 50 GROUP BY ArtistId"
1145+ + " UNION SELECT ArtistId FROM dotest.album where AlbumId >= 50 and AlbumId < 100 GROUP BY ArtistId"
1146+ + " UNION SELECT ArtistId FROM dotest.album where AlbumId >= 100 and AlbumId < 200 GROUP BY ArtistId"
1147+ + " UNION SELECT ArtistId FROM dotest.album where AlbumId >= 20 and AlbumId < 300 GROUP BY ArtistId) `a`;" ;
1148+
1149+ var albums = SqlDml . TableRef ( schema . Tables [ "album" ] ) ;
1150+
1151+ var s1 = SqlDml . Select ( albums ) ;
1152+ s1 . Columns . Add ( albums . Columns [ "ArtistId" ] ) ;
1153+ s1 . Where = albums . Columns [ "AlbumId" ] >= 0 && albums . Columns [ "AlbumId" ] < 50 ;
1154+ s1 . GroupBy . Add ( albums . Columns [ "ArtistId" ] ) ;
1155+
1156+ albums = SqlDml . TableRef ( schema . Tables [ "album" ] ) ;
1157+ var s2 = SqlDml . Select ( albums ) ;
1158+ s2 . Columns . Add ( albums . Columns [ "ArtistId" ] ) ;
1159+ s2 . Where = albums . Columns [ "AlbumId" ] >= 50 && albums . Columns [ "AlbumId" ] < 100 ;
1160+ s2 . GroupBy . Add ( albums . Columns [ "ArtistId" ] ) ;
1161+
1162+ albums = SqlDml . TableRef ( schema . Tables [ "album" ] ) ;
1163+ var s3 = SqlDml . Select ( albums ) ;
1164+ s3 . Columns . Add ( albums . Columns [ "ArtistId" ] ) ;
1165+ s3 . Where = albums . Columns [ "AlbumId" ] >= 100 && albums . Columns [ "AlbumId" ] < 200 ;
1166+ s3 . GroupBy . Add ( albums . Columns [ "ArtistId" ] ) ;
1167+
1168+ albums = SqlDml . TableRef ( schema . Tables [ "album" ] ) ;
1169+ var s4 = SqlDml . Select ( albums ) ;
1170+ s4 . Columns . Add ( albums . Columns [ "ArtistId" ] ) ;
1171+ s4 . Where = albums . Columns [ "AlbumId" ] >= 200 && albums . Columns [ "AlbumId" ] < 300 ;
1172+ s4 . GroupBy . Add ( albums . Columns [ "ArtistId" ] ) ;
1173+
1174+ var qr = SqlDml . QueryRef ( s1 . Union ( s2 ) . Union ( s3 . Union ( s4 ) ) , "a" ) ;
1175+ var select = SqlDml . Select ( qr ) ;
1176+ select . Columns . Add ( qr [ "ArtistId" ] ) ;
1177+
1178+ Assert . IsTrue ( CompareExecuteNonQuery ( nativeSql , select ) ) ;
1179+ }
1180+
1181+ [ Test ]
1182+ public void Test058 ( )
1183+ {
1184+ var nativeSql =
1185+ "SELECT `a`.`AlbumId` FROM (SELECT AlbumId FROM dotest.album where AlbumId >= 0 and AlbumId < 50"
1186+ + " UNION SELECT AlbumId FROM dotest.album where AlbumId >= 50 and AlbumId< 100"
1187+ + " UNION SELECT AlbumId FROM dotest.album where AlbumId >= 100 and AlbumId< 200"
1188+ + " UNION SELECT AlbumId FROM dotest.album where AlbumId >= 20 and AlbumId< 300) `a`;" ;
1189+
1190+ var albums = SqlDml . TableRef ( schema . Tables [ "album" ] ) ;
1191+
1192+ var s1 = SqlDml . Select ( albums ) ;
1193+ s1 . Columns . Add ( albums . Columns [ "AlbumId" ] ) ;
1194+ s1 . Where = albums . Columns [ "AlbumId" ] >= 0 && albums . Columns [ "AlbumId" ] < 50 ;
1195+
1196+ albums = SqlDml . TableRef ( schema . Tables [ "album" ] ) ;
1197+ var s2 = SqlDml . Select ( albums ) ;
1198+ s2 . Columns . Add ( albums . Columns [ "AlbumId" ] ) ;
1199+ s2 . Where = albums . Columns [ "AlbumId" ] >= 50 && albums . Columns [ "AlbumId" ] < 100 ;
1200+
1201+ albums = SqlDml . TableRef ( schema . Tables [ "album" ] ) ;
1202+ var s3 = SqlDml . Select ( albums ) ;
1203+ s3 . Columns . Add ( albums . Columns [ "AlbumId" ] ) ;
1204+ s3 . Where = albums . Columns [ "AlbumId" ] >= 100 && albums . Columns [ "AlbumId" ] < 200 ;
1205+
1206+ albums = SqlDml . TableRef ( schema . Tables [ "album" ] ) ;
1207+ var s4 = SqlDml . Select ( albums ) ;
1208+ s4 . Columns . Add ( albums . Columns [ "AlbumId" ] ) ;
1209+ s4 . Where = albums . Columns [ "AlbumId" ] >= 200 && albums . Columns [ "AlbumId" ] < 300 ;
1210+
1211+ var qr = SqlDml . QueryRef ( s1 . Union ( s2 ) . Union ( s3 . Union ( s4 ) ) , "a" ) ;
1212+ var select = SqlDml . Select ( qr ) ;
1213+ select . Columns . Add ( qr [ "AlbumId" ] ) ;
1214+
1215+ Assert . IsTrue ( CompareExecuteNonQuery ( nativeSql , select ) ) ;
1216+ }
9601217 }
9611218}
0 commit comments