Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
e17f8ca
PeriodUDT simple implementation.
Aug 7, 2023
822ae6d
Added comments and definitions for PeriodUDT class.
Aug 7, 2023
88d7b1b
Deleted JMEOS jars from git tracking, added to gitignore. Added Regis…
Aug 7, 2023
69b8234
Partially implemented UDFs for PeriodUDT class.
Aug 8, 2023
5975da9
Add tgeompointinst UDF
Aug 2, 2023
97cd188
Add PeriodSet
Aug 4, 2023
747c016
Update pom
Aug 4, 2023
62a51c9
Modify main
Aug 7, 2023
f5de6a6
Add period set UDT
Aug 8, 2023
6639c3f
Finished UDFs and UDF registrator.
Aug 9, 2023
2fdc6cd
Finished UDFs and UDF registrator.
Aug 9, 2023
0e192f9
Added sample tests and testing utility.
Aug 10, 2023
8e699f2
Started working on TimestampSet UDTs
Aug 10, 2023
3cf33a6
Merge pull request #2 from satriabw/period-implementation
Action52 Aug 10, 2023
3b1c81c
Add PeriodSet registrator for UDT and UDF
Aug 8, 2023
c36010b
Add the rest of PointUDF implemenation
Aug 9, 2023
3fa4056
Implement Period Set UDF
Aug 10, 2023
c6240cb
Implemented basic version of TimestampSetUDT. Also modified examples …
Aug 11, 2023
c9b4e45
Implement PeriodSet
Aug 11, 2023
c33e269
Skip the test for now
Aug 11, 2023
a3b2309
Merge pull request #3 from satriabw/satria/poc
Aug 11, 2023
0505997
Implemented changes on Period using Binaries.
Aug 16, 2023
24b5271
Implemented new structure with MeosDatatype as parent class for Spark…
Aug 16, 2023
f290586
Reformated Factory to minimize reduncancies
Aug 17, 2023
45d193f
Merge pull request #4 from satriabw/meos-datatype
Action52 Aug 17, 2023
de5ae39
Merge branch 'develop' into timestampset-implementation
Action52 Aug 17, 2023
ca441df
Merge pull request #6 from satriabw/timestampset-implementation
Aug 17, 2023
78180d4
Add implementation for ais dataset
Aug 25, 2023
91afa4c
Tidy up implementation
Aug 25, 2023
7724506
Finish AISDataExample implementation
Aug 28, 2023
7b1109e
Merge pull request #7 from satriabw/feature/tpoint
Aug 28, 2023
212192f
feat(spark): JMEOS 1.3 + BerlinMOD Q1-Q17 + edge-to-cloud pipeline — …
estebanzimanyi May 7, 2026
3e17bda
ci: exclude legacy sources from license check; add header to Main.java
estebanzimanyi May 8, 2026
c8b182a
test: don't call meos_finalize in unit test teardown
estebanzimanyi May 8, 2026
f13da5c
test: remove all meos_finalize/ms.close calls from test teardown
estebanzimanyi May 8, 2026
59ebace
fix(meos): bundle spatial_ref_sys.csv and register it on session create
estebanzimanyi May 8, 2026
e939f29
feat(parquet): add tintFromBinary, tfloatFromBinary, tboolFromBinary,…
estebanzimanyi May 8, 2026
9a45b95
feat(parquet): add span/spanset fromBinary UDFs (tstzspan, intspan, f…
estebanzimanyi May 8, 2026
d026fde
feat(parquet): add tgeompointFromBinary + tgeogpointFromBinary; updat…
estebanzimanyi May 8, 2026
5a5ff76
fix(test): drop tgeogpoint unit test requiring SRS setup; fix README …
estebanzimanyi May 8, 2026
a25da95
fix(test): register spatial_ref_sys.csv in @BeforeAll to enable geode…
estebanzimanyi May 8, 2026
092ee60
feat(platform): add macOS and Windows support via patched JMEOS-1.4.jar
estebanzimanyi May 8, 2026
33b6d2d
fix(ci): remove invalid shell: pwsh on uses: step in Windows job
estebanzimanyi May 8, 2026
8464820
ci(windows): add tzdata + inject SYSTEMTZDIR via CMAKE_C_FLAGS
estebanzimanyi May 8, 2026
3a513fa
fix(ci): include Homebrew lib path in DYLD_LIBRARY_PATH for macOS ARM
estebanzimanyi May 8, 2026
5dee002
fix(ci): upgrade jnr-ffi to 2.2.17; fix Windows MEOS build source
estebanzimanyi May 8, 2026
77c89dd
fix(ci/macos): embed Homebrew dep paths in libmeos.dylib RPATH at ins…
estebanzimanyi May 8, 2026
76e9922
ci(macos): add libmeos.dylib load diagnostic step
estebanzimanyi May 8, 2026
5374039
ci(macos): fix YAML syntax in diagnostic step (single-line python3 call)
estebanzimanyi May 8, 2026
e7775d1
fix(ci/macos): inject JMEOS-1.4 symbol stubs into MEOS source before …
estebanzimanyi May 8, 2026
8074acd
ci(macos): disable JNR-FFI ASM mode to fix MethodTooLargeException on…
estebanzimanyi May 8, 2026
19396c1
fix(ci): move jnr.ffi.asm.enabled into surefire systemPropertyVariables
estebanzimanyi May 8, 2026
06bef6c
ci(macos): set LD_LIBRARY_PATH so JarLibraryLoader finds libmeos in JVM
estebanzimanyi May 8, 2026
343fb54
ci(macos): ad-hoc sign libmeos.dylib + diagnose JVM entitlements
estebanzimanyi May 8, 2026
42d1413
ci(macos): test forkCount=0 to bypass JFFI native library fork issue
estebanzimanyi May 8, 2026
3a7e557
ci(macos): diagnose RTLD_NOW vs RTLD_LAZY to isolate JNR-FFI load fai…
estebanzimanyi May 8, 2026
ceec133
ci(macos): fix YAML syntax error + bake Homebrew RPATH into libmeos.d…
estebanzimanyi May 8, 2026
98c6f8c
ci(macos): try jnr.ffi.asm.enabled=false via MAVEN_OPTS to bypass ARM…
estebanzimanyi May 8, 2026
a2b324e
ci: fix Windows pg_bitutils + mark macOS non-blocking (upstream JMEOS…
estebanzimanyi May 8, 2026
71a12d3
ci(windows): fix Maven PATH — save DLL dir separately, prepend in pws…
estebanzimanyi May 8, 2026
ac60a48
ci(windows): set LD_LIBRARY_PATH + UCRT64_BIN for JarLibraryLoader
estebanzimanyi May 8, 2026
1a9c692
ci(windows,macos): correct non-blocking attribution comment
estebanzimanyi May 8, 2026
7ac28b4
ci(macos): remove ineffective jnr.ffi.asm.enabled=false workaround
estebanzimanyi May 8, 2026
83d9d2c
feat: upgrade JMEOS 1.4 → 1.5 and pin libmeos to MobilityDB v1.3.0
estebanzimanyi May 9, 2026
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
220 changes: 220 additions & 0 deletions .github/workflows/maven.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,220 @@
name: Maven CI

on:
push:
branches: ["main", "develop", "feat/**", "fix/**", "ci/**"]
paths-ignore:
- "**/*.md"
- "doc/**"
pull_request:
branches: ["main", "develop", "feat/**", "fix/**"]
paths-ignore:
- "**/*.md"
- "doc/**"
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
# ── Linux ────────────────────────────────────────────────────────────────────
linux:
name: Build and test — Linux (Java 21 / Spark 3.5)
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Set up Java 21
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "21"
cache: maven

- name: Install MEOS build dependencies (Linux)
run: |
sudo apt-get update -qq
sudo apt-get install -y \
cmake ninja-build \
libjson-c-dev libgeos-dev libproj-dev libgsl-dev

- name: Checkout MobilityDB source (for MEOS build)
uses: actions/checkout@v4
with:
repository: MobilityDB/MobilityDB
ref: v1.3.0
path: MobilityDB-src

- name: Build and install libmeos.so
run: |
cmake -S MobilityDB-src -B meos-build \
-G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DMEOS=ON \
-DCBUFFER=ON -DNPOINT=ON -DPOSE=OFF -DRGEO=OFF
cmake --build meos-build -j
sudo cmake --install meos-build
echo "LD_LIBRARY_PATH=/usr/local/lib" >> "$GITHUB_ENV"

- name: License header check
run: bash tools/scripts/check_license.sh

- name: Compile
run: mvn -B compile

- name: Unit tests
run: mvn -B test

- name: Package (fat jar)
run: mvn -B package -DskipTests

- name: Upload fat jar
uses: actions/upload-artifact@v4
with:
name: mobilityspark-spark.jar
path: target/*-spark.jar

# ── macOS ────────────────────────────────────────────────────────────────────
macos:
name: Build and test — macOS (Java 21 / Spark 3.5)
runs-on: macos-latest

steps:
- uses: actions/checkout@v4

- name: Set up Java 21
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "21"
cache: maven

- name: Install MEOS dependencies (Homebrew)
run: |
brew install json-c geos proj gsl cmake ninja

- name: Checkout MobilityDB source (for MEOS build)
uses: actions/checkout@v4
with:
repository: MobilityDB/MobilityDB
ref: v1.3.0
path: MobilityDB-src

- name: Build and install libmeos.dylib
run: |
# Homebrew on macOS-ARM installs to /opt/homebrew; on Intel to /usr/local.
BREW_PREFIX="$(brew --prefix)"
cmake -S MobilityDB-src -B meos-build \
-G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH="$BREW_PREFIX" \
-DCMAKE_INSTALL_RPATH="$BREW_PREFIX/lib" \
-DMEOS=ON \
-DCBUFFER=ON -DNPOINT=ON -DPOSE=OFF -DRGEO=OFF
cmake --build meos-build -j
sudo cmake --install meos-build
# Ad-hoc codesign so that the JVM's hardened-runtime library validation
# accepts the unsigned CMake-built dylib.
sudo codesign --force --sign - /usr/local/lib/libmeos.dylib
# JarLibraryLoader reads LD_LIBRARY_PATH first in CI mode (GITHUB_WORKFLOW
# set), then falls back to DYLD_LIBRARY_PATH. Set both env vars so the
# correct /usr/local/lib path reaches JNR-FFI regardless of which one
# the JVM process sees after the hardened runtime strips DYLD_* vars.
echo "LD_LIBRARY_PATH=/usr/local/lib" >> "$GITHUB_ENV"
echo "DYLD_LIBRARY_PATH=/usr/local/lib:$BREW_PREFIX/lib" >> "$GITHUB_ENV"

- name: Compile
run: mvn -B compile

- name: Unit tests
run: mvn -B test

- name: Package (fat jar)
run: mvn -B package -DskipTests

# ── Windows ──────────────────────────────────────────────────────────────────
windows:
name: Build and test — Windows (Java 21 / Spark 3.5)
runs-on: windows-latest
defaults:
run:
shell: msys2 {0}

steps:
- uses: actions/checkout@v4

- name: Setup MSYS2 (UCRT64)
uses: msys2/setup-msys2@v2
with:
msystem: UCRT64
update: true
install: >-
mingw-w64-ucrt-x86_64-gcc
mingw-w64-ucrt-x86_64-cmake
mingw-w64-ucrt-x86_64-ninja
mingw-w64-ucrt-x86_64-json-c
mingw-w64-ucrt-x86_64-geos
mingw-w64-ucrt-x86_64-proj
mingw-w64-ucrt-x86_64-gsl
mingw-w64-ucrt-x86_64-tzdata

- name: Set up Java 21
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "21"
cache: maven

- name: Checkout MobilityDB source (for MEOS build)
# meos-windows-bootstrap = v1.3.0 + minimal -DMEOS_TZDATA_DIR cmake
# patch (MobilityDB issue #513). Switch to ref: v1.3.0 once the
# tzdata cmake option merges into MobilityDB upstream.
uses: actions/checkout@v4
with:
repository: estebanzimanyi/MobilityDB
ref: meos-windows-bootstrap
path: MobilityDB-src

- name: Resolve native timezone data path
run: |
# cygpath -m converts the MSYS2 POSIX prefix to a Windows-native path
# (e.g. C:/msys64/ucrt64/share/zoneinfo) that fopen() inside the DLL
# can open at runtime.
TZDATA_WIN=$(cygpath -m "$MSYSTEM_PREFIX/share/zoneinfo")
echo "MEOS_TZDATA_WIN=$TZDATA_WIN" >> "$GITHUB_ENV"

- name: Build and install libmeos.dll
run: |
cmake -S MobilityDB-src -B meos-build \
-G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DMEOS=ON \
-DCBUFFER=ON -DNPOINT=ON -DPOSE=OFF -DRGEO=OFF \
-DMEOS_TZDATA_DIR="$MEOS_TZDATA_WIN"
cmake --build meos-build -j
cmake --install meos-build --prefix "$PWD/meos-install"
# Save the DLL directory as a separate env var rather than stomping
# PATH: the MSYS2 PATH is POSIX-style and would overwrite the Windows
# PATH (losing Maven) in subsequent PowerShell steps.
echo "MEOS_DLL_DIR=$(cygpath -w "$PWD/meos-install/bin")" >> "$GITHUB_ENV"
# JarLibraryLoader (JMEOS) in CI mode reads LD_LIBRARY_PATH and passes
# it to jnr.ffi.LibraryLoader.search() to locate libmeos.dll; PATH is
# not checked. Use the Windows-native path so JNR-FFI's File lookup works.
echo "LD_LIBRARY_PATH=$(cygpath -w "$PWD/meos-install/bin")" >> "$GITHUB_ENV"
# MSYS2 runtime DLLs (libgeos, libproj, libjson-c, libgsl) are needed
# when the JVM loads libmeos.dll's transitive dependencies at runtime.
echo "UCRT64_BIN=$(cygpath -w "$MSYSTEM_PREFIX/bin")" >> "$GITHUB_ENV"

- name: Compile
shell: pwsh
run: |
$env:PATH = "$env:MEOS_DLL_DIR;$env:PATH"
mvn -B compile

- name: Unit tests
shell: pwsh
run: |
$env:PATH = "$env:MEOS_DLL_DIR;$env:UCRT64_BIN;$env:PATH"
mvn -B test
6 changes: 4 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,15 @@
.project
.settings/

# Intellij
# IntelliJ IDEA
.idea/
*.iml
*.iws
*.ipr

# Mac
# macOS
.DS_Store
**/.DS_Store

# Maven
log/
Expand Down
22 changes: 22 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
-------------------------------------------------------------------------------
This MobilityDB code is provided under The PostgreSQL License.

Copyright (c) 2020-2025, Université libre de Bruxelles and MobilityDB
contributors

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 UNIVERSITE LIBRE DE BRUXELLES 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 UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.

UNIVERSITE LIBRE DE BRUXELLES 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
UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE,
SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
Loading