Skip to content

[CALCITE-6282] Avatica ignores time precision when returning TIME results #12267

[CALCITE-6282] Avatica ignores time precision when returning TIME results

[CALCITE-6282] Avatica ignores time precision when returning TIME results #12267

Workflow file for this run

# 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.
# The default workflow for GitHub Actions that is used for continuous
# integration. A configuration file that is used to control when, where,
# and how different CI jobs are executed.
# For more information on how to modify this file check the following link:
# https://help.github.com/en/actions/automating-your-workflow-with-github-actions
name: CI
on:
push:
paths-ignore:
- 'site/**'
branches:
- '*'
pull_request:
types: [opened, synchronize, reopened, labeled]
paths-ignore:
- 'site/**'
branches:
- '*'
concurrency:
# On main/release, we don't want any jobs cancelled so the sha is used to name the group
# On PR branches, we cancel the job if new commits are pushed
# More info: https://stackoverflow.com/a/68422069/253468
group: ${{ (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/release' ) && format('ci-main-{0}', github.sha) || format('ci-main-{0}', github.ref) }}
cancel-in-progress: true
# Throw OutOfMemoryError in case less than 35% is free after full GC
# This avoids never-ending GC trashing if memory gets too low in case of a memory leak
env:
_JAVA_OPTIONS: '-XX:GCTimeLimit=90 -XX:GCHeapFreeLimit=35'
jobs:
windows-jdk8:
if: github.event.action != 'labeled'
name: 'Windows (JDK 8)'
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 50
- name: 'Set up JDK 8'
uses: actions/setup-java@v2
with:
java-version: 8
distribution: 'zulu'
- uses: burrunan/gradle-cache-action@v1
name: Test
env:
S3_BUILD_CACHE_ACCESS_KEY_ID: ${{ secrets.S3_BUILD_CACHE_ACCESS_KEY_ID }}
S3_BUILD_CACHE_SECRET_KEY: ${{ secrets.S3_BUILD_CACHE_SECRET_KEY }}
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }}
with:
job-id: jdk${{ matrix.jdk }}
remote-build-cache-proxy-enabled: false
# Arrow build is excluded because it is not supported on Windows
# See https://arrow.apache.org/docs/java/install.html#system-compatibility
arguments: --scan --no-parallel --no-daemon build javadoc --exclude-task :arrow:build
- name: 'sqlline and sqllsh'
shell: cmd
run: |
call sqlline.bat -e '!quit'
echo.
echo Sqlline example/csv
call example/csv/sqlline.bat --verbose -u jdbc:calcite:model=example/csv/src/test/resources/model.json -n admin -p admin -f example/csv/src/test/resources/smoke_test.sql
echo.
echo sqlsh
call sqlsh.bat -o headers "select count(*) commits, author from (select substring(author, 1, position(' <' in author)-1) author from git_commits) group by author order by count(*) desc, author limit 20"
windows-jdk17:
if: github.event.action != 'labeled'
name: 'Windows (JDK 17)'
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 50
- name: 'Set up JDK 17'
uses: actions/setup-java@v2
with:
java-version: 17
distribution: 'zulu'
- uses: burrunan/gradle-cache-action@v1
name: Test
env:
S3_BUILD_CACHE_ACCESS_KEY_ID: ${{ secrets.S3_BUILD_CACHE_ACCESS_KEY_ID }}
S3_BUILD_CACHE_SECRET_KEY: ${{ secrets.S3_BUILD_CACHE_SECRET_KEY }}
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }}
with:
job-id: jdk${{ matrix.jdk }}
remote-build-cache-proxy-enabled: false
# Arrow build is excluded because it is not supported on Windows
# See https://arrow.apache.org/docs/java/install.html#system-compatibility
arguments: --scan --no-parallel --no-daemon build --exclude-task :arrow:build
- name: 'sqlline and sqllsh'
shell: cmd
run: |
call sqlline.bat -e '!quit'
echo.
echo Sqlline example/csv
call example/csv/sqlline.bat --verbose -u jdbc:calcite:model=example/csv/src/test/resources/model.json -n admin -p admin -f example/csv/src/test/resources/smoke_test.sql
echo.
echo sqlsh
call sqlsh.bat -o headers "select count(*) commits, author from (select substring(author, 1, position(' <' in author)-1) author from git_commits) group by author order by count(*) desc, author limit 20"
linux-jdk8-oldest-guava-tz:
if: github.event.action != 'labeled'
name: 'Linux (JDK 8), oldest Guava, America/New_York Timezone'
runs-on: ubuntu-latest
env:
TZ: 'America/New_York' # flips between −05:00 and −04:00
GUAVA: '21.0' # oldest Guava
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 50
- name: 'Set up JDK 8'
uses: actions/setup-java@v2
with:
java-version: 8
distribution: 'zulu'
- uses: burrunan/gradle-cache-action@v1
name: Test
env:
S3_BUILD_CACHE_ACCESS_KEY_ID: ${{ secrets.S3_BUILD_CACHE_ACCESS_KEY_ID }}
S3_BUILD_CACHE_SECRET_KEY: ${{ secrets.S3_BUILD_CACHE_SECRET_KEY }}
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }}
with:
job-id: jdk${{ matrix.jdk }}
remote-build-cache-proxy-enabled: false
arguments: --scan --no-parallel --no-daemon -Pguava.version=${{ env.GUAVA }} build
linux-jdk8-latest-guava-tz:
if: github.event.action != 'labeled'
name: 'Linux (JDK 8), latest Guava, America/New_York Timezone'
runs-on: ubuntu-latest
env:
TZ: 'America/New_York' # flips between −05:00 and −04:00
GUAVA: '32.1.3-jre' # latest supported Guava version
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 50
- name: 'Set up JDK 8'
uses: actions/setup-java@v2
with:
java-version: 8
distribution: 'zulu'
- uses: burrunan/gradle-cache-action@v1
name: Test
env:
S3_BUILD_CACHE_ACCESS_KEY_ID: ${{ secrets.S3_BUILD_CACHE_ACCESS_KEY_ID }}
S3_BUILD_CACHE_SECRET_KEY: ${{ secrets.S3_BUILD_CACHE_SECRET_KEY }}
with:
job-id: jdk${{ matrix.jdk }}
remote-build-cache-proxy-enabled: false
arguments: --scan --no-parallel --no-daemon -Pguava.version=${{ env.GUAVA }} tasks build
linux-jdk11-tz:
if: github.event.action != 'labeled'
name: 'Linux (JDK 11), Pacific/Chatham Timezone'
runs-on: ubuntu-latest
env:
TZ: 'Pacific/Chatham' # flips between +12:45 and +13:45
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 50
- name: 'Set up JDK 11'
uses: actions/setup-java@v2
with:
java-version: 11
distribution: 'zulu'
- uses: burrunan/gradle-cache-action@v1
name: Test
env:
S3_BUILD_CACHE_ACCESS_KEY_ID: ${{ secrets.S3_BUILD_CACHE_ACCESS_KEY_ID }}
S3_BUILD_CACHE_SECRET_KEY: ${{ secrets.S3_BUILD_CACHE_SECRET_KEY }}
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }}
with:
job-id: jdk${{ matrix.jdk }}
remote-build-cache-proxy-enabled: false
arguments: --scan --no-parallel --no-daemon build
linux-jdk17: # LTS JDK version, don't remove until EOL
if: github.event.action != 'labeled'
name: 'Linux (JDK 17)'
runs-on: ubuntu-latest
env:
GUAVA: '21.0' # oldest Guava
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 50
- name: 'Set up JDK 17'
uses: actions/setup-java@v2
with:
java-version: 17
distribution: 'zulu'
- uses: burrunan/gradle-cache-action@v1
name: Test
env:
S3_BUILD_CACHE_ACCESS_KEY_ID: ${{ secrets.S3_BUILD_CACHE_ACCESS_KEY_ID }}
S3_BUILD_CACHE_SECRET_KEY: ${{ secrets.S3_BUILD_CACHE_SECRET_KEY }}
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }}
# The following option `--add-opens=java.base/java.nio=ALL-UNNAMED` is required jdk17+
# to avoid error. See https://arrow.apache.org/docs/java/install.html#java-compatibility
_JAVA_OPTIONS: ${{ env._JAVA_OPTIONS }} --add-opens=java.base/java.nio=ALL-UNNAMED
with:
job-id: jdk${{ matrix.jdk }}
remote-build-cache-proxy-enabled: false
arguments: --scan --no-parallel --no-daemon -Pguava.version=${{ env.GUAVA }} build
linux-jdk19: # latest JDK version supported by ForbiddenAPIs plugin, keep this updated (see https://jdk.java.net/)
if: github.event.action != 'labeled'
name: 'Linux (JDK 19)'
runs-on: ubuntu-latest
env:
GUAVA: '21.0' # oldest Guava
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 50
- name: 'Set up JDK 19'
uses: actions/setup-java@v2
with:
java-version: 19
distribution: 'zulu'
- uses: burrunan/gradle-cache-action@v1
name: Test
env:
S3_BUILD_CACHE_ACCESS_KEY_ID: ${{ secrets.S3_BUILD_CACHE_ACCESS_KEY_ID }}
S3_BUILD_CACHE_SECRET_KEY: ${{ secrets.S3_BUILD_CACHE_SECRET_KEY }}
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }}
# The following option `--add-opens=java.base/java.nio=ALL-UNNAMED` is required jdk17+
# to avoid error. See https://arrow.apache.org/docs/java/install.html#java-compatibility
_JAVA_OPTIONS: ${{ env._JAVA_OPTIONS }} --add-opens=java.base/java.nio=ALL-UNNAMED
with:
job-id: jdk${{ matrix.jdk }}
remote-build-cache-proxy-enabled: false
arguments: --scan --no-parallel --no-daemon -Pguava.version=${{ env.GUAVA }} tasks build
linux-avatica:
if: github.event.action != 'labeled'
name: 'Linux (JDK 11), Avatica main'
runs-on: ubuntu-latest
steps:
- name: 'Set up JDK 11'
uses: actions/setup-java@v2
with:
java-version: 11
distribution: 'zulu'
- name: 'Clone Avatica to Maven Local repository'
run: |
git clone --branch main --depth 100 https://github.com/apache/calcite-avatica.git ../calcite-avatica
- uses: burrunan/gradle-cache-action@v1
name: Build Avatica
env:
S3_BUILD_CACHE_ACCESS_KEY_ID: ${{ secrets.S3_BUILD_CACHE_ACCESS_KEY_ID }}
S3_BUILD_CACHE_SECRET_KEY: ${{ secrets.S3_BUILD_CACHE_SECRET_KEY }}
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }}
with:
job-id: avatica-jdk${{ matrix.jdk }}
remote-build-cache-proxy-enabled: false
build-root-directory: ../calcite-avatica
arguments: publishToMavenLocal
properties: |
calcite.avatica.version=1.0.0-dev-main
skipJavadoc=
- uses: actions/checkout@v3
with:
fetch-depth: 50
- uses: burrunan/gradle-cache-action@v1
name: Test
env:
S3_BUILD_CACHE_ACCESS_KEY_ID: ${{ secrets.S3_BUILD_CACHE_ACCESS_KEY_ID }}
S3_BUILD_CACHE_SECRET_KEY: ${{ secrets.S3_BUILD_CACHE_SECRET_KEY }}
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }}
with:
job-id: jdk${{ matrix.jdk }}
remote-build-cache-proxy-enabled: false
execution-only-caches: true
arguments: --scan --no-parallel --no-daemon build javadoc
properties: |
calcite.avatica.version=1.0.0-dev-main-SNAPSHOT
enableMavenLocal=
mac:
if: github.event.action != 'labeled'
name: 'macOS (JDK 19)'
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 50
- name: 'Set up JDK 19'
uses: actions/setup-java@v2
with:
java-version: 19
distribution: 'zulu'
- uses: burrunan/gradle-cache-action@v1
name: Test
env:
S3_BUILD_CACHE_ACCESS_KEY_ID: ${{ secrets.S3_BUILD_CACHE_ACCESS_KEY_ID }}
S3_BUILD_CACHE_SECRET_KEY: ${{ secrets.S3_BUILD_CACHE_SECRET_KEY }}
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }}
# The following option `--add-opens=java.base/java.nio=ALL-UNNAMED` is required jdk17+
# to avoid error. See https://arrow.apache.org/docs/java/install.html#java-compatibility
_JAVA_OPTIONS: ${{ env._JAVA_OPTIONS }} --add-opens=java.base/java.nio=ALL-UNNAMED
with:
job-id: jdk19
remote-build-cache-proxy-enabled: false
arguments: --scan --no-parallel --no-daemon build javadoc
- name: 'sqlline and sqllsh'
run: |
./sqlline -e '!quit'
echo
echo Sqlline example/csv
./example/csv/sqlline --verbose -u jdbc:calcite:model=example/csv/src/test/resources/model.json -n admin -p admin -f example/csv/src/test/resources/smoke_test.sql
echo
echo sqlsh
./sqlsh -o headers "select count(*) commits, author from (select substring(author, 1, position(' <' in author)-1) author from git_commits) group by author order by count(*) desc, author limit 20"
errorprone-guava-latest: # LTS JDK version, don't remove until EOL
if: github.event.action != 'labeled'
name: 'Error Prone (JDK 11), latest Guava'
runs-on: ubuntu-latest
env:
GUAVA: '32.1.3-jre' # ErrorProne checks for Beta APIs, so use the latest supported Guava version
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 50
- name: 'Set up JDK 11'
uses: actions/setup-java@v2
with:
java-version: 11
distribution: 'zulu'
- uses: burrunan/gradle-cache-action@v1
name: Test
env:
S3_BUILD_CACHE_ACCESS_KEY_ID: ${{ secrets.S3_BUILD_CACHE_ACCESS_KEY_ID }}
S3_BUILD_CACHE_SECRET_KEY: ${{ secrets.S3_BUILD_CACHE_SECRET_KEY }}
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }}
with:
job-id: errprone
remote-build-cache-proxy-enabled: false
arguments: --scan --no-parallel --no-daemon -Pguava.version=${{ env.GUAVA }} -PenableErrorprone classes
linux-checkerframework:
name: 'CheckerFramework (JDK 11)'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 50
- name: 'Set up JDK 11'
uses: actions/setup-java@v2
with:
java-version: 11
distribution: 'zulu'
- name: 'Run CheckerFramework'
uses: burrunan/gradle-cache-action@v1
env:
S3_BUILD_CACHE_ACCESS_KEY_ID: ${{ secrets.S3_BUILD_CACHE_ACCESS_KEY_ID }}
S3_BUILD_CACHE_SECRET_KEY: ${{ secrets.S3_BUILD_CACHE_SECRET_KEY }}
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }}
with:
job-id: checkerframework-jdk11
remote-build-cache-proxy-enabled: false
arguments: --scan --no-parallel --no-daemon -PenableCheckerframework :linq4j:classes :core:classes
linux-checkerframework-guava29:
name: 'CheckerFramework (JDK 11), oldest Guava'
runs-on: ubuntu-latest
env:
GUAVA: '21.0' # oldest Guava
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 50
- name: 'Set up JDK 11'
uses: actions/setup-java@v2
with:
java-version: 11
distribution: 'zulu'
- name: 'Run CheckerFramework'
uses: burrunan/gradle-cache-action@v1
env:
S3_BUILD_CACHE_ACCESS_KEY_ID: ${{ secrets.S3_BUILD_CACHE_ACCESS_KEY_ID }}
S3_BUILD_CACHE_SECRET_KEY: ${{ secrets.S3_BUILD_CACHE_SECRET_KEY }}
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }}
with:
job-id: checkerframework-jdk11
remote-build-cache-proxy-enabled: false
arguments: --scan --no-parallel --no-daemon -Pguava.version=${{ env.GUAVA }} -PenableCheckerframework :linq4j:classes :core:classes
linux-slow:
# Run slow tests when the commit is on main or it is requested explicitly by adding an
# appropriate label in the PR
if: github.ref == 'refs/heads/main' || contains(github.event.pull_request.labels.*.name, 'slow-tests-needed')
name: 'Linux (JDK 8) Slow Tests'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 50
- name: 'Set up JDK 8'
uses: actions/setup-java@v2
with:
java-version: 8
distribution: 'zulu'
- uses: burrunan/gradle-cache-action@v1
name: Test
env:
S3_BUILD_CACHE_ACCESS_KEY_ID: ${{ secrets.S3_BUILD_CACHE_ACCESS_KEY_ID }}
S3_BUILD_CACHE_SECRET_KEY: ${{ secrets.S3_BUILD_CACHE_SECRET_KEY }}
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }}
with:
job-id: jdk8
remote-build-cache-proxy-enabled: false
arguments: --scan --no-parallel --no-daemon testSlow
linux-druid:
if: github.event.action != 'labeled'
name: 'Druid Tests'
runs-on: ubuntu-latest
steps:
- name: 'Set up JDK 17'
uses: actions/setup-java@v2
with:
java-version: 17
distribution: 'zulu'
- name: 'Checkout Druid dataset'
uses: actions/checkout@v3
with:
repository: zabetak/calcite-druid-dataset
fetch-depth: 1
path: druid-dataset
- name: 'Start Druid containers'
working-directory: ./druid-dataset
run: |
chmod -R 777 storage
docker-compose up -d
- name: 'Wait Druid nodes to startup'
run: |
until docker logs coordinator | grep "Successfully started lifecycle \[module\]"; do sleep 1s; done
until docker logs router | grep "Successfully started lifecycle \[module\]"; do sleep 1s; done
until docker logs historical | grep "Successfully started lifecycle \[module\]"; do sleep 1s; done
until docker logs middlemanager | grep "Successfully started lifecycle \[module\]"; do sleep 1s; done
until docker logs broker | grep "Successfully started lifecycle \[module\]"; do sleep 1s; done
- name: 'Index Foodmart/Wikipedia datasets'
working-directory: ./druid-dataset
run: ./index.sh 30s
- uses: actions/checkout@v3
with:
fetch-depth: 1
path: calcite
- uses: burrunan/gradle-cache-action@v1
name: 'Run Druid tests'
timeout-minutes: 10
env:
S3_BUILD_CACHE_ACCESS_KEY_ID: ${{ secrets.S3_BUILD_CACHE_ACCESS_KEY_ID }}
S3_BUILD_CACHE_SECRET_KEY: ${{ secrets.S3_BUILD_CACHE_SECRET_KEY }}
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }}
with:
build-root-directory: ./calcite
job-id: Druid8
remote-build-cache-proxy-enabled: false
arguments: --scan --no-parallel --no-daemon :druid:test -Dcalcite.test.druid=true