sqlc icon indicating copy to clipboard operation
sqlc copied to clipboard

Args in sqlite ORDER BY not respected

Open bmpender opened this issue 11 months ago • 1 comments

Version

1.27.0

What happened?

Similarly to https://github.com/sqlc-dev/sqlc/issues/3113 The postgres generator supports variables in the ORDER BY, but sqlite does not.

CREATE TABLE authors (
  id int PRIMARY KEY
);
-- name: GetAuthor :one
SELECT * FROM authors
WHERE id = @id
ORDER BY @order_by;
const getAuthor = `-- name: GetAuthor :one
SELECT id FROM authors
WHERE id = ?1
ORDER BY @order_by
`

func (q *Queries) GetAuthor(ctx context.Context, id int64) (int64, error) {
	row := q.db.QueryRowContext(ctx, getAuthor, id)
	err := row.Scan(&id)
	return id, err
}

Playground link is to 1.25.0, but this is happening locally on 1.27.0 as well. Changing only the engine value to postgresql results in the expected output for postgresql. But the same is not reflected in sqlite.

Relevant log output


Database schema

CREATE TABLE authors (
  id int PRIMARY KEY
);

SQL queries

-- name: GetAuthor :one
SELECT * FROM authors
WHERE id = @id
ORDER BY @order_by;

Configuration

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

Playground URL

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

What operating system are you using?

macOS

What database engines are you using?

SQLite

What type of code are you generating?

Go

bmpender avatar Jan 14 '25 21:01 bmpender

Running into the same issue with 1.28.x on linux.

ilikeorangutans avatar Apr 14 '25 14:04 ilikeorangutans