Skip to content

Commit 6ee09bc

Browse files
Don't add pk on remove migration (#571)
1 parent f271527 commit 6ee09bc

6 files changed

Lines changed: 35 additions & 5 deletions

File tree

lib/ecto/adapters/myxql/connection.ex

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1086,7 +1086,8 @@ if Code.ensure_loaded?(MyXQL) do
10861086

10871087
defp pk_definitions(columns, prefix) do
10881088
pks =
1089-
for {_, name, _, opts} <- columns,
1089+
for {action, name, _, opts} <- columns,
1090+
action != :remove,
10901091
opts[:primary_key],
10911092
do: name
10921093

lib/ecto/adapters/postgres/connection.ex

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1340,7 +1340,8 @@ if Code.ensure_loaded?(Postgrex) do
13401340

13411341
defp pk_definition(columns, prefix) do
13421342
pks =
1343-
for {_, name, _, opts} <- columns,
1343+
for {action, name, _, opts} <- columns,
1344+
action != :remove,
13441345
opts[:primary_key],
13451346
do: name
13461347

lib/ecto/adapters/tds/connection.ex

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1307,7 +1307,8 @@ if Code.ensure_loaded?(Tds) do
13071307

13081308
defp pk_definitions(columns, prefix) do
13091309
pks =
1310-
for {_, name, _, opts} <- columns,
1310+
for {action, name, _, opts} <- columns,
1311+
action != :remove,
13111312
opts[:primary_key],
13121313
do: name
13131314

@@ -1435,6 +1436,9 @@ if Code.ensure_loaded?(Tds) do
14351436
[statement_prefix, "DROP COLUMN ", quote_name(name), "; "]
14361437
end
14371438

1439+
defp column_change(statement_prefix, _table, {:remove, name, _type, _opts}),
1440+
do: [statement_prefix, "DROP COLUMN ", quote_name(name)]
1441+
14381442
defp column_change(
14391443
statement_prefix,
14401444
%{name: table, prefix: prefix},

test/ecto/adapters/myxql_test.exs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2009,8 +2009,9 @@ defmodule Ecto.Adapters.MyXQLTest do
20092009
]
20102010
end
20112011

2012-
test "alter table with primary key" do
2013-
alter = {:alter, table(:posts), [{:add, :my_pk, :serial, [primary_key: true]}]}
2012+
test "alter table add/3 with primary key" do
2013+
alter =
2014+
{:alter, table(:posts), [{:add, :my_pk, :serial, [primary_key: true]}]}
20142015

20152016
assert execute_ddl(alter) == [
20162017
"""
@@ -2022,6 +2023,13 @@ defmodule Ecto.Adapters.MyXQLTest do
20222023
]
20232024
end
20242025

2026+
test "alter table remove/3 with primary key" do
2027+
alter =
2028+
{:alter, table(:posts), [{:remove, :my_pk, :serial, [primary_key: true]}]}
2029+
2030+
assert execute_ddl(alter) == ["ALTER TABLE `posts` DROP `my_pk`" |> remove_newlines]
2031+
end
2032+
20252033
test "alter table with invalid reference opts" do
20262034
alter =
20272035
{:alter, table(:posts),

test/ecto/adapters/postgres_test.exs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2542,6 +2542,15 @@ defmodule Ecto.Adapters.PostgresTest do
25422542
]
25432543
end
25442544

2545+
test "alter table remove/3 with primary key" do
2546+
alter =
2547+
{:alter, table(:posts), [{:remove, :my_pk, :serial, [primary_key: true]}]}
2548+
2549+
assert execute_ddl(alter) == [
2550+
"ALTER TABLE \"posts\" DROP COLUMN \"my_pk\"" |> remove_newlines
2551+
]
2552+
end
2553+
25452554
test "create index" do
25462555
create = {:create, index(:posts, [:category_id, :permalink])}
25472556

test/ecto/adapters/tds_test.exs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1646,6 +1646,13 @@ defmodule Ecto.Adapters.TdsTest do
16461646
]
16471647
end
16481648

1649+
test "alter table remove/3 with primary key" do
1650+
alter =
1651+
{:alter, table(:posts), [{:remove, :my_pk, :serial, [primary_key: true]}]}
1652+
1653+
assert execute_ddl(alter) == ["ALTER TABLE [posts] DROP COLUMN [my_pk]" |> remove_newlines]
1654+
end
1655+
16491656
test "alter table with invalid reference opts" do
16501657
alter =
16511658
{:alter, table(:posts),

0 commit comments

Comments
 (0)