mirror of
https://github.com/apache/impala.git
synced 2025-12-19 18:12:08 -05:00
This patch mainly implement the querying of paimon data table
through JNI based scanner.
Features implemented:
- support column pruning.
The partition pruning and predicate push down will be submitted
as the third part of the patch.
We implemented this by treating the paimon table as normal
unpartitioned table. When querying paimon table:
- PaimonScanNode will decide paimon splits need to be scanned,
and then transfer splits to BE do the jni-based scan operation.
- We also collect the required columns that need to be scanned,
and pass the columns to Scanner for column pruning. This is
implemented by passing the field ids of the columns to BE,
instead of column position to support schema evolution.
- In the original implementation, PaimonJniScanner will directly
pass paimon row object to BE, and call corresponding paimon row
field accessor, which is a java method to convert row fields to
impala row batch tuples. We find it is slow due to overhead of
JVM method calling.
To minimize the overhead, we refashioned the implementation,
the PaimonJniScanner will convert the paimon row batches to
arrow recordbatch, which stores data in offheap region of
impala JVM. And PaimonJniScanner will pass the arrow offheap
record batch memory pointer to the BE backend.
BE PaimonJniScanNode will directly read data from JVM offheap
region, and convert the arrow record batch to impala row batch.
The benchmark shows the later implementation is 2.x better
than the original implementation.
The lifecycle of arrow row batch is mainly like this:
the arrow row batch is generated in FE,and passed to BE.
After the record batch is imported to BE successfully,
BE will be in charge of freeing the row batch.
There are two free paths: the normal path, and the
exception path. For the normal path, when the arrow batch
is totally consumed by BE, BE will call jni to fetch the next arrow
batch. For this case, the arrow batch is freed automatically.
For the exceptional path, it happends when query is cancelled, or memory
failed to allocate. For these corner cases, arrow batch is freed in the
method close if it is not totally consumed by BE.
Current supported impala data types for query includes:
- BOOLEAN
- TINYINT
- SMALLINT
- INTEGER
- BIGINT
- FLOAT
- DOUBLE
- STRING
- DECIMAL(P,S)
- TIMESTAMP
- CHAR(N)
- VARCHAR(N)
- BINARY
- DATE
TODO:
- Patches pending submission:
- Support tpcds/tpch data-loading
for paimon data table.
- Virtual Column query support for querying
paimon data table.
- Query support with time travel.
- Query support for paimon meta tables.
- WIP:
- Snapshot incremental read.
- Complex type query support.
- Native paimon table scanner, instead of
jni based.
Testing:
- Create tests table in functional_schema_template.sql
- Add TestPaimonScannerWithLimit in test_scanners.py
- Add test_paimon_query in test_paimon.py.
- Already passed the tpcds/tpch test for paimon table, due to the
testing table data is currently generated by spark, and it is
not supported by impala now, we have to do this since hive
doesn't support generating paimon table for dynamic-partitioned
tables. we plan to submit a separate patch for tpcds/tpch data
loading and associated tpcds/tpch query tests.
- JVM Offheap memory leak tests, have run looped tpch tests for
1 day, no obvious offheap memory increase is observed,
offheap memory usage is within 10M.
Change-Id: Ie679a89a8cc21d52b583422336b9f747bdf37384
Reviewed-on: http://gerrit.cloudera.org:8080/23613
Tested-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com>
Reviewed-by: Zoltan Borok-Nagy <boroknagyz@cloudera.com>
Reviewed-by: Riza Suminto <riza.suminto@cloudera.com>
1222 lines
43 KiB
XML
1222 lines
43 KiB
XML
<?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/maven-v4_0_0.xsd">
|
||
<parent>
|
||
<groupId>org.apache.impala</groupId>
|
||
<artifactId>impala-parent</artifactId>
|
||
<version>5.0.0-SNAPSHOT</version>
|
||
<relativePath>../java/pom.xml</relativePath>
|
||
</parent>
|
||
<modelVersion>4.0.0</modelVersion>
|
||
<artifactId>impala-frontend</artifactId>
|
||
<packaging>jar</packaging>
|
||
|
||
<name>Apache Impala Query Engine Frontend</name>
|
||
|
||
<dependencies>
|
||
<dependency>
|
||
<groupId>org.apache.impala</groupId>
|
||
<artifactId>impala-executor-deps</artifactId>
|
||
<version>${project.version}</version>
|
||
<type>pom</type>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>org.apache.impala</groupId>
|
||
<artifactId>query-event-hook-api</artifactId>
|
||
<version>${impala.query.event.hook.api.version}</version>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>org.apache.impala</groupId>
|
||
<artifactId>impala-data-source-api</artifactId>
|
||
<version>${impala.extdatasrc.api.version}</version>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>org.apache.hadoop</groupId>
|
||
<artifactId>hadoop-auth</artifactId>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>org.apache.hadoop</groupId>
|
||
<artifactId>hadoop-hdfs</artifactId>
|
||
<version>${hadoop.version}</version>
|
||
<exclusions>
|
||
<exclusion>
|
||
<!-- IMPALA-9108: Avoid pulling in leveldbjni, which is unneeded. -->
|
||
<groupId>org.fusesource.leveldbjni</groupId>
|
||
<artifactId>*</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.eclipse.jetty</groupId>
|
||
<artifactId>jetty-util-ajax</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.eclipse.jetty</groupId>
|
||
<artifactId>jetty-server</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>com.sun.jersey</groupId>
|
||
<artifactId>jersey-server</artifactId>
|
||
</exclusion>
|
||
</exclusions>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>org.apache.hudi</groupId>
|
||
<artifactId>hudi-hadoop-mr</artifactId>
|
||
<version>${hudi.version}</version>
|
||
<exclusions>
|
||
<exclusion>
|
||
<!-- IMPALA-9647 (re: CVE-2014-3577, CVE-2015-5262) -->
|
||
<groupId>org.apache.httpcomponents</groupId>
|
||
<artifactId>fluent-hc</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<!-- Avoid pulling in rocksdb, which is unneeded. -->
|
||
<groupId>org.rocksdb</groupId>
|
||
<artifactId>rocksdbjni</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>com.esotericsoftware</groupId>
|
||
<artifactId>kryo-shaded</artifactId>
|
||
</exclusion>
|
||
</exclusions>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>org.apache.ranger</groupId>
|
||
<artifactId>ranger-plugins-common</artifactId>
|
||
<version>${ranger.version}</version>
|
||
<exclusions>
|
||
<!-- Ranger jar also includes solr artifacts which we not exclude here since
|
||
they are used during the instantiation of RangerAuthorizationFactory
|
||
(See IMPALA-10644 for more details. -->
|
||
<!-- We need to exclude ranger-plugins-audit here, or the build will fail
|
||
to resolve dependencies for cruise-control-metrics-reporter, which is
|
||
unneeded and not uploaded to toolchain. -->
|
||
<exclusion>
|
||
<groupId>com.cloudera</groupId>
|
||
<artifactId>*</artifactId>
|
||
</exclusion>
|
||
</exclusions>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>org.apache.ranger</groupId>
|
||
<artifactId>ranger-plugins-audit</artifactId>
|
||
<version>${ranger.version}</version>
|
||
<exclusions>
|
||
<!-- Ranger jar also includes solr artifacts which we not exclude here since
|
||
they are used during the instantiation of RangerAuthorizationFactory
|
||
(See IMPALA-10644 for more details. -->
|
||
<exclusion>
|
||
<groupId>com.cloudera</groupId>
|
||
<artifactId>*</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.apache.kafka</groupId>
|
||
<artifactId>*</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.apache.shiro</groupId>
|
||
<artifactId>shiro-core</artifactId>
|
||
</exclusion>
|
||
<!-- We exclude hive-exec which this jar includes because hive-exec
|
||
brings with it tons of other unnecessary dependencies including thrift 0.9.3
|
||
which can cause build failures.
|
||
-->
|
||
<exclusion>
|
||
<groupId>org.apache.hive</groupId>
|
||
<artifactId>hive-exec</artifactId>
|
||
</exclusion>
|
||
<!-- Exclude the aws-java-sdk-bundle dependency because the Impala minimal
|
||
version of this dependency is used instead. -->
|
||
<exclusion>
|
||
<groupId>com.amazonaws</groupId>
|
||
<artifactId>aws-java-sdk-bundle</artifactId>
|
||
</exclusion>
|
||
</exclusions>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>javax.ws.rs</groupId>
|
||
<artifactId>javax.ws.rs-api</artifactId>
|
||
<version>2.1.1</version>
|
||
<scope>test</scope>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>org.apache.impala</groupId>
|
||
<artifactId>yarn-extras</artifactId>
|
||
<version>${yarn-extras.version}</version>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>org.apache.parquet</groupId>
|
||
<artifactId>parquet-hadoop-bundle</artifactId>
|
||
<version>${parquet.version}</version>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>org.apache.avro</groupId>
|
||
<artifactId>avro</artifactId>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>org.apache.orc</groupId>
|
||
<artifactId>orc-core</artifactId>
|
||
<version>${orc.version}</version>
|
||
<exclusions>
|
||
<exclusion>
|
||
<groupId>org.apache.hive</groupId>
|
||
<artifactId>*</artifactId>
|
||
</exclusion>
|
||
<!-- Rely on unshaded jars we already include rather than client jars. -->
|
||
<exclusion>
|
||
<groupId>org.apache.hadoop</groupId>
|
||
<artifactId>hadoop-client-api</artifactId>
|
||
</exclusion>
|
||
</exclusions>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>org.apache.commons</groupId>
|
||
<artifactId>commons-lang3</artifactId>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>net.sourceforge.czt.dev</groupId>
|
||
<artifactId>java-cup</artifactId>
|
||
<version>0.11-a-czt02-cdh</version>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>org.apache.thrift</groupId>
|
||
<artifactId>libthrift</artifactId>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>org.apache.kudu</groupId>
|
||
<artifactId>kudu-client</artifactId>
|
||
<version>${kudu.version}</version>
|
||
</dependency>
|
||
|
||
<!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
|
||
<dependency>
|
||
<groupId>org.postgresql</groupId>
|
||
<artifactId>postgresql</artifactId>
|
||
<version>${postgres.jdbc.version}</version>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>com.mysql</groupId>
|
||
<artifactId>mysql-connector-j</artifactId>
|
||
<version>8.2.0</version>
|
||
<exclusions>
|
||
<exclusion>
|
||
<groupId>com.google.protobuf</groupId>
|
||
<artifactId>protobuf-java</artifactId>
|
||
</exclusion>
|
||
</exclusions>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>org.antlr</groupId>
|
||
<artifactId>antlr-runtime</artifactId>
|
||
<version>3.3</version>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>org.slf4j</groupId>
|
||
<artifactId>slf4j-reload4j</artifactId>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>org.apache.derby</groupId>
|
||
<artifactId>derby</artifactId>
|
||
<version>${derby.version}</version>
|
||
<scope>test</scope>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>org.apache.commons</groupId>
|
||
<artifactId>commons-dbcp2</artifactId>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>com.google.errorprone</groupId>
|
||
<artifactId>error_prone_annotations</artifactId>
|
||
<version>2.3.1</version>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>junit</groupId>
|
||
<artifactId>junit</artifactId>
|
||
<version>${junit.version}</version>
|
||
<scope>test</scope>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>org.ehcache</groupId>
|
||
<artifactId>sizeof</artifactId>
|
||
<version>0.4.0</version>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>com.github.jbellis</groupId>
|
||
<artifactId>jamm</artifactId>
|
||
<version>0.4.0</version>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>com.googlecode.json-simple</groupId>
|
||
<artifactId>json-simple</artifactId>
|
||
<version>1.1.1</version>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>org.glassfish</groupId>
|
||
<artifactId>javax.json</artifactId>
|
||
<version>1.0.2</version>
|
||
<scope>test</scope>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>com.google.flatbuffers</groupId>
|
||
<artifactId>flatbuffers-java</artifactId>
|
||
<version>1.9.0</version>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>io.dropwizard.metrics</groupId>
|
||
<artifactId>metrics-core</artifactId>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>com.fasterxml.jackson.core</groupId>
|
||
<artifactId>jackson-databind</artifactId>
|
||
<version>${jackson-databind.version}</version>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>org.mockito</groupId>
|
||
<artifactId>mockito-core</artifactId>
|
||
<version>2.23.4</version>
|
||
<scope>test</scope>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>org.apache.directory.server</groupId>
|
||
<artifactId>apacheds-test-framework</artifactId>
|
||
<version>2.0.0.AM25</version>
|
||
<scope>test</scope>
|
||
<exclusions>
|
||
<exclusion>
|
||
<groupId>org.bouncycastle</groupId>
|
||
<artifactId>bcprov-jdk15on</artifactId>
|
||
</exclusion>
|
||
</exclusions>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>org.hamcrest</groupId>
|
||
<artifactId>hamcrest-all</artifactId>
|
||
<version>1.3</version>
|
||
<scope>test</scope>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>org.apache.iceberg</groupId>
|
||
<artifactId>iceberg-api</artifactId>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>org.apache.iceberg</groupId>
|
||
<artifactId>iceberg-hive-runtime</artifactId>
|
||
</dependency>
|
||
|
||
<!-- Needed for reading Iceberg Puffin files. -->
|
||
<dependency>
|
||
<groupId>org.apache.datasketches</groupId>
|
||
<artifactId>datasketches-java</artifactId>
|
||
</dependency>
|
||
|
||
<!-- Needed for tests like JdbcTest which instantiates HiveDriver -->
|
||
<dependency>
|
||
<groupId>org.apache.hive</groupId>
|
||
<artifactId>hive-jdbc</artifactId>
|
||
<version>${hive.version}</version>
|
||
<scope>test</scope>
|
||
<exclusions>
|
||
<!-- Exclusions needed for Hive 3.1.3 -->
|
||
<exclusion>
|
||
<groupId>org.apache.hbase</groupId>
|
||
<artifactId>*</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>log4j</groupId>
|
||
<artifactId>log4j</artifactId>
|
||
</exclusion>
|
||
<!-- Exclude log4j 2.x, we use reload4j -->
|
||
<exclusion>
|
||
<groupId>org.apache.logging.log4j</groupId>
|
||
<artifactId>*</artifactId>
|
||
</exclusion>
|
||
<!-- We should exclude hive-serde since it brings along a
|
||
different version of flatbuffers causing problems for loading tables -->
|
||
<exclusion>
|
||
<groupId>org.apache.hive</groupId>
|
||
<artifactId>hive-serde</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.apache.hive</groupId>
|
||
<artifactId>hive-metastore</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.apache.hive.shims</groupId>
|
||
<artifactId>hive-shims-0.20</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.apache.ant</groupId>
|
||
<artifactId>*</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.eclipse.jetty</groupId>
|
||
<artifactId>*</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<!-- IMPALA-9108: Avoid pulling in leveldbjni, which is unneeded. -->
|
||
<groupId>org.fusesource.leveldbjni</groupId>
|
||
<artifactId>*</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>com.cloudera</groupId>
|
||
<artifactId>*</artifactId>
|
||
</exclusion>
|
||
</exclusions>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>org.apache.hive</groupId>
|
||
<artifactId>hive-classification</artifactId>
|
||
<version>${hive.version}</version>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>org.apache.hive</groupId>
|
||
<artifactId>hive-standalone-metastore</artifactId>
|
||
<version>${hive.version}</version>
|
||
<exclusions>
|
||
<!-- Impala uses reload4j v1; avoid pulling in log4j2 -->
|
||
<exclusion>
|
||
<groupId>org.apache.logging.log4j</groupId>
|
||
<artifactId>*</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.apache.hive</groupId>
|
||
<artifactId>hive-serde</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.apache.hive</groupId>
|
||
<artifactId>hive-shims</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.apache.hadoop</groupId>
|
||
<artifactId>*</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>com.cloudera</groupId>
|
||
<artifactId>*</artifactId>
|
||
</exclusion>
|
||
</exclusions>
|
||
</dependency>
|
||
|
||
<!-- needed for JobConf, which HiveConf inherits from -->
|
||
<dependency>
|
||
<groupId>org.apache.hadoop</groupId>
|
||
<artifactId>hadoop-mapreduce-client-core</artifactId>
|
||
<version>${hadoop.version}</version>
|
||
<exclusions>
|
||
<exclusion>
|
||
<groupId>*</groupId>
|
||
<artifactId>*</artifactId>
|
||
</exclusion>
|
||
</exclusions>
|
||
</dependency>
|
||
|
||
<!-- Needed by tests like TestCaseLoader instantiate HMS in embedded mode which
|
||
needs datanucleus as test dependency-->
|
||
<dependency>
|
||
<groupId>org.datanucleus</groupId>
|
||
<artifactId>javax.jdo</artifactId>
|
||
<version>3.2.0-m3</version>
|
||
<scope>test</scope>
|
||
</dependency>
|
||
|
||
<!-- https://mvnrepository.com/artifact/org.pac4j/pac4j-saml -->
|
||
<dependency>
|
||
<groupId>org.pac4j</groupId>
|
||
<artifactId>pac4j-saml-opensamlv3</artifactId>
|
||
<version>${pac4j.version}</version>
|
||
<exclusions>
|
||
<exclusion>
|
||
<groupId>org.slf4j</groupId>
|
||
<artifactId>*</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.jboss.logging</groupId>
|
||
<artifactId>*</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.hibernate</groupId>
|
||
<artifactId>*</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.hibernate.javax.persistence</groupId>
|
||
<artifactId>*</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.javassist</groupId>
|
||
<artifactId>javassist</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>commons-collections</groupId>
|
||
<artifactId>commons-collections</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>xalan</groupId>
|
||
<artifactId>xalan</artifactId>
|
||
</exclusion>
|
||
<!-- Exclude spring components except spring-core -->
|
||
<exclusion>
|
||
<groupId>org.springframework</groupId>
|
||
<artifactId>spring-orm</artifactId>
|
||
</exclusion>
|
||
<!-- IMPALA-11673: spring-jcl conflicts with commons-logging -->
|
||
<exclusion>
|
||
<groupId>org.springframework</groupId>
|
||
<artifactId>spring-jcl</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.bouncycastle</groupId>
|
||
<artifactId>bcprov-jdk15on</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.bouncycastle</groupId>
|
||
<artifactId>bcpkix-jdk15on</artifactId>
|
||
</exclusion>
|
||
</exclusions>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>org.bouncycastle</groupId>
|
||
<artifactId>bcprov-jdk18on</artifactId>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>org.bouncycastle</groupId>
|
||
<artifactId>bcpkix-jdk18on</artifactId>
|
||
</dependency>
|
||
|
||
<!-- Needed for KerberosKdcEnvironment tests. -->
|
||
<dependency>
|
||
<groupId>org.apache.kerby</groupId>
|
||
<artifactId>kerb-simplekdc</artifactId>
|
||
<version>2.0.3</version>
|
||
<scope>test</scope>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>org.apache.paimon</groupId>
|
||
<artifactId>paimon-hive-connector-3.1</artifactId>
|
||
<version>${paimon.version}</version>
|
||
<exclusions>
|
||
<exclusion>
|
||
<artifactId>lz4-java</artifactId>
|
||
<groupId>org.lz4</groupId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<artifactId>caffeine</artifactId>
|
||
<groupId>com.github.ben-manes.caffeine</groupId>
|
||
</exclusion>
|
||
</exclusions>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>org.apache.paimon</groupId>
|
||
<artifactId>paimon-arrow</artifactId>
|
||
<version>${paimon.version}</version>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>org.apache.arrow</groupId>
|
||
<artifactId>arrow-vector</artifactId>
|
||
<version>${arrow.version}</version>
|
||
<exclusions>
|
||
<exclusion>
|
||
<groupId>log4j</groupId>
|
||
<artifactId>log4j</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.apache.logging.log4j</groupId>
|
||
<artifactId>log4j-1.2-api</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.apache.logging.log4j</groupId>
|
||
<artifactId>log4j-slf4j-impl</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.apache.ant</groupId>
|
||
<artifactId>ant</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.apache.ant</groupId>
|
||
<artifactId>ant-launcher</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<artifactId>flatbuffers-java</artifactId>
|
||
<groupId>com.google.flatbuffers</groupId>
|
||
</exclusion>
|
||
</exclusions>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>org.apache.arrow</groupId>
|
||
<artifactId>arrow-c-data</artifactId>
|
||
<version>${arrow.version}</version>
|
||
<exclusions>
|
||
<exclusion>
|
||
<groupId>log4j</groupId>
|
||
<artifactId>log4j</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.apache.logging.log4j</groupId>
|
||
<artifactId>log4j-1.2-api</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.apache.logging.log4j</groupId>
|
||
<artifactId>log4j-slf4j-impl</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.apache.ant</groupId>
|
||
<artifactId>ant</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.apache.ant</groupId>
|
||
<artifactId>ant-launcher</artifactId>
|
||
</exclusion>
|
||
</exclusions>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>org.apache.arrow</groupId>
|
||
<artifactId>arrow-memory-core</artifactId>
|
||
<version>${arrow.version}</version>
|
||
<exclusions>
|
||
<exclusion>
|
||
<groupId>log4j</groupId>
|
||
<artifactId>log4j</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.apache.logging.log4j</groupId>
|
||
<artifactId>log4j-1.2-api</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.apache.logging.log4j</groupId>
|
||
<artifactId>log4j-slf4j-impl</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.apache.ant</groupId>
|
||
<artifactId>ant</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.apache.ant</groupId>
|
||
<artifactId>ant-launcher</artifactId>
|
||
</exclusion>
|
||
</exclusions>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>org.apache.arrow</groupId>
|
||
<artifactId>arrow-memory-unsafe</artifactId>
|
||
<version>${arrow.version}</version>
|
||
<exclusions>
|
||
<exclusion>
|
||
<groupId>log4j</groupId>
|
||
<artifactId>log4j</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.apache.logging.log4j</groupId>
|
||
<artifactId>log4j-1.2-api</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.apache.logging.log4j</groupId>
|
||
<artifactId>log4j-slf4j-impl</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.apache.ant</groupId>
|
||
<artifactId>ant</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.apache.ant</groupId>
|
||
<artifactId>ant-launcher</artifactId>
|
||
</exclusion>
|
||
</exclusions>
|
||
</dependency>
|
||
</dependencies>
|
||
|
||
<reporting>
|
||
<plugins>
|
||
<plugin>
|
||
<groupId>org.codehaus.mojo</groupId>
|
||
<artifactId>findbugs-maven-plugin</artifactId>
|
||
<version>2.5.2</version>
|
||
</plugin>
|
||
</plugins>
|
||
</reporting>
|
||
|
||
<properties>
|
||
<buildOutputDirectory>${project.build.directory}/classes</buildOutputDirectory>
|
||
</properties>
|
||
|
||
<build>
|
||
<outputDirectory>${buildOutputDirectory}</outputDirectory>
|
||
<plugins>
|
||
<plugin>
|
||
<groupId>org.apache.maven.plugins</groupId>
|
||
<artifactId>maven-compiler-plugin</artifactId>
|
||
</plugin>
|
||
|
||
<!-- Build fe/tests/ to jar -->
|
||
<plugin>
|
||
<groupId>org.apache.maven.plugins</groupId>
|
||
<artifactId>maven-jar-plugin</artifactId>
|
||
<executions>
|
||
<execution>
|
||
<goals>
|
||
<goal>test-jar</goal>
|
||
</goals>
|
||
</execution>
|
||
</executions>
|
||
</plugin>
|
||
|
||
<plugin>
|
||
<groupId>net.sourceforge.czt.dev</groupId>
|
||
<artifactId>cup-maven-plugin</artifactId>
|
||
<version>1.6-cdh</version>
|
||
<executions>
|
||
<execution>
|
||
<id>cup</id>
|
||
<phase>generate-sources</phase>
|
||
<goals>
|
||
<goal>generate</goal>
|
||
</goals>
|
||
</execution>
|
||
</executions>
|
||
<configuration>
|
||
<cupDefinition>sql-parser.cup</cupDefinition>
|
||
<className>SqlParser</className>
|
||
<symbolsName>SqlParserSymbols</symbolsName>
|
||
<outputDirectory>${project.build.directory}/generated-sources/cup</outputDirectory>
|
||
<expectedConflicts>0</expectedConflicts>
|
||
</configuration>
|
||
</plugin>
|
||
|
||
<plugin>
|
||
<groupId>de.jflex</groupId>
|
||
<artifactId>maven-jflex-plugin</artifactId>
|
||
<version>1.4.3</version>
|
||
<executions>
|
||
<execution>
|
||
<id>jflex</id>
|
||
<phase>generate-sources</phase>
|
||
<goals>
|
||
<goal>generate</goal>
|
||
</goals>
|
||
<configuration>
|
||
<backup>false</backup>
|
||
</configuration>
|
||
</execution>
|
||
</executions>
|
||
</plugin>
|
||
|
||
<plugin>
|
||
<groupId>org.apache.maven.plugins</groupId>
|
||
<artifactId>maven-dependency-plugin</artifactId>
|
||
<executions>
|
||
<!-- TODO(todd): consider removing this execution or moving it to
|
||
some kind of 'dist' profile. No need to copy all of these jars
|
||
on every build of the FE! -->
|
||
<execution>
|
||
<id>copy-dependencies</id>
|
||
<phase>package</phase>
|
||
<goals>
|
||
<goal>copy-dependencies</goal>
|
||
</goals>
|
||
<configuration>
|
||
<excludeTypes>pom</excludeTypes>
|
||
<includeScope>runtime</includeScope>
|
||
<silent>true</silent>
|
||
</configuration>
|
||
</execution>
|
||
<!--
|
||
Write the runtime classpath to a file in the target directory
|
||
so it can be picked up by bin/set-classpath.sh
|
||
-->
|
||
<execution>
|
||
<id>write-classpath</id>
|
||
<goals>
|
||
<goal>build-classpath</goal>
|
||
</goals>
|
||
<configuration>
|
||
<outputFile>${project.build.directory}/build-classpath.txt</outputFile>
|
||
<includeScope>runtime</includeScope>
|
||
<excludeTypes>pom</excludeTypes>
|
||
</configuration>
|
||
</execution>
|
||
<execution>
|
||
<id>write-test-classpath</id>
|
||
<goals>
|
||
<goal>build-classpath</goal>
|
||
</goals>
|
||
<configuration>
|
||
<outputFile>${project.build.directory}/test-classpath.txt</outputFile>
|
||
<includeScope>test</includeScope>
|
||
<excludeTypes>pom</excludeTypes>
|
||
</configuration>
|
||
</execution>
|
||
</executions>
|
||
</plugin>
|
||
|
||
<plugin>
|
||
<groupId>org.apache.maven.plugins</groupId>
|
||
<artifactId>maven-surefire-plugin</artifactId>
|
||
<configuration>
|
||
<trimStackTrace>false</trimStackTrace>
|
||
<reportsDirectory>${surefire.reports.dir}</reportsDirectory>
|
||
<argLine>${surefireJacocoArg}</argLine>
|
||
<groups>${testcase.groups}</groups>
|
||
<environmentVariables>
|
||
<!-- Set LD_LIBRARY_PATH and LD_PRELOAD to pick up libraries required for
|
||
running fe tests:
|
||
* LD_LIBRARY_PATH needs to include the GCC libraries that libfesupport.so
|
||
was built against.
|
||
* LD_PRELOAD needs to include libjsig.so for JVM/native signal handling.
|
||
TODO(IMPALA-13856): remove libjsig.so if possible as it causes issues
|
||
with Java 17
|
||
-->
|
||
<LD_LIBRARY_PATH>
|
||
${env.IMPALA_TOOLCHAIN_PACKAGES_HOME}/gcc-${env.IMPALA_GCC_VERSION}/lib64
|
||
</LD_LIBRARY_PATH>
|
||
<LD_PRELOAD>
|
||
${env.LIB_JSIG}
|
||
</LD_PRELOAD>
|
||
</environmentVariables>
|
||
</configuration>
|
||
</plugin>
|
||
|
||
<plugin>
|
||
<groupId>org.codehaus.mojo</groupId>
|
||
<artifactId>build-helper-maven-plugin</artifactId>
|
||
<executions>
|
||
<!-- Tell maven about our generated files -->
|
||
<execution>
|
||
<id>add-source</id>
|
||
<phase>generate-sources</phase>
|
||
<goals>
|
||
<goal>add-source</goal>
|
||
</goals>
|
||
<configuration>
|
||
<sources>
|
||
<!-- Make sure Eclipse knows where to find generated sources.
|
||
Note that the flex plugin appears to do this for you, but we have
|
||
to do this manually for the CUP and Thrift generated code
|
||
-->
|
||
<source>${project.basedir}/generated-sources/gen-java</source>
|
||
<source>${project.build.directory}/generated-sources/cup</source>
|
||
<source>${project.basedir}/src/compat-${hive.dist.type}/java</source>
|
||
</sources>
|
||
</configuration>
|
||
</execution>
|
||
</executions>
|
||
</plugin>
|
||
|
||
<plugin>
|
||
<groupId>org.jacoco</groupId>
|
||
<artifactId>jacoco-maven-plugin</artifactId>
|
||
<version>0.7.6.201602180812</version>
|
||
<executions>
|
||
<execution>
|
||
<id>prepare-jacoco-agent</id>
|
||
<goals>
|
||
<goal>prepare-agent</goal>
|
||
</goals>
|
||
<configuration>
|
||
<destFile>${jacoco.data.file}</destFile>
|
||
<propertyName>surefireJacocoArg</propertyName>
|
||
</configuration>
|
||
</execution>
|
||
<execution>
|
||
<id>jacoco-report</id>
|
||
<phase>test</phase>
|
||
<goals>
|
||
<goal>report</goal>
|
||
</goals>
|
||
<configuration>
|
||
<dataFile>${jacoco.data.file}</dataFile>
|
||
<outputDirectory>${jacoco.report.dir}</outputDirectory>
|
||
</configuration>
|
||
</execution>
|
||
</executions>
|
||
<configuration>
|
||
<!-- Code coverage reporting is disabled by default and must be enabled
|
||
when running tests like this: mvn test -DcodeCoverage -->
|
||
<skip>${jacoco.skip}</skip>
|
||
</configuration>
|
||
</plugin>
|
||
|
||
<plugin>
|
||
<groupId>org.apache.maven.plugins</groupId>
|
||
<artifactId>maven-enforcer-plugin</artifactId>
|
||
<version>3.1.0</version>
|
||
<executions>
|
||
<execution>
|
||
<id>enforce-banned-dependencies</id>
|
||
<goals>
|
||
<goal>enforce</goal>
|
||
</goals>
|
||
<configuration>
|
||
<rules>
|
||
<bannedDependencies>
|
||
<excludes>
|
||
<!-- We shouldn't have a runtime dependency on Ant or the
|
||
Jetty server -->
|
||
<exclude>ant:*</exclude>
|
||
<exclude>ant-contrib:*</exclude>
|
||
<exclude>com.amazonaws:aws-java-sdk-bundle</exclude>
|
||
<exclude>org.apache.ant:*</exclude>
|
||
<exclude>org.eclipse.jetty:*</exclude>
|
||
<!-- We use reload4j, exclude log4j 1.x and 2.x -->
|
||
<exclude>org.apache.logging.log4j:*</exclude>
|
||
<exclude>log4j:*</exclude>
|
||
<exclude>org.slf4j:slf4j-log4j12</exclude>
|
||
<!-- IMPALA-9108: Avoid pulling in leveldbjni, which is unneeded. -->
|
||
<exclude>org.fusesource.leveldbjni:*</exclude>
|
||
<!-- IMPALA-9647 (re: CVE-2014-3577, CVE-2015-5262) -->
|
||
<exclude>org.apache.httpcomponents:fluent-hc</exclude>
|
||
<!-- IMPALA-9649 (Avoid pulling in shiro* due to CVE's) -->
|
||
<exclude>org.apache.shiro:shiro-core:*</exclude>
|
||
<exclude>org.apache.shiro:shiro-crypto-cipher:*</exclude>
|
||
<!-- Avoid runtime dependency on rocksdb. -->
|
||
<exclude>org.rocksdb:*</exclude>
|
||
<!-- Avoid runtime dependency on Jersey server components. -->
|
||
<exclude>com.sun.jersey:jersey-server</exclude>
|
||
<exclude>org.glassfish.jersey.core:jersey-servlet</exclude>
|
||
<!-- IMPALA-9708: Sentry is removed. -->
|
||
<exclude>org.apache.sentry:*</exclude>
|
||
<!-- IMPALA-11673: Ensure spring-jcl is not present. -->
|
||
<exclude>org.springframework:spring-jcl</exclude>
|
||
<!-- Assert that we only use artifacts from only the specified
|
||
version of these components. -->
|
||
<exclude>org.apache.hadoop:*</exclude>
|
||
<exclude>org.apache.hbase:*</exclude>
|
||
<exclude>org.apache.hive:*</exclude>
|
||
<exclude>org.apache.kudu:*</exclude>
|
||
<exclude>org.apache.parquet:*</exclude>
|
||
<exclude>org.apache.avro:*</exclude>
|
||
<exclude>org.apache.orc:*</exclude>
|
||
<exclude>org.jdom:jdom</exclude>
|
||
<exclude>org.bouncycastle:bcprov-jdk15on:*</exclude>
|
||
<exclude>org.bouncycastle:bcprov-jdk15to18:*</exclude>
|
||
<exclude>org.bouncycastle:bcprov-jdk15on:*</exclude>
|
||
<exclude>org.bouncycastle:bcpkix-jdk15to18:*</exclude>
|
||
</excludes>
|
||
<includes>
|
||
<!-- ranger-plugins-audit depends on jetty-client, which in turn pulls in jetty-http and jetty-io. -->
|
||
<include>org.eclipse.jetty:jetty-client</include>
|
||
<include>org.eclipse.jetty:jetty-http</include>
|
||
<include>org.eclipse.jetty:jetty-io</include>
|
||
<!-- jetty-security is needed by jetty-servlet. -->
|
||
<include>org.eclipse.jetty:jetty-security</include>
|
||
<!-- jetty-servlet is required by hive-standalone-metastore after HIVE-26071. -->
|
||
 <include>org.eclipse.jetty:jetty-servlet</include>
|
||
<!-- jetty-server is required when HiveMetaStoreClient is instantiated after HIVE-21456. -->
|
||
<include>org.eclipse.jetty:jetty-server</include>
|
||
<!-- hadoop-yarn-common depends on some Jetty utilities. -->
|
||
<include>org.eclipse.jetty:jetty-util</include>
|
||
<include>org.eclipse.jetty:jetty-util-ajax</include>
|
||
<!-- Include the allowed versions specifically -->
|
||
<include>org.apache.hadoop:*:${hadoop.version}</include>
|
||
<include>org.apache.hadoop:*:${ozone.version}</include>
|
||
<include>org.apache.hbase:*:${hbase.version}</include>
|
||
<include>org.apache.hive:*:${hive.version}</include>
|
||
<include>org.apache.hive:hive-storage-api:${hive.storage.api.version}</include>
|
||
<include>org.apache.kudu:*:${kudu.version}</include>
|
||
<include>org.apache.avro:*:${avro.version}</include>
|
||
<include>org.apache.parquet:*:${parquet.version}</include>
|
||
<include>org.apache.orc:*:${orc.version}</include>
|
||
<include>org.apache.ozone:*:${ozone.version}</include>
|
||
<!-- orc-format does not match orc version -->
|
||
<include>org.apache.orc:orc-format:1.0</include>
|
||
</includes>
|
||
</bannedDependencies>
|
||
</rules>
|
||
<fail>true</fail>
|
||
</configuration>
|
||
</execution>
|
||
</executions>
|
||
</plugin>
|
||
</plugins>
|
||
|
||
<pluginManagement>
|
||
<plugins>
|
||
<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
|
||
<plugin>
|
||
<groupId>org.eclipse.m2e</groupId>
|
||
<artifactId>lifecycle-mapping</artifactId>
|
||
<version>1.0.0</version>
|
||
<configuration>
|
||
<lifecycleMappingMetadata>
|
||
<pluginExecutions>
|
||
<pluginExecution>
|
||
<pluginExecutionFilter>
|
||
<groupId>net.sourceforge.czt</groupId>
|
||
<artifactId>maven-cup-plugin</artifactId>
|
||
<versionRange>[1.6.4,)</versionRange>
|
||
<goals>
|
||
<goal>generate</goal>
|
||
</goals>
|
||
</pluginExecutionFilter>
|
||
<action>
|
||
<ignore></ignore>
|
||
</action>
|
||
</pluginExecution>
|
||
<pluginExecution>
|
||
<pluginExecutionFilter>
|
||
<groupId>org.apache.maven.plugins</groupId>
|
||
<artifactId>maven-antrun-plugin</artifactId>
|
||
<versionRange>[1.6,)</versionRange>
|
||
<goals>
|
||
<goal>run</goal>
|
||
</goals>
|
||
</pluginExecutionFilter>
|
||
<action>
|
||
<ignore></ignore>
|
||
</action>
|
||
</pluginExecution>
|
||
<pluginExecution>
|
||
<pluginExecutionFilter>
|
||
<groupId>org.apache.maven.plugins</groupId>
|
||
<artifactId>maven-dependency-plugin</artifactId>
|
||
<versionRange>[2.0,)</versionRange>
|
||
<goals>
|
||
<goal>copy-dependencies</goal>
|
||
<goal>build-classpath</goal>
|
||
</goals>
|
||
</pluginExecutionFilter>
|
||
<action>
|
||
<ignore></ignore>
|
||
</action>
|
||
</pluginExecution>
|
||
<pluginExecution>
|
||
<pluginExecutionFilter>
|
||
<groupId>de.jflex</groupId>
|
||
<artifactId>maven-jflex-plugin</artifactId>
|
||
<versionRange>[1.4.3,)</versionRange>
|
||
<goals>
|
||
<goal>generate</goal>
|
||
</goals>
|
||
</pluginExecutionFilter>
|
||
<action>
|
||
<execute></execute>
|
||
</action>
|
||
</pluginExecution>
|
||
</pluginExecutions>
|
||
</lifecycleMappingMetadata>
|
||
</configuration>
|
||
</plugin>
|
||
<!-- mvn eclipse:eclipse generates Eclipse .project and .classpath files
|
||
NOTE: This is a deprecated Maven plugin. It's recommended to use
|
||
the native Eclipse "import Maven project" functionality (m2e)
|
||
instead -->
|
||
<plugin>
|
||
<groupId>org.apache.maven.plugins </groupId>
|
||
<artifactId>maven-eclipse-plugin</artifactId>
|
||
<version>2.10</version>
|
||
<configuration>
|
||
<!-- By default, we separate Eclipse-built files from Maven-built
|
||
files. Otherwise, they are both in target/classes, and Eclipse
|
||
and Maven may clobber each other, complicating attaching to
|
||
a running process. -->
|
||
<buildOutputDirectory>${eclipse.output.directory}</buildOutputDirectory>
|
||
<downloadSources>true</downloadSources>
|
||
<downloadJavadocs>false</downloadJavadocs>
|
||
<additionalConfig>
|
||
<file>
|
||
<!-- Saved "launch configuration" for attaching Eclipse debugger to port 30000 -->
|
||
<name>impala-fe-30000.launch</name>
|
||
<content><![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||
<launchConfiguration type="org.eclipse.jdt.launching.remoteJavaApplication">
|
||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||
<listEntry value="/impala-frontend"/>
|
||
</listAttribute>
|
||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||
<listEntry value="4"/>
|
||
</listAttribute>
|
||
<booleanAttribute key="org.eclipse.jdt.launching.ALLOW_TERMINATE" value="false"/>
|
||
<mapAttribute key="org.eclipse.jdt.launching.CONNECT_MAP">
|
||
<mapEntry key="hostname" value="localhost"/>
|
||
<mapEntry key="port" value="30000"/>
|
||
</mapAttribute>
|
||
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="impala-frontend"/>
|
||
<stringAttribute key="org.eclipse.jdt.launching.VM_CONNECTOR_ID" value="org.eclipse.jdt.launching.socketAttachConnector"/>
|
||
</launchConfiguration>
|
||
]]>
|
||
</content>
|
||
</file>
|
||
</additionalConfig>
|
||
</configuration>
|
||
</plugin>
|
||
</plugins>
|
||
</pluginManagement>
|
||
</build>
|
||
|
||
<profiles>
|
||
<profile>
|
||
<id>thrift-home-defined</id>
|
||
<activation>
|
||
<file>
|
||
<exists>${env.THRIFT_JAVA_HOME}/bin/thrift</exists>
|
||
</file>
|
||
</activation>
|
||
<properties>
|
||
<thrift.executable>${env.THRIFT_JAVA_HOME}/bin/thrift</thrift.executable>
|
||
</properties>
|
||
</profile>
|
||
<profile>
|
||
<id>jacoco-code-coverage</id>
|
||
<activation>
|
||
<property>
|
||
<!-- Enable code coverage if the 'codeCoverage' property is set.
|
||
Usage: mvn test -DcodeCoverage -->
|
||
<name>codeCoverage</name>
|
||
</property>
|
||
</activation>
|
||
<properties>
|
||
<jacoco.skip>false</jacoco.skip>
|
||
<!-- Due to Jacoco's runtime instrumentation some tests could fail.
|
||
In order to still produce a coverage report it is recommended
|
||
to ignore test failures. -->
|
||
<maven.test.failure.ignore>true</maven.test.failure.ignore>
|
||
</properties>
|
||
</profile>
|
||
|
||
<profile>
|
||
<id>errorprone</id>
|
||
<build>
|
||
<plugins>
|
||
<plugin>
|
||
<groupId>org.apache.maven.plugins</groupId>
|
||
<artifactId>maven-compiler-plugin</artifactId>
|
||
<configuration>
|
||
<showWarnings>true</showWarnings>
|
||
<compilerId>javac-with-errorprone</compilerId>
|
||
<forceJavacCompilerUse>true</forceJavacCompilerUse>
|
||
<compilerArgs>
|
||
<arg>-XepDisableWarningsInGeneratedCode</arg>
|
||
<arg>-XepExcludedPaths:.*/generated-.*/.*</arg>
|
||
</compilerArgs>
|
||
</configuration>
|
||
<dependencies>
|
||
<dependency>
|
||
<groupId>org.codehaus.plexus</groupId>
|
||
<artifactId>plexus-compiler-javac-errorprone</artifactId>
|
||
<version>2.8.3</version>
|
||
</dependency>
|
||
<!-- override plexus-compiler-javac-errorprone's dependency on
|
||
Error Prone with the latest version -->
|
||
<dependency>
|
||
<groupId>com.google.errorprone</groupId>
|
||
<artifactId>error_prone_core</artifactId>
|
||
<version>2.3.1</version>
|
||
</dependency>
|
||
</dependencies>
|
||
</plugin>
|
||
</plugins>
|
||
</build>
|
||
</profile>
|
||
|
||
<!-- Profile which is automatically activated based on the value of the
|
||
IMPALA_HIVE_DIST_TYPE environment -->
|
||
<profile>
|
||
<id>apache-hive-3</id>
|
||
<activation>
|
||
<property>
|
||
<name>env.IMPALA_HIVE_DIST_TYPE</name>
|
||
<value>apache-hive-3</value>
|
||
</property>
|
||
</activation>
|
||
<build>
|
||
<plugins>
|
||
<plugin>
|
||
<groupId>org.apache.maven.plugins</groupId>
|
||
<artifactId>maven-compiler-plugin</artifactId>
|
||
<configuration>
|
||
<excludes>
|
||
<exclude>**/org/apache/impala/catalog/metastore/*.java</exclude>
|
||
<exclude>**/org/apache/impala/catalog/CatalogHmsAPIHelper.java</exclude>
|
||
<exclude>**/org/apache/impala/catalog/CompactionInfoLoader.java</exclude>
|
||
</excludes>
|
||
<testExcludes>
|
||
<testExclude>**/org/apache/impala/catalog/metastore/*.java</testExclude>
|
||
<testExclude>**/org/apache/impala/testutil/Catalog*.java</testExclude>
|
||
</testExcludes>
|
||
</configuration>
|
||
</plugin>
|
||
</plugins>
|
||
</build>
|
||
</profile>
|
||
|
||
<!-- Profile which is automatically activated when building from
|
||
within Eclipse based on the presence of the m2e.version
|
||
property -->
|
||
<profile>
|
||
<id>eclipse-m2e</id>
|
||
<activation>
|
||
<property>
|
||
<name>m2e.version</name>
|
||
</property>
|
||
</activation>
|
||
<!-- By default, we separate Eclipse-built files from Maven-built
|
||
files. Otherwise, they are both in target/classes, and Eclipse
|
||
and Maven may clobber each other, complicating attaching to
|
||
a running process. -->
|
||
<properties>
|
||
<buildOutputDirectory>${project.build.directory}/${eclipse.output.directory}</buildOutputDirectory>
|
||
</properties>
|
||
</profile>
|
||
|
||
<profile>
|
||
<id>s3-tests</id>
|
||
<properties>
|
||
<testcase.groups>org.apache.impala.planner.S3Tests</testcase.groups>
|
||
</properties>
|
||
</profile>
|
||
</profiles>
|
||
</project>
|