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

leborchuk pushed a commit to branch REL_2_STABLE
in repository https://gitbox.apache.org/repos/asf/cloudberry.git


The following commit(s) were added to refs/heads/REL_2_STABLE by this push:
     new c27ec8f6afe Add Yezzey submodule to gpcontrib (#1752)
c27ec8f6afe is described below

commit c27ec8f6afeef3c592c56e7e5570386035a9adcb
Author: Leonid <[email protected]>
AuthorDate: Mon Jul 13 17:58:12 2026 +0300

    Add Yezzey submodule to gpcontrib (#1752)
    
    Yezzey is an open-source extension for Apache Cloudberry and
    Greenplum 6 that transparently offloads Append-Only (AO/AOCO)
    table data to S3-compatible object storage. Inspired by Snowflake
    and AnyBlob, it extends the storage manager (smgr) so reads and
    writes go to S3 instead of local disk, keeping the user interface
    unchanged. A companion YProxy service acts as an I/O scheduler,
    managing connection pooling and request prioritization to prevent
    S3 throttling. Data is PGP-encrypted during upload. Benchmarks
    show only 10–43% query slowdown versus local storage, far
    outperforming PXF, making it ideal for cost-effective cold-data
    tiering.
    
    The main feature of Yezzey - you don't need to change tables or code;
    just launch yezzey_define_offload_policy and move the data to S3.
    In this way, you can unload your cluster using the available disk space.
    
    Currently, it is widely used on Greenplum 6 instances, and the goal is
    to provide users with the same interface in Cloudberry, so they can
    seamlessly migrate to Cloudberry.
    
    We placed Yezzey as a submodule, as we believe one day we will replace
    all outdated solutions like AO/AOCO/Yezzey with PAX. However, that has
    not happened yet and we still need Yezzey.
    
    Co-authored-by: reshke <[email protected]>
---
 .github/workflows/yezzey-ci.yaml                   | 443 +++++++++++++++++++++
 .gitmodules                                        |   3 +
 LICENSE                                            |   6 +
 configure                                          | 416 ++++++++++++++++++-
 configure.ac                                       |  16 +
 .../cloudberry/scripts/configure-cloudberry.sh     |  14 +
 gpcontrib/Makefile                                 |   3 +
 gpcontrib/yezzey                                   |   1 +
 licenses/LICENSE-yezzey.txt                        |  19 +
 pom.xml                                            | 212 ++++++++++
 src/Makefile.global.in                             |   1 +
 11 files changed, 1121 insertions(+), 13 deletions(-)

diff --git a/.github/workflows/yezzey-ci.yaml b/.github/workflows/yezzey-ci.yaml
new file mode 100644
index 00000000000..33178c7a7b6
--- /dev/null
+++ b/.github/workflows/yezzey-ci.yaml
@@ -0,0 +1,443 @@
+# --------------------------------------------------------------------
+#
+# 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.
+#
+# --------------------------------------------------------------------
+# Yezzey CI Workflow
+# --------------------------------------------------------------------
+name: Yezzey CI Pipeline
+
+on:
+  push:
+    branches: [ REL_2_STABLE ]
+  pull_request:
+    types: [opened, synchronize, reopened, edited]
+  workflow_dispatch:
+
+permissions:
+  contents: read
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
+
+env:
+  CLOUDBERRY_HOME: "/usr/local/cloudberry-db"
+  CLOUDBERRY_VERSION: "REL_2_STABLE"
+
+jobs:
+
+  ## Stage 1: Build artifacts and run tests for cloudberry
+
+  test-cloudberry:
+    name: Build and Test Yezzey Cloudberry (${{ matrix.os }})
+    runs-on: ubuntu-latest
+    strategy:
+      fail-fast: false
+      matrix:
+        include:
+          - os: ubuntu22.04
+            image: apache/incubator-cloudberry:cbdb-build-ubuntu22.04-latest
+          - os: rocky8
+            image: apache/incubator-cloudberry:cbdb-build-rocky8-latest
+          - os: rocky9
+            image: apache/incubator-cloudberry:cbdb-build-rocky9-latest
+    container:
+      image: ${{ matrix.image }}
+      options: >-
+        --user root
+        -h cdw
+        -v /usr/share:/host_usr_share
+        -v /usr/local:/host_usr_local
+        -v /opt:/host_opt
+
+    steps:
+      - name: Checkout Cloudberry source
+        uses: actions/checkout@v4
+        with:
+          repository: apache/cloudberry
+          path: cloudberry
+          submodules: true
+
+      - name: Checkout Yproxy source
+        uses: actions/checkout@v4
+        with:
+          repository: open-gpdb/yproxy
+          ref: master
+          path: yproxy
+
+      - name: Cloudberry Environment Initialization
+        shell: bash
+        env:
+          LOGS_DIR: build-logs
+          SRC_DIR: ${{ github.workspace }}/cloudberry
+        run: |
+          set -eo pipefail
+          if ! su - gpadmin -c "/tmp/init_system.sh"; then
+            echo "::error::Container initialization failed"
+            exit 1
+          fi
+
+          mkdir -p "${SRC_DIR}/build-logs"
+          chown -R gpadmin:gpadmin "${SRC_DIR}/build-logs"
+          mkdir -p "${LOGS_DIR}/details"
+          chown -R gpadmin:gpadmin .
+          chmod -R 755 .
+          chmod 777 "${LOGS_DIR}"
+
+          df -kh /
+          rm -rf /__t/*
+          df -kh /
+
+          df -h | tee -a "${LOGS_DIR}/details/disk-usage.log"
+          free -h | tee -a "${LOGS_DIR}/details/memory-usage.log"
+
+          {
+            echo "=== Environment Information ==="
+            uname -a
+            df -h
+            free -h
+            env
+          } | tee -a "${LOGS_DIR}/details/environment.log"
+
+          echo "SRC_DIR=${GITHUB_WORKSPACE}" | tee -a "$GITHUB_ENV"
+
+      - name: Setup MinIO
+        run: |
+          set -ex pipefail
+
+          # Make sure configs that use the "minio" hostname resolve it to the
+          # local MinIO server started below.
+          if ! getent hosts minio >/dev/null 2>&1; then
+            echo "127.0.0.1 minio" >> /etc/hosts
+          fi
+          getent hosts minio
+
+          # Download MinIO server binary and mc client
+          curl -fsSL -o minio 
https://dl.min.io/server/minio/release/linux-amd64/minio
+          chmod +x minio
+          sudo mv minio /usr/local/bin/minio
+
+          curl -fsSL -o mc https://dl.min.io/client/mc/release/linux-amd64/mc
+          chmod +x mc
+          sudo mv mc /usr/local/bin/mc
+
+          # Start MinIO server in single-node single-drive mode as a 
background process.
+          # GitHub Actions service containers do not support passing a 
CMD/subcommand
+          # after the image name, so the Docker-based service approach prints 
help and
+          # exits instead of starting the server.  Running the binary directly 
avoids
+          # this limitation entirely.
+          mkdir -p /tmp/minio-data
+          MINIO_ROOT_USER=some_key \
+          MINIO_ROOT_PASSWORD=some_key \
+          minio server /tmp/minio-data \
+            --address ":9000" \
+            --console-address ":9001" \
+            > /tmp/minio.log 2>&1 &
+          echo $! > /tmp/minio.pid
+          echo "MinIO started with PID $(cat /tmp/minio.pid)"
+
+          # Wait for MinIO to be fully ready before issuing any requests
+          echo "Waiting for MinIO to be ready..."
+          for i in $(seq 1 30); do
+            if curl -sf http://minio:9000/minio/health/live; then
+              echo "MinIO is ready after ${i} attempts"
+              break
+            fi
+            if [ "${i}" -eq 30 ]; then
+              echo "::error::MinIO did not become ready in time"
+              cat /tmp/minio.log || true
+              exit 1
+            fi
+            sleep 2
+          done
+
+          # Add alias and verify
+          mc alias set minio-ci http://minio:9000 some_key some_key
+          mc admin info minio-ci
+
+          # Create buckets sequentially with retry/backoff
+          for bucket in gpyezzey gpyezzey2 gpyezzey3; do
+            for attempt in $(seq 1 5); do
+              if mc mb --ignore-existing minio-ci/${bucket}; then
+                echo "Bucket ${bucket} ready"
+                break
+              fi
+              if [ "${attempt}" -eq 5 ]; then
+                echo "::error::Failed to create bucket ${bucket} after 5 
attempts"
+                cat /tmp/minio.log || true
+                exit 1
+              fi
+              echo "Retrying bucket ${bucket} (attempt ${attempt})..."
+              sleep $((attempt * 3))
+            done
+          done
+
+      - name: Collect MinIO logs on failure
+        if: failure()
+        run: |
+          mkdir -p minio-logs
+
+          echo "=== MinIO process logs ===" | tee 
minio-logs/minio-container.log
+          cat /tmp/minio.log 2>/dev/null | tee -a 
minio-logs/minio-container.log \
+            || echo "Could not retrieve MinIO process logs" | tee -a 
minio-logs/minio-container.log
+
+          echo "=== MinIO service health ===" | tee minio-logs/minio-health.log
+          curl -sv http://localhost:9000/minio/health/live 2>&1 | tee -a 
minio-logs/minio-health.log || true
+
+          echo "=== mc admin info ===" | tee minio-logs/minio-admin.log
+          mc admin info minio-ci 2>&1 | tee -a minio-logs/minio-admin.log || 
true
+
+          echo "=== mc admin logs ===" | tee -a minio-logs/minio-admin.log
+          mc admin logs minio-ci --last 100 2>&1 | tee -a 
minio-logs/minio-admin.log || true
+
+      - name: Upload MinIO logs
+        if: failure()
+        uses: actions/upload-artifact@v4
+        with:
+          name: minio-logs-${{ matrix.os }}
+          path: minio-logs/
+          retention-days: 7
+
+      - name: Run Apache Cloudberry configure script
+        shell: bash
+        env:
+          SRC_DIR: ${{ github.workspace }}/cloudberry
+        run: |
+          set -eo pipefail
+          chmod +x 
"${SRC_DIR}"/devops/build/automation/cloudberry/scripts/configure-cloudberry.sh
+          if ! time su - gpadmin -c "cd ${SRC_DIR} && SRC_DIR=${SRC_DIR} 
ENABLE_DEBUG=${{ env.ENABLE_DEBUG }} ENABLE_YEZZEY=true 
${SRC_DIR}/devops/build/automation/cloudberry/scripts/configure-cloudberry.sh"; 
then
+            echo "::error::Configure script failed"
+            exit 1
+          fi
+
+      - name: Run Apache Cloudberry build script
+        shell: bash
+        env:
+          SRC_DIR: ${{ github.workspace }}/cloudberry
+        run: |
+          set -eo pipefail
+
+          chmod +x 
"${SRC_DIR}"/devops/build/automation/cloudberry/scripts/build-cloudberry.sh
+          if ! time su - gpadmin -c "cd ${SRC_DIR} && SRC_DIR=${SRC_DIR} 
${SRC_DIR}/devops/build/automation/cloudberry/scripts/build-cloudberry.sh"; then
+            echo "::error::Build script failed"
+            exit 1
+          fi
+
+      - name: Run Yezzey build script
+        shell: bash
+        env:
+          SRC_DIR: ${{ github.workspace }}/cloudberry
+        run: |
+          set -eo pipefail
+
+          if ! time su - gpadmin -c "cd ${SRC_DIR}/gpcontrib/yezzey && make && 
make install"; then
+            echo "::error::Build yezzey failed"
+            exit 1
+          fi
+
+      - name: Deploy yezzey config
+        shell: bash
+        env:
+          SRC_DIR: ${{ github.workspace }}/cloudberry
+        run: |
+          set -eo pipefail
+
+          chmod +x 
"${SRC_DIR}"/gpcontrib/yezzey/devops/scripts/prepare_test_yezzey.sh
+          if ! time su - gpadmin -c "cd ${SRC_DIR}/gpcontrib/yezzey && 
devops/scripts/prepare_test_yezzey.sh"; then
+            echo "::error::Config yezzey failed"
+            exit 1
+          fi
+
+      - name: Install yproxy
+        shell: bash
+        env:
+          SRC_DIR: ${{ github.workspace }}/yproxy
+        run: |
+          set -eo pipefail
+
+          # Install Go compiler and lib dependencies
+          if command -v apt >/dev/null 2>&1; then
+            sudo apt update
+            sudo apt install -y software-properties-common
+            sudo add-apt-repository ppa:longsleep/golang-backports
+            sudo apt update
+            sudo apt install -y golang-go libbrotli-dev liblzo2-dev 
libsodium-dev curl cmake
+          elif command -v dnf >/dev/null 2>&1; then
+            sudo dnf install -y epel-release
+            sudo dnf install -y --enablerepo=epel golang brotli-devel 
lzo-devel libsodium-devel cmake
+            if ! command -v curl >/dev/null 2>&1; then
+              sudo dnf install -y curl
+            fi
+          else
+            echo "::error::Unsupported package manager. Expected apt or dnf."
+            exit 1
+          fi
+
+          # Fetch project and build
+          git config --global --add safe.directory ${SRC_DIR}
+          cd ${SRC_DIR}
+          make build
+
+          mv devbin/yproxy /usr/bin/yproxy
+
+          #Check the installation
+          yproxy --version
+
+      - name: Create demo cluster with yezzey
+        shell: bash
+        env:
+          SRC_DIR: ${{ github.workspace }}/cloudberry
+        run: |
+          set -eo pipefail
+
+          if ! time su - gpadmin -c "cd ${SRC_DIR} && 
gpcontrib/yezzey/devops/scripts/create_demo_yezzey_cloudberry.sh"; then
+            echo "::error::Create cluster with yezzey failed"
+            exit 1
+          fi
+
+      - name: Run tests
+        shell: bash
+        env:
+          SRC_DIR: ${{ github.workspace }}/cloudberry
+        run: |
+          set -eo pipefail
+          set -x
+
+          # Verify MinIO hostname remains resolvable in the test step.
+          getent hosts minio
+
+          chmod +x 
"${SRC_DIR}"/gpcontrib/yezzey/devops/scripts/launch_yproxy.sh
+          if ! time su - gpadmin -c "cd ${SRC_DIR} && 
gpcontrib/yezzey/devops/scripts/launch_yproxy.sh && cd 
${SRC_DIR}/gpcontrib/yezzey && source 
/usr/local/cloudberry-db/cloudberry-env.sh && source 
../../gpAux/gpdemo/gpdemo-env.sh && IS_CLOUDBERRY=true make installcheck"; then
+            echo "::error::Test yezzey failed"
+            cat ${SRC_DIR}/gpcontrib/yezzey/regression.diffs
+            exit 1
+          fi
+
+      - name: Save matrix job result
+        if: always()
+        run: |
+          mkdir -p matrix-results
+          echo "${{ job.status }}" > matrix-results/result-${{ matrix.os }}.txt
+
+      - name: Upload matrix job result
+        if: always()
+        uses: actions/upload-artifact@v4
+        with:
+          name: matrix-result-${{ matrix.os }}
+          path: matrix-results/result-${{ matrix.os }}.txt
+          retention-days: 1
+
+      - name: Upload test logs
+        if: always()
+        uses: actions/upload-artifact@v4
+        with:
+          name: test-logs-cloudberry-${{ matrix.os }}
+          path: |
+            build-logs/
+          retention-days: 7
+
+      - name: Upload test results files
+        if: always()
+        uses: actions/upload-artifact@v4
+        with:
+          name: results-cloudberry-${{ matrix.os }}
+          path: |
+            **/regression.out
+            **/regression.diffs
+            **/results/
+          retention-days: 7
+
+      - name: Upload test regression logs
+        if: failure() || cancelled()
+        uses: actions/upload-artifact@v4
+        with:
+          name: regression-logs-cloudberry-${{ matrix.os }}
+          path: |
+            **/regression.out
+            **/regression.diffs
+            **/results/
+            **/yproxy.log
+            cloudberry/gpAux/gpdemo/datadirs/standby/log/
+            cloudberry/gpAux/gpdemo/datadirs/qddir/demoDataDir-1/log/
+            cloudberry/gpAux/gpdemo/datadirs/dbfast1/demoDataDir0/log/
+            cloudberry/gpAux/gpdemo/datadirs/dbfast2/demoDataDir1/log/
+            cloudberry/gpAux/gpdemo/datadirs/dbfast3/demoDataDir2/log/
+            cloudberry/gpAux/gpdemo/datadirs/dbfast_mirror1/demoDataDir0/log/
+            cloudberry/gpAux/gpdemo/datadirs/dbfast_mirror2/demoDataDir1/log/
+            cloudberry/gpAux/gpdemo/datadirs/dbfast_mirror3/demoDataDir2/log/
+          retention-days: 7
+
+  ## ======================================================================
+  ## Job: report
+  ## ======================================================================
+
+  report:
+    name: Generate Apache Cloudberry Build Report
+    needs: [test-cloudberry]
+    if: always()
+    runs-on: ubuntu-22.04
+    steps:
+      - name: Download matrix job results
+        uses: actions/download-artifact@v4
+        with:
+          pattern: matrix-result-*
+          merge-multiple: true
+          path: matrix-results/
+
+      - name: Generate Final Report
+        run: |
+          {
+            echo "# Yezzey Test Pipeline Report"
+            echo ""
+            echo "## Matrix Job Results"
+            echo ""
+
+            overall_ok=true
+            for result_file in matrix-results/result-*.txt; do
+              if [ -f "$result_file" ]; then
+                os=$(basename "$result_file" .txt | sed 's/^result-//')
+                status=$(cat "$result_file")
+                if [[ "$status" == "success" ]]; then
+                  echo "- ✅ **${os}**: ${status}"
+                else
+                  echo "- ❌ **${os}**: ${status}"
+                  overall_ok=false
+                fi
+              fi
+            done
+
+            echo ""
+            echo "## Overall Status"
+            echo "- Completion Time: $(date -u +'%Y-%m-%d %H:%M:%S UTC')"
+            echo ""
+
+            if [[ "$overall_ok" == "true" && "${{ needs.test-cloudberry.result 
}}" == "success" ]]; then
+              echo "✅ Pipeline completed successfully across all matrix 
entries"
+            else
+              echo "⚠️ Pipeline completed with failures — check per-OS results 
above"
+            fi
+          } >> "$GITHUB_STEP_SUMMARY"
+
+      - name: Notify on failure
+        if: needs.test-cloudberry.result != 'success'
+        run: |
+          echo "::error::Build/Test pipeline failed! Check job summaries and 
logs for details"
+          echo "Timestamp: $(date -u +'%Y-%m-%d %H:%M:%S UTC')"
+          echo "Cloudberry Result: ${{ needs.test-cloudberry.result }}"
+
+
diff --git a/.gitmodules b/.gitmodules
index a7b61644ee2..f900edb6807 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -15,3 +15,6 @@
        path = dependency/yyjson
        url = https://github.com/ibireme/yyjson.git
 
+[submodule "gpcontrib/yezzey"]
+       path = gpcontrib/yezzey
+       url = https://github.com/open-gpdb/yezzey.git
diff --git a/LICENSE b/LICENSE
index 0ccd7072122..5e3c7008094 100644
--- a/LICENSE
+++ b/LICENSE
@@ -338,6 +338,12 @@ Apache Cloudberry includes codes from
 
       see licenses/LICENSE-citusdata.txt
 
+----------------------------
+   PostgreSQL License
+
+      gpcontrib/yezzey/*
+      see licenses/LICENSE-yezzey.txt
+
 ----------------------------
    Apache License - Version 2.0
 
diff --git a/configure b/configure
index 74d1415d637..1f3c5c21afc 100755
--- a/configure
+++ b/configure
@@ -721,6 +721,8 @@ GREP
 with_apr_config
 with_libcurl
 with_rt
+HAVE_CXX11
+with_yezzey
 PROTOC
 with_gp_stats_collector
 with_diskquota
@@ -856,7 +858,6 @@ infodir
 docdir
 oldincludedir
 includedir
-runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -948,6 +949,7 @@ with_libbz2
 with_zstd
 with_diskquota
 with_gp_stats_collector
+with_yezzey
 with_rt
 with_libcurl
 with_apr_config
@@ -1032,7 +1034,6 @@ datadir='${datarootdir}'
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
-runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1285,15 +1286,6 @@ do
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
-  -runstatedir | --runstatedir | --runstatedi | --runstated \
-  | --runstate | --runstat | --runsta | --runst | --runs \
-  | --run | --ru | --r)
-    ac_prev=runstatedir ;;
-  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
-  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
-  | --run=* | --ru=* | --r=*)
-    runstatedir=$ac_optarg ;;
-
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1431,7 +1423,7 @@ fi
 for ac_var in  exec_prefix prefix bindir sbindir libexecdir datarootdir \
                datadir sysconfdir sharedstatedir localstatedir includedir \
                oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-               libdir localedir mandir runstatedir
+               libdir localedir mandir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1584,7 +1576,6 @@ Fine tuning of the installation directories:
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -1711,6 +1702,7 @@ Optional Packages:
   --with-diskquota        build with diskquota extension
   --with-gp_stats_collector
                           build with stats collector extension
+  --with-yezzey           build with Yezzey extension
   --without-rt            do not use Realtime Library
   --without-libcurl       do not use libcurl
   --with-apr-config=PATH  path to apr-1-config utility
@@ -11438,6 +11430,400 @@ $as_echo "yes" >&6; }
 fi
 fi
 
+#
+# yezzey
+#
+
+
+
+# Check whether --with-yezzey was given.
+if test "${with_yezzey+set}" = set; then :
+  withval=$with_yezzey;
+  case $withval in
+    yes)
+      :
+      ;;
+    no)
+      :
+      ;;
+    *)
+      as_fn_error $? "no argument expected for --with-yezzey option" "$LINENO" 
5
+      ;;
+  esac
+
+else
+  with_yezzey=no
+
+fi
+
+
+
+
+if test "$with_yezzey" = yes; then :
+   # then
+    ax_cxx_compile_alternatives="11 0x"    ax_cxx_compile_cxx11_required=true
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS 
conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+  ac_success=no
+
+
+
+    if test x$ac_success = xno; then
+                for alternative in ${ax_cxx_compile_alternatives}; do
+      for switch in -std=c++${alternative} +std=c++${alternative} "-h 
std=c++${alternative}"; do
+        cachevar=`$as_echo "ax_cv_cxx_compile_cxx11_$switch" | $as_tr_sh`
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX 
supports C++11 features with $switch" >&5
+$as_echo_n "checking whether $CXX supports C++11 features with $switch... " 
>&6; }
+if eval \${$cachevar+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_CXX="$CXX"
+           CXX="$CXX $switch"
+           cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+// If the compiler admits that it is not ready for C++11, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201103L
+
+#error "This is not a C++11 compiler"
+
+#else
+
+namespace cxx11
+{
+
+  namespace test_static_assert
+  {
+
+    template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
+
+  }
+
+  namespace test_final_override
+  {
+
+    struct Base
+    {
+      virtual ~Base() {}
+      virtual void f() {}
+    };
+
+    struct Derived : public Base
+    {
+      virtual ~Derived() override {}
+      virtual void f() override {}
+    };
+
+  }
+
+  namespace test_double_right_angle_brackets
+  {
+
+    template < typename T >
+    struct check {};
+
+    typedef check<void> single_type;
+    typedef check<check<void>> double_type;
+    typedef check<check<check<void>>> triple_type;
+    typedef check<check<check<check<void>>>> quadruple_type;
+
+  }
+
+  namespace test_decltype
+  {
+
+    int
+    f()
+    {
+      int a = 1;
+      decltype(a) b = 2;
+      return a + b;
+    }
+
+  }
+
+  namespace test_type_deduction
+  {
+
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static const bool value = false;
+    };
+
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static const bool value = true;
+    };
+
+    template < typename T1, typename T2 >
+    auto
+    add(T1 a1, T2 a2) -> decltype(a1 + a2)
+    {
+      return a1 + a2;
+    }
+
+    int
+    test(const int c, volatile int v)
+    {
+      static_assert(is_same<int, decltype(0)>::value == true, "");
+      static_assert(is_same<int, decltype(c)>::value == false, "");
+      static_assert(is_same<int, decltype(v)>::value == false, "");
+      auto ac = c;
+      auto av = v;
+      auto sumi = ac + av + 'x';
+      auto sumf = ac + av + 1.0;
+      static_assert(is_same<int, decltype(ac)>::value == true, "");
+      static_assert(is_same<int, decltype(av)>::value == true, "");
+      static_assert(is_same<int, decltype(sumi)>::value == true, "");
+      static_assert(is_same<int, decltype(sumf)>::value == false, "");
+      static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
+      return (sumf > 0.0) ? sumi : add(c, v);
+    }
+
+  }
+
+  namespace test_noexcept
+  {
+
+    int f() { return 0; }
+    int g() noexcept { return 0; }
+
+    static_assert(noexcept(f()) == false, "");
+    static_assert(noexcept(g()) == true, "");
+
+  }
+
+  namespace test_constexpr
+  {
+
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
+    {
+      return *s ? strlen_c_r(s + 1, acc + 1) : acc;
+    }
+
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c(const CharT *const s) noexcept
+    {
+      return strlen_c_r(s, 0UL);
+    }
+
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("1") == 1UL, "");
+    static_assert(strlen_c("example") == 7UL, "");
+    static_assert(strlen_c("another\0example") == 7UL, "");
+
+  }
+
+  namespace test_rvalue_references
+  {
+
+    template < int N >
+    struct answer
+    {
+      static constexpr int value = N;
+    };
+
+    answer<1> f(int&)       { return answer<1>(); }
+    answer<2> f(const int&) { return answer<2>(); }
+    answer<3> f(int&&)      { return answer<3>(); }
+
+    void
+    test()
+    {
+      int i = 0;
+      const int c = 0;
+      static_assert(decltype(f(i))::value == 1, "");
+      static_assert(decltype(f(c))::value == 2, "");
+      static_assert(decltype(f(0))::value == 3, "");
+    }
+
+  }
+
+  namespace test_uniform_initialization
+  {
+
+    struct test
+    {
+      static const int zero {};
+      static const int one {1};
+    };
+
+    static_assert(test::zero == 0, "");
+    static_assert(test::one == 1, "");
+
+  }
+
+  namespace test_lambdas
+  {
+
+    void
+    test1()
+    {
+      auto lambda1 = [](){};
+      auto lambda2 = lambda1;
+      lambda1();
+      lambda2();
+    }
+
+    int
+    test2()
+    {
+      auto a = [](int i, int j){ return i + j; }(1, 2);
+      auto b = []() -> int { return '0'; }();
+      auto c = [=](){ return a + b; }();
+      auto d = [&](){ return c; }();
+      auto e = [a, &b](int x) mutable {
+        const auto identity = [](int y){ return y; };
+        for (auto i = 0; i < a; ++i)
+          a += b--;
+        return x + identity(a + b);
+      }(0);
+      return a + b + c + d + e;
+    }
+
+    int
+    test3()
+    {
+      const auto nullary = [](){ return 0; };
+      const auto unary = [](int x){ return x; };
+      using nullary_t = decltype(nullary);
+      using unary_t = decltype(unary);
+      const auto higher1st = [](nullary_t f){ return f(); };
+      const auto higher2nd = [unary](nullary_t f1){
+        return [unary, f1](unary_t f2){ return f2(unary(f1())); };
+      };
+      return higher1st(nullary) + higher2nd(nullary)(unary);
+    }
+
+  }
+
+  namespace test_variadic_templates
+  {
+
+    template <int...>
+    struct sum;
+
+    template <int N0, int... N1toN>
+    struct sum<N0, N1toN...>
+    {
+      static constexpr auto value = N0 + sum<N1toN...>::value;
+    };
+
+    template <>
+    struct sum<>
+    {
+      static constexpr auto value = 0;
+    };
+
+    static_assert(sum<>::value == 0, "");
+    static_assert(sum<1>::value == 1, "");
+    static_assert(sum<23>::value == 23, "");
+    static_assert(sum<1, 2>::value == 3, "");
+    static_assert(sum<5, 5, 11>::value == 21, "");
+    static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
+
+  }
+
+  // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
+  // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
+  // because of this.
+  namespace test_template_alias_sfinae
+  {
+
+    struct foo {};
+
+    template<typename T>
+    using member = typename T::member_type;
+
+    template<typename T>
+    void func(...) {}
+
+    template<typename T>
+    void func(member<T>*) {}
+
+    void test();
+
+    void test() { func<foo>(0); }
+
+  }
+
+}  // namespace cxx11
+
+#endif  // __cplusplus >= 201103L
+
+
+
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  eval $cachevar=yes
+else
+  eval $cachevar=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+           CXX="$ac_save_CXX"
+fi
+eval ac_res=\$$cachevar
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+        if eval test x\$$cachevar = xyes; then
+          CXX="$CXX $switch"
+          if test -n "$CXXCPP" ; then
+            CXXCPP="$CXXCPP $switch"
+          fi
+          ac_success=yes
+          break
+        fi
+      done
+      if test x$ac_success = xyes; then
+        break
+      fi
+    done
+  fi
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext 
$LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+  if test x$ax_cxx_compile_cxx11_required = xtrue; then
+    if test x$ac_success = xno; then
+      as_fn_error $? "*** A compiler with support for C++11 language features 
is required." "$LINENO" 5
+    fi
+  fi
+  if test x$ac_success = xno; then
+    HAVE_CXX11=0
+    { $as_echo "$as_me:${as_lineno-$LINENO}: No compiler with C++11 support 
was found" >&5
+$as_echo "$as_me: No compiler with C++11 support was found" >&6;}
+  else
+    HAVE_CXX11=1
+
+$as_echo "#define HAVE_CXX11 1" >>confdefs.h
+
+  fi
+
+
+
+fi # fi
+
 #
 # Realtime library
 #
@@ -16011,6 +16397,10 @@ elif test "$with_ssl" != no ; then
   as_fn_error $? "--with-ssl must specify openssl" "$LINENO" 5
 fi
 
+if test "$with_yezzey" = yes && test "$with_ssl" != openssl ; then
+  as_fn_error $? "OpenSSL is required for Yezzey; specify --with-ssl=openssl 
when using --with-yezzey" "$LINENO" 5
+fi
+
 
 if test "$with_rt" = yes ; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" 
>&5
diff --git a/configure.ac b/configure.ac
index f0584d65076..77a3396ab31 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1398,6 +1398,18 @@ if test "$with_zstd" = yes; then
   PKG_CHECK_MODULES([ZSTD], [libzstd >= 1.4.0])
 fi
 
+#
+# yezzey
+#
+PGAC_ARG_BOOL(with, yezzey, no,
+              [build with Yezzey extension])
+AC_SUBST(with_yezzey)
+
+AS_IF([test "$with_yezzey" = yes],
+[ # then
+  AX_CXX_COMPILE_STDCXX([11], [noext], [mandatory])
+]) # fi
+
 #
 # Realtime library
 #
@@ -1772,6 +1784,10 @@ if test "$with_ssl" = openssl ; then
 elif test "$with_ssl" != no ; then
   AC_MSG_ERROR([--with-ssl must specify openssl])
 fi
+
+if test "$with_yezzey" = yes && test "$with_ssl" != openssl ; then
+  AC_MSG_ERROR([OpenSSL is required for Yezzey; specify --with-ssl=openssl 
when using --with-yezzey])
+fi
 AC_SUBST(with_ssl)
 
 if test "$with_rt" = yes ; then
diff --git a/devops/build/automation/cloudberry/scripts/configure-cloudberry.sh 
b/devops/build/automation/cloudberry/scripts/configure-cloudberry.sh
index cc9e7376239..5bb24e63734 100755
--- a/devops/build/automation/cloudberry/scripts/configure-cloudberry.sh
+++ b/devops/build/automation/cloudberry/scripts/configure-cloudberry.sh
@@ -36,6 +36,7 @@
 #   - PAX Access Method
 #   - PXF External Table Access
 #   - Test Automation Support (tap-tests)
+#   - Yezzey Extension (yezzey)
 #
 # System Integration:
 #   - GSSAPI Authentication
@@ -68,6 +69,12 @@
 #                 When true, add option:
 #                   --with-mdblocales
 #
+#   ENABLE_YEZZEY - Enable Yezzey extension (true/false, defaults to
+#                   false)
+#
+#                 When true, add option:
+#                   --with-yezzey
+#
 # Prerequisites:
 #   - System dependencies must be installed:
 #     * xerces-c development files
@@ -149,6 +156,11 @@ if [ "${ENABLE_MDBLOCALES:-false}" = "true" ]; then
     CONFIGURE_MDBLOCALES_OPTS="--with-mdblocales"
 fi
 
+CONFIGURE_YEZZEY_OPTS=""
+if [ "${ENABLE_YEZZEY:-false}" = "true" ]; then
+    CONFIGURE_YEZZEY_OPTS="--with-yezzey"
+fi
+
 # Configure build
 log_section "Configure"
 execute_cmd ./configure --prefix=${BUILD_DESTINATION} \
@@ -178,6 +190,8 @@ execute_cmd ./configure --prefix=${BUILD_DESTINATION} \
             --with-openssl \
             --with-uuid=e2fs \
             ${CONFIGURE_MDBLOCALES_OPTS} \
+            ${CONFIGURE_YEZZEY_OPTS} \
+     ${CONFIGURE_EXTRA_OPTS:-} \
             --with-includes=/usr/local/xerces-c/include \
             --with-libraries=${BUILD_DESTINATION}/lib || exit 4
 log_section_end "Configure"
diff --git a/gpcontrib/Makefile b/gpcontrib/Makefile
index 2969194cfac..4d6ea537807 100644
--- a/gpcontrib/Makefile
+++ b/gpcontrib/Makefile
@@ -40,6 +40,9 @@ endif
 ifeq "$(with_gp_stats_collector)" "yes"
        recurse_targets += gp_stats_collector
 endif
+ifeq "$(with_yezzey)" "yes"
+       recurse_targets += yezzey
+endif
 ifeq "$(with_zstd)" "yes"
        recurse_targets += zstd
 endif
diff --git a/gpcontrib/yezzey b/gpcontrib/yezzey
new file mode 160000
index 00000000000..0d88f66a5fd
--- /dev/null
+++ b/gpcontrib/yezzey
@@ -0,0 +1 @@
+Subproject commit 0d88f66a5fd0dba82681eef5929529cb153cb325
diff --git a/licenses/LICENSE-yezzey.txt b/licenses/LICENSE-yezzey.txt
new file mode 100644
index 00000000000..aa980b429c1
--- /dev/null
+++ b/licenses/LICENSE-yezzey.txt
@@ -0,0 +1,19 @@
+Copyright (c) 2022,  PostgreSQL Global Development Group
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose, without fee, and without a written agreement
+is hereby granted, provided that the above copyright notice and this
+paragraph and the following two paragraphs appear in all copies.
+
+IN NO EVENT SHALL POSTGRESQL GLOBAL DEVELOPMENT GROUP BE LIABLE TO ANY
+PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
+INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS
+DOCUMENTATION, EVEN IF POSTGRESQL GLOBAL DEVELOPMENT GROUP HAS BEEN
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+POSTGRESQL GLOBAL DEVELOPMENT GROUP SPECIFICALLY DISCLAIMS ANY WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
+ON AN "AS IS" BASIS, AND POSTGRESQL GLOBAL DEVELOPMENT GROUP HAS NO
+OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
+MODIFICATIONS.
diff --git a/pom.xml b/pom.xml
index de4985e0a84..bc47e76d859 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1276,6 +1276,218 @@ code or new licensing patterns.
             <exclude>gpcontrib/gp_stats_collector/.clang-format</exclude>
             <exclude>gpcontrib/gp_stats_collector/Makefile</exclude>
 
+            <!-- The following files are from yezzey extension,
+                 introduced by Cloudberry.
+            -->
+            
<exclude>gpcontrib/yezzey/.github/workflows/yezzey-ci.yaml</exclude>
+            
<exclude>gpcontrib/yezzey/devops/build/docker/minio/docker-compose.yaml</exclude>
+            
<exclude>gpcontrib/yezzey/devops/build/docker/minio/README</exclude>
+            <exclude>gpcontrib/yezzey/devops/config/priv.gpg</exclude>
+            <exclude>gpcontrib/yezzey/devops/config/pub.gpg</exclude>
+            <exclude>gpcontrib/yezzey/devops/config/yproxy.conf</exclude>
+            <exclude>gpcontrib/yezzey/devops/packaging/debian/compat</exclude>
+            <exclude>gpcontrib/yezzey/devops/packaging/debian/control</exclude>
+            
<exclude>gpcontrib/yezzey/devops/packaging/debian/control.in</exclude>
+            
<exclude>gpcontrib/yezzey/devops/packaging/debian/pgversions</exclude>
+            <exclude>gpcontrib/yezzey/devops/packaging/debian/rules</exclude>
+            
<exclude>gpcontrib/yezzey/devops/packaging/debian/source/format</exclude>
+            
<exclude>gpcontrib/yezzey/devops/packaging/debian/source/lintian-overrides</exclude>
+            <exclude>gpcontrib/yezzey/devops/scripts/boot.sh</exclude>
+            <exclude>gpcontrib/yezzey/devops/scripts/conf_setup.sh</exclude>
+            
<exclude>gpcontrib/yezzey/devops/scripts/create_demo_yezzey_cloudberry.sh</exclude>
+            
<exclude>gpcontrib/yezzey/devops/scripts/create_demo_yezzey_gpdb.sh</exclude>
+            <exclude>gpcontrib/yezzey/devops/scripts/launch_yproxy.sh</exclude>
+            
<exclude>gpcontrib/yezzey/devops/scripts/prepare_test_yezzey.sh</exclude>
+            <exclude>gpcontrib/yezzey/docs/README.cleanup.md</exclude>
+            <exclude>gpcontrib/yezzey/docs/yezzey_vacuum.md</exclude>
+            <exclude>gpcontrib/yezzey/example_with_backup.md</exclude>
+            <exclude>gpcontrib/yezzey/expected/drop-column_cbdb.out</exclude>
+            <exclude>gpcontrib/yezzey/expected/drop-column.out</exclude>
+            
<exclude>gpcontrib/yezzey/expected/load_offload_load_cbdb.out</exclude>
+            <exclude>gpcontrib/yezzey/expected/load_offload_load.out</exclude>
+            <exclude>gpcontrib/yezzey/expected/simple_cbdb.out</exclude>
+            <exclude>gpcontrib/yezzey/expected/simple.out</exclude>
+            <exclude>gpcontrib/yezzey/expected/versions.out</exclude>
+            
<exclude>gpcontrib/yezzey/expected/yezzey_feat_cbdb_last.out</exclude>
+            <exclude>gpcontrib/yezzey/expected/yezzey_feat_cbdb.out</exclude>
+            <exclude>gpcontrib/yezzey/expected/yezzey-alter_cbdb.out</exclude>
+            
<exclude>gpcontrib/yezzey/expected/yezzey-alter-toast_cbdb.out</exclude>
+            <exclude>gpcontrib/yezzey/expected/yezzey-alter-toast.out</exclude>
+            
<exclude>gpcontrib/yezzey/expected/yezzey-alter-ts_cbdb.out</exclude>
+            <exclude>gpcontrib/yezzey/expected/yezzey-alter-ts.out</exclude>
+            <exclude>gpcontrib/yezzey/expected/yezzey-alter.out</exclude>
+            
<exclude>gpcontrib/yezzey/expected/yezzey-create-offloaded_cbdb.out</exclude>
+            
<exclude>gpcontrib/yezzey/expected/yezzey-create-offloaded.out</exclude>
+            <exclude>gpcontrib/yezzey/expected/yezzey-expand_cbdb.out</exclude>
+            <exclude>gpcontrib/yezzey/expected/yezzey-expand.out</exclude>
+            
<exclude>gpcontrib/yezzey/expected/yezzey-otm-deletion_cbdb.out</exclude>
+            
<exclude>gpcontrib/yezzey/expected/yezzey-otm-deletion.out</exclude>
+            
<exclude>gpcontrib/yezzey/expected/yezzey-otm-feat_cbdb.out</exclude>
+            <exclude>gpcontrib/yezzey/expected/yezzey-otm-feat.out</exclude>
+            <exclude>gpcontrib/yezzey/expected/yezzey-reorg_cbdb.out</exclude>
+            <exclude>gpcontrib/yezzey/expected/yezzey-reorg.out</exclude>
+            <exclude>gpcontrib/yezzey/expected/yezzey-stat_cbdb.out</exclude>
+            <exclude>gpcontrib/yezzey/expected/yezzey-stat.out</exclude>
+            <exclude>gpcontrib/yezzey/expected/yezzey-trunc_cbdb.out</exclude>
+            <exclude>gpcontrib/yezzey/expected/yezzey-trunc.out</exclude>
+            
<exclude>gpcontrib/yezzey/expected/yezzey-vac-relation_cbdb.out</exclude>
+            
<exclude>gpcontrib/yezzey/expected/yezzey-vac-relation-187_cbdb.out</exclude>
+            
<exclude>gpcontrib/yezzey/expected/yezzey-vac-relation-187.out</exclude>
+            
<exclude>gpcontrib/yezzey/expected/yezzey-vac-relation.out</exclude>
+            <exclude>gpcontrib/yezzey/expected/yezzey-vacuum_cbdb.out</exclude>
+            
<exclude>gpcontrib/yezzey/expected/yezzey-vacuum-garbage_cbdb.out</exclude>
+            
<exclude>gpcontrib/yezzey/expected/yezzey-vacuum-garbage.out</exclude>
+            <exclude>gpcontrib/yezzey/expected/yezzey-vacuum.out</exclude>
+            
<exclude>gpcontrib/yezzey/expected/yezzey-vi-eh-unique_cbdb.out</exclude>
+            
<exclude>gpcontrib/yezzey/expected/yezzey-vi-eh-unique.out</exclude>
+            <exclude>gpcontrib/yezzey/images/read.png</exclude>
+            <exclude>gpcontrib/yezzey/images/workflow.png</exclude>
+            <exclude>gpcontrib/yezzey/images/write.png</exclude>
+            <exclude>gpcontrib/yezzey/include/binary_upgrade.h</exclude>
+            <exclude>gpcontrib/yezzey/include/chunkinfo.h</exclude>
+            <exclude>gpcontrib/yezzey/include/expire_hint.h</exclude>
+            <exclude>gpcontrib/yezzey/include/gucs.h</exclude>
+            <exclude>gpcontrib/yezzey/include/io_adv.h</exclude>
+            <exclude>gpcontrib/yezzey/include/io.h</exclude>
+            <exclude>gpcontrib/yezzey/include/meta.h</exclude>
+            <exclude>gpcontrib/yezzey/include/msgproto.h</exclude>
+            <exclude>gpcontrib/yezzey/include/offload_policy.h</exclude>
+            
<exclude>gpcontrib/yezzey/include/offload_tablespace_map.h</exclude>
+            <exclude>gpcontrib/yezzey/include/offload.h</exclude>
+            <exclude>gpcontrib/yezzey/include/partition.h</exclude>
+            <exclude>gpcontrib/yezzey/include/pg.h</exclude>
+            <exclude>gpcontrib/yezzey/include/proxy.h</exclude>
+            <exclude>gpcontrib/yezzey/include/storage.h</exclude>
+            <exclude>gpcontrib/yezzey/include/types.h</exclude>
+            <exclude>gpcontrib/yezzey/include/url.h</exclude>
+            <exclude>gpcontrib/yezzey/include/util.h</exclude>
+            <exclude>gpcontrib/yezzey/include/virtual_index.h</exclude>
+            <exclude>gpcontrib/yezzey/include/virtual_schema.h</exclude>
+            <exclude>gpcontrib/yezzey/include/virtual_tablespace.h</exclude>
+            <exclude>gpcontrib/yezzey/include/worker.h</exclude>
+            <exclude>gpcontrib/yezzey/include/xvacuum.h</exclude>
+            <exclude>gpcontrib/yezzey/include/yezzey_heap_api.h</exclude>
+            <exclude>gpcontrib/yezzey/include/yezzey_meta.h</exclude>
+            <exclude>gpcontrib/yezzey/include/ygpver.h</exclude>
+            <exclude>gpcontrib/yezzey/include/yproxy_connector.h</exclude>
+            <exclude>gpcontrib/yezzey/include/yproxy_deleter_v2.h</exclude>
+            <exclude>gpcontrib/yezzey/include/yproxy_deleter.h</exclude>
+            <exclude>gpcontrib/yezzey/include/yproxy_lister.h</exclude>
+            <exclude>gpcontrib/yezzey/include/yproxy_reader.h</exclude>
+            <exclude>gpcontrib/yezzey/include/yproxy_writer.h</exclude>
+            <exclude>gpcontrib/yezzey/include/yproxy.h</exclude>
+            <exclude>gpcontrib/yezzey/LICENSE</exclude>
+            <exclude>gpcontrib/yezzey/Makefile</exclude>
+            <exclude>gpcontrib/yezzey/notes/announce.md</exclude>
+            <exclude>gpcontrib/yezzey/notes/scripts/1. 
ny-taxi-src-pxf.sql</exclude>
+            <exclude>gpcontrib/yezzey/notes/scripts/2. 
ny-taxi-src-gp.sql</exclude>
+            <exclude>gpcontrib/yezzey/notes/scripts/3. 
ny-taxi-yezzey.sql</exclude>
+            <exclude>gpcontrib/yezzey/notes/scripts/4. 
ny-taxi-pxf-rw.sql</exclude>
+            <exclude>gpcontrib/yezzey/notes/scripts/5. 
ny-taxi-zones-src-pxf.sql</exclude>
+            <exclude>gpcontrib/yezzey/notes/scripts/6. 
ny-taxi-zones-src-gp.sql</exclude>
+            <exclude>gpcontrib/yezzey/notes/scripts/7. 
yezzey-test.sql</exclude>
+            <exclude>gpcontrib/yezzey/notes/scripts/8. ny-taxi-s3.sql</exclude>
+            <exclude>gpcontrib/yezzey/notes/scripts/9. s3-test.sql</exclude>
+            <exclude>gpcontrib/yezzey/README.md</exclude>
+            <exclude>gpcontrib/yezzey/README.ubuntu.install</exclude>
+            <exclude>gpcontrib/yezzey/smgr.c</exclude>
+            <exclude>gpcontrib/yezzey/sql/drop-column_cbdb.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/drop-column.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/load_offload_load_cbdb.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/load_offload_load.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/simple_cbdb.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/simple.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/versions.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/yezzey_feat_cbdb_last.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/yezzey_feat_cbdb.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/yezzey-alter_cbdb.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/yezzey-alter-toast_cbdb.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/yezzey-alter-toast.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/yezzey-alter-ts_cbdb.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/yezzey-alter-ts.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/yezzey-alter.sql</exclude>
+            
<exclude>gpcontrib/yezzey/sql/yezzey-create-offloaded_cbdb.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/yezzey-create-offloaded.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/yezzey-expand_cbdb.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/yezzey-expand.sql</exclude>
+            
<exclude>gpcontrib/yezzey/sql/yezzey-otm-deletion_cbdb.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/yezzey-otm-deletion.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/yezzey-otm-feat_cbdb.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/yezzey-otm-feat.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/yezzey-reorg_cbdb.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/yezzey-reorg.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/yezzey-stat_cbdb.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/yezzey-stat.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/yezzey-trunc_cbdb.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/yezzey-trunc.sql</exclude>
+            
<exclude>gpcontrib/yezzey/sql/yezzey-vac-relation_cbdb.sql</exclude>
+            
<exclude>gpcontrib/yezzey/sql/yezzey-vac-relation-187_cbdb.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/yezzey-vac-relation-187.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/yezzey-vac-relation.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/yezzey-vacuum_cbdb.sql</exclude>
+            
<exclude>gpcontrib/yezzey/sql/yezzey-vacuum-garbage_cbdb.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/yezzey-vacuum-garbage.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/yezzey-vacuum.sql</exclude>
+            
<exclude>gpcontrib/yezzey/sql/yezzey-vi-eh-unique_cbdb.sql</exclude>
+            <exclude>gpcontrib/yezzey/sql/yezzey-vi-eh-unique.sql</exclude>
+            <exclude>gpcontrib/yezzey/src/binary_upgrade.cpp</exclude>
+            <exclude>gpcontrib/yezzey/src/expire_hint.cpp</exclude>
+            <exclude>gpcontrib/yezzey/src/io_adv.cpp</exclude>
+            <exclude>gpcontrib/yezzey/src/io.cpp</exclude>
+            <exclude>gpcontrib/yezzey/src/meta.cpp</exclude>
+            <exclude>gpcontrib/yezzey/src/msgproto.cpp</exclude>
+            <exclude>gpcontrib/yezzey/src/offload_policy.cpp</exclude>
+            <exclude>gpcontrib/yezzey/src/offload_tablespace_map.cpp</exclude>
+            <exclude>gpcontrib/yezzey/src/offload.cpp</exclude>
+            <exclude>gpcontrib/yezzey/src/partition.cpp</exclude>
+            <exclude>gpcontrib/yezzey/src/proxy.cpp</exclude>
+            <exclude>gpcontrib/yezzey/src/storage.cpp</exclude>
+            <exclude>gpcontrib/yezzey/src/url.cpp</exclude>
+            <exclude>gpcontrib/yezzey/src/util.cpp</exclude>
+            <exclude>gpcontrib/yezzey/src/virtual_index.cpp</exclude>
+            <exclude>gpcontrib/yezzey/src/virtual_schema.cpp</exclude>
+            <exclude>gpcontrib/yezzey/src/virtual_tablespace.cpp</exclude>
+            <exclude>gpcontrib/yezzey/src/xvacuum.cpp</exclude>
+            <exclude>gpcontrib/yezzey/src/yproxy_connector.cpp</exclude>
+            <exclude>gpcontrib/yezzey/src/yproxy_deleter_v2.cpp</exclude>
+            <exclude>gpcontrib/yezzey/src/yproxy_deleter.cpp</exclude>
+            <exclude>gpcontrib/yezzey/src/yproxy_lister.cpp</exclude>
+            <exclude>gpcontrib/yezzey/src/yproxy_reader.cpp</exclude>
+            <exclude>gpcontrib/yezzey/src/yproxy_writer.cpp</exclude>
+            <exclude>gpcontrib/yezzey/test/Makefile</exclude>
+            <exclude>gpcontrib/yezzey/test/msgproto_test.cpp</exclude>
+            
<exclude>gpcontrib/yezzey/test/regress_source/expirity.sql</exclude>
+            
<exclude>gpcontrib/yezzey/test/regress_source/metadata.sql</exclude>
+            
<exclude>gpcontrib/yezzey/test/regress_source/simple_alter.sql</exclude>
+            
<exclude>gpcontrib/yezzey/test/regress_source/simple_vac.sql</exclude>
+            <exclude>gpcontrib/yezzey/test/regress_source/simple.sql</exclude>
+            
<exclude>gpcontrib/yezzey/test/regress_source/simplebig.sql</exclude>
+            
<exclude>gpcontrib/yezzey/test/regress_source/simplelol.sql</exclude>
+            <exclude>gpcontrib/yezzey/test/regress_source/yao.sql</exclude>
+            
<exclude>gpcontrib/yezzey/test/regress_source/yezzey_wal.sql</exclude>
+            
<exclude>gpcontrib/yezzey/test/regress_source/yezzey-exp.sql</exclude>
+            
<exclude>gpcontrib/yezzey/test/regress_source/yezzey-large.sql</exclude>
+            
<exclude>gpcontrib/yezzey/test/regress_source/yezzey-reorg.sql</exclude>
+            
<exclude>gpcontrib/yezzey/test/regress_source/yezzey-vindex.sql</exclude>
+            <exclude>gpcontrib/yezzey/test/regress_source/yezzey.sql</exclude>
+            <exclude>gpcontrib/yezzey/test/yproxy_test.cpp</exclude>
+            <exclude>gpcontrib/yezzey/yezzey--1.0--1.8.sql</exclude>
+            <exclude>gpcontrib/yezzey/yezzey--1.0.sql</exclude>
+            <exclude>gpcontrib/yezzey/yezzey--1.8--1.8.1.sql</exclude>
+            <exclude>gpcontrib/yezzey/yezzey--1.8.1--1.8.2.sql</exclude>
+            <exclude>gpcontrib/yezzey/yezzey--1.8.2--1.8.3.sql</exclude>
+            <exclude>gpcontrib/yezzey/yezzey--1.8.3--1.8.4.sql</exclude>
+            <exclude>gpcontrib/yezzey/yezzey--1.8.4--1.8.5.sql</exclude>
+            <exclude>gpcontrib/yezzey/yezzey--1.8.5--1.8.6.sql</exclude>
+            <exclude>gpcontrib/yezzey/yezzey--1.8.6--1.8.7.sql</exclude>
+            <exclude>gpcontrib/yezzey/yezzey--1.8.7--1.8.8.sql</exclude>
+            <exclude>gpcontrib/yezzey/yezzey--1.8.8.sql</exclude>
+            <exclude>gpcontrib/yezzey/yezzey.c</exclude>
+            <exclude>gpcontrib/yezzey/yezzey.control</exclude>
+            <exclude>gpcontrib/yezzey/yezzey.h</exclude>
+            
<exclude>gpcontrib/yezzey/yezzey/devops/packaging/ubuntu/script/build_cloudberry_deb.sh</exclude>
+            <exclude>gpcontrib/yezzey/ystat.h</exclude>
+
             <!-- The following files are used by PAX as the 
                  submodules or created originally by Cloudberry.
             -->
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index d413bd86761..457a4a0944e 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -273,6 +273,7 @@ ZSTD_LIBS           = @ZSTD_LIBS@
 EVENT_LIBS             = @EVENT_LIBS@
 with_diskquota         = @with_diskquota@
 with_gp_stats_collector                = @with_gp_stats_collector@
+with_yezzey            = @with_yezzey@
 
 ##########################################################################
 #


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to