|
45 | 45 | * @author Greg Turnquist
|
46 | 46 | * @author Jędrzej Biedrzycki
|
47 | 47 | * @author Darin Manica
|
| 48 | + * @author Chris Fraser |
48 | 49 | */
|
49 | 50 | class QueryUtilsUnitTests {
|
50 | 51 |
|
@@ -180,6 +181,56 @@ void testRemoveSubqueries() throws Exception {
|
180 | 181 | .isEqualTo("(select u from User u where not exists ( ))");
|
181 | 182 | }
|
182 | 183 |
|
| 184 | + @Test // GH-2581 |
| 185 | + void testRemoveMultilineSubqueries() { |
| 186 | + |
| 187 | + assertThat(normalizeWhitespace(removeSubqueries("select u from User u\n" |
| 188 | + + " where not exists (\n" |
| 189 | + + " from User u2\n" |
| 190 | + + " )"))) |
| 191 | + .isEqualTo("select u from User u where not exists"); |
| 192 | + assertThat(normalizeWhitespace(removeSubqueries("(\n" |
| 193 | + + " select u from User u \n" |
| 194 | + + " where not exists (\n" |
| 195 | + + " from User u2\n" |
| 196 | + + " )\n" |
| 197 | + + ")"))) |
| 198 | + .isEqualTo("( select u from User u where not exists )"); |
| 199 | + assertThat(normalizeWhitespace( |
| 200 | + removeSubqueries("select u from User u \n" |
| 201 | + + " where not exists (\n" |
| 202 | + + " from User u2 \n" |
| 203 | + + " where not exists (\n" |
| 204 | + + " from User u3\n" |
| 205 | + + " )\n" |
| 206 | + + " )"))) |
| 207 | + .isEqualTo("select u from User u where not exists"); |
| 208 | + assertThat(normalizeWhitespace( |
| 209 | + removeSubqueries("select u from User u \n" |
| 210 | + + " where not exists (\n" |
| 211 | + + " (\n" |
| 212 | + + " from User u2 \n" |
| 213 | + + " where not exists (\n" |
| 214 | + + " from User u3\n" |
| 215 | + + " )\n" |
| 216 | + + " )\n" |
| 217 | + + " )"))) |
| 218 | + .isEqualTo("select u from User u where not exists ( )"); |
| 219 | + assertThat(normalizeWhitespace( |
| 220 | + removeSubqueries("(\n" |
| 221 | + + " select u from User u \n" |
| 222 | + + " where not exists (\n" |
| 223 | + + " (\n" |
| 224 | + + " from User u2 \n" |
| 225 | + + " where not exists (\n" |
| 226 | + + " from User u3\n" |
| 227 | + + " )\n" |
| 228 | + + " )\n" |
| 229 | + + " )\n" |
| 230 | + + ")"))) |
| 231 | + .isEqualTo("( select u from User u where not exists ( ) )"); |
| 232 | + } |
| 233 | + |
183 | 234 | private String normalizeWhitespace(String s) {
|
184 | 235 | Matcher matcher = MULTI_WHITESPACE.matcher(s);
|
185 | 236 | if (matcher.find()) {
|
|
0 commit comments