Hi,
for PostgreSQL (9.6), is it possible to use an index_expression for an insert (Repo.insert) as conflict_target option?
Because if I’m not mistaken, Ecto (?) expects a column name and quote it.
changeset = Foo.changeset(%Foo{...}, foo_params)
case changeset |> Repo.insert(on_conflict: [set: [name: changeset.changes.name]], conflict_target: "lower(name)") do
So it doesn’t work:
ERROR 42703 (undefined_column): column “LOWER(name)” does not exist
(same for conflict_target: :"LOWER(name)"
) Reading mix phoenix.server
’s output, I can read ON CONFLICT ("LOWER(name)")
, I guess the quotes changes the meaning from expression to identifier and, sadly, PostgreSQL doesn’t allow the use of index’s name in CONFLICT
clause.
How should I procede to use an index_expression (if it is possible)?
PS: I can’t use citext
Thanks.