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 881c026283c7..a1b7af72856b 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.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 List getMetaData() { ConnectionCallback connectionCallback = new ConnectionCallback() { 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 columnsName = new ArrayList<>(); @@ -104,9 +103,10 @@ public Object doInConnection(Connection connection) throws SQLException { public List querySeries(String s, Pair 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 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 1eb79e81684d..156f645b7001 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 @@ static IoTDBConnectionParams parseUrl(String url, Properties info) 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 34a0c3e9a5a8..c5fa18279995 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 void testParseURL() throws IoTDBURLException { 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 void testParseWrongUrl1() throws IoTDBURLException { 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();