Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit 28fd5bc

Browse files
committed
Implement AlterColumn for PostgreSQL
1 parent b758af1 commit 28fd5bc

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

src/ServiceStack.OrmLite.PostgreSQL/PostgreSQLDialectProvider.cs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,31 @@ public override string ToExecuteProcedureStatement(object objWithProperties)
333333
return sql;
334334
}
335335

336+
public override string ToAlterColumnStatement(Type modelType, FieldDefinition fieldDef)
337+
{
338+
var columnDefinition = GetColumnDefinition(fieldDef);
339+
var modelName = GetQuotedTableName(GetModel(modelType));
340+
341+
var parts = columnDefinition.SplitOnFirst(' ');
342+
var columnName = parts[0];
343+
var columnType = parts[1];
344+
345+
var notNull = columnDefinition.Contains("NOT NULL");
346+
347+
var nullLiteral = notNull ? " NOT NULL" : " NULL";
348+
columnType = columnType.Replace(nullLiteral, "");
349+
350+
var nullSql = notNull
351+
? "SET NOT NULL"
352+
: "DROP NOT NULL";
353+
354+
var sql = $"ALTER TABLE {modelName}\n"
355+
+ $" ALTER COLUMN {columnName} TYPE {columnType},\n"
356+
+ $" ALTER COLUMN {columnName} {nullSql}";
357+
358+
return sql;
359+
}
360+
336361
public override string GetQuotedTableName(string tableName, string schema = null)
337362
{
338363
return !Normalize || ReservedWords.Contains(tableName) || (schema != null && ReservedWords.Contains(schema))

0 commit comments

Comments
 (0)