pg:",notnull"
is reworked. Now it means SQLNOT NULL
constraint and nothing more.- Added
pg:",use_zero"
to prevent go-pg from converting Go zero values to SQLNULL
. - UpdateNotNull is renamed to UpdateNotZero. As previously it omits zero Go values, but it does not take in account if field is nullable or not.
- ORM supports DistinctOn.
- Hooks accept and return context.
- Client respects Context.Deadline when setting net.Conn deadline.
- Client listens on Context.Done while waiting for a connection from the pool and returns an error when context context is cancelled.
Query.Column
does not accept relation name any more. UseQuery.Relation
instead which returns an error if relation does not exist.- urlvalues package is removed in favor of https://github.com/go-pg/urlstruct. You can also use struct based filters via
Query.WhereStruct
. NewModel
andAddModel
methods ofHooklessModel
interface were renamed toNextColumnScanner
andAddColumnScanner
respectively.types.F
andpg.F
are deprecated in favor ofpg.Ident
.types.Q
is deprecated in favor ofpg.Safe
.pg.Q
is deprecated in favor ofpg.SafeQuery
.TableName
field is deprecated in favor oftableName
.- Always use
pg:"..."
struct field tag instead ofsql:"..."
. pg:",override"
is deprecated in favor ofpg:",inherit"
.
- Added
QueryContext
,ExecContext
, andModelContext
which acceptcontext.Context
. Queries are cancelled when context is cancelled. - Model hooks are changed to accept
context.Context
as first argument. - Fixed array and hstore parsers to handle multiple single quotes (#1235).
- DB.OnQueryProcessed is replaced with DB.AddQueryHook.
- Added WhereStruct.
- orm.Pager is moved to urlvalues.Pager. Pager.FromURLValues returns an error if page or limit params can't be parsed.
- Read buffer is re-worked. Default read buffer is increased to 65kb.
- Added Options.MinIdleConns.
- Options.MaxAge renamed to Options.MaxConnAge.
- PoolStats.FreeConns is renamed to PoolStats.IdleConns.
- New hook BeforeSelectQuery.
,override
is renamed to,inherit
.- Dialer.KeepAlive is set to 5 minutes by default.
- Added support "scram-sha-256" authentication.
- Fields ignored with
sql:"-"
tag are no longer considered by ORM relation detector.
Insert
,Update
, andDelete
can returnpg.ErrNoRows
andpg.ErrMultiRows
whenReturning
is used and model expects single row.
db.Model(&strct).Update()
anddb.Model(&strct).Delete()
no longer adds WHERE condition based on primary key when there are no conditions. Instead you should usedb.Update(&strct)
ordb.Model(&strct).WherePK().Update()
.
?Columns
is renamed to?TableColumns
.?Columns
is changed to produce column names without table alias.
pg:"fk"
tag now accepts SQL names instead of Go names, e.g.pg:"fk:ParentId"
becomespg:"fk:parent_id"
. Old code should continue working in most cases, but it is strongly advised to start using new convention.- uint and uint64 SQL type is changed from decimal to bigint according to the the lesser of two evils principle. Use
sql:"type:decimal"
to get old behavior.
CreateTable
no longer adds ON DELETE hook by default. To get old behavior users should addsql:"on_delete:CASCADE"
tag on foreign key field.
types.Result
is renamed toorm.Result
.- Added
OnQueryProcessed
event that can be used to log / report queries timing. Query logger is removed. orm.URLValues
is renamed toorm.URLFilters
. It no longer adds ORDER clause.orm.Pager
is renamed toorm.Pagination
.- Support for net.IP and net.IPNet.
- Support for context.Context.
- Bulk/multi updates.
- Query.WhereGroup for enclosing conditions in paretheses.
- All fields are nullable by default.
,null
tag is replaced with,notnull
. Result.Affected
renamed toResult.RowsAffected
.- Added
Result.RowsReturned
. Create
renamed toInsert
,BeforeCreate
toBeforeInsert
,AfterCreate
toAfterInsert
.- Indexed placeholders support, e.g.
db.Exec("SELECT ?0 + ?0", 1)
. - Named placeholders are evaluated when query is executed.
- Added Update and Delete hooks.
- Order reworked to quote column names. OrderExpr added to bypass Order quoting restrictions.
- Group reworked to quote column names. GroupExpr added to bypass Group quoting restrictions.
Options.Host
andOptions.Port
merged intoOptions.Addr
.- Added
Options.MaxRetries
. Now queries are not retried by default. LoadInto
renamed toScan
,ColumnLoader
renamed toColumnScanner
, LoadColumn renamed to ScanColumn,NewRecord() interface{}
changed toNewModel() ColumnScanner
,AppendQuery(dst []byte) []byte
changed toAppendValue(dst []byte, quote bool) ([]byte, error)
.- Structs, maps and slices are marshalled to JSON by default.
- Added support for scanning slices, .e.g. scanning
[]int
. - Added object relational mapping.