From 87cc0bfef64679c776de6331207166bafc4df219 Mon Sep 17 00:00:00 2001 From: JaBistDuNarrisch Date: Tue, 25 Nov 2025 16:11:47 +0100 Subject: [PATCH] Parse ''0'::bigint' in postgre --- ...onProvider_GetColumns_DefaultValueTests.cs | 3 +++ .../PostgreSQLTransformationProvider.cs | 20 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/Migrator.Tests/Providers/PostgreSQL/PostgreSQLTransformationProvider_GetColumns_DefaultValueTests.cs b/src/Migrator.Tests/Providers/PostgreSQL/PostgreSQLTransformationProvider_GetColumns_DefaultValueTests.cs index 1d11bf0b..20b1e2e1 100644 --- a/src/Migrator.Tests/Providers/PostgreSQL/PostgreSQLTransformationProvider_GetColumns_DefaultValueTests.cs +++ b/src/Migrator.Tests/Providers/PostgreSQL/PostgreSQLTransformationProvider_GetColumns_DefaultValueTests.cs @@ -70,6 +70,7 @@ public void GetColumns_DefaultValues_Succeeds() const string int32ColumnName1 = "int32column1"; const string int64ColumnName1 = "int64column1"; const string int64ColumnName2 = "int64column2"; + const string int64ColumnName3 = "int64column3"; const string stringColumnName1 = "stringcolumn1"; const string binaryColumnName1 = "binarycolumn1"; const string doubleColumnName1 = "doublecolumn1"; @@ -88,6 +89,8 @@ public void GetColumns_DefaultValues_Succeeds() new Column(int32ColumnName1, DbType.Int32, defaultValue: 43), new Column(int64ColumnName1, DbType.Int64, defaultValue: 88), new Column(int64ColumnName2, DbType.Int64, defaultValue: 0), + // converted in postgre to ''0'::bigint' + new Column(int64ColumnName3, DbType.Int64, defaultValue: "0"), new Column(stringColumnName1, DbType.String, defaultValue: "Hello"), new Column(binaryColumnName1, DbType.Binary, defaultValue: new byte[] { 12, 32, 34 }), new Column(doubleColumnName1, DbType.Double, defaultValue: 84.874596567) { Precision = 19, Scale = 10 } diff --git a/src/Migrator/Providers/Impl/PostgreSQL/PostgreSQLTransformationProvider.cs b/src/Migrator/Providers/Impl/PostgreSQL/PostgreSQLTransformationProvider.cs index a669f833..6af7bd9d 100644 --- a/src/Migrator/Providers/Impl/PostgreSQL/PostgreSQLTransformationProvider.cs +++ b/src/Migrator/Providers/Impl/PostgreSQL/PostgreSQLTransformationProvider.cs @@ -607,14 +607,29 @@ public override Column[] GetColumns(string table) { if (column.MigratorDbType == MigratorDbType.Int16 || column.MigratorDbType == MigratorDbType.Int32 || column.MigratorDbType == MigratorDbType.Int64) { + var match = stripSingleQuoteRegEx.Match(columnInfo.ColumnDefault); + if (match.Success) + { + columnInfo.ColumnDefault = match.Value; + } column.DefaultValue = long.Parse(columnInfo.ColumnDefault.ToString()); } else if (column.MigratorDbType == MigratorDbType.UInt16 || column.MigratorDbType == MigratorDbType.UInt32 || column.MigratorDbType == MigratorDbType.UInt64) { + var match = stripSingleQuoteRegEx.Match(columnInfo.ColumnDefault); + if (match.Success) + { + columnInfo.ColumnDefault = match.Value; + } column.DefaultValue = ulong.Parse(columnInfo.ColumnDefault.ToString()); } else if (column.MigratorDbType == MigratorDbType.Double || column.MigratorDbType == MigratorDbType.Single) { + var match = stripSingleQuoteRegEx.Match(columnInfo.ColumnDefault); + if (match.Success) + { + columnInfo.ColumnDefault = match.Value; + } column.DefaultValue = double.Parse(columnInfo.ColumnDefault.ToString(), CultureInfo.InvariantCulture); } else if (column.MigratorDbType == MigratorDbType.Interval) @@ -711,6 +726,11 @@ public override Column[] GetColumns(string table) } else if (column.MigratorDbType == MigratorDbType.Decimal) { + var match = stripSingleQuoteRegEx.Match(columnInfo.ColumnDefault); + if (match.Success) + { + columnInfo.ColumnDefault = match.Value; + } column.DefaultValue = decimal.Parse(columnInfo.ColumnDefault, CultureInfo.InvariantCulture); } else if (column.MigratorDbType == MigratorDbType.String)