The fantastic ORM library for Golang, aims to be developer friendly
Go to file
Douglas Danger Manley 72d0fa6196 Fix Statement Where clone array corruption in v2
Method-chaining in gorm is predicated on a `Clause`'s `MergeClause`
method ensuring that the two clauses are disconnected in terms of
pointers (at least in the Wherec case).

However, the original Where implementation used `append`, which
only returns a new instance if the backing array needs to be resized.
In some cases, this is true.  Practically, go doubles the size of the
slice once it gets full, so the following slice `append` calls would
result in a new slice:

* 0 -> 1
* 1 -> 2
* 2 -> 4
* 4 -> 8
* and so on.

So, when the number of "where" conditions was 0, 1, 2, or 4, method-chaining
would work as expected.  However, when it was 3, 5, 6, or 7, modifying the
copy would modify the original.

This also updates the "order by", "group by" and "set" clauses.
2020-06-07 16:54:01 -04:00
.github Update issues template 2020-06-07 13:16:09 +08:00
callbacks Fix typo 2020-06-07 15:26:43 +08:00
clause Fix Statement Where clone array corruption in v2 2020-06-07 16:54:01 -04:00
logger Fix package path 2020-06-02 09:25:55 +08:00
migrator Support customize gorm field type 2020-06-06 10:47:32 +08:00
schema Support customize gorm field type 2020-06-06 10:47:32 +08:00
tests Remove RecordNotFound method 2020-06-07 22:03:45 +08:00
utils Fix FileWithLineNum on windows 2020-06-07 18:37:05 +08:00
.gitignore Add clause, DB API, model definition 2020-01-29 19:22:44 +08:00
License Add MIT License file 2015-01-05 08:59:18 +08:00
README.md Update wercker.yml 2020-06-06 15:05:24 +08:00
association.go Rename package name 2020-06-02 09:18:01 +08:00
callbacks.go Fix typo 2020-06-07 15:26:43 +08:00
chainable_api.go Add Distinct support 2020-06-05 19:19:12 +08:00
errors.go Add Distinct support 2020-06-05 19:19:12 +08:00
finisher_api.go Remove RecordNotFound method 2020-06-07 22:03:45 +08:00
go.mod Refactor tests files 2020-06-02 10:50:38 +08:00
go.sum Add go.sum 2020-06-06 14:28:59 +08:00
gorm.go Refactor codebase and add benchmark test 2020-06-05 23:26:56 +08:00
interfaces.go Add PrepareStmt support 2020-06-05 11:40:24 +08:00
migrator.go Add tests for Tables 2020-05-31 10:24:49 +08:00
model.go Add SoftDelete support 2020-05-29 07:35:45 +08:00
prepare_stmt.go Add PrepareStmt support 2020-06-05 11:40:24 +08:00
scan.go Fix can't scan null value into normal data types 2020-06-03 09:00:20 +08:00
soft_delete.go Rename package name 2020-06-02 09:18:01 +08:00
statement.go Refactor clauses 2020-06-06 22:52:08 +08:00
statement_test.go Fix Statement Where clone array corruption in v2 2020-06-07 16:54:01 -04:00
wercker.yml Update wercker.yml 2020-06-06 15:05:24 +08:00

README.md

GORM

The fantastic ORM library for Golang, aims to be developer friendly.

go report card wercker status codecov Join the chat at https://gitter.im/jinzhu/gorm Open Collective Backer Open Collective Sponsor MIT license GoDoc

Overview

  • Full-Featured ORM (almost)
  • Associations (Has One, Has Many, Belongs To, Many To Many, Polymorphism)
  • Hooks (Before/After Create/Save/Update/Delete/Find)
  • Preloading (eager loading)
  • Transactions
  • Composite Primary Key
  • SQL Builder
  • Auto Migrations
  • Logger
  • Extendable, write Plugins based on GORM callbacks
  • Every feature comes with tests
  • Developer Friendly

Getting Started

Contributing

You can help to deliver a better GORM, check out things you can do

License

© Jinzhu, 2013~time.Now

Released under the MIT License