diff --git a/internal/codegen/golang/imports.go b/internal/codegen/golang/imports.go index 65096d7879..5b76c2fc62 100644 --- a/internal/codegen/golang/imports.go +++ b/internal/codegen/golang/imports.go @@ -68,7 +68,8 @@ func (i *importer) usesType(typ string) bool { for _, strct := range i.Structs { for _, f := range strct.Fields { fType := trimSliceAndPointerPrefix(f.Type) - if strings.HasPrefix(fType, typ) { + tType := trimSliceAndPointerPrefix(typ) + if strings.HasPrefix(fType, tType) { return true } } diff --git a/internal/endtoend/testdata/overrides_pointers/mysql/go/db.go b/internal/endtoend/testdata/overrides_pointers/mysql/go/db.go new file mode 100644 index 0000000000..9018ea49c1 --- /dev/null +++ b/internal/endtoend/testdata/overrides_pointers/mysql/go/db.go @@ -0,0 +1,31 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.17.2 + +package override + +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/overrides_pointers/mysql/go/models.go b/internal/endtoend/testdata/overrides_pointers/mysql/go/models.go new file mode 100644 index 0000000000..6edd653cb1 --- /dev/null +++ b/internal/endtoend/testdata/overrides_pointers/mysql/go/models.go @@ -0,0 +1,15 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.17.2 + +package override + +import ( + t "github.com/jackc/pgtype" +) + +type Foo struct { + Other string + Total int64 + Retyped *t.Text +} diff --git a/internal/endtoend/testdata/overrides_pointers/mysql/query.sql b/internal/endtoend/testdata/overrides_pointers/mysql/query.sql new file mode 100644 index 0000000000..e0ac49d1ec --- /dev/null +++ b/internal/endtoend/testdata/overrides_pointers/mysql/query.sql @@ -0,0 +1 @@ +SELECT 1; diff --git a/internal/endtoend/testdata/overrides_pointers/mysql/schema.sql b/internal/endtoend/testdata/overrides_pointers/mysql/schema.sql new file mode 100644 index 0000000000..c0c5fc47dc --- /dev/null +++ b/internal/endtoend/testdata/overrides_pointers/mysql/schema.sql @@ -0,0 +1,5 @@ +CREATE TABLE foo ( + other text NOT NULL, + total bigint NOT NULL, + retyped text NOT NULL +); diff --git a/internal/endtoend/testdata/overrides_pointers/mysql/sqlc.json b/internal/endtoend/testdata/overrides_pointers/mysql/sqlc.json new file mode 100644 index 0000000000..cff9b5a174 --- /dev/null +++ b/internal/endtoend/testdata/overrides_pointers/mysql/sqlc.json @@ -0,0 +1,23 @@ +{ + "version": "1", + "packages": [ + { + "path": "go", + "name": "override", + "engine": "mysql", + "schema": "schema.sql", + "queries": "query.sql", + "overrides": [ + { + "go_type": { + "import": "github.com/jackc/pgtype", + "type": "Text", + "package": "t", + "pointer": true + }, + "column": "foo.retyped" + } + ] + } + ] +} diff --git a/internal/endtoend/testdata/overrides_pointers/postgresql/pgx/v4/go/db.go b/internal/endtoend/testdata/overrides_pointers/postgresql/pgx/v4/go/db.go new file mode 100644 index 0000000000..c1103f3839 --- /dev/null +++ b/internal/endtoend/testdata/overrides_pointers/postgresql/pgx/v4/go/db.go @@ -0,0 +1,32 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.17.2 + +package override + +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/overrides_pointers/postgresql/pgx/v4/go/models.go b/internal/endtoend/testdata/overrides_pointers/postgresql/pgx/v4/go/models.go new file mode 100644 index 0000000000..e13ee2c8d3 --- /dev/null +++ b/internal/endtoend/testdata/overrides_pointers/postgresql/pgx/v4/go/models.go @@ -0,0 +1,18 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.17.2 + +package override + +import ( + t "github.com/jackc/pgtype" +) + +type Foo struct { + Other string + Total int64 + Tags []string + ByteSeq []byte + Retyped string + Langs *t.Text +} diff --git a/internal/endtoend/testdata/overrides_pointers/postgresql/pgx/v4/query.sql b/internal/endtoend/testdata/overrides_pointers/postgresql/pgx/v4/query.sql new file mode 100644 index 0000000000..e0ac49d1ec --- /dev/null +++ b/internal/endtoend/testdata/overrides_pointers/postgresql/pgx/v4/query.sql @@ -0,0 +1 @@ +SELECT 1; diff --git a/internal/endtoend/testdata/overrides_pointers/postgresql/pgx/v4/schema.sql b/internal/endtoend/testdata/overrides_pointers/postgresql/pgx/v4/schema.sql new file mode 100644 index 0000000000..fc3a13e53d --- /dev/null +++ b/internal/endtoend/testdata/overrides_pointers/postgresql/pgx/v4/schema.sql @@ -0,0 +1,8 @@ +CREATE TABLE foo ( + other text NOT NULL, + total bigint NOT NULL, + tags text[] NOT NULL, + byte_seq bytea NOT NULL, + retyped text NOT NULL, + langs text[] +); diff --git a/internal/endtoend/testdata/overrides_pointers/postgresql/pgx/v4/sqlc.json b/internal/endtoend/testdata/overrides_pointers/postgresql/pgx/v4/sqlc.json new file mode 100644 index 0000000000..7f9b92f74c --- /dev/null +++ b/internal/endtoend/testdata/overrides_pointers/postgresql/pgx/v4/sqlc.json @@ -0,0 +1,24 @@ +{ + "version": "1", + "packages": [ + { + "path": "go", + "engine": "postgresql", + "sql_package": "pgx/v4", + "name": "override", + "schema": "schema.sql", + "queries": "query.sql", + "overrides": [ + { + "go_type": { + "import": "github.com/jackc/pgtype", + "type": "Text", + "package": "t", + "pointer": true + }, + "column": "foo.langs" + } + ] + } + ] +} diff --git a/internal/endtoend/testdata/overrides_pointers/postgresql/pgx/v5/go/db.go b/internal/endtoend/testdata/overrides_pointers/postgresql/pgx/v5/go/db.go new file mode 100644 index 0000000000..e05d38c08f --- /dev/null +++ b/internal/endtoend/testdata/overrides_pointers/postgresql/pgx/v5/go/db.go @@ -0,0 +1,32 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.17.2 + +package override + +import ( + "context" + + "github.com/jackc/pgx/v5" + "github.com/jackc/pgx/v5/pgconn" +) + +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/overrides_pointers/postgresql/pgx/v5/go/models.go b/internal/endtoend/testdata/overrides_pointers/postgresql/pgx/v5/go/models.go new file mode 100644 index 0000000000..e13ee2c8d3 --- /dev/null +++ b/internal/endtoend/testdata/overrides_pointers/postgresql/pgx/v5/go/models.go @@ -0,0 +1,18 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.17.2 + +package override + +import ( + t "github.com/jackc/pgtype" +) + +type Foo struct { + Other string + Total int64 + Tags []string + ByteSeq []byte + Retyped string + Langs *t.Text +} diff --git a/internal/endtoend/testdata/overrides_pointers/postgresql/pgx/v5/query.sql b/internal/endtoend/testdata/overrides_pointers/postgresql/pgx/v5/query.sql new file mode 100644 index 0000000000..e0ac49d1ec --- /dev/null +++ b/internal/endtoend/testdata/overrides_pointers/postgresql/pgx/v5/query.sql @@ -0,0 +1 @@ +SELECT 1; diff --git a/internal/endtoend/testdata/overrides_pointers/postgresql/pgx/v5/schema.sql b/internal/endtoend/testdata/overrides_pointers/postgresql/pgx/v5/schema.sql new file mode 100644 index 0000000000..fc3a13e53d --- /dev/null +++ b/internal/endtoend/testdata/overrides_pointers/postgresql/pgx/v5/schema.sql @@ -0,0 +1,8 @@ +CREATE TABLE foo ( + other text NOT NULL, + total bigint NOT NULL, + tags text[] NOT NULL, + byte_seq bytea NOT NULL, + retyped text NOT NULL, + langs text[] +); diff --git a/internal/endtoend/testdata/overrides_pointers/postgresql/pgx/v5/sqlc.json b/internal/endtoend/testdata/overrides_pointers/postgresql/pgx/v5/sqlc.json new file mode 100644 index 0000000000..9bbaf45420 --- /dev/null +++ b/internal/endtoend/testdata/overrides_pointers/postgresql/pgx/v5/sqlc.json @@ -0,0 +1,24 @@ +{ + "version": "1", + "packages": [ + { + "path": "go", + "engine": "postgresql", + "sql_package": "pgx/v5", + "name": "override", + "schema": "schema.sql", + "queries": "query.sql", + "overrides": [ + { + "go_type": { + "import": "github.com/jackc/pgtype", + "type": "Text", + "package": "t", + "pointer": true + }, + "column": "foo.langs" + } + ] + } + ] +} diff --git a/internal/endtoend/testdata/overrides_pointers/postgresql/stdlib/go/db.go b/internal/endtoend/testdata/overrides_pointers/postgresql/stdlib/go/db.go new file mode 100644 index 0000000000..9018ea49c1 --- /dev/null +++ b/internal/endtoend/testdata/overrides_pointers/postgresql/stdlib/go/db.go @@ -0,0 +1,31 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.17.2 + +package override + +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/overrides_pointers/postgresql/stdlib/go/models.go b/internal/endtoend/testdata/overrides_pointers/postgresql/stdlib/go/models.go new file mode 100644 index 0000000000..e13ee2c8d3 --- /dev/null +++ b/internal/endtoend/testdata/overrides_pointers/postgresql/stdlib/go/models.go @@ -0,0 +1,18 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.17.2 + +package override + +import ( + t "github.com/jackc/pgtype" +) + +type Foo struct { + Other string + Total int64 + Tags []string + ByteSeq []byte + Retyped string + Langs *t.Text +} diff --git a/internal/endtoend/testdata/overrides_pointers/postgresql/stdlib/query.sql b/internal/endtoend/testdata/overrides_pointers/postgresql/stdlib/query.sql new file mode 100644 index 0000000000..e0ac49d1ec --- /dev/null +++ b/internal/endtoend/testdata/overrides_pointers/postgresql/stdlib/query.sql @@ -0,0 +1 @@ +SELECT 1; diff --git a/internal/endtoend/testdata/overrides_pointers/postgresql/stdlib/schema.sql b/internal/endtoend/testdata/overrides_pointers/postgresql/stdlib/schema.sql new file mode 100644 index 0000000000..fc3a13e53d --- /dev/null +++ b/internal/endtoend/testdata/overrides_pointers/postgresql/stdlib/schema.sql @@ -0,0 +1,8 @@ +CREATE TABLE foo ( + other text NOT NULL, + total bigint NOT NULL, + tags text[] NOT NULL, + byte_seq bytea NOT NULL, + retyped text NOT NULL, + langs text[] +); diff --git a/internal/endtoend/testdata/overrides_pointers/postgresql/stdlib/sqlc.json b/internal/endtoend/testdata/overrides_pointers/postgresql/stdlib/sqlc.json new file mode 100644 index 0000000000..a251249c11 --- /dev/null +++ b/internal/endtoend/testdata/overrides_pointers/postgresql/stdlib/sqlc.json @@ -0,0 +1,23 @@ +{ + "version": "1", + "packages": [ + { + "path": "go", + "name": "override", + "engine": "postgresql", + "schema": "schema.sql", + "queries": "query.sql", + "overrides": [ + { + "go_type": { + "import": "github.com/jackc/pgtype", + "type": "Text", + "package": "t", + "pointer": true + }, + "column": "foo.langs" + } + ] + } + ] +}