Skip to content

Commit 7fb5413

Browse files
authored
Merge branch 'master' into force_ci/support_schema_evolution
2 parents 8790bf7 + 68ca0a7 commit 7fb5413

39 files changed

Lines changed: 2198 additions & 143 deletions

File tree

.dockerignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,5 @@
2020
*
2121
!distribution
2222
!docker/src/main/DockerCompose/start-1c1d.sh
23+
!docker/src/main/ainode-build-data/
24+
!docker/src/main/ainode-entrypoint.sh

.github/workflows/multi-language-client.yml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ jobs:
4545
fail-fast: false
4646
max-parallel: 15
4747
matrix:
48-
os: [ubuntu-22.04, ubuntu-24.04, windows-2022, windows-latest, macos-latest]
48+
os: [ubuntu-22.04, ubuntu-24.04, windows-2022, windows-latest, windows-2025-vs2026, macos-latest]
4949
runs-on: ${{ matrix.os}}
5050

5151
steps:
@@ -96,7 +96,11 @@ jobs:
9696
# Explicitly using "install" instead of package in order to be sure we're using libs built on this machine
9797
# (was causing problems on windows, but could cause problem on linux, when updating the thrift module)
9898
run: |
99-
./mvnw clean verify -P with-cpp -pl iotdb-client/client-cpp,example/client-cpp-example -am
99+
if [[ "${{ matrix.os }}" == "windows-2025-vs2026" ]]; then
100+
./mvnw clean verify -P with-cpp -pl iotdb-client/client-cpp,example/client-cpp-example -am -Dcmake.generator="Visual Studio 18 2026"
101+
else
102+
./mvnw clean verify -P with-cpp -pl iotdb-client/client-cpp,example/client-cpp-example -am
103+
fi
100104
- name: Upload Artifact
101105
if: failure()
102106
uses: actions/upload-artifact@v4

.mvn/wrapper/maven-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,5 @@
1515
# specific language governing permissions and limitations
1616
# under the License.
1717

18-
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.6/apache-maven-3.9.6-bin.zip
18+
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.12/apache-maven-3.9.12-bin.zip
1919
wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.3.2/maven-wrapper-3.3.2.jar

RELEASE_NOTES.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,53 @@
1919
2020
-->
2121

22+
# Apache IoTDB 2.0.7
23+
24+
## Features & Improvements
25+
26+
- Others: Remove risky RPC interfaces.
27+
- Others: Remove JEXL functions.
28+
- Others: Check naming when creating a Pipe.
29+
- Others: Change the default client RPC service address to 127.0.0.1.
30+
- Others: Modify code to make internal services bind to the value specified by `dn_internal_address`instead of the default address.
31+
32+
## Bugs
33+
- Fixed an issue in the partition table automatic deletion logic: Only TTL configured at the DB level takes effect, using the maximum TTL value within the DB.
34+
- ...
35+
36+
# Apache IoTDB 2.0.6
37+
38+
## Features & Improvements
39+
- Data Query: Supports table model query and write-back functions.
40+
- Data Query: The MATCH RECOGNIZE feature for table models supports aggregate functions to capture continuous data for analysis and calculation.
41+
- Data Query: Added built-in scalar functions - bit manipulation functions for table models.
42+
- Data Query: Added pushdown-enabled EXTRACT time function for table models.
43+
- Others: Fixed security vulnerabilities CVE-2025-12183, CVE-2025-66566 and CVE-2025-11226.
44+
- ...
45+
## Bugs
46+
- Fixed the issue where executing queries with CASE WHEN throws an internal server error.
47+
- Fixed the issue where creating a view succeeds but querying the view fails when the tree model database name is the same as the device name in tree-to-table scenarios.
48+
- Fixed the issue where the automatic database creation function fails subsequently if a database is deleted after successful table model data synchronization, and the database is not restarted.
49+
- Fixed the issue where modifying the password of a user that failed to be created throws an internal server error.
50+
- Fixed the issue where an error is thrown when using the IF PERMITTED clause to modify sequence encoding and compression settings.
51+
- Fixed the issue where querying BLOB data types via the tree model RESTAPI interface /rest/v2/query returns garbled results.
52+
- Fixed the issue where incorrect exception information is displayed when checking pipe status after creating a pipe in a table model that only contains tree-to-table views.
53+
- Fixed the issue where the number of server connections keeps increasing when using a user without MAINTAIN permission (non-root user in table models) in a Session.
54+
- ...
55+
56+
# Apache IoTDB 2.0.5
57+
58+
## Features & Improvements
59+
- Data Query: Support manual creation of tree-to-table views
60+
- Data Query: Table model adds window functions
61+
- Data Query: Table model adds the aggregate function approx_most_frequent
62+
- Data Query: Table model JOIN function expansion, supporting LEFT & RIGHT JOIN, ASOF LEFT JOIN
63+
- Data Query: Table model supports row pattern recognition, enabling capture of continuous data for analysis and calculation
64+
- Storage Management: Table model adds multiple system tables, such as: VIEWS (table view information), MODELS (model information), etc.
65+
- AI Management: AINode adds two built-in models: Timer-XL and Timer-Sundial
66+
- AI Management: AINode supports inference functions for tree models and table models
67+
- ...
68+
2269
# Apache IoTDB 2.0.4
2370

2471
## Features & Improvements

docker/ReadMe.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ e.g.
5353
./do-docker-build.sh -t standalone -v 1.0.0
5454
# for ainode, start from 2.0.5
5555
./do-docker-build.sh -t ainode -v 2.0.5-SNAPSHOT
56+
# for ainode, start from 2.0.8
57+
cd src/main
58+
./build-ainode.sh -v 2.0.8-SNAPSHOT -d /data/ainode
5659
```
5760
Notice:
5861
Make directory of src/main/target and put the zip file downloading from the official download page.
@@ -91,6 +94,23 @@ Please download `docker-compose-ainode.yml` in `docker/src/main/DockerCompose` f
9194
docker compose -f docker-compose-ainode.yml up -d
9295
```
9396

97+
Start from v2.0.7, run
98+
```shell
99+
docker run -d \
100+
--name iotdb-ainode \
101+
--network host \
102+
-p 10810:10810 \
103+
-p 8080:8080 \
104+
-e AIN_SEED_CONFIG_NODE=127.0.0.1:10710 \
105+
-e AIN_RPC_ADDRESS=127.0.0.1 \
106+
-e AIN_RPC_PORT=10810 \
107+
-e AIN_CLUSTER_INGRESS_ADDRESS=127.0.0.1 \
108+
-e AIN_CLUSTER_INGRESS_PORT=6667 \
109+
-e AIN_CLUSTER_INGRESS_USERNAME=root \
110+
-e AIN_CLUSTER_INGRESS_PASSWORD=root \
111+
apache/iotdb:2.0.7-SNAPSHOT-ainode
112+
```
113+
94114
## Quick start
95115
We provide `docker-compose-cluster-1c1d1a.yml` in `docker/src/main/DockerCompose`. Downloading this yaml file, both standalone and ainode docker first. Subsequently, you can easily obtain a IoTDB cluster, which consists of a ConfigNode, a DataNode and a AINode, in your local machine.
96116

docker/src/main/DockerCompose/docker-compose-ainode.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,12 @@ services:
4040
- ain_cluster_ingress_username=root
4141
- ain_cluster_ingress_password=root
4242
- ain_cluster_ingress_time_zone=UTC+8
43+
ports:
44+
- "10810:10810"
4345
volumes:
4446
- ainode-data:/ainode/data
4547
- ./logs/ainode:/ainode/logs
48+
restart: unless-stopped
4649
# - ./lib/ainode:/ainode/lib # Uncomment for rolling upgrade
4750
# Note: Some environments set an extremely high container nofile limit (~2^30 = 1073741824).
4851
# This can make the startup step "Checking whether the ports are already occupied..." appear to hang (lsof slow).

docker/src/main/Dockerfile-1.0.0-ainode

Lines changed: 0 additions & 66 deletions
This file was deleted.
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
#
2+
# Licensed to the Apache Software Foundation (ASF) under one
3+
# or more contributor license agreements. See the NOTICE file
4+
# distributed with this work for additional information
5+
# regarding copyright ownership. The ASF licenses this file
6+
# to you under the Apache License, Version 2.0 (the
7+
# "License"); you may not use this file except in compliance
8+
# with the License. You may obtain a copy of the License at
9+
#
10+
# http://www.apache.org/licenses/LICENSE-2.0
11+
#
12+
# Unless required by applicable law or agreed to in writing,
13+
# software distributed under the License is distributed on an
14+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15+
# KIND, either express or implied. See the License for the
16+
# specific language governing permissions and limitations
17+
# under the License.
18+
#
19+
20+
FROM python:3.11-slim-bullseye
21+
22+
# Build argument: Version number (required)
23+
ARG VERSION
24+
25+
# Fail build if VERSION is not provided
26+
RUN if [ -z "$VERSION" ]; then echo "ERROR: VERSION build argument is required" && exit 1; fi
27+
28+
# Set environment variables
29+
ENV IOTDB_HOME=/ainode \
30+
PATH=$PATH:/ainode/sbin \
31+
DEBIAN_FRONTEND=noninteractive
32+
33+
# Install system dependencies
34+
RUN apt-get update && apt-get install -y --no-install-recommends \
35+
unzip \
36+
procps \
37+
netcat-openbsd \
38+
curl \
39+
vim \
40+
tzdata \
41+
&& apt-get clean \
42+
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
43+
44+
# Set working directory
45+
WORKDIR /tmp
46+
47+
# Copy and extract the distribution package
48+
# Note: Build context is project root (../../.. relative to this Dockerfile)
49+
COPY distribution/target/apache-iotdb-${VERSION}-ainode-bin.zip /tmp/
50+
51+
# Extract and rename directory
52+
RUN unzip -q apache-iotdb-${VERSION}-ainode-bin.zip \
53+
&& mv apache-iotdb-${VERSION}-ainode-bin /ainode \
54+
&& rm -f apache-iotdb-${VERSION}-ainode-bin.zip \
55+
&& mkdir -p /ainode/logs /ainode/data/ainode
56+
57+
# Copy data directory from build server to image
58+
# The build script copies /data/ainode to docker/src/main/ainode-build-data/ before build
59+
# Note: The trailing slash is important - it copies contents not the directory itself
60+
COPY docker/src/main/ainode-build-data/ /ainode/data/ainode/
61+
62+
63+
# Set directory permissions
64+
RUN chmod -R 755 /ainode/sbin \
65+
&& chmod +x /ainode/sbin/*.sh \
66+
&& chmod -R 777 /ainode/data /ainode/logs
67+
68+
# Health check configuration
69+
HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
70+
CMD curl -f http://localhost:8080/health || exit 1
71+
72+
# Expose ports
73+
# 10810: AINode RPC port (ain_inference_rpc_port)
74+
# 8080: Health check / management port
75+
EXPOSE 10810 8080
76+
77+
# Copy entrypoint script (relative to project root)
78+
COPY docker/src/main/ainode-entrypoint.sh /ainode/sbin/
79+
RUN chmod +x /ainode/sbin/ainode-entrypoint.sh
80+
81+
# Set working directory
82+
WORKDIR /ainode
83+
84+
# Use entrypoint script as startup command
85+
ENTRYPOINT ["/ainode/sbin/ainode-entrypoint.sh"]
86+
87+
# Default command (can be overridden)
88+
CMD ["start"]

0 commit comments

Comments
 (0)