Skip to content

Commit 2a8d588

Browse files
committed
Merge branch 'main' into spatial_start
2 parents 4ef822e + 0868fb0 commit 2a8d588

54 files changed

Lines changed: 6867 additions & 1926 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/build.yaml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,6 @@ jobs:
3232
- name: Install LLVM
3333
run: sudo apt-get install -y llvm
3434

35-
- name: Install ODBC
36-
run: sudo apt-get install -y unixodbc-dev
37-
3835
- name: Install Rust
3936
uses: dtolnay/rust-toolchain@stable
4037

.github/workflows/release-jupyter.yml

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -55,21 +55,10 @@ jobs:
5555
uses: PyO3/maturin-action@v1
5656
with:
5757
target: ${{ matrix.target }}
58-
args: --release --out dist --auditwheel=repair
58+
args: --release --out dist --auditwheel=skip
5959
working-directory: ggsql-jupyter
6060
manylinux: 2_28
6161
docker-options: -e GGSQL_SKIP_GENERATE=1
62-
before-script-linux: |
63-
if command -v yum >/dev/null 2>&1; then
64-
yum install -y unixODBC-devel
65-
elif command -v apt-get >/dev/null 2>&1; then
66-
apt-get update && apt-get install -y unixodbc-dev
67-
fi
68-
69-
- name: Fix wheel library load paths
70-
uses: ./.github/workflows/actions/fix-wheel-libs
71-
with:
72-
dist-dir: ggsql-jupyter/dist
7362

7463
- uses: actions/upload-artifact@v4
7564
with:
@@ -96,21 +85,13 @@ jobs:
9685
name: tree-sitter-generated
9786
path: tree-sitter-ggsql/src/
9887

99-
- name: Install ODBC
100-
run: brew install unixodbc
101-
10288
- name: Build wheels
10389
uses: PyO3/maturin-action@v1
10490
with:
10591
target: ${{ matrix.target }}
106-
args: --release --out dist --auditwheel=repair
92+
args: --release --out dist --auditwheel=skip
10793
working-directory: ggsql-jupyter
10894

109-
- name: Fix wheel library load paths
110-
uses: ./.github/workflows/actions/fix-wheel-libs
111-
with:
112-
dist-dir: ggsql-jupyter/dist
113-
11495
- uses: actions/upload-artifact@v4
11596
with:
11697
name: jupyter-wheels-macos-${{ matrix.target }}

.github/workflows/release-packages.yml

Lines changed: 8 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -102,12 +102,6 @@ jobs:
102102
- name: Install tree-sitter-cli
103103
run: npm install -g tree-sitter-cli
104104

105-
- name: Install ODBC
106-
run: brew install unixodbc
107-
108-
- name: Install dylibbundler
109-
run: brew install dylibbundler
110-
111105
- name: Install Rust toolchain
112106
uses: dtolnay/rust-toolchain@stable
113107
with:
@@ -148,19 +142,10 @@ jobs:
148142
- name: Build ggsql binary (x86_64)
149143
run: cargo build --release --bin ggsql --bin ggsql-jupyter
150144

151-
- name: Bundle dynamic library dependencies
152-
run: |
153-
dylibbundler -cd -of -b -x target/release/ggsql -d ./libs/ -p "@executable_path/../lib/ggsql$VERSION/"
154-
dylibbundler -cd -of -b -x target/release/ggsql-jupyter -d ./libs/ -p "@executable_path/../lib/ggsql$VERSION/"
155-
156-
- name: Sign binaries and dylibs (Developer ID Application)
145+
- name: Sign binaries (Developer ID Application)
157146
env:
158147
SIGN_ID: "Developer ID Application: ${{ secrets.GWS_APPLE_SIGN_IDENTITY }}"
159148
run: |
160-
# Sign bundled dylibs first (inside-out), replacing dylibbundler's ad-hoc sigs
161-
find ./libs -type f \( -name "*.dylib" -o -name "*.so" \) -print0 | \
162-
xargs -0 -I{} codesign --force --options runtime --timestamp --sign "$SIGN_ID" "{}"
163-
# Then sign the executables with hardened runtime + entitlements
164149
codesign --force --options runtime --timestamp \
165150
--entitlements entitlements.plist \
166151
--sign "$SIGN_ID" target/release/ggsql
@@ -177,14 +162,13 @@ jobs:
177162
APPLE_API_ISSUER: ${{ secrets.GWS_APPLE_API_ISSUER }}
178163
run: |
179164
PKG_NAME="ggsql_${VERSION}_x86_64.pkg"
180-
mkdir -p pkg-payload/usr/local/bin "pkg-payload/usr/local/lib/ggsql$VERSION"
165+
mkdir -p pkg-payload/usr/local/bin
181166
cp target/release/ggsql pkg-payload/usr/local/bin/
182167
cp target/release/ggsql-jupyter pkg-payload/usr/local/bin/
183-
cp -R ./libs/. "pkg-payload/usr/local/lib/ggsql$VERSION/"
184168
mkdir -p pkg-scripts
185169
cat > pkg-scripts/postinstall <<EOF
186170
#!/bin/sh
187-
mkdir -p /usr/local/bin /usr/local/lib/ggsql$VERSION
171+
mkdir -p /usr/local/bin
188172
EOF
189173
chmod 755 pkg-scripts/postinstall
190174
pkgbuild \
@@ -225,12 +209,6 @@ jobs:
225209
- name: Install tree-sitter-cli
226210
run: npm install -g tree-sitter-cli
227211

228-
- name: Install ODBC
229-
run: brew install unixodbc
230-
231-
- name: Install dylibbundler
232-
run: brew install dylibbundler
233-
234212
- name: Install Rust toolchain
235213
uses: dtolnay/rust-toolchain@stable
236214
with:
@@ -271,19 +249,10 @@ jobs:
271249
- name: Build ggsql binary (aarch64)
272250
run: cargo build --release --bin ggsql --bin ggsql-jupyter
273251

274-
- name: Bundle dynamic library dependencies
275-
run: |
276-
dylibbundler -cd -of -b -x target/release/ggsql -d ./libs/ -p "@executable_path/../lib/ggsql$VERSION/"
277-
dylibbundler -cd -of -b -x target/release/ggsql-jupyter -d ./libs/ -p "@executable_path/../lib/ggsql$VERSION/"
278-
279-
- name: Sign binaries and dylibs (Developer ID Application)
252+
- name: Sign binaries (Developer ID Application)
280253
env:
281254
SIGN_ID: "Developer ID Application: ${{ secrets.GWS_APPLE_SIGN_IDENTITY }}"
282255
run: |
283-
# Sign bundled dylibs first (inside-out), replacing dylibbundler's ad-hoc sigs
284-
find ./libs -type f \( -name "*.dylib" -o -name "*.so" \) -print0 | \
285-
xargs -0 -I{} codesign --force --options runtime --timestamp --sign "$SIGN_ID" "{}"
286-
# Then sign the executables with hardened runtime + entitlements
287256
codesign --force --options runtime --timestamp \
288257
--entitlements entitlements.plist \
289258
--sign "$SIGN_ID" target/release/ggsql
@@ -300,14 +269,13 @@ jobs:
300269
APPLE_API_ISSUER: ${{ secrets.GWS_APPLE_API_ISSUER }}
301270
run: |
302271
PKG_NAME="ggsql_${VERSION}_aarch64.pkg"
303-
mkdir -p pkg-payload/usr/local/bin "pkg-payload/usr/local/lib/ggsql$VERSION"
272+
mkdir -p pkg-payload/usr/local/bin
304273
cp target/release/ggsql pkg-payload/usr/local/bin/
305274
cp target/release/ggsql-jupyter pkg-payload/usr/local/bin/
306-
cp -R ./libs/. "pkg-payload/usr/local/lib/ggsql$VERSION/"
307275
mkdir -p pkg-scripts
308276
cat > pkg-scripts/postinstall <<EOF
309277
#!/bin/sh
310-
mkdir -p /usr/local/bin /usr/local/lib/ggsql$VERSION
278+
mkdir -p /usr/local/bin
311279
EOF
312280
chmod 755 pkg-scripts/postinstall
313281
pkgbuild \
@@ -361,8 +329,7 @@ jobs:
361329
libwebkit2gtk-4.1-dev \
362330
libappindicator3-dev \
363331
librsvg2-dev \
364-
patchelf \
365-
unixodbc-dev
332+
patchelf
366333
367334
- name: Install cargo-packager
368335
run: cargo install cargo-packager --locked
@@ -409,18 +376,14 @@ jobs:
409376
libwebkit2gtk-4.1-dev \
410377
libappindicator3-dev \
411378
librsvg2-dev \
412-
patchelf \
413-
unixodbc-dev
379+
patchelf
414380
415381
- name: Install cargo-packager
416382
run: cargo install cargo-packager --locked
417383

418384
- name: Build ggsql binary (aarch64)
419385
run: cargo build --release --bin ggsql --bin ggsql-jupyter
420386

421-
- name: Make empty libs dir for bundling
422-
run: mkdir -p libs
423-
424387
- name: Build Debian package (aarch64)
425388
run: cargo packager --release --formats deb
426389

@@ -451,9 +414,6 @@ jobs:
451414
- name: Install tree-sitter-cli
452415
run: npm install -g tree-sitter-cli
453416

454-
- name: Install ODBC
455-
run: sudo apt-get install -y unixodbc-dev
456-
457417
- name: Install Rust toolchain
458418
uses: dtolnay/rust-toolchain@stable
459419

CHANGELOG.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,25 @@
11
## [Unreleased]
22

3+
### Added
4+
5+
- Added panel decorations (grid lines, axes, background) for polar coordinates (#156).
6+
- Added `radar` setting to polar coordinates for making radar plots (#418).
7+
8+
## 0.3.2 - 2026-05-05
9+
310
### Fixed
411

512
- Side effects like `CREATE TEMP TABLE` before the `VISUALISE` statement are now
613
separated from directly feeding into the visualisation data (#415)
714
- Fixed bug where panel axes were unintentionally anchored to zero when using
815
`FACET ... SETTING free => 'x'/'y'` (#410).
16+
- Fixed bug where faceted data were matched to the incorrect panels (#409)
17+
18+
### Changed
19+
20+
- Restructured how ggsql integrates with ODBC drivers to use the system ODBC,
21+
rather than bundling unixodbc as part of binary releases. This fixes several
22+
issues on Linux and macOS caused by relative paths to dynamic libraries.
923

1024
## 0.3.1 - 2026-04-30
1125

Cargo.lock

Lines changed: 16 additions & 31 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ default-members = [
1515
resolver = "2"
1616

1717
[workspace.package]
18-
version = "0.3.1"
18+
version = "0.3.2"
1919
edition = "2021"
2020
authors = ["ggsql Team"]
2121
license = "MIT"
@@ -25,8 +25,8 @@ description = "A declarative visualization language that extends SQL with powerf
2525

2626
[workspace.dependencies]
2727
# workspace packages
28-
tree-sitter-ggsql = { path = "tree-sitter-ggsql", version = "0.3.1" }
29-
ggsql = { path = "src", version = "0.3.1" }
28+
tree-sitter-ggsql = { path = "tree-sitter-ggsql", version = "0.3.2" }
29+
ggsql = { path = "src", version = "0.3.2" }
3030

3131
# Parsing
3232
csscolorparser = "0.8.1"
@@ -42,8 +42,8 @@ bytes = "1"
4242
rusqlite = { version = "0.38", features = ["bundled", "chrono"] }
4343

4444
# ODBC
45-
odbc-api = { version = "13", default-features = false, features = ["odbc_version_3_80"] }
4645
toml_edit = "0.22"
46+
libloading = "0.8"
4747

4848
# Serialization
4949
serde = { version = "1.0", features = ["derive"] }

doc/get_started/the_rest.qmd

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,11 +84,12 @@ DRAW bar
8484

8585
See how we didn't have to specify the polar coordinate system in the last example because we have a mapping to radius, allowing ggsql to deduce the coordinate system automatically.
8686

87-
If we instead map the species to angle we end up with a rose plot
87+
If we instead map the species to angle we end up with a rose plot. We turn off the automatic conversion to radar plots for discrete angle categories here.
8888

8989
```{ggsql}
9090
VISUALISE species AS angle, species AS fill FROM ggsql:penguins
9191
DRAW bar
92+
PROJECT TO polar SETTING radar => false
9293
```
9394

9495
Moving back to the regular pie chart, we might be interested in comparing how the species distribution varies by sex. We can do this with faceting:

0 commit comments

Comments
 (0)