forked from arangodb/arangodb
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCHANGELOG
9038 lines (5936 loc) · 346 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
devel
-----
* added KB, MB, GB prefix for integer parameter, % for integer parameter
with a base value
* added JEMALLOC 4.5.0
* added --vm.resident-limit and --vm.path for mmap after a limit
* try recommended limit for file descriptors in case of unlimited
hard limit
* issue #2413: improve logging in case of lock timeout and deadlocks
* added log topic attribute to /_admin/log api
* removed internal build option `USE_DEV_TIMERS`
Enabling this option activated some proprietary timers for only selected
events in arangod. Instead better use `perf` to gather timings.
* increase default collection lock timeout from 30 to 900 seconds
* added function `db._engine()` for retrieval of storage engine information at
server runtime
There is also an HTTP REST handler at GET /_api/engine that returns engine
information.
* require at least cmake 3.2 for building ArangoDB
* make arangod start with less V8 JavaScript contexts
This speeds up the server start (a little bit) and makes it use less memory.
Whenever a V8 context is needed by a Foxx action or some other operation and
there is no usable V8 context, a new one will be created dynamically now.
Up to `--javascript.v8-contexts` V8 contexts will be created, so this option
will change its meaning. Previously as many V8 contexts as specified by this
option were created at server start, and the number of V8 contexts did not
change at runtime. Now up to this number of V8 contexts will be in use at the
same time, but the actual number of V8 contexts is dynamic.
The garbage collector thread will automatically delete unused V8 contexts after
a while. The number of spare contexts will go down to as few as configured in
the new option `--javascript.v8-contexts-minimum`. Actually that many V8 contexts
are also created at server start.
The first few requests in new V8 contexts will take longer than in contexts
that have been there already. Performance may therefore suffer a bit for the
initial requests sent to ArangoDB or when there are only few but performance-
critical situations in which new V8 contexts will be created. If this is a
concern, it can easily be fixed by setting `--javascipt.v8-contexts-minimum`
and `--javascript.v8-contexts` to a relatively high value, which will guarantee
that many number of V8 contexts to be created at startup and kept around even
when unused.
Waiting for an unused V8 context will now also abort if no V8 context can be
acquired/created after 120 seconds.
* improved diagnostic messages written to logfiles by supervisor process
* fixed issue #2367
* added "bindVars" to attributes of currently running and slow queries
* added "jsonl" as input file type for arangoimp
* upgraded version of bundled zlib library from 1.2.8 to 1.2.11
* added input file type `auto` for arangoimp so it can automatically detect the
type of the input file from the filename extension
* fixed variables parsing in GraphQL
* added `--translate` option for arangoimp to translate attribute names from
the input files to attriubte names expected by ArangoDB
The `--translate` option can be specified multiple times (once per translation
to be executed). The following example renames the "id" column from the input
file to "_key", and the "from" column to "_from", and the "to" column to "_to":
arangoimp --type csv --file data.csv --translate "id=_key" --translate "from=_from" --translate "to=_to"
`--translate` works for CSV and TSV inputs only.
* changed default value for `--server.max-packet-size` from 128 MB to 256 MB
* fixed issue #2350
* fixed issue #2349
* fixed issue #2346
* fixed issue #2342
* change default string truncation length from 80 characters to 256 characters for
`print`/`printShell` functions in ArangoShell and arangod. This will emit longer
prefixes of string values before truncating them with `...`, which is helpful
for debugging.
* always validate incoming JSON HTTP requests for duplicate attribute names
Incoming JSON data with duplicate attribute names will now be rejected as
invalid. Previous versions of ArangoDB only validated the uniqueness of
attribute names inside incoming JSON for some API endpoints, but not
consistently for all APIs.
* don't let read-only transactions block the WAL collector
* allow passing own `graphql-sync` module instance to Foxx GraphQL router
* arangoexport can now export to csv format
* arangoimp: fixed issue #2214
* Foxx: automatically add CORS response headers
* added "OPTIONS" to CORS `access-control-allow-methods` header
* Foxx: Fix arangoUser sometimes not being set correctly
* fixed issue #1974
v3.2.alpha2 (2017-02-20)
------------------------
* ui: fixed issue #2065
* ui: fixed a dashboard related memory issue
* Internal javascript rest actions will now hide their stack traces to the client
unless maintainer mode is activated. Instead they will always log to the logfile
* Removed undocumented internal HTTP API:
* PUT _api/edges
The documented GET _api/edges and the undocumented POST _api/edges remains unmodified.
* updated V8 version to 5.7.0.0
* change undocumented behaviour in case of invalid revision ids in
If-Match and If-None-Match headers from 400 (BAD) to 412 (PRECONDITION
FAILED).
* change undocumented behaviour in case of invalid revision ids in
JavaScript document operations from 1239 ("illegal document revision")
to 1200 ("conflict").
* added data export tool, arangoexport.
arangoexport can be used to export collections to json, jsonl or xml
and export a graph or collections to xgmml.
* fixed a race condition when closing a connection
* raised default hard limit on threads for very small to 64
* fixed negative counting of http connection in UI
v3.2.alpha1 (2017-02-05)
------------------------
* added figure `httpRequests` to AQL query statistics
* removed revisions cache intermediate layer implementation
* obsoleted startup options `--database.revision-cache-chunk-size` and
`--database.revision-cache-target-size`
* fix potential port number over-/underruns
* added startup option `--log.shorten-filenames` for controlling whether filenames
in log message should be shortened to just the filename with the absolute path
* removed IndexThreadFeature, made `--database.index-threads` option obsolete
* changed index filling to make it more parallel, dispatch tasks to boost::asio
* more detailed stacktraces in Foxx apps
* generated Foxx services now use swagger tags
v3.1.18 (2017-04-18)
--------------------
* fixed error in continuous synchronization of collections
* fixed spurious hangs on server shutdown
* better error messages during restore collection
* completely overhaul supervision. More detailed tests
* Fixed a dead-lock situation in cluster traversers, it could happen in
rare cases if the computation on one DBServer could be completed much earlier
than the other server. It could also be restricted to SmartGraphs only.
* (Enterprise only) Fixed a bug in SmartGraph DepthFirstSearch. In some
more complicated queries, the maxDepth limit of 1 was not considered strictly
enough, causing the traverser to do unlimited depth searches.
* fixed issue #2415
* fixed issue #2422
* fixed issue #1974
v3.1.17 (2017-04-04)
--------------------
* (Enterprise only) fixed a bug where replicationFactor was not correctly
forwarded in SmartGraph creation.
* fixed issue #2404
* fixed issue #2397
* ui - fixed smart graph option not appearing
* fixed issue #2389
* fixed issue #2400
v3.1.16 (2017-03-27)
--------------------
* fixed issue #2392
* try to raise file descriptors to at least 8192, warn otherwise
* ui - aql editor improvements + updated ace editor version (memory leak)
* fixed lost HTTP requests
* ui - fixed some event issues
* avoid name resolution when given connection string is a valid ip address
* helps with issue #1842, bug in COLLECT statement in connection with LIMIT.
* fix locking bug in cluster traversals
* increase lock timeout defaults
* increase various cluster timeouts
* limit default target size for revision cache to 1GB, which is better for
tight RAM situations (used to be 40% of (totalRAM - 1GB), use
--database.revision-cache-target-size <VALUEINBYTES> to get back the
old behaviour
* fixed a bug with restarted servers indicating status as "STARTUP"
rather that "SERVING" in Nodes UI.
v3.1.15 (2017-03-20)
--------------------
* add logrotate configuration as requested in #2355
* fixed issue #2376
* ui - changed document api due a chrome bug
* ui - fixed a submenu bug
* added endpoint /_api/cluster/endpoints in cluster case to get all
coordinator endpoints
* fix documentation of /_api/endpoint, declaring this API obsolete.
* Foxx response objects now have a `type` method for manipulating the content-type header
* Foxx tests now support `xunit` and `tap` reporters
v3.1.14 (2017-03-13)
--------------------
* ui - added feature request (multiple start nodes within graph viewer) #2317
* added missing locks to authentication cache methods
* ui - added feature request (multiple start nodes within graph viewer) #2317
* ui - fixed wrong merge of statistics information from different coordinators
* ui - fixed issue #2316
* ui - fixed wrong protocol usage within encrypted environment
* fixed compile error on Mac Yosemite
* minor UI fixes
v3.1.13 (2017-03-06)
--------------------
* fixed variables parsing in GraphQL
* fixed issue #2214
* fixed issue #2342
* changed thread handling to queue only user requests on coordinator
* use exponential backoff when waiting for collection locks
* repair short name server lookup in cluster in the case of a removed
server
v3.1.12 (2017-02-28)
--------------------
* disable shell color escape sequences on Windows
* fixed issue #2326
* fixed issue #2320
* fixed issue #2315
* fixed a race condition when closing a connection
* raised default hard limit on threads for very small to 64
* fixed negative counting of http connection in UI
* fixed a race when renaming collections
* fixed a race when dropping databases
v3.1.11 (2017-02-17)
--------------------
* fixed a race between connection closing and sending out last chunks of data to clients
when the "Connection: close" HTTP header was set in requests
* ui: optimized smart graph creation usability
* ui: fixed #2308
* fixed a race in async task cancellation via `require("@arangodb/tasks").unregisterTask()`
* fixed spuriously hanging threads in cluster AQL that could sit idle for a few minutes
* fixed potential numeric overflow for big index ids in index deletion API
* fixed sort issue in cluster, occurring when one of the local sort buffers of a
GatherNode was empty
* reduce number of HTTP requests made for certain kinds of join queries in cluster,
leading to speedup of some join queries
* supervision deals with demised coordinators correctly again
* implement a timeout in TraverserEngineRegistry
* agent communication reduced in large batches of append entries RPCs
* inception no longer estimates RAFT timings
* compaction in agents has been moved to a separate thread
* replicated logs hold local timestamps
* supervision jobs failed leader and failed follower revisited for
function in precarious stability situations
* fixed bug in random number generator for 64bit int
v3.1.10 (2017-02-02)
--------------------
* updated versions of bundled node modules:
- joi: from 8.4.2 to 9.2.0
- joi-to-json-schema: from 2.2.0 to 2.3.0
- sinon: from 1.17.4 to 1.17.6
- lodash: from 4.13.1 to 4.16.6
* added shortcut for AQL ternary operator
instead of `condition ? true-part : false-part` it is now possible to also use a
shortcut variant `condition ? : false-part`, e.g.
FOR doc IN docs RETURN doc.value ?: 'not present'
instead of
FOR doc IN docs RETURN doc.value ? doc.value : 'not present'
* fixed wrong sorting order in cluster, if an index was used to sort with many
shards.
* added --replication-factor, --number-of-shards and --wait-for-sync to arangobench
* turn on UTF-8 string validation for VelocyPack values received via VST connections
* fixed issue #2257
* upgraded Boost version to 1.62.0
* added optional detail flag for db.<collection>.count()
setting the flag to `true` will make the count operation returned the per-shard
counts for the collection:
db._create("test", { numberOfShards: 10 });
for (i = 0; i < 1000; ++i) {
db.test.insert({value: i});
}
db.test.count(true);
{
"s100058" : 99,
"s100057" : 103,
"s100056" : 100,
"s100050" : 94,
"s100055" : 90,
"s100054" : 122,
"s100051" : 109,
"s100059" : 99,
"s100053" : 95,
"s100052" : 89
}
* added optional memory limit for AQL queries:
db._query("FOR i IN 1..100000 SORT i RETURN i", {}, { options: { memoryLimit: 100000 } });
This option limits the default maximum amount of memory (in bytes) that a single
AQL query can use.
When a single AQL query reaches the specified limit value, the query will be
aborted with a *resource limit exceeded* exception. In a cluster, the memory
accounting is done per shard, so the limit value is effectively a memory limit per
query per shard.
The global limit value can be overriden per query by setting the *memoryLimit*
option value for individual queries when running an AQL query.
* added server startup option `--query.memory-limit`
* added convenience function to create vertex-centric indexes.
Usage: `db.collection.ensureVertexCentricIndex("label", {type: "hash", direction: "outbound"})`
That will create an index that can be used on OUTBOUND with filtering on the
edge attribute `label`.
* change default log output for tools to stdout (instead of stderr)
* added option -D to define a configuration file environment key=value
* changed encoding behavior for URLs encoded in the C++ code of ArangoDB:
previously the special characters `-`, `_`, `~` and `.` were returned as-is
after URL-encoding, now `.` will be encoded to be `%2e`.
This also changes the behavior of how incoming URIs are processed: previously
occurrences of `..` in incoming request URIs were collapsed (e.g. `a/../b/` was
collapsed to a plain `b/`). Now `..` in incoming request URIs are not collapsed.
* Foxx request URL suffix is no longer unescaped
* @arangodb/request option json now defaults to `true` if the response body is not empty and encoding is not explicitly set to `null` (binary).
The option can still be set to `false` to avoid unnecessary attempts at parsing the response as JSON.
* Foxx configuration values for unknown options will be discarded when saving the configuration in production mode using the web interface
* module.context.dependencies is now immutable
* process.stdout.isTTY now returns `true` in arangosh and when running arangod with the `--console` flag
* add support for Swagger tags in Foxx
v3.1.9 (XXXX-XX-XX)
-------------------
* macos CLI package: store databases and apps in the users home directory
* ui: fixed re-login issue within a non system db, when tab was closed
* fixed a race in the VelocyStream Commtask implementation
* fixed issue #2256
v3.1.8 (2017-01-09)
-------------------
* add Windows silent installer
* add handling of debug symbols during Linux & windows release builds.
* fixed issue #2181
* fixed issue #2248: reduce V8 max old space size from 3 GB to 1 GB on 32 bit systems
* upgraded Boost version to 1.62.0
* fixed issue #2238
* fixed issue #2234
* agents announce new endpoints in inception phase to leader
* agency leadership accepts updatet endpoints to given uuid
* unified endpoints replace localhost with 127.0.0.1
* fix several problems within an authenticated cluster
v3.1.7 (2016-12-29)
-------------------
* fixed one too many elections in RAFT
* new agency comm backported from devel
v3.1.6 (2016-12-20)
-------------------
* fixed issue #2227
* fixed issue #2220
* agency constituent/agent bug fixes in race conditions picking up
leadership
* supervision does not need waking up anymore as it is running
regardless
* agents challenge their leadership more rigorously
v3.1.5 (2016-12-16)
-------------------
* lowered default value of `--database.revision-cache-target-size` from 75% of
RAM to less than 40% of RAM
* fixed issue #2218
* fixed issue #2217
* Foxx router.get/post/etc handler argument can no longer accidentally omitted
* fixed issue #2223
v3.1.4 (2016-12-08)
-------------------
* fixed issue #2211
* fixed issue #2204
* at cluster start, coordinators wait until at least one DBserver is there,
and either at least two DBservers are there or 15s have passed, before they
initiate the bootstrap of system collections.
* more robust agency startup from devel
* supervision's AddFollower adds many followers at once
* supervision has new FailedFollower job
* agency's Node has new method getArray
* agency RAFT timing estimates more conservative in waitForSync
scenario
* agency RAFT timing estimates capped at maximum 2.0/10.0 for low/high
v3.1.3 (2016-12-02)
-------------------
* fix a traversal bug when using skiplist indexes:
if we have a skiplist of ["a", "unused", "_from"] and a traversal like:
FOR v,e,p IN OUTBOUND @start @@edges
FILTER p.edges[0].a == 'foo'
RETURN v
And the above index applied on "a" is considered better than EdgeIndex, than
the executor got into undefined behaviour.
* fix endless loop when trying to create a collection with replicationFactor: -1
v3.1.2 (2016-11-24)
-------------------
* added support for descriptions field in Foxx dependencies
* (Enterprise only) fixed a bug in the statistic report for SmartGraph traversals.
Now they state correctly how many documents were fetched from the index and how many
have been filtered.
* Prevent uniform shard distribution when replicationFactor == numServers
v3.1.1 (2016-11-15)
-------------------
* fixed issue #2176
* fixed issue #2168
* display index usage of traversals in AQL explainer output (previously missing)
* fixed isuse #2163
* preserve last-used HLC value across server starts
* allow more control over handling of pre-3.1 _rev values
this changes the server startup option `--database.check-30-revisions` from a boolean (true/false)
parameter to a string parameter with the following possible values:
- "fail":
will validate _rev values of 3.0 collections on collection loading and throw an exception when invalid _rev values are found.
in this case collections with invalid _rev values are marked as corrupted and cannot be used in the ArangoDB 3.1 instance.
the fix procedure for such collections is to export the collections from 3.0 database with arangodump and restore them in 3.1 with arangorestore.
collections that do not contain invalid _rev values are marked as ok and will not be re-checked on following loads.
collections that contain invalid _rev values will be re-checked on following loads.
- "true":
will validate _rev values of 3.0 collections on collection loading and print a warning when invalid _rev values are found.
in this case collections with invalid _rev values can be used in the ArangoDB 3.1 instance.
however, subsequent operations on documents with invalid _rev values may silently fail or fail with explicit errors.
the fix procedure for such collections is to export the collections from 3.0 database with arangodump and restore them in 3.1 with arangorestore.
collections that do not contain invalid _rev values are marked as ok and will not be re-checked on following loads.
collections that contain invalid _rev values will be re-checked on following loads.
- "false":
will not validate _rev values on collection loading and not print warnings.
no hint is given when invalid _rev values are found.
subsequent operations on documents with invalid _rev values may silently fail or fail with explicit errors.
this setting does not affect whether collections are re-checked later.
collections will be re-checked on following loads if `--database.check-30-revisions` is later set to either `true` or `fail`.
The change also suppresses warnings that were printed when collections were restored using arangorestore, and the restore
data contained invalid _rev values. Now these warnings are suppressed, and new HLC _rev values are generated for these documents
as before.
* added missing functions to AQL syntax highlighter in web interface
* fixed display of `ANY` direction in traversal explainer output (direction `ANY` was shown as either
`INBOUND` or `OUTBOUND`)
* changed behavior of toJSON() function when serializing an object before saving it in the database
if an object provides a toJSON() function, this function is still called for serializing it.
the change is that the result of toJSON() is not stringified anymore, but saved as is. previous
versions of ArangoDB called toJSON() and after that additionally stringified its result.
This change will affect the saving of JS Buffer objects, which will now be saved as arrays of
bytes instead of a comma-separated string of the Buffer's byte contents.
* allow creating unique indexes on more attributes than present in shardKeys
The following combinations of shardKeys and indexKeys are allowed/not allowed:
shardKeys indexKeys
a a ok
a b not ok
a a b ok
a b a not ok
a b b not ok
a b a b ok
a b a b c ok
a b c a b not ok
a b c a b c ok
* fixed wrong version in web interface login screen (EE only)
* make web interface not display an exclamation mark next to ArangoDB version number 3.1
* fixed search for arbitrary document attributes in web interface in case multiple
search values were used on different attribute names. in this case, the search always
produced an empty result
* disallow updating `_from` and `_to` values of edges in Smart Graphs. Updating these
attributes would lead to potential redistribution of edges to other shards, which must be
avoided.
* fixed issue #2148
* updated graphql-sync dependency to 0.6.2
* fixed issue #2156
* fixed CRC4 assembly linkage
v3.1.0 (2016-10-29)
-------------------
* added AQL function `DISTANCE` to calculate the distance between two arbitrary
coordinates (haversine formula)
* fixed issue #2110
* added Auto-aptation of RAFT timings as calculations only
v3.1.rc2 (2016-10-10)
---------------------
* second release candidate
v3.1.rc1 (2016-09-30)
---------------------
* first release candidate
v3.1.alpha2 (2016-09-01)
------------------------
* added module.context.createDocumentationRouter to replace module.context.apiDocumentation
* bug in RAFT implementation of reads. dethroned leader still answered requests in isolation
* ui: added new graph viewer
* ui: aql-editor added tabular & graph display
* ui: aql-editor improved usability
* ui: aql-editor: query profiling support
* fixed issue #2109
* fixed issue #2111
* fixed issue #2075
* added AQL function `DISTANCE` to calculate the distance between two arbitrary
coordinates (haversine formula)
* rewrote scheduler and dispatcher based on boost::asio
parameters changed:
`--scheduler.threads` and `--server.threads` are now merged into a single one: `--server.threads`
hidden `--server.extra-threads` has been removed
hidden `--server.aql-threads` has been removed
hidden `--server.backend` has been removed
hidden `--server.show-backends` has been removed
hidden `--server.thread-affinity` has been removed
* fixed issue #2086
* fixed issue #2079
* fixed issue #2071
make the AQL query optimizer inject filter condition expressions referred to
by variables during filter condition aggregation.
For example, in the following query
FOR doc IN collection
LET cond1 = (doc.value == 1)
LET cond2 = (doc.value == 2)
FILTER cond1 || cond2
RETURN { doc, cond1, cond2 }
the optimizer will now inject the conditions for `cond1` and `cond2` into the filter
condition `cond1 || cond2`, expanding it to `(doc.value == 1) || (doc.value == 2)`
and making these conditions available for index searching.
Note that the optimizer previously already injected some conditions into other
conditions, but only if the variable that defined the condition was not used
elsewhere. For example, the filter condition in the query
FOR doc IN collection
LET cond = (doc.value == 1)
FILTER cond
RETURN { doc }
already got optimized before because `cond` was only used once in the query and
the optimizer decided to inject it into the place where it was used.
This only worked for variables that were referred to once in the query.
When a variable was used multiple times, the condition was not injected as
in the following query:
FOR doc IN collection
LET cond = (doc.value == 1)
FILTER cond
RETURN { doc, cond }
The fix for #2070 now will enable this optimization so that the query can
use an index on `doc.value` if available.
* changed behavior of AQL array comparison operators for empty arrays:
* `ALL` and `ANY` now always return `false` when the left-hand operand is an
empty array. The behavior for non-empty arrays does not change:
* `[] ALL == 1` will return `false`
* `[1] ALL == 1` will return `true`
* `[1, 2] ALL == 1` will return `false`
* `[2, 2] ALL == 1` will return `false`
* `[] ANY == 1` will return `false`
* `[1] ANY == 1` will return `true`
* `[1, 2] ANY == 1` will return `true`
* `[2, 2] ANY == 1` will return `false`
* `NONE` now always returns `true` when the left-hand operand is an empty array.
The behavior for non-empty arrays does not change:
* `[] NONE == 1` will return `true`
* `[1] NONE == 1` will return `false`
* `[1, 2] NONE == 1` will return `false`
* `[2, 2] NONE == 1` will return `true`
* added experimental AQL functions `JSON_STRINGIFY` and `JSON_PARSE`
* added experimental support for incoming gzip-compressed requests
* added HTTP REST APIs for online loglevel adjustments:
- GET `/_admin/log/level` returns the current loglevel settings
- PUT `/_admin/log/level` modifies the current loglevel settings
* PATCH /_api/gharial/{graph-name}/vertex/{collection-name}/{vertex-key}
- changed default value for keepNull to true
* PATCH /_api/gharial/{graph-name}/edge/{collection-name}/{edge-key}
- changed default value for keepNull to true
* renamed `maximalSize` attribute in parameter.json files to `journalSize`
The `maximalSize` attribute will still be picked up from collections that
have not been adjusted. Responses from the replication API will now also use
`journalSize` instead of `maximalSize`.
* added `--cluster.system-replication-factor` in order to adjust the
replication factor for new system collections
* fixed issue #2012
* added a memory expection in case V8 memory gets too low
* added Optimizer Rule for other indexes in Traversals
this allows AQL traversals to use other indexes than the edge index.
So traversals with filters on edges can now make use of more specific
indexes, e.g.
FOR v, e, p IN 2 OUTBOUND @start @@edge FILTER p.edges[0].foo == "bar"
will prefer a Hash Index on [_from, foo] above the EdgeIndex.
* fixed epoch computation in hybrid logical clock
* fixed thread affinity
* replaced require("internal").db by require("@arangodb").db
* added option `--skip-lines` for arangoimp
this allows skipping the first few lines from the import file in case the
CSV or TSV import are used
* fixed periodic jobs: there should be only one instance running - even if it
runs longer than the period
* improved performance of primary index and edge index lookups
* optimizations for AQL `[*]` operator in case no filter, no projection and
no offset/limit are used
* added AQL function `OUTERSECTION` to return the symmetric difference of its
input arguments
* Foxx manifests of installed services are now saved to disk with indentation
* Foxx tests and scripts in development mode should now always respect updated
files instead of loading stale modules
* When disabling Foxx development mode the setup script is now re-run
* Foxx now provides an easy way to directly serve GraphQL requests using the
`@arangodb/foxx/graphql` module and the bundled `graphql-sync` dependency
* Foxx OAuth2 module now correctly passes the `access_token` to the OAuth2 server
* added iconv-lite and timezone modules
* web interface now allows installing GitHub and zip services in legacy mode
* added module.context.createDocumentationRouter to replace module.context.apiDocumentation
* bug in RAFT implementation of reads. dethroned leader still answered
requests in isolation
* all lambdas in ClusterInfo might have been left with dangling references.
* Agency bug fix for handling of empty json objects as values.
* Foxx tests no longer support the Mocha QUnit interface as this resulted in weird
inconsistencies in the BDD and TDD interfaces. This fixes the TDD interface
as well as out-of-sequence problems when using the BDD before/after functions.
* updated bundled JavaScript modules to latest versions; joi has been updated from 8.4 to 9.2
(see [joi 9.0.0 release notes](https://github.com/hapijs/joi/issues/920) for information on
breaking changes and new features)
* fixed issue #2139
* updated graphql-sync dependency to 0.6.2
* fixed issue #2156
v3.0.13 (XXXX-XX-XX)
--------------------
* fixed issue #2315
* fixed issue #2210
v3.0.12 (2016-11-23)
--------------------
* fixed issue #2176
* fixed issue #2168
* fixed issues #2149, #2159
* fixed error reporting for issue #2158
* fixed assembly linkage bug in CRC4 module
* added support for descriptions field in Foxx dependencies
v3.0.11 (2016-11-08)
--------------------
* fixed issue #2140: supervisor dies instead of respawning child
* fixed issue #2131: use shard key value entered by user in web interface
* fixed issue #2129: cannot kill a long-run query
* fixed issue #2110
* fixed issue #2081
* fixed issue #2038
* changes to Foxx service configuration or dependencies should now be
stored correctly when options are cleared or omitted
* Foxx tests no longer support the Mocha QUnit interface as this resulted in weird
inconsistencies in the BDD and TDD interfaces. This fixes the TDD interface
as well as out-of-sequence problems when using the BDD before/after functions.
* fixed issue #2148
v3.0.10 (2016-09-26)
--------------------
* fixed issue #2072
* fixed issue #2070
* fixed slow cluster starup issues. supervision will demonstrate more
patience with db servers
v3.0.9 (2016-09-21)
-------------------
* fixed issue #2064
* fixed issue #2060
* speed up `collection.any()` and skiplist index creation
* fixed multiple issues where ClusterInfo bug hung agency in limbo
timeouting on multiple collection and database callbacks
v3.0.8 (2016-09-14)
-------------------