You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by jh...@apache.org on 2016/02/02 19:15:23 UTC
calcite git commit: [CALCITE-1072] CSV adapter incorrectly parses
TIMESTAMP values after noon
Repository: calcite
Updated Branches:
refs/heads/master 446d1122b -> 7b944ade8
[CALCITE-1072] CSV adapter incorrectly parses TIMESTAMP values after noon
Project: http://git-wip-us.apache.org/repos/asf/calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/7b944ade
Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/7b944ade
Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/7b944ade
Branch: refs/heads/master
Commit: 7b944ade81f600e74b43f9ab8ef7ce84f05b3e2a
Parents: 446d112
Author: Julian Hyde <jh...@apache.org>
Authored: Mon Feb 1 20:56:12 2016 -0800
Committer: Julian Hyde <jh...@apache.org>
Committed: Mon Feb 1 20:56:12 2016 -0800
----------------------------------------------------------------------
.../calcite/adapter/csv/CsvEnumerator.java | 10 ++---
.../java/org/apache/calcite/test/CsvTest.java | 40 ++++++++++++++++++++
example/csv/src/test/resources/bug/DATE.csv | 2 +
3 files changed, 47 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/calcite/blob/7b944ade/example/csv/src/main/java/org/apache/calcite/adapter/csv/CsvEnumerator.java
----------------------------------------------------------------------
diff --git a/example/csv/src/main/java/org/apache/calcite/adapter/csv/CsvEnumerator.java b/example/csv/src/main/java/org/apache/calcite/adapter/csv/CsvEnumerator.java
index a534daf..8db969c 100644
--- a/example/csv/src/main/java/org/apache/calcite/adapter/csv/CsvEnumerator.java
+++ b/example/csv/src/main/java/org/apache/calcite/adapter/csv/CsvEnumerator.java
@@ -56,9 +56,9 @@ class CsvEnumerator<E> implements Enumerator<E> {
static {
TimeZone gmt = TimeZone.getTimeZone("GMT");
TIME_FORMAT_DATE = FastDateFormat.getInstance("yyyy-MM-dd", gmt);
- TIME_FORMAT_TIME = FastDateFormat.getInstance("hh:mm:ss", gmt);
- TIME_FORMAT_TIMESTAMP = FastDateFormat.getInstance(
- "yyyy-MM-dd hh:mm:ss", gmt);
+ TIME_FORMAT_TIME = FastDateFormat.getInstance("HH:mm:ss", gmt);
+ TIME_FORMAT_TIMESTAMP =
+ FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss", gmt);
}
public CsvEnumerator(File file, List<CsvFieldType> fieldTypes) {
@@ -96,8 +96,8 @@ class CsvEnumerator<E> implements Enumerator<E> {
* of a CSV file. */
static RelDataType deduceRowType(JavaTypeFactory typeFactory, File file,
List<CsvFieldType> fieldTypes) {
- final List<RelDataType> types = new ArrayList<RelDataType>();
- final List<String> names = new ArrayList<String>();
+ final List<RelDataType> types = new ArrayList<>();
+ final List<String> names = new ArrayList<>();
CSVReader reader = null;
try {
reader = openCsv(file);
http://git-wip-us.apache.org/repos/asf/calcite/blob/7b944ade/example/csv/src/test/java/org/apache/calcite/test/CsvTest.java
----------------------------------------------------------------------
diff --git a/example/csv/src/test/java/org/apache/calcite/test/CsvTest.java b/example/csv/src/test/java/org/apache/calcite/test/CsvTest.java
index 650dce1..4040867 100644
--- a/example/csv/src/test/java/org/apache/calcite/test/CsvTest.java
+++ b/example/csv/src/test/java/org/apache/calcite/test/CsvTest.java
@@ -425,6 +425,46 @@ public class CsvTest {
}
}
+
+ /** Test case for
+ * <a href="https://issues.apache.org/jira/browse/CALCITE-1072">[CALCITE-1072]
+ * CSV adapter incorrectly parses TIMESTAMP values after noon</a>. */
+ @Test public void testDateType2() throws SQLException {
+ Properties info = new Properties();
+ info.put("model", jsonPath("bug"));
+
+ try (Connection connection
+ = DriverManager.getConnection("jdbc:calcite:", info)) {
+ Statement statement = connection.createStatement();
+ ResultSet resultSet =
+ statement.executeQuery("select * from \"DATE\" where EMPNO >= 140");
+ int n = 0;
+ while (resultSet.next()) {
+ ++n;
+ final int empId = resultSet.getInt(1);
+ final String date = resultSet.getString(2);
+ final String time = resultSet.getString(3);
+ final String timestamp = resultSet.getString(4);
+ assertThat(date, is("2015-12-31"));
+ switch (empId) {
+ case 140:
+ assertThat(time, is("07:15:56"));
+ assertThat(timestamp, is("2015-12-31 07:15:56"));
+ break;
+ case 150:
+ assertThat(time, is("13:31:21"));
+ assertThat(timestamp, is("2015-12-31 13:31:21"));
+ break;
+ default:
+ throw new AssertionError();
+ }
+ }
+ assertThat(n, is(2));
+ resultSet.close();
+ statement.close();
+ }
+ }
+
}
// End CsvTest.java
http://git-wip-us.apache.org/repos/asf/calcite/blob/7b944ade/example/csv/src/test/resources/bug/DATE.csv
----------------------------------------------------------------------
diff --git a/example/csv/src/test/resources/bug/DATE.csv b/example/csv/src/test/resources/bug/DATE.csv
index ea5ef35..57a0d65 100644
--- a/example/csv/src/test/resources/bug/DATE.csv
+++ b/example/csv/src/test/resources/bug/DATE.csv
@@ -4,3 +4,5 @@ EMPNO:int,JOINEDAT:date,JOINTIME:time,JOINTIMES:timestamp
110,"2002-05-03","00:00:00","2002-05-03 00:00:00"
120,"2005-09-07","00:00:00","2005-09-07 00:00:00"
130,"2007-01-01","00:00:00","2007-01-01 00:00:00"
+140,"2015-12-31","07:15:56","2015-12-31 07:15:56"
+150,"2015-12-31","13:31:21","2015-12-31 13:31:21"