Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,10 @@ public void GetColumns_DefaultValues_Succeeds()
const string booleanColumnName1 = "booleancolumn1";
const string int32ColumnName1 = "int32column1";
const string int64ColumnName1 = "int64column1";
const string int64ColumnName2 = "int64column2";
const string stringColumnName1 = "stringcolumn1";
const string binaryColumnName1 = "binarycolumn1";
const string doubleColumnName1 = "doublecolumn1";

// Should be extended by remaining types
Provider.AddTable(testTableName,
Expand All @@ -43,8 +45,10 @@ 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),
new Column(stringColumnName1, DbType.String, defaultValue: "Hello"),
new Column(binaryColumnName1, DbType.Binary, defaultValue: new byte[] { 12, 32, 34 })
new Column(binaryColumnName1, DbType.Binary, defaultValue: new byte[] { 12, 32, 34 }),
new Column(doubleColumnName1, DbType.Double, defaultValue: 84.874596565)
);

// Act
Expand All @@ -58,8 +62,10 @@ public void GetColumns_DefaultValues_Succeeds()
var booleanColumn1 = columns.Single(x => x.Name == booleanColumnName1);
var int32Column1 = columns.Single(x => x.Name == int32ColumnName1);
var int64Column1 = columns.Single(x => x.Name == int64ColumnName1);
var int64Column2 = columns.Single(x => x.Name == int64ColumnName2);
var stringColumn1 = columns.Single(x => x.Name == stringColumnName1);
var binarycolumn1 = columns.Single(x => x.Name == binaryColumnName1);
var doubleColumn1 = columns.Single(x => x.Name == doubleColumnName1);

Assert.That(dateTimeColumn1.DefaultValue, Is.EqualTo(dateTimeDefaultValue));
Assert.That(dateTimeColumn2.DefaultValue, Is.EqualTo(dateTimeDefaultValue));
Expand All @@ -70,6 +76,7 @@ public void GetColumns_DefaultValues_Succeeds()
Assert.That(int64Column1.DefaultValue, Is.EqualTo(88));
Assert.That(stringColumn1.DefaultValue, Is.EqualTo("Hello"));
Assert.That(binarycolumn1.DefaultValue, Is.EqualTo(new byte[] { 12, 32, 34 }));
Assert.That(doubleColumn1.DefaultValue, Is.EqualTo(84.874596565));
}

// 1 will coerce to true on inserts but not for default values in Postgre SQL - same for 0 to false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ public void GetColumns_DataTypeResolveSucceeds()
const string stringColumnName1 = "stringcolumn1";
const string stringColumnName2 = "stringcolumn2";
const string binaryColumnName1 = "binarycolumn";
const string doubleColumnName1 = "doublecolumn";

// Should be extended by remaining types
Provider.AddTable(testTableName,
Expand All @@ -36,7 +37,8 @@ public void GetColumns_DataTypeResolveSucceeds()
new Column(int64ColumnName1, DbType.Int64),
new Column(stringColumnName1, DbType.String),
new Column(stringColumnName2, DbType.String) { Size = 30 },
new Column(binaryColumnName1, DbType.Binary)
new Column(binaryColumnName1, DbType.Binary),
new Column(doubleColumnName1, DbType.Double)
);

// Act
Expand All @@ -52,6 +54,7 @@ public void GetColumns_DataTypeResolveSucceeds()
var stringColumn1 = columns.Single(x => x.Name == stringColumnName1);
var stringColumn2 = columns.Single(x => x.Name == stringColumnName2);
var binaryColumn1 = columns.Single(x => x.Name == binaryColumnName1);
var doubleColumn1 = columns.Single(x => x.Name == doubleColumnName1);


// Assert
Expand All @@ -70,5 +73,6 @@ public void GetColumns_DataTypeResolveSucceeds()
Assert.That(stringColumn2.Type, Is.EqualTo(DbType.String));
Assert.That(stringColumn2.Size, Is.EqualTo(30));
Assert.That(binaryColumn1.Type, Is.EqualTo(DbType.Binary));
Assert.That(doubleColumn1.Type, Is.EqualTo(DbType.Double));
}
}
4 changes: 4 additions & 0 deletions src/Migrator/Providers/Dialect.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
{
RegisterProperty(ColumnProperty.Null, "NULL");
RegisterProperty(ColumnProperty.NotNull, "NOT NULL");
RegisterProperty(ColumnProperty.Unique, "UNIQUE");

Check warning on line 23 in src/Migrator/Providers/Dialect.cs

View workflow job for this annotation

GitHub Actions / build

'ColumnProperty.Unique' is obsolete: 'Use method 'AddUniqueConstraint' instead. This is marked being obsolete since you cannot add a name for the constraint which makes it difficult to remove the constraint again.'
RegisterProperty(ColumnProperty.PrimaryKey, "PRIMARY KEY");
RegisterProperty(ColumnProperty.PrimaryKeyNonClustered, " NONCLUSTERED");
}
Expand Down Expand Up @@ -368,6 +368,10 @@
var convertedString = BitConverter.ToString(byteArray).Replace("-", "").ToLower();
defaultValue = $"'\\x{convertedString}'";
}
else if (defaultValue is double doubleValue)
{
defaultValue = Convert.ToString(doubleValue, CultureInfo.InvariantCulture);
}

return string.Format("DEFAULT {0}", defaultValue);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
using System.Data;
using System.Globalization;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Text.RegularExpressions;
using Index = DotNetProjects.Migrator.Framework.Index;
Expand Down Expand Up @@ -172,9 +173,9 @@
{
var oldColumn = GetColumnByName(table, column.Name);

var isUniqueSet = column.ColumnProperty.IsSet(ColumnProperty.Unique);

Check warning on line 176 in src/Migrator/Providers/Impl/PostgreSQL/PostgreSQLTransformationProvider.cs

View workflow job for this annotation

GitHub Actions / build

'ColumnProperty.Unique' is obsolete: 'Use method 'AddUniqueConstraint' instead. This is marked being obsolete since you cannot add a name for the constraint which makes it difficult to remove the constraint again.'

column.ColumnProperty = column.ColumnProperty.Clear(ColumnProperty.Unique);

Check warning on line 178 in src/Migrator/Providers/Impl/PostgreSQL/PostgreSQLTransformationProvider.cs

View workflow job for this annotation

GitHub Actions / build

'ColumnProperty.Unique' is obsolete: 'Use method 'AddUniqueConstraint' instead. This is marked being obsolete since you cannot add a name for the constraint which makes it difficult to remove the constraint again.'

var mapper = _dialect.GetAndMapColumnProperties(column);

Expand Down Expand Up @@ -295,6 +296,12 @@
dbType = DbType.DateTimeOffset;
precision = dateTimePrecision;
}
else if (dataTypeString == "double precision")
{
dbType = DbType.Double;
scale = numericScale;
precision = numericPrecision;
}
else if (dataTypeString == "timestamp" || dataTypeString == "timestamp without time zone")
{
// 6 is the maximum in PostgreSQL
Expand Down Expand Up @@ -403,12 +410,12 @@
}
else if (column.Type == DbType.Double || column.Type == DbType.Single)
{
column.DefaultValue = double.Parse(defaultValueString.ToString());
column.DefaultValue = double.Parse(defaultValueString.ToString(), CultureInfo.InvariantCulture);
}
else if (column.Type == DbType.Boolean)
{
var truthy = new[] { "1", "TRUE", "YES", "'true'", "on", "'on'", "t", "'t'" };
var falsy = new[] { "0", "FALSE", "NO", "'false'", "off", "'off'", "f", "'f'" };
var truthy = new[] { "TRUE", "YES", "'true'", "on", "'on'", "t", "'t'" };
var falsy = new[] { "FALSE", "NO", "'false'", "off", "'off'", "f", "'f'" };

if (truthy.Any(x => x.Equals(defaultValueString.Trim(), StringComparison.OrdinalIgnoreCase)))
{
Expand Down
Loading