Skip to content

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

DatabaseVersionsStatus
PostgreSQL12+Fully supported
MySQL8.0+Fully supported

Fully Supported Features

These features are automatically detected during schema sync and work end-to-end in the data platform:

FeaturePostgreSQLMySQLNotes
TablesAll table types
Columns (all common types)VARCHAR, TEXT, INTEGER, BIGINT, NUMERIC, BOOLEAN, DATE, TIMESTAMP, UUID, etc.
Primary keysSingle and composite
Foreign keysIncluding cascade rules (CASCADE, SET NULL, RESTRICT, SET DEFAULT)
IndexesSingle-column, composite, unique
Auto-increment / SERIALDetected as auto-generated
NULL / NOT NULL
UNIQUE constraintsSingle-column
Default values
JSON / JSONBDisplayed as text
UUID columnsAuto-generation detected
TIMESTAMPTZMapped to DateTime widget
ENUM typeDisplayed as text (SELECT widget planned)
TINYINT(1) as BOOLEANAutomatically mapped
Multiple schemasSelect which schema to import
Schema sync (re-import)Detects added/removed/modified columns, indexes, and foreign keys
Drift detectionCompares your metadata against the live database

Partially Supported

These features work but with some limitations:

FeatureLimitation
Composite unique constraintsDetected 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 indexesIndex 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.

FeatureWhy
Database views (CREATE VIEW)Views are read-only query results, not tables. SchemaStack imports tables only. Planned for a future release.
Materialized viewsSame as views — not importable as editable tables
TriggersTriggers execute automatically in your database and are not affected by SchemaStack
Stored procedures & functionsServer-side logic that runs independently of SchemaStack
Partitioned tablesThe partitions are visible as individual tables if needed
PostGIS / spatial typesGeospatial data types are not mapped to a widget
Table inheritance (PostgreSQL)Inherited tables are imported as standalone tables
Row-level security policiesSecurity policies are enforced by your database, not by SchemaStack
Domain typesCustom domain types are mapped to their base type
Full-text search indexes (GIN/GiST)Specialized index types are not imported
Exclusion constraintsPostgreSQL-specific constraint type not imported
CHECK constraintsRequires information_schema access which not all connections have

How Schema Sync Works

When you connect a workspace to your database, SchemaStack:

  1. Extracts your table structure via standard JDBC metadata (no special permissions needed beyond SELECT)
  2. Creates a view for each table, with columns matching your database schema
  3. Detects foreign key relationships and creates navigable links between views
  4. 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 TypeWidgetNotes
VARCHAR, CHARStringSingle-line text input
TEXT, CLOBTextMulti-line text area
INTEGER, BIGINT, SMALLINT, SERIALIntegerWhole number input
NUMERIC, DECIMAL, FLOAT, DOUBLENumberDecimal number input
BOOLEANBooleanToggle switch
DATEDateDate picker
TIMESTAMP, TIMESTAMPTZ, DATETIMEDateTimeDate + time picker
UUIDUUIDAuto-generated if empty
JSON, JSONBTextDisplayed as formatted text
BYTEA, BLOBStringBinary data as text
ENUM (MySQL)StringText input (SELECT widget planned)
INTERVAL (PostgreSQL)StringText representation

You can change the widget type for any column after import.

SchemaStack Documentation