sqlc-dev / sqlc

Generate type-safe code from SQL
https://sqlc.dev
MIT License
13.51k stars 810 forks source link

sqlc completely skips over arguments in complex queries with no error messages #3665

Open maddsua opened 1 month ago

maddsua commented 1 month ago

Version

1.27.0

What happened?

The generated output lacks any query parameters which yields it completely useless. All the sqlc.arg() are ignored with no errors raised. When switched annotation to batchexec the following error is encountered: :batch* commands require parameters

Relevant log output

No response

Database schema

CREATE TABLE usage (
  id   BIGSERIAL PRIMARY KEY,
  created_at timestampz not null,
  user_id bigint not null,
  delta  bigint
);

SQL queries

-- name: UpdateUsage :exec
merge into usage using (
    select usage.id
    from (select 1) as dummy
        left join usage
        on user_id = sqlc.arg(user_id)
            and created_at >= now() - interval '1 hour'
    order by id desc
    limit 1
) ref on usage.id = ref.id
when matched then
    update
    set delta = delta + sqlc.arg(delta)
when not matched then
    insert (user_id, delta)
    values (sqlc.arg(user_id), sqlc.arg(delta));

Configuration

{
  "version": "2",
  "sql": [{
    "schema": "schema.sql",
    "queries": "query.sql",
    "engine": "postgresql",
    "gen": {
      "go": {
        "out": "db"
      }
    }
  }]
}

Playground URL

https://play.sqlc.dev/p/b0b005a26fe2667afe52dfe4d229d18d4cde8e426ac83cbf4786ec050749875e

What operating system are you using?

Windows

What database engines are you using?

PostgreSQL

What type of code are you generating?

Go