sqlc-dev/sqlc

sqlc.slice incompatible with prepared queries

eloff opened this issue · 1 comments

eloff commented

Version

1.27.0

What happened?

I understand that slice can't be used with prepared queries, but it seems that if you enable prepared queries with emit_prepared_queries: true it will try to prepare queries that use sqlc.slice anyway, and this will obviously fail. Ideally any queries that can be prepared, should still be prepared, and those that can't, won't be. I was a bit surprised to find that doesn't seem to be the behavior, and that if you use sqlc.slice the only option today seems to be disabling emit_prepared_queries.

Relevant log output

error preparing query DeleteTasks: near "?": syntax error

Database schema

No response

SQL queries

-- name: DeleteTasks :many
-- DeleteTasks deletes all tasks with the ids and returns them.
delete
from tasks
where id in sqlc.slice(ids) returning *;

Configuration

No response

Playground URL

No response

What operating system are you using?

Linux

What database engines are you using?

SQLite

What type of code are you generating?

Go

I'd add onto this that it'd be nice to selectively prepare queries in general. When beginning a batch insert transaction, for example, I only want to prepare a subset of my queries on the Tx.