Enable multi-threaded execution for TableFunction #38
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Ubuntu | |
| on: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| types: | |
| - opened | |
| - synchronize | |
| - reopened | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 120 | |
| strategy: | |
| matrix: | |
| ruby: ['3.2.9', '3.3.10', '3.4.9', '4.0.2', 'head'] | |
| duckdb: ['1.4.4', '1.5.1'] | |
| services: | |
| mysql: | |
| image: mysql:8.0 | |
| env: | |
| MYSQL_ROOT_PASSWORD: root | |
| MYSQL_DATABASE: test_db | |
| MYSQL_USER: test_user | |
| MYSQL_PASSWORD: test_password | |
| ports: | |
| - 3306:3306 | |
| options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Ruby | |
| uses: ruby/setup-ruby@v1 | |
| with: | |
| ruby-version: ${{ matrix.ruby }} | |
| - name: duckdb cache | |
| id: duckdb-cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: libduckdb-linux-amd64 | |
| key: ${{ runner.os }}-duckdb-v${{ matrix.duckdb }} | |
| - name: Download duckdb ${{ matrix.duckdb }} | |
| if: steps.duckdb-cache.outputs.cache-hit != 'true' | |
| env: | |
| DUCKDB_VERSION: ${{ matrix.duckdb }} | |
| run: | | |
| curl -OL https://github.com/duckdb/duckdb/releases/download/v${DUCKDB_VERSION}/libduckdb-linux-amd64.zip | |
| case "${DUCKDB_VERSION}" in | |
| "1.5.1") EXPECTED_SHA256="21aec66a60eae1696270ba715a481ab066a88d99a62718d0577579ac1a7a4834" ;; | |
| "1.4.4") EXPECTED_SHA256="09cc288295964d897b47665d1898e16e8ef176cae9ea615797fc136eae15bd5d" ;; | |
| *) echo "No known SHA256 for DuckDB v${DUCKDB_VERSION}"; exit 1 ;; | |
| esac | |
| echo "${EXPECTED_SHA256} libduckdb-linux-amd64.zip" | sha256sum -c | |
| mkdir libduckdb-linux-amd64 | |
| unzip libduckdb-linux-amd64.zip -d libduckdb-linux-amd64 | |
| - name: setup libduckdb.so | |
| run: | | |
| sudo cp libduckdb-linux-amd64/libduckdb.so /usr/local/lib/ | |
| sudo ldconfig | |
| - name: bundle install with Ruby ${{ matrix.ruby }} | |
| run: | | |
| bundle install --jobs 4 --retry 3 | |
| - name: Build test with DUCKDB_API_NO_DEPRECATED and Ruby ${{ matrix.ruby }} | |
| run: | | |
| env DUCKDB_API_NO_DEPRECATED=1 bundle exec rake build -- --with-duckdb-include=${GITHUB_WORKSPACE}/libduckdb-linux-amd64 --with-duckdb-lib=${GITHUB_WORKSPACE}/libduckdb-linux-amd64 | |
| bundle exec rake clean | |
| - name: Build with Ruby ${{ matrix.ruby }} | |
| run: | | |
| bundle exec rake build -- --with-duckdb-include=${GITHUB_WORKSPACE}/libduckdb-linux-amd64 --with-duckdb-lib=${GITHUB_WORKSPACE}/libduckdb-linux-amd64 | |
| - name: confirm duckdb library version | |
| env: | |
| EXPECTED_DUCKDB_VERSION: ${{ matrix.duckdb }} | |
| run: | | |
| ruby -Ilib -rduckdb -e ' | |
| actual = DuckDB::LIBRARY_VERSION | |
| expected = ENV.fetch("EXPECTED_DUCKDB_VERSION") | |
| abort("Expected DuckDB #{expected}, got #{actual}") if actual != expected | |
| puts "duckdb library #{actual}" | |
| ' | |
| - name: test with Ruby ${{ matrix.ruby }} | |
| env: | |
| MYSQL_TEST: 1 | |
| run: | | |
| env RUBYOPT=-W:deprecated rake test | |
| post-test: | |
| name: All tests passed on Ubuntu | |
| runs-on: ubuntu-latest | |
| needs: test | |
| steps: | |
| - run: echo ok |