DO {{dollar_delimiter}} DECLARE current_not_null boolean; BEGIN SELECT a.attnotnull INTO current_not_null FROM pg_attribute a JOIN pg_class t ON t.oid = a.attrelid JOIN pg_namespace n ON n.oid = t.relnamespace WHERE n.nspname = {{quote .SchemaName}} AND t.relname = {{quote .TableName}} AND a.attname = {{quote .ColumnName}} AND a.attnum > 0 AND NOT a.attisdropped; IF current_not_null IS NOT NULL AND current_not_null IS DISTINCT FROM {{.NotNull}} THEN {{- if .NotNull }} ALTER TABLE {{qual_table .SchemaName .TableName}} ALTER COLUMN {{quote_ident .ColumnName}} SET NOT NULL; {{- else }} ALTER TABLE {{qual_table .SchemaName .TableName}} ALTER COLUMN {{quote_ident .ColumnName}} DROP NOT NULL; {{- end }} END IF; END; {{dollar_delimiter}};