Skip to content

inconsistent types deduced #2233

@aeon3k

Description

@aeon3k

Describe the bug
I try to use twice the $4 argument but it doesn't work in this specific case

`
INSERT INTO public.users (username, email, provider, client_uid, client_id)
VALUES ($1, $2, $3, $4, (select public.clients.id from public.clients where public.clients.uid = $4 limit 1))
RETURNING id, uid`

err := r.pool.QueryRow(context.Background(), q, username, email, "own", "7Rp9WhF3PdrkhY1uZbXj8").Scan(&RetID, &RetUID)

In the DB schema public.clients.uid and client_uid are of the same type : character varying

Expected behavior
I expect to have the same type inference both times (varchar I presume)

Actual behavior
ERROR: inconsistent types deduced for parameter $4 at character 119 (SQLSTATE 42P08)
DETAIL: text versus character varying

Version
PostgreSQL 14.15 (Postgres.app) on aarch64-apple-darwin20.6.0, compiled by Apple clang version 12.0.5 (clang-1205.0.22.9), 64-bit
github.com/jackc/pgx/v5 v5.7.2
go version go1.23.3 darwin/amd64

Additional context

I've tried with a prepared statement in PG Admin and the same query works fine.

I found 2 solutions :

  • If I use WHERE uid = $5 LIMIT 1)) it works fine (I double the same argument)
  • If I use WHERE uid = $4::varchar LIMIT 1)) it works fine

In another similar insert query where I use twice the same $ argument it works fine. In this case it's an int64 (bigint in DB).

Thanks in advance for your help.
Cheers

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions