Skip to content

Commit 88eddaf

Browse files
author
tfedkiv
committed
added TableFunction alias suppurt
added TableFunction unit tests
1 parent a5a5f9e commit 88eddaf

File tree

2 files changed

+65
-8
lines changed

2 files changed

+65
-8
lines changed

src/main/java/net/sf/jsqlparser/statement/select/TableFunction.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ public class TableFunction implements FromItem {
2828

2929
private String name;
3030
private ExpressionList parameters;
31+
private Alias alias;
3132

3233
/**
3334
* The name of he procedure, i.e. "UNWIND_TOP"
@@ -62,22 +63,21 @@ public void accept(FromItemVisitor fromItemVisitor) {
6263

6364
@Override
6465
public Alias getAlias() {
65-
throw new UnsupportedOperationException();
66+
return alias;
6667
}
6768

6869
@Override
6970
public void setAlias(Alias alias) {
70-
throw new UnsupportedOperationException();
71+
this.alias = alias;
7172
}
7273

7374
@Override
7475
public Pivot getPivot() {
75-
throw new UnsupportedOperationException();
76+
return null;
7677
}
7778

7879
@Override
7980
public void setPivot(Pivot pivot) {
80-
throw new UnsupportedOperationException();
8181
}
8282

8383
@Override
@@ -90,9 +90,11 @@ public String toString() {
9090
params = "()";
9191
}
9292

93-
String ans = name + "" + params + "";
94-
95-
return ans;
93+
String string = name + "" + params + "";
94+
if (alias != null) {
95+
string += alias.toString();
96+
}
97+
return string;
9698
}
9799

98100
}

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

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2005,5 +2005,60 @@ public void testOracleHintExpression() throws JSQLParserException {
20052005
PlainSelect plainSelect = (PlainSelect) ((Select) parsed).getSelectBody();
20062006
assertExpressionCanBeDeparsedAs(plainSelect.getOracleHint(), "--+ HINT\n");
20072007
}
2008-
2008+
2009+
public void testTableFunctionWithNoParams() throws Exception {
2010+
final String statement = "SELECT f2 FROM SOME_FUNCTION()";
2011+
Select select = (Select) parserManager.parse(new StringReader(statement));
2012+
PlainSelect plainSelect = (PlainSelect) select.getSelectBody();
2013+
2014+
assertTrue(plainSelect.getFromItem() instanceof TableFunction);
2015+
TableFunction fromItem = (TableFunction) plainSelect.getFromItem();
2016+
assertEquals("SOME_FUNCTION", fromItem.getName());
2017+
assertNull(fromItem.getParameters());
2018+
assertNull(fromItem.getAlias());
2019+
assertStatementCanBeDeparsedAs(select, statement);
2020+
}
2021+
2022+
public void testTableFunctionWithParams() throws Exception {
2023+
final String statement = "SELECT f2 FROM SOME_FUNCTION(1, 'val')";
2024+
Select select = (Select) parserManager.parse(new StringReader(statement));
2025+
PlainSelect plainSelect = (PlainSelect) select.getSelectBody();
2026+
2027+
assertTrue(plainSelect.getFromItem() instanceof TableFunction);
2028+
TableFunction fromItem = (TableFunction) plainSelect.getFromItem();
2029+
assertEquals("SOME_FUNCTION", fromItem.getName());
2030+
2031+
// verify params
2032+
assertNotNull(fromItem.getParameters());
2033+
List<Expression> expressions = fromItem.getParameters().getExpressions();
2034+
assertEquals(2, expressions.size());
2035+
2036+
Expression firstParam = expressions.get(0);
2037+
assertNotNull(firstParam);
2038+
assertTrue(firstParam instanceof LongValue);
2039+
assertEquals(1l, ((LongValue) firstParam).getValue());
2040+
2041+
Expression secondParam = expressions.get(1);
2042+
assertNotNull(secondParam);
2043+
assertTrue(secondParam instanceof StringValue);
2044+
assertEquals("val", ((StringValue) secondParam).getValue());
2045+
2046+
assertNull(fromItem.getAlias());
2047+
assertStatementCanBeDeparsedAs(select, statement);
2048+
}
2049+
2050+
public void testTableFunctionWithAlias() throws Exception {
2051+
final String statement = "SELECT f2 FROM SOME_FUNCTION() AS z";
2052+
Select select = (Select) parserManager.parse(new StringReader(statement));
2053+
PlainSelect plainSelect = (PlainSelect) select.getSelectBody();
2054+
2055+
assertTrue(plainSelect.getFromItem() instanceof TableFunction);
2056+
TableFunction fromItem = (TableFunction) plainSelect.getFromItem();
2057+
2058+
assertEquals("SOME_FUNCTION", fromItem.getName());
2059+
assertNull(fromItem.getParameters());
2060+
assertNotNull(fromItem.getAlias());
2061+
assertEquals("z", fromItem.getAlias().getName());
2062+
assertStatementCanBeDeparsedAs(select, statement);
2063+
}
20092064
}

0 commit comments

Comments
 (0)