Skip to content

Commit 41cbd7f

Browse files
committed
Improved required coverage
1 parent 7b4feb0 commit 41cbd7f

File tree

3 files changed

+59
-0
lines changed

3 files changed

+59
-0
lines changed

src/test/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapterTest.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,11 @@
2828
import net.sf.jsqlparser.statement.select.Select;
2929
import org.junit.After;
3030
import org.junit.AfterClass;
31+
import static org.junit.Assert.assertNotNull;
3132
import static org.junit.Assert.assertNull;
3233
import static org.junit.Assert.assertTrue;
34+
import static org.junit.Assert.assertFalse;
35+
import static org.junit.Assert.assertEquals;
3336
import org.junit.Before;
3437
import org.junit.BeforeClass;
3538
import org.junit.Test;
@@ -102,4 +105,30 @@ public void visit(InExpression expr) {
102105
assertTrue(exprList.get(1) instanceof ItemsList);
103106
assertTrue(exprList.get(2) instanceof ItemsList);
104107
}
108+
109+
@Test
110+
public void testOracleHintExpressions() throws JSQLParserException {
111+
testOracleHintExpression("select --+ MYHINT \n * from foo", "MYHINT", true);
112+
testOracleHintExpression("select /*+ MYHINT */ * from foo", "MYHINT", false);
113+
}
114+
115+
public static void testOracleHintExpression(String sql, String hint, boolean singleLine) throws JSQLParserException {
116+
Select select = (Select) CCJSqlParserUtil.parse(sql);
117+
PlainSelect plainSelect = (PlainSelect) select.getSelectBody();
118+
final OracleHint[] holder = new OracleHint[1];
119+
assertNotNull(plainSelect.getOracleHint());
120+
plainSelect.getOracleHint().accept(new ExpressionVisitorAdapter() {
121+
122+
@Override
123+
public void visit(OracleHint hint) {
124+
super.visit(hint);
125+
holder[0] = hint;
126+
}
127+
});
128+
129+
assertNotNull(holder[0]);
130+
assertEquals(singleLine, holder[0].isSingleLine());
131+
assertEquals(hint, holder[0].getValue());
132+
}
133+
105134
}

src/test/java/net/sf/jsqlparser/test/select/SelectTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1991,5 +1991,14 @@ public void testOracleHint() throws JSQLParserException {
19911991
assertOracleHintExists("(SELECT --+ HINT1 HINT2 HINT3\n * from t1) UNION (select /*+ HINT4 HINT5 */ * from dual)", true, "HINT1 HINT2 HINT3", "HINT4 HINT5");
19921992

19931993
}
1994+
1995+
public void testOracleHintExpression() throws JSQLParserException {
1996+
String statement = "SELECT --+ HINT\n * FROM tab1";
1997+
Statement parsed = parserManager.parse(new StringReader(statement));
1998+
1999+
assertEquals(statement, parsed.toString());
2000+
PlainSelect plainSelect = (PlainSelect) ((Select) parsed).getSelectBody();
2001+
assertExpressionCanBeDeparsedAs(plainSelect.getOracleHint(), "--+ HINT\n");
2002+
}
19942003

19952004
}

src/test/java/net/sf/jsqlparser/util/TablesNamesFinderTest.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import java.util.StringTokenizer;
1010
import net.sf.jsqlparser.JSQLParserException;
1111
import net.sf.jsqlparser.expression.Expression;
12+
import net.sf.jsqlparser.expression.OracleHint;
1213

1314
import net.sf.jsqlparser.parser.CCJSqlParserManager;
1415
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
@@ -333,4 +334,24 @@ public void testExpr() throws JSQLParserException {
333334
private String getLine(BufferedReader in) throws Exception {
334335
return CCJSqlParserManagerTest.getLine(in);
335336
}
337+
338+
@Test
339+
public void testOracleHint() throws JSQLParserException {
340+
String sql = "select --+ HINT\ncol2 from mytable";
341+
Select select = (Select) CCJSqlParserUtil.parse(sql);
342+
final OracleHint[] holder = new OracleHint[1];
343+
TablesNamesFinder tablesNamesFinder = new TablesNamesFinder() {
344+
345+
@Override
346+
public void visit(OracleHint hint) {
347+
super.visit(hint);
348+
holder[0] = hint;
349+
}
350+
351+
};
352+
tablesNamesFinder.getTableList(select);
353+
assertNull(holder[0]);
354+
355+
}
356+
336357
}

0 commit comments

Comments
 (0)