Appearance
Database Compatibility
SchemaStack connects to your existing PostgreSQL or MySQL database and imports your schema automatically. This page documents which database features are fully supported, partially supported, or not yet supported.
Supported Databases
| Database | Versions | Status |
|---|---|---|
| PostgreSQL | 12+ | Fully supported |
| MySQL | 8.0+ | Fully supported |
Fully Supported Features
These features are automatically detected during schema sync and work end-to-end in the data platform:
| Feature | PostgreSQL | MySQL | Notes |
|---|---|---|---|
| Tables | ✅ | ✅ | All table types |
| Columns (all common types) | ✅ | ✅ | VARCHAR, TEXT, INTEGER, BIGINT, NUMERIC, BOOLEAN, DATE, TIMESTAMP, UUID, etc. |
| Primary keys | ✅ | ✅ | Single and composite |
| Foreign keys | ✅ | ✅ | Including cascade rules (CASCADE, SET NULL, RESTRICT, SET DEFAULT) |
| Indexes | ✅ | ✅ | Single-column, composite, unique |
| Auto-increment / SERIAL | ✅ | ✅ | Detected as auto-generated |
| NULL / NOT NULL | ✅ | ✅ | |
| UNIQUE constraints | ✅ | ✅ | Single-column |
| Default values | ✅ | ✅ | |
| JSON / JSONB | ✅ | ✅ | Displayed as text |
| UUID columns | ✅ | — | Auto-generation detected |
| TIMESTAMPTZ | ✅ | — | Mapped to DateTime widget |
| ENUM type | — | ✅ | Displayed as text (SELECT widget planned) |
| TINYINT(1) as BOOLEAN | — | ✅ | Automatically mapped |
| Multiple schemas | ✅ | ✅ | Select which schema to import |
| Schema sync (re-import) | ✅ | ✅ | Detects added/removed/modified columns, indexes, and foreign keys |
| Drift detection | ✅ | ✅ | Compares your metadata against the live database |
Partially Supported
These features work but with some limitations:
| Feature | Limitation |
|---|---|
| Composite unique constraints | Detected as an index, not as column-level unique |
Partial indexes (WHERE clause) | Index is imported but the filter predicate is not preserved |
PostgreSQL array types (TEXT[]) | Imported as a text column — array syntax not parsed |
| Expression indexes | Index is imported but the expression is not preserved |
| Interval type (PostgreSQL) | Imported and displayed as text |
Not Supported
These database features are not imported during schema sync. They do not affect the tables and columns that SchemaStack does import — your data remains fully accessible.
| Feature | Why |
|---|---|
Database views (CREATE VIEW) | Views are read-only query results, not tables. SchemaStack imports tables only. Planned for a future release. |
| Materialized views | Same as views — not importable as editable tables |
| Triggers | Triggers execute automatically in your database and are not affected by SchemaStack |
| Stored procedures & functions | Server-side logic that runs independently of SchemaStack |
| Partitioned tables | The partitions are visible as individual tables if needed |
| PostGIS / spatial types | Geospatial data types are not mapped to a widget |
| Table inheritance (PostgreSQL) | Inherited tables are imported as standalone tables |
| Row-level security policies | Security policies are enforced by your database, not by SchemaStack |
| Domain types | Custom domain types are mapped to their base type |
| Full-text search indexes (GIN/GiST) | Specialized index types are not imported |
| Exclusion constraints | PostgreSQL-specific constraint type not imported |
| CHECK constraints | Requires information_schema access which not all connections have |
How Schema Sync Works
When you connect a workspace to your database, SchemaStack:
- Extracts your table structure via standard JDBC metadata (no special permissions needed beyond
SELECT) - Creates a view for each table, with columns matching your database schema
- Detects foreign key relationships and creates navigable links between views
- Generates appropriate UI widgets for each column type (text input, number input, date picker, etc.)
On subsequent syncs, SchemaStack detects what changed:
- New tables or columns are added
- Removed tables or columns are cleaned up
- Type changes, nullable changes, and foreign key changes are updated
- Your customizations (column display names, positions, widget overrides) are preserved
Type Mapping
SchemaStack maps database column types to UI widget types:
| Database Type | Widget | Notes |
|---|---|---|
| VARCHAR, CHAR | String | Single-line text input |
| TEXT, CLOB | Text | Multi-line text area |
| INTEGER, BIGINT, SMALLINT, SERIAL | Integer | Whole number input |
| NUMERIC, DECIMAL, FLOAT, DOUBLE | Number | Decimal number input |
| BOOLEAN | Boolean | Toggle switch |
| DATE | Date | Date picker |
| TIMESTAMP, TIMESTAMPTZ, DATETIME | DateTime | Date + time picker |
| UUID | UUID | Auto-generated if empty |
| JSON, JSONB | Text | Displayed as formatted text |
| BYTEA, BLOB | String | Binary data as text |
| ENUM (MySQL) | String | Text input (SELECT widget planned) |
| INTERVAL (PostgreSQL) | String | Text representation |
You can change the widget type for any column after import.