From b752ff0404823afd94404be97041939aeb69635d Mon Sep 17 00:00:00 2001 From: aitva Date: Wed, 24 Feb 2021 16:39:13 +0100 Subject: [PATCH] endtoend: add tests for INTERSECT and EXCEPT --- .../select_union/mysql/go/query.sql.go | 58 +++++++++++++++++++ .../testdata/select_union/mysql/query.sql | 10 ++++ .../select_union/postgres/go/query.sql.go | 58 +++++++++++++++++++ .../testdata/select_union/postgres/query.sql | 10 ++++ 4 files changed, 136 insertions(+) diff --git a/internal/endtoend/testdata/select_union/mysql/go/query.sql.go b/internal/endtoend/testdata/select_union/mysql/go/query.sql.go index ead8e54b3b..99e77d6795 100644 --- a/internal/endtoend/testdata/select_union/mysql/go/query.sql.go +++ b/internal/endtoend/testdata/select_union/mysql/go/query.sql.go @@ -7,6 +7,64 @@ import ( "context" ) +const selectExcept = `-- name: SelectExcept :many +SELECT a, b FROM foo +EXCEPT +SELECT a, b FROM foo +` + +func (q *Queries) SelectExcept(ctx context.Context) ([]Foo, error) { + rows, err := q.db.QueryContext(ctx, selectExcept) + if err != nil { + return nil, err + } + defer rows.Close() + var items []Foo + for rows.Next() { + var i Foo + if err := rows.Scan(&i.A, &i.B); err != nil { + return nil, err + } + items = append(items, i) + } + if err := rows.Close(); err != nil { + return nil, err + } + if err := rows.Err(); err != nil { + return nil, err + } + return items, nil +} + +const selectIntersect = `-- name: SelectIntersect :many +SELECT a, b FROM foo +INTERSECT +SELECT a, b FROM foo +` + +func (q *Queries) SelectIntersect(ctx context.Context) ([]Foo, error) { + rows, err := q.db.QueryContext(ctx, selectIntersect) + if err != nil { + return nil, err + } + defer rows.Close() + var items []Foo + for rows.Next() { + var i Foo + if err := rows.Scan(&i.A, &i.B); err != nil { + return nil, err + } + items = append(items, i) + } + if err := rows.Close(); err != nil { + return nil, err + } + if err := rows.Err(); err != nil { + return nil, err + } + return items, nil +} + const selectUnion = `-- name: SelectUnion :many SELECT a, b FROM foo UNION diff --git a/internal/endtoend/testdata/select_union/mysql/query.sql b/internal/endtoend/testdata/select_union/mysql/query.sql index f2ba3ec51b..80dd8cc4f2 100644 --- a/internal/endtoend/testdata/select_union/mysql/query.sql +++ b/internal/endtoend/testdata/select_union/mysql/query.sql @@ -4,3 +4,13 @@ CREATE TABLE foo (a text, b text); SELECT * FROM foo UNION SELECT * FROM foo; + +-- name: SelectExcept :many +SELECT * FROM foo +EXCEPT +SELECT * FROM foo; + +-- name: SelectIntersect :many +SELECT * FROM foo +INTERSECT +SELECT * FROM foo; diff --git a/internal/endtoend/testdata/select_union/postgres/go/query.sql.go b/internal/endtoend/testdata/select_union/postgres/go/query.sql.go index ead8e54b3b..99e77d6795 100644 --- a/internal/endtoend/testdata/select_union/postgres/go/query.sql.go +++ b/internal/endtoend/testdata/select_union/postgres/go/query.sql.go @@ -7,6 +7,64 @@ import ( "context" ) +const selectExcept = `-- name: SelectExcept :many +SELECT a, b FROM foo +EXCEPT +SELECT a, b FROM foo +` + +func (q *Queries) SelectExcept(ctx context.Context) ([]Foo, error) { + rows, err := q.db.QueryContext(ctx, selectExcept) + if err != nil { + return nil, err + } + defer rows.Close() + var items []Foo + for rows.Next() { + var i Foo + if err := rows.Scan(&i.A, &i.B); err != nil { + return nil, err + } + items = append(items, i) + } + if err := rows.Close(); err != nil { + return nil, err + } + if err := rows.Err(); err != nil { + return nil, err + } + return items, nil +} + +const selectIntersect = `-- name: SelectIntersect :many +SELECT a, b FROM foo +INTERSECT +SELECT a, b FROM foo +` + +func (q *Queries) SelectIntersect(ctx context.Context) ([]Foo, error) { + rows, err := q.db.QueryContext(ctx, selectIntersect) + if err != nil { + return nil, err + } + defer rows.Close() + var items []Foo + for rows.Next() { + var i Foo + if err := rows.Scan(&i.A, &i.B); err != nil { + return nil, err + } + items = append(items, i) + } + if err := rows.Close(); err != nil { + return nil, err + } + if err := rows.Err(); err != nil { + return nil, err + } + return items, nil +} + const selectUnion = `-- name: SelectUnion :many SELECT a, b FROM foo UNION diff --git a/internal/endtoend/testdata/select_union/postgres/query.sql b/internal/endtoend/testdata/select_union/postgres/query.sql index f2ba3ec51b..80dd8cc4f2 100644 --- a/internal/endtoend/testdata/select_union/postgres/query.sql +++ b/internal/endtoend/testdata/select_union/postgres/query.sql @@ -4,3 +4,13 @@ CREATE TABLE foo (a text, b text); SELECT * FROM foo UNION SELECT * FROM foo; + +-- name: SelectExcept :many +SELECT * FROM foo +EXCEPT +SELECT * FROM foo; + +-- name: SelectIntersect :many +SELECT * FROM foo +INTERSECT +SELECT * FROM foo;