Skip to content

Distinct JSON_ARRAYAGG causes syntax error with MySQL #3676

Open
@dalobstah

Description

@dalobstah

Version

1.27.0

What happened?

MySQL and MariaDB support using DISTINCT for columns in JSON_ARRAYAGG to ensure unique values. GROUP_CONCAT also supports this syntax which seems to work as expected in sqlc. When I try using JSON_ARRAYAGG(DISTINCT <column>) however, I get a syntax error on valid SQL.

Syntax for JSON_ARRAYAGG from the MariaDB docs:

JSON_ARRAYAGG([DISTINCT] expr
             [ORDER BY {unsigned_integer | col_name | expr}
                 [ASC | DESC] [,col_name ...]]
             [LIMIT {[offset,] row_count | row_count OFFSET offset}])

Relevant log output

# package issue
query.sql:2:30: syntax error near "DISTINCT `id`) FROM `ids`;" "

Database schema

CREATE TABLE ids (
  id   BIGINT
);

SQL queries

-- name: GetIDs :one
SELECT JSON_ARRAYAGG(DISTINCT `id`) FROM `ids`;

Configuration

version: "2"
sql:
  - engine: "mysql"
    queries: "query.sql"
    schema: "schema.sql"
    gen:
      go:
        package: "issue"
        out: "issue"

Playground URL

https://play.sqlc.dev/p/8d89731835ebee2564e1351fe6354772a4047787fa675975e5c318ad965fc632

What operating system are you using?

Windows, macOS

What database engines are you using?

MySQL

What type of code are you generating?

Go

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions