Skip to content

Commit a854aab

Browse files
authored
Merge Development (globalsign#57)
* add DropAllIndexes() method (globalsign#25) Create a new method to drop all the indexes of a collection in a single call * readme: credit @feliixx for globalsign#25 (globalsign#26) * send metadata during handshake (globalsign#28) fix [#484](https://github.com/go-mgo/mgo/issues/484) Annotate connections with metadata provided by the connecting client. informations send: { "aplication": { // optional "name": "myAppName" } "driver": { "name": "mgo", "version": "v2" }, "os": { "type": runtime.GOOS, "architecture": runtime.GOARCH } } to set "application.name", add `appname` param in options of string connection URI, for example : "mongodb://localhost:27017?appname=myAppName" * Update README to add appName (globalsign#32) * docs: elaborate on what appName does * readme: add appName to changes * add method CreateView() (globalsign#33) Fix globalsign#30. Thanks to @feliixx for the time and effort. * readme: credit @feliixx in the README (globalsign#36) * Don't panic on indexed int64 fields (globalsign#23) * Stop all db instances after tests (go-mgo#462) If all tests pass, the builds for mongo earlier than 2.6 are still failing. Running a clean up fixes the issue. * fixing int64 type failing when getting indexes and trying to type them * requested changes relating to case statement and panic * Update README.md to credit @mapete94. * tests: ensure indexed int64 fields do not cause a panic in Indexes() See: * globalsign#23 * https://github.com/go-mgo/mgo/issues/475 * go-mgo#476 * Add collation option to collection.Create() (globalsign#37) - Allow specifying the default collation for the collection when creating it. - Add some documentation to query.Collation() method. fix globalsign#29 * Test against MongoDB 3.4.x (globalsign#35) * test against MongoDB 3.4.x * tests: use listIndexes to assert index state for 3.4+ * make test pass against v3.4.x - skip `TestViewWithCollation` because of SERVER-31049, cf: https://jira.mongodb.org/browse/SERVER-31049 - add versionAtLeast() method in init.js script to better detect server version fixes globalsign#31 * Introduce constants for BSON element types (globalsign#41) * bson.Unmarshal returns time in UTC (globalsign#42) * readme: add missing features / credit * Adds missing collation feature description (by @feliixx). * Adds missing 3.4 tests description (by @feliixx). * Adds BSON constants description (by @bozaro). * Adds UTC time.Time unmarshalling (by @gazoon). * fix golint, go vet and gofmt warnings (globalsign#44) Fixes globalsign#43 * readme: credit @feliixx (globalsign#46) * Fix GetBSON() method usage (globalsign#40) * Fix GetBSON() method usage Original issue --- You can't use type with custom GetBSON() method mixed with structure field type and structure field reference type. For example, you can't create custom GetBSON() for Bar type: ``` struct Foo { a Bar b *Bar } ``` Type implementation (`func (t Bar) GetBSON()` ) would crash on `Foo.b = nil` value encoding. Reference implementation (`func (t *Bar) GetBSON()` ) would not call on `Foo.a` value encoding. After this change --- For type implementation `func (t Bar) GetBSON()` would not call on `Foo.b = nil` value encoding. In this case `nil` value would be seariazied as `nil` BSON value. For reference implementation `func (t *Bar) GetBSON()` would call even on `Foo.a` value encoding. * Minor refactoring * readme: credit @bozaro (globalsign#47) * Improve cursorData struct unmarshaling speed (globalsign#49) This change remove full BSON decoding on: - parsing to `bson.Raw` and `bson.DocElem` fields; - skipping unused BSON fields. * readme: credit @bozaro and @idy (globalsign#53) * readme: credit @bozaro and @idy * readme: add @idy to contributor list * do not lock while writing to a socket (globalsign#52) (globalsign#54) fix globalsign#51
1 parent 9b47735 commit a854aab

File tree

5 files changed

+297
-200
lines changed

5 files changed

+297
-200
lines changed

README.md

+3
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ Further PR's (with tests) are welcome, but please maintain backwards compatibili
3030
* Consistently unmarshal time.Time values as UTC ([details](https://github.com/globalsign/mgo/pull/42))
3131
* Enforces best practise coding guidelines ([details](https://github.com/globalsign/mgo/pull/44))
3232
* GetBSON correctly handles structs with both fields and pointers ([details](https://github.com/globalsign/mgo/pull/40))
33+
* Improved bson.Raw unmarshalling performance ([details](https://github.com/globalsign/mgo/pull/49))
34+
* Minimise socket connection timeouts due to excessive locking ([details](https://github.com/globalsign/mgo/pull/52))
3335

3436
---
3537

@@ -42,6 +44,7 @@ Further PR's (with tests) are welcome, but please maintain backwards compatibili
4244
* @eaglerayp
4345
* @feliixx
4446
* @fmpwizard
47+
* @idy
4548
* @jameinel
4649
* @gazoon
4750
* @mapete94

bson/bson_test.go

+13
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,19 @@ func testUnmarshal(c *C, data string, obj interface{}) {
8282
err := bson.Unmarshal([]byte(data), zero)
8383
c.Assert(err, IsNil)
8484
c.Assert(zero, DeepEquals, obj)
85+
86+
testUnmarshalRawElements(c, []byte(data))
87+
}
88+
89+
func testUnmarshalRawElements(c *C, data []byte) {
90+
elems := []bson.RawDocElem{}
91+
err := bson.Unmarshal(data, &elems)
92+
c.Assert(err, IsNil)
93+
for _, elem := range elems {
94+
if elem.Value.Kind == bson.ElementDocument || elem.Value.Kind == bson.ElementArray {
95+
testUnmarshalRawElements(c, elem.Value.Data)
96+
}
97+
}
8598
}
8699

87100
type testItemType struct {

0 commit comments

Comments
 (0)