File tree Expand file tree Collapse file tree 3 files changed +68
-12
lines changed
java/net/sf/jsqlparser/expression/operators/relational
jjtree/net/sf/jsqlparser/parser
test/java/net/sf/jsqlparser/expression/operators/relational Expand file tree Collapse file tree 3 files changed +68
-12
lines changed Original file line number Diff line number Diff line change 17
17
import java .util .Optional ;
18
18
import net .sf .jsqlparser .expression .Expression ;
19
19
import net .sf .jsqlparser .expression .ExpressionVisitor ;
20
+ import net .sf .jsqlparser .expression .JdbcNamedParameter ;
21
+ import net .sf .jsqlparser .expression .JdbcParameter ;
20
22
import net .sf .jsqlparser .expression .StringValue ;
21
23
import net .sf .jsqlparser .parser .ASTNodeAccessImpl ;
22
24
import net .sf .jsqlparser .schema .Column ;
23
25
24
26
public class FullTextSearch extends ASTNodeAccessImpl implements Expression {
25
27
26
28
private List <Column > _matchColumns ;
27
- private StringValue _againstValue ;
29
+ private Expression _againstValue ;
28
30
private String _searchModifier ;
29
31
30
32
public FullTextSearch () {
@@ -42,8 +44,16 @@ public List<Column> getMatchColumns() {
42
44
public void setAgainstValue (StringValue val ) {
43
45
this ._againstValue = val ;
44
46
}
47
+
48
+ public void setAgainstValue (JdbcNamedParameter val ) {
49
+ this ._againstValue = val ;
50
+ }
51
+
52
+ public void setAgainstValue (JdbcParameter val ) {
53
+ this ._againstValue = val ;
54
+ }
45
55
46
- public StringValue getAgainstValue () {
56
+ public Expression getAgainstValue () {
47
57
return this ._againstValue ;
48
58
}
49
59
Original file line number Diff line number Diff line change @@ -4149,22 +4149,31 @@ FullTextSearch FullTextSearch() : {
4149
4149
Column col;
4150
4150
Token searchModifier;
4151
4151
Token againstValue;
4152
+ JdbcParameter jdbcParameter;
4153
+ JdbcNamedParameter jdbcNamedParameter;
4152
4154
FullTextSearch fs = new FullTextSearch();
4153
4155
List<Column> matchedColumns = new ArrayList<Column>();
4154
4156
List<Expression> expList = new ArrayList<Expression>();
4155
4157
}
4156
4158
{
4157
4159
<K_MATCH> "(" col=Column() { matchedColumns.add(col); } ("," col=Column() { matchedColumns.add(col); } )* ")" <K_AGAINST>
4158
- "(" againstValue=<S_CHAR_LITERAL> { fs.setAgainstValue(new StringValue(againstValue.image)); }
4159
- [
4160
- (
4161
- searchModifier="IN NATURAL LANGUAGE MODE"
4162
- | searchModifier="IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION"
4163
- | searchModifier="IN BOOLEAN MODE"
4164
- | searchModifier="WITH QUERY EXPANSION"
4165
- )
4166
- { fs.setSearchModifier(searchModifier.image); }
4167
- ]
4160
+ "("
4161
+ (
4162
+ againstValue=<S_CHAR_LITERAL> { fs.setAgainstValue(new StringValue(againstValue.image)); }
4163
+ |
4164
+ jdbcParameter=SimpleJdbcParameter() { fs.setAgainstValue( jdbcParameter ); }
4165
+ |
4166
+ jdbcNamedParameter=SimpleJdbcNamedParameter() { fs.setAgainstValue( jdbcNamedParameter ); }
4167
+ )
4168
+ [
4169
+ (
4170
+ searchModifier="IN NATURAL LANGUAGE MODE"
4171
+ | searchModifier="IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION"
4172
+ | searchModifier="IN BOOLEAN MODE"
4173
+ | searchModifier="WITH QUERY EXPANSION"
4174
+ )
4175
+ { fs.setSearchModifier(searchModifier.image); }
4176
+ ]
4168
4177
")"
4169
4178
{
4170
4179
fs.setMatchColumns(matchedColumns);
Original file line number Diff line number Diff line change
1
+ /*-
2
+ * #%L
3
+ * JSQLParser library
4
+ * %%
5
+ * Copyright (C) 2004 - 2021 JSQLParser
6
+ * %%
7
+ * Dual licensed under GNU LGPL 2.1 or Apache License 2.0
8
+ * #L%
9
+ */
10
+
11
+ package net .sf .jsqlparser .expression .operators .relational ;
12
+
13
+ import net .sf .jsqlparser .JSQLParserException ;
14
+ import net .sf .jsqlparser .test .TestUtils ;
15
+ import org .junit .Test ;
16
+
17
+ /**
18
+ *
19
+ * @author <a href="mailto:andreas@manticore-projects.com">Andreas Reichel</a>
20
+ */
21
+ public class FullTextSearchExpressionTest {
22
+ @ Test
23
+ public void testFullTextSearchExpressionWithParameters () throws JSQLParserException {
24
+ TestUtils .assertSqlCanBeParsedAndDeparsed (
25
+ "select match (name) against (?) as full_text from commodity" , true );
26
+ TestUtils .assertSqlCanBeParsedAndDeparsed (
27
+ "select match (name) against (:parameter) as full_text from commodity" , true );
28
+ }
29
+
30
+ @ Test
31
+ public void testIssue1223 () throws JSQLParserException {
32
+ TestUtils .assertSqlCanBeParsedAndDeparsed ("select\n " + "c.*,\n "
33
+ + "match (name) against (?) as full_text\n " + "from\n " + "commodity c\n " + "where\n "
34
+ + "match (name) against (?)\n " + "and c.deleted = 0\n " + "order by\n " + "full_text desc" ,
35
+ true );
36
+ }
37
+ }
You can’t perform that action at this time.
0 commit comments