Skip to content

Commit

Permalink
MySql parameters and SPEL. JPQL, HQL support for '%' in LIKE clause
Browse files Browse the repository at this point in the history
  • Loading branch information
BoykoAlex committed Jul 17, 2024
1 parent 2019ec3 commit 4361299
Show file tree
Hide file tree
Showing 41 changed files with 23,802 additions and 23,094 deletions.
8 changes: 4 additions & 4 deletions headless-services/commons/jpql/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@
/src/main/java/org/springframework/ide/vscode/parser/hql/Hql.tokens
/src/main/java/org/springframework/ide/vscode/parser/hql/HqlLexer.interp
/src/main/java/org/springframework/ide/vscode/parser/hql/HqlLexer.tokens
/src/main/java/org/springframework/ide/vscode/parser/sql/MySqlParser.interp
/src/main/java/org/springframework/ide/vscode/parser/sql/MySqlParser.tokens
/src/main/java/org/springframework/ide/vscode/parser/sql/MySqlLexer.interp
/src/main/java/org/springframework/ide/vscode/parser/sql/MySqlLexer.tokens
/src/main/java/org/springframework/ide/vscode/parser/mysql/MySqlParser.interp
/src/main/java/org/springframework/ide/vscode/parser/mysql/MySqlParser.tokens
/src/main/java/org/springframework/ide/vscode/parser/mysql/MySqlLexer.interp
/src/main/java/org/springframework/ide/vscode/parser/mysql/MySqlLexer.tokens
/src/main/java/org/springframework/ide/vscode/parser/spel/SpelParser.interp
/src/main/java/org/springframework/ide/vscode/parser/spel/SpelParser.tokens
/src/main/java/org/springframework/ide/vscode/parser/spel/SpelLexer.interp
Expand Down
2 changes: 1 addition & 1 deletion headless-services/commons/jpql/generate-parsers.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@ workdir=$(pwd)
cd grammars
java -jar ${workdir}/antlr-${ANTLR_VERSION}.jar Jpql.g4 -o ${workdir}/src/main/java/org/springframework/ide/vscode/parser/jpql -package org.springframework.ide.vscode.parser.jpql
java -jar ${workdir}/antlr-${ANTLR_VERSION}.jar Hql.g4 -o ${workdir}/src/main/java/org/springframework/ide/vscode/parser/hql -package org.springframework.ide.vscode.parser.hql
java -jar ${workdir}/antlr-${ANTLR_VERSION}.jar MySqlLexer.g4 MySqlParser.g4 -o ${workdir}/src/main/java/org/springframework/ide/vscode/parser/sql -package org.springframework.ide.vscode.parser.sql
java -jar ${workdir}/antlr-${ANTLR_VERSION}.jar MySqlLexer.g4 MySqlParser.g4 -o ${workdir}/src/main/java/org/springframework/ide/vscode/parser/mysql -package org.springframework.ide.vscode.parser.mysql
java -jar ${workdir}/antlr-${ANTLR_VERSION}.jar SpelLexer.g4 SpelParser.g4 -o ${workdir}/src/main/java/org/springframework/ide/vscode/parser/spel -package org.springframework.ide.vscode.parser.spel

4 changes: 2 additions & 2 deletions headless-services/commons/jpql/grammars/Hql.g4
Original file line number Diff line number Diff line change
Expand Up @@ -608,7 +608,7 @@ dealingWithNullExpression

// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-like-predicate
stringPatternMatching
: expression NOT? (LIKE | ILIKE) expression (ESCAPE (stringLiteral|parameter))?
: expression NOT? (LIKE | ILIKE) ('%')? expression ('%')? (ESCAPE (stringLiteral|parameter))?
;

// https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#hql-elements-indices
Expand Down Expand Up @@ -673,7 +673,7 @@ variable

parameter
: prefix=':' SPEL
| prefix=':' identifier ('%')?
| prefix=':' identifier
| prefix='?' SPEL
| prefix='?' INTEGER_LITERAL?
;
Expand Down
4 changes: 2 additions & 2 deletions headless-services/commons/jpql/grammars/Jpql.g4
Original file line number Diff line number Diff line change
Expand Up @@ -342,7 +342,7 @@ in_item
;

like_expression
: string_expression (NOT)? LIKE pattern_value (ESCAPE escape_character)?
: string_expression (NOT)? LIKE ('%')? pattern_value ('%')? (ESCAPE escape_character)?
;

null_comparison_expression
Expand Down Expand Up @@ -633,7 +633,7 @@ input_parameter
: ':' SPEL
| '?' SPEL
| '?' INTLITERAL
| ':' identification_variable ('%')?
| ':' identification_variable
;

pattern_value
Expand Down
5 changes: 3 additions & 2 deletions headless-services/commons/jpql/grammars/MySqlLexer.g4
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ SPACE : [ \t\r\n]+ -> channel(HIDDEN);
SPEC_MYSQL_COMMENT : '/*!' .+? '*/' -> channel(MYSQLCOMMENT);
COMMENT_INPUT : '/*' .*? '*/' -> channel(HIDDEN);
LINE_COMMENT:
(('--' [ \t]* | '#') ~[\r\n]* ('\r'? '\n' | EOF) | '--' ('\r'? '\n' | EOF)) -> channel(HIDDEN)
(('--' [ \t]*) ~[\r\n]* ('\r'? '\n' | EOF) | '--' ('\r'? '\n' | EOF)) -> channel(HIDDEN)
;

// Keywords
Expand Down Expand Up @@ -1293,7 +1293,7 @@ HOST_IP_ADDRESS : (AT_SIGN IP_ADDRESS);
LOCAL_ID : AT_SIGN ( STRING_LITERAL | [A-Z0-9._$\u0080-\uFFFF]+);
GLOBAL_ID : AT_SIGN AT_SIGN ( [A-Z0-9._$\u0080-\uFFFF]+ | BQUOTA_STRING);

SPEL : ('#')('{')(.)*?('}') ;
SPEL : '#{' ANYTHING '}';

// Fragments for Literal primitives

Expand Down Expand Up @@ -1341,6 +1341,7 @@ fragment CHARSET_NAME:
| UTF8MB4
;

fragment ANYTHING : (.)*?;
fragment EXPONENT_NUM_PART : 'E' [-+]? DEC_DIGIT+;
fragment ID_LITERAL : [A-Z_$0-9\u0080-\uFFFF]*? [A-Z_$\u0080-\uFFFF]+? [A-Z_$0-9\u0080-\uFFFF]*;
fragment DQUOTA_STRING : '"' ( '\\' . | '""' | ~('"' | '\\'))* '"';
Expand Down
12 changes: 10 additions & 2 deletions headless-services/commons/jpql/grammars/MySqlParser.g4
Original file line number Diff line number Diff line change
Expand Up @@ -2544,7 +2544,7 @@ predicate

// Add in ASTVisitor nullNotnull in constant
expressionAtom
: (QUESTION_SYMB | COLON_SYMB) SPEL # spelExpressionAtom
: parameter # parameterAtom
| constant # constantExpressionAtom
| fullColumnName # fullColumnNameExpressionAtom
| functionCall # functionCallExpressionAtom
Expand All @@ -2563,7 +2563,15 @@ expressionAtom
| left = expressionAtom addOperator right = expressionAtom # mathExpressionAtom
| left = expressionAtom jsonOperator right = expressionAtom # jsonExpressionAtom
;


parameter
: prefix=':' SPEL
| prefix=':' dottedId
| prefix=':' uid
| prefix='?' SPEL
| prefix='?' decimalLiteral?
;

unaryOperator
: '!'
| '~'
Expand Down
Loading

0 comments on commit 4361299

Please sign in to comment.