Skip to content

feat: add Supabase database connector#27511

Open
aadityesh wants to merge 2 commits intoopen-metadata:mainfrom
aadityesh:feature/supabase-connector
Open

feat: add Supabase database connector#27511
aadityesh wants to merge 2 commits intoopen-metadata:mainfrom
aadityesh:feature/supabase-connector

Conversation

@aadityesh
Copy link
Copy Markdown

@aadityesh aadityesh commented Apr 18, 2026

Adds full Supabase connector support across all layers:

  • Ingestion: SupabaseSource (extends PostgresSource + MultiDBSource), SupabaseLineageSource, connection builder, service_spec, queries with SUPABASE_SYSTEM_SCHEMAS (auth, storage, realtime, extensions, graphql, etc.)
  • Schema: supabaseConnection.json spec + databaseService.json enum entry
  • Java: SupabaseConnectionClassConverter + ClassConverterFactory registration
  • Profiler: PythonDialects.Supabase = "postgresql" (reuses pg dialect)
  • UI: Supabase icon, connection form schema, DatabaseServiceUtils wiring, service icon map, generated enum updates, Supabase.md docs panel
  • Tests: 6 unit tests covering connection, system schemas, data types, service type validation, pooler host support
  • Test connection: supabase.json test connection definition

Describe your changes:

Fixes

I worked on ... because ...

Type of change:

  • Bug fix
  • Improvement
  • New feature
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation

Checklist:

  • I have read the CONTRIBUTING document.
  • My PR title is Fixes <issue-number>: <short explanation>
  • I have commented on my code, particularly in hard-to-understand areas.
  • For JSON Schema changes: I updated the migration scripts or explained why it is not needed.

Summary by Gitar

  • Refactored ingestion logic:
    • Removed MultiDBSource mixin from SupabaseSource in metadata.py.
  • Enhanced filtering:
    • Implemented get_schema_names to filter out SUPABASE_SYSTEM_SCHEMAS during metadata extraction.
  • Added test coverage:
    • Added test_system_schemas_are_filtered in test_supabase.py to verify schema exclusion logic.

This will update automatically on new commits.

Adds full Supabase connector support across all layers:

- **Ingestion**: SupabaseSource (extends PostgresSource + MultiDBSource),
  SupabaseLineageSource, connection builder, service_spec, queries with
  SUPABASE_SYSTEM_SCHEMAS (auth, storage, realtime, extensions, graphql, etc.)
- **Schema**: supabaseConnection.json spec + databaseService.json enum entry
- **Java**: SupabaseConnectionClassConverter + ClassConverterFactory registration
- **Profiler**: PythonDialects.Supabase = "postgresql" (reuses pg dialect)
- **UI**: Supabase icon, connection form schema, DatabaseServiceUtils wiring,
  service icon map, generated enum updates, Supabase.md docs panel
- **Tests**: 6 unit tests covering connection, system schemas, data types,
  service type validation, pooler host support
- **Test connection**: supabase.json test connection definition

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@aadityesh aadityesh requested review from a team as code owners April 18, 2026 12:09
@github-actions
Copy link
Copy Markdown
Contributor

Hi there 👋 Thanks for your contribution!

The OpenMetadata team will review the PR shortly! Once it has been labeled as safe to test, the CI workflows
will start executing and we'll be able to make sure everything is working as expected.

Let us know if you need any help!

Comment thread ingestion/src/metadata/ingestion/source/database/supabase/metadata.py Outdated
- Remove redundant MultiDBSource from SupabaseSource class hierarchy
  (PostgresSource already inherits it)
- Use SUPABASE_SYSTEM_SCHEMAS in get_schema_names() to filter out
  internal Supabase schemas (auth, storage, realtime, extensions, etc.)
- Add test_system_schemas_are_filtered unit test to cover the filtering

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

Hi there 👋 Thanks for your contribution!

The OpenMetadata team will review the PR shortly! Once it has been labeled as safe to test, the CI workflows
will start executing and we'll be able to make sure everything is working as expected.

Let us know if you need any help!

@gitar-bot
Copy link
Copy Markdown

gitar-bot bot commented Apr 18, 2026

Code Review ✅ Approved 2 resolved / 2 findings

Supabase database connector integration now properly excludes system schemas and removes redundant MultiDBSource inheritance. The implementation is clean and verified.

✅ 2 resolved
Bug: SUPABASE_SYSTEM_SCHEMAS defined but never used in extraction

📄 ingestion/src/metadata/ingestion/source/database/supabase/queries.py:27-38 📄 ingestion/src/metadata/ingestion/source/database/supabase/metadata.py:46
The SUPABASE_SYSTEM_SCHEMAS tuple is defined in queries.py and tested in the unit tests, but it is never actually referenced in metadata.py or any schema filtering logic. This means Supabase internal schemas (auth, storage, realtime, extensions, etc.) will be ingested as user data schemas, which is almost certainly not the desired behavior.

The Postgres connector uses POSTGRES_SYSTEM_SCHEMAS in its get_schemas or schema filtering logic. The Supabase source should similarly filter out these system schemas during schema enumeration.

Quality: Redundant MultiDBSource in SupabaseSource class hierarchy

📄 ingestion/src/metadata/ingestion/source/database/supabase/metadata.py:46
SupabaseSource inherits from both PostgresSource and MultiDBSource, but PostgresSource already extends MultiDBSource. The redundant explicit inheritance is unnecessary and slightly confusing about the design intent.

Options

Display: compact → Showing less information.

Comment with these commands to change:

Compact
gitar display:verbose         

Was this helpful? React with 👍 / 👎 | Gitar

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