Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Relation does not exist on update only #3852

Open
dimmerz92 opened this issue Feb 20, 2025 · 1 comment
Open

Relation does not exist on update only #3852

dimmerz92 opened this issue Feb 20, 2025 · 1 comment
Labels
📚 sqlite bug Something isn't working

Comments

@dimmerz92
Copy link

Version

1.28.0

What happened?

Expected sqlc generate to generate all queries.

I tried removing queries one by one and found that generating worked for everything except for UPDATE statements.

No issues in sqlc playground.

Relevant log output

# package models
sql/queries/users.sql:45:1: relation "Users" does not exist
sql/queries/users.sql:53:1: relation "Users" does not exist

Database schema

-- +goose Up
CREATE TABLE Users (
	ID INTEGER PRIMARY KEY,
	FullName TEXT NOT NULL,
	Email TEXT UNIQUE NOT NULL CHECK (Email LIKE '%_@%_.%__'),
	Password BLOB NOT NULL,
	CreatedAt INTEGER NOT NULL DEFAULT (unixepoch('now')),
	UpdatedAt INTEGER
);

-- +goose StatementBegin
CREATE TRIGGER UpdateUser
AFTER UPDATE ON Users
BEGIN
	UPDATE
		Users
	SET	
		UpdatedAt = unixepoch('now')
	WHERE
		ID = NEW.ID;
END;
-- +goose StatementEnd

-- +goose Down
DROP TABLE Users;

SQL queries

-- name: AddUser :one
INSERT INTO Users (
	FullName,
	Email,
	Password
)
VALUES (
	@FullName,
	@Email,
	@Password
)
RETURNING
	*;

-- name: CheckEmailExists :one
SELECT
	1
FROM
	Users
WHERE
	Email = @email;

-- name: GetUser :one
SELECT
	*
FROM
	Users
WHERE
	ID = @userID OR
	Email = @email;

-- name: GetPaginatedUsers :many
SELECT
	*
FROM
	Users
ORDER BY
	ID
LIMIT
	@limit
OFFSET
	@offset;

-- name: UpdateEmail :exec
UPDATE
	Users
SET
	Email = @email
WHERE
	ID = @userID;

-- name: UpdatePassword :exec
UPDATE
	Users
SET
	Password = @password
WHERE
	ID = @userID;

-- name: DeleteUser :exec
DELETE FROM
	Users
WHERE
	ID = @userID;

Configuration

version: 2
sql:
  - engine: sqlite
    queries: sql/queries
    schema: sql/schema
    gen:
      go:
        package: models
        out: models

Playground URL

https://play.sqlc.dev/p/0fa9a40b4593ee2b4dd899dd126591b50bf92961b5f13c41372b4eab4d0ea668

What operating system are you using?

macOS

What database engines are you using?

SQLite

What type of code are you generating?

Go

@dimmerz92 dimmerz92 added the bug Something isn't working label Feb 20, 2025
@dosubot dosubot bot added the 📚 sqlite label Feb 20, 2025
@dimmerz92
Copy link
Author

dimmerz92 commented Feb 21, 2025

Just to follow up on this one, I went back a version to v1.27.0 and it works as expected.

Seems v1.28.0 might have an issue with UPDATE statements?

Would also explain why there are no issues on the playground.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
📚 sqlite bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant