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 @@ -4247,22 +4247,31 @@ FullTextSearch FullTextSearch() : {
4247
4247
Column col;
4248
4248
Token searchModifier;
4249
4249
Token againstValue;
4250
+ JdbcParameter jdbcParameter;
4251
+ JdbcNamedParameter jdbcNamedParameter;
4250
4252
FullTextSearch fs = new FullTextSearch();
4251
4253
List<Column> matchedColumns = new ArrayList<Column>();
4252
4254
List<Expression> expList = new ArrayList<Expression>();
4253
4255
}
4254
4256
{
4255
4257
<K_MATCH> "(" col=Column() { matchedColumns.add(col); } ("," col=Column() { matchedColumns.add(col); } )* ")" <K_AGAINST>
4256
- "(" againstValue=<S_CHAR_LITERAL> { fs.setAgainstValue(new StringValue(againstValue.image)); }
4257
- [
4258
- (
4259
- searchModifier="IN NATURAL LANGUAGE MODE"
4260
- | searchModifier="IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION"
4261
- | searchModifier="IN BOOLEAN MODE"
4262
- | searchModifier="WITH QUERY EXPANSION"
4263
- )
4264
- { fs.setSearchModifier(searchModifier.image); }
4265
- ]
4258
+ "("
4259
+ (
4260
+ againstValue=<S_CHAR_LITERAL> { fs.setAgainstValue(new StringValue(againstValue.image)); }
4261
+ |
4262
+ jdbcParameter=SimpleJdbcParameter() { fs.setAgainstValue( jdbcParameter ); }
4263
+ |
4264
+ jdbcNamedParameter=SimpleJdbcNamedParameter() { fs.setAgainstValue( jdbcNamedParameter ); }
4265
+ )
4266
+ [
4267
+ (
4268
+ searchModifier="IN NATURAL LANGUAGE MODE"
4269
+ | searchModifier="IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION"
4270
+ | searchModifier="IN BOOLEAN MODE"
4271
+ | searchModifier="WITH QUERY EXPANSION"
4272
+ )
4273
+ { fs.setSearchModifier(searchModifier.image); }
4274
+ ]
4266
4275
")"
4267
4276
{
4268
4277
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