This is an automated email from the ASF dual-hosted git repository. rong pushed a commit to branch IOTDB-5195 in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 84ec585cb63c747af4c498004f73d0314e3f1dd9 Author: Steve Yurong Su <[email protected]> AuthorDate: Thu Dec 15 15:32:31 2022 +0800 rpc framework --- pom.xml | 2 + thrift-udf/pom.xml | 84 ++++++++++++++++++++++ thrift-udf/src/main/thrift/udf.thrift | 21 ++++++ udf-py/.gitignore | 1 + udf-py/iotdb/udf/protocol/__init__.py | 16 +++++ udf-py/pom.xml | 131 ++++++++++++++++++++++++++++++++++ 6 files changed, 255 insertions(+) diff --git a/pom.xml b/pom.xml index 7b20282b23..6ee1b621fc 100644 --- a/pom.xml +++ b/pom.xml @@ -86,6 +86,7 @@ <module>thrift-confignode</module> <module>thrift-iot-consensus</module> <module>thrift-influxdb</module> + <module>thrift-udf</module> <module>service-rpc</module> <module>jdbc</module> <module>influxdb-protocol</module> @@ -118,6 +119,7 @@ <module>library-udf</module> <module>schema-engine-rocksdb</module> <module>udf-api</module> + <module>udf-py</module> <module>trigger-api</module> <module>rewrite-tsfile-tool</module> <module>external-api</module> diff --git a/thrift-udf/pom.xml b/thrift-udf/pom.xml new file mode 100644 index 0000000000..b2261cdf19 --- /dev/null +++ b/thrift-udf/pom.xml @@ -0,0 +1,84 @@ +<?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.0.1-SNAPSHOT</version> + <relativePath>../pom.xml</relativePath> + </parent> + <artifactId>iotdb-thrift-udf</artifactId> + <name>rpc-thrift-udf</name> + <description>RPC (Thrift) framework for UDF.</description> + <dependencies> + <dependency> + <groupId>org.apache.thrift</groupId> + <artifactId>libthrift</artifactId> + </dependency> + </dependencies> + <build> + <plugins> + <!-- generate thrift source code --> + <plugin> + <groupId>org.apache.thrift.tools</groupId> + <artifactId>maven-thrift-plugin</artifactId> + <version>0.1.11</version> + <executions> + <execution> + <id>generate-thrift-udf-sources-py</id> + <!-- Move from generate-sources to generate-resources to avoid double executions --> + <phase>generate-resources</phase> + <goals> + <goal>compile</goal> + </goals> + <configuration> + <generator>py</generator> + <thriftExecutable>${thrift.exec.absolute.path}</thriftExecutable> + <thriftSourceRoot>${basedir}/src/main/thrift</thriftSourceRoot> + <outputDirectory>${basedir}/target/generated-sources-python/</outputDirectory> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <version>3.2.0</version> + <executions> + <execution> + <id>add-source</id> + <phase>generate-sources</phase> + <goals> + <goal>add-source</goal> + </goals> + <configuration> + <sources> + <source>${project.build.directory}/generated-sources/thrift</source> + </sources> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> diff --git a/thrift-udf/src/main/thrift/udf.thrift b/thrift-udf/src/main/thrift/udf.thrift new file mode 100644 index 0000000000..9e79d40944 --- /dev/null +++ b/thrift-udf/src/main/thrift/udf.thrift @@ -0,0 +1,21 @@ +/* + * 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. + */ + +namespace java org.apache.iotdb.db.mpp.transformation.dag.udf.protocol.rpc +namespace py iotdb.udf.protocol.rpc diff --git a/udf-py/.gitignore b/udf-py/.gitignore index 237854a3c0..b4a693de4b 100644 --- a/udf-py/.gitignore +++ b/udf-py/.gitignore @@ -1,3 +1,4 @@ +/iotdb/udf/protocol/rpc/ # generated by Pypi /build/ /dist/ diff --git a/udf-py/iotdb/udf/protocol/__init__.py b/udf-py/iotdb/udf/protocol/__init__.py new file mode 100644 index 0000000000..b74423fa90 --- /dev/null +++ b/udf-py/iotdb/udf/protocol/__init__.py @@ -0,0 +1,16 @@ +# 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. diff --git a/udf-py/pom.xml b/udf-py/pom.xml new file mode 100644 index 0000000000..3ffa101c9e --- /dev/null +++ b/udf-py/pom.xml @@ -0,0 +1,131 @@ +<?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.0.1-SNAPSHOT</version> + <relativePath>../pom.xml</relativePath> + </parent> + <artifactId>iotdb-python-udf</artifactId> + <name>python-udf</name> + <description>Python UDF of IoTDB.</description> + <dependencies> + <dependency> + <groupId>org.apache.iotdb</groupId> + <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> + <properties> + <thrift.exec.absolute.path>${project.parent.basedir}/tools/${thrift.executable}</thrift.exec.absolute.path> + </properties> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-checkstyle-plugin</artifactId> + <configuration> + <skip>true</skip> + </configuration> + </plugin> + <!-- clean thrift folder --> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-clean-plugin</artifactId> + <version>2.4.1</version> + <configuration> + <filesets> + <fileset> + <directory>iotdb/udf/protocol</directory> + <includes> + <include>rpc/</include> + </includes> + <followSymlinks>false</followSymlinks> + </fileset> + <fileset> + <directory>./</directory> + <includes> + <include>LICENSE</include> + </includes> + </fileset> + </filesets> + </configuration> + </plugin> + <!-- fill thrift folder --> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-resources-plugin</artifactId> + <version>2.4.3</version> + <configuration> + <encoding>${project.build.sourceEncoding}</encoding> + </configuration> + <executions> + <execution> + <id>copy-thrift-python-resources</id> + <!-- here the phase you need --> + <phase>generate-sources</phase> + <goals> + <goal>copy-resources</goal> + </goals> + <configuration> + <encoding>utf-8</encoding> + <outputDirectory>${basedir}/iotdb/udf/protocol/rpc/</outputDirectory> + <resources> + <resource> + <directory>${basedir}/../thrift-udf/target/generated-sources-python/iotdb/udf/protocol/rpc/</directory> + </resource> + </resources> + </configuration> + </execution> + <!-- Copy License --> + <execution> + <id>copy-pypi-file-resources</id> + <!-- here the phase you need --> + <phase>generate-sources</phase> + <goals> + <goal>copy-resources</goal> + </goals> + <configuration> + <encoding>utf-8</encoding> + <outputDirectory>${basedir}/</outputDirectory> + <resources> + <resource> + <directory>${basedir}/..</directory> + <includes> + <include>LICENSE</include> + </includes> + </resource> + </resources> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project>
