Skip to content

Commit 6757f7b

Browse files
committed
Updated go-driver to latest version
1 parent 8df863b commit 6757f7b

16 files changed

+426
-29
lines changed
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
# Change Log
2+
3+
## [Master](https://github.com/arangodb/go-driver/tree/HEAD)
4+
5+
**Closed issues:**
6+
7+
- Structs with key specified don't read the key [\#138](https://github.com/arangodb/go-driver/issues/138)
8+
- Edge document with user provided key is inserted as many times as the number of shards [\#137](https://github.com/arangodb/go-driver/issues/137)
9+
- Query "return null" make the panic: runtime error [\#117](https://github.com/arangodb/go-driver/issues/117)
10+
- driver does not seem to decode numeric timestamps to time.Time [\#102](https://github.com/arangodb/go-driver/issues/102)
11+
- stable and full feature? [\#100](https://github.com/arangodb/go-driver/issues/100)
12+
- collection with "Wait for sync:" setting, Create-/UpdateDocument return: ArangoError: Code 0, ErrorNum 0 [\#96](https://github.com/arangodb/go-driver/issues/96)
13+
- Error when connecting to ArangoDB with SSL enabled [\#95](https://github.com/arangodb/go-driver/issues/95)
14+
- Possible concurrency issues, using VST connection [\#86](https://github.com/arangodb/go-driver/issues/86)
15+
- An example of a transactional request [\#84](https://github.com/arangodb/go-driver/issues/84)
16+
- Multi-tenancy connection management [\#83](https://github.com/arangodb/go-driver/issues/83)
17+
- Cursor returned from a query with empty Count [\#82](https://github.com/arangodb/go-driver/issues/82)
18+
- CONTRIBUTING.md [\#79](https://github.com/arangodb/go-driver/issues/79)
19+
- Querying documents + [\#76](https://github.com/arangodb/go-driver/issues/76)
20+
- Is there an ArangoDB-Object on Struct? [\#75](https://github.com/arangodb/go-driver/issues/75)
21+
- DB Session [\#73](https://github.com/arangodb/go-driver/issues/73)
22+
- correct way to get multiple documents ? [\#70](https://github.com/arangodb/go-driver/issues/70)
23+
- Revalidate whether workaround can be removed [\#68](https://github.com/arangodb/go-driver/issues/68)
24+
- Makefile `SWTSECRET` vs `JWTSECRET` [\#66](https://github.com/arangodb/go-driver/issues/66)
25+
- Implement transactions [\#56](https://github.com/arangodb/go-driver/issues/56)
26+
- bulk import API [\#55](https://github.com/arangodb/go-driver/issues/55)
27+
- Question: how to write auto-inc feild? [\#51](https://github.com/arangodb/go-driver/issues/51)
28+
- add index attribute for new feature in arangodb3.2 [\#48](https://github.com/arangodb/go-driver/issues/48)
29+
- Unable to connect to server in macos [\#41](https://github.com/arangodb/go-driver/issues/41)
30+
- Handle 401 status code before checking content type. [\#38](https://github.com/arangodb/go-driver/issues/38)
31+
- Support for raw string in query return [\#37](https://github.com/arangodb/go-driver/issues/37)
32+
- \[ArangoDB Server 3.1.6\] Unsupported content type: client.DatabaseExists when Database already exists [\#36](https://github.com/arangodb/go-driver/issues/36)
33+
- Can't connect because of 'Unsupported content type'? [\#35](https://github.com/arangodb/go-driver/issues/35)
34+
- cursor implementation when running queries with non-Document return values [\#20](https://github.com/arangodb/go-driver/issues/20)
35+
- Make failover with cursors more explicit [\#16](https://github.com/arangodb/go-driver/issues/16)
36+
- Add non-context version of method calls [\#7](https://github.com/arangodb/go-driver/issues/7)
37+
38+
**Merged pull requests:**
39+
40+
- Properly closing idle VST connections [\#139](https://github.com/arangodb/go-driver/pull/139)
41+
- Improving performance of reading the body of large responses [\#134](https://github.com/arangodb/go-driver/pull/134)
42+
- Added Collection.ReadDocuments [\#133](https://github.com/arangodb/go-driver/pull/133)
43+
- Added support for fetching job ID in CleanoutServer [\#131](https://github.com/arangodb/go-driver/pull/131)
44+
- Exclude high load test on VST+3.2 [\#129](https://github.com/arangodb/go-driver/pull/129)
45+
- Test/prevent concurrent vst read write [\#128](https://github.com/arangodb/go-driver/pull/128)
46+
- Added single+ssl tests. All tests now use starter [\#127](https://github.com/arangodb/go-driver/pull/127)
47+
- Bugfix/read chunk loop [\#126](https://github.com/arangodb/go-driver/pull/126)
48+
- Prevent possible endless read chunk look in in VST connection [\#125](https://github.com/arangodb/go-driver/pull/125)
49+
- Fixing Query\(return nul\) resulting in panic [\#124](https://github.com/arangodb/go-driver/pull/124)
50+
- Added WithAllowNoLeader [\#123](https://github.com/arangodb/go-driver/pull/123)
51+
- Added Cluster.RemoveServer [\#122](https://github.com/arangodb/go-driver/pull/122)
52+
- Added mutex guarding message chunks. [\#121](https://github.com/arangodb/go-driver/pull/121)
53+
- Documentation/go refactor [\#120](https://github.com/arangodb/go-driver/pull/120)
54+
- VST stream cursor test fixes & VST fail-quick fix [\#119](https://github.com/arangodb/go-driver/pull/119)
55+
- Prevent a VST connection from being used before its configuration callback has finished [\#118](https://github.com/arangodb/go-driver/pull/118)
56+
- Fixed AgencyConnection in the context of authentication [\#116](https://github.com/arangodb/go-driver/pull/116)
57+
- Adding timeout for streaming cursor test [\#115](https://github.com/arangodb/go-driver/pull/115)
58+
- Added package level docs [\#114](https://github.com/arangodb/go-driver/pull/114)
59+
- Close the connection when the initial onCreatedCallback fails [\#113](https://github.com/arangodb/go-driver/pull/113)
60+
- Adding extra concurrency-safety for VST [\#112](https://github.com/arangodb/go-driver/pull/112)
61+
- Added upper limit to the number of concurrent requests to a single server. [\#111](https://github.com/arangodb/go-driver/pull/111)
62+
- Added support for multiple VST connections per server [\#110](https://github.com/arangodb/go-driver/pull/110)
63+
- Fixed expected status code for operations on collections that have waitForSync enabled [\#109](https://github.com/arangodb/go-driver/pull/109)
64+
- Added helper to determine agency health [\#108](https://github.com/arangodb/go-driver/pull/108)
65+
- Added ServerID function [\#107](https://github.com/arangodb/go-driver/pull/107)
66+
- Added exclusive lock using agency [\#106](https://github.com/arangodb/go-driver/pull/106)
67+
- Added helper for JWT secret based authentication [\#105](https://github.com/arangodb/go-driver/pull/105)
68+
- Added Agency API [\#104](https://github.com/arangodb/go-driver/pull/104)
69+
- Added option to not follow redirects and return the original response [\#103](https://github.com/arangodb/go-driver/pull/103)
70+
- Add support for stream query cursor [\#101](https://github.com/arangodb/go-driver/pull/101)
71+
- Active-Failover with Velocystream [\#99](https://github.com/arangodb/go-driver/pull/99)
72+
- Added API functions for shutting down a server and cleaning it out [\#98](https://github.com/arangodb/go-driver/pull/98)
73+
- Skip replication test on cluster [\#94](https://github.com/arangodb/go-driver/pull/94)
74+
- Documented behavior for custom http.Transport wrt MaxIdleConnsPerHost field [\#93](https://github.com/arangodb/go-driver/pull/93)
75+
- Fix ReturnOld/New for edge/vertex operations. [\#92](https://github.com/arangodb/go-driver/pull/92)
76+
- Database.Info\(\) added [\#91](https://github.com/arangodb/go-driver/pull/91)
77+
- Replication interface added. [\#90](https://github.com/arangodb/go-driver/pull/90)
78+
- Grouping server specific info calls in ClientServerInfo, exposing ServerRole API [\#89](https://github.com/arangodb/go-driver/pull/89)
79+
- Added `ReplicationFactor` to `SetCollectionPropertiesOptions` [\#88](https://github.com/arangodb/go-driver/pull/88)
80+
- Allow for some time to reach intended status [\#87](https://github.com/arangodb/go-driver/pull/87)
81+
- Fixing SWTSECRET -\> JWTSECRET [\#85](https://github.com/arangodb/go-driver/pull/85)
82+
- Added CONTRIBUTING.md [\#80](https://github.com/arangodb/go-driver/pull/80)
83+
- Resilientsingle support [\#77](https://github.com/arangodb/go-driver/pull/77)
84+
- Adding cluster specific operations [\#72](https://github.com/arangodb/go-driver/pull/72)
85+
- Added IsSmart, SmartGraphAttribute attributes to CreateCollectionOptions [\#71](https://github.com/arangodb/go-driver/pull/71)
86+
- Adding Response.Header\(string\) & tests [\#69](https://github.com/arangodb/go-driver/pull/69)
87+
- Server mode \(get/set\) [\#65](https://github.com/arangodb/go-driver/pull/65)
88+
- Adding `WithConfigured` [\#64](https://github.com/arangodb/go-driver/pull/64)
89+
- Added DistributeShardsLike field to CreateCollectionOptions [\#62](https://github.com/arangodb/go-driver/pull/62)
90+
- Added WithEnforceReplicationFactor [\#61](https://github.com/arangodb/go-driver/pull/61)
91+
- Added `WithIsSystem` [\#60](https://github.com/arangodb/go-driver/pull/60)
92+
- Support synchronising endpoints on resilient single server mode [\#59](https://github.com/arangodb/go-driver/pull/59)
93+
- Added `WithIgnoreRevisions` [\#58](https://github.com/arangodb/go-driver/pull/58)
94+
- Basic transaction implementation [\#57](https://github.com/arangodb/go-driver/pull/57)
95+
- Support `x-arango-dump` content type [\#54](https://github.com/arangodb/go-driver/pull/54)
96+
- Added WithIsRestore \(not internal for normal client use!!!!\) [\#53](https://github.com/arangodb/go-driver/pull/53)
97+
- Raw authentication [\#52](https://github.com/arangodb/go-driver/pull/52)
98+
- Include travis tests for arangodb 3.1 [\#50](https://github.com/arangodb/go-driver/pull/50)
99+
- Added NoDeduplicate field for hash & skiplist index options [\#49](https://github.com/arangodb/go-driver/pull/49)
100+
- Supporting additional user access functions [\#47](https://github.com/arangodb/go-driver/pull/47)
101+
- ftKnox - fix sprintf conversions [\#42](https://github.com/arangodb/go-driver/pull/42)
102+
- Convert 401 text/plain response to proper ArangoError [\#39](https://github.com/arangodb/go-driver/pull/39)
103+
- Adding Storage engine detection [\#34](https://github.com/arangodb/go-driver/pull/34)
104+
- Starter update [\#33](https://github.com/arangodb/go-driver/pull/33)
105+
- Fix reading the response body to ensure keep-alive [\#32](https://github.com/arangodb/go-driver/pull/32)
106+
- Velocy stream support \(wip\) [\#31](https://github.com/arangodb/go-driver/pull/31)
107+
- Supporting Velocypack content-type \(instead of JSON\) \(wip\) [\#29](https://github.com/arangodb/go-driver/pull/29)
108+
- Fixed Cursor.ReadDocument for queries returning non-documents [\#27](https://github.com/arangodb/go-driver/pull/27)
109+
- Added Collection.Statistics [\#25](https://github.com/arangodb/go-driver/pull/25)
110+
- Adding Database.ValidateQuery [\#24](https://github.com/arangodb/go-driver/pull/24)
111+
- Added Collection.DocumentExists [\#23](https://github.com/arangodb/go-driver/pull/23)
112+
- Added `Database.Remove\(\)` [\#22](https://github.com/arangodb/go-driver/pull/22)
113+
- Changing graph API to introduce VertexConstraints [\#21](https://github.com/arangodb/go-driver/pull/21)
114+
- Endpoint reconfiguration [\#19](https://github.com/arangodb/go-driver/pull/19)
115+
- Allow custom http.RoundTripper [\#18](https://github.com/arangodb/go-driver/pull/18)
116+
- Added WithEndpoint, used to force a specific endpoint for a request. [\#17](https://github.com/arangodb/go-driver/pull/17)
117+
- Adding failover tests [\#15](https://github.com/arangodb/go-driver/pull/15)
118+
- Adding simple performance benchmarks [\#14](https://github.com/arangodb/go-driver/pull/14)
119+
- Cluster tests [\#12](https://github.com/arangodb/go-driver/pull/12)
120+
- ImportDocuments [\#11](https://github.com/arangodb/go-driver/pull/11)
121+
- Adding Graph support \(wip\) [\#10](https://github.com/arangodb/go-driver/pull/10)
122+
- Added collection status,count,rename,load,unload,truncate,properties [\#9](https://github.com/arangodb/go-driver/pull/9)
123+
- Adding user API [\#8](https://github.com/arangodb/go-driver/pull/8)
124+
- Adding index support [\#6](https://github.com/arangodb/go-driver/pull/6)
125+
- Added Cursor support [\#5](https://github.com/arangodb/go-driver/pull/5)
126+
- Adding multi document requests [\#4](https://github.com/arangodb/go-driver/pull/4)
127+
- Creating interface. \(WIP\) [\#3](https://github.com/arangodb/go-driver/pull/3)
128+
- Revert "Creating interface" [\#2](https://github.com/arangodb/go-driver/pull/2)
129+
- Creating interface [\#1](https://github.com/arangodb/go-driver/pull/1)
130+
131+
132+
133+
\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Maintainer Instructions
2+
3+
- Always preserve backward compatibility
4+
- Build using `make clean && make`
5+
- After merging PR, alway run `make changelog` and commit changes
6+
- Set ArangoDB docker container (used for testing) using `export ARANGODB=<image-name>`
7+
- Run tests using:
8+
- `make run-tests-single`
9+
- `make run-tests-resilientsingle`
10+
- `make run-tests-cluster`.
11+
- Always create changes in a PR

deps/github.com/arangodb/go-driver/Makefile

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,17 @@ $(GOBUILDDIR):
113113
GOPATH=$(GOBUILDDIR) go get github.com/arangodb/go-velocypack
114114
GOPATH=$(GOBUILDDIR) go get github.com/dgrijalva/jwt-go
115115

116+
.PHONY: changelog
117+
changelog:
118+
@docker run --rm \
119+
-e CHANGELOG_GITHUB_TOKEN=$(shell cat ~/.arangodb/github-token) \
120+
-v "$(ROOTDIR)":/usr/local/src/your-app \
121+
ferrarimarco/github-changelog-generator \
122+
--user arangodb \
123+
--project go-driver \
124+
--no-author \
125+
--unreleased-label "Master"
126+
116127
run-tests: run-tests-http run-tests-single run-tests-resilientsingle run-tests-cluster
117128

118129
# Tests of HTTP package

deps/github.com/arangodb/go-driver/collection_document_impl.go

Lines changed: 62 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,55 @@ func (c *collection) ReadDocument(ctx context.Context, key string, result interf
8080
return meta, nil
8181
}
8282

83+
// ReadDocuments reads multiple documents with given keys from the collection.
84+
// The documents data is stored into elements of the given results slice,
85+
// the documents meta data is returned.
86+
// If no document exists with a given key, a NotFoundError is returned at its errors index.
87+
func (c *collection) ReadDocuments(ctx context.Context, keys []string, results interface{}) (DocumentMetaSlice, ErrorSlice, error) {
88+
resultsVal := reflect.ValueOf(results)
89+
switch resultsVal.Kind() {
90+
case reflect.Array, reflect.Slice:
91+
// OK
92+
default:
93+
return nil, nil, WithStack(InvalidArgumentError{Message: fmt.Sprintf("results data must be of kind Array, got %s", resultsVal.Kind())})
94+
}
95+
if keys == nil {
96+
return nil, nil, WithStack(InvalidArgumentError{Message: "keys nil"})
97+
}
98+
resultCount := resultsVal.Len()
99+
if len(keys) != resultCount {
100+
return nil, nil, WithStack(InvalidArgumentError{Message: fmt.Sprintf("expected %d keys, got %d", resultCount, len(keys))})
101+
}
102+
for _, key := range keys {
103+
if err := validateKey(key); err != nil {
104+
return nil, nil, WithStack(err)
105+
}
106+
}
107+
req, err := c.conn.NewRequest("PUT", c.relPath("document"))
108+
if err != nil {
109+
return nil, nil, WithStack(err)
110+
}
111+
req = req.SetQuery("onlyget", "1")
112+
cs := applyContextSettings(ctx, req)
113+
if _, err := req.SetBodyArray(keys, nil); err != nil {
114+
return nil, nil, WithStack(err)
115+
}
116+
resp, err := c.conn.Do(ctx, req)
117+
if err != nil {
118+
return nil, nil, WithStack(err)
119+
}
120+
if err := resp.CheckStatus(200); err != nil {
121+
return nil, nil, WithStack(err)
122+
}
123+
// Parse response array
124+
metas, errs, err := parseResponseArray(resp, resultCount, cs, results)
125+
if err != nil {
126+
return nil, nil, WithStack(err)
127+
}
128+
return metas, errs, nil
129+
130+
}
131+
83132
// CreateDocument creates a single document in the collection.
84133
// The document data is loaded from the given document, the document meta data is returned.
85134
// If the document data already contains a `_key` field, this will be used as key of the new document,
@@ -163,7 +212,7 @@ func (c *collection) CreateDocuments(ctx context.Context, documents interface{})
163212
return nil, nil, nil
164213
}
165214
// Parse response array
166-
metas, errs, err := parseResponseArray(resp, documentCount, cs)
215+
metas, errs, err := parseResponseArray(resp, documentCount, cs, nil)
167216
if err != nil {
168217
return nil, nil, WithStack(err)
169218
}
@@ -272,7 +321,7 @@ func (c *collection) UpdateDocuments(ctx context.Context, keys []string, updates
272321
return nil, nil, nil
273322
}
274323
// Parse response array
275-
metas, errs, err := parseResponseArray(resp, updateCount, cs)
324+
metas, errs, err := parseResponseArray(resp, updateCount, cs, nil)
276325
if err != nil {
277326
return nil, nil, WithStack(err)
278327
}
@@ -381,7 +430,7 @@ func (c *collection) ReplaceDocuments(ctx context.Context, keys []string, docume
381430
return nil, nil, nil
382431
}
383432
// Parse response array
384-
metas, errs, err := parseResponseArray(resp, documentCount, cs)
433+
metas, errs, err := parseResponseArray(resp, documentCount, cs, nil)
385434
if err != nil {
386435
return nil, nil, WithStack(err)
387436
}
@@ -464,7 +513,7 @@ func (c *collection) RemoveDocuments(ctx context.Context, keys []string) (Docume
464513
return nil, nil, nil
465514
}
466515
// Parse response array
467-
metas, errs, err := parseResponseArray(resp, keyCount, cs)
516+
metas, errs, err := parseResponseArray(resp, keyCount, cs, nil)
468517
if err != nil {
469518
return nil, nil, WithStack(err)
470519
}
@@ -572,7 +621,7 @@ func createMergeArray(keys, revs []string) ([]map[string]interface{}, error) {
572621
}
573622

574623
// parseResponseArray parses an array response in the given response
575-
func parseResponseArray(resp Response, count int, cs contextSettings) (DocumentMetaSlice, ErrorSlice, error) {
624+
func parseResponseArray(resp Response, count int, cs contextSettings, results interface{}) (DocumentMetaSlice, ErrorSlice, error) {
576625
resps, err := resp.ParseArrayBody()
577626
if err != nil {
578627
return nil, nil, WithStack(err)
@@ -581,6 +630,7 @@ func parseResponseArray(resp Response, count int, cs contextSettings) (DocumentM
581630
errs := make(ErrorSlice, count)
582631
returnOldVal := reflect.ValueOf(cs.ReturnOld)
583632
returnNewVal := reflect.ValueOf(cs.ReturnNew)
633+
resultsVal := reflect.ValueOf(results)
584634
for i := 0; i < count; i++ {
585635
resp := resps[i]
586636
var meta DocumentMeta
@@ -606,6 +656,13 @@ func parseResponseArray(resp Response, count int, cs contextSettings) (DocumentM
606656
}
607657
}
608658
}
659+
if results != nil {
660+
// Parse compare result document
661+
resultsEntryVal := resultsVal.Index(i).Addr()
662+
if err := resp.ParseBody("", resultsEntryVal.Interface()); err != nil {
663+
errs[i] = err
664+
}
665+
}
609666
}
610667
}
611668
return metas, errs, nil

deps/github.com/arangodb/go-driver/collection_documents.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@ type CollectionDocuments interface {
3434
// If no document exists with given key, a NotFoundError is returned.
3535
ReadDocument(ctx context.Context, key string, result interface{}) (DocumentMeta, error)
3636

37+
// ReadDocuments reads multiple documents with given keys from the collection.
38+
// The documents data is stored into elements of the given results slice,
39+
// the documents meta data is returned.
40+
// If no document exists with a given key, a NotFoundError is returned at its errors index.
41+
ReadDocuments(ctx context.Context, keys []string, results interface{}) (DocumentMetaSlice, ErrorSlice, error)
42+
3743
// CreateDocument creates a single document in the collection.
3844
// The document data is loaded from the given document, the document meta data is returned.
3945
// If the document data already contains a `_key` field, this will be used as key of the new document,

0 commit comments

Comments
 (0)