Repository navigation
psql ODBC Linux CI - Don't wrap internal queries in a savepoint at rollback level 0 (#208) (#209) The per-query savepoint (SAVEPOINT _per_query_svp_; <query>; RELEASE _per_query_svp_) that protects internal driver queries -- notably the DEALLOCATE issued when a prepared statement is freed inside a transaction -- was applied whenever the ROLLBACK_ON_ERROR flag was set, without regard to the connection's rollback-on-error level. With Protocol=7.4-0 the user has explicitly asked for no automatic savepoint... #105
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: Linux Build | |
| run-name: psql ODBC Linux CI - ${{ github.event.head_commit.message }} | |
| on: | |
| push: | |
| branches: [ "main" ] | |
| pull_request: | |
| branches: [ "main" ] | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| jobs: | |
| build-and-test: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: ubuntu-latest | |
| name: Debian (Ubuntu) | |
| - os: ubuntu-latest | |
| name: Red Hat (Fedora) | |
| container: fedora:latest | |
| name: ${{ matrix.name }} | |
| runs-on: ${{ matrix.os }} | |
| container: ${{ matrix.container || '' }} | |
| steps: | |
| - name: Install dependencies (Debian) | |
| if: matrix.container == '' | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y \ | |
| build-essential autoconf automake libtool \ | |
| libpq-dev unixodbc-dev unixodbc \ | |
| postgresql postgresql-client | |
| if ! command -v odbc_config >/dev/null 2>&1; then | |
| sudo tee /usr/local/bin/odbc_config > /dev/null <<'EOF' | |
| #!/bin/sh | |
| case $1 in | |
| --include-prefix) echo "/usr/include" ;; | |
| --lib-prefix) echo "/usr/lib" ;; | |
| --libs) echo "-lodbc" ;; | |
| *) echo "$0: unknown argument '$1'"; exit 1 ;; | |
| esac | |
| EOF | |
| sudo chmod +x /usr/local/bin/odbc_config | |
| fi | |
| - name: Install dependencies (Fedora) | |
| if: matrix.container == 'fedora:latest' | |
| run: | | |
| dnf install -y \ | |
| gcc make autoconf automake libtool \ | |
| libpq-devel unixODBC-devel postgresql-server postgresql \ | |
| diffutils git | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Bootstrap | |
| run: autoreconf -fi | |
| - name: Configure | |
| run: | | |
| PG_CONFIG=$(find /usr -name pg_config -type f 2>/dev/null | head -1) | |
| if [ -n "$PG_CONFIG" ]; then | |
| export PATH="$(dirname $PG_CONFIG):$PATH" | |
| fi | |
| ./configure | |
| - name: Build | |
| run: make -j$(nproc) | |
| - name: Start PostgreSQL (Debian) | |
| if: matrix.container == '' | |
| run: | | |
| sudo mkdir -p /var/run/postgresql | |
| sudo chown postgres:postgres /var/run/postgresql | |
| sudo pg_ctlcluster $(pg_lsclusters -h | head -1 | awk '{print $1, $2}') start | |
| sudo -u postgres createuser -s runner | |
| sudo -u postgres createdb contrib_regression | |
| - name: Start PostgreSQL (Fedora) | |
| if: matrix.container == 'fedora:latest' | |
| run: | | |
| mkdir -p /var/lib/pgsql/data /var/run/postgresql | |
| chown postgres:postgres /var/lib/pgsql/data /var/run/postgresql | |
| su postgres -c 'initdb -D /var/lib/pgsql/data' || { echo "initdb failed"; exit 1; } | |
| su postgres -c "sed -i 's/^logging_collector = on/logging_collector = off/' /var/lib/pgsql/data/postgresql.conf" | |
| su postgres -c 'pg_ctl -D /var/lib/pgsql/data -l /tmp/pg.log -t 30 start' || { cat /tmp/pg.log; exit 1; } | |
| su postgres -c 'createuser -s root' | |
| createdb contrib_regression | |
| - name: Test | |
| run: | | |
| cd test | |
| make installcheck |