Skip to content

feat(iceberg): storage & catalog parity for the ingestr destination - #2462

Open
iremcaginyurtturk wants to merge 1 commit into
mainfrom
iremcaginyurtturk/iceberg-storage-parity
Open

feat(iceberg): storage & catalog parity for the ingestr destination#2462
iremcaginyurtturk wants to merge 1 commit into
mainfrom
iremcaginyurtturk/iceberg-storage-parity

Conversation

@iremcaginyurtturk

@iremcaginyurtturk iremcaginyurtturk commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Follow-up to #2383 (which added Iceberg as an ingestr destination). This closes the remaining gaps so the Bruin connection can express ingestr's full Iceberg URI surface.

Catalog

  • REST: rest_use_ssl to select HTTPS — required for managed catalogs (Polaris, Unity, Lakekeeper, Tabular, R2); ingestr defaults REST to plain HTTP.
  • SQL: driver / dialect for the generic sql catalog (ingestr requires both; the dedicated sqlite/postgres types set them automatically).

Storage

  • Native GCS (type: gcs): gs:// warehouse with key_file / key_json service-account credentials (or ADC).
  • Local filesystem (type: local): a filesystem path → file:// warehouse.
  • Hadoop object-storage: path is now optional, so the warehouse can come from the storage block (s3://, gs://) instead of a local dir.
  • Storage block is optional when the catalog supplies its own warehouse (Glue/REST/SQL).

Docs

  • Per-backend storage examples: AWS S3, S3 bucket+prefix, S3-compatible (MinIO/R2), native GCS, GCS via the S3-interop endpoint (HMAC), and local.
  • Postgres catalog DSN passthrough (sslmode, sslrootcert, connect_timeout, …) via properties, scoped to type: postgres.

Comment thread pkg/iceberg/config.go Outdated
@greptile-apps

greptile-apps Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Fix All in Conductor

Prompt To Fix All With AI
### Issue 1
pkg/iceberg/config.go:217-220
**Warehouse-less catalogs pass validation**

When SQLite, Postgres, or Hive omits `storage`, or Hadoop has neither `catalog.path` nor `storage`, this branch emits an Iceberg URI without a warehouse, causing ingestr destination initialization or table creation to fail at runtime.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Reviews (1): Last reviewed commit: "feat(iceberg): storage & catalog parity ..." | Re-trigger Greptile

@iremcaginyurtturk
iremcaginyurtturk force-pushed the iremcaginyurtturk/iceberg-storage-parity branch from e529aea to 5c9f9f7 Compare July 28, 2026 10:45
@greptile-apps

greptile-apps Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Reviews (2): Last reviewed commit: "feat(iceberg): storage & catalog parity ..." | Re-trigger Greptile

@iremcaginyurtturk
iremcaginyurtturk force-pushed the iremcaginyurtturk/iceberg-storage-parity branch from 5c9f9f7 to 6f79260 Compare July 28, 2026 10:51
Comment thread pkg/iceberg/config.go Outdated
@greptile-apps

greptile-apps Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Fix All in Conductor

Prompt To Fix All With AI
### Issue 1
pkg/iceberg/config.go:100-102
**Catalog-owned SQL warehouse rejected**

When a generic SQL catalog supplies its own warehouse and the connection omits storage, `catalogNeedsWarehouse` still requires a client-supplied warehouse, causing `GetIngestrURI` to reject the valid connection before ingestr starts.

```suggestion
	case config.IcebergCatalogSQLite, config.IcebergCatalogPostgres,
		config.IcebergCatalogHive, config.IcebergCatalogHadoop:
		return true
```

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Reviews (3): Last reviewed commit: "feat(iceberg): storage & catalog parity ..." | Re-trigger Greptile

@iremcaginyurtturk
iremcaginyurtturk force-pushed the iremcaginyurtturk/iceberg-storage-parity branch from 6f79260 to ededfe2 Compare July 28, 2026 10:55
@greptile-apps

greptile-apps Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Reviews (4): Last reviewed commit: "feat(iceberg): storage & catalog parity ..." | Re-trigger Greptile

@iremcaginyurtturk
iremcaginyurtturk force-pushed the iremcaginyurtturk/iceberg-storage-parity branch from ededfe2 to f4281fb Compare July 28, 2026 10:59
Comment thread pkg/iceberg/config.go Outdated
@greptile-apps

greptile-apps Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Fix All in Conductor

Prompt To Fix All With AI
### Issue 1
pkg/iceberg/config.go:214-217
**Optional storage remains schema-required**

When a Glue, REST, or SQL catalog supplies its warehouse and omits `storage`, this branch accepts the configuration, but the reflected connection schema still requires `storage`, causing schema-aware clients to reject the newly supported configuration before `GetIngestrURI` runs.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Reviews (5): Last reviewed commit: "feat(iceberg): storage & catalog parity ..." | Re-trigger Greptile

@iremcaginyurtturk
iremcaginyurtturk force-pushed the iremcaginyurtturk/iceberg-storage-parity branch from f4281fb to 7baa637 Compare July 28, 2026 13:40
@greptile-apps

greptile-apps Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Reviews (6): Last reviewed commit: "feat(iceberg): storage & catalog parity ..." | Re-trigger Greptile

@iremcaginyurtturk
iremcaginyurtturk force-pushed the iremcaginyurtturk/iceberg-storage-parity branch from 7baa637 to 15132a1 Compare July 28, 2026 14:22
@greptile-apps

greptile-apps Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Reviews (7): Last reviewed commit: "feat(iceberg): storage & catalog parity ..." | Re-trigger Greptile

Extend the Iceberg ingestr-destination connection to cover the rest of
ingestr's URI surface:

- REST catalog: rest_use_ssl to select HTTPS (Polaris, Unity, Tabular, ...)
- SQL catalog: driver/dialect for the generic sql catalog
- Storage: native GCS (key_file/key_json), local filesystem, and Hadoop
  object-storage warehouses (catalog path is now optional)
- Storage block is optional when the catalog supplies its own warehouse

Docs: per-backend storage examples (S3, MinIO/R2, GCS native, GCS interop,
local) and the Postgres DSN parameter passthrough (sslmode, ...). Regenerate
the connections schema expectation.
@iremcaginyurtturk
iremcaginyurtturk force-pushed the iremcaginyurtturk/iceberg-storage-parity branch from 15132a1 to 22dacf7 Compare July 28, 2026 14:39
@greptile-apps

greptile-apps Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Reviews (8): Last reviewed commit: "feat(iceberg): storage & catalog parity ..." | Re-trigger Greptile

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant