sqlc
sqlc copied to clipboard
sqlite WHERE ... AND x BETWEEN ? AND ? not generating the BETWEEN part as code
Version
1.29.0
What happened?
When the BETWEEN is preceeded by a WHERE, then the generation works as expected.
Adding the BETWEEN after an AND makes the generator completely ignore the parameters/placeholders used in that BETWEEN ? AND ?.
The bug is reproduced in this small repository: https://github.com/jxsl13/sqlc-sqlite-between-test
Execute make generate in order to trigger the generation again.
Relevant log output
Database schema
CREATE TABLE IF NOT EXISTS test (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
SQL queries
-- name: QueryBetweenBroken :many
SELECT id FROM test
WHERE name = ?
AND id BETWEEN ? AND ?;
-- name: QueryBetweenNamedBroken :many
SELECT id FROM test
WHERE name = :name
AND id BETWEEN :min AND :max;
-- name: QueryBetweenWorking :many
SELECT id FROM test
WHERE id BETWEEN ? AND ?
AND name = ?;
-- name: QueryBetweenNamedWorking :many
SELECT id FROM test
WHERE id BETWEEN :min AND :max
AND name = :name;
Configuration
version: "2"
sql:
- engine: "sqlite"
queries: [
"queries/test.sql"
]
schema: [
"migrations",
]
gen:
go:
sql_package: "database/sql"
package: "sqlc"
out: "sqlc"
overrides: []
emit_db_tags: true
emit_prepared_queries: true
emit_empty_slices: true
emit_enum_valid_method: true
emit_pointers_for_null_types: true
emit_all_enum_values: true
Playground URL
https://play.sqlc.dev/p/da0d89a7020cd56af50a28351fab6b34e584de4a03410f72c704eb687b323ee8
What operating system are you using?
macOS
What database engines are you using?
SQLite
What type of code are you generating?
Go