{"id":51768644,"url":"https://github.com/jeroenflvr/datapress-jdbc","last_synced_at":"2026-07-19T21:33:25.789Z","repository":{"id":368944085,"uuid":"1287554312","full_name":"jeroenflvr/datapress-jdbc","owner":"jeroenflvr","description":"A JDBC client driver for the DataPress|datap-rs http api server","archived":false,"fork":false,"pushed_at":"2026-07-02T21:58:53.000Z","size":266,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-19T21:33:24.165Z","etag":null,"topics":["data","datap-rs","dataserver","delta","deltalake","fast-api","http-server","jdbc","parquet"],"latest_commit_sha":null,"homepage":"https://docs.datap-rs.org","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jeroenflvr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-07-02T19:52:08.000Z","updated_at":"2026-07-02T21:58:58.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jeroenflvr/datapress-jdbc","commit_stats":null,"previous_names":["jeroenflvr/datapress-jdbc"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jeroenflvr/datapress-jdbc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeroenflvr%2Fdatapress-jdbc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeroenflvr%2Fdatapress-jdbc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeroenflvr%2Fdatapress-jdbc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeroenflvr%2Fdatapress-jdbc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jeroenflvr","download_url":"https://codeload.github.com/jeroenflvr/datapress-jdbc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeroenflvr%2Fdatapress-jdbc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35666469,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-19T02:00:06.923Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data","datap-rs","dataserver","delta","deltalake","fast-api","http-server","jdbc","parquet"],"created_at":"2026-07-19T21:33:25.120Z","updated_at":"2026-07-19T21:33:25.778Z","avatar_url":"https://github.com/jeroenflvr.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# datapress-jdbc\n\n[![Maven Central](https://img.shields.io/maven-central/v/org.datap-rs/datapress-jdbc.svg?label=Maven%20Central)](https://central.sonatype.com/artifact/org.datap-rs/datapress-jdbc)\n[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)\n\nA read-only, Type-4 (pure Java) JDBC driver for\n[DataPress](https://github.com/jeroenflvr/datapress) — a Rust columnar HTTP query server\nover Parquet/Delta. The driver wraps DataPress's REST + Arrow IPC API so BI tools, query\nconsoles, and JVM applications can talk to it over standard `java.sql`.\n\n\u003e **Status: early release.** The public surface and behaviour may still change before 1.0.\n\n## What it is\n\n- Pure-Java JDBC driver (`jdbc:datapress://…`), no native components.\n- **Read-only and analytics-oriented**: `SELECT` / `WITH … SELECT` / `DESCRIBE` only.\n- Streams results as Apache Arrow IPC, decoded lazily so large result sets use constant memory.\n- Tool compatibility (DBeaver, DataGrip, …) via a synthesized `DatabaseMetaData`, not SQL rewriting.\n- Single self-contained (shaded) jar — Arrow and Jackson are relocated internally, so there are\n  no dependency conflicts on your classpath.\n\n## Installation\n\nThe driver is published to **Maven Central** under the coordinates:\n\n| | |\n|------------|------------------|\n| groupId | `org.datap-rs` |\n| artifactId | `datapress-jdbc` |\n| version | `0.1.0` |\n\nBrowse it on [central.sonatype.com](https://central.sonatype.com/artifact/org.datap-rs/datapress-jdbc).\n\n**Maven** — `pom.xml`:\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003eorg.datap-rs\u003c/groupId\u003e\n  \u003cartifactId\u003edatapress-jdbc\u003c/artifactId\u003e\n  \u003cversion\u003e0.1.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n**Gradle (Kotlin DSL)** — `build.gradle.kts`:\n\n```kotlin\ndependencies {\n    implementation(\"org.datap-rs:datapress-jdbc:0.1.0\")\n}\n```\n\n**Gradle (Groovy DSL)** — `build.gradle`:\n\n```groovy\ndependencies {\n    implementation 'org.datap-rs:datapress-jdbc:0.1.0'\n}\n```\n\nFor a GUI SQL tool (DBeaver, DataGrip, …), download the shaded jar from the\n[Maven Central artifact page](https://central.sonatype.com/artifact/org.datap-rs/datapress-jdbc)\nand register it as a new driver with class `org.datap_rs.jdbc.DataPressDriver`.\nSee [docs/DBEAVER.md](docs/DBEAVER.md) for a step-by-step DBeaver walkthrough.\n\n## Usage\n\nThe driver auto-registers via the JDBC `ServiceLoader`, so no `Class.forName(...)` is\nneeded on modern JVMs.\n\n```java\nimport java.sql.Connection;\nimport java.sql.DriverManager;\nimport java.sql.ResultSet;\nimport java.sql.Statement;\n\nString url = \"jdbc:datapress://localhost:8080/?token=\" + bearerToken;\n\ntry (Connection conn = DriverManager.getConnection(url);\n     Statement stmt = conn.createStatement();\n     ResultSet rs = stmt.executeQuery(\"SELECT id, name FROM my_dataset LIMIT 100\")) {\n    while (rs.next()) {\n        System.out.println(rs.getLong(\"id\") + \" \" + rs.getString(\"name\"));\n    }\n}\n```\n\nCredentials can also be passed via `java.util.Properties` (handy for tools with\nuser/password fields — `password` is accepted as an alias for `token`):\n\n```java\nProperties props = new Properties();\nprops.setProperty(\"token\", bearerToken);\nConnection conn = DriverManager.getConnection(\"jdbc:datapress://localhost:8080/\", props);\n```\n\n### JVM flag for Arrow (JDK 16+)\n\nArrow's off-heap memory needs an `--add-opens` on the JVM running the driver:\n\n```\n--add-opens=java.base/java.nio=ALL-UNNAMED\n```\n\n## URL format\n\n```\njdbc:datapress://host[:port][/][?prop=value\u0026...]\n```\n\n`jdbc:datapress:http://…` and `jdbc:datapress:https://…` are also accepted.\n\n### Connection properties\n\nAccepted both as URL query parameters and via `java.util.Properties` (Properties wins on conflict):\n\n| Property | Description | Default |\n|-------------------|---------------------------------------------------------------------|-----------|\n| `token` | Bearer token. `password` is accepted as an alias; `user` is ignored. | — |\n| `tls` | `true` \\| `false` — use HTTPS. | `false` |\n| `connectTimeout` | Connect timeout in milliseconds. | `10000` |\n| `socketTimeout` | Socket/read timeout in milliseconds. | `300000` |\n| `maxRows` | Default per-statement row cap when the app doesn't call `setMaxRows`. | unlimited |\n| `applicationName` | Sent as `User-Agent: datapress-jdbc/\u003cversion\u003e (\u003capplicationName\u003e)`. | — |\n\nConnecting performs a single `GET /version` handshake and fails fast on an unreachable\nor unauthorized server.\n\n## Limitations (by design)\n\n- Read-only; a single dataset per SQL statement (Phase-1 server limit).\n- No server-side parameter binding — `PreparedStatement` substitutes client-side.\n- The server's raw-SQL endpoint is **disabled by default** and must be enabled\n  (`[sql].enabled = true`).\n\n## Development\n\n```bash\n./gradlew build          # spotless + compile + unit tests + shaded jar\n./gradlew test           # unit tests only\nDATAPRESS_URL=… ./gradlew integrationTest   # integration tests (needs a live server)\n```\n\nIf you have [go-task](https://taskfile.dev) installed, common flows are wrapped in the\n[Taskfile.yml](Taskfile.yml):\n\n```bash\ntask build                 # format, compile, test, shaded jar\ntask test                  # unit tests\ntask release -- 0.2.0      # bump version and publish to Maven Central\n```\n\n## License\n\n[Apache License 2.0](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeroenflvr%2Fdatapress-jdbc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjeroenflvr%2Fdatapress-jdbc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeroenflvr%2Fdatapress-jdbc/lists"}