From 6a3ed8baa0968a134de9b21fda77152d6039e599 Mon Sep 17 00:00:00 2001 From: Nao Yonashiro Date: Wed, 12 Jul 2023 06:33:16 +0900 Subject: [PATCH 1/3] fix(engine/sqlite): To lowercase ast.ResTarget.Name The SQLite engine lowercases ast.ResTarget.Name to match the behavior of pg_query. fix #2120 --- internal/engine/sqlite/convert.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/engine/sqlite/convert.go b/internal/engine/sqlite/convert.go index a730fabdb6..9690e255f4 100644 --- a/internal/engine/sqlite/convert.go +++ b/internal/engine/sqlite/convert.go @@ -426,7 +426,7 @@ func (c *cc) getCols(core *parser.Select_coreContext) []ast.Node { } if col.AS_() != nil { - name := col.Column_alias().GetText() + name := identifier(col.Column_alias().GetText()) target.Name = &name } @@ -738,7 +738,7 @@ func (c *cc) convertExprLists(lists []parser.IExprContext) *ast.List { func (c *cc) convertColumnNames(cols []parser.IColumn_nameContext) *ast.List { list := &ast.List{Items: []ast.Node{}} for _, c := range cols { - name := c.GetText() + name := identifier(c.GetText()) list.Items = append(list.Items, &ast.ResTarget{ Name: &name, }) @@ -841,7 +841,7 @@ func (c *cc) convertUpdate_stmtContext(n Update_stmt) ast.Node { list := &ast.List{} for i, col := range n.AllColumn_name() { - colName := col.GetText() + colName := identifier(col.GetText()) target := &ast.ResTarget{ Name: &colName, Val: c.convert(n.Expr(i)), From 269d63c26ca38f2d58876d9c4a2af72f1d9e66a8 Mon Sep 17 00:00:00 2001 From: Nao Yonashiro Date: Sat, 15 Jul 2023 12:17:38 +0900 Subject: [PATCH 2/3] test: add endtoend --- .../testdata/case_sensitive/sqlite/go/db.go | 31 +++++++++++++++++++ .../case_sensitive/sqlite/go/models.go | 14 +++++++++ .../case_sensitive/sqlite/go/query.sql.go | 29 +++++++++++++++++ .../testdata/case_sensitive/sqlite/query.sql | 12 +++++++ .../testdata/case_sensitive/sqlite/sqlc.json | 1 + 5 files changed, 87 insertions(+) create mode 100644 internal/endtoend/testdata/case_sensitive/sqlite/go/db.go create mode 100644 internal/endtoend/testdata/case_sensitive/sqlite/go/models.go create mode 100644 internal/endtoend/testdata/case_sensitive/sqlite/go/query.sql.go create mode 100644 internal/endtoend/testdata/case_sensitive/sqlite/query.sql create mode 100644 internal/endtoend/testdata/case_sensitive/sqlite/sqlc.json diff --git a/internal/endtoend/testdata/case_sensitive/sqlite/go/db.go b/internal/endtoend/testdata/case_sensitive/sqlite/go/db.go new file mode 100644 index 0000000000..ec5e95c4ab --- /dev/null +++ b/internal/endtoend/testdata/case_sensitive/sqlite/go/db.go @@ -0,0 +1,31 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.19.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/case_sensitive/sqlite/go/models.go b/internal/endtoend/testdata/case_sensitive/sqlite/go/models.go new file mode 100644 index 0000000000..399a79d0b2 --- /dev/null +++ b/internal/endtoend/testdata/case_sensitive/sqlite/go/models.go @@ -0,0 +1,14 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.19.0 + +package querytest + +import ( + "database/sql" +) + +type Contact struct { + Pid sql.NullString + Customername sql.NullString +} diff --git a/internal/endtoend/testdata/case_sensitive/sqlite/go/query.sql.go b/internal/endtoend/testdata/case_sensitive/sqlite/go/query.sql.go new file mode 100644 index 0000000000..575b518482 --- /dev/null +++ b/internal/endtoend/testdata/case_sensitive/sqlite/go/query.sql.go @@ -0,0 +1,29 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.19.0 +// source: query.sql + +package querytest + +import ( + "context" + "database/sql" +) + +const insertContact = `-- name: InsertContact :exec +INSERT INTO contacts ( + pid, + CustomerName +) +VALUES (?,?) +` + +type InsertContactParams struct { + Pid sql.NullString + Customername sql.NullString +} + +func (q *Queries) InsertContact(ctx context.Context, arg InsertContactParams) error { + _, err := q.db.ExecContext(ctx, insertContact, arg.Pid, arg.Customername) + return err +} diff --git a/internal/endtoend/testdata/case_sensitive/sqlite/query.sql b/internal/endtoend/testdata/case_sensitive/sqlite/query.sql new file mode 100644 index 0000000000..82616fd664 --- /dev/null +++ b/internal/endtoend/testdata/case_sensitive/sqlite/query.sql @@ -0,0 +1,12 @@ +CREATE TABLE contacts ( + pid TEXT, + CustomerName TEXT +); + +-- name: InsertContact :exec +INSERT INTO contacts ( + pid, + CustomerName +) +VALUES (?,?) +; diff --git a/internal/endtoend/testdata/case_sensitive/sqlite/sqlc.json b/internal/endtoend/testdata/case_sensitive/sqlite/sqlc.json new file mode 100644 index 0000000000..fd6d575377 --- /dev/null +++ b/internal/endtoend/testdata/case_sensitive/sqlite/sqlc.json @@ -0,0 +1 @@ +{"version": "1", "packages": [{"path": "go", "engine": "sqlite", "schema": "query.sql", "queries": "query.sql", "name": "querytest"}]} \ No newline at end of file From 191e4ee363a3ffe36192e41dd7412f19abec6e8c Mon Sep 17 00:00:00 2001 From: Nao Yonashiro Date: Sun, 16 Jul 2023 00:32:43 +0900 Subject: [PATCH 3/3] chore: v1.19.1 --- internal/endtoend/testdata/case_sensitive/sqlite/go/db.go | 2 +- internal/endtoend/testdata/case_sensitive/sqlite/go/models.go | 2 +- .../endtoend/testdata/case_sensitive/sqlite/go/query.sql.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/endtoend/testdata/case_sensitive/sqlite/go/db.go b/internal/endtoend/testdata/case_sensitive/sqlite/go/db.go index ec5e95c4ab..fb6ae669f6 100644 --- a/internal/endtoend/testdata/case_sensitive/sqlite/go/db.go +++ b/internal/endtoend/testdata/case_sensitive/sqlite/go/db.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.19.0 +// sqlc v1.19.1 package querytest diff --git a/internal/endtoend/testdata/case_sensitive/sqlite/go/models.go b/internal/endtoend/testdata/case_sensitive/sqlite/go/models.go index 399a79d0b2..2619e2a85c 100644 --- a/internal/endtoend/testdata/case_sensitive/sqlite/go/models.go +++ b/internal/endtoend/testdata/case_sensitive/sqlite/go/models.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.19.0 +// sqlc v1.19.1 package querytest diff --git a/internal/endtoend/testdata/case_sensitive/sqlite/go/query.sql.go b/internal/endtoend/testdata/case_sensitive/sqlite/go/query.sql.go index 575b518482..9bd23658cf 100644 --- a/internal/endtoend/testdata/case_sensitive/sqlite/go/query.sql.go +++ b/internal/endtoend/testdata/case_sensitive/sqlite/go/query.sql.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.19.0 +// sqlc v1.19.1 // source: query.sql package querytest