You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by li...@apache.org on 2022/12/30 14:28:22 UTC

[arrow-adbc] branch main updated: chore(dev/release): create source archive on GitHub Actions (#292)

This is an automated email from the ASF dual-hosted git repository.

lidavidm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-adbc.git


The following commit(s) were added to refs/heads/main by this push:
     new d8c8d48  chore(dev/release): create source archive on GitHub Actions (#292)
d8c8d48 is described below

commit d8c8d4898dc291376829b64a4856524b0575479a
Author: Sutou Kouhei <ko...@clear-code.com>
AuthorDate: Fri Dec 30 23:28:18 2022 +0900

    chore(dev/release): create source archive on GitHub Actions (#292)
    
    Fixes #291.
---
 .github/workflows/packaging.yml                    | 275 ++++++++++++++++-----
 c/cmake_modules/AdbcVersion.cmake                  |   2 +-
 ci/linux-packages/debian/changelog                 |   5 +
 ci/linux-packages/debian/control                   |  16 +-
 ...0.install => libadbc-driver-manager001.install} |   0
 ...nstall => libadbc-driver-postgresql001.install} |   0
 ...00.install => libadbc-driver-sqlite001.install} |   0
 ...libadbc-glib1.install => libadbc-glib0.install} |   0
 ci/linux-packages/yum/apache-arrow-adbc.spec.in    |   2 +
 ci/scripts/source_build.sh                         |  61 +++++
 dev/release/01-prepare.sh                          |  14 +-
 dev/release/{03-binary-sign.sh => 02-sign.sh}      |  13 +-
 dev/release/02-source.sh                           | 120 ---------
 dev/release/03-source.sh                           |  76 ++++++
 dev/release/post-07-bump-versions.sh               |  12 +-
 dev/release/utils-prepare.sh                       |  41 ++-
 docs/source/development/releasing.rst              |  19 +-
 glib/adbc-glib/connection-raw.h                    |   2 +-
 glib/adbc-glib/connection.c                        |  10 +-
 glib/adbc-glib/connection.h                        |   8 +-
 glib/adbc-glib/database-raw.h                      |   2 +-
 glib/adbc-glib/database.c                          |  10 +-
 glib/adbc-glib/database.h                          |   8 +-
 glib/adbc-glib/error-raw.h                         |   6 +-
 glib/adbc-glib/error.h                             |   2 +-
 glib/adbc-glib/statement-raw.h                     |   2 +-
 glib/adbc-glib/statement.c                         |  10 +-
 glib/adbc-glib/statement.h                         |   8 +-
 glib/adbc-glib/version.h.in                        |  32 +--
 glib/meson.build                                   |   4 +-
 java/core/pom.xml                                  |   2 +-
 java/driver-manager/pom.xml                        |   2 +-
 java/driver/flight-sql-validation/pom.xml          |   2 +-
 java/driver/flight-sql/pom.xml                     |   2 +-
 java/driver/jdbc-validation-derby/pom.xml          |   2 +-
 java/driver/jdbc-validation-postgresql/pom.xml     |   2 +-
 java/driver/jdbc/pom.xml                           |   2 +-
 java/driver/validation/pom.xml                     |   2 +-
 java/pom.xml                                       |   4 +-
 java/sql/pom.xml                                   |   2 +-
 ruby/lib/adbc/version.rb                           |   4 +-
 ruby/red-adbc.gemspec                              |   8 +-
 42 files changed, 511 insertions(+), 283 deletions(-)

diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml
index c72076a..9a1b837 100644
--- a/.github/workflows/packaging.yml
+++ b/.github/workflows/packaging.yml
@@ -51,20 +51,86 @@ concurrency:
   cancel-in-progress: true
 
 jobs:
-  docs:
-    name: "Documentation"
+  source:
+    name: Source
     runs-on: ubuntu-latest
     steps:
       - uses: actions/checkout@v3
         with:
           fetch-depth: 0
-          persist-credentials: true
 
       - name: Update tags
         shell: bash
         run: |
           git fetch --tags --force origin
 
+      - name: Prepare version
+        shell: bash
+        run: |
+          if [ "${GITHUB_REF_TYPE}" = "tag" ]; then
+            VERSION=${GITHUB_REF_NAME#apache-arrow-adbc-}
+            VERSION=${VERSION%-rc*}
+          else
+            VERSION=$(grep 'set(ADBC_VERSION' c/cmake_modules/AdbcVersion.cmake | \
+                        grep -E -o '[0-9]+\.[0-9]+\.[0-9]+')
+            description=$(git describe \
+                            --always \
+                            --dirty \
+                            --long \
+                            --match "apache-arrow-adbc-[0-9]*.*" \
+                            --tags)
+            case "${description}" in
+              # apache-arrow-adbc-0.1.0-10-1234567-dirty
+              apache-arrow-adbc-*)
+                # 10-1234567-dirty
+                distance="${description#apache-arrow-adbc-*.*.*-}"
+                # 10-1234567
+                distance="${distance%-dirty}"
+                # 10
+                distance="${distance%-*}"
+                ;;
+              *)
+                distance=$(git log --format=oneline | wc -l)
+                ;;
+            esac
+            VERSION="${VERSION}.dev${distance}"
+          fi
+          echo "VERSION=${VERSION}" >> $GITHUB_ENV
+
+      - name: Create archive
+        shell: bash
+        run: |
+          ci/scripts/source_build.sh \
+            apache-arrow-adbc-${VERSION} \
+            $(git log -n 1 --format=%h)
+
+      - uses: actions/upload-artifact@v3
+        with:
+          name: source
+          retention-days: 7
+          path: |
+            apache-arrow-adbc-${{ env.VERSION }}.tar.gz
+
+  docs:
+    name: "Documentation"
+    runs-on: ubuntu-latest
+    needs:
+      - source
+    steps:
+      - uses: actions/download-artifact@v3
+        with:
+          name: source
+
+      - name: Extract source archive
+        run: |
+          source_archive=$(echo apache-arrow-adbc-*.tar.gz)
+          VERSION=${source_archive#apache-arrow-adbc-}
+          VERSION=${VERSION%.tar.gz}
+          echo "VERSION=${VERSION}" >> $GITHUB_ENV
+
+          tar xf apache-arrow-adbc-${VERSION}.tar.gz
+          mv apache-arrow-adbc-${VERSION} adbc
+
       - name: Show inputs
         shell: bash
         run: |
@@ -75,12 +141,18 @@ jobs:
       - name: Build and test
         shell: bash
         run: |
-          docker-compose run docs
+          pushd adbc
+          docker-compose run \
+            -e SETUPTOOLS_SCM_PRETEND_VERSION=${VERSION} \
+            docs
+          popd
 
       - name: Compress docs
         shell: bash
         run: |
-          tar --transform "s|docs/build/html|adbc-docs|" -czf docs.tgz docs/build/html
+          pushd adbc
+          tar --transform "s|docs/build/html|adbc-docs|" -czf ../docs.tgz docs/build/html
+          popd
 
       - name: Archive docs
         uses: actions/upload-artifact@v3
@@ -93,16 +165,22 @@ jobs:
   java:
     name: "Java 1.8"
     runs-on: ubuntu-latest
+    needs:
+      - source
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/download-artifact@v3
         with:
-          fetch-depth: 0
-          persist-credentials: true
+          name: source
 
-      - name: Update tags
-        shell: bash
+      - name: Extract source archive
         run: |
-          git fetch --tags --force origin
+          source_archive=$(echo apache-arrow-adbc-*.tar.gz)
+          VERSION=${source_archive#apache-arrow-adbc-}
+          VERSION=${VERSION%.tar.gz}
+          echo "VERSION=${VERSION}" >> $GITHUB_ENV
+
+          tar xf apache-arrow-adbc-${VERSION}.tar.gz
+          mv apache-arrow-adbc-${VERSION} adbc
 
       - name: Show inputs
         shell: bash
@@ -114,7 +192,10 @@ jobs:
       - name: Build and test
         shell: bash
         run: |
+          pushd adbc/
           docker-compose run java-dist
+          popd
+          cp -a adbc/dist/ ./
 
       - name: Archive JARs
         uses: actions/upload-artifact@v3
@@ -128,6 +209,8 @@ jobs:
   linux:
     name: Linux ${{ matrix.target }}
     runs-on: ubuntu-latest
+    needs:
+      - source
     strategy:
       fail-fast: false
       matrix:
@@ -138,7 +221,9 @@ jobs:
           - debian-bullseye
           - ubuntu-jammy
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/download-artifact@v3
+        with:
+          name: source
 
       - uses: actions/checkout@v3
         with:
@@ -161,11 +246,16 @@ jobs:
           distribution=$(echo ${{ matrix.target }} | cut -d- -f1)
           echo "DISTRIBUTION=${distribution}" >> $GITHUB_ENV
 
-          if [ "${GITHUB_REF_TYPE}" = "tag" ]; then
-            VERSION=${GITHUB_REF_NAME#apache-arrow-adbc-}
-            VERSION=${VERSION%-rc*}
-            echo "VERSION=${VERSION}" >> $GITHUB_ENV
-          fi
+          source_archive=$(echo apache-arrow-adbc-*.tar.gz)
+          VERSION=${source_archive#apache-arrow-adbc-}
+          VERSION=${VERSION%.tar.gz}
+          echo "VERSION=${VERSION}" >> $GITHUB_ENV
+
+      - name: Extract source archive
+        run: |
+          tar xf apache-arrow-adbc-${VERSION}.tar.gz
+          mv apache-arrow-adbc-${VERSION} adbc
+          mv apache-arrow-adbc-${VERSION}.tar.gz adbc/ci/linux-packages/
 
       - name: Set up Ruby
         uses: ruby/setup-ruby@v1
@@ -175,7 +265,7 @@ jobs:
       - name: Cache ccache
         uses: actions/cache@v3
         with:
-          path: ci/linux-packages/${{ env.TASK_NAMESPACE }}/build/${{ matrix.target }}/ccache
+          path: adbc/ci/linux-packages/${{ env.TASK_NAMESPACE }}/build/${{ matrix.target }}/ccache
           key: linux-${{ env.TASK_NAMESPACE }}-ccache-${{ matrix.target }}-{{ "${{ hashFiles('adbc.h', 'c/**', 'glib/**') }}" }}
           restore-keys: linux-${{ env.TASK_NAMESPACE }}-ccache-${{ matrix.target }}-
 
@@ -188,8 +278,10 @@ jobs:
 
       - name: Build
         run: |
-          pushd ci/linux-packages
-          rake version:update
+          pushd adbc/ci/linux-packages
+          if [ "${GITHUB_REF_TYPE}" != "tag" ]; then
+            rake version:update
+          fi
           rake docker:pull || :
           rake --trace ${TASK_NAMESPACE}:build BUILD_DIR=build
           popd
@@ -197,7 +289,7 @@ jobs:
       - name: Prepare artifacts
         run: |
           cp -a \
-            ci/linux-packages/${{ env.TASK_NAMESPACE }}/repositories/${DISTRIBUTION} \
+            adbc/ci/linux-packages/${{ env.TASK_NAMESPACE }}/repositories/${DISTRIBUTION} \
             ./
           tar czf ${{ matrix.target }}.tar.gz ${DISTRIBUTION}
 
@@ -205,12 +297,13 @@ jobs:
         uses: actions/upload-artifact@v3
         with:
           name: ${{ matrix.target }}
+          retention-days: 7
           path: |
             ${{ matrix.target }}.tar.gz
 
       - name: Push Docker image
         run: |
-          pushd ci/linux-packages
+          pushd adbc/ci/linux-packages
           rake docker:push || :
           popd
 
@@ -232,17 +325,19 @@ jobs:
             gpg --full-generate-key --batch
           GPG_KEY_ID=$(gpg --list-keys --with-colon test@example.com | grep fpr | cut -d: -f10)
           echo "GPG_KEY_ID=${GPG_KEY_ID}" >> ${GITHUB_ENV}
-          gpg --export --armor test@example.com > ci/linux-packages/KEYS
+          gpg --export --armor test@example.com > adbc/ci/linux-packages/KEYS
 
       - name: Test
         run: |
-          pushd ci/linux-packages
+          pushd adbc/ci/linux-packages
           rake --trace ${TASK_NAMESPACE}:test
           popd
 
   python-manylinux:
     name: "Python ${{ matrix.arch }} manylinux${{ matrix.manylinux_version }}"
     runs-on: ubuntu-latest
+    needs:
+      - source
     strategy:
       matrix:
         arch: ["amd64", "arm64v8"]
@@ -254,15 +349,19 @@ jobs:
           - arch: arm64v8
             is_pr: true
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/download-artifact@v3
         with:
-          fetch-depth: 0
-          persist-credentials: true
+          name: source
 
-      - name: Update tags
-        shell: bash
+      - name: Extract source archive
         run: |
-          git fetch --tags --force origin
+          source_archive=$(echo apache-arrow-adbc-*.tar.gz)
+          VERSION=${source_archive#apache-arrow-adbc-}
+          VERSION=${VERSION%.tar.gz}
+          echo "VERSION=${VERSION}" >> $GITHUB_ENV
+
+          tar xf apache-arrow-adbc-${VERSION}.tar.gz
+          mv apache-arrow-adbc-${VERSION} adbc
 
       - name: Show inputs
         shell: bash
@@ -280,7 +379,11 @@ jobs:
           ARCH: ${{ matrix.arch }}
           MANYLINUX: ${{ matrix.manylinux_version }}
         run: |
-          docker-compose run python-wheel-manylinux
+          pushd adbc
+          docker-compose run \
+            -e SETUPTOOLS_SCM_PRETEND_VERSION=${VERSION} \
+            python-wheel-manylinux
+          popd
 
       - name: Archive wheels
         uses: actions/upload-artifact@v3
@@ -288,9 +391,9 @@ jobs:
           name: python-${{ matrix.arch }}-manylinux${{ matrix.manylinux_version }}
           retention-days: 7
           path: |
-            python/adbc_driver_manager/repaired_wheels/*.whl
-            python/adbc_driver_postgresql/repaired_wheels/*.whl
-            python/adbc_driver_sqlite/repaired_wheels/*.whl
+            adbc/python/adbc_driver_manager/repaired_wheels/*.whl
+            adbc/python/adbc_driver_postgresql/repaired_wheels/*.whl
+            adbc/python/adbc_driver_sqlite/repaired_wheels/*.whl
 
       - name: Test wheel
         shell: bash
@@ -298,6 +401,7 @@ jobs:
           ARCH: ${{ matrix.arch }}
           MANYLINUX: ${{ matrix.manylinux_version }}
         run: |
+          pushd adbc
           env PYTHON=3.9 docker-compose run python-wheel-manylinux-test
           env PYTHON=3.10 docker-compose run python-wheel-manylinux-test
           env PYTHON=3.11 docker-compose run python-wheel-manylinux-test
@@ -305,6 +409,8 @@ jobs:
   python-macos:
     name: "Python ${{ matrix.arch }} macOS"
     runs-on: macos-latest
+    needs:
+      - source
     strategy:
       matrix:
         arch: ["amd64", "arm64v8"]
@@ -314,15 +420,21 @@ jobs:
       # Where to install vcpkg
       VCPKG_ROOT: "${{ github.workspace }}/vcpkg"
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/download-artifact@v3
         with:
-          fetch-depth: 0
-          persist-credentials: true
+          name: source
 
-      - name: Update tags
+      - name: Extract source archive
         shell: bash
         run: |
-          git fetch --tags --force origin
+          source_archive=$(echo apache-arrow-adbc-*.tar.gz)
+          VERSION=${source_archive#apache-arrow-adbc-}
+          VERSION=${VERSION%.tar.gz}
+          echo "VERSION=${VERSION}" >> $GITHUB_ENV
+          echo "SETUPTOOLS_SCM_PRETEND_VERSION=${VERSION}" >> $GITHUB_ENV
+
+          tar xf apache-arrow-adbc-${VERSION}.tar.gz
+          mv apache-arrow-adbc-${VERSION} adbc
 
       - name: Show inputs
         shell: bash
@@ -338,28 +450,37 @@ jobs:
       - name: Retrieve VCPKG version from .env
         shell: bash
         run: |
+          pushd adbc
           vcpkg_version=$(cat ".env" | grep "VCPKG" | cut -d "=" -f2 | tr -d '"')
           echo "VCPKG_VERSION=$vcpkg_version" | tee -a $GITHUB_ENV
+          popd
 
       - name: Install vcpkg
         shell: bash
-        run: ci/scripts/install_vcpkg.sh $VCPKG_ROOT $VCPKG_VERSION
+        run: |
+          pushd adbc
+          ci/scripts/install_vcpkg.sh $VCPKG_ROOT $VCPKG_VERSION
+          popd
 
       - name: Install Python
         shell: bash
         run: |
+          pushd adbc
           sudo ci/scripts/install_python.sh macos 3.9
           sudo ci/scripts/install_python.sh macos 3.10
           sudo ci/scripts/install_python.sh macos 3.11
+          popd
 
       - name: Build wheel
         shell: bash
         env:
           ARCH: ${{ matrix.arch }}
         run: |
+          pushd adbc
           $PYTHON -m venv build-env
           source build-env/bin/activate
           ./ci/scripts/python_wheel_unix_build.sh $ARCH $(pwd) $(pwd)/build
+          popd
 
       - name: Archive wheels
         uses: actions/upload-artifact@v3
@@ -367,14 +488,16 @@ jobs:
           name: python-${{ matrix.arch }}-macos
           retention-days: 7
           path: |
-            python/adbc_driver_manager/repaired_wheels/*.whl
-            python/adbc_driver_postgresql/repaired_wheels/*.whl
-            python/adbc_driver_sqlite/repaired_wheels/*.whl
+            adbc/python/adbc_driver_manager/repaired_wheels/*.whl
+            adbc/python/adbc_driver_postgresql/repaired_wheels/*.whl
+            adbc/python/adbc_driver_sqlite/repaired_wheels/*.whl
 
       - name: Test wheel
         if: matrix.arch == 'amd64'
         shell: bash
         run: |
+          pushd adbc
+
           /Library/Frameworks/Python.framework/Versions/3.9/bin/python3.9 -m venv test-env-39
           source test-env-39/bin/activate
           export PYTHON_VERSION=3.9
@@ -393,9 +516,13 @@ jobs:
           ./ci/scripts/python_wheel_unix_test.sh $(pwd)
           deactivate
 
+          popd
+
   python-windows:
     name: "Python ${{ matrix.python_version }} Windows"
     runs-on: windows-latest
+    needs:
+      - source
     strategy:
       matrix:
         python_version: ["3.9", "3.10", "3.11"]
@@ -404,15 +531,20 @@ jobs:
       # Where to install vcpkg
       VCPKG_ROOT: "${{ github.workspace }}\\vcpkg"
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/download-artifact@v3
         with:
-          fetch-depth: 0
-          persist-credentials: true
+          name: source
 
-      - name: Update tags
+      - name: Extract source archive
         shell: bash
         run: |
-          git fetch --tags --force origin
+          source_archive=$(echo apache-arrow-adbc-*.tar.gz)
+          VERSION=${source_archive#apache-arrow-adbc-}
+          VERSION=${VERSION%.tar.gz}
+          echo "VERSION=${VERSION}" >> $GITHUB_ENV
+
+          tar xf apache-arrow-adbc-${VERSION}.tar.gz
+          mv apache-arrow-adbc-${VERSION} adbc
 
       - name: Show inputs
         shell: pwsh
@@ -430,7 +562,9 @@ jobs:
       - name: Retrieve VCPKG version from .env
         shell: pwsh
         run: |
+          pushd adbc
           Select-String -Path .env -Pattern 'VCPKG="(.+)"' | % {"VCPKG_VERSION=$($_.matches.groups[1])"} >> $env:GITHUB_ENV
+          popd
 
       - name: Install vcpkg
         shell: pwsh
@@ -451,7 +585,10 @@ jobs:
         run: |
           where python.exe
           CALL "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
+          pushd adbc
+          set SETUPTOOLS_SCM_PRETEND_VERSION=%VERSION%
           .\ci\scripts\python_wheel_windows_build.bat %cd% %cd%\build
+          popd
 
       - name: Archive wheels
         uses: actions/upload-artifact@v3
@@ -459,31 +596,39 @@ jobs:
           name: python${{ matrix.python_version }}-windows
           retention-days: 7
           path: |
-            python/adbc_driver_manager/repaired_wheels/*.whl
-            python/adbc_driver_postgresql/repaired_wheels/*.whl
-            python/adbc_driver_sqlite/repaired_wheels/*.whl
+            adbc/python/adbc_driver_manager/repaired_wheels/*.whl
+            adbc/python/adbc_driver_postgresql/repaired_wheels/*.whl
+            adbc/python/adbc_driver_sqlite/repaired_wheels/*.whl
 
       - name: Test wheel
         shell: cmd
         run: |
+          pushd adbc
           where python.exe
           python -m venv venv
           CALL venv\Scripts\activate.bat
           .\ci\scripts\python_wheel_windows_test.bat %cd%
+          popd
 
   python-sdist:
     name: "Python sdist"
     runs-on: ubuntu-latest
+    needs:
+      - source
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/download-artifact@v3
         with:
-          fetch-depth: 0
-          persist-credentials: true
+          name: source
 
-      - name: Update tags
-        shell: bash
+      - name: Extract source archive
         run: |
-          git fetch --tags --force origin
+          source_archive=$(echo apache-arrow-adbc-*.tar.gz)
+          VERSION=${source_archive#apache-arrow-adbc-}
+          VERSION=${VERSION%.tar.gz}
+          echo "VERSION=${VERSION}" >> $GITHUB_ENV
+
+          tar xf apache-arrow-adbc-${VERSION}.tar.gz
+          mv apache-arrow-adbc-${VERSION} adbc
 
       - name: Show inputs
         shell: bash
@@ -495,7 +640,11 @@ jobs:
       - name: Build sdist
         shell: bash
         run: |
-          docker-compose run python-sdist
+          pushd adbc
+          docker-compose run  \
+            -e SETUPTOOLS_SCM_PRETEND_VERSION=${VERSION} \
+            python-sdist
+          popd
 
       - name: Archive sdist
         uses: actions/upload-artifact@v3
@@ -503,14 +652,16 @@ jobs:
           name: python${{ matrix.python_version }}-manylinux${{ matrix.manylinux_version }}
           retention-days: 7
           path: |
-            python/adbc_driver_manager/dist/*.tar.gz
-            python/adbc_driver_postgresql/dist/*.tar.gz
-            python/adbc_driver_sqlite/dist/*.tar.gz
+            adbc/python/adbc_driver_manager/dist/*.tar.gz
+            adbc/python/adbc_driver_postgresql/dist/*.tar.gz
+            adbc/python/adbc_driver_sqlite/dist/*.tar.gz
 
       - name: Test sdist
         shell: bash
         run: |
+          pushd adbc
           docker-compose run python-sdist-test
+          popd
 
   release:
     name: "Create release"
@@ -518,6 +669,7 @@ jobs:
     if: startsWith(github.ref, 'refs/tags/')
     needs:
       - docs
+      - source
       - java
       - linux
       - python-manylinux
@@ -544,6 +696,7 @@ jobs:
               -name '*.whl' -or \
               -name 'adbc_*.tar.gz' -or \
               -name 'almalinux-*.tar.gz' -or \
+              -name 'apache-arrow-adbc-*.tar.gz' -or \
               -name 'debian-*.tar.gz' -or \
               -name 'ubuntu-*.tar.gz' \
             ')' \
diff --git a/c/cmake_modules/AdbcVersion.cmake b/c/cmake_modules/AdbcVersion.cmake
index c27100d..74e4764 100644
--- a/c/cmake_modules/AdbcVersion.cmake
+++ b/c/cmake_modules/AdbcVersion.cmake
@@ -21,7 +21,7 @@
 # ------------------------------------------------------------
 # Version definitions
 
-set(ADBC_VERSION "1.0.0-SNAPSHOT")
+set(ADBC_VERSION "0.1.0-SNAPSHOT")
 string(REGEX MATCH "^[0-9]+\\.[0-9]+\\.[0-9]+" ADBC_BASE_VERSION "${ADBC_VERSION}")
 string(REPLACE "." ";" _adbc_version_list "${ADBC_BASE_VERSION}")
 list(GET _adbc_version_list 0 ADBC_VERSION_MAJOR)
diff --git a/ci/linux-packages/debian/changelog b/ci/linux-packages/debian/changelog
index e69de29..cf82a62 100644
--- a/ci/linux-packages/debian/changelog
+++ b/ci/linux-packages/debian/changelog
@@ -0,0 +1,5 @@
+apache-arrow-adbc (0.1.0-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Sutou Kouhei <ko...@clear-code.com>  Mon, 26 Dec 2022 02:13:01 -0000
diff --git a/ci/linux-packages/debian/control b/ci/linux-packages/debian/control
index 43e21e9..50eeb87 100644
--- a/ci/linux-packages/debian/control
+++ b/ci/linux-packages/debian/control
@@ -31,7 +31,7 @@ Build-Depends:
 Standards-Version: 4.5.0
 Homepage: https://arrow.apache.org/adbc/
 
-Package: libadbc-driver-manager100
+Package: libadbc-driver-manager001
 Section: libs
 Architecture: any
 Multi-Arch: same
@@ -49,12 +49,12 @@ Architecture: any
 Multi-Arch: same
 Depends:
   ${misc:Depends},
-  libadbc-driver-manager100 (= ${binary:Version})
+  libadbc-driver-manager001 (= ${binary:Version})
 Description: Apache Arrow Database Connectivity (ADBC) driver manager
  .
  This package provides C++ header files.
 
-Package: libadbc-driver-postgresql100
+Package: libadbc-driver-postgresql001
 Section: libs
 Architecture: any
 Multi-Arch: same
@@ -72,12 +72,12 @@ Architecture: any
 Multi-Arch: same
 Depends:
   ${misc:Depends},
-  libadbc-driver-postgresql100 (= ${binary:Version})
+  libadbc-driver-postgresql001 (= ${binary:Version})
 Description: Apache Arrow Database Connectivity (ADBC) PostgreSQL driver
  .
  This package provides CMake package, pkg-config package and so on.
 
-Package: libadbc-driver-sqlite100
+Package: libadbc-driver-sqlite001
 Section: libs
 Architecture: any
 Multi-Arch: same
@@ -95,12 +95,12 @@ Architecture: any
 Multi-Arch: same
 Depends:
   ${misc:Depends},
-  libadbc-driver-sqlite100 (= ${binary:Version})
+  libadbc-driver-sqlite001 (= ${binary:Version})
 Description: Apache Arrow Database Connectivity (ADBC) SQLite driver
  .
  This package provides CMake package, pkg-config package and so on.
 
-Package: libadbc-glib1
+Package: libadbc-glib0
 Section: libs
 Architecture: any
 Multi-Arch: same
@@ -108,7 +108,7 @@ Pre-Depends: ${misc:Pre-Depends}
 Depends:
   ${misc:Depends},
   ${shlibs:Depends},
-  libadbc-driver-manager100 (= ${binary:Version})
+  libadbc-driver-manager001 (= ${binary:Version})
 Description: Apache Arrow Database Connectivity (ADBC) driver manager
  .
  This package provides GLib based library files.
diff --git a/ci/linux-packages/debian/libadbc-driver-manager100.install b/ci/linux-packages/debian/libadbc-driver-manager001.install
similarity index 100%
rename from ci/linux-packages/debian/libadbc-driver-manager100.install
rename to ci/linux-packages/debian/libadbc-driver-manager001.install
diff --git a/ci/linux-packages/debian/libadbc-driver-postgresql100.install b/ci/linux-packages/debian/libadbc-driver-postgresql001.install
similarity index 100%
rename from ci/linux-packages/debian/libadbc-driver-postgresql100.install
rename to ci/linux-packages/debian/libadbc-driver-postgresql001.install
diff --git a/ci/linux-packages/debian/libadbc-driver-sqlite100.install b/ci/linux-packages/debian/libadbc-driver-sqlite001.install
similarity index 100%
rename from ci/linux-packages/debian/libadbc-driver-sqlite100.install
rename to ci/linux-packages/debian/libadbc-driver-sqlite001.install
diff --git a/ci/linux-packages/debian/libadbc-glib1.install b/ci/linux-packages/debian/libadbc-glib0.install
similarity index 100%
rename from ci/linux-packages/debian/libadbc-glib1.install
rename to ci/linux-packages/debian/libadbc-glib0.install
diff --git a/ci/linux-packages/yum/apache-arrow-adbc.spec.in b/ci/linux-packages/yum/apache-arrow-adbc.spec.in
index 7b4e169..5d392d3 100644
--- a/ci/linux-packages/yum/apache-arrow-adbc.spec.in
+++ b/ci/linux-packages/yum/apache-arrow-adbc.spec.in
@@ -254,3 +254,5 @@ Documentation for ADBC GLib.
 %{_docdir}/adbc-glib/
 
 %changelog
+* Mon Dec 26 2022 Sutou Kouhei <ko...@clear-code.com> - 0.1.0-1
+- New upstream release.
diff --git a/ci/scripts/source_build.sh b/ci/scripts/source_build.sh
new file mode 100755
index 0000000..6b9563e
--- /dev/null
+++ b/ci/scripts/source_build.sh
@@ -0,0 +1,61 @@
+#!/usr/bin/env 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.
+
+set -eu
+
+main() {
+    local -r source_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+    local -r source_top_dir="$(cd "${source_dir}/../../" && pwd)"
+
+    if [ "$#" -ne 2 ]; then
+        echo "Usage: $0 <base-name> <revision>"
+        echo "Usage: $0 apache-arrow-adbc-1.0.0 1234567"
+        exit 1
+    fi
+    local -r base_name="$1"
+    local -r revision="$2"
+
+    echo "Using commit ${revision}"
+
+    local -r tar_ball="${base_name}.tar.gz"
+
+    pushd "${source_top_dir}"
+
+    rm -rf "${base_name}/"
+    git archive "${revision}" --prefix "${base_name}/" | tar xf -
+
+    # Resolve all hard and symbolic links
+    rm -rf "${base_name}.tmp/"
+    mv "${base_name}/" "${base_name}.tmp/"
+    cp -R -L "${base_name}.tmp" "${base_name}"
+    rm -rf "${base_name}.tmp/"
+
+    # Create new tarball
+    tar czf "${tar_ball}" "${base_name}/"
+    rm -rf "${base_name}/"
+
+    # check licenses
+    "${source_top_dir}/dev/release/run-rat.sh" "${tar_ball}"
+
+    echo "Commit SHA1: ${revision}"
+
+    popd
+}
+
+main "$@"
diff --git a/dev/release/01-prepare.sh b/dev/release/01-prepare.sh
index cdbdf43..eed7afc 100755
--- a/dev/release/01-prepare.sh
+++ b/dev/release/01-prepare.sh
@@ -21,17 +21,21 @@ set -ue
 
 SOURCE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
 
-if [ "$#" -ne 3 ]; then
-  echo "Usage: $0 <version> <next_version> <rc-num>"
+if [ "$#" -ne 4 ]; then
+  echo "Usage: $0 <arrow-dir> <version> <next_version> <rc-num>"
+  echo "Usage: $0 ../arrow 0.1.0 1.0.0 0"
   exit 1
 fi
 
 . $SOURCE_DIR/utils-prepare.sh
 
-version=$1
-next_version=$2
+arrow_dir=$1
+version=$2
+next_version=$3
 next_version_snapshot="${next_version}-SNAPSHOT"
-rc_number=$3
+rc_number=$4
+
+export ARROW_SOURCE="$(cd "${arrow_dir}" && pwd)"
 
 release_candidate_tag="apache-arrow-adbc-${version}-rc${rc_number}"
 
diff --git a/dev/release/03-binary-sign.sh b/dev/release/02-sign.sh
similarity index 92%
rename from dev/release/03-binary-sign.sh
rename to dev/release/02-sign.sh
index 2f25309..f81d334 100755
--- a/dev/release/03-binary-sign.sh
+++ b/dev/release/02-sign.sh
@@ -76,18 +76,15 @@ main() {
        --repo "${REPOSITORY}" \
        --notes "${release_notes}"
 
-    header "Upload signed tarballs"
-    gh release upload \
-       --repo "${REPOSITORY}" \
-       "${tag}" \
-       "${tarball}.tar.gz" \
-       "${tarball}.tar.gz.asc" \
-       "${tarball}.tar.gz.sha256" \
-       "${tarball}.tar.gz.sha512"
+    header "Upload signatures for source"
+    upload_asset_signatures "${tag}" $(find "${download_dir}" -type f \( -name 'apache-arrow-adbc-*.tar.gz' \))
 
     header "Upload signatures for Java"
     upload_asset_signatures "${tag}" $(find "${download_dir}" -type f \( -name '*.jar' -or -name '*.pom' \))
 
+    header "Upload signatures for Linux packages"
+    upload_asset_signatures "${tag}" $(find "${download_dir}" -type f \( -name 'almalinux-*.tar.gz' -or -name 'debian-*.tar.gz' -or -name 'ubuntu-*.tar.gz' \))
+
     header "Upload signatures for Python"
     upload_asset_signatures "${tag}" $(find "${download_dir}" -type f \( -name '*.whl' -or -name 'adbc_*.tar.gz' \))
 
diff --git a/dev/release/02-source.sh b/dev/release/02-source.sh
deleted file mode 100755
index b3757f7..0000000
--- a/dev/release/02-source.sh
+++ /dev/null
@@ -1,120 +0,0 @@
-#!/usr/bin/env 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.
-
-set -eu
-
-: ${SOURCE_UPLOAD:="0"}
-
-main() {
-    local -r source_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-    local -r source_top_dir="$( cd "${source_dir}/../../" && pwd )"
-
-    if type shasum >/dev/null 2>&1; then
-        local -r sha256_generate="shasum -a 256"
-        local -r sha512_generate="shasum -a 512"
-    else
-        local -r sha256_generate="sha256sum"
-        local -r sha512_generate="sha512sum"
-    fi
-
-    if [ "$#" -ne 2 ]; then
-        echo "Usage: $0 <version> <rc-num>"
-        exit 1
-    fi
-    local -r version="$1"
-    local -r rc_number="$2"
-    local -r tag="apache-arrow-adbc-${version}-rc${rc_number}"
-
-    if [[ ! -f "${source_dir}/.env" ]]; then
-        echo "You must create ${source_dir}/.env"
-        echo "You can use ${source_dir}/.env.example as a template"
-    fi
-
-    source "${source_dir}/.env"
-
-    echo "Preparing source for tag ${tag}"
-    local -r release_hash=$(cd "${source_top_dir}" && git rev-list --max-count=1 ${tag} --)
-
-    if [[ -z "${release_hash}" ]]; then
-        echo "Cannot continue: unknown Git tag: ${tag}"
-        exit 1
-    fi
-
-    echo "Using commit ${release_hash}"
-
-    local -r tarball="apache-arrow-adbc-${version}.tar.gz"
-
-    pushd "${source_top_dir}"
-
-    rm -rf "${tag}/"
-    git archive "${release_hash}" --prefix "${tag}/" | tar xf -
-
-    # Resolve all hard and symbolic links
-    rm -rf "${tag}.tmp/"
-    mv "${tag}/" "${tag}.tmp/"
-    cp -R -L "${tag}.tmp" "${tag}"
-    rm -rf "${tag}.tmp/"
-
-    # Create new tarball
-    tar czf "${tarball}" "${tag}/"
-    rm -rf "${tag}/"
-
-    # check licenses
-    "${source_dir}/run-rat.sh" "${tarball}"
-
-    # Sign the archive
-    gpg \
-        --armor \
-        --detach-sign \
-        --local-user "${GPG_KEY_ID}" \
-        --output "${tarball}.asc" \
-        "${tarball}"
-    ${sha256_generate} "${tarball}" | tee "${tarball}.sha256"
-    ${sha512_generate} "${tarball}" | tee "${tarball}.sha512"
-
-    # Upload
-    if [[ "${SOURCE_UPLOAD}" -gt 0 ]]; then
-        echo "Uploading to dist.apache.org"
-
-        local -r tagrc="${tag}"
-
-        # check out the arrow RC folder
-        svn co --depth=empty https://dist.apache.org/repos/dist/dev/arrow tmp
-
-        # add the release candidate for the tag
-        mkdir -p "tmp/${tagrc}"
-
-        # copy the rc tarball into the tmp dir
-        cp ${tarball}* "tmp/${tagrc}"
-
-        # commit to svn
-        svn add "tmp/${tagrc}"
-        svn ci -m "Apache Arrow ADBC ${version} RC${rc_number}" "tmp/${tagrc}"
-
-        # clean up
-        rm -rf tmp
-
-        echo "Uploaded at https://dist.apache.org/repos/dist/dev/arrow/${tagrc}"
-    fi
-
-    echo "Commit SHA1: ${release_hash}"
-
-    popd
-}
-
-main "$@"
diff --git a/dev/release/03-source.sh b/dev/release/03-source.sh
new file mode 100755
index 0000000..4866254
--- /dev/null
+++ b/dev/release/03-source.sh
@@ -0,0 +1,76 @@
+#!/usr/bin/env 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.
+
+set -eu
+
+main() {
+    local -r source_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+    local -r source_top_dir="$( cd "${source_dir}/../../" && pwd )"
+
+    if [ "$#" -ne 2 ]; then
+        echo "Usage: $0 <version> <rc-num>"
+        exit 1
+    fi
+    local -r version="$1"
+    local -r rc_number="$2"
+    local -r tag="apache-arrow-adbc-${version}-rc${rc_number}"
+    local -r tarball="apache-arrow-adbc-${version}.tar.gz"
+
+    : ${REPOSITORY:="apache/arrow-adbc"}
+
+    if [[ ! -f "${source_dir}/.env" ]]; then
+        echo "You must create ${source_dir}/.env"
+        echo "You can use ${source_dir}/.env.example as a template"
+    fi
+
+    source "${source_dir}/.env"
+
+    header "Downloading assets from release"
+    local -r download_dir="packages/${tag}"
+    mkdir -p "${download_dir}"
+    gh release download \
+       "${tag}" \
+       --dir "${download_dir}" \
+       --pattern "${tarball}*" \
+       --repo "${REPOSITORY}" \
+       --skip-existing
+
+    echo "Uploading to dist.apache.org"
+
+    # check out the arrow RC folder
+    svn co --depth=empty https://dist.apache.org/repos/dist/dev/arrow tmp
+
+    # add the release candidate for the tag
+    mkdir -p "tmp/${tag}"
+
+    # copy the rc tarball into the tmp dir
+    cp ${download_dir}/${tarball}* "tmp/${tag}"
+
+    # commit to svn
+    svn add "tmp/${tag}"
+    svn ci -m "Apache Arrow ADBC ${version} RC${rc_number}" "tmp/${tag}"
+
+    # clean up
+    rm -rf tmp
+
+    echo "Uploaded at https://dist.apache.org/repos/dist/dev/arrow/${tag}"
+
+    popd
+}
+
+main "$@"
diff --git a/dev/release/post-07-bump-versions.sh b/dev/release/post-07-bump-versions.sh
index 850e3bc..d3ecc11 100755
--- a/dev/release/post-07-bump-versions.sh
+++ b/dev/release/post-07-bump-versions.sh
@@ -21,17 +21,21 @@ set -ue
 
 SOURCE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
 
-if [ "$#" -ne 2 ]; then
-  echo "Usage: $0 <version> <next_version>"
+if [ "$#" -ne 3 ]; then
+  echo "Usage: $0 <arrow-dir> <version> <next_version>"
+  echo "Usage: $0 ../arrow 0.1.0 1.0.0"
   exit 1
 fi
 
 . $SOURCE_DIR/utils-prepare.sh
 
-version=$1
-next_version=$2
+arrow_dir=$1
+version=$2
+next_version=$3
 next_version_snapshot="${next_version}-SNAPSHOT"
 
+export ARROW_SOURCE="$(cd "${arrow_dir}" && pwd)"
+
 ########################## Update Snapshot Version ##########################
 
 git fetch --all --prune --tags --force -j$(nproc)
diff --git a/dev/release/utils-prepare.sh b/dev/release/utils-prepare.sh
index 3aca1be..1127ac2 100644
--- a/dev/release/utils-prepare.sh
+++ b/dev/release/utils-prepare.sh
@@ -47,7 +47,7 @@ update_versions() {
   pushd "${ADBC_DIR}/java/"
   mvn versions:set "-DnewVersion=${version}" '-DoldVersion=*'
   find . -type f -name pom.xml.versionsBackup -delete
-  sed -i.bak -E "s|<adbc.version>.+</adbc.version>|<adbc.version>${version}</adbc.version>|g" pom.xml
+  sed -i.bak -E "s|<adbc\\.version>.+</adbc\\.version>|<adbc.version>${version}</adbc.version>|g" pom.xml
   rm pom.xml.bak
   git add "pom.xml" "**/pom.xml"
   popd
@@ -59,4 +59,43 @@ update_versions() {
   sed -i.bak -E "s/VERSION = \".+\"/VERSION = \"${version}\"/g" "${ADBC_DIR}/ruby/lib/adbc/version.rb"
   rm "${ADBC_DIR}/ruby/lib/adbc/version.rb.bak"
   git add "${ADBC_DIR}/ruby/lib/adbc/version.rb"
+
+  if [ ${type} = "release" ]; then
+    pushd "${ADBC_DIR}/ci/linux-packages"
+    rake version:update VERSION=${version}
+    git add debian*/changelog yum/*.spec.in
+    popd
+  else
+    so_version() {
+      local -r version=$1
+      local -r major_version=$(echo $version | sed -E -e 's/^([0-9]+)\.[0-9]+\.[0-9]+$/\1/')
+      local -r minor_version=$(echo $version | sed -E -e 's/^[0-9]+\.([0-9]+)\.[0-9]+$/\1/')
+      printf "%0d%02d" ${major_version} ${minor_version}
+    }
+    local -r deb_lib_suffix=$(so_version ${base_version})
+    local -r next_deb_lib_suffix=$(so_version ${next_version})
+    pushd "${ADBC_DIR}/ci/linux-packages"
+    if [ "${deb_lib_suffix}" != "${next_deb_lib_suffix}" ]; then
+      for target in debian*/lib*${deb_lib_suffix}.install; do
+        git mv \
+          ${target} \
+          $(echo ${target} | sed -e "s/${deb_lib_suffix}/${next_deb_lib_suffix}/")
+      done
+      sed -i.bak -E \
+        -e "s/(lib[-a-z]*)${deb_lib_suffix}/\\1${next_deb_lib_suffix}/g" \
+        debian*/control*
+      rm -f debian*/control*.bak
+      git add debian*/control*
+    fi
+    local -r base_major_version=$(echo ${base_version} | sed -E -e 's/^([0-9]+)\.[0-9]+\.[0-9]+$/\1/')
+    local -r next_major_version=$(echo ${next_version} | sed -E -e 's/^([0-9]+)\.[0-9]+\.[0-9]+$/\1/')
+    if [ "${base_major_version}" != "${next_major_version}" ]; then
+      for target in debian*/libadbc-glib${base_major_version}.install; do
+        git mv \
+          ${target} \
+          $(echo ${target} | sed -e "s/${base_major_version}/${next_major_version}/")
+      done
+    fi
+    popd
+  fi
 }
diff --git a/docs/source/development/releasing.rst b/docs/source/development/releasing.rst
index 637d711..7c9d6e1 100644
--- a/docs/source/development/releasing.rst
+++ b/docs/source/development/releasing.rst
@@ -137,7 +137,7 @@ Create the Release Candidate tag from the updated maintenance branch
    # <rc-number> starts at 0 and increments every time the Release Candidate is burned
    # so for the first RC this would be: dev/release/01-prepare.sh 4.0.0 5.0.0 0
 
-   dev/release/01-prepare.sh <version> <next-version> <rc-number>
+   dev/release/01-prepare.sh <arrow-dir> <version> <next-version> <rc-number>
 
    git push -u apache apache-arrow-adbc-<version>-rc<rc-number> maint-<version>
 
@@ -146,18 +146,19 @@ Build source and binaries and submit them
 
 .. code-block::
 
-    # Build the source release tarball
-    dev/release/02-source.sh <version> <rc-number>
-
-    # Download the produced binaries, sign them, and add the
+    # Download the produced source and binaries, sign them, and add the
     # signatures to the GitHub release
     #
     # On macOS the only way I could get this to work was running "echo
     # "UPDATESTARTUPTTY" | gpg-connect-agent" before running this
     # comment otherwise I got errors referencing "ioctl" errors.
-    dev/release/03-binary-sign.sh <version> <rc-number>
+    dev/release/02-sign.sh <version> <rc-number>
+
+    # Upload the source release tarball and signs to
+    # https://dist.apache.org/repos/dist/dev/arrow .
+    dev/release/03-source.sh <version> <rc-number>
 
-    # Sign and upload the Java artifacts
+    # Upload the Java artifacts
     #
     # Note that you need to press the "Close" button manually by Web interface
     # after you complete the script:
@@ -307,7 +308,7 @@ Be sure to go through on the following checklist:
 
    .. code-block:: Bash
 
-      # dev/release/post-07-bump-versions.sh 0.1.0 0.2.0
-      dev/release/post-07-bump-versions.sh <version> <next_version>
+      # dev/release/post-07-bump-versions.sh ../arrow 0.1.0 0.2.0
+      dev/release/post-07-bump-versions.sh <arrow-dir> <version> <next_version>
 
 .. _nightly-website.yml: https://github.com/apache/arrow-adbc/actions/workflows/nightly-website.yml
diff --git a/glib/adbc-glib/connection-raw.h b/glib/adbc-glib/connection-raw.h
index 97237e3..5d68e41 100644
--- a/glib/adbc-glib/connection-raw.h
+++ b/glib/adbc-glib/connection-raw.h
@@ -25,7 +25,7 @@
 
 G_BEGIN_DECLS
 
-GADBC_AVAILABLE_IN_1_0
+GADBC_AVAILABLE_IN_0_1
 struct AdbcConnection* gadbc_connection_get_raw(GADBCConnection* connection,
                                                 const gchar* context, GError** error);
 
diff --git a/glib/adbc-glib/connection.c b/glib/adbc-glib/connection.c
index 834ff30..eea47d6 100644
--- a/glib/adbc-glib/connection.c
+++ b/glib/adbc-glib/connection.c
@@ -71,7 +71,7 @@ static void gadbc_connection_class_init(GADBCConnectionClass* klass) {
  *
  * Returns: A newly created #GADBCConnection.
  *
- * Since: 1.0.0
+ * Since: 0.1.0
  */
 GADBCConnection* gadbc_connection_new(GError** error) {
   GADBCConnection* connection = g_object_new(GADBC_TYPE_CONNECTION, NULL);
@@ -100,7 +100,7 @@ GADBCConnection* gadbc_connection_new(GError** error) {
  *
  * Returns: %TRUE if this connection is released successfully, %FALSE otherwise.
  *
- * Since: 1.0.0
+ * Since: 0.1.0
  */
 gboolean gadbc_connection_release(GADBCConnection* connection, GError** error) {
   const gchar* context = "[adbc][connection][release]";
@@ -131,7 +131,7 @@ gboolean gadbc_connection_release(GADBCConnection* connection, GError** error) {
  *
  * Returns: %TRUE if option is set successfully, %FALSE otherwise.
  *
- * Since: 1.0.0
+ * Since: 0.1.0
  */
 gboolean gadbc_connection_set_option(GADBCConnection* connection, const gchar* key,
                                      const gchar* value, GError** error) {
@@ -160,7 +160,7 @@ gboolean gadbc_connection_set_option(GADBCConnection* connection, const gchar* k
  *
  * Returns: %TRUE if initialization is done successfully, %FALSE otherwise.
  *
- * Since: 1.0.0
+ * Since: 0.1.0
  */
 gboolean gadbc_connection_init(GADBCConnection* connection, GADBCDatabase* database,
                                GError** error) {
@@ -193,7 +193,7 @@ gboolean gadbc_connection_init(GADBCConnection* connection, GADBCDatabase* datab
  * Returns: (nullable): The underlying `AdbcConnection` if this connection
  *   isn't released yet, %NULL otherwise.
  *
- * Since: 1.0.0
+ * Since: 0.1.0
  */
 struct AdbcConnection* gadbc_connection_get_raw(GADBCConnection* connection,
                                                 const gchar* context, GError** error) {
diff --git a/glib/adbc-glib/connection.h b/glib/adbc-glib/connection.h
index d6423fb..8ca33bf 100644
--- a/glib/adbc-glib/connection.h
+++ b/glib/adbc-glib/connection.h
@@ -29,14 +29,14 @@ struct _GADBCConnectionClass {
   GObjectClass parent_class;
 };
 
-GADBC_AVAILABLE_IN_1_0
+GADBC_AVAILABLE_IN_0_1
 GADBCConnection* gadbc_connection_new(GError** error);
-GADBC_AVAILABLE_IN_1_0
+GADBC_AVAILABLE_IN_0_1
 gboolean gadbc_connection_release(GADBCConnection* connection, GError** error);
-GADBC_AVAILABLE_IN_1_0
+GADBC_AVAILABLE_IN_0_1
 gboolean gadbc_connection_set_option(GADBCConnection* connection, const gchar* key,
                                      const gchar* value, GError** error);
-GADBC_AVAILABLE_IN_1_0
+GADBC_AVAILABLE_IN_0_1
 gboolean gadbc_connection_init(GADBCConnection* connection, GADBCDatabase* database,
                                GError** error);
 
diff --git a/glib/adbc-glib/database-raw.h b/glib/adbc-glib/database-raw.h
index 166ede5..4910003 100644
--- a/glib/adbc-glib/database-raw.h
+++ b/glib/adbc-glib/database-raw.h
@@ -25,7 +25,7 @@
 
 G_BEGIN_DECLS
 
-GADBC_AVAILABLE_IN_1_0
+GADBC_AVAILABLE_IN_0_1
 struct AdbcDatabase* gadbc_database_get_raw(GADBCDatabase* database, const gchar* context,
                                             GError** error);
 
diff --git a/glib/adbc-glib/database.c b/glib/adbc-glib/database.c
index 7fa7bcc..a9749c5 100644
--- a/glib/adbc-glib/database.c
+++ b/glib/adbc-glib/database.c
@@ -64,7 +64,7 @@ static void gadbc_database_class_init(GADBCDatabaseClass* klass) {
  *
  * Returns: A newly created #GADBCDatabase.
  *
- * Since: 1.0.0
+ * Since: 0.1.0
  */
 GADBCDatabase* gadbc_database_new(GError** error) {
   GADBCDatabase* database = g_object_new(GADBC_TYPE_DATABASE, NULL);
@@ -93,7 +93,7 @@ GADBCDatabase* gadbc_database_new(GError** error) {
  *
  * Returns: %TRUE if this database is released successfully, %FALSE otherwise.
  *
- * Since: 1.0.0
+ * Since: 0.1.0
  */
 gboolean gadbc_database_release(GADBCDatabase* database, GError** error) {
   const gchar* context = "[adbc][database][release]";
@@ -123,7 +123,7 @@ gboolean gadbc_database_release(GADBCDatabase* database, GError** error) {
  *
  * Returns: %TRUE if option is set successfully, %FALSE otherwise.
  *
- * Since: 1.0.0
+ * Since: 0.1.0
  */
 gboolean gadbc_database_set_option(GADBCDatabase* database, const gchar* key,
                                    const gchar* value, GError** error) {
@@ -150,7 +150,7 @@ gboolean gadbc_database_set_option(GADBCDatabase* database, const gchar* key,
  *
  * Returns: %TRUE if initialization is done successfully, %FALSE otherwise.
  *
- * Since: 1.0.0
+ * Since: 0.1.0
  */
 gboolean gadbc_database_init(GADBCDatabase* database, GError** error) {
   const gchar* context = "[adbc][database][init]";
@@ -173,7 +173,7 @@ gboolean gadbc_database_init(GADBCDatabase* database, GError** error) {
  * Returns: (nullable): The underlying `AdbcDatabase` if this database
  *   isn't released yet, %NULL otherwise.
  *
- * Since: 1.0.0
+ * Since: 0.1.0
  */
 struct AdbcDatabase* gadbc_database_get_raw(GADBCDatabase* database, const gchar* context,
                                             GError** error) {
diff --git a/glib/adbc-glib/database.h b/glib/adbc-glib/database.h
index 540aac4..1051df6 100644
--- a/glib/adbc-glib/database.h
+++ b/glib/adbc-glib/database.h
@@ -31,14 +31,14 @@ struct _GADBCDatabaseClass {
   GObjectClass parent_class;
 };
 
-GADBC_AVAILABLE_IN_1_0
+GADBC_AVAILABLE_IN_0_1
 GADBCDatabase* gadbc_database_new(GError** error);
-GADBC_AVAILABLE_IN_1_0
+GADBC_AVAILABLE_IN_0_1
 gboolean gadbc_database_release(GADBCDatabase* database, GError** error);
-GADBC_AVAILABLE_IN_1_0
+GADBC_AVAILABLE_IN_0_1
 gboolean gadbc_database_set_option(GADBCDatabase* database, const gchar* key,
                                    const gchar* value, GError** error);
-GADBC_AVAILABLE_IN_1_0
+GADBC_AVAILABLE_IN_0_1
 gboolean gadbc_database_init(GADBCDatabase* database, GError** error);
 
 G_END_DECLS
diff --git a/glib/adbc-glib/error-raw.h b/glib/adbc-glib/error-raw.h
index df3f4f3..3f98a75 100644
--- a/glib/adbc-glib/error-raw.h
+++ b/glib/adbc-glib/error-raw.h
@@ -25,13 +25,13 @@
 
 G_BEGIN_DECLS
 
-GADBC_AVAILABLE_IN_1_0
+GADBC_AVAILABLE_IN_0_1
 GADBCError gadbc_error_from_status_code(AdbcStatusCode status_code);
 
-GADBC_AVAILABLE_IN_1_0
+GADBC_AVAILABLE_IN_0_1
 gboolean gadbc_error_check(GError** error, AdbcStatusCode status_code,
                            struct AdbcError* adbc_error, const gchar* context);
-GADBC_AVAILABLE_IN_1_0
+GADBC_AVAILABLE_IN_0_1
 void gadbc_error_warn(AdbcStatusCode status_code, struct AdbcError* adbc_error,
                       const gchar* context);
 
diff --git a/glib/adbc-glib/error.h b/glib/adbc-glib/error.h
index eb4be7f..7538a24 100644
--- a/glib/adbc-glib/error.h
+++ b/glib/adbc-glib/error.h
@@ -93,7 +93,7 @@ typedef enum {
 
 #define GADBC_ERROR gadbc_error_quark()
 
-GADBC_AVAILABLE_IN_1_0
+GADBC_AVAILABLE_IN_0_1
 GQuark gadbc_error_quark(void);
 
 G_END_DECLS
diff --git a/glib/adbc-glib/statement-raw.h b/glib/adbc-glib/statement-raw.h
index e7908cc..1511760 100644
--- a/glib/adbc-glib/statement-raw.h
+++ b/glib/adbc-glib/statement-raw.h
@@ -25,7 +25,7 @@
 
 G_BEGIN_DECLS
 
-GADBC_AVAILABLE_IN_1_0
+GADBC_AVAILABLE_IN_0_1
 struct AdbcStatement* gadbc_statement_get_raw(GADBCStatement* statement,
                                               const gchar* context, GError** error);
 
diff --git a/glib/adbc-glib/statement.c b/glib/adbc-glib/statement.c
index f9d9c24..8b045b5 100644
--- a/glib/adbc-glib/statement.c
+++ b/glib/adbc-glib/statement.c
@@ -72,7 +72,7 @@ static void gadbc_statement_class_init(GADBCStatementClass* klass) {
  * Returns: A newly created #GADBCStatement for @connection on success,
  *   %NULL otherwise.
  *
- * Since: 1.0.0
+ * Since: 0.1.0
  */
 GADBCStatement* gadbc_statement_new(GADBCConnection* connection, GError** error) {
   const gchar* context = "[adbc][statement][new]";
@@ -109,7 +109,7 @@ GADBCStatement* gadbc_statement_new(GADBCConnection* connection, GError** error)
  *
  * Returns: %TRUE if this statement is released successfully, %FALSE otherwise.
  *
- * Since: 1.0.0
+ * Since: 0.1.0
  */
 gboolean gadbc_statement_release(GADBCStatement* statement, GError** error) {
   const gchar* context = "[adbc][statement][release]";
@@ -142,7 +142,7 @@ gboolean gadbc_statement_release(GADBCStatement* statement, GError** error) {
  *
  * Returns: %TRUE if option is set successfully, %FALSE otherwise.
  *
- * Since: 1.0.0
+ * Since: 0.1.0
  */
 gboolean gadbc_statement_set_sql_query(GADBCStatement* statement, const gchar* query,
                                        GError** error) {
@@ -174,7 +174,7 @@ gboolean gadbc_statement_set_sql_query(GADBCStatement* statement, const gchar* q
  *
  * Returns: %TRUE if option is set successfully, %FALSE otherwise.
  *
- * Since: 1.0.0
+ * Since: 0.1.0
  */
 gboolean gadbc_statement_execute(GADBCStatement* statement, gpointer* c_abi_array_stream,
                                  gint64* n_rows_affected, GError** error) {
@@ -212,7 +212,7 @@ gboolean gadbc_statement_execute(GADBCStatement* statement, gpointer* c_abi_arra
  * Returns: (nullable): The underlying `AdbcStatement` if this statement
  *   isn't released yet, %NULL otherwise.
  *
- * Since: 1.0.0
+ * Since: 0.1.0
  */
 struct AdbcStatement* gadbc_statement_get_raw(GADBCStatement* statement,
                                               const gchar* context, GError** error) {
diff --git a/glib/adbc-glib/statement.h b/glib/adbc-glib/statement.h
index 5991d5d..fadcb11 100644
--- a/glib/adbc-glib/statement.h
+++ b/glib/adbc-glib/statement.h
@@ -29,14 +29,14 @@ struct _GADBCStatementClass {
   GObjectClass parent_class;
 };
 
-GADBC_AVAILABLE_IN_1_0
+GADBC_AVAILABLE_IN_0_1
 GADBCStatement* gadbc_statement_new(GADBCConnection* connection, GError** error);
-GADBC_AVAILABLE_IN_1_0
+GADBC_AVAILABLE_IN_0_1
 gboolean gadbc_statement_release(GADBCStatement* statement, GError** error);
-GADBC_AVAILABLE_IN_1_0
+GADBC_AVAILABLE_IN_0_1
 gboolean gadbc_statement_set_sql_query(GADBCStatement* statement, const gchar* query,
                                        GError** error);
-GADBC_AVAILABLE_IN_1_0
+GADBC_AVAILABLE_IN_0_1
 gboolean gadbc_statement_execute(GADBCStatement* statement, gpointer* c_abi_array_stream,
                                  gint64* n_rows_affected, GError** error);
 
diff --git a/glib/adbc-glib/version.h.in b/glib/adbc-glib/version.h.in
index 4ea5229..c67cde8 100644
--- a/glib/adbc-glib/version.h.in
+++ b/glib/adbc-glib/version.h.in
@@ -36,7 +36,7 @@
  *
  * The major version.
  *
- * Since: 1.0.0
+ * Since: 0.1.0
  */
 #define GADBC_VERSION_MAJOR (@GADBC_VERSION_MAJOR@)
 
@@ -45,7 +45,7 @@
  *
  * The minor version.
  *
- * Since: 1.0.0
+ * Since: 0.1.0
  */
 #define GADBC_VERSION_MINOR (@GADBC_VERSION_MINOR@)
 
@@ -54,7 +54,7 @@
  *
  * The micro version.
  *
- * Since: 1.0.0
+ * Since: 0.1.0
  */
 #define GADBC_VERSION_MICRO (@GADBC_VERSION_MICRO@)
 
@@ -69,7 +69,7 @@
  * Returns: %TRUE if the compile time ADBC GLib version is the same as
  *   or newer than the passed version, %FALSE otherwise.
  *
- * Since: 1.0.0
+ * Since: 0.1.0
  */
 #define GADBC_VERSION_CHECK(major, minor, micro)       \
   (GADBC_VERSION_MAJOR > (major) ||                    \
@@ -87,7 +87,7 @@
  * You must define this macro before including the
  * adbc-glib/adbc-glib.h header.
  *
- * Since: 1.0.0
+ * Since: 0.1.0
  */
 
 #ifdef GADBC_DISABLE_DEPRECATION_WARNINGS
@@ -101,13 +101,13 @@
 #endif
 
 /**
- * GADBC_VERSION_1_0:
+ * GADBC_VERSION_0_1:
  *
  * You can use this macro value for compile time API version check.
  *
- * Since: 1.0.0
+ * Since: 0.1.0
  */
-#define GADBC_VERSION_1_0 G_ENCODE_VERSION(1, 0)
+#define GADBC_VERSION_0_1 G_ENCODE_VERSION(0, 1)
 
 /**
  * GADBC_VERSION_MIN_REQUIRED:
@@ -115,7 +115,7 @@
  * You can use this macro for compile time API version check.
  *
  * This macro value must be one of the predefined version macros such
- * as %GADBC_VERSION_0_10.
+ * as %GADBC_VERSION_0_1.
  *
  * If you use any functions that is defined by newer version than
  * %GADBC_VERSION_MIN_REQUIRED, deprecated warnings are produced at
@@ -124,7 +124,7 @@
  * You must define this macro before including the
  * adbc-glib/adbc-glib.h header.
  *
- * Since: 1.0.0
+ * Since: 0.1.0
  */
 #ifndef GADBC_VERSION_MIN_REQUIRED
 #  define GADBC_VERSION_MIN_REQUIRED                           \
@@ -137,7 +137,7 @@
  * You can use this macro for compile time API version check.
  *
  * This macro value must be one of the predefined version macros such
- * as %GADBC_VERSION_1_0.
+ * as %GADBC_VERSION_0_1.
  *
  * If you use any functions that is defined by newer version than
  * %GADBC_VERSION_MAX_ALLOWED, deprecated warnings are produced at
@@ -146,7 +146,7 @@
  * You must define this macro before including the
  * adbc-glib/adbc-glib.h header.
  *
- * Since: 1.0.0
+ * Since: 0.1.0
  */
 #ifndef GADBC_VERSION_MAX_ALLOWED
 #  define GADBC_VERSION_MAX_ALLOWED            \
@@ -156,7 +156,7 @@
 
 #define GADBC_AVAILABLE_IN_ALL
 
-#if GADBC_VERSION_MIN_REQUIRED >= GADBC_VERSION_1_0
+#if GADBC_VERSION_MIN_REQUIRED >= GADBC_VERSION_0_1
 #  define GADBC_DEPRECATED_IN_1_0                GADBC_DEPRECATED
 #  define GADBC_DEPRECATED_IN_1_0_FOR(function)  GADBC_DEPRECATED_FOR(function)
 #else
@@ -164,8 +164,8 @@
 #  define GADBC_DEPRECATED_IN_1_0_FOR(function)
 #endif
 
-#if GADBC_VERSION_MAX_ALLOWED < GADBC_VERSION_1_0
-#  define GADBC_AVAILABLE_IN_1_0 GADBC_UNAVAILABLE(1, 0)
+#if GADBC_VERSION_MAX_ALLOWED < GADBC_VERSION_0_1
+#  define GADBC_AVAILABLE_IN_0_1 GADBC_UNAVAILABLE(0, 1)
 #else
-#  define GADBC_AVAILABLE_IN_1_0
+#  define GADBC_AVAILABLE_IN_0_1
 #endif
diff --git a/glib/meson.build b/glib/meson.build
index 3f7e88b..ae661df 100644
--- a/glib/meson.build
+++ b/glib/meson.build
@@ -23,9 +23,9 @@ project('adbc-glib',
           'c_std=c99',
         ],
         license: 'Apache-2.0',
-        version: '1.0.0')
+        version: '0.1.0-SNAPSHOT')
 
-version_numbers = meson.project_version().split('.')
+version_numbers = meson.project_version().split('-')[0].split('.')
 version_major = version_numbers[0].to_int()
 version_minor = version_numbers[1].to_int()
 version_micro = version_numbers[2].to_int()
diff --git a/java/core/pom.xml b/java/core/pom.xml
index 883ec8c..1e3e233 100644
--- a/java/core/pom.xml
+++ b/java/core/pom.xml
@@ -14,7 +14,7 @@
   <parent>
     <artifactId>arrow-adbc-java-root</artifactId>
     <groupId>org.apache.arrow.adbc</groupId>
-    <version>1.0.0-SNAPSHOT</version>
+    <version>0.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>adbc-core</artifactId>
diff --git a/java/driver-manager/pom.xml b/java/driver-manager/pom.xml
index df88036..7edd369 100644
--- a/java/driver-manager/pom.xml
+++ b/java/driver-manager/pom.xml
@@ -14,7 +14,7 @@
   <parent>
     <artifactId>arrow-adbc-java-root</artifactId>
     <groupId>org.apache.arrow.adbc</groupId>
-    <version>1.0.0-SNAPSHOT</version>
+    <version>0.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>adbc-driver-manager</artifactId>
diff --git a/java/driver/flight-sql-validation/pom.xml b/java/driver/flight-sql-validation/pom.xml
index 419e89f..8929924 100644
--- a/java/driver/flight-sql-validation/pom.xml
+++ b/java/driver/flight-sql-validation/pom.xml
@@ -14,7 +14,7 @@
   <parent>
     <artifactId>arrow-adbc-java-root</artifactId>
     <groupId>org.apache.arrow.adbc</groupId>
-    <version>1.0.0-SNAPSHOT</version>
+    <version>0.1.0-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
 
diff --git a/java/driver/flight-sql/pom.xml b/java/driver/flight-sql/pom.xml
index dffbe58..8c85127 100644
--- a/java/driver/flight-sql/pom.xml
+++ b/java/driver/flight-sql/pom.xml
@@ -14,7 +14,7 @@
   <parent>
     <artifactId>arrow-adbc-java-root</artifactId>
     <groupId>org.apache.arrow.adbc</groupId>
-    <version>1.0.0-SNAPSHOT</version>
+    <version>0.1.0-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
 
diff --git a/java/driver/jdbc-validation-derby/pom.xml b/java/driver/jdbc-validation-derby/pom.xml
index 3c7ef8b..ee4cc6c 100644
--- a/java/driver/jdbc-validation-derby/pom.xml
+++ b/java/driver/jdbc-validation-derby/pom.xml
@@ -14,7 +14,7 @@
   <parent>
     <artifactId>arrow-adbc-java-root</artifactId>
     <groupId>org.apache.arrow.adbc</groupId>
-    <version>1.0.0-SNAPSHOT</version>
+    <version>0.1.0-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
 
diff --git a/java/driver/jdbc-validation-postgresql/pom.xml b/java/driver/jdbc-validation-postgresql/pom.xml
index 087f637..a0afb71 100644
--- a/java/driver/jdbc-validation-postgresql/pom.xml
+++ b/java/driver/jdbc-validation-postgresql/pom.xml
@@ -14,7 +14,7 @@
   <parent>
     <artifactId>arrow-adbc-java-root</artifactId>
     <groupId>org.apache.arrow.adbc</groupId>
-    <version>1.0.0-SNAPSHOT</version>
+    <version>0.1.0-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
 
diff --git a/java/driver/jdbc/pom.xml b/java/driver/jdbc/pom.xml
index 8a3d1c1..43e158c 100644
--- a/java/driver/jdbc/pom.xml
+++ b/java/driver/jdbc/pom.xml
@@ -14,7 +14,7 @@
   <parent>
     <artifactId>arrow-adbc-java-root</artifactId>
     <groupId>org.apache.arrow.adbc</groupId>
-    <version>1.0.0-SNAPSHOT</version>
+    <version>0.1.0-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
 
diff --git a/java/driver/validation/pom.xml b/java/driver/validation/pom.xml
index f115465..b527706 100644
--- a/java/driver/validation/pom.xml
+++ b/java/driver/validation/pom.xml
@@ -14,7 +14,7 @@
   <parent>
     <artifactId>arrow-adbc-java-root</artifactId>
     <groupId>org.apache.arrow.adbc</groupId>
-    <version>1.0.0-SNAPSHOT</version>
+    <version>0.1.0-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
 
diff --git a/java/pom.xml b/java/pom.xml
index a205735..5888b85 100644
--- a/java/pom.xml
+++ b/java/pom.xml
@@ -20,7 +20,7 @@
 
   <groupId>org.apache.arrow.adbc</groupId>
   <artifactId>arrow-adbc-java-root</artifactId>
-  <version>1.0.0-SNAPSHOT</version>
+  <version>0.1.0-SNAPSHOT</version>
   <packaging>pom</packaging>
 
   <name>Apache Arrow ADBC Java Root POM</name>
@@ -29,7 +29,7 @@
 
   <properties>
     <dep.arrow.version>10.0.0</dep.arrow.version>
-    <adbc.version>1.0.0-SNAPSHOT</adbc.version>
+    <adbc.version>0.1.0-SNAPSHOT</adbc.version>
   </properties>
 
   <scm>
diff --git a/java/sql/pom.xml b/java/sql/pom.xml
index f360658..d620a25 100644
--- a/java/sql/pom.xml
+++ b/java/sql/pom.xml
@@ -14,7 +14,7 @@
   <parent>
     <artifactId>arrow-adbc-java-root</artifactId>
     <groupId>org.apache.arrow.adbc</groupId>
-    <version>1.0.0-SNAPSHOT</version>
+    <version>0.1.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>adbc-sql</artifactId>
diff --git a/ruby/lib/adbc/version.rb b/ruby/lib/adbc/version.rb
index d9dbcc3..836857a 100644
--- a/ruby/lib/adbc/version.rb
+++ b/ruby/lib/adbc/version.rb
@@ -16,10 +16,10 @@
 # under the License.
 
 module ADBC
-  VERSION = "1.0.0"
+  VERSION = "0.1.0-SNAPSHOT"
 
   module Version
-    MAJOR, MINOR, MICRO = VERSION.split(".").collect(&:to_i)
+    MAJOR, MINOR, MICRO, TAG = VERSION.split(".").collect(&:to_i)
     STRING = VERSION
   end
 end
diff --git a/ruby/red-adbc.gemspec b/ruby/red-adbc.gemspec
index 65dfb0b..d933f53 100644
--- a/ruby/red-adbc.gemspec
+++ b/ruby/red-adbc.gemspec
@@ -23,7 +23,13 @@ require_relative "lib/adbc/version"
 
 Gem::Specification.new do |spec|
   spec.name = "red-adbc"
-  spec.version = ADBC::VERSION
+  version_components = [
+    ADBC::Version::MAJOR.to_s,
+    ADBC::Version::MINOR.to_s,
+    ADBC::Version::MICRO.to_s,
+    ADBC::Version::TAG,
+  ]
+  spec.version = version_components.compact.join(".")
   spec.homepage = "https://arrow.apache.org/"
   spec.authors = ["Apache Arrow Developers"]
   spec.email = ["dev@arrow.apache.org"]