Files
impala/bin/set-classpath.sh
Joe McDonnell 5eea4f6f79 IMPALA-14559: Ship calcite-planner jar in Impala packages
This adds the java/impala-package Maven project to make it easier
to ship / test the Calcite planner. impala-package has a dependency
on impala-frontend and calcite-planner, so its classpath requires
no extra work when constructing the classpath.

An additional cleanup is that this no longer puts the
impala-frontend-*-tests.jar on the classpath by default. This requires
updating the query event hooks test, as it relies on that jar being
present.

This does not change the default value for the use_calcite_planner
query option, so there is no change in behavior.

Testing:
 - Ran a core job
 - Built docker images and OS packages locally

Change-Id: I81dec2a5b59e279229a735c8bb1a23c77111a793
Reviewed-on: http://gerrit.cloudera.org:8080/23497
Reviewed-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com>
Tested-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com>
2025-11-21 03:36:12 +00:00

58 lines
2.0 KiB
Bash

#!/bin/bash
#
# 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.
# This script explicitly sets the CLASSPATH for embedded JVMs (e.g. in
# Impalad or in runquery) Because embedded JVMs do not honour
# CLASSPATH wildcard expansion, we have to add every dependency jar
# explicitly to the CLASSPATH.
if [ "$0" = "$BASH_SOURCE" ]; then
>&2 echo "error: $BASH_SOURCE should be sourced, not executed. e.g:"
>&2 echo " source $BASH_SOURCE"
exit 1
fi
# IMPALA-10057: The fe/target/classes and fe/target/test-classes
# directory can get cleaned out / rebuilt as part of running the
# frontend tests. This uses jars to avoid issues related to that
# inconsistency.
CLASSPATH=\
"$IMPALA_HOME"/fe/src/test/resources:
PACKAGE_CP_FILE="$IMPALA_HOME/java/impala-package/target/package-classpath.txt"
if [ ! -s "$PACKAGE_CP_FILE" ]; then
>&2 echo impala-package classpath file "$PACKAGE_CP_FILE" missing.
>&2 echo Build the impala-package first.
return 1
fi
CLASSPATH=$(cat "$PACKAGE_CP_FILE"):"$CLASSPATH"
if [[ "${1:-notest}" = "test" ]]; then
FE_TEST_CP_FILE="$IMPALA_HOME/fe/target/test-classpath.txt"
CLASSPATH=$(cat "$FE_TEST_CP_FILE"):\
"$IMPALA_HOME"/fe/target/impala-frontend-${IMPALA_VERSION}-tests.jar:"$CLASSPATH"
fi
: ${CUSTOM_CLASSPATH=}
CLASSPATH="$CUSTOM_CLASSPATH:$CLASSPATH"
export CLASSPATH