Skip to content

Joined column throws without explicit type #35

Description

@andzdroid

In the demo app, this code:

    ~SQL[select users.email, users.some_int, users_tokens.id from users left join users_tokens on users_tokens.user_id = users.id]
    |> Enum.to_list()
    |> IO.inspect()

Throws:

** (FunctionClauseError) no function clause matching in SQL.Adapters.Postgres.match/1    
    
    The following arguments were given to SQL.Adapters.Postgres.match/1:
    
        # 1
        [int8: :id, int8: :id]
    
    Attempted function clauses (showing 10 out of 35):
    
        defp match({:array, _type})
        defp match({:record, _types})
        defp match(:null)
        defp match(:"\"char\"")
        defp match(:numeric)
        defp match(:tsvector)
        defp match(:interval)
        defp match(:timetz)
        defp match(:txid_snapshot)
        defp match(:daterange)
        ...
        (25 clauses not shown)
    
    (sql 0.6.0-dev) lib/adapters/postgres.ex:797: SQL.Adapters.Postgres.match/1
    (sql 0.6.0-dev) lib/adapters/postgres.ex:590: SQL.Adapters.Postgres.block/3
    (sql 0.6.0-dev) lib/adapters/postgres.ex:589: SQL.Adapters.Postgres.block/3
    (sql 0.6.0-dev) lib/adapters/postgres.ex:432: SQL.Adapters.Postgres.stride/3
    (sql 0.6.0-dev) lib/adapters/postgres.ex:412: anonymous fn/3 in SQL.Adapters.Postgres.build_decoder/1
    (elixir 1.20.2) lib/enum.ex:2622: Enum."-reduce/3-lists^foldl/2-0-"/3
    (sql 0.6.0-dev) lib/adapters/postgres.ex:412: SQL.Adapters.Postgres.build_decoder/1
    (sql 0.6.0-dev) lib/adapters/postgres.ex:349: SQL.Adapters.Postgres.decoder/1
    (sql 0.6.0-dev) lib/adapters/postgres.ex:333: SQL.Adapters.Postgres.static/8
    (sql 0.6.0-dev) lib/sql.ex:256: SQL.build/4
    (sql 0.6.0-dev) expanding macro: SQL.sigil_SQL/2
    (my_app_web 0.1.0) lib/my_app_web/controllers/page_controller.ex:14: MyAppWeb.PageController.home/2
    (elixir 1.20.2) expanding macro: Kernel.|>/2
    (my_app_web 0.1.0) lib/my_app_web/controllers/page_controller.ex:15: MyAppWeb.PageController.home/2
    (elixir 1.20.2) expanding macro: Kernel.|>/2
    (my_app_web 0.1.0) lib/my_app_web/controllers/page_controller.ex:16: MyAppWeb.PageController.home/2

This doesn't happen if I use users_tokens.id::int

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions