diff --git a/PluralKit.Core/SchemaService.cs b/PluralKit.Core/SchemaService.cs index fa3b1c78..ba2f8bf5 100644 --- a/PluralKit.Core/SchemaService.cs +++ b/PluralKit.Core/SchemaService.cs @@ -57,6 +57,11 @@ namespace PluralKit { _logger.Information("Current schema version is {CurrentVersion}, applying migration {MigrationId}", currentVersion, migrationId); await conn.ExecuteAsync(migrationQuery, transaction: tx); tx.Commit(); + + // If the above migration creates new enum/composite types, we must tell Npgsql to reload the internal type caches + // This will propagate to every other connection as well, since it marks the global type mapper collection dirty. + // TODO: find a way to get around the cast to our internal tracker wrapper... this could break if that ever changes + ((PerformanceTrackingConnection) conn)._impl.ReloadTypes(); } } } \ No newline at end of file diff --git a/PluralKit.Core/Utils.cs b/PluralKit.Core/Utils.cs index 300f27bc..5b1126c8 100644 --- a/PluralKit.Core/Utils.cs +++ b/PluralKit.Core/Utils.cs @@ -451,7 +451,7 @@ namespace PluralKit public class PerformanceTrackingConnection: IDbConnection { // Simple delegation of everything. - private NpgsqlConnection _impl; + internal NpgsqlConnection _impl; private DbConnectionCountHolder _countHolder; private ILogger _logger;