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]