diff --git a/internal/endtoend/testdata/relation_uppercase/sqlite/go/db.go b/internal/endtoend/testdata/relation_uppercase/sqlite/go/db.go new file mode 100644 index 0000000000..0c56c2b4e8 --- /dev/null +++ b/internal/endtoend/testdata/relation_uppercase/sqlite/go/db.go @@ -0,0 +1,31 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.29.0 + +package db + +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/relation_uppercase/sqlite/go/models.go b/internal/endtoend/testdata/relation_uppercase/sqlite/go/models.go new file mode 100644 index 0000000000..f33f7c8c75 --- /dev/null +++ b/internal/endtoend/testdata/relation_uppercase/sqlite/go/models.go @@ -0,0 +1,10 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.29.0 + +package db + +type User struct { + ID string + Username string +} diff --git a/internal/endtoend/testdata/relation_uppercase/sqlite/go/query.sql.go b/internal/endtoend/testdata/relation_uppercase/sqlite/go/query.sql.go new file mode 100644 index 0000000000..3812d6f1bd --- /dev/null +++ b/internal/endtoend/testdata/relation_uppercase/sqlite/go/query.sql.go @@ -0,0 +1,83 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.29.0 +// source: query.sql + +package db + +import ( + "context" +) + +const testDelete = `-- name: TestDelete :exec +DELETE FROM USERS WHERE ID = ? +` + +func (q *Queries) TestDelete(ctx context.Context, id string) error { + _, err := q.db.ExecContext(ctx, testDelete, id) + return err +} + +const testInsert = `-- name: TestInsert :exec +INSERT INTO USERS ( + ID, USERNAME +) VALUES ( + ?, ? +) +` + +type TestInsertParams struct { + ID string + Username string +} + +func (q *Queries) TestInsert(ctx context.Context, arg TestInsertParams) error { + _, err := q.db.ExecContext(ctx, testInsert, arg.ID, arg.Username) + return err +} + +const testSelect = `-- name: TestSelect :many +SELECT + ID, USERNAME +FROM + USERS +` + +func (q *Queries) TestSelect(ctx context.Context) ([]User, error) { + rows, err := q.db.QueryContext(ctx, testSelect) + if err != nil { + return nil, err + } + defer rows.Close() + var items []User + for rows.Next() { + var i User + if err := rows.Scan(&i.ID, &i.Username); 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 testUpdate = `-- name: TestUpdate :exec +UPDATE USERS +SET USERNAME = ? +WHERE ID = ? +` + +type TestUpdateParams struct { + Username string + ID string +} + +func (q *Queries) TestUpdate(ctx context.Context, arg TestUpdateParams) error { + _, err := q.db.ExecContext(ctx, testUpdate, arg.Username, arg.ID) + return err +} diff --git a/internal/endtoend/testdata/relation_uppercase/sqlite/query.sql b/internal/endtoend/testdata/relation_uppercase/sqlite/query.sql new file mode 100644 index 0000000000..8634ef099f --- /dev/null +++ b/internal/endtoend/testdata/relation_uppercase/sqlite/query.sql @@ -0,0 +1,20 @@ +-- name: TestSelect :many +SELECT + ID, USERNAME +FROM + USERS; + +-- name: TestInsert :exec +INSERT INTO USERS ( + ID, USERNAME +) VALUES ( + ?, ? +); + +-- name: TestUpdate :exec +UPDATE USERS +SET USERNAME = ? +WHERE ID = ?; + +-- name: TestDelete :exec +DELETE FROM USERS WHERE ID = ?; diff --git a/internal/endtoend/testdata/relation_uppercase/sqlite/schema.sql b/internal/endtoend/testdata/relation_uppercase/sqlite/schema.sql new file mode 100644 index 0000000000..517ee7aa7f --- /dev/null +++ b/internal/endtoend/testdata/relation_uppercase/sqlite/schema.sql @@ -0,0 +1,6 @@ +-- Example queries for sqlc +CREATE TABLE USERS +( + ID TEXT NOT NULL, + USERNAME TEXT NOT NULL +); diff --git a/internal/endtoend/testdata/relation_uppercase/sqlite/sqlc.json b/internal/endtoend/testdata/relation_uppercase/sqlite/sqlc.json new file mode 100644 index 0000000000..cb2a2365bc --- /dev/null +++ b/internal/endtoend/testdata/relation_uppercase/sqlite/sqlc.json @@ -0,0 +1,16 @@ +{ + "version": "2", + "sql": [ + { + "engine": "sqlite", + "schema": "schema.sql", + "queries": "query.sql", + "gen": { + "go": { + "package": "db", + "out": "go" + } + } + } + ] +} diff --git a/internal/engine/sqlite/convert.go b/internal/engine/sqlite/convert.go index e86dd8ac82..963df0b9e8 100644 --- a/internal/engine/sqlite/convert.go +++ b/internal/engine/sqlite/convert.go @@ -1035,7 +1035,7 @@ func (c *cc) convertUpdate_stmtContext(n Update_stmt) ast.Node { } relations := &ast.List{} - tableName := n.Qualified_table_name().GetText() + tableName := identifier(n.Qualified_table_name().GetText()) rel := ast.RangeVar{ Relname: &tableName, Location: n.GetStart().GetStart(),