Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Multiple identical slices in one query are not handled properly #3556

Open
leodeim opened this issue Aug 21, 2024 · 1 comment
Open

Multiple identical slices in one query are not handled properly #3556

leodeim opened this issue Aug 21, 2024 · 1 comment

Comments

@leodeim
Copy link

leodeim commented Aug 21, 2024

Version

1.27.0

What happened?

Consider this query:

SELECT * 
FROM table1 AS t1 JOIN table2 AS t2
ON t1.fk = t2.fk
AND t1.fk IN (sqlc.slice('IDs')) OR t2.fk IN (sqlc.slice('IDs'));

The code which is generated for it have only one line for handling slice:

query = strings.Replace(query, "/*SLICE:IDs*/?", strings.Repeat(",?", len(ids))[1:], 1)

strings.Replace is called with last argument 1, so only one of two slices is handled.

Playground URL

https://play.sqlc.dev/p/69da31c00c3be911650469be15b8b0d12fb5f99d7be81e34e9208471bf0488fe

What operating system are you using?

Windows

What database engines are you using?

SQLite

What type of code are you generating?

Go

@leodeim leodeim added the bug Something isn't working label Aug 21, 2024
@leodeim
Copy link
Author

leodeim commented Aug 21, 2024

The only workaround I found is to name arguments of slices differently, but provide same values twice from the caller:

SELECT * 
FROM table1 AS t1 JOIN table2 AS t2
ON t1.fk = t2.fk
AND t1.fk IN (sqlc.slice('IDs1')) OR t2.fk IN (sqlc.slice('IDs2'));

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant