-
Notifications
You must be signed in to change notification settings - Fork 18
embeds_many not supported #225
Copy link
Copy link
Open
Description
Hi! I really appreciate the library, but we're running into an issue where we can't used embedded documents. It seems those schemas aren't used in this library's tests and/or are commented out, so this might be something that's not supported or in development. Here's what we're seeing:
Here's our schema:
create table standards_usage (
standards Nested(
standard_id FixedString(32),
) default []
-- snip --
);Here's our model:
embeds_many(:standards, Spikey.StandardsUsage.Standard)and the embedded model look like this:
defmodule Standard do
use Ecto.Schema
@primary_key false
embedded_schema do
field :standard_id, Ch, type: "FixedString(32)"
# ...snip....
end
endWhen we insert, we get:
[error] ** (ArgumentError) unknown type: `:any`
(ecto_ch 0.3.1) lib/ecto/adapters/clickhouse/schema.ex:333: Ecto.Adapters.ClickHouse.Schema.ch_type_hint/1
(ecto_ch 0.3.1) lib/ecto/adapters/clickhouse/schema.ex:328: Ecto.Adapters.ClickHouse.Schema.ch_type_hint/1
(ecto_ch 0.3.1) lib/ecto/adapters/clickhouse/schema.ex:304: Ecto.Adapters.ClickHouse.Schema.remap_type/4
(elixir 1.17.3) lib/enum.ex:1703: Enum."-map/2-lists^map/1-1-"/2
(elixir 1.17.3) lib/enum.ex:1703: Enum."-map/2-lists^map/1-1-"/2
(ecto_ch 0.3.1) lib/ecto/adapters/clickhouse/schema.ex:44: Ecto.Adapters.ClickHouse.Schema.insert_rows/5
(ecto_ch 0.3.1) lib/ecto/adapters/clickhouse/schema.ex:33: Ecto.Adapters.ClickHouse.Schema.insert_all/8
(ecto 3.11.2) lib/ecto/repo/schema.ex:59: Ecto.Repo.Schema.do_insert_all/7
(spikey 5.4.513) lib/spikey/clickhouse_repo.ex:37: Spikey.ClickhouseRepo.safe_insert_all/3
(elixir 1.17.3) src/elixir.erl:386: :elixir.eval_external_handler/3
(stdlib 4.3.1.6) erl_eval.erl:748: :erl_eval.do_apply/7
(elixir 1.17.3) src/elixir.erl:364: :elixir.eval_forms/4
(elixir 1.17.3) lib/module/parallel_checker.ex:112: Module.ParallelChecker.verify/1
(iex 1.17.3) lib/iex/evaluator.ex:332: IEx.Evaluator.eval_and_inspect/3
(iex 1.17.3) lib/iex/evaluator.ex:306: IEx.Evaluator.eval_and_inspect_parsed/3
(iex 1.17.3) lib/iex/evaluator.ex:295: IEx.Evaluator.parse_eval_inspect/4
(iex 1.17.3) lib/iex/evaluator.ex:187: IEx.Evaluator.loop/1
(iex 1.17.3) lib/iex/evaluator.ex:32: IEx.Evaluator.init/5
(stdlib 4.3.1.6) proc_lib.erl:240: :proc_lib.init_p_do_apply/3I go to lib/ecto/adapters/clickhouse/schema.ex:333 and log the arguments:
defp remap_type(other, original, schema, field) do
IO.inspect(other, label: "other")
IO.inspect(original, label: "original")
IO.inspect(schema, label: "schema")
IO.inspect(field, label: "field")
ch_type = ch_type_hint(original)
# ...snip...
I get
other: {:map, :any}
original: {:parameterized, Ecto.Embedded,
%Ecto.Embedded{
cardinality: :many,
field: :standards,
owner: Spikey.StandardsUsage,
related: Spikey.StandardsUsage.Standard,
on_cast: nil,
on_replace: :raise,
unique: true,
ordered: true
}}
schema: Spikey.StandardsUsage
field: :standardsIt appears that the embeds_many is being converted to {:map, :any}. How can we add support for inserted embedded documents in this adapter?
Thanks in advance for any insight you have here!
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels