Skip to content

sqlcのエラー

   
-- name: ListEventUsers :many
SELECT eu.id, eu.eventid, eu.userid, eu.`status`, u.name
FROM (
    SELECT id, eventid, userid, `status`,
    row_number() OVER (PARTITION BY eventid, userid ORDER BY id DESC) AS num
    FROM eventUser
) eu, user u
WHERE eu.eventid = ?
  AND eu.num = 1
  AND eu.userid = u.id
ORDER BY eu.id;

これが

$ sqlc generate
# package sqlc
db/query.sql:14:1: table alias "eu" does not exist

adminerで実行したらちゃんと思った結果得られるのに。

Table alias not working · Issue #1385 · kyleconroy/sqlcのissueだとv1.10.0だと使えていたっぽい。

$ sqlc version
v1.14.0
$ go install github.com/kyleconroy/sqlc/cmd/sqlc@v1.10.0
$ sqlc version
v1.10.0

エラー消えて生成できるようになった。

たしかに1.11.0のReleasesfix(compiler): Validate table alias references by timstudd · Pull Request #1283 · kyleconroy/sqlcがある。