sqlc icon indicating copy to clipboard operation
sqlc copied to clipboard

sqlite WHERE ... AND x BETWEEN ? AND ? not generating the BETWEEN part as code

Open jxsl13 opened this issue 6 months ago • 0 comments

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

jxsl13 avatar May 23 '25 15:05 jxsl13