You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by xi...@apache.org on 2023/05/24 02:20:56 UTC

[iotdb] branch refactorPackage created (now fbdcba188a6)

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

xiangweiwei pushed a change to branch refactorPackage
in repository https://gitbox.apache.org/repos/asf/iotdb.git


      at fbdcba188a6 change client-cpp and client-py to clients module

This branch includes the following new commits:

     new fbdcba188a6 change client-cpp and client-py to clients module

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[iotdb] 01/01: change client-cpp and client-py to clients module

Posted by xi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

xiangweiwei pushed a commit to branch refactorPackage
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit fbdcba188a62c80d3933692effd1e3eef68e05f2
Author: Alima777 <wx...@gmail.com>
AuthorDate: Wed May 24 10:18:20 2023 +0800

    change client-cpp and client-py to clients module
---
 client-cpp/src/main/CMakeLists.txt                 |  54 -------
 client-cpp/src/test/CMakeLists.txt                 |  63 --------
 client-go                                          |   1 -
 client-py/requirements.txt                         |  26 ----
 client-py/requirements_dev.txt                     |  27 ----
 {client-cpp => client/client-cpp}/README.md        |   0
 {client-cpp => client/client-cpp}/pom.xml          |  27 ++--
 .../client-cpp}/src/assembly/client-cpp.xml        |   0
 .../client-cpp}/src/main/Session.cpp               |   0
 .../client-cpp}/src/main/Session.h                 |   0
 .../client-cpp}/src/test/cpp/sessionIT.cpp         |   0
 .../client-cpp}/src/test/main.cpp                  |   0
 {client-py => client/client-py}/.flake8            |   0
 {client-py => client/client-py}/.gitignore         |   0
 {client-py => client/client-py}/README.md          |   0
 .../client-py}/SessionAlignedTimeseriesExample.py  |   0
 {client-py => client/client-py}/SessionExample.py  |   0
 .../client-py}/iotdb/IoTDBContainer.py             |   0
 {client-py => client/client-py}/iotdb/Session.py   |   0
 {client-py => client/client-py}/iotdb/__init__.py  |   0
 .../client-py}/iotdb/dbapi/Connection.py           |   0
 .../client-py}/iotdb/dbapi/Cursor.py               |   0
 .../client-py}/iotdb/dbapi/Exceptions.py           |   0
 .../client-py}/iotdb/dbapi/__init__.py             |   0
 .../client-py}/iotdb/dbapi/tests/__init__.py       |   0
 .../iotdb/dbapi/tests/test_connection.py           |   0
 .../client-py}/iotdb/dbapi/tests/test_cursor.py    |   0
 .../client-py}/iotdb/sqlalchemy/IoTDBDialect.py    |   0
 .../iotdb/sqlalchemy/IoTDBIdentifierPreparer.py    |   0
 .../iotdb/sqlalchemy/IoTDBSQLCompiler.py           |   0
 .../iotdb/sqlalchemy/IoTDBTypeCompiler.py          |   0
 .../client-py}/iotdb/sqlalchemy/__init__.py        |   0
 .../client-py}/iotdb/sqlalchemy/tests/__init__.py  |   0
 .../iotdb/sqlalchemy/tests/test_dialect.py         |   0
 .../client-py}/iotdb/template/InternalNode.py      |   0
 .../client-py}/iotdb/template/MeasurementNode.py   |   0
 .../client-py}/iotdb/template/Template.py          |   0
 .../client-py}/iotdb/template/TemplateNode.py      |   0
 .../client-py}/iotdb/template/TemplateQueryType.py |   0
 .../client-py}/iotdb/template/__init__.py          |   0
 .../client-py}/iotdb/tsfile/__init__.py            |   0
 .../client-py}/iotdb/tsfile/common/__init__.py     |   0
 .../iotdb/tsfile/common/constant/TsFileConstant.py |   0
 .../iotdb/tsfile/common/constant/__init__.py       |   0
 .../client-py}/iotdb/tsfile/utils/Pair.py          |   0
 .../iotdb/tsfile/utils/ReadWriteIOUtils.py         |   0
 .../client-py}/iotdb/tsfile/utils/__init__.py      |   0
 .../client-py}/iotdb/utils/BitMap.py               |   0
 .../client-py}/iotdb/utils/Field.py                |   0
 .../iotdb/utils/IoTDBConnectionException.py        |   0
 .../client-py}/iotdb/utils/IoTDBConstants.py       |   0
 .../client-py}/iotdb/utils/IoTDBRpcDataSet.py      |   0
 .../client-py}/iotdb/utils/NumpyTablet.py          |   0
 .../client-py}/iotdb/utils/RowRecord.py            |   0
 .../client-py}/iotdb/utils/SessionDataSet.py       |   0
 .../client-py}/iotdb/utils/Tablet.py               |   0
 .../client-py}/iotdb/utils/__init__.py             |   0
 {client-py => client/client-py}/pom.xml            |  17 +-
 {client-py => client/client-py}/pyproject.toml     |   0
 {client-py => client/client-py}/release.sh         |   0
 {client-py => client/client-py}/setup.py           |   0
 {client-py => client/client-py}/tests/__init__.py  |   0
 .../tests/tablet_performance_comparison.py         |   0
 .../client-py}/tests/test_aligned_timeseries.py    |   0
 .../client-py}/tests/test_dataframe.py             |   0
 .../client-py}/tests/test_delete_data.py           |   0
 .../client-py}/tests/test_numpy_tablet.py          |   0
 .../client-py}/tests/test_one_device.py            |   0
 .../client-py}/tests/test_session.py               |   0
 .../client-py}/tests/test_tablet.py                |   0
 .../client-py}/tests/test_template.py              |   0
 {client-py => client/client-py}/tests/test_todf.py |   0
 client/pom.xml                                     |  60 ++++++++
 pom.xml                                            | 171 ++++++++++-----------
 74 files changed, 162 insertions(+), 284 deletions(-)

diff --git a/client-cpp/src/main/CMakeLists.txt b/client-cpp/src/main/CMakeLists.txt
deleted file mode 100644
index 5a044a6383f..00000000000
--- a/client-cpp/src/main/CMakeLists.txt
+++ /dev/null
@@ -1,54 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-CMAKE_MINIMUM_REQUIRED(VERSION 3.7)
-PROJECT(iotdb_session CXX)
-SET(CMAKE_CXX_STANDARD 11)
-SET(CMAKE_CXX_STANDARD_REQUIRED ON)
-SET(CMAKE_POSITION_INDEPENDENT_CODE ON)
-SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -g -O2 ")
-SET(TOOLS_DIR "${CMAKE_SOURCE_DIR}/../../../../compile-tools")
-
-# Add Thrift include directory
-INCLUDE_DIRECTORIES(${TOOLS_DIR}/thrift/target/thrift-0.14.1/lib/cpp/src)
-
-FIND_PACKAGE(Boost REQUIRED)
-IF (DEFINED BOOST_INCLUDEDIR)
-    INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})
-ENDIF()
-
-IF(MSVC)
-    SET(THRIFT_STATIC_LIB "${TOOLS_DIR}/thrift/target/build/lib/Release/thriftmd.lib")
-ELSE()
-    SET(THRIFT_STATIC_LIB "${TOOLS_DIR}/thrift/target/build/lib/libthrift.a")
-ENDIF()
-
-# Add Boost include path for MacOS
-INCLUDE_DIRECTORIES(/usr/local/include)
-
-# Add ./generated-sources-cpp as a Cmake subdirectory
-AUX_SOURCE_DIRECTORY(./generated-sources-cpp SESSION_SRCS)
-
-IF(MSVC)
-    ADD_LIBRARY(iotdb_session ${SESSION_SRCS})
-ELSE()
-    ADD_LIBRARY(iotdb_session SHARED ${SESSION_SRCS})
-ENDIF()
-
-# Link with Thrift static library
-TARGET_LINK_LIBRARIES(iotdb_session ${THRIFT_STATIC_LIB})
diff --git a/client-cpp/src/test/CMakeLists.txt b/client-cpp/src/test/CMakeLists.txt
deleted file mode 100644
index 7d6d18bcd5f..00000000000
--- a/client-cpp/src/test/CMakeLists.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-CMAKE_MINIMUM_REQUIRED(VERSION 3.7)
-INCLUDE( CTest )
-SET(CMAKE_CXX_STANDARD 11)
-SET(CMAKE_CXX_STANDARD_REQUIRED ON)
-SET(TARGET_NAME session_tests)
-SET(TOOLS_DIR "${CMAKE_SOURCE_DIR}/../../../../compile-tools")
-SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -g -O2")
-ENABLE_TESTING()
-
-# Add Boost include path for MacOS
-INCLUDE_DIRECTORIES(/usr/local/include)
-# Add Session related include files
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/../main/generated-sources-cpp)
-# Add Thrift include directory
-INCLUDE_DIRECTORIES(${TOOLS_DIR}/thrift/target/thrift-0.14.1/lib/cpp/src)
-
-find_package(Boost REQUIRED)
-IF (DEFINED BOOST_INCLUDEDIR)
-    include_directories("${Boost_INCLUDE_DIR}")
-ENDIF()
-
-# Link directories are different for Windows and Linux/Mac
-IF(MSVC)
-    LINK_DIRECTORIES(${CMAKE_SOURCE_DIR}/../main/Release)
-    SET(THRIFT_STATIC_LIB "${TOOLS_DIR}/thrift/target/build/lib/Release/thriftmd.lib")
-ELSE()
-    LINK_DIRECTORIES(${CMAKE_SOURCE_DIR}/../main)
-ENDIF()
-
-ADD_EXECUTABLE(${TARGET_NAME} main.cpp cpp/sessionIT.cpp)
-
-# Link with shared library iotdb_session and pthread
-IF(MSVC)
-    TARGET_LINK_LIBRARIES(${TARGET_NAME} iotdb_session ${THRIFT_STATIC_LIB})
-ELSE()
-    TARGET_LINK_LIBRARIES(${TARGET_NAME} iotdb_session pthread)
-ENDIF()
-TARGET_INCLUDE_DIRECTORIES(${TARGET_NAME} PUBLIC ./catch2/)
-
-# Add 'sessionIT' to the project to be run by ctest
-IF(MSVC)
-    ADD_TEST(NAME sessionIT CONFIGURATIONS Release COMMAND ${TARGET_NAME})
-ELSE()
-    ADD_TEST(NAME sessionIT COMMAND ${TARGET_NAME})
-ENDIF()
diff --git a/client-go b/client-go
deleted file mode 160000
index a05323c73a3..00000000000
--- a/client-go
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit a05323c73a3d615efde25d4d3287fcee32ec1292
diff --git a/client-py/requirements.txt b/client-py/requirements.txt
deleted file mode 100644
index 521bb7ed836..00000000000
--- a/client-py/requirements.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-# Pandas Export
-pandas>=1.3.5
-# Testcontainer
-testcontainers==3.3.0
-numpy>=1.21.4
-# SQLAlchemy Dialect
-sqlalchemy == 1.3.20
-sqlalchemy-utils == 0.36.8
\ No newline at end of file
diff --git a/client-py/requirements_dev.txt b/client-py/requirements_dev.txt
deleted file mode 100644
index 304a07c3172..00000000000
--- a/client-py/requirements_dev.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
--r requirements.txt
-# Pytest to run tests
-pytest==7.2.0
-thrift==0.14.1
-flake8==3.9.0
-black==20.8b1
-# For releases
-twine==3.4.1
-wheel==0.38.1
\ No newline at end of file
diff --git a/client-cpp/README.md b/client/client-cpp/README.md
similarity index 100%
rename from client-cpp/README.md
rename to client/client-cpp/README.md
diff --git a/client-cpp/pom.xml b/client/client-cpp/pom.xml
similarity index 95%
rename from client-cpp/pom.xml
rename to client/client-cpp/pom.xml
index 1e9a199d74a..e892349595a 100644
--- a/client-cpp/pom.xml
+++ b/client/client-cpp/pom.xml
@@ -22,7 +22,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>iotdb-clients</artifactId>
         <groupId>org.apache.iotdb</groupId>
         <version>1.2.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
@@ -42,7 +42,7 @@
         <catch2.url>https://github.com/catchorg/Catch2/releases/download/v2.13.7/catch.hpp</catch2.url>
     </properties>
     <modules>
-        <module>../example/client-cpp-example</module>
+        <module>../../example/client-cpp-example</module>
     </modules>
     <dependencies>
         <dependency>
@@ -50,11 +50,6 @@
             <artifactId>client-cpp-tools-thrift</artifactId>
             <version>${project.version}</version>
         </dependency>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>iotdb-thrift-commons</artifactId>
-            <version>${project.version}</version>
-        </dependency>
     </dependencies>
     <profiles>
         <profile>
@@ -241,15 +236,15 @@
                                 <configuration>
                                     <classifier>${os.classifier}</classifier>
                                     <!--
-                                      We need to use a newer version of cmake, so disable downloading. If we do not
-                                      set this to false, a cmake of version 3.7.2 will be downloaded.
-                                    -->
+                    We need to use a newer version of cmake, so disable downloading. If we do not
+                    set this to false, a cmake of version 3.7.2 will be downloaded.
+                  -->
                                     <downloadBinaries>false</downloadBinaries>
                                     <sourcePath>${project.build.directory}/build/main</sourcePath>
                                     <!--
-                                      Path to where the build configuration is generated
-                                      (This directory is then used in the compile step to actually perform the build)
-                                    -->
+                    Path to where the build configuration is generated
+                    (This directory is then used in the compile step to actually perform the build)
+                  -->
                                     <targetPath>${project.build.directory}/build/main</targetPath>
                                     <generator>${cmake.generator}</generator>
                                     <options>
@@ -269,9 +264,9 @@
                                     <classifier>${os.classifier}</classifier>
                                     <config>${cmake.build.type}</config>
                                     <!--
-                                      We need to use a newer version of cmake, so disable downloading
-                                      and tell the plugin where to find that version.
-                                    -->
+                    We need to use a newer version of cmake, so disable downloading
+                    and tell the plugin where to find that version.
+                  -->
                                     <downloadBinaries>false</downloadBinaries>
                                     <!-- The directory where the "generate" step generated the build configuration -->
                                     <projectDirectory>${project.build.directory}/build/main</projectDirectory>
diff --git a/client-cpp/src/assembly/client-cpp.xml b/client/client-cpp/src/assembly/client-cpp.xml
similarity index 100%
rename from client-cpp/src/assembly/client-cpp.xml
rename to client/client-cpp/src/assembly/client-cpp.xml
diff --git a/client-cpp/src/main/Session.cpp b/client/client-cpp/src/main/Session.cpp
similarity index 100%
rename from client-cpp/src/main/Session.cpp
rename to client/client-cpp/src/main/Session.cpp
diff --git a/client-cpp/src/main/Session.h b/client/client-cpp/src/main/Session.h
similarity index 100%
rename from client-cpp/src/main/Session.h
rename to client/client-cpp/src/main/Session.h
diff --git a/client-cpp/src/test/cpp/sessionIT.cpp b/client/client-cpp/src/test/cpp/sessionIT.cpp
similarity index 100%
rename from client-cpp/src/test/cpp/sessionIT.cpp
rename to client/client-cpp/src/test/cpp/sessionIT.cpp
diff --git a/client-cpp/src/test/main.cpp b/client/client-cpp/src/test/main.cpp
similarity index 100%
rename from client-cpp/src/test/main.cpp
rename to client/client-cpp/src/test/main.cpp
diff --git a/client-py/.flake8 b/client/client-py/.flake8
similarity index 100%
rename from client-py/.flake8
rename to client/client-py/.flake8
diff --git a/client-py/.gitignore b/client/client-py/.gitignore
similarity index 100%
rename from client-py/.gitignore
rename to client/client-py/.gitignore
diff --git a/client-py/README.md b/client/client-py/README.md
similarity index 100%
rename from client-py/README.md
rename to client/client-py/README.md
diff --git a/client-py/SessionAlignedTimeseriesExample.py b/client/client-py/SessionAlignedTimeseriesExample.py
similarity index 100%
rename from client-py/SessionAlignedTimeseriesExample.py
rename to client/client-py/SessionAlignedTimeseriesExample.py
diff --git a/client-py/SessionExample.py b/client/client-py/SessionExample.py
similarity index 100%
rename from client-py/SessionExample.py
rename to client/client-py/SessionExample.py
diff --git a/client-py/iotdb/IoTDBContainer.py b/client/client-py/iotdb/IoTDBContainer.py
similarity index 100%
rename from client-py/iotdb/IoTDBContainer.py
rename to client/client-py/iotdb/IoTDBContainer.py
diff --git a/client-py/iotdb/Session.py b/client/client-py/iotdb/Session.py
similarity index 100%
rename from client-py/iotdb/Session.py
rename to client/client-py/iotdb/Session.py
diff --git a/client-py/iotdb/__init__.py b/client/client-py/iotdb/__init__.py
similarity index 100%
rename from client-py/iotdb/__init__.py
rename to client/client-py/iotdb/__init__.py
diff --git a/client-py/iotdb/dbapi/Connection.py b/client/client-py/iotdb/dbapi/Connection.py
similarity index 100%
rename from client-py/iotdb/dbapi/Connection.py
rename to client/client-py/iotdb/dbapi/Connection.py
diff --git a/client-py/iotdb/dbapi/Cursor.py b/client/client-py/iotdb/dbapi/Cursor.py
similarity index 100%
rename from client-py/iotdb/dbapi/Cursor.py
rename to client/client-py/iotdb/dbapi/Cursor.py
diff --git a/client-py/iotdb/dbapi/Exceptions.py b/client/client-py/iotdb/dbapi/Exceptions.py
similarity index 100%
rename from client-py/iotdb/dbapi/Exceptions.py
rename to client/client-py/iotdb/dbapi/Exceptions.py
diff --git a/client-py/iotdb/dbapi/__init__.py b/client/client-py/iotdb/dbapi/__init__.py
similarity index 100%
rename from client-py/iotdb/dbapi/__init__.py
rename to client/client-py/iotdb/dbapi/__init__.py
diff --git a/client-py/iotdb/dbapi/tests/__init__.py b/client/client-py/iotdb/dbapi/tests/__init__.py
similarity index 100%
rename from client-py/iotdb/dbapi/tests/__init__.py
rename to client/client-py/iotdb/dbapi/tests/__init__.py
diff --git a/client-py/iotdb/dbapi/tests/test_connection.py b/client/client-py/iotdb/dbapi/tests/test_connection.py
similarity index 100%
rename from client-py/iotdb/dbapi/tests/test_connection.py
rename to client/client-py/iotdb/dbapi/tests/test_connection.py
diff --git a/client-py/iotdb/dbapi/tests/test_cursor.py b/client/client-py/iotdb/dbapi/tests/test_cursor.py
similarity index 100%
rename from client-py/iotdb/dbapi/tests/test_cursor.py
rename to client/client-py/iotdb/dbapi/tests/test_cursor.py
diff --git a/client-py/iotdb/sqlalchemy/IoTDBDialect.py b/client/client-py/iotdb/sqlalchemy/IoTDBDialect.py
similarity index 100%
rename from client-py/iotdb/sqlalchemy/IoTDBDialect.py
rename to client/client-py/iotdb/sqlalchemy/IoTDBDialect.py
diff --git a/client-py/iotdb/sqlalchemy/IoTDBIdentifierPreparer.py b/client/client-py/iotdb/sqlalchemy/IoTDBIdentifierPreparer.py
similarity index 100%
rename from client-py/iotdb/sqlalchemy/IoTDBIdentifierPreparer.py
rename to client/client-py/iotdb/sqlalchemy/IoTDBIdentifierPreparer.py
diff --git a/client-py/iotdb/sqlalchemy/IoTDBSQLCompiler.py b/client/client-py/iotdb/sqlalchemy/IoTDBSQLCompiler.py
similarity index 100%
rename from client-py/iotdb/sqlalchemy/IoTDBSQLCompiler.py
rename to client/client-py/iotdb/sqlalchemy/IoTDBSQLCompiler.py
diff --git a/client-py/iotdb/sqlalchemy/IoTDBTypeCompiler.py b/client/client-py/iotdb/sqlalchemy/IoTDBTypeCompiler.py
similarity index 100%
rename from client-py/iotdb/sqlalchemy/IoTDBTypeCompiler.py
rename to client/client-py/iotdb/sqlalchemy/IoTDBTypeCompiler.py
diff --git a/client-py/iotdb/sqlalchemy/__init__.py b/client/client-py/iotdb/sqlalchemy/__init__.py
similarity index 100%
rename from client-py/iotdb/sqlalchemy/__init__.py
rename to client/client-py/iotdb/sqlalchemy/__init__.py
diff --git a/client-py/iotdb/sqlalchemy/tests/__init__.py b/client/client-py/iotdb/sqlalchemy/tests/__init__.py
similarity index 100%
rename from client-py/iotdb/sqlalchemy/tests/__init__.py
rename to client/client-py/iotdb/sqlalchemy/tests/__init__.py
diff --git a/client-py/iotdb/sqlalchemy/tests/test_dialect.py b/client/client-py/iotdb/sqlalchemy/tests/test_dialect.py
similarity index 100%
rename from client-py/iotdb/sqlalchemy/tests/test_dialect.py
rename to client/client-py/iotdb/sqlalchemy/tests/test_dialect.py
diff --git a/client-py/iotdb/template/InternalNode.py b/client/client-py/iotdb/template/InternalNode.py
similarity index 100%
rename from client-py/iotdb/template/InternalNode.py
rename to client/client-py/iotdb/template/InternalNode.py
diff --git a/client-py/iotdb/template/MeasurementNode.py b/client/client-py/iotdb/template/MeasurementNode.py
similarity index 100%
rename from client-py/iotdb/template/MeasurementNode.py
rename to client/client-py/iotdb/template/MeasurementNode.py
diff --git a/client-py/iotdb/template/Template.py b/client/client-py/iotdb/template/Template.py
similarity index 100%
rename from client-py/iotdb/template/Template.py
rename to client/client-py/iotdb/template/Template.py
diff --git a/client-py/iotdb/template/TemplateNode.py b/client/client-py/iotdb/template/TemplateNode.py
similarity index 100%
rename from client-py/iotdb/template/TemplateNode.py
rename to client/client-py/iotdb/template/TemplateNode.py
diff --git a/client-py/iotdb/template/TemplateQueryType.py b/client/client-py/iotdb/template/TemplateQueryType.py
similarity index 100%
rename from client-py/iotdb/template/TemplateQueryType.py
rename to client/client-py/iotdb/template/TemplateQueryType.py
diff --git a/client-py/iotdb/template/__init__.py b/client/client-py/iotdb/template/__init__.py
similarity index 100%
rename from client-py/iotdb/template/__init__.py
rename to client/client-py/iotdb/template/__init__.py
diff --git a/client-py/iotdb/tsfile/__init__.py b/client/client-py/iotdb/tsfile/__init__.py
similarity index 100%
rename from client-py/iotdb/tsfile/__init__.py
rename to client/client-py/iotdb/tsfile/__init__.py
diff --git a/client-py/iotdb/tsfile/common/__init__.py b/client/client-py/iotdb/tsfile/common/__init__.py
similarity index 100%
rename from client-py/iotdb/tsfile/common/__init__.py
rename to client/client-py/iotdb/tsfile/common/__init__.py
diff --git a/client-py/iotdb/tsfile/common/constant/TsFileConstant.py b/client/client-py/iotdb/tsfile/common/constant/TsFileConstant.py
similarity index 100%
rename from client-py/iotdb/tsfile/common/constant/TsFileConstant.py
rename to client/client-py/iotdb/tsfile/common/constant/TsFileConstant.py
diff --git a/client-py/iotdb/tsfile/common/constant/__init__.py b/client/client-py/iotdb/tsfile/common/constant/__init__.py
similarity index 100%
rename from client-py/iotdb/tsfile/common/constant/__init__.py
rename to client/client-py/iotdb/tsfile/common/constant/__init__.py
diff --git a/client-py/iotdb/tsfile/utils/Pair.py b/client/client-py/iotdb/tsfile/utils/Pair.py
similarity index 100%
rename from client-py/iotdb/tsfile/utils/Pair.py
rename to client/client-py/iotdb/tsfile/utils/Pair.py
diff --git a/client-py/iotdb/tsfile/utils/ReadWriteIOUtils.py b/client/client-py/iotdb/tsfile/utils/ReadWriteIOUtils.py
similarity index 100%
rename from client-py/iotdb/tsfile/utils/ReadWriteIOUtils.py
rename to client/client-py/iotdb/tsfile/utils/ReadWriteIOUtils.py
diff --git a/client-py/iotdb/tsfile/utils/__init__.py b/client/client-py/iotdb/tsfile/utils/__init__.py
similarity index 100%
rename from client-py/iotdb/tsfile/utils/__init__.py
rename to client/client-py/iotdb/tsfile/utils/__init__.py
diff --git a/client-py/iotdb/utils/BitMap.py b/client/client-py/iotdb/utils/BitMap.py
similarity index 100%
rename from client-py/iotdb/utils/BitMap.py
rename to client/client-py/iotdb/utils/BitMap.py
diff --git a/client-py/iotdb/utils/Field.py b/client/client-py/iotdb/utils/Field.py
similarity index 100%
rename from client-py/iotdb/utils/Field.py
rename to client/client-py/iotdb/utils/Field.py
diff --git a/client-py/iotdb/utils/IoTDBConnectionException.py b/client/client-py/iotdb/utils/IoTDBConnectionException.py
similarity index 100%
rename from client-py/iotdb/utils/IoTDBConnectionException.py
rename to client/client-py/iotdb/utils/IoTDBConnectionException.py
diff --git a/client-py/iotdb/utils/IoTDBConstants.py b/client/client-py/iotdb/utils/IoTDBConstants.py
similarity index 100%
rename from client-py/iotdb/utils/IoTDBConstants.py
rename to client/client-py/iotdb/utils/IoTDBConstants.py
diff --git a/client-py/iotdb/utils/IoTDBRpcDataSet.py b/client/client-py/iotdb/utils/IoTDBRpcDataSet.py
similarity index 100%
rename from client-py/iotdb/utils/IoTDBRpcDataSet.py
rename to client/client-py/iotdb/utils/IoTDBRpcDataSet.py
diff --git a/client-py/iotdb/utils/NumpyTablet.py b/client/client-py/iotdb/utils/NumpyTablet.py
similarity index 100%
rename from client-py/iotdb/utils/NumpyTablet.py
rename to client/client-py/iotdb/utils/NumpyTablet.py
diff --git a/client-py/iotdb/utils/RowRecord.py b/client/client-py/iotdb/utils/RowRecord.py
similarity index 100%
rename from client-py/iotdb/utils/RowRecord.py
rename to client/client-py/iotdb/utils/RowRecord.py
diff --git a/client-py/iotdb/utils/SessionDataSet.py b/client/client-py/iotdb/utils/SessionDataSet.py
similarity index 100%
rename from client-py/iotdb/utils/SessionDataSet.py
rename to client/client-py/iotdb/utils/SessionDataSet.py
diff --git a/client-py/iotdb/utils/Tablet.py b/client/client-py/iotdb/utils/Tablet.py
similarity index 100%
rename from client-py/iotdb/utils/Tablet.py
rename to client/client-py/iotdb/utils/Tablet.py
diff --git a/client-py/iotdb/utils/__init__.py b/client/client-py/iotdb/utils/__init__.py
similarity index 100%
rename from client-py/iotdb/utils/__init__.py
rename to client/client-py/iotdb/utils/__init__.py
diff --git a/client-py/pom.xml b/client/client-py/pom.xml
similarity index 87%
rename from client-py/pom.xml
rename to client/client-py/pom.xml
index 39687b7e123..a2bd79ba9e4 100644
--- a/client-py/pom.xml
+++ b/client/client-py/pom.xml
@@ -23,7 +23,7 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.iotdb</groupId>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>iotdb-clients</artifactId>
         <version>1.2.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
@@ -36,11 +36,6 @@
             <artifactId>iotdb-thrift</artifactId>
             <version>${project.version}</version>
         </dependency>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>iotdb-thrift-commons</artifactId>
-            <version>${project.version}</version>
-        </dependency>
     </dependencies>
     <build>
         <plugins>
@@ -92,16 +87,16 @@
                         </goals>
                         <configuration>
                             <encoding>utf-8</encoding>
-                            <outputDirectory>${basedir}/iotdb/thrift/</outputDirectory>
+                            <outputDirectory>iotdb/thrift</outputDirectory>
                             <resources>
                                 <resource>
-                                    <directory>${basedir}/../thrift/target/generated-sources-python/iotdb/thrift/</directory>
+                                    <directory>${basedir}/../../thrift/target/generated-sources-python/iotdb/thrift/</directory>
                                     <includes>
                                         <include>**/rpc/*</include>
                                     </includes>
                                 </resource>
                                 <resource>
-                                    <directory>${basedir}/../thrift-commons/target/generated-sources-python/iotdb/thrift/</directory>
+                                    <directory>${basedir}/../../thrift-commons/target/generated-sources-python/iotdb/thrift/</directory>
                                 </resource>
                             </resources>
                         </configuration>
@@ -116,10 +111,10 @@
                         </goals>
                         <configuration>
                             <encoding>utf-8</encoding>
-                            <outputDirectory>${basedir}/</outputDirectory>
+                            <outputDirectory/>
                             <resources>
                                 <resource>
-                                    <directory>${basedir}/..</directory>
+                                    <directory>${basedir}/../..</directory>
                                     <includes>
                                         <include>LICENSE</include>
                                     </includes>
diff --git a/client-py/pyproject.toml b/client/client-py/pyproject.toml
similarity index 100%
rename from client-py/pyproject.toml
rename to client/client-py/pyproject.toml
diff --git a/client-py/release.sh b/client/client-py/release.sh
similarity index 100%
rename from client-py/release.sh
rename to client/client-py/release.sh
diff --git a/client-py/setup.py b/client/client-py/setup.py
similarity index 100%
rename from client-py/setup.py
rename to client/client-py/setup.py
diff --git a/client-py/tests/__init__.py b/client/client-py/tests/__init__.py
similarity index 100%
rename from client-py/tests/__init__.py
rename to client/client-py/tests/__init__.py
diff --git a/client-py/tests/tablet_performance_comparison.py b/client/client-py/tests/tablet_performance_comparison.py
similarity index 100%
rename from client-py/tests/tablet_performance_comparison.py
rename to client/client-py/tests/tablet_performance_comparison.py
diff --git a/client-py/tests/test_aligned_timeseries.py b/client/client-py/tests/test_aligned_timeseries.py
similarity index 100%
rename from client-py/tests/test_aligned_timeseries.py
rename to client/client-py/tests/test_aligned_timeseries.py
diff --git a/client-py/tests/test_dataframe.py b/client/client-py/tests/test_dataframe.py
similarity index 100%
rename from client-py/tests/test_dataframe.py
rename to client/client-py/tests/test_dataframe.py
diff --git a/client-py/tests/test_delete_data.py b/client/client-py/tests/test_delete_data.py
similarity index 100%
rename from client-py/tests/test_delete_data.py
rename to client/client-py/tests/test_delete_data.py
diff --git a/client-py/tests/test_numpy_tablet.py b/client/client-py/tests/test_numpy_tablet.py
similarity index 100%
rename from client-py/tests/test_numpy_tablet.py
rename to client/client-py/tests/test_numpy_tablet.py
diff --git a/client-py/tests/test_one_device.py b/client/client-py/tests/test_one_device.py
similarity index 100%
rename from client-py/tests/test_one_device.py
rename to client/client-py/tests/test_one_device.py
diff --git a/client-py/tests/test_session.py b/client/client-py/tests/test_session.py
similarity index 100%
rename from client-py/tests/test_session.py
rename to client/client-py/tests/test_session.py
diff --git a/client-py/tests/test_tablet.py b/client/client-py/tests/test_tablet.py
similarity index 100%
rename from client-py/tests/test_tablet.py
rename to client/client-py/tests/test_tablet.py
diff --git a/client-py/tests/test_template.py b/client/client-py/tests/test_template.py
similarity index 100%
rename from client-py/tests/test_template.py
rename to client/client-py/tests/test_template.py
diff --git a/client-py/tests/test_todf.py b/client/client-py/tests/test_todf.py
similarity index 100%
rename from client-py/tests/test_todf.py
rename to client/client-py/tests/test_todf.py
diff --git a/client/pom.xml b/client/pom.xml
new file mode 100644
index 00000000000..4abc3339dbb
--- /dev/null
+++ b/client/pom.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.iotdb</groupId>
+        <artifactId>iotdb-parent</artifactId>
+        <version>1.2.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+    <packaging>pom</packaging>
+    <artifactId>iotdb-clients</artifactId>
+    <name>IoTDB Clients</name>
+    <modules>
+        <module>client-cpp</module>
+        <module>client-py</module>
+    </modules>
+    <build>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-compiler-plugin</artifactId>
+                    <configuration>
+                        <source>8</source>
+                        <target>8</target>
+                    </configuration>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.iotdb</groupId>
+                <artifactId>iotdb-thrift-commons</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+</project>
diff --git a/pom.xml b/pom.xml
index b224191718e..9cb1c222142 100644
--- a/pom.xml
+++ b/pom.xml
@@ -108,9 +108,8 @@
         <module>node-commons</module>
         <module>confignode</module>
         <module>zeppelin-interpreter</module>
-        <module>client-py</module>
+        <module>client</module>
         <module>compile-tools</module>
-        <module>client-cpp</module>
         <module>metrics</module>
         <!-- Will remove integration at 2023.1.23-->
         <module>integration</module>
@@ -209,11 +208,11 @@
         <io.airlift.slice.version>0.41</io.airlift.slice.version>
         <dep.airlift.version>200</dep.airlift.version>
         <!-- do not upgrade this package unless we have to...
-        Some experiments(https://github.com/jixuan1989/DependencyTest/blob/main/src/main/java/timecho/exp/JolTimeCost.java):
-        jol v0.2, scan tsfile package and calculate the classes size, time cost: 600ms
-        jol v0.4: time cost is 980ms,
-        jol v0.14, time cost is 1600ms
-        -->
+    Some experiments(https://github.com/jixuan1989/DependencyTest/blob/main/src/main/java/timecho/exp/JolTimeCost.java):
+    jol v0.2, scan tsfile package and calculate the classes size, time cost: 600ms
+    jol v0.4: time cost is 980ms,
+    jol v0.14, time cost is 1600ms
+    -->
         <jol-core.version>0.2</jol-core.version>
         <jackson-core-asl.version>1.9.13</jackson-core-asl.version>
         <mqtt-client.version>1.12</mqtt-client.version>
@@ -240,16 +239,16 @@
         <codegen.phase>generate-sources</codegen.phase>
     </properties>
     <!--
-        if we claim dependencies in dependencyManagement, then we do not claim
-        their version in sub-project's pom, but we have to claim themselves again
-        in sub-projects
-    -->
+      if we claim dependencies in dependencyManagement, then we do not claim
+      their version in sub-project's pom, but we have to claim themselves again
+      in sub-projects
+  -->
     <dependencyManagement>
         <dependencies>
             <!--
-                in the subprojects, you have to claim logback again, because maybe
-                someone in your dependences uses log4j lib.
-            -->
+          in the subprojects, you have to claim logback again, because maybe
+          someone in your dependences uses log4j lib.
+      -->
             <dependency>
                 <groupId>ch.qos.logback</groupId>
                 <artifactId>logback-classic</artifactId>
@@ -440,10 +439,10 @@
                 </exclusions>
             </dependency>
             <!--            <dependency>
-                <groupId>org.javassist</groupId>
-                <artifactId>javassist</artifactId>
-                <version>3.24.1-GA</version>
-            </dependency>-->
+          <groupId>org.javassist</groupId>
+          <artifactId>javassist</artifactId>
+          <version>3.24.1-GA</version>
+      </dependency>-->
             <dependency>
                 <groupId>org.mockito</groupId>
                 <artifactId>mockito-core</artifactId>
@@ -680,7 +679,7 @@
         <pluginManagement>
             <plugins>
                 <!-- using `mvn -N versions:update-child-modules` can update the version
-                of child modules to what their parent claims -->
+        of child modules to what their parent claims -->
                 <plugin>
                     <groupId>org.codehaus.mojo</groupId>
                     <artifactId>versions-maven-plugin</artifactId>
@@ -695,18 +694,18 @@
                     <configuration>
                         <excludePackageNames>*thrift*</excludePackageNames>
                         <!--
-                          This will suppress the generation of a hidden timestamp at the top of each generated html page
-                          and hopefully let the site generation nod to too big updates every time.
-                        -->
+              This will suppress the generation of a hidden timestamp at the top of each generated html page
+              and hopefully let the site generation nod to too big updates every time.
+            -->
                         <notimestamp>true</notimestamp>
                         <!--Don't fail the build, just because there were issues in the JavaDoc generation.-->
                         <failOnError>false</failOnError>
                     </configuration>
                 </plugin>
                 <!--
-                  We need to increase the memory available to tests as we were
-                  getting out-of-memory errors when building on windows machines.
-                -->
+          We need to increase the memory available to tests as we were
+          getting out-of-memory errors when building on windows machines.
+        -->
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-surefire-plugin</artifactId>
@@ -715,8 +714,8 @@
                     </configuration>
                 </plugin>
                 <!--
-                    Plugin for doing the code analysis.
-                -->
+            Plugin for doing the code analysis.
+        -->
                 <plugin>
                     <groupId>org.sonarsource.scanner.maven</groupId>
                     <artifactId>sonar-maven-plugin</artifactId>
@@ -870,10 +869,10 @@
                 </dependencies>
             </plugin>
             <!--
-                      Strange things usually happen if you run with a too low Java version.
-                      This plugin not only checks the minimum java version of 1.8, but also
-                      checks all dependencies (and transitive dependencies) for reported CVEs.
-                    -->
+                Strange things usually happen if you run with a too low Java version.
+                This plugin not only checks the minimum java version of 1.8, but also
+                checks all dependencies (and transitive dependencies) for reported CVEs.
+              -->
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-enforcer-plugin</artifactId>
@@ -894,28 +893,28 @@
                         </goals>
                     </execution>
                     <!--
-                        Fails the build if classes are included from multiple
-                        artifacts and these are not identical.
-                    -->
+              Fails the build if classes are included from multiple
+              artifacts and these are not identical.
+          -->
                     <!--execution>
-                        <id>enforce-ban-duplicate-classes</id>
-                        <goals>
-                            <goal>enforce</goal>
-                        </goals>
-                        <configuration>
-                            <rules>
-                                <banDuplicateClasses>
-                                    <scopes>
-                                        <scope>compile</scope>
-                                        <scope>provided</scope>
-                                    </scopes>
-                                    <findAllDuplicates>true</findAllDuplicates>
-                                    <ignoreWhenIdentical>true</ignoreWhenIdentical>
-                                </banDuplicateClasses>
-                            </rules>
-                            <fail>true</fail>
-                        </configuration>
-                    </execution-->
+              <id>enforce-ban-duplicate-classes</id>
+              <goals>
+                  <goal>enforce</goal>
+              </goals>
+              <configuration>
+                  <rules>
+                      <banDuplicateClasses>
+                          <scopes>
+                              <scope>compile</scope>
+                              <scope>provided</scope>
+                          </scopes>
+                          <findAllDuplicates>true</findAllDuplicates>
+                          <ignoreWhenIdentical>true</ignoreWhenIdentical>
+                      </banDuplicateClasses>
+                  </rules>
+                  <fail>true</fail>
+              </configuration>
+          </execution-->
                     <!-- Make sure no dependencies are used for which known vulnerabilities exist. -->
                     <execution>
                         <id>vulnerability-checks</id>
@@ -951,14 +950,14 @@
                 </dependencies>
             </plugin>
             <!--
-              Even if Maven transitively pulls in dependencies, relying on these can
-              quite often cause hard to find problems. So it's a good practice to make
-              sure everything directly required is also directly added as a dependency.
-              On the other side adding unused dependency only over-complicates the
-              the dependency graph, so the maven-dependency-plugin checks we depend on
-              what we need and only that and that runtime dependencies are correctly
-              imported with runtime scope.
-            -->
+        Even if Maven transitively pulls in dependencies, relying on these can
+        quite often cause hard to find problems. So it's a good practice to make
+        sure everything directly required is also directly added as a dependency.
+        On the other side adding unused dependency only over-complicates the
+        the dependency graph, so the maven-dependency-plugin checks we depend on
+        what we need and only that and that runtime dependencies are correctly
+        imported with runtime scope.
+      -->
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-dependency-plugin</artifactId>
@@ -1011,9 +1010,9 @@
                 </configuration>
             </plugin>
             <!--
-              Check if all files contain Apache headers in them.
-              Ignore this plugin, we use license-maven-plugin to check apache header.
-            -->
+        Check if all files contain Apache headers in them.
+        Ignore this plugin, we use license-maven-plugin to check apache header.
+      -->
             <plugin>
                 <groupId>org.apache.rat</groupId>
                 <artifactId>apache-rat-plugin</artifactId>
@@ -1051,8 +1050,8 @@
                 </executions>
             </plugin>
             <!--
-              Generate the legally required text files in the jars
-            -->
+        Generate the legally required text files in the jars
+      -->
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-remote-resources-plugin</artifactId>
@@ -1151,9 +1150,9 @@
             </build>
         </profile>
         <!--
-          A set of profiles defining the different properties needed to download and run thrift
-          They are automatically activated depending on the OS you are using.
-        -->
+      A set of profiles defining the different properties needed to download and run thrift
+      They are automatically activated depending on the OS you are using.
+    -->
         <profile>
             <id>windows</id>
             <activation>
@@ -1237,7 +1236,7 @@
             <properties>
                 <maven.compiler.release>8</maven.compiler.release>
                 <!-- change to 1.15.0 will modify many codes (all are javadocs), we change it to 1.15.0
-                until: iotdb decides to do not support jdk8-->
+        until: iotdb decides to do not support jdk8-->
                 <google.java.format.version>1.7</google.java.format.version>
             </properties>
             <dependencies>
@@ -1257,7 +1256,7 @@
             </dependencies>
         </profile>
         <!-- Add argLine for Java 16 and above, due to [JEP 396: Strongly Encapsulate JDK Internals by Default]
-          (https://openjdk.java.net/jeps/396) -->
+      (https://openjdk.java.net/jeps/396) -->
         <profile>
             <id>java-16-and-above</id>
             <activation>
@@ -1270,14 +1269,14 @@
             </properties>
         </profile>
         <!--
-          Self activating profile, that activates itself as soon as a "src/main/thrift" directory is found.
-          The different plugins here download the thrift executable matching the current os, make that
-          executable (on mac and unix/linux) and run the code generation.
+      Self activating profile, that activates itself as soon as a "src/main/thrift" directory is found.
+      The different plugins here download the thrift executable matching the current os, make that
+      executable (on mac and unix/linux) and run the code generation.
 
-          Note to the Download: The download-maven-plugin checks if a resource is previously downloaded
-          and only downloads each file once. It caches downloaded files in:
-          {maven local repo}/.cache/download-maven-plugin
-        -->
+      Note to the Download: The download-maven-plugin checks if a resource is previously downloaded
+      and only downloads each file once. It caches downloaded files in:
+      {maven local repo}/.cache/download-maven-plugin
+    -->
         <profile>
             <id>thrift-generation</id>
             <activation>
@@ -1395,10 +1394,10 @@
                                     <goal>single</goal>
                                 </goals>
                                 <!-- heads up: combine.self in the following is highlighted
-                                    as an error in Eclipse's xml editor view.
-                                    Just ignore that.
-                                    See  https://issues.apache.org/jira/browse/MNG-5454  sigh.
-                                 -->
+                    as an error in Eclipse's xml editor view.
+                    Just ignore that.
+                    See  https://issues.apache.org/jira/browse/MNG-5454  sigh.
+                 -->
                                 <configuration combine.self="append">
                                     <finalName>apache-iotdb-${project.version}</finalName>
                                     <archive>
@@ -1412,8 +1411,8 @@
                         </executions>
                     </plugin>
                     <!--
-                      Create SHA512 checksum files for the release artifacts.
-                    -->
+            Create SHA512 checksum files for the release artifacts.
+          -->
                     <plugin>
                         <groupId>net.nicoulaj.maven.plugins</groupId>
                         <artifactId>checksum-maven-plugin</artifactId>
@@ -1461,7 +1460,7 @@
             <build>
                 <plugins>
                     <!-- Jacoco is a code coverage analysis plugin when tests run.
-                    (not a static code analysis tool)-->
+          (not a static code analysis tool)-->
                     <plugin>
                         <groupId>org.jacoco</groupId>
                         <artifactId>jacoco-maven-plugin</artifactId>
@@ -1478,7 +1477,7 @@
                                     <element>BUNDLE</element>
                                     <limits>  
                                         <!-- Cover methodes >=30%. (the plugin does not support
-                                        ignore getter and setter and toString etc..) -->
+                    ignore getter and setter and toString etc..) -->
                                         <limit implementation="org.jacoco.report.check.Limit">
                                             <counter>METHOD</counter>
                                             <value>COVEREDRATIO</value>
@@ -1611,7 +1610,7 @@
         </profile>
         <!-- upload code coverage report to coveralls.io-->
         <!-- to enable coveralls locally, you need to get the repoToken from https://coveralls.io/github/apache/iotdb.
-             use `mvn post-integration-test -Pcode-coverage -DrepoToken=TOKEN`-->
+         use `mvn post-integration-test -Pcode-coverage -DrepoToken=TOKEN`-->
         <profile>
             <id>enforce</id>
             <properties>