Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
174 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
e07dc3f
feat(spark): BerlinMOD Q1-Q17 + UDFs + benchmark + JVM crash fixes
estebanzimanyi May 9, 2026
c2b93c4
fix(bench): use local[2], ulimit -c 0, and pin java.library.path
estebanzimanyi May 9, 2026
522cf6c
fix(build): pin java.library.path to /usr/local/lib in surefire; upda…
estebanzimanyi May 9, 2026
473404f
refactor(jmeos): rename JMEOS-1.5 → JMEOS-1.4 to match MEOS API versi…
estebanzimanyi May 9, 2026
2892eb0
fix(bench): flush results to JSON after each query; use atomic write
estebanzimanyi May 9, 2026
1b853e6
feat(bench): add --quick flag (--runs 1) for crash-safety verification
estebanzimanyi May 9, 2026
cbf79ff
feat(bench): add --queries range selector for targeted crash bisection
estebanzimanyi May 9, 2026
77dbe5e
fix(memory): free MEOS native objects in all UDFs to prevent OOM crash
estebanzimanyi May 9, 2026
8420c09
test(memory): add NativeMemoryLeakTest — VmRSS-based native leak dete…
estebanzimanyi May 9, 2026
1a47ed9
fix(bench): use tdwithin_tgeo_tgeo in tDwithin UDF (q10 fix)
estebanzimanyi May 9, 2026
c7d55e4
fix(berlinmod): ORDER BY alias in q12 + richer error output in bench
estebanzimanyi May 9, 2026
85f915d
feat(udfs): add 5 UDF groups for full operator parity — 166 tests green
estebanzimanyi May 10, 2026
bf5e2ef
feat(udfs): add 4 UDF groups + 13 UDAFs — 235 tests green
estebanzimanyi May 10, 2026
c8fbf45
fix(build): prioritise bundled lib/libmeos.so in surefire java.librar…
estebanzimanyi May 10, 2026
2813f47
feat(udfs): add DistanceUDFs, extend RestrictionUDFs and TransformUDF…
estebanzimanyi May 10, 2026
f3539da
feat(udfs): add transcendental math, trend, tboolWhenTrue, tpointIsSi…
estebanzimanyi May 10, 2026
7c75afe
feat(udfs): add span/spanset/stbox/elevation restriction UDFs — 265 t…
estebanzimanyi May 10, 2026
8522627
feat(udfs): add tintAtValue, tnumber span/spanset restriction, tgeoMi…
estebanzimanyi May 10, 2026
d5a8f37
feat(udfs): add cumulative length, traversed area, shift/scale time —…
estebanzimanyi May 10, 2026
673f308
feat(geo): add StaticGeoUDFs — 17 static geometry predicates/metrics/…
estebanzimanyi May 10, 2026
ba2d220
feat(temporal): add 10 UDFs — temporal comparisons, tintToTfloat, tpr…
estebanzimanyi May 10, 2026
2bdbbbe
feat(geo): add 6 STBox analytics UDFs — area, perimeter, volume, isGe…
estebanzimanyi May 10, 2026
34eee6d
feat(temporal): add TBoxUDFs — 13 TBox accessor/span-conversion UDFs …
estebanzimanyi May 10, 2026
99fc4cb
feat(geo): add ever/always scalar predicates + tgeo×tgeo temporal rels
estebanzimanyi May 10, 2026
14abc58
feat(temporal): MFJSON I/O, text output, and tint shift/scale UDFs
estebanzimanyi May 10, 2026
ee057e5
feat(temporal): ever_ne/always_ne predicates + value_at_timestamptz a…
estebanzimanyi May 10, 2026
ab97c14
feat(temporal): tintValueN, tintMinusValue, temporalDeleteTimestamptz…
estebanzimanyi May 10, 2026
45c6aa5
feat(temporal): parity batch — 85 new UDFs, 642 tests green
estebanzimanyi May 10, 2026
b4d078a
feat(udfs): set value accessors, ttext_values, geo I/O UDFs (701 tests)
estebanzimanyi May 10, 2026
17273c0
feat(udfs): tstzspanset extra accessors + tpointFromBaseTemp construc…
estebanzimanyi May 10, 2026
04ce7e6
feat(udfs): parity batch — Transform/Restriction/Similarity/SpanAlgeb…
estebanzimanyi May 10, 2026
cf8fe3d
fix(safety): replace local[*] with local[2] in all configs and docs
estebanzimanyi May 10, 2026
99f53bc
chore(libs): remove stale JMEOS jars — only JMEOS-1.4.jar is active
estebanzimanyi May 10, 2026
0a40f6d
feat(geo): add tpoint I/O, SRID, round, bounding-box, and convex-hull…
estebanzimanyi May 10, 2026
52cdf31
fix(demo): update BerlinMOD UDFs for MEOS 1.4 renamed symbols
estebanzimanyi May 10, 2026
c8bb81c
feat(bench): resumable BerlinMOD benchmark + --queries selector
estebanzimanyi May 10, 2026
aaaa05e
feat(parity): MobilityDB SQL surface parity at 100% (858/858)
estebanzimanyi May 10, 2026
6c3f02c
feat(jmeos): migrate to regenerated JMEOS-1.4 jar; trim MeosNative to…
estebanzimanyi May 10, 2026
d4c08a3
feat(jmeos): delete MeosNative.java; full surface now via JMEOS 1.4
estebanzimanyi May 11, 2026
4979e92
doc: add PR Reviewer Guide + visibility wiring (PR template + README …
estebanzimanyi May 10, 2026
eb58420
fix(meos-init): reflective fallback for meos_initialize_noexit_error_…
estebanzimanyi May 11, 2026
06765e2
fix: bump JMEOS-1.4.jar to regen against MEOS noexit + inline cleanup
estebanzimanyi May 11, 2026
da3f257
test: tnumberTrend on tint-step is documented to return null
estebanzimanyi May 11, 2026
434dac9
cleanup: drop reflective noexit fallback now that MEOS PR #939 lands …
estebanzimanyi May 11, 2026
205f834
doc: drop stale 'wired via MeosNative' comment from TBoxOpsUDFsTest
estebanzimanyi May 11, 2026
72ca7ae
fix(spark): initialise GEOS thread-local context in MeosThread.MEOS_R…
estebanzimanyi May 11, 2026
81d26ec
bench(mspark): default to local[4] with SPARK_MASTER override
estebanzimanyi May 12, 2026
18991b4
spark: MEOS_READY relies on meos_initialize for per-thread GEOS
estebanzimanyi May 12, 2026
73887f1
spark: keep tgeo×tgeo nearestApproachDistance under the bare name
estebanzimanyi May 12, 2026
7283d19
Add th3index h3 prefilter UDFs via direct JNR-FFI bindings
estebanzimanyi May 12, 2026
ffcd8c7
bench(mspark): preload libh3 so the h3 prefilter UDFs resolve at load
estebanzimanyi May 12, 2026
62d2c28
feat(udfs): add 4 UDF groups + 13 UDAFs — 235 tests green
estebanzimanyi May 10, 2026
c449e17
fix(build): prioritise bundled lib/libmeos.so in surefire java.librar…
estebanzimanyi May 10, 2026
18d380b
feat(udfs): add DistanceUDFs, extend RestrictionUDFs and TransformUDF…
estebanzimanyi May 10, 2026
5e3c5c0
feat(udfs): add transcendental math, trend, tboolWhenTrue, tpointIsSi…
estebanzimanyi May 10, 2026
d6409ff
feat(udfs): add span/spanset/stbox/elevation restriction UDFs — 265 t…
estebanzimanyi May 10, 2026
176c03d
feat(udfs): add tintAtValue, tnumber span/spanset restriction, tgeoMi…
estebanzimanyi May 10, 2026
0a11203
feat(udfs): add cumulative length, traversed area, shift/scale time —…
estebanzimanyi May 10, 2026
2536c74
feat(geo): add StaticGeoUDFs — 17 static geometry predicates/metrics/…
estebanzimanyi May 10, 2026
c8bbb7e
feat(temporal): add 10 UDFs — temporal comparisons, tintToTfloat, tpr…
estebanzimanyi May 10, 2026
5569168
feat(geo): add 6 STBox analytics UDFs — area, perimeter, volume, isGe…
estebanzimanyi May 10, 2026
17528f8
feat(temporal): add TBoxUDFs — 13 TBox accessor/span-conversion UDFs …
estebanzimanyi May 10, 2026
382eaf4
feat(geo): add ever/always scalar predicates + tgeo×tgeo temporal rels
estebanzimanyi May 10, 2026
548755c
feat(temporal): MFJSON I/O, text output, and tint shift/scale UDFs
estebanzimanyi May 10, 2026
1e4b7a9
feat(temporal): ever_ne/always_ne predicates + value_at_timestamptz a…
estebanzimanyi May 10, 2026
c887dc4
feat(temporal): tintValueN, tintMinusValue, temporalDeleteTimestamptz…
estebanzimanyi May 10, 2026
45e91a1
feat(temporal): parity batch — 85 new UDFs, 642 tests green
estebanzimanyi May 10, 2026
2f9ccea
feat(udfs): set value accessors, ttext_values, geo I/O UDFs (701 tests)
estebanzimanyi May 10, 2026
6af23fe
feat(udfs): tstzspanset extra accessors + tpointFromBaseTemp construc…
estebanzimanyi May 10, 2026
bbdbd58
feat(udfs): parity batch — Transform/Restriction/Similarity/SpanAlgeb…
estebanzimanyi May 10, 2026
3c93c3a
fix(safety): replace local[*] with local[2] in all configs and docs
estebanzimanyi May 10, 2026
5965800
chore(libs): remove stale JMEOS jars — only JMEOS-1.4.jar is active
estebanzimanyi May 10, 2026
e77ecf1
feat(geo): add tpoint I/O, SRID, round, bounding-box, and convex-hull…
estebanzimanyi May 10, 2026
18d6b66
fix(demo): update BerlinMOD UDFs for MEOS 1.4 renamed symbols
estebanzimanyi May 10, 2026
841dc22
feat(bench): resumable BerlinMOD benchmark + --queries selector
estebanzimanyi May 10, 2026
8fda0fd
feat(parity): MobilityDB SQL surface parity at 100% (858/858)
estebanzimanyi May 10, 2026
038501e
feat(perf): th3index spatial prefilter for cross-join queries (Stage 2)
estebanzimanyi May 10, 2026
a986758
feat(perf): extend th3index prefilter to trip×trip cross-joins (Q5/Q6…
estebanzimanyi May 10, 2026
b133a57
feat(perf): cross-platform th3index prefilter — portable SQL + PG GiS…
estebanzimanyi May 10, 2026
e9871d6
feat(perf): include trip_h3 in setup/generate_data.sh trips.csv override
estebanzimanyi May 10, 2026
c12e257
feat(h3): 100% public-API parity in Th3IndexUDFs (86 UDFs)
estebanzimanyi May 10, 2026
6b238bc
feat(perf): polygon-side prefilter — adopt MobilityDB #938's static-g…
estebanzimanyi May 11, 2026
8b5c612
Add minDistance UDFs and adopt spatial-min Q5 form
estebanzimanyi May 14, 2026
e7101af
Merge remote-tracking branch 'upstream/main' into feat/mindistance-ud…
estebanzimanyi May 15, 2026
ef116fd
Do not call meos_finalize in MobilitySparkSession.close
estebanzimanyi May 17, 2026
57cd235
Serialise STBox hex-WKB with SRID so the Q10 bbox prefilter is not empty
estebanzimanyi May 17, 2026
ca9676d
Refresh stale committed lib/libmeos.so to current MEOS 1.4
estebanzimanyi May 17, 2026
0f89aed
Revert "Refresh stale committed lib/libmeos.so to current MEOS 1.4"
estebanzimanyi May 17, 2026
10a4538
Refresh parity docs to AS-IS state and re-verify against current Mobi…
estebanzimanyi May 18, 2026
09b32fe
feat(portable): register the 29 canonical bare-name operator UDFs (RF…
estebanzimanyi May 18, 2026
003c2a0
feat(parity): cbuffer/npoint/pose/rgeo UDF surface — 99.6%, all six f…
estebanzimanyi May 18, 2026
c3d66aa
Merge remote-tracking branch 'fork/doc/reviewer-guide' into preview/1…
estebanzimanyi May 20, 2026
a30bb44
Merge remote-tracking branch 'fork/feat/mindistance-udf-udaf-scaffold…
estebanzimanyi May 20, 2026
b24dfb7
Merge remote-tracking branch 'fork/feat/portable-operator-bare-names'…
estebanzimanyi May 20, 2026
4d0607d
Merge remote-tracking branch 'fork/feat/sibling-families-parity' into…
estebanzimanyi May 20, 2026
a6406c2
feat(bench): 3-tier index framework + Spark NxN mitigations
estebanzimanyi May 20, 2026
49598df
refactor: centralise PG↔Unix epoch conversion in TimeUtil (boundary l…
estebanzimanyi May 20, 2026
bb35141
doc(spark-version): document Spark 3.5 LTS as the target; Spark 4 fut…
estebanzimanyi May 20, 2026
44b34f1
Merge remote-tracking branch 'fork/feat/jmeos-1.3-berlinmod-poc' into…
estebanzimanyi May 21, 2026
bbcc210
Serialise STBox hex-WKB with SRID so the Q10 bbox prefilter is not empty
estebanzimanyi May 17, 2026
7721c25
Merge remote-tracking branch 'fork/fix/license-main-java' into integr…
estebanzimanyi May 21, 2026
a6fba64
docs(integration): JMEOS-regen caveat for Th3IndexUDFs
estebanzimanyi May 21, 2026
b4ad281
Reconcile UDFs against the regenerated JMEOS jar (907/907 green)
estebanzimanyi May 22, 2026
96048c0
Fail loud on BerlinMOD bench query errors instead of phantom timings
estebanzimanyi May 24, 2026
8077b44
Fix MobilityDB BerlinMOD loader: th3 converter name and geomWKT column
estebanzimanyi May 24, 2026
0a64e73
Reconcile BerlinMOD queries to the current MobilityDB build API
estebanzimanyi May 24, 2026
6ee1a9e
Add MobilityDB BerlinMOD benchmark report (sf 0.005, tier 3)
estebanzimanyi May 24, 2026
3b23728
Fix region SRID so BerlinMOD region queries are not silently empty
estebanzimanyi May 25, 2026
d6ebaa5
Refresh MobilityDB benchmark report after region SRID fix
estebanzimanyi May 25, 2026
34208f2
Finalize MobilityDB BerlinMOD findings: th3index does not accelerate it
estebanzimanyi May 25, 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
14 changes: 14 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<!--
👀 Reviewers: this project's tier ranking, dependency chains and the
standards checklist live in:
doc/contributing/reviewer-guide.md
PR authors: update that file in the same commit as any PR queue change.
-->

## Summary

<!-- What this PR does, in 1–3 bullets. Focus on the "why". -->

## Test plan

<!-- - [ ] Bullet checklist of TODOs for verifying this PR -->
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
11 changes: 9 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,21 @@
.project
.settings/

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

# Mac
# macOS
.DS_Store
**/.DS_Store

# Maven
log/
target/

# Large BerlinMOD benchmark data (generated locally — too large for GitHub)
berlinmod/data/trips.csv
dependency-reduced-pom.xml
hs_err_pid*.log
20 changes: 20 additions & 0 deletions INTEGRATION_NOTES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# INTEGRATION BRANCH NOTE — JMEOS regen needed for Th3IndexUDFs

The accumulated integration branch (integration/berlinmod-bench) carries
PR #11 (Th3IndexUDFs full API, 86 UDFs) which calls JMEOS methods like
`always_eq_th3index_h3index` / `always_ne_th3index_h3index`. Neither the
bundled JMEOS-1.4.jar nor JMEOS-1.5.jar exposes these — they require a
JMEOS regeneration against MEOS-with-th3index.

For the parallel benchmark task: either
(a) replace libs/JMEOS-1.5.jar with a regen built against the MEOS pin
that includes the th3index module (estebanzimanyi/MobilityDB:
fix/meos-pg-symbol-collision-plus-h3 @ b183b12ee692, OR
split/th3index-stacked, OR integration/meos-1.4-bump merged with #1045),
(b) comment-out the th3index method call-sites in Th3IndexUDFs.java
(lines around 498, 540, 580, etc.) — disables only the h3-cell
h3-cell join queries (Tier-1 Spark column-store prefilter), the
Trips × Trips queries Q5/Q6/Q10/Q16 still run via portable SQL +
BROADCAST hints.

Option (a) is the right fix and is the JMEOS-session's standing task.
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.
10 changes: 9 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,14 @@ The MobilityDB project is developed by the Computer & Decision Engineering Depar

More information about MobilityDB, including publications, presentations, etc., can be found in the MobilityDB [website](https://mobilitydb.com).

### For contributors and reviewers

- Reviewing a pull request? See the
[PR Reviewer Guide](doc/contributing/reviewer-guide.md) — tier ranking,
dependency chains and the standards checklist. Reviewers landing in
any of the three platform repos (MobilityDB / MobilityDuck /
MobilitySpark) find the same canonical structure at the same path.


## Table of Contents

Expand All @@ -40,7 +48,7 @@ More information about MobilityDB, including publications, presentations, etc.,

- 🚀 MobilityDB installed with MEOS
- 🔧 JMEOS working version
- ⚡ Spark 3.4.0
- ⚡ Apache Spark 3.5.x (LTS); see [`doc/spark-version.md`](doc/spark-version.md) for the Spark-version target and the rationale for not yet supporting Spark 4
- 📝 Maven 4
- ☕ Java 17 (recommended)

Expand Down
Loading
Loading