Skip to content

Commit bad5907

Browse files
authored
Merge branch 'main' into copilot/add-for-clause-support
2 parents 7ee239e + 779dd22 commit bad5907

54 files changed

Lines changed: 1838 additions & 1871 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/regression_suite.yaml

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,12 @@ jobs:
3535
with:
3636
python-version: ${{ matrix.python-version }}
3737
architecture: x64
38+
- name: Install system packages (Ubuntu)
39+
if: matrix.os == 'ubuntu-latest'
40+
run: |
41+
sudo apt-get update
42+
# We only need libssl-dev/pkg-config for libcrypto and build tooling
43+
sudo apt-get install -y libssl-dev pkg-config
3844
3945
- name: Install Requirements
4046
run: |
@@ -44,6 +50,20 @@ jobs:
4450
python -m uv pip install --upgrade -r $GITHUB_WORKSPACE/pyproject.toml
4551
python setup.py build_ext --inplace -j 4
4652
53+
- name: Print 'parquet' shared object dependencies
54+
if: matrix.os == 'ubuntu-latest'
55+
run: |
56+
set -eux
57+
SO_FILE=$(ls -1 opteryx/rugo/parquet*.so | head -n1)
58+
echo "Located: $SO_FILE"
59+
echo "File type: $(file $SO_FILE)"
60+
echo "ldd output:"
61+
ldd $SO_FILE || true
62+
if ! ldd $SO_FILE | grep -q libcrypto; then
63+
echo "ERROR: libcrypto not linked into $SO_FILE"
64+
exit 1
65+
fi
66+
4767
- name: "Start Memcached Instance"
4868
run: |
4969
docker run -d --name my-memcached \
@@ -82,7 +102,6 @@ jobs:
82102
OPTERYX_DEBUG: 1
83103
MAX_LOCAL_BUFFER_CAPACITY: 100
84104
MAX_CACHE_EVICTIONS_PER_QUERY: 4
85-
DATA_CATALOG_PROVIDER: 'ICEBERG'
86105
DATA_CATALOG_CONNECTION: '${{ secrets.DATA_CATALOG_CONNECTION }}'
87106
DATA_CATALOG_STORAGE: '${{ secrets.DATA_CATALOG_STORAGE }}'
88107
VALKEY_CONNECTION: '${{ secrets.VALKEY_CONNECTION }}'

.github/workflows/regression_suite_arm.yaml

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,12 @@ jobs:
2626
with:
2727
python-version: ${{ matrix.python-version }}
2828
cache: pip
29+
- name: Install system packages (Ubuntu ARM)
30+
if: matrix.os == 'ubuntu-24.04-arm'
31+
run: |
32+
sudo apt-get update
33+
# Only needed for libcrypto & build tools on ARM; zstd/snappy are vendored.
34+
sudo apt-get install -y libssl-dev pkg-config
2935
3036
- name: Install Rust
3137
uses: actions-rs/toolchain@v1
@@ -41,6 +47,23 @@ jobs:
4147
python -m uv pip install --upgrade -r $GITHUB_WORKSPACE/pyproject.toml
4248
python setup.py build_ext --inplace -j 4
4349
50+
- name: Print 'parquet' shared object dependencies
51+
run: |
52+
set -eux
53+
# Attempt to locate the built parquet shared object and print its dynamic
54+
# dependencies so we can verify that it was linked against libcrypto on Linux.
55+
SO_FILE=$(ls -1 opteryx/rugo/parquet*.so | head -n1)
56+
echo "Located: $SO_FILE"
57+
echo "File type: $(file $SO_FILE)"
58+
echo "ldd output:"
59+
ldd $SO_FILE || true
60+
if ! ldd $SO_FILE | grep -q libcrypto; then
61+
echo "ERROR: libcrypto not linked into $SO_FILE"
62+
exit 1
63+
fi
64+
# We vendor zstd & snappy into the parquet extension; they may not show
65+
# up in ldd output as dynamic dependencies. Only assert libcrypto presence.
66+
4467
- name: "Authenticate to Google Cloud"
4568
uses: google-github-actions/auth@v1
4669
with:
@@ -55,7 +78,4 @@ jobs:
5578
POSTGRES_USER: '${{ secrets.POSTGRES_USER }}'
5679
POSTGRES_PASSWORD: '${{ secrets.POSTGRES_PASSWORD }}'
5780
MEMCACHED_SERVER: 'localhost:11211'
58-
DATA_CATALOG_PROVIDER: 'ICEBERG'
59-
DATA_CATALOG_CONFIGURATION: '${{ secrets.DATA_CATALOG_CONFIGURATION }}'
60-
EXPERIMENTAL_EXECUTION_ENGINE: 'true'
6181
RESOURCES_PATH: 'testdata'

.github/workflows/regression_suite_mac_ARM.yaml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,15 @@ jobs:
4141
python -m uv pip install --upgrade -r $GITHUB_WORKSPACE/tests/requirements.txt
4242
python -m uv pip install --upgrade -r $GITHUB_WORKSPACE/pyproject.toml
4343
44-
- name: Build on macOS universal2
44+
- name: Build on macOS (arm64)
4545
shell: bash
4646
env:
4747
DEVELOPER_DIR: /Applications/Xcode.app/Contents/Developer
4848
MACOSX_DEPLOYMENT_TARGET: "10.15"
4949
ARCHFLAGS: -arch arm64
5050
PYO3_CROSS_PYTHON_VERSION: ${{ matrix.python-version }}
51-
run: python setup.py build_ext --inplace -j 4
51+
run: |
52+
python setup.py build_ext --inplace -j 4
5253
5354
- name: "Authenticate to Google Cloud"
5455
uses: google-github-actions/auth@v1
@@ -64,7 +65,5 @@ jobs:
6465
POSTGRES_USER: '${{ secrets.POSTGRES_USER }}'
6566
POSTGRES_PASSWORD: '${{ secrets.POSTGRES_PASSWORD }}'
6667
MEMCACHED_SERVER: 'localhost:11211'
67-
DATA_CATALOG_PROVIDER: 'ICEBERG'
68-
DATA_CATALOG_CONFIGURATION: '${{ secrets.DATA_CATALOG_CONFIGURATION }}'
6968
EXPERIMENTAL_EXECUTION_ENGINE: 'true'
7069
RESOURCES_PATH: 'testdata'

.github/workflows/regression_suite_python313t.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,6 @@ jobs:
114114
OPTERYX_DEBUG: 1
115115
MAX_LOCAL_BUFFER_CAPACITY: 100
116116
MAX_CACHE_EVICTIONS_PER_QUERY: 4
117-
DATA_CATALOG_PROVIDER: 'ICEBERG'
118117
DATA_CATALOG_CONNECTION: '${{ secrets.DATA_CATALOG_CONNECTION }}'
119118
DATA_CATALOG_STORAGE: '${{ secrets.DATA_CATALOG_STORAGE }}'
120119
VALKEY_CONNECTION: '${{ secrets.VALKEY_CONNECTION }}'

.github/workflows/release.yaml

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ jobs:
9090
toolchain: stable
9191
override: true
9292

93-
- name: Set up Python ${{ matrix.python-version }} x64
93+
- name: Set up Python ${{ matrix.python-version }}
9494
uses: actions/setup-python@v5
9595
with:
9696
python-version: ${{ matrix.python-version }}
@@ -101,15 +101,19 @@ jobs:
101101
- name: Install Rust aarch64-apple-darwin target
102102
run: rustup target add aarch64-apple-darwin
103103

104-
- name: Install Rust x86_64-apple-darwin
105-
run: rustup target add x86_64-apple-darwin
104+
# Dropped x86 macOS support: we no longer build x86_64 mac artifacts
105+
# as Apple stopped support for Intel macs. We build arm64-only mac wheels.
106106

107-
- name: Build on macOS universal2
107+
- name: Build on macOS (arm64)
108108
shell: bash
109109
env:
110110
DEVELOPER_DIR: /Applications/Xcode.app/Contents/Developer
111111
MACOSX_DEPLOYMENT_TARGET: "10.15"
112-
ARCHFLAGS: -arch x86_64 -arch arm64
112+
# Build for arm64 only for now. Building universal2 in a single
113+
# invocation can cause mac x86_64 assembly / linker errors
114+
# (fixup/linker errors in huf_decompress) reported during release
115+
# builds. We match the regression mac runner (arm64) for now.
116+
ARCHFLAGS: -arch arm64
113117
PYO3_CROSS_PYTHON_VERSION: ${{ matrix.python-version }}
114118
run: python setup.py bdist_wheel
115119

.gitignore

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -183,14 +183,14 @@ hits_split/*.parquet
183183
clickbench/**
184184
.github/environment/splunk/docker-compose.yml
185185
testdata/iceberg/**
186-
third_party/tktech/simdjson/csimdjson.cpp
186+
third_party/tktech/simdjson/csimdjson.c*
187187
opteryx/compiled/list_ops/list_ops.pyx
188-
opteryx/third_party/abseil/containers.cpp
188+
opteryx/third_party/abseil/containers.c*
189189
opteryx/third_party/alantsd/base64.c*
190190
opteryx/third_party/cyan4973/xxhash.c*
191-
opteryx/third_party/fastfloat/fast_float.cpp
191+
opteryx/third_party/fastfloat/fast_float.c*
192192
opteryx/third_party/fuzzy/soundex.c*
193-
opteryx/third_party/tktech/csimdjson.cpp
193+
opteryx/third_party/tktech/csimdjson.c*
194194
opteryx/third_party/ulfjack/ryu.c*
195195
opteryx/compiled/joins/joins.pyx
196196
pyiceberg_catalog.db
@@ -199,8 +199,8 @@ testdata/parquet_tests/185d5a679a475304.parquet
199199
testdata/parquet_tests/42004e494300.parquet
200200
testdata/parquet_tests/hits_51.parquet
201201
.gitignore
202-
third_party/mabel/rugo/parquet/parquet_reader.cpp
203-
third_party/mabel/rugo/jsonl/jsonl_reader.cpp
202+
third_party/mabel/rugo/parquet/parquet_reader.c*
203+
third_party/mabel/rugo/jsonl/jsonl_reader.c*
204204
generated_*.pyx
205205
generated_*.c*
206206
third_party/mabel/draken/interop/arrow.c*
@@ -219,4 +219,5 @@ tests/draken/performance/.perf_baseline.json
219219
opteryx/draken/vectors/_hash_api.c*
220220
third_party/mabel/draken/vectors/interval_vector.c*
221221
third_party/mabel/draken/morsels/align.c*
222-
third_party/mabel/draken/compiled/maskops.cpp
222+
third_party/mabel/draken/compiled/maskops.c*
223+
**.html

DEVELOPER_GUIDE.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,16 @@ make build
161161
make clean
162162
```
163163

164+
165+
### macOS support
166+
167+
We no longer build or support Intel (x86_64) macOS binaries. Apple stopped adding support for Intel macs and our CI and releases build ARM64 mac wheels only.
168+
169+
To build mac wheel locally for Apple Silicon (arm64):
170+
171+
```bash
172+
ARCHFLAGS="-arch arm64" python setup.py bdist_wheel
173+
```
164174
## Development Patterns
165175

166176
### Adding a New Operator

dev/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ This directory contains scripts and tools used for Opteryx development, building
1616
./build-wheels.sh
1717
```
1818

19+
Note: macOS releases are arm64-only; Intel/x86_64 macOS wheels are not built by CI or released.
20+
1921
### Updating Build Counter
2022
```bash
2123
python build_counter.py

dev/build-wheels.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
set -ex
33

44
# Install OpenSSL development headers inside the container
5+
# Note: zstd/snappy are vendored into the project; we should not install
6+
# zstd-devel/snappy-devel via yum inside the manylinux container (they may
7+
# not be available on the base image and we compile vendor sources directly).
58
yum install -y openssl-devel
69

710
# Install Rust (required for building some Python packages with Rust extensions)

opteryx/__version__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
# THIS FILE IS AUTOMATICALLY UPDATED DURING THE BUILD PROCESS
22
# DO NOT EDIT THIS FILE DIRECTLY
33

4-
__build__ = 1926
4+
__build__ = 1954
55
__author__ = "@joocer"
6-
__version__ = "0.26.2-beta.1926"
6+
__version__ = "0.26.2-beta.1954"
77

88
# Store the version here so:
99
# 1) we don't load dependencies by storing it in __init__.py

0 commit comments

Comments
 (0)