Skip to content
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 45 additions & 33 deletions compute/compute-node.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -1143,6 +1143,23 @@ RUN cargo install --locked --version 0.14.1 cargo-pgrx && \

USER root

#########################################################################################
#
# Layer "rust extensions pgrx16"
#
# Version 16 is now required by a few
# This layer should be used as a base for new pgrx extensions,
# and eventually get merged with `rust-extensions-build`
#
#########################################################################################
FROM pg-build-with-cargo AS rust-extensions-build-pgrx16
ARG PG_VERSION

RUN cargo install --locked --version 0.16.0 cargo-pgrx && \
/bin/bash -c 'cargo pgrx init --pg${PG_VERSION:1}=/usr/local/pgsql/bin/pg_config'

USER root

#########################################################################################
#
# Layers "pg-onnx-build" and "pgrag-build"
Expand Down Expand Up @@ -1491,19 +1508,14 @@ RUN make -j $(getconf _NPROCESSORS_ONLN) && \
FROM build-deps AS pg_mooncake-src
ARG PG_VERSION
WORKDIR /ext-src
COPY compute/patches/duckdb_v113.patch .
RUN wget https://github.com/Mooncake-Labs/pg_mooncake/releases/download/v0.1.2/pg_mooncake-0.1.2.tar.gz -O pg_mooncake.tar.gz && \
echo "4550473784fcdd2e1e18062bc01eb9c286abd27cdf5e11a4399be6c0a426ba90 pg_mooncake.tar.gz" | sha256sum --check && \
mkdir pg_mooncake-src && cd pg_mooncake-src && tar xzf ../pg_mooncake.tar.gz --strip-components=1 -C . && \
cd third_party/duckdb && patch -p1 < /ext-src/duckdb_v113.patch && cd ../.. && \
echo "make -f pg_mooncake-src/Makefile.build installcheck TEST_DIR=./test SQL_DIR=./sql SRC_DIR=./src" > neon-test.sh && \
chmod a+x neon-test.sh

FROM rust-extensions-build AS pg_mooncake-build
RUN git clone --depth 1 --branch poc https://github.com/Mooncake-Labs/pg_mooncake.git pg_mooncake-src && \
cd pg_mooncake-src && \
git submodule update --init --recursive

FROM rust-extensions-build-pgrx16 AS pg_mooncake-build
COPY --from=pg_mooncake-src /ext-src/ /ext-src/
WORKDIR /ext-src/pg_mooncake-src
RUN make release -j $(getconf _NPROCESSORS_ONLN) && \
make install -j $(getconf _NPROCESSORS_ONLN) && \
RUN make install PG_VERSION=pg${PG_VERSION#v} && \
echo 'trusted = true' >> /usr/local/pgsql/share/extension/pg_mooncake.control

#########################################################################################
Expand All @@ -1512,27 +1524,27 @@ RUN make release -j $(getconf _NPROCESSORS_ONLN) && \
# compile pg_duckdb extension
#
#########################################################################################
FROM build-deps AS pg_duckdb-src
WORKDIR /ext-src
COPY compute/patches/pg_duckdb_v031.patch .
COPY compute/patches/duckdb_v120.patch .
# pg_duckdb build requires source dir to be a git repo to get submodules
# allow {privileged_role_name} to execute some functions that in pg_duckdb are available to superuser only:
# - extension management function duckdb.install_extension()
# - access to duckdb.extensions table and its sequence
RUN git clone --depth 1 --branch v0.3.1 https://github.com/duckdb/pg_duckdb.git pg_duckdb-src && \
cd pg_duckdb-src && \
git submodule update --init --recursive && \
patch -p1 < /ext-src/pg_duckdb_v031.patch && \
cd third_party/duckdb && \
patch -p1 < /ext-src/duckdb_v120.patch

FROM pg-build AS pg_duckdb-build
ARG PG_VERSION
COPY --from=pg_duckdb-src /ext-src/ /ext-src/
WORKDIR /ext-src/pg_duckdb-src
RUN make install -j $(getconf _NPROCESSORS_ONLN) && \
echo 'trusted = true' >> /usr/local/pgsql/share/extension/pg_duckdb.control
# FROM build-deps AS pg_duckdb-src
Copy link
Contributor Author

@dpxcc dpxcc Aug 19, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I temporarily disabled pg_duckdb for this POC build to avoid conflicts

We are working on making pg_mooncake a subextension of pg_duckdb. Once pg_mooncake v0.2 is officially released, we will be fully compatible with pg_duckdb

# WORKDIR /ext-src
# COPY compute/patches/pg_duckdb_v031.patch .
# COPY compute/patches/duckdb_v120.patch .
# # pg_duckdb build requires source dir to be a git repo to get submodules
# # allow {privileged_role_name} to execute some functions that in pg_duckdb are available to superuser only:
# # - extension management function duckdb.install_extension()
# # - access to duckdb.extensions table and its sequence
# RUN git clone --depth 1 --branch v0.3.1 https://github.com/duckdb/pg_duckdb.git pg_duckdb-src && \
# cd pg_duckdb-src && \
# git submodule update --init --recursive && \
# patch -p1 < /ext-src/pg_duckdb_v031.patch && \
# cd third_party/duckdb && \
# patch -p1 < /ext-src/duckdb_v120.patch

# FROM pg-build AS pg_duckdb-build
# ARG PG_VERSION
# COPY --from=pg_duckdb-src /ext-src/ /ext-src/
# WORKDIR /ext-src/pg_duckdb-src
# RUN make install -j $(getconf _NPROCESSORS_ONLN) && \
# echo 'trusted = true' >> /usr/local/pgsql/share/extension/pg_duckdb.control

#########################################################################################
#
Expand Down Expand Up @@ -1708,7 +1720,7 @@ COPY --from=pg-anon-pg-build /usr/local/pgsql/ /usr/local/pgsql/
COPY --from=pg_ivm-build /usr/local/pgsql/ /usr/local/pgsql/
COPY --from=pg_partman-build /usr/local/pgsql/ /usr/local/pgsql/
COPY --from=pg_mooncake-build /usr/local/pgsql/ /usr/local/pgsql/
COPY --from=pg_duckdb-build /usr/local/pgsql/ /usr/local/pgsql/
# COPY --from=pg_duckdb-build /usr/local/pgsql/ /usr/local/pgsql/
COPY --from=pg_repack-build /usr/local/pgsql/ /usr/local/pgsql/
COPY --from=pgaudit-build /usr/local/pgsql/ /usr/local/pgsql/
COPY --from=pgauditlogtofile-build /usr/local/pgsql/ /usr/local/pgsql/
Expand Down
Loading