sqlc icon indicating copy to clipboard operation
sqlc copied to clipboard

Renaming a materialized view causes `sqlc generate` to fail

Open JakeCapra opened this issue 1 year ago • 1 comments

Version

1.22.0

What happened?

I have to update the query that backs a materialized view.

To do this, I create a new temporary materialized view, view_2, drop the old view, view_1, and rename the temporary view to the old view's name.

I am renaming the temporary view using alter materialized view view_2 rename to view_1.

When I run sqlc generate, SQLC states that the view_1 does not exist, when in fact it does, it's just been renamed.

For context, I need to create a temporary materialized view, as dropping and recreating a materialized view will block all reads to the view. This is a two-step process, done in separate migrations. Postgres does not support updating a materialized view's query.

Relevant log output

# package db
query.sql:1:1: relation "view_1" does not exist

Database schema

create materialized view view_1 as select x.* from (values(1), (1), (1)) as x;

create materialized view view_2 as select x.* from (values(2), (2), (2)) as x;

drop materialized view view_1;

alter materialized view view_2 rename to view_1;

SQL queries

-- name: SelectView :many
select * from view_1;

Configuration

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

Playground URL

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

What operating system are you using?

macOS

What database engines are you using?

PostgreSQL

What type of code are you generating?

Go

JakeCapra avatar May 09 '24 19:05 JakeCapra

Note that this appears to impact all views (it's not specific to materialized views) - playground. I've hit this where one migration script renames a view, and then the subsequent one attempts to drop it (with the new name).

Tested with v1.26.0

MattBrittan avatar May 30 '24 01:05 MattBrittan

i can confirm that this bug is still active on v1.27.0

for create table - rename table - drop table it works just fine

https://play.sqlc.dev/p/84a2ae8f290ed9c8e79b73be43f6bae3e3658da1c38393c36ea6fc168f0923f2

but for create mv - rename mv - drop mv it says that the dropped mv is not found

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

i'll try to look into the codebase and see what i can do

swallowstalker avatar Nov 28 '24 02:11 swallowstalker