历史版本下载:https://archive.apache.org/dist/iotdb/
# Linux > sudo sysctl -w net.core.somaxconn=65535 # FreeBSD or Darwin > sudo sysctl -w kern.ipc.somaxconn=65535
如何从 v0.13.x 升级到 v1.0.x?
TsDataType
替换为 Type
,将 org.apache.iotdb.tsfile.utils.Binary
替换成 org.apache.iotdb.udf.api.type.Binary
,并重新进行打包装载流程。在之前版本的语法约定中,为了保持兼容性,我们引入了一些会引起歧义的规定。为了避免歧义,我们设计了新的语法约定,本章将说明旧语法约定中存在的问题,以及我们做出改动的原因。
在0.13及之前版本中,不使用反引号引用的标识符(包括路径结点)允许为实数(实数路径名在 SELECT
子句中需要用反引号括起),且允许包含部分特殊字符,在 1.0 版本中,不使用反引号引用的标识符不允许为实数,不使用反引号引用的标识符,只允许包含字母、中文字符、下划线。
在旧语法约定中,什么时候需要给路径结点名添加引号,用单双引号还是反引号的规则较为复杂,在新的语法约定中我们做了统一,具体可以参考本文档的相关章节。
在之前的语法约定中,路径结点名被定义成标识符,但是当需要在路径结点名中使用路径分隔符 . 时,需要使用单引号或者双引号引用。这与标识符使用反引号引用的规则相悖。
# 在之前的语法约定中,如果需要创建时间序列 root.sg.`www.baidu.com`,需要使用下述语句: create root.sg.'www.baidu.com' with datatype=BOOLEAN, encoding=PLAIN # 该语句创建的时间序列实际为 root.sg.'www.baidu.com',即引号一并存入,该时间序列的三个结点为{"root","sg","'www.baidu.com'"} # 在查询语句中,如果希望查询该时间序列的数据,查询语句如下: select 'www.baidu.com' from root.sg;
而在 1.0 版本的语法约定中,特殊路径结点名统一使用反引号引用:
# 在现有语法约定中,如果需要创建时间序列 root.sg.`www.baidu.com`,语法如下: create root.sg.`www.baidu.com` with datatype = BOOLEAN, encoding = PLAIN # 查询该时间序列可以通过如下语句: select `www.baidu.com` from root.sg;
在旧语法约定中,在路径结点名中使用单引号 ' 和 双引号 " 时,需要使用反斜杠 \ 进行转义,且反斜杠会被视为路径结点名的一部分存入,而在使用其它标识符时没有这个限制,造成了不统一。
# 创建时间序列 root.sg.\"a create timeseries root.sg.`\"a` with datatype=TEXT,encoding=PLAIN; # 查询时间序列 root.sg.\"a select `\"a` from root.sg; +-----------------------------+-----------+ | Time|root.sg.\"a| +-----------------------------+-----------+ |1970-01-01T08:00:00.004+08:00| test| +-----------------------------+-----------+
在新语法约定中,特殊路径结点名统一使用反引号进行引用,在路径结点名中使用单双引号无须添加反斜杠转义,使用反引号需要双写,具体可以参考新语法约定路径结点名章节。
在0.13版本中,对于非SQL接口中使用路径结点的限制如下:
checkTimeseriesExists
接口,由于内部调用了 IoTDB-SQL 接口,因此需要和 SQL 语法规范保持一致,并且针对 JAVA 字符串进行反转义。1.0 版本中,对非SQL接口中使用路径结点的限制增强:
经参数传入的路径或路径前缀中的节点: 在 SQL 语句中需要使用反引号(`)进行转义的,均需要使用反引号进行转义。
语法说明相关代码示例可以参考:example/session/src/main/java/org/apache/iotdb/SyntaxConventionRelatedExample.java
在之前版本中,使用字符串时,SQL 和 Session 接口存在不一致的情况。比如使用 SQL 插入 Text 类型数据时,会对字符串进行反转义处理,而使用 Session 接口时不会进行这样的处理,存在不一致。在新的语法约定中,我们统一不对字符串做反转义处理,存入什么内容,在查询时就会得到什么内容(字符串内部使用单双引号的规则可以参考本文档字符串常量章节)。
下面是旧语法约定中不一致的例子:
使用 Session 的 insertRecord 方法向时序 root.sg.a 中插入数据
// session 插入 String deviceId = "root.sg"; List<String> measurements = new ArrayList<>(); measurements.add("a"); String[] values = new String[]{"\\\\", "\\t", "\\\"", "\\u96d5"}; for(int i = 0; i <= values.length; i++){ List<String> valueList = new ArrayList<>(); valueList.add(values[i]); session.insertRecord(deviceId, i + 1, measurements, valueList); }
查询 root.sg.a 的数据,可以看到没有做反转义处理:
// 查询结果 +-----------------------------+---------+ | Time|root.sg.a| +-----------------------------+---------+ |1970-01-01T08:00:00.001+08:00| \\| |1970-01-01T08:00:00.002+08:00| \t| |1970-01-01T08:00:00.003+08:00| \"| |1970-01-01T08:00:00.004+08:00| \u96d5| +-----------------------------+---------+
而使用 SQL 向 root.sg.a 中插入数据
# SQL 插入 insert into root.sg(time, a) values(1, "\\") insert into root.sg(time, a) values(2, "\t") insert into root.sg(time, a) values(3, "\"") insert into root.sg(time, a) values(4, "\u96d5")
查询 root.sg.a 的数据,可以看到字符串进行了反转义:
// 查询结果 +-----------------------------+---------+ | Time|root.sg.a| +-----------------------------+---------+ |1970-01-01T08:00:00.001+08:00| \| |1970-01-01T08:00:00.002+08:00| | |1970-01-01T08:00:00.003+08:00| "| |1970-01-01T08:00:00.004+08:00| 雕| +-----------------------------+---------+
如何升级小版本 (例如,从 v0.12.4 to v0.12.5)?
如何从 v0.12.x 升级到 v0.13.x?
SET SYSTEM TO READONLY
命令,并停止新数据的写入。flush
命令,确保关闭所有的 TsFile 文件。data/system/schema/system.properties
文件中的 iotdb_version
是 0.13.x
. 如果不是,请手动修改为0.13.x
。SELECT
子句中路径结点名如果是实数,需要使用反引号引起,用于与表达式中的常数区分。如语句 “select 123 + `123` from root.sg”,前一个123表示常数,后一个 `123`会和 root.sg 拼接,表示路径 root.sg.`123`。如何从 v0.11.x 或 v0.10.x 升级到 v0.12.x?
flush
,确保关闭所有的 TsFile 文件。All files upgraded successfully!
后代表升级成功。如何从 v0.10.x 升级到 v0.11.x?
flush
,确保关闭所有的 TsFile 文件。如何从 v0.9.x 升级到 v0.10.x?
flush
,确保关闭所有的 TsFile 文件。如何从 0.8.x 升级到 v0.9.x?
在 Archive repository 查看所有版本
除了我们的发行版,我们还在 *.sha512 文件中提供了 sha512 散列,并在 *.asc 文件中提供了加密签名。 Apache Software Foundation 提供了广泛的教程来 验证哈希和签名,您可以使用任何这些发布签名的 KEYS 来遵循这些哈希和签名。