Skip to content

Commit

Permalink
fix hasValueColumn
Browse files Browse the repository at this point in the history
  • Loading branch information
olmobrutall committed Jul 29, 2019
1 parent 5dea481 commit 1a3bcc9
Showing 1 changed file with 22 additions and 18 deletions.
40 changes: 22 additions & 18 deletions Signum.Engine/Engine/SchemaSynchronizer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -559,15 +559,15 @@ private static SqlPreCommand AlterTableAddColumnDefault(ITable table, IColumn co
if (column.Nullable == IsNullable.Yes || column.Identity || column.Default != null || column is ImplementationColumn)
return SqlBuilder.AlterTableAddColumn(table, column);

var defaultValue = GetDefaultValue(table, column, rep, forNewColumn: true, forceDefaultValue: forceDefaultValue);
if (defaultValue == "force")
return SqlBuilder.AlterTableAddColumn(table, column);

if(column.Nullable == IsNullable.Forced)
if (column.Nullable == IsNullable.Forced)
{
var hasValueColumn = table.GetHasValueColumn(column);

if(hasValueColumn != null && hasValueFalse.Contains(hasValueColumn))
if (hasValueColumn != null && hasValueFalse.Contains(hasValueColumn))
return SqlBuilder.AlterTableAddColumn(table, column);

var defaultValue = GetDefaultValue(table, column, rep, forNewColumn: true, forceDefaultValue: forceDefaultValue);
if (defaultValue == "force")
return SqlBuilder.AlterTableAddColumn(table, column);

var where = hasValueColumn != null ? $"{hasValueColumn.Name} = 1" : "??";
Expand All @@ -578,21 +578,25 @@ private static SqlPreCommand AlterTableAddColumnDefault(ITable table, IColumn co
{column.Name} = {SqlBuilder.Quote(column.SqlDbType, defaultValue)}
WHERE {where}"))!;
}

if(column is FieldEmbedded.EmbeddedHasValueColumn hv && defaultValue == "0")
else
{
hasValueFalse.Add(hv);
}
var defaultValue = GetDefaultValue(table, column, rep, forNewColumn: true, forceDefaultValue: forceDefaultValue);
if (defaultValue == "force")
return SqlBuilder.AlterTableAddColumn(table, column);

var tempDefault = new SqlBuilder.DefaultConstraint(
columnName: column.Name,
name: "DF_TEMP_" + column.Name,
quotedDefinition : SqlBuilder.Quote(column.SqlDbType, defaultValue)
);
if (column is FieldEmbedded.EmbeddedHasValueColumn hv && defaultValue == "0")
hasValueFalse.Add(hv);

return SqlPreCommand.Combine(Spacing.Simple,
SqlBuilder.AlterTableAddColumn(table, column, tempDefault),
SqlBuilder.AlterTableDropConstraint(table.Name, tempDefault.Name))!;
var tempDefault = new SqlBuilder.DefaultConstraint(
columnName: column.Name,
name: "DF_TEMP_" + column.Name,
quotedDefinition: SqlBuilder.Quote(column.SqlDbType, defaultValue)
);

return SqlPreCommand.Combine(Spacing.Simple,
SqlBuilder.AlterTableAddColumn(table, column, tempDefault),
SqlBuilder.AlterTableDropConstraint(table.Name, tempDefault.Name))!;
}
}

private static SqlPreCommand AlterTableAddColumnDefaultZero(ITable table, IColumn column)
Expand Down

0 comments on commit 1a3bcc9

Please sign in to comment.