forked from arangodb/arangodb
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
2860 lines (1879 loc) · 113 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
v2.0.1 (2014-03-31)
-------------------
* make ArangoDB not send back a `WWW-Authenticate` header to a client in case the
client sends the `X-Omit-WWW-Authenticate` HTTP header.
This is done to prevent browsers from showing their built-in HTTP authentication
dialog for AJAX requests that require authentication.
ArangoDB will still return an HTTP 401 (Unauthorized) if the request doesn't
contain valid credentials, but it will omit the `WWW-Authenticate` header,
allowing clients to bypass the browser's authentication dialog.
* fixed isses in arango-dfdb:
the dfdb was not able to unload certain system collections, so these couldn't be
inspected with the dfdb sometimes. Additionally, it did not truncate corrupt
markers from datafiles under some circumstances
* added `changePassword` attribute for users
* fixed non-working "save" button in collection edit view of web interface
clicking the save button did nothing. one had to press enter in one of the input
fields to send modified form data
* fixed V8 compile error on MacOS X
* prevent `body length: -9223372036854775808` being logged in development mode for
some Foxx HTTP responses
* fixed several bugs in web interface dashboard
* fixed issue #783: coffee script not working in manifest file
* fixed issue #781: Cant save current query from AQL editor ui
* bumped version in `X-Arango-Version` compatibility header sent by arangosh and other
client tools from `1.5` to `2.0`.
* fixed startup options for arango-dfdb, added details option for arango-dfdb
* fixed display of missing error messages and codes in arangosh
* when creating a collection via the web interface, the collection type was always
"document", regardless of the user's choice
v2.0.0 (2014-03-10)
-------------------
* first 2.0 release
v2.0.0-rc2 (2014-03-07)
-----------------------
* fixed cluster authorization
v2.0.0-rc1 (2014-02-28)
-----------------------
* added sharding :-)
* added collection._dbName attribute to query the name of the database from a collection
more detailed documentation on the sharding and cluster features can be found in the user
manual, section **Sharding**
* INCOMPATIBLE CHANGE: using complex values in AQL filter conditions with operators other
than equality (e.g. >=, >, <=, <) will disable usage of skiplist indexes for filter
evaluation.
For example, the following queries will be affected by change:
FOR doc IN docs FILTER doc.value < { foo: "bar" } RETURN doc
FOR doc IN docs FILTER doc.value >= [ 1, 2, 3 ] RETURN doc
The following queries will not be affected by the change:
FOR doc IN docs FILTER doc.value == 1 RETURN doc
FOR doc IN docs FILTER doc.value == "foo" RETURN doc
FOR doc IN docs FILTER doc.value == [ 1, 2, 3 ] RETURN doc
FOR doc IN docs FILTER doc.value == { foo: "bar" } RETURN doc
* INCOMPATIBLE CHANGE: removed undocumented method `collection.saveOrReplace`
this feature was never advertised nor documented nor tested.
* INCOMPATIBLE CHANGE: removed undocumented REST API method `/_api/simple/BY-EXAMPLE-HASH`
this feature was never advertised nor documented nor tested.
* added explicit startup parameter `--server.reuse-address`
This flag can be used to control whether sockets should be acquired with the SO_REUSEADDR
flag.
Regardless of this setting, sockets on Windows are always acquired using the
SO_EXCLUSIVEADDRUSE flag.
* removed undocumented REST API method GET `/_admin/database-name`
* added user validation API at POST `/_api/user/<username>`
* slightly improved users management API in `/_api/user`:
Previously, when creating a new user via HTTP POST, the username needed to be
passed in an attribute `username`. When users were returned via this API,
the usernames were returned in an attribute named `user`. This was slightly
confusing and was changed in 2.0 as follows:
- when adding a user via HTTP POST, the username can be specified in an attribute
`user`. If this attribute is not used, the API will look into the attribute `username`
as before and use that value.
- when users are returned via HTTP GET, the usernames are still returned in an
attribute `user`.
This change should be fully downwards-compatible with the previous version of the API.
* added AQL SLICE function to extract slices from lists
* made module loader more node compatible
* the startup option `--javascript.package-path` for arangosh is now deprecated and does
nothing. Using it will not cause an error, but the option is ignored.
* added coffee script support
* Several UI improvements.
* Exchanged icons in the graphviewer toolbar
* always start networking and HTTP listeners when starting the server (even in
console mode)
* allow vertex and edge filtering with user-defined functions in TRAVERSAL,
TRAVERSAL_TREE and SHORTEST_PATH AQL functions:
// using user-defined AQL functions for edge and vertex filtering
RETURN TRAVERSAL(friends, friendrelations, "friends/john", "outbound", {
followEdges: "myfunctions::checkedge",
filterVertices: "myfunctions::checkvertex"
})
// using the following custom filter functions
var aqlfunctions = require("org/arangodb/aql/functions");
aqlfunctions.register("myfunctions::checkedge", function (config, vertex, edge, path) {
return (edge.type !== 'dislikes'); // don't follow these edges
}, false);
aqlfunctions.register("myfunctions::checkvertex", function (config, vertex, path) {
if (vertex.isDeleted || ! vertex.isActive) {
return [ "prune", "exclude" ]; // exclude these and don't follow them
}
return [ ]; // include everything else
}, false);
* fail if invalid `strategy`, `order` or `itemOrder` attribute values
are passed to the AQL TRAVERSAL function. Omitting these attributes
is not considered an error, but specifying an invalid value for any
of these attributes will make an AQL query fail.
* issue #751: Create database through API should return HTTP status code 201
By default, the server now returns HTTP 201 (created) when creating a new
database successfully. To keep compatibility with older ArangoDB versions, the
startup parameter `--server.default-api-compatibility` can be set to a value
of `10400` to indicate API compatibility with ArangoDB 1.4. The compatibility
can also be enforced by setting the `X-Arango-Version` HTTP header in a
client request to this API on a per-request basis.
* allow direct access from the `db` object to collections whose names start
with an underscore (e.g. db._users).
Previously, access to such collections via the `db` object was possible from
arangosh, but not from arangod (and thus Foxx and actions). The only way
to access such collections from these places was via the `db._collection(<name>)`
workaround.
* allow `\n` (as well as `\r\n`) as line terminator in batch requests sent to
`/_api/batch` HTTP API.
* use `--data-binary` instead of `--data` parameter in generated cURL examples
* issue #703: Also show path of logfile for fm.config()
* issue #675: Dropping a collection used in "graph" module breaks the graph
* added "static" Graph.drop() method for graphs API
* fixed issue #695: arangosh server.password error
* use pretty-printing in `--console` mode by default
* simplified ArangoDB startup options
Some startup options are now superfluous or their usage is simplified. The
following options have been changed:
* `--javascript.modules-path`: this option has been removed. The modules paths
are determined by arangod and arangosh automatically based on the value of
`--javascript.startup-directory`.
If the option is set on startup, it is ignored so startup will not abort with
an error `unrecognized option`.
* `--javascript.action-directory`: this option has been removed. The actions
directory is determined by arangod automatically based on the value of
`--javascript.startup-directory`.
If the option is set on startup, it is ignored so startup will not abort with
an error `unrecognized option`.
* `--javascript.package-path`: this option is still available but it is not
required anymore to set the standard package paths (e.g. `js/npm`). arangod
will automatically use this standard package path regardless of whether it
was specified via the options.
It is possible to use this option to add additional package paths to the
standard value.
Configuration files included with arangod are adjusted accordingly.
* layout of the graphs tab adapted to better fit with the other tabs
* database selection is moved to the bottom right corner of the web interface
* removed priority queue index type
this feature was never advertised nor documented nor tested.
* display internal attributes in document source view of web interface
* removed separate shape collections
When upgrading to ArangoDB 2.0, existing collections will be converted to include
shapes and attribute markers in the datafiles instead of using separate files for
shapes.
When a collection is converted, existing shapes from the SHAPES directory will
be written to a new datafile in the collection directory, and the SHAPES directory
will be removed afterwards.
This saves up to 2 MB of memory and disk space for each collection
(savings are higher, the less different shapes there are in a collection).
Additionally, one less file descriptor per opened collection will be used.
When creating a new collection, the amount of sync calls may be reduced. The same
may be true for documents with yet-unknown shapes. This may help performance
in these cases.
* added AQL functions `NTH` and `POSITION`
* added signal handler for arangosh to save last command in more cases
* added extra prompt placeholders for arangosh:
- `%e`: current endpoint
- `%u`: current user
* added arangosh option `--javascript.gc-interval` to control amount of
garbage collection performed by arangosh
* fixed issue #651: Allow addEdge() to take vertex ids in the JS library
* removed command-line option `--log.format`
In previous versions, this option did not have an effect for most log messages, so
it got removed.
* removed C++ logger implementation
Logging inside ArangoDB is now done using the LOG_XXX() macros. The LOGGER_XXX()
macros are gone.
* added collection status "loading"
v1.4.13 (XXXX-XX-XX)
--------------------
* added diagnostic output for Foxx application upload
* allow dump & restore from ArangoDB 1.4 with an ArangoDB 2.0 server
* allow startup options `temp-path` and `default-language` to be specified from the arangod
configuration file and not only from the command line
* fixed too eager compaction
The compaction will now wait for several seconds before trying to re-compact the same
collection. Additionally, some other limits have been introduced for the compaction.
v1.4.12 (2014-03-05)
--------------------
* fixed display bug in web interface which caused the following problems:
- documents were displayed in web interface as being empty
- document attributes view displayed many attributes with content "undefined"
- document source view displayed many attributes with name "TYPEOF" and value "undefined"
- an alert popping up in the browser with message "Datatables warning..."
* re-introduced old-style read-write locks to supports Windows versions older than
Windows 2008R2 and Windows 7. This should re-enable support for Windows Vista and
Windows 2008.
v1.4.11 (2014-02-27)
--------------------
* added SHORTEST_PATH AQL function
this calculates the shortest paths between two vertices, using the Dijkstra
algorithm, employing a min-heap
By default, ArangoDB does not know the distance between any two vertices and
will use a default distance of 1. A custom distance function can be registered
as an AQL user function to make the distance calculation use any document
attributes or custom logic:
RETURN SHORTEST_PATH(cities, motorways, "cities/CGN", "cities/MUC", "outbound", {
paths: true,
distance: "myfunctions::citydistance"
})
// using the following custom distance function
var aqlfunctions = require("org/arangodb/aql/functions");
aqlfunctions.register("myfunctions::distance", function (config, vertex1, vertex2, edge) {
return Math.sqrt(Math.pow(vertex1.x - vertex2.x) + Math.pow(vertex1.y - vertex2.y));
}, false);
* fixed bug in Graph.pathTo function
* fixed small memleak in AQL optimiser
* fixed access to potentially uninitialised variable when collection had a cap constraint
v1.4.10 (2014-02-21)
--------------------
* fixed graph constructor to allow graph with some parameter to be used
* added node.js "events" and "stream"
* updated npm packages
* added loading of .json file
* Fixed http return code in graph api with waitForSync parameter.
* Fixed documentation in graph, simple and index api.
* removed 2 tests due to change in ruby library.
* issue #756: set access-control-expose-headers on CORS response
the following headers are now whitelisted by ArangoDB in CORS responses:
- etag
- content-encoding
- content-length
- location
- server
- x-arango-errors
- x-arango-async-id
v1.4.9 (2014-02-07)
-------------------
* return a document's current etag in response header for HTTP HEAD requests on
documents that return an HTTP 412 (precondition failed) error. This allows
retrieving the document's current revision easily.
* added AQL function `SKIPLIST` to directly access skiplist indexes from AQL
This is a shortcut method to use a skiplist index for retrieving specific documents in
indexed order. The function capability is rather limited, but it may be used
for several cases to speed up queries. The documents are returned in index order if
only one condition is used.
/* return all documents with mycollection.created > 12345678 */
FOR doc IN SKIPLIST(mycollection, { created: [[ '>', 12345678 ]] })
RETURN doc
/* return first document with mycollection.created > 12345678 */
FOR doc IN SKIPLIST(mycollection, { created: [[ '>', 12345678 ]] }, 0, 1)
RETURN doc
/* return all documents with mycollection.created between 12345678 and 123456790 */
FOR doc IN SKIPLIST(mycollection, { created: [[ '>', 12345678 ], [ '<=', 123456790 ]] })
RETURN doc
/* return all documents with mycollection.a equal 1 and .b equal 2 */
FOR doc IN SKIPLIST(mycollection, { a: [[ '==', 1 ]], b: [[ '==', 2 ]] })
RETURN doc
The function requires a skiplist index with the exact same attributes to
be present on the specified colelction. All attributes present in the skiplist
index must be specified in the conditions specified for the `SKIPLIST` function.
Attribute declaration order is important, too: attributes must be specified in the
same order in the condition as they have been declared in the skiplist index.
* added command-line option `--server.disable-authentication-unix-sockets`
with this option, authentication can be disabled for all requests coming
in via UNIX domain sockets, enabling clients located on the same host as
the ArangoDB server to connect without authentication.
Other connections (e.g. TCP/IP) are not affected by this option.
The default value for this option is `false`.
Note: this option is only supported on platforms that support Unix domain
sockets.
* call global arangod instance destructor on shutdown
* issue #755: TRAVERSAL does not use strategy, order and itemOrder options
these options were not honored when configuring a traversal via the AQL
TRAVERSAL function. Now, these options are used if specified.
* allow vertex and edge filtering with user-defined functions in TRAVERSAL,
TRAVERSAL_TREE and SHORTEST_PATH AQL functions:
// using user-defined AQL functions for edge and vertex filtering
RETURN TRAVERSAL(friends, friendrelations, "friends/john", "outbound", {
followEdges: "myfunctions::checkedge",
filterVertices: "myfunctions::checkvertex"
})
// using the following custom filter functions
var aqlfunctions = require("org/arangodb/aql/functions");
aqlfunctions.register("myfunctions::checkedge", function (config, vertex, edge, path) {
return (edge.type !== 'dislikes'); // don't follow these edges
}, false);
aqlfunctions.register("myfunctions::checkvertex", function (config, vertex, path) {
if (vertex.isDeleted || ! vertex.isActive) {
return [ "prune", "exclude" ]; // exclude these and don't follow them
}
return [ ]; // include everything else
}, false);
* issue #748: add vertex filtering to AQL's TRAVERSAL[_TREE]() function
v1.4.8 (2014-01-31)
-------------------
* install foxx apps in the web interface
* fixed a segfault in the import API
v1.4.7 (2014-01-23)
-------------------
* issue #744: Add usage example arangoimp from Command line
* issue #738: added __dirname, __filename pseudo-globals. Fixes #733. (@by pluma)
* mount all Foxx applications in system apps directory on startup
v1.4.6 (2014-01-20)
-------------------
* issue #736: AQL function to parse collection and key from document handle
* added fm.rescan() method for Foxx-Manager
* fixed issue #734: foxx cookie and route problem
* added method `fm.configJson` for arangosh
* include `startupPath` in result of API `/_api/foxx/config`
v1.4.5 (2014-01-15)
-------------------
* fixed issue #726: Alternate Windows Install Method
* fixed issue #716: dpkg -P doesn't remove everything
* fixed bugs in description of HTTP API `_api/index`
* fixed issue #732: Rest API GET revision number
* added missing documentation for several methods in HTTP API `/_api/edge/...`
* fixed typos in description of HTTP API `_api/document`
* defer evaluation of AQL subqueries and logical operators (lazy evaluation)
* Updated font in WebFrontend, it now contains a version that renders properly on windows
* generally allow function return values as call parameters to AQL functions
* fixed potential deadlock in global context method execution
* added override file "arangod.conf.local" (and co)
v1.4.4 (2013-12-24)
-------------------
* uid and gid are now set in the scripts, there is no longer a separate config file for
arangod when started from a script
* foxx-manager is now an alias for arangosh
* arango-dfdb is now an alias for arangod, moved from bin to sbin
* changed from readline to linenoise for Windows
* added --install-service and --uninstall-service for Windows
* removed --daemon and --supervisor for Windows
* arangosh and arangod now uses the config-file which maps the binary name, i. e. if you
rename arangosh to foxx-manager it will use the config file foxx-manager.conf
* fixed lock file for Windows
* fixed issue #711, #687: foxx-manager throws internal errors
* added `--server.ssl-protocol` option for client tools
this allows connecting from arangosh, arangoimp, arangoimp etc. to an ArangoDB
server that uses a non-default value for `--server.ssl-protocol`. The default
value for the SSL protocol is 4 (TLSv1). If the server is configured to use a
different protocol, it was not possible to connect to it with the client tools.
* added more detailed request statistics
This adds the number of async-executed HTTP requests plus the number of HTTP
requests per individual HTTP method type.
* added `--force` option for arangorestore
this option allows continuing a restore operation even if the server reports errors
in the middle of the restore operation
* better error reporting for arangorestore
in case the server returned an HTTP error, arangorestore previously reported this
error as `internal error` without any details only. Now server-side errors are
reported by arangorestore with the server's error message
* include more system collections in dumps produced by arangodump
previously some system collections were intentionally excluded from dumps, even if the
dump was run with `--include-system-collections`. for example, the collections `_aal`,
`_modules`, `_routing`, and `_users` were excluded. This makes sense in a replication
context but not always in a dump context.
When specifying `--include-system-collections`, arangodump will now include the above-
mentioned collections in the dump, too. Some other system collections are still excluded
even when the dump is run with `--include-system-collections`, for example `_replication`
and `_trx`.
* fixed issue #701: ArangoStatement undefined in arangosh
* fixed typos in configuration files
v1.4.3 (2013-11-25)
-------------------
* fixed a segfault in the AQL optimiser, occurring when a constant non-list value was
used on the right-hand side of an IN operator that had a collection attribute on the
left-hand side
* issue #662:
Fixed access violation errors (crashes) in the Windows version, occurring under some
circumstances when accessing databases with multiple clients in parallel
* fixed issue #681: Problem with ArchLinux PKGBUILD configuration
v1.4.2 (2013-11-20)
-------------------
* fixed issue #669: Tiny documentation update
* ported Windows version to use native Windows API SRWLocks (slim read-write locks)
and condition variables instead of homemade versions
MSDN states the following about the compatibility of SRWLocks and Condition Variables:
Minimum supported client:
Windows Server 2008 [desktop apps | Windows Store apps]
Minimum supported server:
Windows Vista [desktop apps | Windows Store apps]
* fixed issue #662: ArangoDB on Windows hanging
This fixes a deadlock issue that occurred on Windows when documents were written to
a collection at the same time when some other thread tried to drop the collection.
* fixed file-based logging in Windows
the logger complained on startup if the specified log file already existed
* fixed startup of server in daemon mode (`--daemon` startup option)
* fixed a segfault in the AQL optimiser
* issue #671: Method graph.measurement does not exist
* changed Windows condition variable implementation to use Windows native
condition variables
This is an attempt to fix spurious Windows hangs as described in issue #662.
* added documentation for JavaScript traversals
* added --code-page command-line option for Windows version of arangosh
* fixed a problem when creating edges via the web interface.
The problem only occurred if a collection was created with type "document
collection" via the web interface, and afterwards was dropped and re-created
with type "edge collection". If the web interface page was not reloaded,
the old collection type (document) was cached, making the subsequent creation
of edges into the (seeming-to-be-document) collection fail.
The fix is to not cache the collection type in the web interface. Users of
an older version of the web interface can reload the collections page if they
are affected.
* fixed a caching problem in arangosh: if a collection was created using the web
interface, and then removed via arangosh, arangosh did not actually drop the
collection due to caching.
Because the `drop` operation was not carried out, this caused misleading error
messages when trying to re-create the collection (e.g. `cannot create collection:
duplicate name`).
* fixed ALT-introduced characters for arangosh console input on Windows
The Windows readline port was not able to handle characters that are built
using CTRL or ALT keys. Regular characters entered using the CTRL or ALT keys
were silently swallowed and not passed to the terminal input handler.
This did not seem to cause problems for the US keyboard layout, but was a
severe issue for keyboard layouts that require the ALT (or ALT-GR) key to
construct characters. For example, entering the character `{` with a German
keyboard layout requires pressing ALT-GR + 9.
* fixed issue #665: Hash/skiplist combo madness bit my ass
this fixes a problem with missing/non-deterministic rollbacks of inserts in
case of a unique constraint violation into a collection with multiple secondary
indexes (with at least one of them unique)
* fixed issue #664: ArangoDB installer on windows requires drive c:
* partly fixed issue #662: ArangoDB on Windows hanging
This fixes dropping databases on Windows. In previous 1.4 versions on Windows,
one shape collection file was not unloaded and removed when dropping a database,
leaving one directory and one shape collection file in the otherwise-dropped
database directory.
* fixed issue #660: updated documentation on indexes
v1.4.1 (2013-11-08)
-------------------
* performance improvements for skip-list deletes
v1.4.1-rc1 (2013-11-07)
-----------------------
* fixed issue #635: Web-Interface should have a "Databases" Menu for Management
* fixed issue #624: Web-Interface is missing a Database selector
* fixed segfault in bitarray query
* fixed issue #656: Cannot create unique index through web interface
* fixed issue #654: bitarray index makes server down
* fixed issue #653: Slow query
* fixed issue #650: Randonmess of any() should be improved
* made AQL `DOCUMENT()` function polymorphic and work with just one parameter.
This allows using the `DOCUMENT` function like this:
DOCUMENT('users/john')
DOCUMENT([ 'users/john', 'users/amy' ])
in addition to the existing use cases:
DOCUMENT(users, 'users/john')
DOCUMENT(users, 'john')
DOCUMENT(users, [ 'users/john' ])
DOCUMENT(users, [ 'users/john', 'users/amy' ])
DOCUMENT(users, [ 'john', 'amy' ])
* simplified usage of ArangoDB batch API
It is not necessary anymore to send the batch boundary in the HTTP `Content-Type`
header. Previously, the batch API expected the client to send a Content-Type header
of`multipart/form-data; boundary=<some boundary value>`. This is still supported in
ArangoDB 2.0, but clients can now also omit this header. If the header is not
present in a client request, ArangoDB will ignore the request content type and
read the MIME boundary from the beginning of the request body.
This also allows using the batch API with the Swagger "Try it out" feature (which is
not too good at sending a different or even dynamic content-type request header).
* added API method GET `/_api/database/user`
This returns the list of databases a specific user can see without changing the
username/passwd.
* issue #424: Documentation about IDs needs to be upgraded
v1.4.0 (2013-10-29)
-------------------
* fixed issue #648: /batch API is missing from Web Interface API Docummentation (Swagger)
* fixed issue #647: Icon tooltips missing
* fixed issue #646: index creation in web interface
* fixed issue #645: Allow jumping from edge to linked vertices
* merged PR for issue #643: Some minor corrections and a link to "Downloads"
* fixed issue #642: Completion of error handling
* fixed issue #639: compiling v1.4 on maverick produces warnings on -Wstrict-null-sentinel
* fixed issue #634: Web interface bug: Escape does not always propagate
* fixed issue #620: added startup option `--server.default-api-compatibility`
This adds the following changes to the ArangoDB server and clients:
- the server provides a new startup option `--server.default-api-compatibility`.
This option can be used to determine the compatibility of (some) server API
return values. The value for this parameter is a server version number,
calculated as follows: `10000 * major + 100 * minor` (e.g. `10400` for ArangoDB
1.3). The default value is `10400` (1.4), the minimum allowed value is `10300`
(1.3).
When setting this option to a value lower than the current server version,
the server might respond with old-style results to "old" clients, increasing
compatibility with "old" (non-up-to-date) clients.
- the server will on each incoming request check for an HTTP header
`x-arango-version`. Clients can optionally set this header to the API
version number they support. For example, if a client sends the HTTP header
`x-arango-version: 10300`, the server will pick this up and might send ArangoDB
1.3-style responses in some situations.
Setting either the startup parameter or using the HTTP header (or both) allows
running "old" clients with newer versions of ArangoDB, without having to adjust
the clients too much.
- the `location` headers returned by the server for the APIs `/_api/document/...`
and `/_api/collection/...` will have different values depending on the used API
version. If the API compatibility is `10300`, the `location` headers returned
will look like this:
location: /_api/document/....
whereas when an API compatibility of `10400` or higher is used, the `location`
headers will look like this:
location: /_db/<database name>/_api/document/...
Please note that even in the presence of this, old API versions still may not
be supported forever by the server.
* fixed issue #643: Some minor corrections and a link to "Downloads" by @frankmayer
* started issue #642: Completion of error handling
* fixed issue #639: compiling v1.4 on maverick produces warnings on
-Wstrict-null-sentinel
* fixed issue #621: Standard Config needs to be fixed
* added function to manage indexes (web interface)
* improved server shutdown time by signalling shutdown to applicationserver,
logging, cleanup and compactor threads
* added foxx-manager `replace` command
* added foxx-manager `installed` command (a more intuitive alias for `list`)
* fixed issue #617: Swagger API is missing '/_api/version'
* fixed issue #615: Swagger API: Some commands have no parameter entry forms
* fixed issue #614: API : Typo in : Request URL /_api/database/current
* fixed issue #609: Graph viz tool - different background color
* fixed issue #608: arangosh config files - eventually missing in the manual
* fixed issue #607: Admin interface: no core documentation
* fixed issue #603: Aardvark Foxx App Manager
* fixed a bug in type-mapping between AQL user functions and the AQL layer
The bug caused errors like the following when working with collection documents
in an AQL user function:
TypeError: Cannot assign to read only property '_id' of #<ShapedJson>
* create less system collections when creating a new database
This is achieved by deferring collection creation until the collections are actually
needed by ArangoDB. The following collections are affected by the change:
- `_fishbowl`
- `_structures`
v1.4.0-beta2 (2013-10-14)
-------------------------
* fixed compaction on Windows
The compaction on Windows did not ftruncate the cleaned datafiles to a smaller size.
This has been fixed so not only the content of the files is cleaned but also files
are re-created with potentially smaller sizes.
* only the following system collections will be excluded from replication from now on:
- `_replication`
- `_trx`
- `_users`
- `_aal`
- `_fishbowl`
- `_modules`
- `_routing`
Especially the following system collections will now be included in replication:
- `_aqlfunctions`
- `_graphs`
In previous versions of ArangoDB, all system collections were excluded from the
replication.
The change also caused a change in the replication logger and applier:
in previous versions of ArangoDB, only a collection's id was logged for an operation.
This has not caused problems for non-system collections but for system collections
there ids might differ. In addition to a collection id ArangoDB will now also log the
name of a collection for each replication event.
The replication applier will now look for the collection name attribute in logged
events preferrably.
* added database selection to arango-dfdb
* provide foxx-manager, arangodump, and arangorestore in Windows build
* ArangoDB 1.4 will refuse to start if option `--javascript.app-path` is not set.
* added startup option `--server.allow-method-override`
This option can be set to allow overriding the HTTP request method in a request using
one of the following custom headers:
- x-http-method-override
- x-http-method
- x-method-override
This allows bypassing proxies and tools that would otherwise just let certain types of
requests pass. Enabling this option may impose a security risk, so it should only be
used in very controlled environments.
The default value for this option is `false` (no method overriding allowed).
* added "details" URL parameter for bulk import API
Setting the `details` URL parameter to `true` in a call to POST `/_api/import` will make
the import return details about non-imported documents in the `details` attribute. If
`details` is `false` or omitted, no `details` attribute will be present in the response.
This is the same behavior that previous ArangoDB versions exposed.
* added "complete" option for bulk import API
Setting the `complete` URL parameter to `true` in a call to POST `/_api/import` will make
the import completely fail if at least one of documents cannot be imported successfully.
It defaults to `false`, which will make ArangoDB continue importing the other documents
from the import even if some documents cannot be imported. This is the same behaviour that
previous ArangoDB versions exposed.
* added missing swagger documentation for `/_api/log`
* calling `/_api/logs` (or `/_admin/logs`) is only permitted from the `_system` database now.
Calling this API method for/from other database will result in an HTTP 400.
' ported fix from https://github.com/novus/nvd3/commit/0894152def263b8dee60192f75f66700cea532cc
This prevents JavaScript errors from occurring in Chrome when in the admin interface,
section "Dashboard".
* show current database name in web interface (bottom right corner)
* added missing documentation for /_api/import in swagger API docs
* allow specification of database name for replication sync command replication applier
This allows syncing from a master database with a different name than the slave database.
* issue #601: Show DB in prompt
arangosh now displays the database name as part of the prompt by default.
Can change the prompt by using the `--prompt` option, e.g.
> arangosh --prompt "my db is named \"%d\"> "
v1.4.0-beta1 (2013-10-01)
-------------------------
* make the Foxx manager use per-database app directories
Each database now has its own subdirectory for Foxx applications. Each database
can thus use different Foxx applications if required. A Foxx app for a specific
database resides in `<app-path>/databases/<database-name>/<app-name>`.
System apps are shared between all databases. They reside in `<app-path>/system/<app-name>`.
* only trigger an engine reset in development mode for URLs starting with `/dev/`
This prevents ArangoDB from reloading all Foxx applications when it is not
actually necessary.
* changed error code from 10 (bad parameter) to 1232 (invalid key generator) for
errors that are due to an invalid key generator specification when creating a new
collection
* automatic detection of content-type / mime-type for Foxx assets based on filenames,
added possibility to override auto detection
* added endpoint management API at `/_api/endpoint`
* changed HTTP return code of PUT `/_api/cursor` from 400 to 404 in case a
non-existing cursor is referred to
* issue #360: added support for asynchronous requests
Incoming HTTP requests with the headers `x-arango-async: true` or
`x-arango-async: store` will be answered by the server instantly with a generic
HTTP 202 (Accepted) response.
The actual requests will be queued and processed by the server asynchronously,
allowing the client to continue sending other requests without waiting for the
server to process the actually requested operation.
The exact point in time when a queued request is executed is undefined. If an
error occurs during execution of an asynchronous request, the client will not
be notified by the server.
The maximum size of the asynchronous task queue can be controlled using the new
option `--scheduler.maximal-queue-size`. If the queue contains this many number of
tasks and a new asynchronous request comes in, the server will reject it with an
HTTP 500 (internal server error) response.
Results of incoming requests marked with header `x-arango-async: true` will be
discarded by the server immediately. Clients have no way of accessing the result
of such asynchronously executed request. This is just _fire and forget_.
To later retrieve the result of an asynchronously executed request, clients can
mark a request with the header `x-arango-async: keep`. This makes the server
store the result of the request in memory until explicitly fetched by a client
via the `/_api/job` API. The `/_api/job` API also provides methods for basic
inspection of which pending or already finished requests there are on the server,
plus ways for garbage collecting unneeded results.
* Added new option `--scheduler.maximal-queue-size`.
* issue #590: Manifest Lint
* added data dump and restore tools, arangodump and arangorestore.
arangodump can be used to create a logical dump of an ArangoDB database, or
just dedicated collections. It can be used to dump both a collection's structure
(properties and indexes) and data (documents).
arangorestore can be used to restore data from a dump created with arangodump.
arangorestore currently does not re-create any indexes, and doesn't yet handle
referenced documents in edges propertly when doing just partial restores.
This will be fixed until 1.4 stable.