Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
ed82660
-- solved some charset issues in test cases
May 30, 2016
2641fa6
* merging changes from commit 8e9493098c74e626359923ff1ec6aef2facdd354
Jun 1, 2016
26752fb
-- registered SUBSTRING(... FROM ... FOR ...) as new function
Jun 1, 2016
8d7d8be
-- added unit tests of new SUBSTRING function
Jun 1, 2016
8711734
-- renamed PostgreSQLFromForExpression to SubstringExpression
Jun 1, 2016
86ac0e4
add visitor support for timestamp expressions
Jun 1, 2016
2519b9c
-- added unit tests of new class SubstringExpression
Jun 1, 2016
9025b6f
-- repair unit test
Jun 1, 2016
65e2bf2
-- make parameters FROM and FOR of function SUBSTRING optional
Jun 1, 2016
a9fcd45
-- expand unit tests to optional parameters FROM and FOR
Jun 1, 2016
bb1c19d
Merge pull request #1 from conterra/substring
ChrissW-R1 Jun 1, 2016
8d1cc42
Merge remote-tracking branch 'remotes/origin/master' into date-expres…
Jun 1, 2016
aefdc4f
Merge pull request #2 from conterra/date-expressions
ChrissW-R1 Jun 1, 2016
2efd88c
-- renamed groupId
Jun 1, 2016
8e985b6
-- added scalar function CURRENT_TIME
Jun 1, 2016
635d108
Merge pull request #3 from conterra/date-expressions
ChrissW-R1 Jun 1, 2016
c861000
-- removed sign gpg plugin for release artifacts deployment (not nece…
Jun 1, 2016
4926d34
Merge remote-tracking branch 'origin/master'
Jun 1, 2016
c699ba0
-- added repo url for deployment as argument to maven release build
Jun 1, 2016
b272c45
-- use one visitor for all supported time key expressions
Jun 2, 2016
eccb4e7
Revert "Merge remote-tracking branch 'origin/master'"
Jun 8, 2016
0b498c7
revert merge for pull request
Jun 8, 2016
5d2acc2
revert commit for pull request
Jun 8, 2016
755e0fe
revert commit for pull request
Jun 8, 2016
73c6ca3
revert commit for pull request
Jun 8, 2016
6feb782
revert commit for pull request
Jun 8, 2016
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -164,5 +164,7 @@ public interface ExpressionVisitor {
void visit(RowConstructor rowConstructor);

void visit(OracleHint hint);


void visit(TimeKeyExpression timeKeyExpression);

}
Original file line number Diff line number Diff line change
Expand Up @@ -455,5 +455,10 @@ public void visit(HexValue hexValue) {
public void visit(OracleHint hint) {

}


@Override
public void visit(TimeKeyExpression timeKeyExpression) {

}

}
49 changes: 49 additions & 0 deletions src/main/java/net/sf/jsqlparser/expression/TimeKeyExpression.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
/*
* #%L
* JSQLParser library
* %%
* Copyright (C) 2004 - 2016 JSQLParser
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 2.1 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Lesser Public License for more details.
*
* You should have received a copy of the GNU General Lesser Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/lgpl-2.1.html>.
* #L%
*/
package net.sf.jsqlparser.expression;

public class TimeKeyExpression implements Expression {

private String stringValue;

public TimeKeyExpression(final String value) {
this.stringValue = value;
}

@Override
public void accept(ExpressionVisitor expressionVisitor) {
expressionVisitor.visit(this);
}

public String getStringValue() {
return stringValue;
}

public void setStringValue(String string) {
stringValue = string;
}

@Override
public String toString() {
return getStringValue();
}
}
3 changes: 3 additions & 0 deletions src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java
Original file line number Diff line number Diff line change
Expand Up @@ -652,4 +652,7 @@ public void visit(AlterView alterView) {
throw new UnsupportedOperationException(NOT_SUPPORTED_YET);
}

@Override
public void visit(TimeKeyExpression timeKeyExpression) {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -575,5 +575,10 @@ public void visit(RowConstructor rowConstructor) {
public void visit(OracleHint hint) {
buffer.append(hint.toString());
}


@Override
public void visit(TimeKeyExpression timeKeyExpression) {
buffer.append(timeKeyExpression.toString());
}

}
6 changes: 6 additions & 0 deletions src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,7 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */
| <K_HIGH_PRIORITY : "HIGH_PRIORITY">
| <K_IGNORE : "IGNORE">
| <K_SEMI : "SEMI">
| <K_TIME_KEY_EXPR : ( "CURRENT_TIMESTAMP" | "CURRENT_TIME" | "CURRENT_DATE" ) ( "()" )?>
}

TOKEN : /* Operators */
Expand Down Expand Up @@ -2046,6 +2047,9 @@ Expression PrimaryExpression():

| LOOKAHEAD(2) [sign="+" | sign="-"] retval=CastExpression()

// support timestamp expressions
| token=<K_TIME_KEY_EXPR> { retval = new TimeKeyExpression(token.image); }

| LOOKAHEAD(["+" | "-"] Column()) [sign="+" | sign="-"] retval=Column()

| LOOKAHEAD(["+" | "-"] "(" BitwiseAndOr() ")") [sign="+" | sign="-"] "(" retval=BitwiseAndOr() ")" {retval = new Parenthesis(retval); }
Expand Down Expand Up @@ -2790,6 +2794,8 @@ String CreateParameter():
tk=<K_DELETE> { retval = tk.image; }
|
tk=<K_UPDATE> { retval = tk.image; }
|
tk=<K_TIME_KEY_EXPR> { retval = new TimeKeyExpression(tk.image).toString(); }
|
"=" { retval = "="; }
|
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import net.sf.jsqlparser.expression.operators.relational.InExpression;
import net.sf.jsqlparser.expression.operators.relational.ItemsList;
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
import net.sf.jsqlparser.schema.Column;
import net.sf.jsqlparser.statement.select.PlainSelect;
import net.sf.jsqlparser.statement.select.Select;
import org.junit.After;
Expand Down Expand Up @@ -130,5 +131,42 @@ public void visit(OracleHint hint) {
assertEquals(singleLine, holder[0].isSingleLine());
assertEquals(hint, holder[0].getValue());
}


@Test
public void testCurrentTimestampExpression() throws JSQLParserException{
final List<String> columnList = new ArrayList<String>();
Select select = (Select) CCJSqlParserUtil.parse( "select * from foo where bar < CURRENT_TIMESTAMP" );
PlainSelect plainSelect = (PlainSelect) select.getSelectBody();
Expression where = plainSelect.getWhere();
where.accept(new ExpressionVisitorAdapter() {

@Override
public void visit(Column column) {
super.visit(column);
columnList.add(column.getColumnName());
}
});

assertEquals(1, columnList.size());
assertEquals("bar", columnList.get(0));
}

@Test
public void testCurrentDateExpression() throws JSQLParserException{
final List<String> columnList = new ArrayList<String>();
Select select = (Select) CCJSqlParserUtil.parse( "select * from foo where bar < CURRENT_DATE" );
PlainSelect plainSelect = (PlainSelect) select.getSelectBody();
Expression where = plainSelect.getWhere();
where.accept(new ExpressionVisitorAdapter() {

@Override
public void visit(Column column) {
super.visit(column);
columnList.add(column.getColumnName());
}
});

assertEquals(1, columnList.size());
assertEquals("bar", columnList.get(0));
}
}