@@ -63,16 +63,18 @@ public class JSqlParserQueryEnhancer implements QueryEnhancer {
6363 * @param query the query we want to enhance. Must not be {@literal null}.
6464 */
6565 public JSqlParserQueryEnhancer (DeclaredQuery query ) {
66+
6667 this .query = query ;
6768 this .parsedType = detectParsedType ();
6869 }
6970
7071 /**
7172 * Detects what type of query is provided.
72- *
73+ *
7374 * @return the parsed type
7475 */
7576 private ParsedType detectParsedType () {
77+
7678 try {
7779 Statement statement = CCJSqlParserUtil .parse (this .query .getQueryString ());
7880
@@ -85,14 +87,14 @@ private ParsedType detectParsedType() {
8587 } else {
8688 return ParsedType .SELECT ;
8789 }
88-
8990 } catch (JSQLParserException e ) {
9091 throw new IllegalArgumentException ("The query you provided is not a valid SQL Query!" , e );
9192 }
9293 }
9394
9495 @ Override
9596 public String applySorting (Sort sort , @ Nullable String alias ) {
97+
9698 String queryString = query .getQueryString ();
9799 Assert .hasText (queryString , "Query must not be null or empty!" );
98100
@@ -168,9 +170,11 @@ Set<String> getSelectionAliases() {
168170 * @return a {@literal Set} of aliases used in the query. Guaranteed to be not {@literal null}.
169171 */
170172 private Set <String > getJoinAliases (String query ) {
173+
171174 if (this .parsedType != ParsedType .SELECT ) {
172175 return new HashSet <>();
173176 }
177+
174178 return getJoinAliases ((PlainSelect ) parseSelectStatement (query ).getSelectBody ());
175179 }
176180
@@ -377,16 +381,17 @@ private boolean onlyASingleColumnProjection(List<SelectItem> projection) {
377381 public DeclaredQuery getQuery () {
378382 return this .query ;
379383 }
380- }
381384
382- /**
383- * An enum to represent the top level parsed statement of the provided query.
384- * <ul>
385- * <li>{@code ParsedType.DELETE}: means the top level statement is {@link Delete}</li>
386- * <li>{@code ParsedType.UPDATE}: means the top level statement is {@link Update}</li>
387- * <li>{@code ParsedType.SELECT}: means the top level statement is {@link Select}</li>
388- * </ul>
389- */
390- enum ParsedType {
391- DELETE , UPDATE , SELECT ;
385+ /**
386+ * An enum to represent the top level parsed statement of the provided query.
387+ * <ul>
388+ * <li>{@code ParsedType.DELETE}: means the top level statement is {@link Delete}</li>
389+ * <li>{@code ParsedType.UPDATE}: means the top level statement is {@link Update}</li>
390+ * <li>{@code ParsedType.SELECT}: means the top level statement is {@link Select}</li>
391+ * </ul>
392+ */
393+ enum ParsedType {
394+ DELETE , UPDATE , SELECT ;
395+ }
396+
392397}
0 commit comments