Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
e7e1f9b
feat(connectors): add generic JDBC source connector
shbhmrzd Jun 28, 2026
2df58c5
Merge branch 'master' into jdbc_source
shbhmrzd Jul 20, 2026
6ecc184
refactor(connectors): align JDBC source with sibling conventions
shbhmrzd Jul 20, 2026
477cc4e
Merge remote-tracking branch 'upstream/master' into jdbc_source
shbhmrzd Jul 22, 2026
0e80479
fix(connectors): harden JDBC source incremental cursor and null handling
shbhmrzd Jul 23, 2026
dfc2457
docs(connectors): caveat non-unique timestamp tracking columns in JDB…
shbhmrzd Jul 23, 2026
6f1eedc
fix(connectors): align JDBC ORDER BY validation with read-time matching
shbhmrzd Aug 3, 2026
f9f2925
Merge remote-tracking branch 'upstream/master' into jdbc_source
shbhmrzd Aug 3, 2026
d22fa4e
fix(connectors): harden JDBC source startup, types, and secret docs
shbhmrzd Aug 4, 2026
ec5a011
Merge remote-tracking branch 'upstream/master' into jdbc_source
shbhmrzd Aug 4, 2026
3e0dfa4
docs(connectors): correct JDBC source metadata and dedup overclaims
shbhmrzd Aug 4, 2026
c629904
fix(connectors): address JDBC source review must-fixes
shbhmrzd Aug 5, 2026
6187707
fix(connectors): fix JDBC CI lint failures (typos, TOML format)
shbhmrzd Aug 5, 2026
850838f
fix(integration): integrity-check the JDBC driver download
shbhmrzd Aug 5, 2026
487024c
style(integration): rustfmt the JDBC driver-download helper
shbhmrzd Aug 5, 2026
5750b66
Merge remote-tracking branch 'upstream/master' into jdbc_source
shbhmrzd Aug 24, 2026
631f64b
fix(connectors): gate the JDBC source cursor on delivery acknowledgement
shbhmrzd Aug 25, 2026
ed7978a
Merge branch 'master' into jdbc_source
hubcio Aug 25, 2026
349cf86
fix(connectors): log plugin open failures across the FFI boundary
shbhmrzd Aug 25, 2026
e251533
fix(integration): reject a truncated JDBC driver JAR
shbhmrzd Aug 25, 2026
f36cc8c
fix(integration): bound JDBC source polls by deadline, not attempts
shbhmrzd Aug 25, 2026
2a65f0b
Merge branch 'master' into jdbc_source
shbhmrzd Aug 25, 2026
d3efa4c
Merge remote-tracking branch 'upstream/master' into jdbc_source
shbhmrzd Sep 23, 2026
e30646b
Merge remote-tracking branch 'origin/jdbc_source' into jdbc_source
shbhmrzd Sep 23, 2026
9e8dc3b
Merge remote-tracking branch 'upstream/master' into jdbc_source
shbhmrzd Sep 23, 2026
ca8cd54
fix(connectors): harden JDBC JNI frame cleanup
shbhmrzd Sep 23, 2026
3cc03f6
fix(connectors): load JDBC drivers with system class loader
shbhmrzd Sep 24, 2026
b4e145e
Merge branch 'master' into jdbc_source
shbhmrzd Sep 24, 2026
fe3fd70
Merge branch 'master' into jdbc_source
shbhmrzd Sep 24, 2026
4e8ea3e
Merge branch 'master' into jdbc_source
shbhmrzd Sep 24, 2026
0691e18
Merge branch 'master' into jdbc_source
shbhmrzd Sep 25, 2026
2ceb796
Merge remote-tracking branch 'upstream/master' into jdbc_source
shbhmrzd Sep 25, 2026
495ac4d
Merge remote-tracking branch 'origin/jdbc_source' into jdbc_source
shbhmrzd Sep 26, 2026
632d927
Merge remote-tracking branch 'upstream/master' into jdbc_source
shbhmrzd Sep 26, 2026
329384c
Merge remote-tracking branch 'upstream/master' into jdbc_source
shbhmrzd Sep 27, 2026
15be65e
Merge branch 'master' into jdbc_source
spetz Sep 28, 2026
81ef6d2
fix(connectors): address JDBC source review findings
shbhmrzd Sep 29, 2026
0a248c3
fix(connectors): address latest JDBC review findings
shbhmrzd Oct 2, 2026
9c706ee
fix(connectors): harden JDBC source review follow-ups
shbhmrzd Oct 2, 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
12 changes: 12 additions & 0 deletions .config/nextest.toml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,18 @@ max-threads = 1
filter = 'package(integration) and test(/connectors::elasticsearch::/)'
test-group = "elasticsearch"

# JDBC tests each start their own iggy-server plus a Postgres testcontainer and
# an embedded JVM, and they share a JDBC driver JAR downloaded to a single path
# on first run. nextest runs each test in its own process, so the in-source
# `#[serial]` guard does not serialize them here; `max-threads = 1` does, which
# avoids resource contention and a race to download the same driver JAR.
[test-groups.jdbc]
max-threads = 1

[[profile.default.overrides]]
filter = 'package(integration) and test(/connectors::jdbc::/)'
test-group = "jdbc"

# Each test in these binaries spawns its own real iggy-server subprocess (isolated data dir, port
# from PortGuard's own flock, so no two ever share a port). #[serial] on them is a dead letter
# under nextest - nextest runs every test as its own process, and #[serial]'s mutex only excludes
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/_build_rust_artifacts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ on:
connector_plugins:
type: string
required: false
default: "iggy_connector_elasticsearch_sink,iggy_connector_elasticsearch_source,iggy_connector_iceberg_sink,iggy_connector_postgres_sink,iggy_connector_postgres_source,iggy_connector_quickwit_sink,iggy_connector_random_source,iggy_connector_s3_sink,iggy_connector_stdout_sink,iggy_connector_surrealdb_sink, iggy_connector_rabbitmq_sink"
default: "iggy_connector_elasticsearch_sink,iggy_connector_elasticsearch_source,iggy_connector_iceberg_sink,iggy_connector_jdbc_source,iggy_connector_postgres_sink,iggy_connector_postgres_source,iggy_connector_quickwit_sink,iggy_connector_rabbitmq_sink,iggy_connector_random_source,iggy_connector_s3_sink,iggy_connector_stdout_sink,iggy_connector_surrealdb_sink"
description: "Comma-separated list of connector plugin crates to build as shared libraries"
outputs:
artifact_name:
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/edge-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ jobs:
- `iggy_connector_elasticsearch_sink`
- `iggy_connector_elasticsearch_source`
- `iggy_connector_iceberg_sink`
- `iggy_connector_jdbc_source`
- `iggy_connector_postgres_sink`
- `iggy_connector_postgres_source`
- `iggy_connector_quickwit_sink`
Expand Down
152 changes: 146 additions & 6 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ members = [
"core/connectors/sources/elasticsearch_source",
"core/connectors/sources/http_source",
"core/connectors/sources/influxdb_source",
"core/connectors/sources/jdbc_source",
"core/connectors/sources/postgres_source",
"core/connectors/sources/random_source",
"core/consensus",
Expand Down Expand Up @@ -213,6 +214,7 @@ iggy_connector_sdk = { path = "core/connectors/sdk", version = "0.5.0" }
indexmap = "2.14.2"
integration = { path = "core/integration" }
ipnet = "2.12.2"
jni = { version = "0.21", features = ["invocation"] }
journal = { path = "core/journal" }
js-sys = "0.3"
jsonwebtoken = { version = "11.0.0", features = ["rust_crypto"] }
Expand Down Expand Up @@ -308,6 +310,7 @@ serde_yaml_ng = "0.10.0"
serial_test = "4.0.1"
server = { path = "core/server", default-features = false }
server_common = { path = "core/server_common" }
sha2 = "0.10.9"
shard = { path = "core/shard" }
simd-json = { version = "0.18.1", features = ["serde_impl"] }
smallvec = "1.16"
Expand Down
1 change: 1 addition & 0 deletions core/connectors/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ Please refer to the **[Source documentation](https://github.com/apache/iggy/tree
### Available Sources

- **Elasticsearch Source** - polls documents from Elasticsearch indices
- **JDBC Source** - reads rows from any JDBC-compliant database (PostgreSQL, MySQL, Oracle, SQL Server, H2) via an embedded JVM; bulk and incremental modes
- **PostgreSQL Source** - reads rows from PostgreSQL tables with multiple consumption strategies (delete after read, mark as processed, timestamp tracking)
- **Random Source** - generates random test messages (useful for testing/development)

Expand Down
Loading