Skip to content

Support FULL OUTER JOIN in sqlite #1919

Closed
@tom5760

Description

@tom5760

Version

1.15.0

What happened?

According to the SQLite docs, a few more JOIN types should be supported. The given output is when testing FULL OUTER JOIN, but similar errors occur with the following joins:

  • RIGHT OUTER
  • FULL OUTER
  • RIGHT
  • FULL

Relevant log output

sqlc generate failed.

line 14:0 no viable alternative at input ';\n\n-- name: GetAuthor :one\nSELECT * FROM authors AS a\nFULL'
line 14:0 extraneous input 'FULL' expecting {<EOF>, ';', ALTER_, ANALYZE_, ATTACH_, BEGIN_, COMMIT_, CREATE_, DEFAULT_, DELETE_, DETACH_, DROP_, END_, EXPLAIN_, INSERT_, PRAGMA_, REINDEX_, RELEASE_, REPLACE_, ROLLBACK_, SAVEPOINT_, SELECT_, UPDATE_, VACUUM_, VALUES_, WITH_}
line 16:23 extraneous input '<EOF>' expecting {';', ALTER_, ANALYZE_, ATTACH_, BEGIN_, COMMIT_, CREATE_, DEFAULT_, DELETE_, DETACH_, DROP_, END_, EXPLAIN_, INSERT_, PRAGMA_, REINDEX_, RELEASE_, REPLACE_, ROLLBACK_, SAVEPOINT_, SELECT_, UPDATE_, VACUUM_, VALUES_, WITH_}
# package db
query.sql:1:1: extraneous input '<EOF>' expecting {';', ALTER_, ANALYZE_, ATTACH_, BEGIN_, COMMIT_, CREATE_, DEFAULT_, DELETE_, DETACH_, DROP_, END_, EXPLAIN_, INSERT_, PRAGMA_, REINDEX_, RELEASE_, REPLACE_, ROLLBACK_, SAVEPOINT_, SELECT_, UPDATE_, VACUUM_, VALUES_, WITH_}

Database schema

-- Example queries for sqlc
CREATE TABLE authors (
  id   INTEGER PRIMARY KEY,
  name text      NOT NULL
);

CREATE TABLE books (
  id INTEGER PRIMARY KEY,
  title text NOT NULL
);

SQL queries

-- name: GetAuthor :one
SELECT * FROM authors AS a
FULL OUTER JOIN books AS b
 ON a.id = b.id
WHERE a.id = ? LIMIT 1;

Configuration

{
  "version": "1",
  "packages": [
    {
      "path": "db",
      "engine": "sqlite",
      "schema": "query.sql",
      "queries": "query.sql"
    }
  ]
}

Playground URL

https://play.sqlc.dev/p/29a4f777cc58b4f036e17743259f22fb2629b8b85efd631ae67cce672939a0c2

What operating system are you using?

Linux

What database engines are you using?

sqlite

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