Running driver on not officially supported platforms
- Dominant language
- C++
- Stars
- 127
- Forks
- 80
- Avg merge
- 13h 49m
- Merged PRs (30d)
- 48
Description
### Description
It's not possible to run the driver on platforms that are not officially supported.
- Regardless of which version of `duckdb_jdbc_*` is used, it calls `cpuArch` and `osName` unconditionally before it tries to load plain `duckdb_java`.
Each of them throws `IllegalStateException` if being run not on one of the hardcoded OS's / architectures.
- There's `OVERRIDE_JDBC_OS_ARCH` to enforce the correct arch for the native part, but there's no such option for `OS_NAME`.
I'd be happy to provide a PR for this.
Any ideas on how to address it?
From my side, I can see the below options.
### Suggestions
#### For the native part
Introduce `OVERRIDE_JDBC_OS_NAME`.
#### Option 1 for the Java part (more generic)
Package a properties file that'd contain all the mappings between `os.name` / `os.arch` <-> OS / arch used by `DuckDBNative`, and load it in runtime.
It could contain all the officially supported platforms + extra platforms defined in build time / edited in pre-built jars.
E.g.
```properties
<...>
duckdb.os.arch.arm64 = aarch64,arm64
duckdb.os.name.linux = linux
<...>
```
It'd allow using the official build in the most flexible way.
#### Option 2 for the Java part (more conservative)
Catch `IllegalStateException("Unsupported <...>")`, try to load plain `duckdb_java`. If the latter fails, throw the original error.
Or something like this.
It'd allow using `duckdb_jdbc-*-nolib.jar` on such platforms.
Thank you.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.