mirror of https://github.com/apache/druid.git
444 lines
15 KiB
XML
444 lines
15 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">
|
|
<modelVersion>4.0.0</modelVersion>
|
|
|
|
<artifactId>druid-sql</artifactId>
|
|
<name>druid-sql</name>
|
|
<description>Druid SQL</description>
|
|
|
|
<parent>
|
|
<groupId>org.apache.druid</groupId>
|
|
<artifactId>druid</artifactId>
|
|
<version>30.0.0-SNAPSHOT</version>
|
|
</parent>
|
|
|
|
<dependencies>
|
|
<dependency>
|
|
<groupId>org.apache.druid</groupId>
|
|
<artifactId>druid-processing</artifactId>
|
|
<version>${project.parent.version}</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.apache.druid</groupId>
|
|
<artifactId>druid-server</artifactId>
|
|
<version>${project.parent.version}</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.apache.calcite</groupId>
|
|
<artifactId>calcite-core</artifactId>
|
|
<exclusions>
|
|
<!--
|
|
~ Calcite 1.15.0 uses sketches-core 0.9.0 for a profiling feature:
|
|
~ (https://issues.apache.org/jira/browse/CALCITE-1616).
|
|
~ This conflicts with druid-datasketches which uses a newer version of sketches-core.
|
|
~ Druid does not use this Calcite profiling feature, so we exclude sketches-core here.
|
|
-->
|
|
<exclusion>
|
|
<groupId>com.yahoo.datasketches</groupId>
|
|
<artifactId>sketches-core</artifactId>
|
|
</exclusion>
|
|
<!--
|
|
~ We don't use Calcite's YAML features.
|
|
-->
|
|
<exclusion>
|
|
<groupId>com.fasterxml.jackson.dataformat</groupId>
|
|
<artifactId>jackson-dataformat-yaml</artifactId>
|
|
</exclusion>
|
|
<exclusion>
|
|
<groupId>org.yaml</groupId>
|
|
<artifactId>snakeyaml</artifactId>
|
|
</exclusion>
|
|
</exclusions>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.apache.calcite</groupId>
|
|
<artifactId>calcite-linq4j</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.apache.calcite.avatica</groupId>
|
|
<artifactId>avatica-core</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.apache.calcite.avatica</groupId>
|
|
<artifactId>avatica-server</artifactId>
|
|
<exclusions>
|
|
<exclusion>
|
|
<groupId>org.eclipse.jetty</groupId>
|
|
<artifactId>jetty-http</artifactId>
|
|
</exclusion>
|
|
</exclusions>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>com.github.ben-manes.caffeine</groupId>
|
|
<artifactId>caffeine</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>com.google.code.findbugs</groupId>
|
|
<artifactId>jsr305</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.eclipse.jetty</groupId>
|
|
<artifactId>jetty-server</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>joda-time</groupId>
|
|
<artifactId>joda-time</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>com.fasterxml.jackson.core</groupId>
|
|
<artifactId>jackson-annotations</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>jakarta.inject</groupId>
|
|
<artifactId>jakarta.inject-api</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>com.google.inject</groupId>
|
|
<artifactId>guice</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>com.google.inject.extensions</groupId>
|
|
<artifactId>guice-assistedinject</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>com.fasterxml.jackson.core</groupId>
|
|
<artifactId>jackson-databind</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>com.opencsv</groupId>
|
|
<artifactId>opencsv</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>com.google.inject.extensions</groupId>
|
|
<artifactId>guice-multibindings</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>javax.ws.rs</groupId>
|
|
<artifactId>jsr311-api</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>io.netty</groupId>
|
|
<artifactId>netty</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>javax.servlet</groupId>
|
|
<artifactId>javax.servlet-api</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>it.unimi.dsi</groupId>
|
|
<artifactId>fastutil-core</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>com.fasterxml.jackson.core</groupId>
|
|
<artifactId>jackson-core</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>com.google.guava</groupId>
|
|
<artifactId>guava</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>com.google.errorprone</groupId>
|
|
<artifactId>error_prone_annotations</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.apache.calcite.avatica</groupId>
|
|
<artifactId>avatica-metrics</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.checkerframework</groupId>
|
|
<artifactId>checker-qual</artifactId>
|
|
<version>${checkerframework.version}</version>
|
|
<scope>provided</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>jakarta.validation</groupId>
|
|
<artifactId>jakarta.validation-api</artifactId>
|
|
<scope>provided</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.slf4j</groupId>
|
|
<artifactId>slf4j-api</artifactId>
|
|
<scope>provided</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.immutables</groupId>
|
|
<artifactId>value-annotations</artifactId>
|
|
<scope>provided</scope>
|
|
</dependency>
|
|
|
|
|
|
<!-- Tests -->
|
|
<dependency>
|
|
<groupId>junit</groupId>
|
|
<artifactId>junit</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>pl.pragmatists</groupId>
|
|
<artifactId>JUnitParams</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.apache.commons</groupId>
|
|
<artifactId>commons-text</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.apache.calcite</groupId>
|
|
<artifactId>calcite-testkit</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.easymock</groupId>
|
|
<artifactId>easymock</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>com.fasterxml.jackson.dataformat</groupId>
|
|
<artifactId>jackson-dataformat-yaml</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>commons-io</groupId>
|
|
<artifactId>commons-io</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.apache.druid</groupId>
|
|
<artifactId>druid-processing</artifactId>
|
|
<version>${project.parent.version}</version>
|
|
<type>test-jar</type>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.apache.druid</groupId>
|
|
<artifactId>druid-server</artifactId>
|
|
<version>${project.parent.version}</version>
|
|
<type>test-jar</type>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.hamcrest</groupId>
|
|
<artifactId>hamcrest-all</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.hamcrest</groupId>
|
|
<artifactId>hamcrest-core</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>nl.jqno.equalsverifier</groupId>
|
|
<artifactId>equalsverifier</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.mockito</groupId>
|
|
<artifactId>mockito-core</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.jdbi</groupId>
|
|
<artifactId>jdbi</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
</dependencies>
|
|
|
|
<build>
|
|
<plugins>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-jar-plugin</artifactId>
|
|
<executions>
|
|
<execution>
|
|
<goals>
|
|
<goal>test-jar</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
|
|
<!-- Following plugins and their configurations are used to generate the custom Calcite's SQL parser for Druid -->
|
|
<!-- Extracts the Parser.jj from Calcite to ${project.build.directory}, where all the Freemarker templates are -->
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-dependency-plugin</artifactId>
|
|
<executions>
|
|
<execution>
|
|
<id>unpack-parser-template</id>
|
|
<phase>generate-sources</phase>
|
|
<goals>
|
|
<goal>unpack</goal>
|
|
</goals>
|
|
<configuration>
|
|
<artifactItems>
|
|
<artifactItem>
|
|
<groupId>org.apache.calcite</groupId>
|
|
<artifactId>calcite-core</artifactId>
|
|
<version>${calcite.version}</version>
|
|
<type>jar</type>
|
|
<overWrite>true</overWrite>
|
|
<outputDirectory>${project.build.directory}/</outputDirectory>
|
|
<includes>**/Parser.jj</includes>
|
|
</artifactItem>
|
|
<artifactItem>
|
|
<groupId>org.apache.calcite</groupId>
|
|
<artifactId>calcite-core</artifactId>
|
|
<version>${calcite.version}</version>
|
|
<type>jar</type>
|
|
<overWrite>true</overWrite>
|
|
<outputDirectory>${project.build.directory}/</outputDirectory>
|
|
<includes>**/default_config.fmpp</includes>
|
|
</artifactItem>
|
|
</artifactItems>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
|
|
<!-- Copy the templates present in the codegen directory of druid-sql containing custom SQL rules to
|
|
${project.build.directory}/codegen -->
|
|
<plugin>
|
|
<artifactId>maven-resources-plugin</artifactId>
|
|
<executions>
|
|
<execution>
|
|
<id>copy-fmpp-resources</id>
|
|
<phase>generate-sources</phase>
|
|
<goals>
|
|
<goal>copy-resources</goal>
|
|
</goals>
|
|
<configuration>
|
|
<outputDirectory>${project.build.directory}/codegen</outputDirectory>
|
|
<resources>
|
|
<resource>
|
|
<directory>src/main/codegen</directory>
|
|
<filtering>false</filtering>
|
|
</resource>
|
|
</resources>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
|
|
<!-- "Plugs in" the Calcite's Parser.jj with the variables present in config.fmpp. These contain the custom rules
|
|
as well as the class to which the custom implementation will get generated -->
|
|
<plugin>
|
|
<groupId>com.googlecode.fmpp-maven-plugin</groupId>
|
|
<artifactId>fmpp-maven-plugin</artifactId>
|
|
<executions>
|
|
<execution>
|
|
<id>generate-fmpp-sources</id>
|
|
<phase>generate-sources</phase>
|
|
<goals>
|
|
<goal>generate</goal>
|
|
</goals>
|
|
<configuration>
|
|
<cfgFile>${project.build.directory}/codegen/config.fmpp</cfgFile>
|
|
<outputDirectory>${project.build.directory}/generated-sources</outputDirectory>
|
|
<templateDirectory>${project.build.directory}/codegen/templates</templateDirectory>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
|
|
<!-- Creates a Java class for the custom parser from Parser.jj -->
|
|
<plugin>
|
|
<groupId>org.codehaus.mojo</groupId>
|
|
<artifactId>javacc-maven-plugin</artifactId>
|
|
<executions>
|
|
<execution>
|
|
<phase>generate-sources</phase>
|
|
<id>javacc</id>
|
|
<goals>
|
|
<goal>javacc</goal>
|
|
</goals>
|
|
<configuration>
|
|
<sourceDirectory>${project.build.directory}/generated-sources/javacc</sourceDirectory>
|
|
<includes>
|
|
<include>Parser.jj</include>
|
|
</includes>
|
|
<lookAhead>2</lookAhead>
|
|
<isStatic>false</isStatic>
|
|
<outputDirectory>${project.build.directory}/generated-sources</outputDirectory>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
|
|
<!-- This plugin is used to replace the production rule for FROM clause in the calcite grammar.
|
|
It is done by a search and replace since calcite doesn't allow to override production rules generally
|
|
in its grammar (override is possible only if there's a hook for it in the grammar). And the FROM clause
|
|
doesn't contain any hook for extension. For the custom changes done in
|
|
extension, please check from.ftl file in sql module.
|
|
-->
|
|
<plugin>
|
|
<groupId>com.google.code.maven-replacer-plugin</groupId>
|
|
<artifactId>replacer</artifactId>
|
|
<version>1.5.3</version>
|
|
<executions>
|
|
<execution>
|
|
<phase>generate-sources</phase>
|
|
<goals>
|
|
<goal>replace</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
<configuration>
|
|
<basedir>${project.build.directory}/generated-sources/org/apache/druid/sql/calcite/parser</basedir>
|
|
<includes>
|
|
<include>**/DruidSqlParserImpl.java</include>
|
|
</includes>
|
|
<replacements>
|
|
<replacement>
|
|
<token>fromClause = FromClause</token>
|
|
<value>fromClause = DruidFromClause</value>
|
|
</replacement>
|
|
</replacements>
|
|
</configuration>
|
|
</plugin>
|
|
|
|
<!-- Adds the path of the generated parser to the build path -->
|
|
<plugin>
|
|
<groupId>org.codehaus.mojo</groupId>
|
|
<artifactId>build-helper-maven-plugin</artifactId>
|
|
<executions>
|
|
<execution>
|
|
<id>add-source</id>
|
|
<phase>generate-sources</phase>
|
|
<goals>
|
|
<goal>add-source</goal>
|
|
</goals>
|
|
<configuration>
|
|
<sources>
|
|
<source>src/generated-sources</source>
|
|
</sources>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
</plugins>
|
|
</build>
|
|
<!-- Build for Druid's custom SQL parser complete -->
|
|
|
|
</project>
|