This is an automated email from the ASF dual-hosted git repository.

jfeinauer pushed a commit to branch bugfix/several-fixes
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git

commit 799ad95b9baf0e80f248a2d43985b83e6f2ec679
Author: Julian Feinauer <[email protected]>
AuthorDate: Sun Mar 1 20:10:37 2020 +0100

    Several fixes.
    - Fixed an issue in Utils and added test
    - Fixed BasicDaoImpl (query was invalid) in IoTDB-Grafana
---
 .../iotdb/web/grafana/dao/impl/BasicDaoImpl.java   | 32 +++++++++++-----------
 .../src/main/java/org/apache/iotdb/jdbc/Utils.java | 11 +++++---
 .../test/java/org/apache/iotdb/jdbc/UtilsTest.java | 17 +++++++++---
 3 files changed, 36 insertions(+), 24 deletions(-)

diff --git 
a/grafana/src/main/java/org/apache/iotdb/web/grafana/dao/impl/BasicDaoImpl.java 
b/grafana/src/main/java/org/apache/iotdb/web/grafana/dao/impl/BasicDaoImpl.java
index 881c026..a1b7af7 100644
--- 
a/grafana/src/main/java/org/apache/iotdb/web/grafana/dao/impl/BasicDaoImpl.java
+++ 
b/grafana/src/main/java/org/apache/iotdb/web/grafana/dao/impl/BasicDaoImpl.java
@@ -18,12 +18,22 @@
  */
 package org.apache.iotdb.web.grafana.dao.impl;
 
+import org.apache.iotdb.tsfile.utils.Pair;
+import org.apache.iotdb.web.grafana.bean.TimeValues;
+import org.apache.iotdb.web.grafana.dao.BasicDao;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.ConnectionCallback;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.RowMapper;
+import org.springframework.stereotype.Repository;
+
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.sql.Connection;
-import java.sql.DatabaseMetaData;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.sql.Statement;
@@ -31,17 +41,6 @@ import java.time.ZonedDateTime;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Properties;
-import org.apache.iotdb.jdbc.Constant;
-import org.apache.iotdb.tsfile.utils.Pair;
-import org.apache.iotdb.web.grafana.bean.TimeValues;
-import org.apache.iotdb.web.grafana.dao.BasicDao;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.jdbc.core.ConnectionCallback;
-import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.jdbc.core.RowMapper;
-import org.springframework.stereotype.Repository;
 
 /**
  * Created by dell on 2017/7/17.
@@ -86,7 +85,7 @@ public class BasicDaoImpl implements BasicDao {
     ConnectionCallback<Object> connectionCallback = new 
ConnectionCallback<Object>() {
       public Object doInConnection(Connection connection) throws SQLException {
         Statement statement = connection.createStatement();
-        statement.execute("show timeseries" + "root *");
+        statement.execute("show timeseries root.*");
         ResultSet resultSet = statement.getResultSet();
         logger.info("Start to get timeseries");
         List<String> columnsName = new ArrayList<>();
@@ -104,9 +103,10 @@ public class BasicDaoImpl implements BasicDao {
   public List<TimeValues> querySeries(String s, Pair<ZonedDateTime, 
ZonedDateTime> timeRange) {
     Long from = zonedCovertToLong(timeRange.left);
     Long to = zonedCovertToLong(timeRange.right);
-    String sql = "SELECT " + s.substring(s.lastIndexOf('.') + 1) + " FROM 
root."
-        + s.substring(0, s.lastIndexOf('.')) + " WHERE time > " + from * 
TIMESTAMP_RADIX
-        + " and time < " + to * TIMESTAMP_RADIX;
+    // How many rows will the result have?
+    String sql = String.format("SELECT %s FROM root.%s WHERE time > %d and 
time < %d",
+        s.substring(s.lastIndexOf('.') + 1), s.substring(0, 
s.lastIndexOf('.')),
+        from * TIMESTAMP_RADIX, to * TIMESTAMP_RADIX);
     logger.info(sql);
     List<TimeValues> rows = null;
     try {
diff --git a/jdbc/src/main/java/org/apache/iotdb/jdbc/Utils.java 
b/jdbc/src/main/java/org/apache/iotdb/jdbc/Utils.java
index 1eb79e8..156f645 100644
--- a/jdbc/src/main/java/org/apache/iotdb/jdbc/Utils.java
+++ b/jdbc/src/main/java/org/apache/iotdb/jdbc/Utils.java
@@ -40,10 +40,13 @@ public class Utils {
       return params;
     }
     boolean isUrlLegal = false;
-    String subURL = url.substring(Config.IOTDB_URL_PREFIX.length());
-    Matcher matcher = URL_PATTERN.matcher(subURL);
-    if(matcher.matches()) {
-      isUrlLegal = true;
+    Matcher matcher = null;
+    if (url.startsWith(Config.IOTDB_URL_PREFIX)) {
+      String subURL = url.substring(Config.IOTDB_URL_PREFIX.length());
+      matcher = URL_PATTERN.matcher(subURL);
+      if (matcher.matches()) {
+        isUrlLegal = true;
+      }
     }
     if (!isUrlLegal) {
       throw new IoTDBURLException("Error url format, url should be 
jdbc:iotdb://anything:port/ or jdbc:iotdb://anything:port");
diff --git a/jdbc/src/test/java/org/apache/iotdb/jdbc/UtilsTest.java 
b/jdbc/src/test/java/org/apache/iotdb/jdbc/UtilsTest.java
index 34a0c3e..c5fa182 100644
--- a/jdbc/src/test/java/org/apache/iotdb/jdbc/UtilsTest.java
+++ b/jdbc/src/test/java/org/apache/iotdb/jdbc/UtilsTest.java
@@ -53,10 +53,10 @@ public class UtilsTest {
     IoTDBConnectionParams params = Utils
         .parseUrl(String.format(Config.IOTDB_URL_PREFIX + "%s:%s/", host1, 
port),
             properties);
-    assertEquals(params.getHost(), host1);
-    assertEquals(params.getPort(), port);
-    assertEquals(params.getUsername(), userName);
-    assertEquals(params.getPassword(), userPwd);
+    assertEquals(host1, params.getHost());
+    assertEquals(port, params.getPort());
+    assertEquals(userName, params.getUsername());
+    assertEquals(userPwd, params.getPassword());
 
     params = Utils.parseUrl(String.format(Config.IOTDB_URL_PREFIX + "%s:%s", 
host1, port), properties);
     assertEquals(params.getHost(), host1);
@@ -71,6 +71,15 @@ public class UtilsTest {
     Utils.parseUrl("jdbc:iotdb//test6667", properties);
   }
 
+  @Test
+  public void testParseDomainName() throws IoTDBURLException {
+    Properties properties = new Properties();
+    final IoTDBConnectionParams params = 
Utils.parseUrl("jdbc:iotdb://test:6667", properties);
+
+    assertEquals("test", params.getHost());
+    assertEquals(6667, params.getPort());
+  }
+
   @Test(expected = IoTDBURLException.class)
   public void testParseWrongUrl2() throws IoTDBURLException {
     Properties properties = new Properties();

Reply via email to