Skip to main content

Database Connectors

Connectors implement database-specific validation, native types, and capabilities. They extend the generic PSL validation with provider-specific logic.

Connector Trait

The Connector trait defines the interface for all database connectors:
Connectors are stateless - all methods take &self. Configuration and state live in the Datasource type.

Built-in Connectors

PSL provides connectors for all supported databases:

PostgreSQL Connector

Provider: postgresql Capabilities:
Native Types:
Special Features:
  • Extensions support (e.g., postgis, uuid-ossp)
  • Multi-schema support
  • Advanced indexing (GIN, GIST, BRIN)
  • Full-text search
  • Partial indexes with WHERE clauses

MySQL Connector

Provider: mysql Capabilities:
Native Types:
Special Features:
  • Index column length prefixing
  • Full-text indexes
  • Multiple character sets
  • Enum type support

SQLite Connector

Provider: sqlite Capabilities:
Native Types:
Limitations:
  • No enums (emulated as CHECK constraints)
  • No native JSON type (stored as TEXT)
  • Limited ALTER TABLE support
  • No foreign key actions in some configurations

SQL Server (MSSQL) Connector

Provider: sqlserver Capabilities:
Native Types:

CockroachDB Connector

Provider: cockroachdb Features:
  • Extends PostgreSQL connector
  • Distributed SQL capabilities
  • Some PostgreSQL features unsupported

MongoDB Connector

Provider: mongodb Status: Limited Query Compiler support Capabilities:
MongoDB support in Query Compiler is incomplete. Prisma 7 will ship without MongoDB initially, with support added when a driver adapter is available.

Connector Capabilities

Capabilities describe what functionality a connector provides:

Schema Capabilities

  • Enums - Native enum support
  • ScalarLists - Array/list fields
  • Json - Native JSON type
  • JsonLists - JSON array support
  • CompositeTypes - Embedded/composite types
  • MultiSchema - Multiple database schemas

ID and Key Capabilities

  • AutoIncrement - Auto-incrementing IDs
  • AutoIncrementAllowedOnNonId - Autoincrement on non-ID fields
  • AutoIncrementMultipleAllowed - Multiple autoincrement fields
  • CompoundIds - Multi-field primary keys
  • AnyId - Any unique can serve as ID
  • NamedPrimaryKeys - Custom primary key names
  • NamedForeignKeys - Custom foreign key names

Index Capabilities

  • FullTextIndex - Full-text search indexes
  • IndexColumnLengthPrefixing - Index prefix length (MySQL)
  • PartialIndex - Partial indexes with WHERE
  • ClusteringSetting - Clustered indexes

Query Capabilities

  • InsensitiveFilters - Case-insensitive filtering
  • JsonFiltering - JSON field filtering
  • JsonFilteringArrayPath - Array path in JSON (Postgres)
  • JsonFilteringJsonPath - JSON path syntax (MySQL)
  • NativeFullTextSearch - Full-text search queries
  • OrderByNullsFirstLast - NULL ordering control
  • LateralJoin - Lateral joins
  • DistinctOn - DISTINCT ON support

Write Capabilities

  • CreateMany - Batch inserts
  • CreateSkipDuplicates - INSERT … ON CONFLICT DO NOTHING
  • CreateManyWriteableAutoIncId - Specify autoincrement values in batch
  • WritableAutoincField - Override autoincrement values
  • UpdateableId - Modify primary key values
  • NativeUpsert - Native UPSERT support
  • InsertReturning - INSERT … RETURNING
  • UpdateReturning - UPDATE … RETURNING
  • DeleteReturning - DELETE … RETURNING

Transaction Capabilities

  • SupportsTxIsolationReadUncommitted
  • SupportsTxIsolationReadCommitted
  • SupportsTxIsolationRepeatableRead
  • SupportsTxIsolationSerializable
  • SupportsTxIsolationSnapshot

Relation Modes

Connectors support different relation modes:

Foreign Keys Mode

Relations enforced by database constraints:
Referential actions:
  • Cascade - Delete/update cascades
  • Restrict - Prevent if references exist
  • NoAction - Like Restrict, but deferrable
  • SetNull - Set to NULL
  • SetDefault - Set to default value

Prisma Mode

Relations emulated by Prisma Client:
Prisma mode requires manual indexes on relation fields. The database won’t enforce referential integrity.

Native Type Validation

Connectors validate native type usage:
Example:

Connector-Specific Validations

Model Validation

Example validations:
  • Composite types only on MongoDB
  • Enum arrays only on supported databases
  • Multi-schema requirements

Enum Validation

Datasource Validation

Flavour System

Flavours group similar databases:
Flavours determine:
  • Query syntax variations
  • Type system similarities
  • Shared capabilities

Custom Connectors

You can implement custom connectors for new databases:

Constraint Scopes

Define where constraint names must be unique:

String Filters

Connectors can customize available string operations:

Testing Connectors

Test connector-specific behavior:

Next Steps

PSL Overview

Return to PSL architecture overview

Validation

Learn about the validation pipeline