metamodel git commit: METAMODEL-200: Fixed Fixes #62
Repository: metamodel Updated Branches: refs/heads/master 9de5b7711 -> bec25c455 METAMODEL-200: Fixed Fixes #62 Project: http://git-wip-us.apache.org/repos/asf/metamodel/repo Commit: http://git-wip-us.apache.org/repos/asf/metamodel/commit/bec25c45 Tree: http://git-wip-us.apache.org/repos/asf/metamodel/tree/bec25c45 Diff: http://git-wip-us.apache.org/repos/asf/metamodel/diff/bec25c45 Branch: refs/heads/master Commit: bec25c455e20aa4ddb50d448593fa781a601b58a Parents: 9de5b77 Author: Kasper SørensenAuthored: Sun Oct 25 16:06:13 2015 +0100 Committer: Kasper Sørensen Committed: Sun Oct 25 16:06:13 2015 +0100 -- .../org/apache/metamodel/query/SelectItem.java | 19 --- .../metamodel/query/parser/SelectItemParser.java | 19 +-- .../apache/metamodel/query/SelectItemTest.java | 6 ++ .../metamodel/query/parser/QueryParserTest.java | 6 ++ 4 files changed, 41 insertions(+), 9 deletions(-) -- http://git-wip-us.apache.org/repos/asf/metamodel/blob/bec25c45/core/src/main/java/org/apache/metamodel/query/SelectItem.java -- diff --git a/core/src/main/java/org/apache/metamodel/query/SelectItem.java b/core/src/main/java/org/apache/metamodel/query/SelectItem.java index b9883f8..287d1a6 100644 --- a/core/src/main/java/org/apache/metamodel/query/SelectItem.java +++ b/core/src/main/java/org/apache/metamodel/query/SelectItem.java @@ -47,6 +47,8 @@ import org.slf4j.LoggerFactory; */ public class SelectItem extends BaseObject implements QueryItem, Cloneable { +public static final String FUNCTION_APPROXIMATION_PREFIX = "APPROXIMATE "; + private static final long serialVersionUID = 317475105509663973L; private static final Logger logger = LoggerFactory.getLogger(SelectItem.class); @@ -331,7 +333,10 @@ public class SelectItem extends BaseObject implements QueryItem, Cloneable { } else if (_column != null) { final StringBuilder sb = new StringBuilder(); if (_function != null) { -sb.append(_function.toString()); +if (_functionApproximationAllowed) { +sb.append(FUNCTION_APPROXIMATION_PREFIX); +} +sb.append(_function.getFunctionName()); sb.append('('); } if (includeQuotes) { @@ -364,7 +369,11 @@ public class SelectItem extends BaseObject implements QueryItem, Cloneable { sb.append(columnPrefix); sb.append(_column.getQuotedName()); if (_function != null) { -sb.insert(0, _function + "("); +if (_functionApproximationAllowed) { +sb.insert(0, FUNCTION_APPROXIMATION_PREFIX + _function.getFunctionName() + "("); +} else { +sb.insert(0, _function.getFunctionName() + "("); +} sb.append(")"); } return sb.toString(); @@ -412,7 +421,11 @@ public class SelectItem extends BaseObject implements QueryItem, Cloneable { sb.append(_subQuerySelectItem.getSuperQueryAlias()); } if (_function != null) { -sb.insert(0, _function.getFunctionName() + "("); +if (_functionApproximationAllowed) { +sb.insert(0, FUNCTION_APPROXIMATION_PREFIX + _function.getFunctionName() + "("); +} else { +sb.insert(0, _function.getFunctionName() + "("); +} sb.append(")"); } return sb; http://git-wip-us.apache.org/repos/asf/metamodel/blob/bec25c45/core/src/main/java/org/apache/metamodel/query/parser/SelectItemParser.java -- diff --git a/core/src/main/java/org/apache/metamodel/query/parser/SelectItemParser.java b/core/src/main/java/org/apache/metamodel/query/parser/SelectItemParser.java index 9e87e1d..9cea18e 100644 --- a/core/src/main/java/org/apache/metamodel/query/parser/SelectItemParser.java +++ b/core/src/main/java/org/apache/metamodel/query/parser/SelectItemParser.java @@ -106,19 +106,24 @@ public final class SelectItemParser implements QueryPartProcessor { final String unmodifiedExpression = expression; +final boolean functionApproximation; final FunctionType function; final int startParenthesis = expression.indexOf('('); if (startParenthesis > 0 && expression.endsWith(")")) { -String functionName = expression.substring(0, startParenthesis); +functionApproximation = (expression.startsWith(SelectItem.FUNCTION_APPROXIMATION_PREFIX)); +final String functionName =
metamodel git commit: METAMODEL-199: Fixed Fixes #63
Repository: metamodel Updated Branches: refs/heads/master 9553357cd -> 9de5b7711 METAMODEL-199: Fixed Fixes #63 Project: http://git-wip-us.apache.org/repos/asf/metamodel/repo Commit: http://git-wip-us.apache.org/repos/asf/metamodel/commit/9de5b771 Tree: http://git-wip-us.apache.org/repos/asf/metamodel/tree/9de5b771 Diff: http://git-wip-us.apache.org/repos/asf/metamodel/diff/9de5b771 Branch: refs/heads/master Commit: 9de5b7711d36470cd6b88f6d037e0bab46b8147a Parents: 9553357 Author: Kasper SørensenAuthored: Sun Oct 25 15:57:44 2015 +0100 Committer: Kasper Sørensen Committed: Sun Oct 25 15:57:44 2015 +0100 -- core/src/main/java/org/apache/metamodel/query/Query.java | 5 +++-- .../org/apache/metamodel/query/parser/QueryParserTest.java| 7 +++ 2 files changed, 10 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/metamodel/blob/9de5b771/core/src/main/java/org/apache/metamodel/query/Query.java -- diff --git a/core/src/main/java/org/apache/metamodel/query/Query.java b/core/src/main/java/org/apache/metamodel/query/Query.java index 1fdb6da..209e71f 100644 --- a/core/src/main/java/org/apache/metamodel/query/Query.java +++ b/core/src/main/java/org/apache/metamodel/query/Query.java @@ -294,7 +294,7 @@ public final class Query extends BaseObject implements Cloneable, Serializable { } private FilterItem findFilterItem(String expression) { -String _upperExpression = expression.toUpperCase(); +String upperExpression = expression.toUpperCase(); final QueryPartCollectionProcessor collectionProcessor = new QueryPartCollectionProcessor(); new QueryPartParser(collectionProcessor, expression, " AND ", " OR ").parse(); @@ -303,6 +303,7 @@ public final class Query extends BaseObject implements Cloneable, Serializable { final List delims = collectionProcessor.getDelims(); if (tokens.size() == 1) { expression = tokens.get(0); +upperExpression = expression.toUpperCase(); } else { final LogicalOperator logicalOperator = LogicalOperator.valueOf(delims.get(1).trim()); @@ -328,7 +329,7 @@ public final class Query extends BaseObject implements Cloneable, Serializable { } else { searchStr = operatorCandidate.toSql(); } -final int operatorIndex = _upperExpression.indexOf(searchStr); +final int operatorIndex = upperExpression.indexOf(searchStr); if (operatorIndex > 0) { operator = operatorCandidate; leftSide = expression.substring(0, operatorIndex).trim(); http://git-wip-us.apache.org/repos/asf/metamodel/blob/9de5b771/core/src/test/java/org/apache/metamodel/query/parser/QueryParserTest.java -- diff --git a/core/src/test/java/org/apache/metamodel/query/parser/QueryParserTest.java b/core/src/test/java/org/apache/metamodel/query/parser/QueryParserTest.java index f83d4ff..d1c198f 100644 --- a/core/src/test/java/org/apache/metamodel/query/parser/QueryParserTest.java +++ b/core/src/test/java/org/apache/metamodel/query/parser/QueryParserTest.java @@ -51,6 +51,13 @@ public class QueryParserTest extends TestCase { col.setType(ColumnType.INTEGER); }; + public void testQueryWithParenthesisAnd() throws Exception { +Query q = MetaModelHelper.parseQuery(dc, +"select foo from sch.tbl where (foo= 1) and (foo=2)"); +assertEquals("SELECT tbl.foo FROM sch.tbl WHERE tbl.foo = '1' AND tbl.foo = '2'", +q.toSql()); +} + public void testQueryInLowerCase() throws Exception { Query q = MetaModelHelper.parseQuery(dc, "select a.foo as f from sch.tbl a inner join sch.tbl b on a.foo=b.foo order by a.foo asc");
metamodel git commit: Updated CHANGES.md with recently merged patches
Repository: metamodel Updated Branches: refs/heads/master bec25c455 -> 180057b49 Updated CHANGES.md with recently merged patches Project: http://git-wip-us.apache.org/repos/asf/metamodel/repo Commit: http://git-wip-us.apache.org/repos/asf/metamodel/commit/180057b4 Tree: http://git-wip-us.apache.org/repos/asf/metamodel/tree/180057b4 Diff: http://git-wip-us.apache.org/repos/asf/metamodel/diff/180057b4 Branch: refs/heads/master Commit: 180057b49a6e3f5d8b46a222998691d9b1a097b3 Parents: bec25c4 Author: Kasper SørensenAuthored: Sun Oct 25 16:10:30 2015 +0100 Committer: Kasper Sørensen Committed: Sun Oct 25 16:10:30 2015 +0100 -- CHANGES.md | 4 1 file changed, 4 insertions(+) -- http://git-wip-us.apache.org/repos/asf/metamodel/blob/180057b4/CHANGES.md -- diff --git a/CHANGES.md b/CHANGES.md index ea13708..433bd72 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,6 +1,10 @@ ### Apache MetaModel (work in progress) * [METAMODEL-198] - Fixed support for JDBC TIMESTAMP precision to match the underlying database's precision. + * [METAMODEL-200] - Added optional "APPROXIMATE" keyword to query syntax for aggregate functions. + * [METAMODEL-144] - Automated binary packaging of the MetaModel project. + * [METAMODEL-197] - ElasticSearch schema update/change after CREATE TABLE statements. + * [METAMODEL-199] - Fixed a bug in query parser when parsing two consecutive WHERE items with parentheses around them. ### Apache MetaModel 4.4.0