circles-learning-labs / ecto_adapters_dynamodb

DynamoDB adapter for Elixir's Ecto Database layer.
Apache License 2.0
64 stars 14 forks source link

Not compatible with Ecto 3.9 #153

Open drewble opened 1 year ago

drewble commented 1 year ago

ecto_adapters_dynamodb 3.3.3 specifies a dependency on ecto_sql ~> 3.6 but I could not get it to work with ecto_sql 3.9.2 and ecto 3.9.4.

On ecto.migrate it would fail with this error

** (Protocol.UndefinedError) protocol Jason.Encoder not implemented for {:schema_migration, true} of type Tuple, Jason.Encoder protocol must always be explicitly implemented. This protocol is implemented for the following type(s): Airbrake.Payload, Any, Atom, BitString, Date, DateTime, Decimal, Ecto.Association.NotLoaded, Ecto.Schema.Metadata, Float, Integer, Jason.Fragment, Jason.OrderedObject, List, Map, NaiveDateTime, Time
    (jason 1.4.0) lib/jason.ex:164: Jason.encode!/2
    (ex_aws 2.4.1) lib/ex_aws/request.ex:17: ExAws.Request.request/6
    (ex_aws 2.4.1) lib/ex_aws/operation/json.ex:50: ExAws.Operation.ExAws.Operation.JSON.perform/2
    (ex_aws 2.4.1) lib/ex_aws.ex:85: ExAws.request!/2
    (ecto_adapters_dynamodb 3.3.3) lib/ecto_adapters_dynamodb/query.ex:803: Ecto.Adapters.DynamoDB.Query.fetch_recursive/6
    (ecto_adapters_dynamodb 3.3.3) lib/ecto_adapters_dynamodb.ex:268: Ecto.Adapters.DynamoDB.execute/5
    (ecto 3.9.4) lib/ecto/repo/queryable.ex:229: Ecto.Repo.Queryable.execute/4
    (ecto 3.9.4) lib/ecto/repo/queryable.ex:19: Ecto.Repo.Queryable.all/3

Downgrading to ecto_sql 3.8.3 and ecto 3.8.4 resolved this issue. ecto_adapters_dynamodb should either resolve this issue with ecto_sql 3.9.4 or specify a dependency ecto_sql >= 3.6.0 and < 3.9.0.

bernardd commented 1 year ago

Thanks @drewble, and sorry for the delay getting back to you. I was kind of passingly aware of this issue, but hadn't really dug into it to check exactly what version limitations need to be imposed. I'll add those when I got a chance.