You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metamodel.apache.org by ka...@apache.org on 2014/09/30 09:21:28 UTC
[1/2] git commit: METAMODEL-76: Fixed.
Repository: incubator-metamodel
Updated Branches:
refs/heads/master cdd037a9f -> d6e8d5422
METAMODEL-76: Fixed.
Project: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/commit/401cfa0d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/tree/401cfa0d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/diff/401cfa0d
Branch: refs/heads/master
Commit: 401cfa0dc29f6ee71effc029575011f210c80af2
Parents: cd147b2
Author: Kasper Sørensen <i....@gmail.com>
Authored: Sun Sep 28 19:55:02 2014 +0200
Committer: Kasper Sørensen <i....@gmail.com>
Committed: Sun Sep 28 19:55:02 2014 +0200
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../org/apache/metamodel/query/FilterItem.java | 13 ++++-----
.../apache/metamodel/query/OperatorType.java | 30 ++++++++++----------
.../java/org/apache/metamodel/query/Query.java | 10 +++++--
.../QueryPostprocessDataContextTest.java | 15 ++++++++++
.../metamodel/mongodb/MongoDbDataContext.java | 3 --
6 files changed, 44 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/401cfa0d/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 9ecdc7b..3a61db7 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -2,6 +2,7 @@ Apache MetaModel 4.3.0-incubating
* [METAMODEL-77] - New module 'elasticsearch' for connecting and modeling ElasticSearch indexes through MetaModel.
* [METAMODEL-74] - Fixed bug related to skipping blank values when applying an aggregate function (SUM, AVG etc.)
+ * [METAMODEL-76] - Query parser improved to handle filters without spaces inbetween operator and operands.
Apache MetaModel 4.2.0-incubating
http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/401cfa0d/core/src/main/java/org/apache/metamodel/query/FilterItem.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/metamodel/query/FilterItem.java b/core/src/main/java/org/apache/metamodel/query/FilterItem.java
index 4a6d0af..8893fb1 100644
--- a/core/src/main/java/org/apache/metamodel/query/FilterItem.java
+++ b/core/src/main/java/org/apache/metamodel/query/FilterItem.java
@@ -235,7 +235,7 @@ public class FilterItem extends BaseObject implements QueryItem, Cloneable, IRow
}
return this;
}
-
+
@Override
public String toSql() {
return toSql(false);
@@ -262,7 +262,8 @@ public class FilterItem extends BaseObject implements QueryItem, Cloneable, IRow
final Object operand = appendOperator(sb, _operand, _operator);
if (operand instanceof SelectItem) {
- final String selectItemString = ((SelectItem) operand).getSameQueryAlias(includeSchemaInColumnPaths);
+ final String selectItemString = ((SelectItem) operand)
+ .getSameQueryAlias(includeSchemaInColumnPaths);
sb.append(selectItemString);
} else {
ColumnType columnType = _selectItem.getExpectedColumnType();
@@ -287,7 +288,6 @@ public class FilterItem extends BaseObject implements QueryItem, Cloneable, IRow
return sb.toString();
}
- @SuppressWarnings("deprecation")
public static Object appendOperator(StringBuilder sb, Object operand, OperatorType operator) {
switch (operator) {
case DIFFERENT_FROM:
@@ -300,11 +300,9 @@ public class FilterItem extends BaseObject implements QueryItem, Cloneable, IRow
sb.append(" LIKE ");
break;
case GREATER_THAN:
- case HIGHER_THAN:
sb.append(" > ");
break;
case LESS_THAN:
- case LOWER_THAN:
sb.append(" < ");
break;
case IN:
@@ -374,16 +372,15 @@ public class FilterItem extends BaseObject implements QueryItem, Cloneable, IRow
}
}
- @SuppressWarnings("deprecation")
private boolean compare(Object selectItemValue, Object operandValue) {
Comparator<Object> comparator = ObjectComparator.getComparator();
if (_operator == OperatorType.DIFFERENT_FROM) {
return comparator.compare(selectItemValue, operandValue) != 0;
} else if (_operator == OperatorType.EQUALS_TO) {
return comparator.compare(selectItemValue, operandValue) == 0;
- } else if (_operator == OperatorType.GREATER_THAN || _operator == OperatorType.HIGHER_THAN) {
+ } else if (_operator == OperatorType.GREATER_THAN) {
return comparator.compare(selectItemValue, operandValue) > 0;
- } else if (_operator == OperatorType.LESS_THAN || _operator == OperatorType.LOWER_THAN) {
+ } else if (_operator == OperatorType.LESS_THAN) {
return comparator.compare(selectItemValue, operandValue) < 0;
} else if (_operator == OperatorType.LIKE) {
WildcardPattern matcher = new WildcardPattern((String) operandValue, '%');
http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/401cfa0d/core/src/main/java/org/apache/metamodel/query/OperatorType.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/metamodel/query/OperatorType.java b/core/src/main/java/org/apache/metamodel/query/OperatorType.java
index a2d68b9..5a0d281 100644
--- a/core/src/main/java/org/apache/metamodel/query/OperatorType.java
+++ b/core/src/main/java/org/apache/metamodel/query/OperatorType.java
@@ -25,31 +25,31 @@ package org.apache.metamodel.query;
*/
public enum OperatorType {
- EQUALS_TO("="), DIFFERENT_FROM("<>"), LIKE("LIKE"), GREATER_THAN(">"), LESS_THAN("<"), IN("IN"),
-
- /**
- * @deprecated use {@link #LESS_THAN} instead.
- */
- @Deprecated
- LOWER_THAN("<"),
-
- /**
- * @deprecated use {@link #GREATER_THAN} instead.
- */
- @Deprecated
- HIGHER_THAN(">");
+ EQUALS_TO("=", false), DIFFERENT_FROM("<>", false), LIKE("LIKE", true), GREATER_THAN(">", false), LESS_THAN("<",
+ false), IN("IN", true);
private final String _sql;
+ private final boolean _spaceDelimited;
- private OperatorType(String sql) {
+ private OperatorType(String sql, boolean spaceDelimited) {
_sql = sql;
+ _spaceDelimited = spaceDelimited;
+ }
+
+/**
+ * Determines if this operator requires a space delimitor. Operators that are written using letters usually require space delimitation whereas sign-based operators such as "=" and "<" can be applied even without any delimitaton.
+ *
+ * @return
+ */
+ public boolean isSpaceDelimited() {
+ return _spaceDelimited;
}
public String toSql() {
return _sql;
}
- /**
+/**
* Converts from SQL string literals to an OperatorType. Valid SQL values
* are "=", "<>", "LIKE", ">" and "<".
*
http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/401cfa0d/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 1b0f6d3..f46b007 100644
--- a/core/src/main/java/org/apache/metamodel/query/Query.java
+++ b/core/src/main/java/org/apache/metamodel/query/Query.java
@@ -323,11 +323,17 @@ public final class Query extends BaseObject implements Cloneable, Serializable {
String rightSideCandidate = null;
final OperatorType[] operators = OperatorType.values();
for (OperatorType operatorCandidate : operators) {
- final int operatorIndex = expression.indexOf(' ' + operatorCandidate.toSql() + ' ');
+ final String searchStr;
+ if (operatorCandidate.isSpaceDelimited()) {
+ searchStr = ' ' + operatorCandidate.toSql() + ' ';
+ } else {
+ searchStr = operatorCandidate.toSql();
+ }
+ final int operatorIndex = expression.indexOf(searchStr);
if (operatorIndex > 0) {
operator = operatorCandidate;
leftSide = expression.substring(0, operatorIndex).trim();
- rightSideCandidate = expression.substring(operatorIndex + operator.toSql().length() + 2).trim();
+ rightSideCandidate = expression.substring(operatorIndex + searchStr.length()).trim();
break;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/401cfa0d/core/src/test/java/org/apache/metamodel/QueryPostprocessDataContextTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/metamodel/QueryPostprocessDataContextTest.java b/core/src/test/java/org/apache/metamodel/QueryPostprocessDataContextTest.java
index 0949e1e..3b2be2f 100644
--- a/core/src/test/java/org/apache/metamodel/QueryPostprocessDataContextTest.java
+++ b/core/src/test/java/org/apache/metamodel/QueryPostprocessDataContextTest.java
@@ -965,4 +965,19 @@ public class QueryPostprocessDataContextTest extends MetaModelTestCase {
assertEquals("Row[values=[hello world]]", result.getRow().toString());
assertFalse(result.next());
}
+
+ public void testQueryWithDotInTableName() throws Exception {
+ MockDataContext dc = new MockDataContext("folder", "file.csv", "foo");
+
+ Table table = dc.getDefaultSchema().getTableByName("file.csv");
+ assertNotNull(table);
+
+ Query q = dc.parseQuery("SELECT foo FROM file.csv WHERE \r\nfoo='bar'");
+ assertNotNull(q);
+
+ FilterItem item = q.getWhereClause().getItem(0);
+ assertNull(item.getExpression());
+
+ assertEquals("file.csv.foo = 'bar'", item.toSql());
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/401cfa0d/mongodb/src/main/java/org/apache/metamodel/mongodb/MongoDbDataContext.java
----------------------------------------------------------------------
diff --git a/mongodb/src/main/java/org/apache/metamodel/mongodb/MongoDbDataContext.java b/mongodb/src/main/java/org/apache/metamodel/mongodb/MongoDbDataContext.java
index 9da4ecf..fb8c8a8 100644
--- a/mongodb/src/main/java/org/apache/metamodel/mongodb/MongoDbDataContext.java
+++ b/mongodb/src/main/java/org/apache/metamodel/mongodb/MongoDbDataContext.java
@@ -409,7 +409,6 @@ public class MongoDbDataContext extends QueryPostprocessDataContext implements U
}
}
- @SuppressWarnings("deprecation")
private String getOperatorName(FilterItem item) {
final String operatorName;
switch (item.getOperator()) {
@@ -417,11 +416,9 @@ public class MongoDbDataContext extends QueryPostprocessDataContext implements U
operatorName = null;
break;
case LESS_THAN:
- case LOWER_THAN:
operatorName = "$lt";
break;
case GREATER_THAN:
- case HIGHER_THAN:
operatorName = "$gt";
break;
case DIFFERENT_FROM:
[2/2] git commit: Merge branch 'master' of
https://git-wip-us.apache.org/repos/asf/incubator-metamodel.git
Posted by ka...@apache.org.
Merge branch 'master' of
https://git-wip-us.apache.org/repos/asf/incubator-metamodel.git
Conflicts:
CHANGES.txt
Project: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/commit/d6e8d542
Tree: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/tree/d6e8d542
Diff: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/diff/d6e8d542
Branch: refs/heads/master
Commit: d6e8d5422f3d0780c6f09c6db0e549bb6c2b22bc
Parents: 401cfa0 cdd037a
Author: Kasper Sørensen <i....@gmail.com>
Authored: Tue Sep 30 09:21:03 2014 +0200
Committer: Kasper Sørensen <i....@gmail.com>
Committed: Tue Sep 30 09:21:03 2014 +0200
----------------------------------------------------------------------
CHANGES.md | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
CHANGES.txt | 54 ------------------------------------------------------
CONTRIBUTE.md | 28 +++++++++++++++++++++-------
README | 38 --------------------------------------
README.md | 39 +++++++++++++++++++++++++++++++++++++++
pom.xml | 7 +------
6 files changed, 115 insertions(+), 105 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/d6e8d542/CHANGES.md
----------------------------------------------------------------------
diff --cc CHANGES.md
index 0000000,6d30684..6959c71
mode 000000,100644..100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@@ -1,0 -1,53 +1,54 @@@
+ ### Apache MetaModel 4.3.0-incubating
+
+ * [METAMODEL-77] - New module 'elasticsearch' for connecting and modeling ElasticSearch indexes through MetaModel.
+ * [METAMODEL-74] - Fixed bug related to skipping blank values when applying an aggregate function (SUM, AVG etc.)
++ * [METAMODEL-76] - Query parser improved to handle filters without spaces inbetween operator and operands.
+
+ ### Apache MetaModel 4.2.0-incubating
+
+ * [METAMODEL-38] - New module 'json' for handling json files (containing JSON arrays of documents or line-delimited JSON documents)
+ * [METAMODEL-54] - ColumnType converted from enum to interface to allow for further specialization in modules.
+ * [METAMODEL-57] - Changed the column type VARCHAR into STRING for the modules: CSV, Fixedwidth, Excel and XML.
+ * [METAMODEL-56] - Made separate column types for converted JDBC LOBs - "CLOB as String" and "BLOB as bytes".
+ * [METAMODEL-46] - Improved row-lookup by primary key (ID) in CouchDB
+ * [METAMODEL-58] - Fixed a bug related to using CreateTable class and primary keys not getting created.
+ * [METAMODEL-3] - Improved writing of Byte-Order-Mark (BOM) for various encoding spelling variants.
+ * [METAMODEL-70] - Made the build compatible with both JDK versions 6 and 7.
+ * [METAMODEL-59] - Fixed a bug related to handling of date/time literals in MS SQL Server queries.
+ * [METAMODEL-60] - Fixed a bug related to DISTINCT and TOP keywords in MS SQL Server queries.
+ * [METAMODEL-45] - Improved and standardized way of handling integration test connection information towards external databases.
+ * [METAMODEL-62] - Fixed a bug related to fault-tolerant handling of malformed CSV lines when reading CSVs in single-line mode
+ * [METAMODEL-68] - Made it possible to create a CSV table without a header line in the file, if the user configures it.
+ * [METAMODEL-67] - Upgraded Jackson (JSON library) dependency from org.codehaus namespace to the newer com.fasterxml namespace.
+ * [METAMODEL-69] - Fixed issue with deserialization of ColumnType into the new interface instead of the old enum.
+
+ ### Apache MetaModel 4.1.0-incubating
+
+ * [METAMODEL-13] - Added support for Apache HBase via the new module "MetaModel-hbase"
+ * [METAMODEL-41] - Added a parser for SimpleTableDef objects (SimpleTableDefParser). It parses statements similar to CREATE TABLE statements, although without the "CREATE TABLE" prefix. For example: foo (bar INTEGER, baz VARCHAR)
+ * [METAMODEL-11] - New module "MetaModel-spring" which adds a convenient FactoryBean to produce various types of DataContext objects based on externalizable parameters, for Spring framework users.
+ * [METAMODEL-32] - Fixed thread-safety issue in Excel module when tables (sheets) metadata is updated.
+ * [METAMODEL-47] - Fixed issue in Excel of loading schema if query is fired based on metadata from a previous DataContext instance.
+ * [METAMODEL-35] - Improved query rewriting for DB2 when paged queries contain ORDER BY clause.
+ * [METAMODEL-44] - Added an optional method for QueryPostprocessDataContext implementations to do a row-lookup by primary key value.
+ * [METAMODEL-43] - Made CSV datastores skip empty lines in file instead of treating them of rows with null values.
+ * [METAMODEL-39] - Added pooling of active/used Connections and PreparedStatements in JDBC compiled queries.
+ * [METAMODEL-34] - Updated LICENSE file to not include bundled dependencies' licenses.
+ * [METAMODEL-33] - Ensured that Apache Rat plugin for Maven is properly activated.
+ * [METAMODEL-37] - Removed old site sources from project.
+
+ ### Apache MetaModel 4.0.0-incubating
+
+ * [METAMODEL-9] - SalesforceDataSet is throwing exception for insert sql of record having date/time.
+ * [METAMODEL-4] - Use folder name as schema name for file based DataContexts
+ * [METAMODEL-5] - Faster CsvDataContext implementation for single-line values
+ * [METAMODEL-26] - Provide endpoint URL with SalesforceDataContext
+ * Upgraded Apache POI dependency to v. 3.9
+ * Improved fluent Query builder API by adding string parameter based methods for joining tables
+ * Added a utility ObjectInputStream for deserializing legacy MetaModel objects
+ * Performance improvement to CSV reading when values are only single line based
+ * Setting up the project on apache infrastructure
+ * [METAMODEL-10] - Exclude Jackcess dependency (Access module) from MetaModel
+ * Renaming the package hierarchy from org.eobjects.metamodel to org.apache.metamodel
+ * [METAMODEL-29] - Fixed issue in CreateTable builder class, causing it to only support a single column definition
+ * [METAMODEL-30] - Fixed issue with count(*) queries on CSV resources that does not provide a byte stream length