Skip to content

Commit 0b86973

Browse files
committed
Merge branch 'issue-8146-drop-support-postgresql-92' into develop
2 parents d364fe9 + 6704f4e commit 0b86973

11 files changed

Lines changed: 54 additions & 21 deletions

src/Libraries/Nop.Data/DataProviders/LinqToDb/LinqToDBPostgreSQLDataProvider.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,11 @@ namespace Nop.Data.DataProviders.LinqToDB;
1111
/// </summary>
1212
public partial class LinqToDBPostgreSQLDataProvider : PostgreSQLDataProvider
1313
{
14-
public LinqToDBPostgreSQLDataProvider() : base(ProviderName.PostgreSQL92, PostgreSQLVersion.v92) { }
14+
public LinqToDBPostgreSQLDataProvider() : base(ProviderName.PostgreSQL15, PostgreSQLVersion.v15) { }
1515

1616
public override void SetParameter(DataConnection dataConnection, DbParameter parameter, string name, DbDataType dataType, object value)
1717
{
18-
19-
if (value is string && dataType.SystemType == typeof(string))
18+
if (value is string && dataType.SystemType == typeof(string))
2019
dataType = dataType.WithDbType("citext");
2120

2221
base.SetParameter(dataConnection, parameter, name, dataType, value);

src/Libraries/Nop.Data/DataProviders/PostgreSqlDataProvider.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ protected virtual string GetSequenceName<TEntity>(DataConnection dataConnection)
9292
public override async Task BulkInsertEntitiesAsync<TEntity>(IEnumerable<TEntity> entities)
9393
{
9494
using var dataContext = CreateDataConnection(LinqToDbDataProvider);
95-
await dataContext.BulkCopyAsync(new BulkCopyOptions() { KeepIdentity = true }, entities.RetrieveIdentity(dataContext, useSequenceName: true));
95+
await dataContext.BulkCopyAsync(entities.RetrieveIdentity(dataContext, useSequenceName: false));
9696
}
9797

9898
/// <summary>
@@ -103,7 +103,7 @@ public override async Task BulkInsertEntitiesAsync<TEntity>(IEnumerable<TEntity>
103103
public override void BulkInsertEntities<TEntity>(IEnumerable<TEntity> entities)
104104
{
105105
using var dataContext = CreateDataConnection(LinqToDbDataProvider);
106-
dataContext.BulkCopy(new BulkCopyOptions() { KeepIdentity = true }, entities.RetrieveIdentity(dataContext, useSequenceName: true));
106+
dataContext.BulkCopy(entities.RetrieveIdentity(dataContext, useSequenceName: false));
107107
}
108108

109109
/// <summary>

src/Libraries/Nop.Data/Extensions/FluentMigratorExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,15 +66,15 @@ private static void DefineByOwnType(string columnName, Type propType, CreateTabl
6666
public static IMigrationRunnerBuilder AddNopDbEngines(this IMigrationRunnerBuilder builder)
6767
{
6868
if (!DataSettingsManager.IsDatabaseInstalled())
69-
return builder.AddSqlServer().AddMySql5().AddPostgres92();
69+
return builder.AddSqlServer().AddMySql5().AddPostgres15_0();
7070

7171
var dataSettings = DataSettingsManager.LoadSettings();
7272

7373
return dataSettings.DataProvider switch
7474
{
7575
DataProviderType.MySql => builder.AddMySql5(),
7676
DataProviderType.SqlServer => builder.AddSqlServer(),
77-
DataProviderType.PostgreSQL => builder.AddPostgres92(),
77+
DataProviderType.PostgreSQL => builder.AddPostgres15_0(),
7878
_ => throw new NotImplementedException(),
7979
};
8080
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
using FluentMigrator.Builders.Create.Index;
2+
3+
namespace Nop.Data.Extensions;
4+
5+
/// <summary>
6+
/// Provides extension methods for configuring index options in database migrations.
7+
/// </summary>
8+
/// <remarks>This class contains extension methods that add provider-specific index options to migration
9+
/// expressions. These methods enable fluent configuration of indexes when using different database providers, such as
10+
/// SQL Server or PostgreSQL. The extensions are intended to be used within migration scripts to enhance index
11+
/// definitions in a provider-agnostic manner.</remarks>
12+
public static partial class IndexOptionsSyntaxExtensions
13+
{
14+
/// <summary>
15+
/// Specifies an additional column to be included in the index for covering queries, without being part of the index key
16+
/// </summary>
17+
/// <param name="expression">The index creation expression to extend with an included column</param>
18+
/// <param name="columnName">The name of the column to include in the index. Cannot be null or empty</param>
19+
/// <returns>The same index creation expression instance, allowing for fluent chaining of additional index configuration.</returns>
20+
public static ICreateIndexOnColumnSyntax Include(this ICreateIndexOnColumnSyntax expression, string columnName)
21+
{
22+
var dataSettings = DataSettingsManager.LoadSettings();
23+
24+
switch (dataSettings.DataProvider)
25+
{
26+
case DataProviderType.SqlServer:
27+
FluentMigrator.SqlServer.SqlServerExtensions.Include(expression, columnName);
28+
break;
29+
case DataProviderType.PostgreSQL:
30+
FluentMigrator.Postgres.PostgresExtensions.Include(expression, columnName);
31+
break;
32+
case DataProviderType.Unknown:
33+
case DataProviderType.MySql:
34+
default:
35+
break;
36+
}
37+
38+
return expression;
39+
}
40+
}

src/Libraries/Nop.Data/Mapping/FluentMigratorMetadataReader.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -120,14 +120,8 @@ public MappingAttribute[] GetAttributes(Type type, MemberInfo memberInfo)
120120
var result = new List<MappingAttribute>();
121121

122122
if (attribute is ColumnAttribute column)
123-
{
124123
result.Add(column);
125124

126-
//define sequence name for supported db engines to retrieve identity values (PostgreSQL)
127-
if (column.IsIdentity)
128-
result.Add(new SequenceNameAttribute($"{entityDescriptor.EntityName}_{column.Name}_seq"));
129-
}
130-
131125
return result.ToArray();
132126
}
133127

src/Libraries/Nop.Data/Migrations/Installation/Indexes.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using FluentMigrator;
2-
using FluentMigrator.SqlServer;
32
using Nop.Core.Domain.Catalog;
43
using Nop.Core.Domain.Common;
54
using Nop.Core.Domain.Customers;
@@ -12,6 +11,7 @@
1211
using Nop.Core.Domain.Seo;
1312
using Nop.Core.Domain.Stores;
1413
using Nop.Core.Domain.Topics;
14+
using Nop.Data.Extensions;
1515
using Nop.Data.Mapping;
1616

1717
namespace Nop.Data.Migrations.Installation;

src/Libraries/Nop.Data/Migrations/NopColumnsConvention.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public IColumnsExpression Apply(IColumnsExpression expression)
3030
columnDefinition.Type = null;
3131
columnDefinition.CustomType = "citext";
3232
}
33-
33+
3434
return expression;
3535
}
3636

src/Libraries/Nop.Data/Migrations/NopGeneratorAccessor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ protected virtual void ConfigureGenerator(IList<IMigrationGenerator> generators)
3434
{
3535
DataProviderType.SqlServer => FindGenerator(generators, GeneratorIdConstants.SqlServer),
3636
DataProviderType.MySql => FindGenerator(generators, GeneratorIdConstants.MySql5),
37-
DataProviderType.PostgreSQL => FindGenerator(generators, GeneratorIdConstants.PostgreSQL9_2),
37+
DataProviderType.PostgreSQL => FindGenerator(generators, GeneratorIdConstants.PostgreSQL15_0),
3838
_ => throw new InvalidOperationException(
3939
$@"A migration generator for Data provider type {dataSettings.DataProvider} couldn't be found.")
4040
};

src/Libraries/Nop.Data/Migrations/NopProcessorAccessor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ protected virtual void ConfigureProcessor(IList<IMigrationProcessor> processors)
3535
{
3636
DataProviderType.SqlServer => FindProcessor(processors, ProcessorIdConstants.SqlServer),
3737
DataProviderType.MySql => FindProcessor(processors, ProcessorIdConstants.MySql5),
38-
DataProviderType.PostgreSQL => FindProcessor(processors, ProcessorIdConstants.PostgreSQL92),
38+
DataProviderType.PostgreSQL => FindProcessor(processors, ProcessorIdConstants.PostgreSQL15_0),
3939
_ => throw new ProcessorFactoryNotFoundException(
4040
$@"A migration processor for Data provider type {dataSettings.DataProvider} couldn't be found.")
4141
};

src/Libraries/Nop.Data/Migrations/UpgradeTo490/AddIndexesMigration.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using FluentMigrator;
2-
using FluentMigrator.SqlServer;
32
using Nop.Core.Domain.Catalog;
43
using Nop.Core.Domain.Topics;
4+
using Nop.Data.Extensions;
55
using Nop.Data.Mapping;
66

77
namespace Nop.Data.Migrations.UpgradeTo490;

0 commit comments

Comments
 (0)