Skip to content

Commit ef86983

Browse files
authored
Bug 432: Allow for non-ASCII characters in scripts (#501)
This had been working for some databases, but not all. * Added failing tests * Fixed character set for MariaDb * Fixed SQL server, fixed ScriptRunErrors * Removed a lot of unused propertied in ISyntax * Fixed error ScriptRunErrorsTable -> ScripRunErrors in unit tests * Turned of parallelization of test runs in Sqlite tests - had some spurious issues there. And, it's not a valid use case to run multiple migrations at once against new databases (I thinkg) * Cleaned up the Test setup/teardown for Sqlite
1 parent 7c44654 commit ef86983

File tree

51 files changed

+678
-247
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+678
-247
lines changed

src/grate.core/Infrastructure/ISyntax.cs

-9
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,6 @@ public interface ISyntax
88
string StatementSeparatorRegex { get; }
99
string CurrentDatabase { get; }
1010
string ListDatabases { get; }
11-
string VarcharType { get; }
12-
string TextType { get; }
13-
string BigintType { get; }
14-
string BooleanType { get; }
15-
string CreateSchema(string schemaName);
1611
string CreateDatabase(string databaseName, string? password);
1712
/// <summary>
1813
/// Syntax to drop a database if it exists, and do nothing if not.
@@ -23,9 +18,5 @@ public interface ISyntax
2318
string TableWithSchema(string schemaName, string tableName);
2419
string LimitN(string sql, int n);
2520
string ReturnId { get; }
26-
string TimestampType { get; }
27-
string Quote(string text);
28-
string PrimaryKeyColumn(string columnName);
29-
string PrimaryKeyConstraint(string tableName, string column);
3021
string ResetIdentity(string schemaName, string tableName, long value);
3122
}

src/grate.core/Migration/AnsiSqlDatabase.cs

+10-5
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,7 @@ INSERT INTO {VersionTable}
343343
newVersion,
344344
entryDate = DateTime.UtcNow,
345345
modifiedDate = DateTime.UtcNow,
346-
enteredBy = ClaimsPrincipal.Current?.Identity?.Name ?? Environment.UserName,
346+
enteredBy = GetUserName(),
347347
status = MigrationStatus.InProgress
348348
});
349349
}
@@ -365,6 +365,11 @@ INSERT INTO {VersionTable}
365365
return versionId;
366366
}
367367

368+
protected string GetUserName()
369+
{
370+
return ClaimsPrincipal.Current?.Identity?.Name ?? Environment.UserName;
371+
}
372+
368373
public virtual async Task ChangeVersionStatus(string status, long versionId)
369374
{
370375
var updateSql = Parameterize($@"
@@ -532,7 +537,7 @@ INSERT INTO {ScriptsRunTable}
532537
scriptRun.Add(nameof(hash), hash);
533538
scriptRun.Add(nameof(runOnce), Bool(runOnce));
534539
scriptRun.Add(Now, DateTime.UtcNow);
535-
scriptRun.Add(User, Environment.UserName);
540+
scriptRun.Add(User, GetUserName());
536541

537542
if (Config!.DeferWritingToRunTables)
538543
{
@@ -564,7 +569,7 @@ INSERT INTO {ScriptsRunErrorsTable}
564569
scriptRunErrors.Add(nameof(errorSql), errorSql, DbType.String);
565570
scriptRunErrors.Add(nameof(errorMessage), errorMessage, DbType.String);
566571
scriptRunErrors.Add(Now, DateTime.UtcNow);
567-
scriptRunErrors.Add(User, Environment.UserName);
572+
scriptRunErrors.Add(User, GetUserName());
568573

569574
if (Config!.DeferWritingToRunTables)
570575
{
@@ -655,7 +660,7 @@ public async ValueTask DisposeAsync()
655660
if (_deferredWrites.Any())
656661
{
657662
await OpenActiveConnection();
658-
foreach (var deferredWrite in _deferredWrites)
663+
foreach (var deferredWrite in _deferredWrites.ToArray())
659664
{
660665
await deferredWrite(ActiveConnection);
661666
}
@@ -664,7 +669,7 @@ public async ValueTask DisposeAsync()
664669
await CloseConnection();
665670
await CloseAdminConnection();
666671
await Close(ActiveConnection);
667-
672+
668673
GC.SuppressFinalize(this);
669674
}
670675

src/grate.core/Migration/GrateMigrator.cs

+8-4
Original file line numberDiff line numberDiff line change
@@ -515,6 +515,7 @@ public static string ChangeDropFolder(GrateConfiguration config, string? server,
515515
.Append(':')
516516
.Append(',')
517517
.Append('+')
518+
.Append('/')
518519
.ToArray();
519520

520521
private static string RemoveInvalidPathChars(string? path)
@@ -557,18 +558,21 @@ private async Task RunInternalMigrations(string internalFolderName)
557558
// First, make sure we have created the "internal meta tables"
558559
// (GrateScriptsRun, GrateScriptsRunErrors, GrateVersion), which are used to track
559560
// changes to the grate internal tables (ScriptsRun, ScriptsRunErrors, Version).
560-
await using (var migrator1 = this.WithConfiguration(await GetBootstrapInternalGrateConfiguration(internalFolderName)))
561+
await using (var migrator1 =
562+
this.WithConfiguration(await GetBootstrapInternalGrateConfiguration(internalFolderName)))
561563
{
562564
await migrator1.Migrate();
563565
}
564566

565567
// Then, make sure we have created the "grate tables" for the database we are migrating.
566568
// (ScriptsRun, ScriptsRunErrors, Version). Turtles all the way down!
567-
await using var migrator2 = this.WithConfiguration(await GetInternalGrateConfiguration(internalFolderName));
568-
await migrator2.Migrate();
569+
await using (var migrator2 =
570+
this.WithConfiguration(await GetInternalGrateConfiguration(internalFolderName)))
571+
{
572+
await migrator2.Migrate();
573+
}
569574
}
570575

571-
572576
private async Task<GrateConfiguration> GetBootstrapInternalGrateConfiguration(string internalFolderName) =>
573577
await GetInternalGrateConfiguration(internalFolderName, "grate-internal") with
574578
{
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
ALTER TABLE {{SchemaName}}_{{ScriptsRunTable}}
2+
MODIFY script_name varchar(255) CHARACTER SET utf8mb4 NULL,
3+
MODIFY text_of_script text CHARACTER SET utf8mb4 NULL,
4+
MODIFY entered_by varchar(50) CHARACTER SET utf8mb4 NULL
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
ALTER TABLE {{SchemaName}}_{{ScriptsRunErrorsTable}}
2+
MODIFY repository_path varchar(255) CHARACTER SET utf8mb4 NULL,
3+
MODIFY version varchar(50) CHARACTER SET utf8mb4 NULL,
4+
MODIFY script_name varchar(255) CHARACTER SET utf8mb4 NULL,
5+
MODIFY text_of_script text CHARACTER SET utf8mb4 NULL,
6+
MODIFY erroneous_part_of_script text CHARACTER SET utf8mb4 NULL,
7+
MODIFY error_message text CHARACTER SET utf8mb4 NULL,
8+
MODIFY entered_by varchar(50) CHARACTER SET utf8mb4 NULL
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
ALTER TABLE {{SchemaName}}_{{VersionTable}}
2+
MODIFY repository_path varchar(255) CHARACTER SET utf8mb4 NULL,
3+
MODIFY version varchar(50) CHARACTER SET utf8mb4 NULL,
4+
MODIFY entered_by varchar(50) CHARACTER SET utf8mb4 NULL,
5+
MODIFY status varchar(50) CHARACTER SET utf8mb4 NULL

src/grate.mariadb/Infrastructure/MariaDbSyntax.cs

-9
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,10 @@ public string StatementSeparatorRegex
1717

1818
public string CurrentDatabase => "SELECT DATABASE()";
1919
public string ListDatabases => "SHOW DATABASES";
20-
public string VarcharType => "varchar";
21-
public string TextType => "text";
22-
public string BigintType => "BIGINT";
23-
public string BooleanType => "boolean";
24-
public string PrimaryKeyColumn(string columnName) => $"{columnName} bigint NOT NULL AUTO_INCREMENT";
25-
public string CreateSchema(string schemaName) => @$"CREATE SCHEMA {schemaName}";
2620
public string CreateDatabase(string databaseName, string? _) => @$"CREATE DATABASE {databaseName}";
2721
public string DropDatabase(string databaseName) => @$"DROP DATABASE IF EXISTS `{databaseName}`;";
2822
public string TableWithSchema(string schemaName, string tableName) => $"{schemaName}_{tableName}";
2923
public string ReturnId => ";SELECT LAST_INSERT_ID();";
30-
public string TimestampType => "timestamp";
31-
public string Quote(string text) => $"`{text}`";
32-
public string PrimaryKeyConstraint(string tableName, string column) => $",\nCONSTRAINT PK_{tableName}_{column} PRIMARY KEY ({column})";
3324
public string LimitN(string sql, int n) => sql + "\nLIMIT 1";
3425

3526
// any idea to reset identity without using value is welcome.

src/grate.oracle/Infrastructure/OracleSyntax.cs

-10
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,6 @@ public string StatementSeparatorRegex
1818

1919
public string CurrentDatabase => "select user from dual";
2020
public string ListDatabases => "SELECT * FROM all_users";
21-
public string VarcharType => "VARCHAR2";
22-
public string TextType => "CLOB";
23-
public string BigintType => "NUMBER(19)";
24-
public string BooleanType => "CHAR(1)";
25-
public string PrimaryKeyColumn(string columnName) => $"{columnName} NUMBER(19) GENERATED ALWAYS AS IDENTITY NOT NULL PRIMARY KEY ";
26-
27-
public string CreateSchema(string schemaName) => throw new NotImplementedException("Create schema is not implemented for Oracle DB");
2821

2922
public string CreateDatabase(string userName, string? password) => $@"
3023
begin
@@ -48,9 +41,6 @@ FOR ln_cur IN (SELECT sid, serial# FROM v$session WHERE username = usr)
4841
";
4942
public string TableWithSchema(string schemaName, string tableName) => $"{schemaName}_{tableName}";
5043
public string ReturnId => "RETURNING id;";
51-
public string TimestampType => "timestamp";
52-
public string Quote(string text) => $"\"{text}\"";
53-
public string PrimaryKeyConstraint(string tableName, string column) => "";
5444
public string LimitN(string sql, int n) => sql + $"\nLIMIT {n}";
5545
public string ResetIdentity(string schemaName, string tableName, long _) => $"ALTER TABLE {TableWithSchema(schemaName, tableName)} MODIFY id NUMBER(19) GENERATED BY DEFAULT ON NULL AS IDENTITY (START WITH LIMIT VALUE)";
5646
}

src/grate.oracle/Migration/OracleDatabase.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ INSERT INTO {VersionTable}
109109
newVersion,
110110
entryDate = DateTime.UtcNow,
111111
modifiedDate = DateTime.UtcNow,
112-
enteredBy = ClaimsPrincipal.Current?.Identity?.Name ?? Environment.UserName,
112+
enteredBy = GetUserName(),
113113
status = MigrationStatus.InProgress
114114
};
115115
var dynParams = new DynamicParameters(parameters);

src/grate.postgresql/Infrastructure/PostgreSqlSyntax.cs

-9
Original file line numberDiff line numberDiff line change
@@ -19,21 +19,12 @@ public string StatementSeparatorRegex
1919

2020
public string CurrentDatabase => "SELECT current_database()";
2121
public string ListDatabases => "SELECT datname FROM pg_database";
22-
public string VarcharType => "varchar";
23-
public string TextType => "text";
24-
public string BigintType => "BIGINT";
25-
public string BooleanType => "boolean";
26-
public string PrimaryKeyColumn(string columnName) => $"{columnName} bigint GENERATED ALWAYS AS IDENTITY NOT NULL";
27-
public string CreateSchema(string schemaName) => @$"CREATE SCHEMA ""{schemaName}"";";
2822
public string CreateDatabase(string databaseName, string? _) => @$"CREATE DATABASE ""{databaseName}""";
2923
public string DropDatabase(string databaseName) => @$"select pg_terminate_backend(pid) from pg_stat_activity where datname='{databaseName}';
3024
COMMIT;
3125
DROP DATABASE IF EXISTS ""{databaseName}"";";
3226
public string TableWithSchema(string schemaName, string tableName) => $"\"{schemaName}\".\"{tableName}\"";
3327
public string ReturnId => "RETURNING id;";
34-
public string TimestampType => "timestamp";
35-
public string Quote(string text) => $"\"{text}\"";
36-
public string PrimaryKeyConstraint(string tableName, string column) => $",\nCONSTRAINT PK_{tableName}_{column} PRIMARY KEY ({column})";
3728
public string LimitN(string sql, int n) => sql + $"\nLIMIT {n}";
3829
public string ResetIdentity(string schemaName, string tableName, long _) => @$"SELECT setval(pg_get_serial_sequence('{TableWithSchema(schemaName, tableName)}', 'id'), coalesce(MAX(id), 1)) from {TableWithSchema(schemaName, tableName)};";
3930
}

src/grate.sqlite/Infrastructure/SqliteSyntax.cs

-9
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,6 @@ public string StatementSeparatorRegex
1717

1818
public string CurrentDatabase => "SELECT name FROM pragma_database_list ORDER BY seq DESC LIMIT 1";
1919
public string ListDatabases => "select name from pragma_database_list";
20-
public string VarcharType => "nvarchar";
21-
public string TextType => "ntext";
22-
public string BigintType => "BIGINT";
23-
public string BooleanType => "bit";
24-
public string PrimaryKeyColumn(string columnName) => $"{columnName} INTEGER PRIMARY KEY AUTOINCREMENT";
25-
public string CreateSchema(string schemaName) => @$"CREATE SCHEMA ""{schemaName}"";";
2620

2721
// The "Create database" is a no-op with Sqlite, so we just provide a dummy SQL that just selects current DB
2822
public string CreateDatabase(string databaseName, string? _) => CurrentDatabase;
@@ -32,9 +26,6 @@ public string StatementSeparatorRegex
3226

3327
public string TableWithSchema(string schemaName, string tableName) => $"{schemaName}_{tableName}";
3428
public string ReturnId => "returning id;";
35-
public string TimestampType => "datetime";
36-
public string Quote(string text) => $"\"{text}\"";
37-
public string PrimaryKeyConstraint(string tableName, string column) => "";
3829
public string LimitN(string sql, int n) => sql + $"\nLIMIT {n}";
3930
public string ResetIdentity(string schemaName, string tableName, long _) => @$"UPDATE `sqlite_sequence`
4031
SET `seq` = (SELECT MAX(`id`) FROM '{TableWithSchema(schemaName, tableName)}')
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ALTER TABLE {{SchemaName}}.{{ScriptsRunTable}}
2+
ALTER COLUMN text_of_script NVARCHAR(MAX) NULL
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
ALTER TABLE {{SchemaName}}.{{ScriptsRunErrorsTable}}
2+
ALTER COLUMN text_of_script NVARCHAR(MAX) NULL
3+
4+
ALTER TABLE {{SchemaName}}.{{ScriptsRunErrorsTable}}
5+
ALTER COLUMN erroneous_part_of_script NVARCHAR(MAX) NULL
6+
7+
ALTER TABLE {{SchemaName}}.{{ScriptsRunErrorsTable}}
8+
ALTER COLUMN error_message NVARCHAR(MAX) NULL

src/grate.sqlserver/Infrastructure/SqlServerSyntax.cs

-9
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,6 @@ public string StatementSeparatorRegex
1717

1818
public string CurrentDatabase => "SELECT DB_NAME()";
1919
public string ListDatabases => "SELECT name FROM sys.databases";
20-
public string VarcharType => "nvarchar";
21-
public string TextType => "ntext";
22-
public string BigintType => "BIGINT";
23-
public string BooleanType => "bit";
24-
public string PrimaryKeyColumn(string columnName) => $"{columnName} bigint IDENTITY(1,1) NOT NULL";
25-
public string CreateSchema(string schemaName) => @$"CREATE SCHEMA ""{schemaName}"";";
2620
public string CreateDatabase(string databaseName, string? _) => @$"CREATE DATABASE ""{databaseName}""";
2721
public string DropDatabase(string databaseName) => @$"USE master;
2822
IF EXISTS(SELECT * FROM sysdatabases WHERE [name] = '{databaseName}')
@@ -32,9 +26,6 @@ DROP DATABASE [{databaseName}]
3226
END";
3327
public string TableWithSchema(string schemaName, string tableName) => $"{schemaName}.[{tableName}]";
3428
public string ReturnId => ";SELECT @@IDENTITY";
35-
public string TimestampType => "datetime";
36-
public string Quote(string text) => $"\"{text}\"";
37-
public string PrimaryKeyConstraint(string tableName, string column) => $",\nCONSTRAINT PK_{tableName}_{column} PRIMARY KEY CLUSTERED ({column})";
3829
public string LimitN(string sql, int n) => $"TOP {n}\n" + sql;
3930
public string ResetIdentity(string schemaName, string tableName, long _) => @$"DECLARE @max INT SELECT @max=ISNULL(max([id]),0) from [{schemaName}].[{tableName}]; DBCC CHECKIDENT ('[{schemaName}].[{tableName}]', RESEED, @max );";
4031
}

unittests/MariaDB/DependencyInjection/ServiceCollectionTest.cs

+5-1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,8 @@ namespace MariaDB.DependencyInjection;
55
[Collection(nameof(MariaDbGrateTestContext))]
66
// ReSharper disable once UnusedType.Global
77
public class ServiceCollectionTest(MariaDbGrateTestContext context)
8-
: TestCommon.DependencyInjection.GrateServiceCollectionTest(context);
8+
: TestCommon.DependencyInjection.GrateServiceCollectionTest(context)
9+
{
10+
protected override string VarcharType => "varchar";
11+
protected override string BigintType => "BIGINT";
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
using MariaDB.TestInfrastructure;
2+
3+
namespace MariaDB.Reported_issues.Non_ascii_characters_in_script;
4+
5+
[Collection(nameof(MariaDbGrateTestContext))]
6+
// ReSharper disable once InconsistentNaming
7+
public class ScriptsRunErrorsTable(MariaDbGrateTestContext testContext, ITestOutputHelper testOutput)
8+
: TestCommon.Generic.Reported_issues.Non_ascii_characters_in_script.ScriptsRunErrorsTable(testContext, testOutput);
9+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
using MariaDB.TestInfrastructure;
2+
3+
namespace MariaDB.Reported_issues.Non_ascii_characters_in_script;
4+
5+
[Collection(nameof(MariaDbGrateTestContext))]
6+
// ReSharper disable once InconsistentNaming
7+
public class ScriptsRunTable(MariaDbGrateTestContext testContext, ITestOutputHelper testOutput)
8+
: TestCommon.Generic.Reported_issues.Non_ascii_characters_in_script.ScriptsRunTable(testContext, testOutput);
9+

unittests/MariaDB/TestInfrastructure/MariaDbGrateTestContext.cs

+3-10
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,10 @@ namespace MariaDB.TestInfrastructure;
1111
[CollectionDefinition(nameof(MariaDbGrateTestContext))]
1212
public class MariaDbTestCollection : ICollectionFixture<MariaDbGrateTestContext>;
1313

14-
public class MariaDbGrateTestContext : GrateTestContext
14+
public class MariaDbGrateTestContext(
15+
IGrateMigrator migrator,
16+
ITestDatabase testDatabase) : GrateTestContext(migrator, testDatabase)
1517
{
16-
public MariaDbGrateTestContext(
17-
IGrateMigrator migrator,
18-
ITestDatabase testDatabase) : base(testDatabase)
19-
{
20-
Migrator = migrator;
21-
}
22-
23-
public override IGrateMigrator Migrator { get; }
24-
2518
public override IDbConnection GetDbConnection(string connectionString) => new MySqlConnection(connectionString);
2619

2720
public override ISyntax Syntax { get; } = new MariaDbSyntax();
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
1-
using grate.Infrastructure;
2-
using grate.Oracle.Migration;
3-
using Oracle.TestInfrastructure;
1+
using Oracle.TestInfrastructure;
42
using TestCommon.DependencyInjection;
5-
using TestCommon.TestInfrastructure;
63

74
namespace Oracle.DependencyInjection;
85

96
[Collection(nameof(OracleGrateTestContext))]
107
public class ServiceCollectionTest(OracleGrateTestContext testContext)
118
: GrateServiceCollectionTest(testContext)
129
{
13-
protected virtual Type DatabaseType => typeof(OracleDatabase);
14-
protected virtual ISyntax Syntax => OracleDatabase.Syntax;
10+
protected override string VarcharType => "VARCHAR2";
11+
protected override string BigintType => "NUMBER(19)";
1512
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
using Oracle.TestInfrastructure;
2+
3+
namespace Oracle.Reported_issues.Non_ascii_characters_in_script;
4+
5+
[Collection(nameof(OracleGrateTestContext))]
6+
// ReSharper disable once InconsistentNaming
7+
public class ScriptsRunErrorsTable(OracleGrateTestContext testContext, ITestOutputHelper testOutput)
8+
: TestCommon.Generic.Reported_issues.Non_ascii_characters_in_script.ScriptsRunErrorsTable(testContext, testOutput);
9+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+

2+
using Oracle.TestInfrastructure;
3+
4+
namespace Oracle.Reported_issues.Non_ascii_characters_in_script;
5+
6+
[Collection(nameof(OracleGrateTestContext))]
7+
// ReSharper disable once InconsistentNaming
8+
public class ScriptsRunTable(OracleGrateTestContext testContext, ITestOutputHelper testOutput)
9+
: TestCommon.Generic.Reported_issues.Non_ascii_characters_in_script.ScriptsRunTable(testContext, testOutput);
10+

unittests/Oracle/TestInfrastructure/OracleGrateTestContext.cs

+4-10
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,10 @@ namespace Oracle.TestInfrastructure;
1313
[CollectionDefinition(nameof(OracleGrateTestContext))]
1414
public class OracleTestCollection : ICollectionFixture<OracleGrateTestContext>;
1515

16-
public class OracleGrateTestContext : GrateTestContext
16+
public class OracleGrateTestContext(
17+
IGrateMigrator migrator,
18+
ITestDatabase testDatabase) : GrateTestContext(migrator, testDatabase)
1719
{
18-
public OracleGrateTestContext(
19-
IGrateMigrator grateMigrator,
20-
ITestDatabase testDatabase) : base(testDatabase)
21-
{
22-
Migrator = grateMigrator;
23-
}
24-
25-
public override IGrateMigrator Migrator { get; }
26-
2720
// public string DockerCommand(string serverName, string adminPassword) =>
2821
// $"run -d --name {serverName} -p 1521 -e ORACLE_ENABLE_XDB=true -e ORACLE_PWD={adminPassword} -P container-registry.oracle.com/database/express:21.3.0-xe";
2922

@@ -44,4 +37,5 @@ public OracleGrateTestContext(
4437
public override string ExpectedVersionPrefix => "Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production";
4538
public override bool SupportsCreateDatabase => true;
4639
public override bool SupportsSchemas => false;
40+
4741
}

unittests/PostgreSQL/DependencyInjection/ServiceCollectionTest.cs

+5-1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,8 @@ namespace PostgreSQL.DependencyInjection;
55

66
[Collection(nameof(PostgreSqlGrateTestContext))]
77
public class ServiceCollectionTest(PostgreSqlGrateTestContext context)
8-
: TestCommon.DependencyInjection.GrateServiceCollectionTest(context);
8+
: TestCommon.DependencyInjection.GrateServiceCollectionTest(context)
9+
{
10+
protected override string VarcharType => "varchar";
11+
protected override string BigintType => "BIGINT";
12+
}

0 commit comments

Comments
 (0)