From ed8266083f875704061200304dcf5e867a8c9a4b Mon Sep 17 00:00:00 2001 From: ChrissW-R1 Date: Mon, 30 May 2016 15:57:15 +0200 Subject: [PATCH 01/21] -- solved some charset issues in test cases --- .../java/net/sf/jsqlparser/test/select/SelectTest.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/test/java/net/sf/jsqlparser/test/select/SelectTest.java b/src/test/java/net/sf/jsqlparser/test/select/SelectTest.java index d0e744b6e..554ff0187 100644 --- a/src/test/java/net/sf/jsqlparser/test/select/SelectTest.java +++ b/src/test/java/net/sf/jsqlparser/test/select/SelectTest.java @@ -1499,21 +1499,21 @@ public void testProblemFunction3() throws JSQLParserException { } public void testAdditionalLettersGerman() throws JSQLParserException { - String stmt = "SELECT colä, colö, colü FROM testtableäöü"; + String stmt = "SELECT col\u00E4, col\u00F6, col\u00FC FROM testtable\u00E4\u00F6\u00FC"; assertSqlCanBeParsedAndDeparsed(stmt); - stmt = "SELECT colA, colÖ, colÜ FROM testtableÄÖÜ"; + stmt = "SELECT col\u00C4, col\u00D6, col\u00DC FROM testtable\u00C4\u00D6\u00DC"; assertSqlCanBeParsedAndDeparsed(stmt); - stmt = "SELECT Äcol FROM testtableÄÖÜ"; + stmt = "SELECT \u00C4col FROM testtable\u00C4\u00D6\u00DC"; assertSqlCanBeParsedAndDeparsed(stmt); - stmt = "SELECT ßcolß FROM testtableß"; + stmt = "SELECT \u00DFcol\u00DF FROM testtable\u00DF"; assertSqlCanBeParsedAndDeparsed(stmt); } public void testAdditionalLettersSpanish() throws JSQLParserException { - String stmt = "SELECT * FROM años"; + String stmt = "SELECT * FROM a\u00F1os"; assertSqlCanBeParsedAndDeparsed(stmt); } From 2641fa6c4bbf4d9389edb8ad4e85e7d8c2141310 Mon Sep 17 00:00:00 2001 From: ChrissW-R1 Date: Wed, 1 Jun 2016 09:00:24 +0200 Subject: [PATCH 02/21] * merging changes from commit 8e9493098c74e626359923ff1ec6aef2facdd354 --- .../expression/ExpressionVisitor.java | 3 + .../expression/ExpressionVisitorAdapter.java | 5 ++ .../PostgreSQLFromForExpression.java | 76 +++++++++++++++++++ .../sf/jsqlparser/util/TablesNamesFinder.java | 7 ++ .../util/deparser/ExpressionDeParser.java | 15 ++++ .../net/sf/jsqlparser/parser/JSqlParserCC.jjt | 30 +++++++- 6 files changed, 135 insertions(+), 1 deletion(-) create mode 100644 src/main/java/net/sf/jsqlparser/expression/operators/relational/PostgreSQLFromForExpression.java diff --git a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java index 8d7d88249..070fe5bcb 100644 --- a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java +++ b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java @@ -44,6 +44,7 @@ import net.sf.jsqlparser.expression.operators.relational.MinorThan; import net.sf.jsqlparser.expression.operators.relational.MinorThanEquals; import net.sf.jsqlparser.expression.operators.relational.NotEqualsTo; +import net.sf.jsqlparser.expression.operators.relational.PostgreSQLFromForExpression; import net.sf.jsqlparser.expression.operators.relational.RegExpMatchOperator; import net.sf.jsqlparser.expression.operators.relational.RegExpMySQLOperator; import net.sf.jsqlparser.schema.Column; @@ -165,4 +166,6 @@ public interface ExpressionVisitor { void visit(OracleHint hint); + void visit(PostgreSQLFromForExpression postgreSQLFromForExpression); + } diff --git a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java index d75938056..03967802a 100644 --- a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java +++ b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java @@ -455,5 +455,10 @@ public void visit(HexValue hexValue) { public void visit(OracleHint hint) { } + + @Override + public void visit(PostgreSQLFromForExpression postgreSQLFromForExpression) { + + } } diff --git a/src/main/java/net/sf/jsqlparser/expression/operators/relational/PostgreSQLFromForExpression.java b/src/main/java/net/sf/jsqlparser/expression/operators/relational/PostgreSQLFromForExpression.java new file mode 100644 index 000000000..aa0fc2fe7 --- /dev/null +++ b/src/main/java/net/sf/jsqlparser/expression/operators/relational/PostgreSQLFromForExpression.java @@ -0,0 +1,76 @@ +/* + * #%L + * JSQLParser library + * %% + * Copyright (C) 2004 - 2015 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 + * . + * #L% + */ +package net.sf.jsqlparser.expression.operators.relational; + +import net.sf.jsqlparser.expression.Expression; +import net.sf.jsqlparser.expression.ExpressionVisitor; + +public class PostgreSQLFromForExpression implements Expression { + + private Expression sourceExpression; + private Expression fromExpression; + private Expression forExpression; + + public Expression getSourceExpression() { + return sourceExpression; + } + + public void setSourceExpression(Expression sourceExpression) { + this.sourceExpression = sourceExpression; + } + + public Expression getFromExpression() { + return fromExpression; + } + + public void setFromExpression(Expression fromExpression) { + this.fromExpression = fromExpression; + } + + public boolean hasFromExpression() { + return fromExpression != null; + } + + public Expression getForExpression() { + return forExpression; + } + + public void setForExpression(Expression forExpression) { + this.forExpression = forExpression; + } + + public boolean hasForExpression() { + return forExpression != null; + } + + @Override + public void accept(ExpressionVisitor expressionVisitor) { + expressionVisitor.visit(this); + } + + @Override + public String toString() { + return sourceExpression + (fromExpression != null ? " FROM " + fromExpression : "") + + (forExpression != null ? " FOR " + forExpression : ""); + } + +} diff --git a/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java b/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java index b3770a949..c993bf17d 100644 --- a/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java +++ b/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java @@ -651,5 +651,12 @@ public void visit(TableFunction valuesList) { public void visit(AlterView alterView) { throw new UnsupportedOperationException(NOT_SUPPORTED_YET); } + + @Override + public void visit(PostgreSQLFromForExpression postgreSQLFromForExpression) { + postgreSQLFromForExpression.getSourceExpression().accept(this); + postgreSQLFromForExpression.getFromExpression().accept(this); + postgreSQLFromForExpression.getForExpression().accept(this); + } } diff --git a/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java b/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java index 6b605740b..8f5b4226e 100644 --- a/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java +++ b/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java @@ -576,4 +576,19 @@ public void visit(OracleHint hint) { buffer.append(hint.toString()); } + @Override + public void visit(PostgreSQLFromForExpression postgreSQLFromForExpression) { + postgreSQLFromForExpression.getSourceExpression().accept(this); + + if (postgreSQLFromForExpression.hasFromExpression()) { + buffer.append(" FROM "); + postgreSQLFromForExpression.getFromExpression().accept(this); + } + + if (postgreSQLFromForExpression.hasForExpression()) { + buffer.append(" FOR "); + postgreSQLFromForExpression.getForExpression().accept(this); + } + } + } diff --git a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt index 34ff9183a..34dbf2208 100644 --- a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt +++ b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt @@ -1717,6 +1717,26 @@ Expression Between() : } } +Expression PostgreSQLFromForExpression() : +{ + PostgreSQLFromForExpression result = new PostgreSQLFromForExpression(); + Expression sourceExpression = null; + Expression fromExpression = null; + Expression forExpression = null; +} +{ + sourceExpression=SimpleExpression() + //TODO: [ fromExpression=SimpleExpression() ] [ forExpression=SimpleExpression() ] + fromExpression=SimpleExpression() forExpression=SimpleExpression() + + { + result.setSourceExpression(sourceExpression); + result.setFromExpression(fromExpression); + result.setForExpression(forExpression); + return result; + } +} + Expression LikeExpression() : { LikeExpression result = new LikeExpression(); @@ -2396,6 +2416,7 @@ Function Function(): Function retval = new Function(); String funcName = null; String tmp = null; + Expression fromForExpression = null; ExpressionList expressionList = null; KeepExpression keep = null; } @@ -2405,7 +2426,7 @@ Function Function(): funcName=RelObjectNameExt() [ "." tmp=RelObjectNameExt() { funcName+= "." + tmp; } ["." tmp=RelObjectNameExt() { funcName+= "." + tmp; }]] - "(" [ [ { retval.setDistinct(true); } | { retval.setAllColumns(true); }] (expressionList=SimpleExpressionList() | "*" { retval.setAllColumns(true); }) ] ")" + "(" [ [ { retval.setDistinct(true); } | { retval.setAllColumns(true); }] ( LOOKAHEAD(PostgreSQLFromForExpression()) fromForExpression=PostgreSQLFromForExpression() | LOOKAHEAD(SimpleExpressionList())expressionList=SimpleExpressionList() | "*" { retval.setAllColumns(true); }) ] ")" [ "." tmp=RelObjectName() { retval.setAttribute(tmp); }] @@ -2413,6 +2434,13 @@ Function Function(): ["}"] { + if (fromForExpression != null) + { + List expressions = new ArrayList(); + expressions.add(fromForExpression); + expressionList = new ExpressionList(); + expressionList.setExpressions(expressions); + } retval.setParameters(expressionList); retval.setName(funcName); retval.setKeep(keep); From 26752fb0f705436d5af4d83dcf2e2e3e1f38eb73 Mon Sep 17 00:00:00 2001 From: ChrissW-R1 Date: Wed, 1 Jun 2016 11:19:09 +0200 Subject: [PATCH 03/21] -- registered SUBSTRING(... FROM ... FOR ...) as new function --- .../PostgreSQLFromForExpression.java | 7 ++-- .../util/deparser/ExpressionDeParser.java | 4 +++ .../net/sf/jsqlparser/parser/JSqlParserCC.jjt | 36 +++++++++---------- 3 files changed, 25 insertions(+), 22 deletions(-) diff --git a/src/main/java/net/sf/jsqlparser/expression/operators/relational/PostgreSQLFromForExpression.java b/src/main/java/net/sf/jsqlparser/expression/operators/relational/PostgreSQLFromForExpression.java index aa0fc2fe7..27dac59fa 100644 --- a/src/main/java/net/sf/jsqlparser/expression/operators/relational/PostgreSQLFromForExpression.java +++ b/src/main/java/net/sf/jsqlparser/expression/operators/relational/PostgreSQLFromForExpression.java @@ -69,8 +69,11 @@ public void accept(ExpressionVisitor expressionVisitor) { @Override public String toString() { - return sourceExpression + (fromExpression != null ? " FROM " + fromExpression : "") - + (forExpression != null ? " FOR " + forExpression : ""); + return + "SUBSTRING(" + sourceExpression + + (fromExpression != null ? " FROM " + fromExpression : "") + + (forExpression != null ? " FOR " + forExpression : "") + + ")"; } } diff --git a/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java b/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java index 8f5b4226e..aec0abd4e 100644 --- a/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java +++ b/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java @@ -578,6 +578,8 @@ public void visit(OracleHint hint) { @Override public void visit(PostgreSQLFromForExpression postgreSQLFromForExpression) { + buffer.append("SUBSTRING("); + postgreSQLFromForExpression.getSourceExpression().accept(this); if (postgreSQLFromForExpression.hasFromExpression()) { @@ -589,6 +591,8 @@ public void visit(PostgreSQLFromForExpression postgreSQLFromForExpression) { buffer.append(" FOR "); postgreSQLFromForExpression.getForExpression().accept(this); } + + buffer.append(")"); } } diff --git a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt index 34dbf2208..b04dbc6f2 100644 --- a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt +++ b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt @@ -233,6 +233,7 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */ | | | +| } TOKEN : /* Operators */ @@ -678,7 +679,7 @@ String RelObjectName() : | tk= | tk= | tk= | tk= | tk= | tk= | tk= | tk= | tk= | tk= | tk= | tk= | tk= | tk= | tk= - | tk= + | tk= | tk= ) { return tk.image; } @@ -1720,19 +1721,20 @@ Expression Between() : Expression PostgreSQLFromForExpression() : { PostgreSQLFromForExpression result = new PostgreSQLFromForExpression(); - Expression sourceExpression = null; - Expression fromExpression = null; - Expression forExpression = null; + Expression sourceExpr = null; + Expression fromExpr = null; + Expression forExpr = null; } { - sourceExpression=SimpleExpression() - //TODO: [ fromExpression=SimpleExpression() ] [ forExpression=SimpleExpression() ] - fromExpression=SimpleExpression() forExpression=SimpleExpression() - + + "(" + sourceExpr=SimpleExpression() { result.setSourceExpression(sourceExpr); } + + fromExpr=SimpleExpression() { result.setFromExpression(fromExpr); } + + forExpr=SimpleExpression() { result.setForExpression(forExpr); } + ")" { - result.setSourceExpression(sourceExpression); - result.setFromExpression(fromExpression); - result.setForExpression(forExpression); return result; } } @@ -2052,6 +2054,8 @@ Expression PrimaryExpression(): | LOOKAHEAD(ExtractExpression()) retval=ExtractExpression() + | LOOKAHEAD(PostgreSQLFromForExpression()) retval=PostgreSQLFromForExpression() + | retval=MySQLGroupConcat() | LOOKAHEAD([sign="+" | sign="-"] JsonExpression()) [sign="+" | sign="-"] retval=JsonExpression() @@ -2416,7 +2420,6 @@ Function Function(): Function retval = new Function(); String funcName = null; String tmp = null; - Expression fromForExpression = null; ExpressionList expressionList = null; KeepExpression keep = null; } @@ -2426,7 +2429,7 @@ Function Function(): funcName=RelObjectNameExt() [ "." tmp=RelObjectNameExt() { funcName+= "." + tmp; } ["." tmp=RelObjectNameExt() { funcName+= "." + tmp; }]] - "(" [ [ { retval.setDistinct(true); } | { retval.setAllColumns(true); }] ( LOOKAHEAD(PostgreSQLFromForExpression()) fromForExpression=PostgreSQLFromForExpression() | LOOKAHEAD(SimpleExpressionList())expressionList=SimpleExpressionList() | "*" { retval.setAllColumns(true); }) ] ")" + "(" [ [ { retval.setDistinct(true); } | { retval.setAllColumns(true); }] (expressionList=SimpleExpressionList() | "*" { retval.setAllColumns(true); }) ] ")" [ "." tmp=RelObjectName() { retval.setAttribute(tmp); }] @@ -2434,13 +2437,6 @@ Function Function(): ["}"] { - if (fromForExpression != null) - { - List expressions = new ArrayList(); - expressions.add(fromForExpression); - expressionList = new ExpressionList(); - expressionList.setExpressions(expressions); - } retval.setParameters(expressionList); retval.setName(funcName); retval.setKeep(keep); From 8d7d8be7fb2c09b1e9c83a92253fc6ddb5420618 Mon Sep 17 00:00:00 2001 From: ChrissW-R1 Date: Wed, 1 Jun 2016 11:19:47 +0200 Subject: [PATCH 04/21] -- added unit tests of new SUBSTRING function --- .../PostgreSQLFromForExpressionTest.java | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/test/java/net/sf/jsqlparser/test/select/PostgreSQLFromForExpressionTest.java diff --git a/src/test/java/net/sf/jsqlparser/test/select/PostgreSQLFromForExpressionTest.java b/src/test/java/net/sf/jsqlparser/test/select/PostgreSQLFromForExpressionTest.java new file mode 100644 index 000000000..2fb90742c --- /dev/null +++ b/src/test/java/net/sf/jsqlparser/test/select/PostgreSQLFromForExpressionTest.java @@ -0,0 +1,43 @@ +package net.sf.jsqlparser.test.select; + +import junit.framework.*; +import net.sf.jsqlparser.JSQLParserException; +import net.sf.jsqlparser.parser.*; +import static net.sf.jsqlparser.test.TestUtils.*; + +public class PostgreSQLFromForExpressionTest extends TestCase { + public PostgreSQLFromForExpressionTest(String arg0) { + super(arg0); + } + + public void testInWhere() throws Exception { + final String query = "SELECT foo FROM bar WHERE SUBSTRING(foo FROM 1 FOR 10) LIKE 'A%'"; + assertSqlCanBeParsedAndDeparsed(query); + } + + public void testInOrderBy() throws Exception { + final String query = "SELECT foo FROM bar ORDER BY SUBSTRING(foo FROM 12 FOR 2)"; + assertSqlCanBeParsedAndDeparsed(query); + } + + public void testWithString() throws Exception { + final String query = "SELECT SUBSTRING('free text to split' FROM 6 FOR 4) AS foo FROM bar"; + assertSqlCanBeParsedAndDeparsed(query); + } + + public void testWithToSyntax() throws Exception { + final String query = "SELECT SUBSTRING(foo FROM 6 TO 7) AS sub FROM bar"; + + try { + assertSqlCanBeParsedAndDeparsed(query); + + fail("Function SUBSTRING must reject wrong syntax with '... FROM ... TO ...'"); + } catch (JSQLParserException e) { + } + } + + public void testCommaSyntax() throws Exception { + final String query = "SELECT SUBSTRING(foo, 6, 4) AS sub FROM bar"; + assertSqlCanBeParsedAndDeparsed(query); + } +} From 8711734ad3be3aeecb99cb1e18e239c5dcc4326f Mon Sep 17 00:00:00 2001 From: ChrissW-R1 Date: Wed, 1 Jun 2016 11:24:41 +0200 Subject: [PATCH 05/21] -- renamed PostgreSQLFromForExpression to SubstringExpression --- .../expression/ExpressionVisitor.java | 4 +- .../expression/ExpressionVisitorAdapter.java | 2 +- ...pression.java => SubstringExpression.java} | 158 +++++++++--------- .../sf/jsqlparser/util/TablesNamesFinder.java | 8 +- .../util/deparser/ExpressionDeParser.java | 12 +- .../net/sf/jsqlparser/parser/JSqlParserCC.jjt | 6 +- ...Test.java => SubstringExpressionTest.java} | 4 +- 7 files changed, 97 insertions(+), 97 deletions(-) rename src/main/java/net/sf/jsqlparser/expression/operators/relational/{PostgreSQLFromForExpression.java => SubstringExpression.java} (93%) rename src/test/java/net/sf/jsqlparser/test/select/{PostgreSQLFromForExpressionTest.java => SubstringExpressionTest.java} (91%) diff --git a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java index 070fe5bcb..5eee35420 100644 --- a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java +++ b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java @@ -44,7 +44,7 @@ import net.sf.jsqlparser.expression.operators.relational.MinorThan; import net.sf.jsqlparser.expression.operators.relational.MinorThanEquals; import net.sf.jsqlparser.expression.operators.relational.NotEqualsTo; -import net.sf.jsqlparser.expression.operators.relational.PostgreSQLFromForExpression; +import net.sf.jsqlparser.expression.operators.relational.SubstringExpression; import net.sf.jsqlparser.expression.operators.relational.RegExpMatchOperator; import net.sf.jsqlparser.expression.operators.relational.RegExpMySQLOperator; import net.sf.jsqlparser.schema.Column; @@ -166,6 +166,6 @@ public interface ExpressionVisitor { void visit(OracleHint hint); - void visit(PostgreSQLFromForExpression postgreSQLFromForExpression); + void visit(SubstringExpression substringExpression); } diff --git a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java index 03967802a..36a7ff301 100644 --- a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java +++ b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java @@ -457,7 +457,7 @@ public void visit(OracleHint hint) { } @Override - public void visit(PostgreSQLFromForExpression postgreSQLFromForExpression) { + public void visit(SubstringExpression substringExpression) { } diff --git a/src/main/java/net/sf/jsqlparser/expression/operators/relational/PostgreSQLFromForExpression.java b/src/main/java/net/sf/jsqlparser/expression/operators/relational/SubstringExpression.java similarity index 93% rename from src/main/java/net/sf/jsqlparser/expression/operators/relational/PostgreSQLFromForExpression.java rename to src/main/java/net/sf/jsqlparser/expression/operators/relational/SubstringExpression.java index 27dac59fa..1eb8c8fbd 100644 --- a/src/main/java/net/sf/jsqlparser/expression/operators/relational/PostgreSQLFromForExpression.java +++ b/src/main/java/net/sf/jsqlparser/expression/operators/relational/SubstringExpression.java @@ -1,79 +1,79 @@ -/* - * #%L - * JSQLParser library - * %% - * Copyright (C) 2004 - 2015 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 - * . - * #L% - */ -package net.sf.jsqlparser.expression.operators.relational; - -import net.sf.jsqlparser.expression.Expression; -import net.sf.jsqlparser.expression.ExpressionVisitor; - -public class PostgreSQLFromForExpression implements Expression { - - private Expression sourceExpression; - private Expression fromExpression; - private Expression forExpression; - - public Expression getSourceExpression() { - return sourceExpression; - } - - public void setSourceExpression(Expression sourceExpression) { - this.sourceExpression = sourceExpression; - } - - public Expression getFromExpression() { - return fromExpression; - } - - public void setFromExpression(Expression fromExpression) { - this.fromExpression = fromExpression; - } - - public boolean hasFromExpression() { - return fromExpression != null; - } - - public Expression getForExpression() { - return forExpression; - } - - public void setForExpression(Expression forExpression) { - this.forExpression = forExpression; - } - - public boolean hasForExpression() { - return forExpression != null; - } - - @Override - public void accept(ExpressionVisitor expressionVisitor) { - expressionVisitor.visit(this); - } - - @Override - public String toString() { - return - "SUBSTRING(" + sourceExpression - + (fromExpression != null ? " FROM " + fromExpression : "") - + (forExpression != null ? " FOR " + forExpression : "") - + ")"; - } - -} +/* + * #%L + * JSQLParser library + * %% + * Copyright (C) 2004 - 2015 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 + * . + * #L% + */ +package net.sf.jsqlparser.expression.operators.relational; + +import net.sf.jsqlparser.expression.Expression; +import net.sf.jsqlparser.expression.ExpressionVisitor; + +public class SubstringExpression implements Expression { + + private Expression sourceExpression; + private Expression fromExpression; + private Expression forExpression; + + public Expression getSourceExpression() { + return sourceExpression; + } + + public void setSourceExpression(Expression sourceExpression) { + this.sourceExpression = sourceExpression; + } + + public Expression getFromExpression() { + return fromExpression; + } + + public void setFromExpression(Expression fromExpression) { + this.fromExpression = fromExpression; + } + + public boolean hasFromExpression() { + return fromExpression != null; + } + + public Expression getForExpression() { + return forExpression; + } + + public void setForExpression(Expression forExpression) { + this.forExpression = forExpression; + } + + public boolean hasForExpression() { + return forExpression != null; + } + + @Override + public void accept(ExpressionVisitor expressionVisitor) { + expressionVisitor.visit(this); + } + + @Override + public String toString() { + return + "SUBSTRING(" + sourceExpression + + (fromExpression != null ? " FROM " + fromExpression : "") + + (forExpression != null ? " FOR " + forExpression : "") + + ")"; + } + +} diff --git a/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java b/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java index c993bf17d..8c83eb3f8 100644 --- a/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java +++ b/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java @@ -653,10 +653,10 @@ public void visit(AlterView alterView) { } @Override - public void visit(PostgreSQLFromForExpression postgreSQLFromForExpression) { - postgreSQLFromForExpression.getSourceExpression().accept(this); - postgreSQLFromForExpression.getFromExpression().accept(this); - postgreSQLFromForExpression.getForExpression().accept(this); + public void visit(SubstringExpression substringExpression) { + substringExpression.getSourceExpression().accept(this); + substringExpression.getFromExpression().accept(this); + substringExpression.getForExpression().accept(this); } } diff --git a/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java b/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java index aec0abd4e..88245ad7b 100644 --- a/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java +++ b/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java @@ -577,19 +577,19 @@ public void visit(OracleHint hint) { } @Override - public void visit(PostgreSQLFromForExpression postgreSQLFromForExpression) { + public void visit(SubstringExpression substringExpression) { buffer.append("SUBSTRING("); - postgreSQLFromForExpression.getSourceExpression().accept(this); + substringExpression.getSourceExpression().accept(this); - if (postgreSQLFromForExpression.hasFromExpression()) { + if (substringExpression.hasFromExpression()) { buffer.append(" FROM "); - postgreSQLFromForExpression.getFromExpression().accept(this); + substringExpression.getFromExpression().accept(this); } - if (postgreSQLFromForExpression.hasForExpression()) { + if (substringExpression.hasForExpression()) { buffer.append(" FOR "); - postgreSQLFromForExpression.getForExpression().accept(this); + substringExpression.getForExpression().accept(this); } buffer.append(")"); diff --git a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt index b04dbc6f2..53d47b2fd 100644 --- a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt +++ b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt @@ -1718,9 +1718,9 @@ Expression Between() : } } -Expression PostgreSQLFromForExpression() : +Expression SubstringExpression() : { - PostgreSQLFromForExpression result = new PostgreSQLFromForExpression(); + SubstringExpression result = new SubstringExpression(); Expression sourceExpr = null; Expression fromExpr = null; Expression forExpr = null; @@ -2054,7 +2054,7 @@ Expression PrimaryExpression(): | LOOKAHEAD(ExtractExpression()) retval=ExtractExpression() - | LOOKAHEAD(PostgreSQLFromForExpression()) retval=PostgreSQLFromForExpression() + | LOOKAHEAD(SubstringExpression()) retval=SubstringExpression() | retval=MySQLGroupConcat() diff --git a/src/test/java/net/sf/jsqlparser/test/select/PostgreSQLFromForExpressionTest.java b/src/test/java/net/sf/jsqlparser/test/select/SubstringExpressionTest.java similarity index 91% rename from src/test/java/net/sf/jsqlparser/test/select/PostgreSQLFromForExpressionTest.java rename to src/test/java/net/sf/jsqlparser/test/select/SubstringExpressionTest.java index 2fb90742c..e9e0c760a 100644 --- a/src/test/java/net/sf/jsqlparser/test/select/PostgreSQLFromForExpressionTest.java +++ b/src/test/java/net/sf/jsqlparser/test/select/SubstringExpressionTest.java @@ -5,8 +5,8 @@ import net.sf.jsqlparser.parser.*; import static net.sf.jsqlparser.test.TestUtils.*; -public class PostgreSQLFromForExpressionTest extends TestCase { - public PostgreSQLFromForExpressionTest(String arg0) { +public class SubstringExpressionTest extends TestCase { + public SubstringExpressionTest(String arg0) { super(arg0); } From 86ac0e493a69792db72a9bdbcc9a1fff5604841d Mon Sep 17 00:00:00 2001 From: ReneU Date: Wed, 1 Jun 2016 12:31:12 +0200 Subject: [PATCH 06/21] add visitor support for timestamp expressions --- .../expression/CurrentDateExpression.java | 49 +++++++++++++++++++ .../CurrentTimestampExpression.java | 49 +++++++++++++++++++ .../expression/ExpressionVisitor.java | 6 ++- .../expression/ExpressionVisitorAdapter.java | 12 ++++- .../sf/jsqlparser/util/TablesNamesFinder.java | 8 +++ .../util/deparser/ExpressionDeParser.java | 11 ++++- .../net/sf/jsqlparser/parser/JSqlParserCC.jjt | 10 ++++ .../ExpressionVisitorAdapterTest.java | 40 ++++++++++++++- 8 files changed, 181 insertions(+), 4 deletions(-) create mode 100644 src/main/java/net/sf/jsqlparser/expression/CurrentDateExpression.java create mode 100644 src/main/java/net/sf/jsqlparser/expression/CurrentTimestampExpression.java diff --git a/src/main/java/net/sf/jsqlparser/expression/CurrentDateExpression.java b/src/main/java/net/sf/jsqlparser/expression/CurrentDateExpression.java new file mode 100644 index 000000000..c9febf27b --- /dev/null +++ b/src/main/java/net/sf/jsqlparser/expression/CurrentDateExpression.java @@ -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 + * . + * #L% + */ +package net.sf.jsqlparser.expression; + +public class CurrentDateExpression implements Expression { + + private String stringValue; + + public CurrentDateExpression(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(); + } +} diff --git a/src/main/java/net/sf/jsqlparser/expression/CurrentTimestampExpression.java b/src/main/java/net/sf/jsqlparser/expression/CurrentTimestampExpression.java new file mode 100644 index 000000000..21f5cffca --- /dev/null +++ b/src/main/java/net/sf/jsqlparser/expression/CurrentTimestampExpression.java @@ -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 + * . + * #L% + */ +package net.sf.jsqlparser.expression; + +public class CurrentTimestampExpression implements Expression { + + private String stringValue; + + public CurrentTimestampExpression(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(); + } +} diff --git a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java index 8d7d88249..faadefad9 100644 --- a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java +++ b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java @@ -164,5 +164,9 @@ public interface ExpressionVisitor { void visit(RowConstructor rowConstructor); void visit(OracleHint hint); - + + void visit(CurrentTimestampExpression currentTimestampExpression); + + void visit(CurrentDateExpression currentDateExpressionExpression); + } diff --git a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java index d75938056..b0fff27d4 100644 --- a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java +++ b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java @@ -455,5 +455,15 @@ public void visit(HexValue hexValue) { public void visit(OracleHint hint) { } - + + @Override + public void visit(CurrentTimestampExpression currentTimestampExpression) { + + } + + @Override + public void visit(CurrentDateExpression currentDateExpression) { + + } + } diff --git a/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java b/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java index b3770a949..93b1c2a41 100644 --- a/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java +++ b/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java @@ -643,6 +643,14 @@ public void visit(Merge merge) { public void visit(OracleHint hint) { } + @Override + public void visit(CurrentTimestampExpression currentTimestampExpression) { + } + + @Override + public void visit(CurrentDateExpression currentDateExpression) { + } + @Override public void visit(TableFunction valuesList) { } diff --git a/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java b/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java index 6b605740b..ab74b884b 100644 --- a/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java +++ b/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java @@ -575,5 +575,14 @@ public void visit(RowConstructor rowConstructor) { public void visit(OracleHint hint) { buffer.append(hint.toString()); } - + + @Override + public void visit(CurrentTimestampExpression currentTimestampExpression) { + buffer.append(currentTimestampExpression.toString()); + } +@Override + public void visit(CurrentDateExpression currentDateExpression) { + buffer.append(currentDateExpression.toString()); + } + } diff --git a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt index 34ff9183a..7aef04d9b 100644 --- a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt +++ b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt @@ -233,6 +233,8 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */ | | | +| +| } TOKEN : /* Operators */ @@ -2046,6 +2048,10 @@ Expression PrimaryExpression(): | LOOKAHEAD(2) [sign="+" | sign="-"] retval=CastExpression() + // support timestamp expressions + | token= { retval = new CurrentTimestampExpression(token.image); } + | token= { retval = new CurrentDateExpression(token.image); } + | LOOKAHEAD(["+" | "-"] Column()) [sign="+" | sign="-"] retval=Column() | LOOKAHEAD(["+" | "-"] "(" BitwiseAndOr() ")") [sign="+" | sign="-"] "(" retval=BitwiseAndOr() ")" {retval = new Parenthesis(retval); } @@ -2790,6 +2796,10 @@ String CreateParameter(): tk= { retval = tk.image; } | tk= { retval = tk.image; } + | + tk= { retval = new CurrentTimestampExpression(tk.image).toString(); } + | + tk= { retval = new CurrentDateExpression(tk.image).toString(); } | "=" { retval = "="; } | diff --git a/src/test/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapterTest.java b/src/test/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapterTest.java index 8713350ad..e522536d0 100644 --- a/src/test/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapterTest.java +++ b/src/test/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapterTest.java @@ -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; @@ -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 columnList = new ArrayList(); + 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 columnList = new ArrayList(); + 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)); + } } From 2519b9cf4f09de91bf2bf5fdc6c2f1567047d17b Mon Sep 17 00:00:00 2001 From: ChrissW-R1 Date: Wed, 1 Jun 2016 13:12:12 +0200 Subject: [PATCH 07/21] -- added unit tests of new class SubstringExpression --- pom.xml | 6 ++ .../relational/SubstringExpressionTest.java | 56 +++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 src/test/java/net/sf/jsqlparser/expression/operators/relational/SubstringExpressionTest.java diff --git a/pom.xml b/pom.xml index b1fbd9f6c..e0b6e63e1 100644 --- a/pom.xml +++ b/pom.xml @@ -37,6 +37,12 @@ 4.12 test + + org.mockito + mockito-core + 1.10.19 + test + diff --git a/src/test/java/net/sf/jsqlparser/expression/operators/relational/SubstringExpressionTest.java b/src/test/java/net/sf/jsqlparser/expression/operators/relational/SubstringExpressionTest.java new file mode 100644 index 000000000..c9d81be4c --- /dev/null +++ b/src/test/java/net/sf/jsqlparser/expression/operators/relational/SubstringExpressionTest.java @@ -0,0 +1,56 @@ +package net.sf.jsqlparser.expression.operators.relational; + +import net.sf.jsqlparser.expression.Expression; +import org.junit.*; +import org.mockito.Mockito; + +import java.util.regex.Pattern; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; + +/** + * unit tests of {@link SubstringExpression} + * + * @author ChrissW-R1 + */ +public class SubstringExpressionTest { + private static final String sourceVal = "foo"; + private static final int fromVal = 1; + private static final int forVal = 10; + + private static SubstringExpression subStrExpr; + + @Before + public void setUp() { + subStrExpr = new SubstringExpression(); + + Expression sourceExpr = Mockito.mock(Expression.class); + Mockito.when(sourceExpr.toString()).thenReturn(sourceVal); + + Expression fromExpr = Mockito.mock(Expression.class); + Mockito.when(fromExpr.toString()).thenReturn(Integer.toString(fromVal)); + + Expression forExpr = Mockito.mock(Expression.class); + Mockito.when(forExpr.toString()).thenReturn(Integer.toString(forVal)); + } + + /** + * Test of {@link SubstringExpression#toString()} + */ + @Test + public void testToString() { + String str = subStrExpr.toString(); + + String regEx = "SUBSTRING\\([ \\r\\n\\t]*" + + sourceVal + + "[ \\r\\n\\t]+FROM[ \\r\\n\\t]+" + + fromVal + + "[ \\r\\n\\t]+FOR+[ \\r\\n\\t]+" + + forVal + + "[ \\r\\n\\t]*\\)/i"; + + assertTrue(str.matches(regEx)); + } +} From 9025b6fdc3c734f69cf8fa7d09056564166753f7 Mon Sep 17 00:00:00 2001 From: ChrissW-R1 Date: Wed, 1 Jun 2016 13:42:29 +0200 Subject: [PATCH 08/21] -- repair unit test --- .../operators/relational/SubstringExpressionTest.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/test/java/net/sf/jsqlparser/expression/operators/relational/SubstringExpressionTest.java b/src/test/java/net/sf/jsqlparser/expression/operators/relational/SubstringExpressionTest.java index c9d81be4c..5c3254e8e 100644 --- a/src/test/java/net/sf/jsqlparser/expression/operators/relational/SubstringExpressionTest.java +++ b/src/test/java/net/sf/jsqlparser/expression/operators/relational/SubstringExpressionTest.java @@ -28,12 +28,15 @@ public void setUp() { Expression sourceExpr = Mockito.mock(Expression.class); Mockito.when(sourceExpr.toString()).thenReturn(sourceVal); + subStrExpr.setSourceExpression(sourceExpr); Expression fromExpr = Mockito.mock(Expression.class); Mockito.when(fromExpr.toString()).thenReturn(Integer.toString(fromVal)); + subStrExpr.setFromExpression(fromExpr); Expression forExpr = Mockito.mock(Expression.class); Mockito.when(forExpr.toString()).thenReturn(Integer.toString(forVal)); + subStrExpr.setForExpression(forExpr); } /** @@ -43,13 +46,13 @@ public void setUp() { public void testToString() { String str = subStrExpr.toString(); - String regEx = "SUBSTRING\\([ \\r\\n\\t]*" + String regEx = "(?i)SUBSTRING\\([ \\r\\n\\t]*" + sourceVal + "[ \\r\\n\\t]+FROM[ \\r\\n\\t]+" + fromVal + "[ \\r\\n\\t]+FOR+[ \\r\\n\\t]+" + forVal - + "[ \\r\\n\\t]*\\)/i"; + + "[ \\r\\n\\t]*\\)"; assertTrue(str.matches(regEx)); } From 65e2bf2af1c688937035265bf75bba2d24f33ec6 Mon Sep 17 00:00:00 2001 From: ChrissW-R1 Date: Wed, 1 Jun 2016 14:26:07 +0200 Subject: [PATCH 09/21] -- make parameters FROM and FOR of function SUBSTRING optional --- .../jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt index 53d47b2fd..8e9baa833 100644 --- a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt +++ b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt @@ -1728,13 +1728,15 @@ Expression SubstringExpression() : { "(" - sourceExpr=SimpleExpression() { result.setSourceExpression(sourceExpr); } - - fromExpr=SimpleExpression() { result.setFromExpression(fromExpr); } - - forExpr=SimpleExpression() { result.setForExpression(forExpr); } + sourceExpr=SimpleExpression() + [ fromExpr=SimpleExpression()] + [ forExpr=SimpleExpression()] ")" { + result.setSourceExpression(sourceExpr); + result.setFromExpression(fromExpr); + result.setForExpression(forExpr); + return result; } } From a9fcd459cd3ddd08a37b00a17d12d1987f9abc7d Mon Sep 17 00:00:00 2001 From: ChrissW-R1 Date: Wed, 1 Jun 2016 14:50:16 +0200 Subject: [PATCH 10/21] -- expand unit tests to optional parameters FROM and FOR --- .../relational/SubstringExpressionTest.java | 36 ++++++++++++++++++- ...ExpressionTest.java => SubstringTest.java} | 20 ++++++++--- 2 files changed, 50 insertions(+), 6 deletions(-) rename src/test/java/net/sf/jsqlparser/test/select/{SubstringExpressionTest.java => SubstringTest.java} (75%) diff --git a/src/test/java/net/sf/jsqlparser/expression/operators/relational/SubstringExpressionTest.java b/src/test/java/net/sf/jsqlparser/expression/operators/relational/SubstringExpressionTest.java index 5c3254e8e..96240bd3a 100644 --- a/src/test/java/net/sf/jsqlparser/expression/operators/relational/SubstringExpressionTest.java +++ b/src/test/java/net/sf/jsqlparser/expression/operators/relational/SubstringExpressionTest.java @@ -43,7 +43,7 @@ public void setUp() { * Test of {@link SubstringExpression#toString()} */ @Test - public void testToString() { + public void testToStringDefault() { String str = subStrExpr.toString(); String regEx = "(?i)SUBSTRING\\([ \\r\\n\\t]*" @@ -56,4 +56,38 @@ public void testToString() { assertTrue(str.matches(regEx)); } + + /** + * Test of {@link SubstringExpression#toString()} only with FROM parameter + */ + @Test + public void testToStringOnlyFrom() { + subStrExpr.setForExpression(null); + String str = subStrExpr.toString(); + + String regEx = "(?i)SUBSTRING\\([ \\r\\n\\t]*" + + sourceVal + + "[ \\r\\n\\t]+FROM[ \\r\\n\\t]+" + + fromVal + + "[ \\r\\n\\t]*\\)"; + + assertTrue(str.matches(regEx)); + } + + /** + * Test of {@link SubstringExpression#toString()} only with FOR parameter + */ + @Test + public void testToStringOnlyFor() { + subStrExpr.setFromExpression(null); + String str = subStrExpr.toString(); + + String regEx = "(?i)SUBSTRING\\([ \\r\\n\\t]*" + + sourceVal + + "[ \\r\\n\\t]+FOR+[ \\r\\n\\t]+" + + forVal + + "[ \\r\\n\\t]*\\)"; + + assertTrue(str.matches(regEx)); + } } diff --git a/src/test/java/net/sf/jsqlparser/test/select/SubstringExpressionTest.java b/src/test/java/net/sf/jsqlparser/test/select/SubstringTest.java similarity index 75% rename from src/test/java/net/sf/jsqlparser/test/select/SubstringExpressionTest.java rename to src/test/java/net/sf/jsqlparser/test/select/SubstringTest.java index e9e0c760a..209dbc6f8 100644 --- a/src/test/java/net/sf/jsqlparser/test/select/SubstringExpressionTest.java +++ b/src/test/java/net/sf/jsqlparser/test/select/SubstringTest.java @@ -5,8 +5,8 @@ import net.sf.jsqlparser.parser.*; import static net.sf.jsqlparser.test.TestUtils.*; -public class SubstringExpressionTest extends TestCase { - public SubstringExpressionTest(String arg0) { +public class SubstringTest extends TestCase { + public SubstringTest(String arg0) { super(arg0); } @@ -19,18 +19,28 @@ public void testInOrderBy() throws Exception { final String query = "SELECT foo FROM bar ORDER BY SUBSTRING(foo FROM 12 FOR 2)"; assertSqlCanBeParsedAndDeparsed(query); } + + public void testOnlyFrom() throws Exception { + final String query = "SELECT SUBSTRING(foo FROM 5) AS sub FROM bar"; + assertSqlCanBeParsedAndDeparsed(query); + } + + public void testOnlyFor() throws Exception { + final String query = "SELECT SUBSTRING(foo FOR 2) AS sub FROM bar"; + assertSqlCanBeParsedAndDeparsed(query); + } public void testWithString() throws Exception { final String query = "SELECT SUBSTRING('free text to split' FROM 6 FOR 4) AS foo FROM bar"; assertSqlCanBeParsedAndDeparsed(query); } - + public void testWithToSyntax() throws Exception { final String query = "SELECT SUBSTRING(foo FROM 6 TO 7) AS sub FROM bar"; - + try { assertSqlCanBeParsedAndDeparsed(query); - + fail("Function SUBSTRING must reject wrong syntax with '... FROM ... TO ...'"); } catch (JSQLParserException e) { } From 2efd88c1f61e30f01fae864db0065b60058c8e37 Mon Sep 17 00:00:00 2001 From: kse Date: Wed, 1 Jun 2016 15:10:00 +0200 Subject: [PATCH 11/21] -- renamed groupId -- parametrized distribution management URLs --- pom.xml | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/pom.xml b/pom.xml index e0b6e63e1..bf2965476 100644 --- a/pom.xml +++ b/pom.xml @@ -1,6 +1,6 @@ 4.0.0 - com.github.jsqlparser + de.conterra.sql jsqlparser 0.9.6-SNAPSHOT JSQLParser library @@ -54,19 +54,21 @@ - sonatype-nexus-staging - https://oss.sonatype.org/service/local/staging/deploy/maven2 + ct-dist-releases-file + repository for sdi.suite releases + ${release.deployment.url} - sonatype-nexus-snapshots - https://oss.sonatype.org/content/repositories/snapshots + ct-dist-snapshots-file + repository for sdi.suite snapshots + ${snapshot.deployment.url} - scm:git:https://github.com/JSQLParser/JSqlParser.git - scm:git:ssh://git@github.com:JSQLParser/JSqlParser.git - https://github.com/JSQLParser/JSqlParser.git + scm:git:https://github.com/conterra/JSqlParser.git + scm:git:ssh://git@github.com:conterra/JSqlParser.git + https://github.com/conterra/JSqlParser.git HEAD @@ -81,8 +83,8 @@ maven-compiler-plugin 3.3 - 1.6 - 1.6 + 1.7 + 1.7 true ${project.build.sourceEncoding} From 8e985b6ccd9878763b90396029c18b1bd9d1f972 Mon Sep 17 00:00:00 2001 From: ChrissW-R1 Date: Wed, 1 Jun 2016 15:57:05 +0200 Subject: [PATCH 12/21] -- added scalar function CURRENT_TIME --- .../expression/CurrentTimeExpression.java | 49 +++++++++++++++++++ .../expression/ExpressionVisitor.java | 8 +-- .../expression/ExpressionVisitorAdapter.java | 11 +++-- .../sf/jsqlparser/util/TablesNamesFinder.java | 20 +++++--- .../util/deparser/ExpressionDeParser.java | 25 ++++++---- .../net/sf/jsqlparser/parser/JSqlParserCC.jjt | 4 ++ .../ExpressionVisitorAdapterTest.java | 19 +++++++ 7 files changed, 112 insertions(+), 24 deletions(-) create mode 100644 src/main/java/net/sf/jsqlparser/expression/CurrentTimeExpression.java diff --git a/src/main/java/net/sf/jsqlparser/expression/CurrentTimeExpression.java b/src/main/java/net/sf/jsqlparser/expression/CurrentTimeExpression.java new file mode 100644 index 000000000..fa1946394 --- /dev/null +++ b/src/main/java/net/sf/jsqlparser/expression/CurrentTimeExpression.java @@ -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 + * . + * #L% + */ +package net.sf.jsqlparser.expression; + +public class CurrentTimeExpression implements Expression { + + private String stringValue; + + public CurrentTimeExpression(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(); + } +} diff --git a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java index 0f8c9078a..6cb4cf4e8 100644 --- a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java +++ b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java @@ -166,10 +166,12 @@ public interface ExpressionVisitor { void visit(OracleHint hint); - void visit(SubstringExpression substringExpression); + void visit(SubstringExpression substrExpr); - void visit(CurrentTimestampExpression currentTimestampExpression); + void visit(CurrentTimestampExpression currTimestampExpr); - void visit(CurrentDateExpression currentDateExpressionExpression); + void visit(CurrentTimeExpression currTimeExpr); + + void visit(CurrentDateExpression currDateExpr); } diff --git a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java index 0e2474406..dc30c2f19 100644 --- a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java +++ b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java @@ -457,18 +457,23 @@ public void visit(OracleHint hint) { } @Override - public void visit(SubstringExpression substringExpression) { + public void visit(SubstringExpression substrExpr) { } @Override - public void visit(CurrentTimestampExpression currentTimestampExpression) { + public void visit(CurrentTimestampExpression currTimestampExpr) { } @Override - public void visit(CurrentDateExpression currentDateExpression) { + public void visit(CurrentTimeExpression currTimeExpr) { + + } + + @Override + public void visit(CurrentDateExpression currDateExpr) { } diff --git a/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java b/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java index 9918ee419..ed860cb4f 100644 --- a/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java +++ b/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java @@ -643,14 +643,6 @@ public void visit(Merge merge) { public void visit(OracleHint hint) { } - @Override - public void visit(CurrentTimestampExpression currentTimestampExpression) { - } - - @Override - public void visit(CurrentDateExpression currentDateExpression) { - } - @Override public void visit(TableFunction valuesList) { } @@ -667,4 +659,16 @@ public void visit(SubstringExpression substringExpression) { substringExpression.getForExpression().accept(this); } + @Override + public void visit(CurrentTimestampExpression currTimestampExpr) { + } + + @Override + public void visit(CurrentTimeExpression currTimeExpr) { + } + + @Override + public void visit(CurrentDateExpression currDateExpr) { + } + } diff --git a/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java b/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java index 5dee507f2..19a0a450f 100644 --- a/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java +++ b/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java @@ -577,19 +577,19 @@ public void visit(OracleHint hint) { } @Override - public void visit(SubstringExpression substringExpression) { + public void visit(SubstringExpression substrExpr) { buffer.append("SUBSTRING("); - substringExpression.getSourceExpression().accept(this); + substrExpr.getSourceExpression().accept(this); - if (substringExpression.hasFromExpression()) { + if (substrExpr.hasFromExpression()) { buffer.append(" FROM "); - substringExpression.getFromExpression().accept(this); + substrExpr.getFromExpression().accept(this); } - if (substringExpression.hasForExpression()) { + if (substrExpr.hasForExpression()) { buffer.append(" FOR "); - substringExpression.getForExpression().accept(this); + substrExpr.getForExpression().accept(this); } buffer.append(")"); @@ -597,13 +597,18 @@ public void visit(SubstringExpression substringExpression) { @Override - public void visit(CurrentTimestampExpression currentTimestampExpression) { - buffer.append(currentTimestampExpression.toString()); + public void visit(CurrentTimestampExpression currTimestampExpr) { + buffer.append(currTimestampExpr.toString()); } @Override - public void visit(CurrentDateExpression currentDateExpression) { - buffer.append(currentDateExpression.toString()); + public void visit(CurrentTimeExpression currTimeExpr) { + buffer.append(currTimeExpr.toString()); + } + + @Override + public void visit(CurrentDateExpression currDateExpr) { + buffer.append(currDateExpr.toString()); } } diff --git a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt index 46126028f..fc1432387 100644 --- a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt +++ b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt @@ -235,6 +235,7 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */ | | | +| | } @@ -2076,6 +2077,7 @@ Expression PrimaryExpression(): // support timestamp expressions | token= { retval = new CurrentTimestampExpression(token.image); } + | token= { retval = new CurrentTimeExpression(token.image); } | token= { retval = new CurrentDateExpression(token.image); } | LOOKAHEAD(["+" | "-"] Column()) [sign="+" | sign="-"] retval=Column() @@ -2824,6 +2826,8 @@ String CreateParameter(): tk= { retval = tk.image; } | tk= { retval = new CurrentTimestampExpression(tk.image).toString(); } + | + tk= { retval = new CurrentTimeExpression(tk.image).toString(); } | tk= { retval = new CurrentDateExpression(tk.image).toString(); } | diff --git a/src/test/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapterTest.java b/src/test/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapterTest.java index e522536d0..72f7e8142 100644 --- a/src/test/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapterTest.java +++ b/src/test/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapterTest.java @@ -151,6 +151,25 @@ public void visit(Column column) { assertEquals("bar", columnList.get(0)); } + @Test + public void testCurrentTimeExpression() throws JSQLParserException{ + final List columnList = new ArrayList(); + Select select = (Select) CCJSqlParserUtil.parse( "select * from foo where bar < CURRENT_TIME" ); + 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 columnList = new ArrayList(); From c861000deba9b48e70eb61cafbdef42c73116de7 Mon Sep 17 00:00:00 2001 From: kse Date: Wed, 1 Jun 2016 16:05:40 +0200 Subject: [PATCH 13/21] -- removed sign gpg plugin for release artifacts deployment (not necessary, since repo is different) --- pom.xml | 30 ------------------------------ 1 file changed, 30 deletions(-) diff --git a/pom.xml b/pom.xml index bf2965476..417d0461e 100644 --- a/pom.xml +++ b/pom.xml @@ -304,36 +304,6 @@ - - sign-release-artifacts - - - performRelease - true - - - - - - org.apache.maven.plugins - maven-gpg-plugin - 1.4 - - - sign-artifacts - verify - - sign - - - f22e0543 - - - - - - - doclint-java8-disable From c699ba0a40b3c9eb7426888793084d6f50200dee Mon Sep 17 00:00:00 2001 From: kse Date: Wed, 1 Jun 2016 16:31:42 +0200 Subject: [PATCH 14/21] -- added repo url for deployment as argument to maven release build --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index 417d0461e..8ad14416f 100644 --- a/pom.xml +++ b/pom.xml @@ -166,6 +166,7 @@ true false forked-path + -Drelease.deployment.url=${release.deployment.url} From b272c4530d9e89e44e22c462b259030fa09f2a40 Mon Sep 17 00:00:00 2001 From: ReneU Date: Thu, 2 Jun 2016 08:24:50 +0200 Subject: [PATCH 15/21] -- use one visitor for all supported time key expressions --- .../expression/CurrentTimeExpression.java | 49 ------------------- .../CurrentTimestampExpression.java | 49 ------------------- .../expression/ExpressionVisitor.java | 6 +-- .../expression/ExpressionVisitorAdapter.java | 12 +---- ...Expression.java => TimeKeyExpression.java} | 4 +- .../sf/jsqlparser/util/TablesNamesFinder.java | 10 +--- .../util/deparser/ExpressionDeParser.java | 15 +----- .../net/sf/jsqlparser/parser/JSqlParserCC.jjt | 14 ++---- 8 files changed, 10 insertions(+), 149 deletions(-) delete mode 100644 src/main/java/net/sf/jsqlparser/expression/CurrentTimeExpression.java delete mode 100644 src/main/java/net/sf/jsqlparser/expression/CurrentTimestampExpression.java rename src/main/java/net/sf/jsqlparser/expression/{CurrentDateExpression.java => TimeKeyExpression.java} (91%) diff --git a/src/main/java/net/sf/jsqlparser/expression/CurrentTimeExpression.java b/src/main/java/net/sf/jsqlparser/expression/CurrentTimeExpression.java deleted file mode 100644 index fa1946394..000000000 --- a/src/main/java/net/sf/jsqlparser/expression/CurrentTimeExpression.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * #%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 - * . - * #L% - */ -package net.sf.jsqlparser.expression; - -public class CurrentTimeExpression implements Expression { - - private String stringValue; - - public CurrentTimeExpression(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(); - } -} diff --git a/src/main/java/net/sf/jsqlparser/expression/CurrentTimestampExpression.java b/src/main/java/net/sf/jsqlparser/expression/CurrentTimestampExpression.java deleted file mode 100644 index 21f5cffca..000000000 --- a/src/main/java/net/sf/jsqlparser/expression/CurrentTimestampExpression.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * #%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 - * . - * #L% - */ -package net.sf.jsqlparser.expression; - -public class CurrentTimestampExpression implements Expression { - - private String stringValue; - - public CurrentTimestampExpression(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(); - } -} diff --git a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java index 6cb4cf4e8..dc73a0266 100644 --- a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java +++ b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java @@ -168,10 +168,6 @@ public interface ExpressionVisitor { void visit(SubstringExpression substrExpr); - void visit(CurrentTimestampExpression currTimestampExpr); - - void visit(CurrentTimeExpression currTimeExpr); - - void visit(CurrentDateExpression currDateExpr); + void visit(TimeKeyExpression timeKeyExpression); } diff --git a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java index dc30c2f19..a2a7621bf 100644 --- a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java +++ b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java @@ -463,17 +463,7 @@ public void visit(SubstringExpression substrExpr) { @Override - public void visit(CurrentTimestampExpression currTimestampExpr) { - - } - - @Override - public void visit(CurrentTimeExpression currTimeExpr) { - - } - - @Override - public void visit(CurrentDateExpression currDateExpr) { + public void visit(TimeKeyExpression timeKeyExpression) { } diff --git a/src/main/java/net/sf/jsqlparser/expression/CurrentDateExpression.java b/src/main/java/net/sf/jsqlparser/expression/TimeKeyExpression.java similarity index 91% rename from src/main/java/net/sf/jsqlparser/expression/CurrentDateExpression.java rename to src/main/java/net/sf/jsqlparser/expression/TimeKeyExpression.java index c9febf27b..4d22ef9d6 100644 --- a/src/main/java/net/sf/jsqlparser/expression/CurrentDateExpression.java +++ b/src/main/java/net/sf/jsqlparser/expression/TimeKeyExpression.java @@ -21,11 +21,11 @@ */ package net.sf.jsqlparser.expression; -public class CurrentDateExpression implements Expression { +public class TimeKeyExpression implements Expression { private String stringValue; - public CurrentDateExpression(final String value) { + public TimeKeyExpression(final String value) { this.stringValue = value; } diff --git a/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java b/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java index ed860cb4f..80f644218 100644 --- a/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java +++ b/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java @@ -660,15 +660,7 @@ public void visit(SubstringExpression substringExpression) { } @Override - public void visit(CurrentTimestampExpression currTimestampExpr) { - } - - @Override - public void visit(CurrentTimeExpression currTimeExpr) { - } - - @Override - public void visit(CurrentDateExpression currDateExpr) { + public void visit(TimeKeyExpression timeKeyExpression) { } } diff --git a/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java b/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java index 19a0a450f..ed2e27018 100644 --- a/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java +++ b/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java @@ -595,20 +595,9 @@ public void visit(SubstringExpression substrExpr) { buffer.append(")"); } - - @Override - public void visit(CurrentTimestampExpression currTimestampExpr) { - buffer.append(currTimestampExpr.toString()); - } - - @Override - public void visit(CurrentTimeExpression currTimeExpr) { - buffer.append(currTimeExpr.toString()); - } - @Override - public void visit(CurrentDateExpression currDateExpr) { - buffer.append(currDateExpr.toString()); + public void visit(TimeKeyExpression timeKeyExpression) { + buffer.append(timeKeyExpression.toString()); } } diff --git a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt index fc1432387..6df534561 100644 --- a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt +++ b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt @@ -234,9 +234,7 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */ | | | -| -| -| +| } TOKEN : /* Operators */ @@ -2076,9 +2074,7 @@ Expression PrimaryExpression(): | LOOKAHEAD(2) [sign="+" | sign="-"] retval=CastExpression() // support timestamp expressions - | token= { retval = new CurrentTimestampExpression(token.image); } - | token= { retval = new CurrentTimeExpression(token.image); } - | token= { retval = new CurrentDateExpression(token.image); } + | token= { retval = new TimeKeyExpression(token.image); } | LOOKAHEAD(["+" | "-"] Column()) [sign="+" | sign="-"] retval=Column() @@ -2825,11 +2821,7 @@ String CreateParameter(): | tk= { retval = tk.image; } | - tk= { retval = new CurrentTimestampExpression(tk.image).toString(); } - | - tk= { retval = new CurrentTimeExpression(tk.image).toString(); } - | - tk= { retval = new CurrentDateExpression(tk.image).toString(); } + tk= { retval = new TimeKeyExpression(tk.image).toString(); } | "=" { retval = "="; } | From eccb4e77f5202d2f8f3f84811811e4e3b1292ad7 Mon Sep 17 00:00:00 2001 From: ReneU Date: Wed, 8 Jun 2016 13:03:51 +0200 Subject: [PATCH 16/21] Revert "Merge remote-tracking branch 'origin/master'" This reverts commit 4926d3456b84043b933a77ac8fd6e38371f25e69, reversing changes made to c861000deba9b48e70eb61cafbdef42c73116de7. revert merge for pull request --- .../expression/ExpressionVisitor.java | 2 +- .../expression/ExpressionVisitorAdapter.java | 3 +-- .../sf/jsqlparser/util/TablesNamesFinder.java | 1 - .../util/deparser/ExpressionDeParser.java | 12 ++++++------ .../net/sf/jsqlparser/parser/JSqlParserCC.jjt | 5 +++++ .../ExpressionVisitorAdapterTest.java | 19 ------------------- 6 files changed, 13 insertions(+), 29 deletions(-) diff --git a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java index dc73a0266..7f80e5c7a 100644 --- a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java +++ b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java @@ -166,7 +166,7 @@ public interface ExpressionVisitor { void visit(OracleHint hint); - void visit(SubstringExpression substrExpr); + void visit(SubstringExpression substringExpression); void visit(TimeKeyExpression timeKeyExpression); diff --git a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java index a2a7621bf..ffdc26af2 100644 --- a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java +++ b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java @@ -457,11 +457,10 @@ public void visit(OracleHint hint) { } @Override - public void visit(SubstringExpression substrExpr) { + public void visit(SubstringExpression substringExpression) { } - @Override public void visit(TimeKeyExpression timeKeyExpression) { diff --git a/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java b/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java index 80f644218..46702a75a 100644 --- a/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java +++ b/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java @@ -662,5 +662,4 @@ public void visit(SubstringExpression substringExpression) { @Override public void visit(TimeKeyExpression timeKeyExpression) { } - } diff --git a/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java b/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java index ed2e27018..12b184350 100644 --- a/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java +++ b/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java @@ -577,19 +577,19 @@ public void visit(OracleHint hint) { } @Override - public void visit(SubstringExpression substrExpr) { + public void visit(SubstringExpression substringExpression) { buffer.append("SUBSTRING("); - substrExpr.getSourceExpression().accept(this); + substringExpression.getSourceExpression().accept(this); - if (substrExpr.hasFromExpression()) { + if (substringExpression.hasFromExpression()) { buffer.append(" FROM "); - substrExpr.getFromExpression().accept(this); + substringExpression.getFromExpression().accept(this); } - if (substrExpr.hasForExpression()) { + if (substringExpression.hasForExpression()) { buffer.append(" FOR "); - substrExpr.getForExpression().accept(this); + substringExpression.getForExpression().accept(this); } buffer.append(")"); diff --git a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt index 6df534561..75f6f8997 100644 --- a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt +++ b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt @@ -234,7 +234,12 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */ | | | +<<<<<<< HEAD | +======= +| +| +>>>>>>> parent of 4926d34... Merge remote-tracking branch 'origin/master' } TOKEN : /* Operators */ diff --git a/src/test/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapterTest.java b/src/test/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapterTest.java index 72f7e8142..e522536d0 100644 --- a/src/test/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapterTest.java +++ b/src/test/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapterTest.java @@ -151,25 +151,6 @@ public void visit(Column column) { assertEquals("bar", columnList.get(0)); } - @Test - public void testCurrentTimeExpression() throws JSQLParserException{ - final List columnList = new ArrayList(); - Select select = (Select) CCJSqlParserUtil.parse( "select * from foo where bar < CURRENT_TIME" ); - 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 columnList = new ArrayList(); From 0b498c79e307696f8fdf58b8e73e016fd0bcd5c9 Mon Sep 17 00:00:00 2001 From: ReneU Date: Wed, 8 Jun 2016 13:25:12 +0200 Subject: [PATCH 17/21] revert merge for pull request --- pom.xml | 6 -- .../expression/ExpressionVisitor.java | 3 - .../expression/ExpressionVisitorAdapter.java | 5 - .../relational/SubstringExpression.java | 79 ---------------- .../sf/jsqlparser/util/TablesNamesFinder.java | 7 -- .../util/deparser/ExpressionDeParser.java | 19 ---- .../net/sf/jsqlparser/parser/JSqlParserCC.jjt | 33 +------ .../relational/SubstringExpressionTest.java | 93 ------------------- .../jsqlparser/test/select/SubstringTest.java | 53 ----------- 9 files changed, 1 insertion(+), 297 deletions(-) delete mode 100644 src/main/java/net/sf/jsqlparser/expression/operators/relational/SubstringExpression.java delete mode 100644 src/test/java/net/sf/jsqlparser/expression/operators/relational/SubstringExpressionTest.java delete mode 100644 src/test/java/net/sf/jsqlparser/test/select/SubstringTest.java diff --git a/pom.xml b/pom.xml index 8ad14416f..474cd3b0a 100644 --- a/pom.xml +++ b/pom.xml @@ -37,12 +37,6 @@ 4.12 test - - org.mockito - mockito-core - 1.10.19 - test - diff --git a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java index 7f80e5c7a..715362a0f 100644 --- a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java +++ b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java @@ -44,7 +44,6 @@ import net.sf.jsqlparser.expression.operators.relational.MinorThan; import net.sf.jsqlparser.expression.operators.relational.MinorThanEquals; import net.sf.jsqlparser.expression.operators.relational.NotEqualsTo; -import net.sf.jsqlparser.expression.operators.relational.SubstringExpression; import net.sf.jsqlparser.expression.operators.relational.RegExpMatchOperator; import net.sf.jsqlparser.expression.operators.relational.RegExpMySQLOperator; import net.sf.jsqlparser.schema.Column; @@ -166,8 +165,6 @@ public interface ExpressionVisitor { void visit(OracleHint hint); - void visit(SubstringExpression substringExpression); - void visit(TimeKeyExpression timeKeyExpression); } diff --git a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java index ffdc26af2..2919491a8 100644 --- a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java +++ b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java @@ -456,11 +456,6 @@ public void visit(OracleHint hint) { } - @Override - public void visit(SubstringExpression substringExpression) { - - } - @Override public void visit(TimeKeyExpression timeKeyExpression) { diff --git a/src/main/java/net/sf/jsqlparser/expression/operators/relational/SubstringExpression.java b/src/main/java/net/sf/jsqlparser/expression/operators/relational/SubstringExpression.java deleted file mode 100644 index 1eb8c8fbd..000000000 --- a/src/main/java/net/sf/jsqlparser/expression/operators/relational/SubstringExpression.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * #%L - * JSQLParser library - * %% - * Copyright (C) 2004 - 2015 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 - * . - * #L% - */ -package net.sf.jsqlparser.expression.operators.relational; - -import net.sf.jsqlparser.expression.Expression; -import net.sf.jsqlparser.expression.ExpressionVisitor; - -public class SubstringExpression implements Expression { - - private Expression sourceExpression; - private Expression fromExpression; - private Expression forExpression; - - public Expression getSourceExpression() { - return sourceExpression; - } - - public void setSourceExpression(Expression sourceExpression) { - this.sourceExpression = sourceExpression; - } - - public Expression getFromExpression() { - return fromExpression; - } - - public void setFromExpression(Expression fromExpression) { - this.fromExpression = fromExpression; - } - - public boolean hasFromExpression() { - return fromExpression != null; - } - - public Expression getForExpression() { - return forExpression; - } - - public void setForExpression(Expression forExpression) { - this.forExpression = forExpression; - } - - public boolean hasForExpression() { - return forExpression != null; - } - - @Override - public void accept(ExpressionVisitor expressionVisitor) { - expressionVisitor.visit(this); - } - - @Override - public String toString() { - return - "SUBSTRING(" + sourceExpression - + (fromExpression != null ? " FROM " + fromExpression : "") - + (forExpression != null ? " FOR " + forExpression : "") - + ")"; - } - -} diff --git a/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java b/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java index 46702a75a..499ea31ad 100644 --- a/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java +++ b/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java @@ -651,13 +651,6 @@ public void visit(TableFunction valuesList) { public void visit(AlterView alterView) { throw new UnsupportedOperationException(NOT_SUPPORTED_YET); } - - @Override - public void visit(SubstringExpression substringExpression) { - substringExpression.getSourceExpression().accept(this); - substringExpression.getFromExpression().accept(this); - substringExpression.getForExpression().accept(this); - } @Override public void visit(TimeKeyExpression timeKeyExpression) { diff --git a/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java b/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java index 12b184350..18524b926 100644 --- a/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java +++ b/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java @@ -576,25 +576,6 @@ public void visit(OracleHint hint) { buffer.append(hint.toString()); } - @Override - public void visit(SubstringExpression substringExpression) { - buffer.append("SUBSTRING("); - - substringExpression.getSourceExpression().accept(this); - - if (substringExpression.hasFromExpression()) { - buffer.append(" FROM "); - substringExpression.getFromExpression().accept(this); - } - - if (substringExpression.hasForExpression()) { - buffer.append(" FOR "); - substringExpression.getForExpression().accept(this); - } - - buffer.append(")"); - } - @Override public void visit(TimeKeyExpression timeKeyExpression) { buffer.append(timeKeyExpression.toString()); diff --git a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt index 75f6f8997..e872e9024 100644 --- a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt +++ b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt @@ -233,13 +233,7 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */ | | | -| -<<<<<<< HEAD | -======= -| -| ->>>>>>> parent of 4926d34... Merge remote-tracking branch 'origin/master' } TOKEN : /* Operators */ @@ -685,7 +679,7 @@ String RelObjectName() : | tk= | tk= | tk= | tk= | tk= | tk= | tk= | tk= | tk= | tk= | tk= | tk= | tk= | tk= | tk= - | tk= | tk= + | tk= ) { return tk.image; } @@ -1724,29 +1718,6 @@ Expression Between() : } } -Expression SubstringExpression() : -{ - SubstringExpression result = new SubstringExpression(); - Expression sourceExpr = null; - Expression fromExpr = null; - Expression forExpr = null; -} -{ - - "(" - sourceExpr=SimpleExpression() - [ fromExpr=SimpleExpression()] - [ forExpr=SimpleExpression()] - ")" - { - result.setSourceExpression(sourceExpr); - result.setFromExpression(fromExpr); - result.setForExpression(forExpr); - - return result; - } -} - Expression LikeExpression() : { LikeExpression result = new LikeExpression(); @@ -2062,8 +2033,6 @@ Expression PrimaryExpression(): | LOOKAHEAD(ExtractExpression()) retval=ExtractExpression() - | LOOKAHEAD(SubstringExpression()) retval=SubstringExpression() - | retval=MySQLGroupConcat() | LOOKAHEAD([sign="+" | sign="-"] JsonExpression()) [sign="+" | sign="-"] retval=JsonExpression() diff --git a/src/test/java/net/sf/jsqlparser/expression/operators/relational/SubstringExpressionTest.java b/src/test/java/net/sf/jsqlparser/expression/operators/relational/SubstringExpressionTest.java deleted file mode 100644 index 96240bd3a..000000000 --- a/src/test/java/net/sf/jsqlparser/expression/operators/relational/SubstringExpressionTest.java +++ /dev/null @@ -1,93 +0,0 @@ -package net.sf.jsqlparser.expression.operators.relational; - -import net.sf.jsqlparser.expression.Expression; -import org.junit.*; -import org.mockito.Mockito; - -import java.util.regex.Pattern; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; - -/** - * unit tests of {@link SubstringExpression} - * - * @author ChrissW-R1 - */ -public class SubstringExpressionTest { - private static final String sourceVal = "foo"; - private static final int fromVal = 1; - private static final int forVal = 10; - - private static SubstringExpression subStrExpr; - - @Before - public void setUp() { - subStrExpr = new SubstringExpression(); - - Expression sourceExpr = Mockito.mock(Expression.class); - Mockito.when(sourceExpr.toString()).thenReturn(sourceVal); - subStrExpr.setSourceExpression(sourceExpr); - - Expression fromExpr = Mockito.mock(Expression.class); - Mockito.when(fromExpr.toString()).thenReturn(Integer.toString(fromVal)); - subStrExpr.setFromExpression(fromExpr); - - Expression forExpr = Mockito.mock(Expression.class); - Mockito.when(forExpr.toString()).thenReturn(Integer.toString(forVal)); - subStrExpr.setForExpression(forExpr); - } - - /** - * Test of {@link SubstringExpression#toString()} - */ - @Test - public void testToStringDefault() { - String str = subStrExpr.toString(); - - String regEx = "(?i)SUBSTRING\\([ \\r\\n\\t]*" - + sourceVal - + "[ \\r\\n\\t]+FROM[ \\r\\n\\t]+" - + fromVal - + "[ \\r\\n\\t]+FOR+[ \\r\\n\\t]+" - + forVal - + "[ \\r\\n\\t]*\\)"; - - assertTrue(str.matches(regEx)); - } - - /** - * Test of {@link SubstringExpression#toString()} only with FROM parameter - */ - @Test - public void testToStringOnlyFrom() { - subStrExpr.setForExpression(null); - String str = subStrExpr.toString(); - - String regEx = "(?i)SUBSTRING\\([ \\r\\n\\t]*" - + sourceVal - + "[ \\r\\n\\t]+FROM[ \\r\\n\\t]+" - + fromVal - + "[ \\r\\n\\t]*\\)"; - - assertTrue(str.matches(regEx)); - } - - /** - * Test of {@link SubstringExpression#toString()} only with FOR parameter - */ - @Test - public void testToStringOnlyFor() { - subStrExpr.setFromExpression(null); - String str = subStrExpr.toString(); - - String regEx = "(?i)SUBSTRING\\([ \\r\\n\\t]*" - + sourceVal - + "[ \\r\\n\\t]+FOR+[ \\r\\n\\t]+" - + forVal - + "[ \\r\\n\\t]*\\)"; - - assertTrue(str.matches(regEx)); - } -} diff --git a/src/test/java/net/sf/jsqlparser/test/select/SubstringTest.java b/src/test/java/net/sf/jsqlparser/test/select/SubstringTest.java deleted file mode 100644 index 209dbc6f8..000000000 --- a/src/test/java/net/sf/jsqlparser/test/select/SubstringTest.java +++ /dev/null @@ -1,53 +0,0 @@ -package net.sf.jsqlparser.test.select; - -import junit.framework.*; -import net.sf.jsqlparser.JSQLParserException; -import net.sf.jsqlparser.parser.*; -import static net.sf.jsqlparser.test.TestUtils.*; - -public class SubstringTest extends TestCase { - public SubstringTest(String arg0) { - super(arg0); - } - - public void testInWhere() throws Exception { - final String query = "SELECT foo FROM bar WHERE SUBSTRING(foo FROM 1 FOR 10) LIKE 'A%'"; - assertSqlCanBeParsedAndDeparsed(query); - } - - public void testInOrderBy() throws Exception { - final String query = "SELECT foo FROM bar ORDER BY SUBSTRING(foo FROM 12 FOR 2)"; - assertSqlCanBeParsedAndDeparsed(query); - } - - public void testOnlyFrom() throws Exception { - final String query = "SELECT SUBSTRING(foo FROM 5) AS sub FROM bar"; - assertSqlCanBeParsedAndDeparsed(query); - } - - public void testOnlyFor() throws Exception { - final String query = "SELECT SUBSTRING(foo FOR 2) AS sub FROM bar"; - assertSqlCanBeParsedAndDeparsed(query); - } - - public void testWithString() throws Exception { - final String query = "SELECT SUBSTRING('free text to split' FROM 6 FOR 4) AS foo FROM bar"; - assertSqlCanBeParsedAndDeparsed(query); - } - - public void testWithToSyntax() throws Exception { - final String query = "SELECT SUBSTRING(foo FROM 6 TO 7) AS sub FROM bar"; - - try { - assertSqlCanBeParsedAndDeparsed(query); - - fail("Function SUBSTRING must reject wrong syntax with '... FROM ... TO ...'"); - } catch (JSQLParserException e) { - } - } - - public void testCommaSyntax() throws Exception { - final String query = "SELECT SUBSTRING(foo, 6, 4) AS sub FROM bar"; - assertSqlCanBeParsedAndDeparsed(query); - } -} From 5d2acc231555216ba9ef794b4ceeb5c8b3eb38a4 Mon Sep 17 00:00:00 2001 From: ReneU Date: Wed, 8 Jun 2016 13:27:53 +0200 Subject: [PATCH 18/21] revert commit for pull request --- pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/pom.xml b/pom.xml index 474cd3b0a..95c5cdf51 100644 --- a/pom.xml +++ b/pom.xml @@ -160,7 +160,6 @@ true false forked-path - -Drelease.deployment.url=${release.deployment.url} From 755e0fe0f045e50f569fe8c2af6e490e1408e228 Mon Sep 17 00:00:00 2001 From: ReneU Date: Wed, 8 Jun 2016 13:29:24 +0200 Subject: [PATCH 19/21] revert commit for pull request --- pom.xml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/pom.xml b/pom.xml index 95c5cdf51..366b28b88 100644 --- a/pom.xml +++ b/pom.xml @@ -298,6 +298,36 @@ + + sign-release-artifacts + + + performRelease + true + + + + + + org.apache.maven.plugins + maven-gpg-plugin + 1.4 + + + sign-artifacts + verify + + sign + + + f22e0543 + + + + + + + doclint-java8-disable From 73c6ca369ae398df48c6261eb24ad0ecc253b5cf Mon Sep 17 00:00:00 2001 From: ReneU Date: Wed, 8 Jun 2016 13:31:02 +0200 Subject: [PATCH 20/21] revert commit for pull request --- pom.xml | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/pom.xml b/pom.xml index 366b28b88..b1fbd9f6c 100644 --- a/pom.xml +++ b/pom.xml @@ -1,6 +1,6 @@ 4.0.0 - de.conterra.sql + com.github.jsqlparser jsqlparser 0.9.6-SNAPSHOT JSQLParser library @@ -48,21 +48,19 @@ - ct-dist-releases-file - repository for sdi.suite releases - ${release.deployment.url} + sonatype-nexus-staging + https://oss.sonatype.org/service/local/staging/deploy/maven2 - ct-dist-snapshots-file - repository for sdi.suite snapshots - ${snapshot.deployment.url} + sonatype-nexus-snapshots + https://oss.sonatype.org/content/repositories/snapshots - scm:git:https://github.com/conterra/JSqlParser.git - scm:git:ssh://git@github.com:conterra/JSqlParser.git - https://github.com/conterra/JSqlParser.git + scm:git:https://github.com/JSQLParser/JSqlParser.git + scm:git:ssh://git@github.com:JSQLParser/JSqlParser.git + https://github.com/JSQLParser/JSqlParser.git HEAD @@ -77,8 +75,8 @@ maven-compiler-plugin 3.3 - 1.7 - 1.7 + 1.6 + 1.6 true ${project.build.sourceEncoding} From 6feb78293b0819734fb016ee6d3e361d93037208 Mon Sep 17 00:00:00 2001 From: ReneU Date: Wed, 8 Jun 2016 13:43:01 +0200 Subject: [PATCH 21/21] revert commit for pull request --- .../java/net/sf/jsqlparser/test/select/SelectTest.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/test/java/net/sf/jsqlparser/test/select/SelectTest.java b/src/test/java/net/sf/jsqlparser/test/select/SelectTest.java index 554ff0187..d0e744b6e 100644 --- a/src/test/java/net/sf/jsqlparser/test/select/SelectTest.java +++ b/src/test/java/net/sf/jsqlparser/test/select/SelectTest.java @@ -1499,21 +1499,21 @@ public void testProblemFunction3() throws JSQLParserException { } public void testAdditionalLettersGerman() throws JSQLParserException { - String stmt = "SELECT col\u00E4, col\u00F6, col\u00FC FROM testtable\u00E4\u00F6\u00FC"; + String stmt = "SELECT colä, colö, colü FROM testtableäöü"; assertSqlCanBeParsedAndDeparsed(stmt); - stmt = "SELECT col\u00C4, col\u00D6, col\u00DC FROM testtable\u00C4\u00D6\u00DC"; + stmt = "SELECT colA, colÖ, colÜ FROM testtableÄÖÜ"; assertSqlCanBeParsedAndDeparsed(stmt); - stmt = "SELECT \u00C4col FROM testtable\u00C4\u00D6\u00DC"; + stmt = "SELECT Äcol FROM testtableÄÖÜ"; assertSqlCanBeParsedAndDeparsed(stmt); - stmt = "SELECT \u00DFcol\u00DF FROM testtable\u00DF"; + stmt = "SELECT ßcolß FROM testtableß"; assertSqlCanBeParsedAndDeparsed(stmt); } public void testAdditionalLettersSpanish() throws JSQLParserException { - String stmt = "SELECT * FROM a\u00F1os"; + String stmt = "SELECT * FROM años"; assertSqlCanBeParsedAndDeparsed(stmt); }