Relational (RDBMS) datasources
Shared logic lives in DataSourcesPlugins/RDBMSDataSource (RDBSource partial classes: connection, CRUD, schema, DML helpers, bulk, transactions). Each engine is a thin *DataSourceCore project that inherits RDBSource and sets DataSourceType. Dialect-specific SQL flows through IDataSourceHelper / RDBMS helpers in BeepDM.
Architecture
| Layer | Location | Role |
|---|---|---|
| Shared RDBMS plugin | DataSourcesPlugins/RDBMSDataSource/ | RDBSource, Dapper usage, entity cache, pagination, resilience partials |
| Engine core | DataSourcesPluginsCore/<Engine>DataSourceCore/ | Add-in registration, DataSourceType, optional overrides |
| Helpers (BeepDM) | Resolved by DataSourceType | DDL/DML templates, capability checks — see BeepDM/.cursor/universal-rdbms-helper, rdbms-helper-facade |
Types that inherit RDBSource
All SQL execution, Dapper wiring, schema/CRUD partials, and transaction hooks live on RDBSource in the shared plugin. Engine projects are thin: they set delimiters, optional overrides, and AddinAttribute (DatasourceCategory + DataSourceType).
| Implementation | Project folder | Category | Help |
|---|---|---|---|
SQLServerDataSource | DataSourcesPluginsCore/SQlServerDataSourceCore/ | RDBMS | SQL Server |
PostgreDataSource | DataSourcesPluginsCore/PostgreDataSourceCore/ | RDBMS | PostgreSQL |
MySQLDataSource | DataSourcesPluginsCore/MySqlDataSourceCore/ | RDBMS | MySQL |
OracleDataSource | DataSourcesPluginsCore/OracleDataSourceCore/ | RDBMS | Oracle |
SnowFlakeDataSource | DataSourcesPluginsCore/SnowFlakeDataSource/ | CLOUD | Snowflake — see also Cloud & analytics |
SpannerDataSource | DataSourcesPluginsCore/SpannerDataSourceCore/ | CLOUD | Spanner |
PrestoDataSource | DataSourcesPluginsCore/PrestoDatasource/ | CLOUD | Presto |
InMemoryRDBSource (DuckDB & SQLite)
InMemoryRDBSource lives in the same plugin (DataSourcesPlugins/RDBMSDataSource/InMemoryRDBSource.cs): it extends RDBSource and implements IInMemoryDB for structure/load workflows. Two shipped cores build on it:
DuckDBDataSource—InMemoryDB/DuckDBDataSourceCore/,DatasourceCategory.INMEMORY,DataSourceType.DuckDB. Uses DuckDB.NET; documented under Local & in-memory.SQLiteDataSource—DataSourcesPluginsCore/SqliteDatasourceCore/, also implementsILocalDB;AddinAttributecategoryRDBMS, typeSqlLite. File lifecycle stays on the local-db path even though SQL behavior comes from the RDBMS stack.
LiteDB does not inherit RDBSource; it is a document store with its own core. See LiteDB.
IDataSourceHelper boundary
Runtime CRUD and metadata on RDBSource delegate dialect work to the helper for the active DataSourceType. Do not duplicate vendor SQL in the core when a helper already exposes the same operation; extend the helper or the shared RDBSource path so all RDBMS drivers stay consistent.
Configuration
Use ConnectionProperties with server fields (Host, Port, Database, SchemaName, Oracle SID/service where applicable), then validate and open. Same editor flow as other datasources (IDMEEditor).
SQLite note
SQLite inherits InMemoryRDBSource (see DuckDB & SQLite above), is registered as RDBMS with DataSourceType.SqlLite, and adds ILocalDB for file lifecycle. See SQLite provider and local & in-memory overview.
Contrast: NOSQL
Document, key-value, and time-series cores use DatasourceCategory.NOSQL and do not inherit RDBSource. See NoSQL overview.
Contrast: REST / SaaS connectors
Vendors under Connectors/ expose HTTP APIs via WebAPIDataSource and typically WebAPIConnectionProperties rather than SQL connection strings. Overview: REST / SaaS connectors; per-vendor command catalogs: flagship conn-* index.
Documented engines
- SQL Server —
SQlServerDataSourceCore/ - PostgreSQL —
PostgreDataSourceCore/ - MySQL —
MySqlDataSourceCore/ - Oracle —
OracleDataSourceCore/
Additional cores (Firebird, Timescale, etc.) follow the same pattern; add HTML pages when you document them.
Plugin Internals
Deep-dive documentation for the shared RDBSource plugin:
- Architecture — Partial class breakdown (16 files), helper classes, design patterns, database support matrix
- Configuration — ConnectionProperties, driver setup, resilience settings, cache tuning, bulk operation config
- Troubleshooting — Common errors, driver issues, Oracle specifics, known bugs and workarounds, performance tuning
For a per-file walkthrough of all sixteen partial classes — member inventories, call
flow, extension points and the defect register — read the Markdown reference kept
alongside the source at
DataSourcesPlugins/RDBMSDataSource/docs/. Start with
docs/README.md, and with docs/01-error-model.md before
changing anything: how this class reports success and failure is unusual and explains
much of the rest. The authoritative defect list is
docs/10-known-issues.md.
BeepDM skills
BeepDM/.cursor/idatasource/SKILL.mdBeepDM/.cursor/universal-helper-factory/SKILL.mdBeepDM/.cursor/universal-rdbms-helper/SKILL.mdBeepDM/.cursor/rdbms-helper-facade/SKILL.md