From b0f4a825ddd75241fc2aa44c89c9d94d3f8b544c Mon Sep 17 00:00:00 2001 From: Kyle Conroy Date: Sat, 9 Jul 2022 21:00:46 -0700 Subject: [PATCH 1/2] chore: Add tests for quoting columns --- internal/compiler/compile_test.go | 38 ------------------- .../select_star_quoted/mysql/go/db.go | 31 +++++++++++++++ .../select_star_quoted/mysql/go/models.go | 13 +++++++ .../select_star_quoted/mysql/go/query.sql.go | 38 +++++++++++++++++++ .../select_star_quoted/mysql/query.sql | 2 + .../select_star_quoted/mysql/schema.sql | 3 ++ .../select_star_quoted/mysql/sqlc.json | 12 ++++++ .../postgresql/pgx/go/db.go | 32 ++++++++++++++++ .../postgresql/pgx/go/models.go | 13 +++++++ .../postgresql/pgx/go/query.sql.go | 35 +++++++++++++++++ .../postgresql/pgx/query.sql | 2 + .../postgresql/pgx/schema.sql | 3 ++ .../postgresql/pgx/sqlc.json | 13 +++++++ .../postgresql/stdlib/go/db.go | 31 +++++++++++++++ .../postgresql/stdlib/go/models.go | 13 +++++++ .../postgresql/stdlib/go/query.sql.go | 38 +++++++++++++++++++ .../postgresql/stdlib/query.sql | 2 + .../postgresql/stdlib/schema.sql | 3 ++ .../postgresql/stdlib/sqlc.json | 12 ++++++ 19 files changed, 296 insertions(+), 38 deletions(-) delete mode 100644 internal/compiler/compile_test.go create mode 100644 internal/endtoend/testdata/select_star_quoted/mysql/go/db.go create mode 100644 internal/endtoend/testdata/select_star_quoted/mysql/go/models.go create mode 100644 internal/endtoend/testdata/select_star_quoted/mysql/go/query.sql.go create mode 100644 internal/endtoend/testdata/select_star_quoted/mysql/query.sql create mode 100644 internal/endtoend/testdata/select_star_quoted/mysql/schema.sql create mode 100644 internal/endtoend/testdata/select_star_quoted/mysql/sqlc.json create mode 100644 internal/endtoend/testdata/select_star_quoted/postgresql/pgx/go/db.go create mode 100644 internal/endtoend/testdata/select_star_quoted/postgresql/pgx/go/models.go create mode 100644 internal/endtoend/testdata/select_star_quoted/postgresql/pgx/go/query.sql.go create mode 100644 internal/endtoend/testdata/select_star_quoted/postgresql/pgx/query.sql create mode 100644 internal/endtoend/testdata/select_star_quoted/postgresql/pgx/schema.sql create mode 100644 internal/endtoend/testdata/select_star_quoted/postgresql/pgx/sqlc.json create mode 100644 internal/endtoend/testdata/select_star_quoted/postgresql/stdlib/go/db.go create mode 100644 internal/endtoend/testdata/select_star_quoted/postgresql/stdlib/go/models.go create mode 100644 internal/endtoend/testdata/select_star_quoted/postgresql/stdlib/go/query.sql.go create mode 100644 internal/endtoend/testdata/select_star_quoted/postgresql/stdlib/query.sql create mode 100644 internal/endtoend/testdata/select_star_quoted/postgresql/stdlib/schema.sql create mode 100644 internal/endtoend/testdata/select_star_quoted/postgresql/stdlib/sqlc.json diff --git a/internal/compiler/compile_test.go b/internal/compiler/compile_test.go deleted file mode 100644 index 4ede452c16..0000000000 --- a/internal/compiler/compile_test.go +++ /dev/null @@ -1,38 +0,0 @@ -package compiler - -import ( - "testing" - - "github.com/kyleconroy/sqlc/internal/config" -) - -func TestQuoteIdent(t *testing.T) { - type test struct { - engine config.Engine - in string - want string - } - tests := []test{ - {config.EnginePostgreSQL, "age", "age"}, - {config.EnginePostgreSQL, "Age", `"Age"`}, - {config.EnginePostgreSQL, "CamelCase", `"CamelCase"`}, - {config.EngineMySQL, "CamelCase", "CamelCase"}, - // keywords - {config.EnginePostgreSQL, "select", `"select"`}, - {config.EngineMySQL, "select", "`select`"}, - } - - for _, spec := range tests { - compiler := NewCompiler(config.SQL{ - Engine: spec.engine, - }, config.CombinedSettings{}) - - t.Run(spec.in, func(t *testing.T) { - got := compiler.quoteIdent(spec.in) - if got != spec.want { - t.Error("quoteIdent: engine " + string(spec.engine) + " failed for " + spec.in + ", want " + spec.want + ", got " + got) - } - }) - } - -} diff --git a/internal/endtoend/testdata/select_star_quoted/mysql/go/db.go b/internal/endtoend/testdata/select_star_quoted/mysql/go/db.go new file mode 100644 index 0000000000..19557a6a5a --- /dev/null +++ b/internal/endtoend/testdata/select_star_quoted/mysql/go/db.go @@ -0,0 +1,31 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.14.0 + +package querytest + +import ( + "context" + "database/sql" +) + +type DBTX interface { + ExecContext(context.Context, string, ...interface{}) (sql.Result, error) + PrepareContext(context.Context, string) (*sql.Stmt, error) + QueryContext(context.Context, string, ...interface{}) (*sql.Rows, error) + QueryRowContext(context.Context, string, ...interface{}) *sql.Row +} + +func New(db DBTX) *Queries { + return &Queries{db: db} +} + +type Queries struct { + db DBTX +} + +func (q *Queries) WithTx(tx *sql.Tx) *Queries { + return &Queries{ + db: tx, + } +} diff --git a/internal/endtoend/testdata/select_star_quoted/mysql/go/models.go b/internal/endtoend/testdata/select_star_quoted/mysql/go/models.go new file mode 100644 index 0000000000..eb9a158146 --- /dev/null +++ b/internal/endtoend/testdata/select_star_quoted/mysql/go/models.go @@ -0,0 +1,13 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.14.0 + +package querytest + +import ( + "database/sql" +) + +type User struct { + Camelcase sql.NullString +} diff --git a/internal/endtoend/testdata/select_star_quoted/mysql/go/query.sql.go b/internal/endtoend/testdata/select_star_quoted/mysql/go/query.sql.go new file mode 100644 index 0000000000..23d3244a59 --- /dev/null +++ b/internal/endtoend/testdata/select_star_quoted/mysql/go/query.sql.go @@ -0,0 +1,38 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.14.0 +// source: query.sql + +package querytest + +import ( + "context" + "database/sql" +) + +const getAll = `-- name: GetAll :many +SELECT camelcase FROM users +` + +func (q *Queries) GetAll(ctx context.Context) ([]sql.NullString, error) { + rows, err := q.db.QueryContext(ctx, getAll) + if err != nil { + return nil, err + } + defer rows.Close() + var items []sql.NullString + for rows.Next() { + var camelcase sql.NullString + if err := rows.Scan(&camelcase); err != nil { + return nil, err + } + items = append(items, camelcase) + } + if err := rows.Close(); err != nil { + return nil, err + } + if err := rows.Err(); err != nil { + return nil, err + } + return items, nil +} diff --git a/internal/endtoend/testdata/select_star_quoted/mysql/query.sql b/internal/endtoend/testdata/select_star_quoted/mysql/query.sql new file mode 100644 index 0000000000..e2f85e2a9a --- /dev/null +++ b/internal/endtoend/testdata/select_star_quoted/mysql/query.sql @@ -0,0 +1,2 @@ +/* name: GetAll :many */ +SELECT * FROM users; diff --git a/internal/endtoend/testdata/select_star_quoted/mysql/schema.sql b/internal/endtoend/testdata/select_star_quoted/mysql/schema.sql new file mode 100644 index 0000000000..8adc3dd61c --- /dev/null +++ b/internal/endtoend/testdata/select_star_quoted/mysql/schema.sql @@ -0,0 +1,3 @@ +CREATE TABLE users ( + `CamelCase` varchar(255) +) ENGINE=InnoDB; diff --git a/internal/endtoend/testdata/select_star_quoted/mysql/sqlc.json b/internal/endtoend/testdata/select_star_quoted/mysql/sqlc.json new file mode 100644 index 0000000000..a9e7b055a4 --- /dev/null +++ b/internal/endtoend/testdata/select_star_quoted/mysql/sqlc.json @@ -0,0 +1,12 @@ +{ + "version": "1", + "packages": [ + { + "name": "querytest", + "path": "go", + "schema": "schema.sql", + "queries": "query.sql", + "engine": "mysql" + } + ] +} diff --git a/internal/endtoend/testdata/select_star_quoted/postgresql/pgx/go/db.go b/internal/endtoend/testdata/select_star_quoted/postgresql/pgx/go/db.go new file mode 100644 index 0000000000..6c6a7eb822 --- /dev/null +++ b/internal/endtoend/testdata/select_star_quoted/postgresql/pgx/go/db.go @@ -0,0 +1,32 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.14.0 + +package querytest + +import ( + "context" + + "github.com/jackc/pgconn" + "github.com/jackc/pgx/v4" +) + +type DBTX interface { + Exec(context.Context, string, ...interface{}) (pgconn.CommandTag, error) + Query(context.Context, string, ...interface{}) (pgx.Rows, error) + QueryRow(context.Context, string, ...interface{}) pgx.Row +} + +func New(db DBTX) *Queries { + return &Queries{db: db} +} + +type Queries struct { + db DBTX +} + +func (q *Queries) WithTx(tx pgx.Tx) *Queries { + return &Queries{ + db: tx, + } +} diff --git a/internal/endtoend/testdata/select_star_quoted/postgresql/pgx/go/models.go b/internal/endtoend/testdata/select_star_quoted/postgresql/pgx/go/models.go new file mode 100644 index 0000000000..6c25f0201e --- /dev/null +++ b/internal/endtoend/testdata/select_star_quoted/postgresql/pgx/go/models.go @@ -0,0 +1,13 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.14.0 + +package querytest + +import ( + "database/sql" +) + +type User struct { + CamelCase sql.NullString +} diff --git a/internal/endtoend/testdata/select_star_quoted/postgresql/pgx/go/query.sql.go b/internal/endtoend/testdata/select_star_quoted/postgresql/pgx/go/query.sql.go new file mode 100644 index 0000000000..ed8054ee38 --- /dev/null +++ b/internal/endtoend/testdata/select_star_quoted/postgresql/pgx/go/query.sql.go @@ -0,0 +1,35 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.14.0 +// source: query.sql + +package querytest + +import ( + "context" + "database/sql" +) + +const getAll = `-- name: GetAll :many +SELECT "CamelCase" FROM users +` + +func (q *Queries) GetAll(ctx context.Context) ([]sql.NullString, error) { + rows, err := q.db.Query(ctx, getAll) + if err != nil { + return nil, err + } + defer rows.Close() + var items []sql.NullString + for rows.Next() { + var CamelCase sql.NullString + if err := rows.Scan(&CamelCase); err != nil { + return nil, err + } + items = append(items, CamelCase) + } + if err := rows.Err(); err != nil { + return nil, err + } + return items, nil +} diff --git a/internal/endtoend/testdata/select_star_quoted/postgresql/pgx/query.sql b/internal/endtoend/testdata/select_star_quoted/postgresql/pgx/query.sql new file mode 100644 index 0000000000..237b20193b --- /dev/null +++ b/internal/endtoend/testdata/select_star_quoted/postgresql/pgx/query.sql @@ -0,0 +1,2 @@ +-- name: GetAll :many +SELECT * FROM users; diff --git a/internal/endtoend/testdata/select_star_quoted/postgresql/pgx/schema.sql b/internal/endtoend/testdata/select_star_quoted/postgresql/pgx/schema.sql new file mode 100644 index 0000000000..d701c419da --- /dev/null +++ b/internal/endtoend/testdata/select_star_quoted/postgresql/pgx/schema.sql @@ -0,0 +1,3 @@ +CREATE TABLE users ( + "CamelCase" varchar(255) +); diff --git a/internal/endtoend/testdata/select_star_quoted/postgresql/pgx/sqlc.json b/internal/endtoend/testdata/select_star_quoted/postgresql/pgx/sqlc.json new file mode 100644 index 0000000000..d1244c9e7a --- /dev/null +++ b/internal/endtoend/testdata/select_star_quoted/postgresql/pgx/sqlc.json @@ -0,0 +1,13 @@ +{ + "version": "1", + "packages": [ + { + "path": "go", + "engine": "postgresql", + "sql_package": "pgx/v4", + "name": "querytest", + "schema": "schema.sql", + "queries": "query.sql" + } + ] +} diff --git a/internal/endtoend/testdata/select_star_quoted/postgresql/stdlib/go/db.go b/internal/endtoend/testdata/select_star_quoted/postgresql/stdlib/go/db.go new file mode 100644 index 0000000000..19557a6a5a --- /dev/null +++ b/internal/endtoend/testdata/select_star_quoted/postgresql/stdlib/go/db.go @@ -0,0 +1,31 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.14.0 + +package querytest + +import ( + "context" + "database/sql" +) + +type DBTX interface { + ExecContext(context.Context, string, ...interface{}) (sql.Result, error) + PrepareContext(context.Context, string) (*sql.Stmt, error) + QueryContext(context.Context, string, ...interface{}) (*sql.Rows, error) + QueryRowContext(context.Context, string, ...interface{}) *sql.Row +} + +func New(db DBTX) *Queries { + return &Queries{db: db} +} + +type Queries struct { + db DBTX +} + +func (q *Queries) WithTx(tx *sql.Tx) *Queries { + return &Queries{ + db: tx, + } +} diff --git a/internal/endtoend/testdata/select_star_quoted/postgresql/stdlib/go/models.go b/internal/endtoend/testdata/select_star_quoted/postgresql/stdlib/go/models.go new file mode 100644 index 0000000000..6c25f0201e --- /dev/null +++ b/internal/endtoend/testdata/select_star_quoted/postgresql/stdlib/go/models.go @@ -0,0 +1,13 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.14.0 + +package querytest + +import ( + "database/sql" +) + +type User struct { + CamelCase sql.NullString +} diff --git a/internal/endtoend/testdata/select_star_quoted/postgresql/stdlib/go/query.sql.go b/internal/endtoend/testdata/select_star_quoted/postgresql/stdlib/go/query.sql.go new file mode 100644 index 0000000000..acaa5beb9b --- /dev/null +++ b/internal/endtoend/testdata/select_star_quoted/postgresql/stdlib/go/query.sql.go @@ -0,0 +1,38 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.14.0 +// source: query.sql + +package querytest + +import ( + "context" + "database/sql" +) + +const getAll = `-- name: GetAll :many +SELECT "CamelCase" FROM users +` + +func (q *Queries) GetAll(ctx context.Context) ([]sql.NullString, error) { + rows, err := q.db.QueryContext(ctx, getAll) + if err != nil { + return nil, err + } + defer rows.Close() + var items []sql.NullString + for rows.Next() { + var CamelCase sql.NullString + if err := rows.Scan(&CamelCase); err != nil { + return nil, err + } + items = append(items, CamelCase) + } + if err := rows.Close(); err != nil { + return nil, err + } + if err := rows.Err(); err != nil { + return nil, err + } + return items, nil +} diff --git a/internal/endtoend/testdata/select_star_quoted/postgresql/stdlib/query.sql b/internal/endtoend/testdata/select_star_quoted/postgresql/stdlib/query.sql new file mode 100644 index 0000000000..237b20193b --- /dev/null +++ b/internal/endtoend/testdata/select_star_quoted/postgresql/stdlib/query.sql @@ -0,0 +1,2 @@ +-- name: GetAll :many +SELECT * FROM users; diff --git a/internal/endtoend/testdata/select_star_quoted/postgresql/stdlib/schema.sql b/internal/endtoend/testdata/select_star_quoted/postgresql/stdlib/schema.sql new file mode 100644 index 0000000000..d701c419da --- /dev/null +++ b/internal/endtoend/testdata/select_star_quoted/postgresql/stdlib/schema.sql @@ -0,0 +1,3 @@ +CREATE TABLE users ( + "CamelCase" varchar(255) +); diff --git a/internal/endtoend/testdata/select_star_quoted/postgresql/stdlib/sqlc.json b/internal/endtoend/testdata/select_star_quoted/postgresql/stdlib/sqlc.json new file mode 100644 index 0000000000..f717ca2e66 --- /dev/null +++ b/internal/endtoend/testdata/select_star_quoted/postgresql/stdlib/sqlc.json @@ -0,0 +1,12 @@ +{ + "version": "1", + "packages": [ + { + "path": "go", + "engine": "postgresql", + "name": "querytest", + "schema": "schema.sql", + "queries": "query.sql" + } + ] +} From 0a5d3295b4e9918e4d7e19d2cfc4a5d797bfdabd Mon Sep 17 00:00:00 2001 From: Kyle Conroy Date: Sat, 9 Jul 2022 21:03:23 -0700 Subject: [PATCH 2/2] Undo changes to select_star test --- .../testdata/select_star/postgresql/stdlib/go/query.sql.go | 2 +- .../testdata/select_star/postgresql/stdlib/schema.sql | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/endtoend/testdata/select_star/postgresql/stdlib/go/query.sql.go b/internal/endtoend/testdata/select_star/postgresql/stdlib/go/query.sql.go index 79b38f2239..efc7972372 100644 --- a/internal/endtoend/testdata/select_star/postgresql/stdlib/go/query.sql.go +++ b/internal/endtoend/testdata/select_star/postgresql/stdlib/go/query.sql.go @@ -10,7 +10,7 @@ import ( ) const getAll = `-- name: GetAll :many -SELECT id, first_name, last_name, "Age" FROM users +SELECT id, first_name, last_name, age FROM users ` func (q *Queries) GetAll(ctx context.Context) ([]User, error) { diff --git a/internal/endtoend/testdata/select_star/postgresql/stdlib/schema.sql b/internal/endtoend/testdata/select_star/postgresql/stdlib/schema.sql index f22f2fda30..0fe1b79a5c 100644 --- a/internal/endtoend/testdata/select_star/postgresql/stdlib/schema.sql +++ b/internal/endtoend/testdata/select_star/postgresql/stdlib/schema.sql @@ -1,6 +1,6 @@ CREATE TABLE users ( - ID integer NOT NULL PRIMARY KEY, + id integer NOT NULL PRIMARY KEY, first_name varchar(255) NOT NULL, last_name varchar(255), - "Age" integer NOT NULL + age integer NOT NULL );