-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathCHANGES.txt
1301 lines (1129 loc) · 59.7 KB
/
CHANGES.txt
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
For Release Notes, see http://neo4j.com/release-notes/neo4j-2.1.6/
2.1.6
-----
Kernel:
o Fixes issue with shutdown order for the store and the transaction log,
which might result in record changes to not be applied in case of
IO errors
o Fixes potential deadlock if a transaction starts when the database is
shutting down
o Fixes potential ConcurrentModificationException from concurrent access to
AutoIndexer configuration
Lucene index:
o Tweaks of segment merge options which allow for reduced file handle
usage
Consistency checker:
o Fixes bug that could lead to false positives when checking for property
owners
Server:
o Users of unmanaged extensions now have access to Cypher ExecutionEngine
o Expose node degree in REST API
2.1.5
-----
Cypher:
o Solves shortest path end points when they are missing
o Removes eager loading of data for OPTIONAL MATCH
Kernel:
o Solves an issue where discrete remove+add operations on an existing property
is not properly translated to a change operation, but rather is translated to
an add operation
o Adds a property chain verification mechanism that detects duplicate property
names for a given node/relationship as properties are loaded. It logs the
state to the console, capped to 1 message every two hours
o Solves an issue where relationship removal from a node would lead to iteration
over the relationships of that node to continue beyond the available relationship
set
o Improves performance for index lookups during transactions by removing some
exception handling
o Fixes issue with high id calculation that could lead to store file sizes being
larger than required
o Fixes issue with property value equality definition in index state. It is now
the same as for reading from indexes on disk
Server:
o Node REST representations now contain the labels of the node
Consistency checker:
o Added a consistency check for duplicate property names in a given
node/relationship's property chain
2.1.4
-----
Cypher:
o Reduces memory usage for updating queries, in situations where eager loading of data is not necessary
Kernel:
o Fixes issue with label and property changes, triggered with multiple adds and removes
of the same label/property in the same transaction
o Fixes issue with skipped relationships on transaction rollback
o Batch importer now properly closes the store on shutdown
o Upgrading a database no longer affects logging of normal operations
o Corrects updating of Cache when all relationships of a certain
type are removed from a dense node
o Improves performance of index lookups within a transaction
o Corrects migration of transaction logs when performing store upgrades from 2.0 and 1.9
o Fixes race condition between committing and reading threads that might lead to
duplicate relationships being returned
Consistency check:
o Consistency checker package is now part of the community bundle
o Fixes incorrect reports for deleted properties
UDC:
o Disabling UDC through system properties now works as expected
2.1.3
-----
Cypher:
o Adds support for Octal literals (using a preceding 0, e.g. 03517)
o Adds support for Hexadecimal literals (using a preceding 0x, e.g. 0xF0071E55)
o Add `exists(...)` predicate function for checking patterns and properties
o Ensure `toString(...)` only does type conversion
o No longer introduces eagerness in some trivially decidable cases, such as
MATCH a, b CREATE (a)-[r:X]->(b)
o Avoids opening two transactions per single request REST transaction by
introducing caching of PreparedQueries in ExecutionEngine.
Kernel:
o Fixed a bug where the BatchInserter would generate inconsistent uniqueness
constraints.
o Fixed a bug where relationships sometimes were not loaded up for nodes that
has many relationships in one direction, and none in the other direction.
o Fixes a memory leak in the object cache when the database was only creating
new entities, i.e. when not reading or updating existing entities.
o Adds support for upgrading directly from 1.9 stores, in addition to the
existing ability to upgrade from 2.0 stores.
2.1.2
-----
Cypher:
o Allow Cypher to use indexes to solve IN queries
Kernel:
o Resolves a recovery issue, where multiple crashes in a row without clean shutdown or log rotation
in between could lead to some transactions not being replayed on recovery
o BatchImporter properly zeroes out reused buffers, ensuring relationship record backpoints are properly
setup during migration
Server:
o Ensures transactional endpoint responds with an https location
for https calls
Browser:
o Relaxes heartbeat to server
2.1.0
-----
Kernel:
o Fixes issue in ReferenceCache which could lead to excessive
memory usage
o Fixes potential ommission of relationships of a node when
transactions that affect them are rolled back
o Fixes potential lock leak issue with the Lock Manager
component
o Store files now no longer expand beyond what's necessary
during shutdown and no longer contain spans of zeroe'd
records
o Solves issue with excessive number of Remove commands in
the lucene logs, caused by having auto indexing enabled
and changing properties.
o Auto indexing no longer attempts to remove properties that
have been removed from the configuration as candidates for
autoindexing
o Fixes issue where an exception during shutdown could lead
to recovery not completing properly on next restart
1.9.8
-----
Kernel:
o Fixes potential leak of transaction state in entity locks that could
lead to excess GC activity
o Fixes "illegal position" errors from persistence window pool
o Fixes potential race in XaLogicalLog that could lead to duplicate
entries in the log
o Fixes a memory leak in DiskLayer that could happen through heavy
properties on datasource restarts
o Index transactional state now properly distinguishes between indexes
that refer to the same label but different properties. Previously
it was possible to erroneously retrieve indexes that have not been
committed yet if asking by label.
o Properly close IndexReaders, preventing potential file descriptor leaks.
o Fixes a bug that could cause locks to improperly clean up state
o Store upgrades will now migrate some transaction logs along with the
store, allowing extraction of transactions without requiring
new transactions to happen
Server:
o Ensure transactional endpoint responds with an https location for https
calls.
Graph Algo:
o Ability to return paths with diminishing cost from Dijkstra/Traversal AStar
Cypher:
o Adds UNWIND
o Fixes problem where predicates are evaluated wrongly in NOT
o Fixes problem when WITH introduces a symbol that shadows an existing identifier
2.1.0-RC2
---------
Kernel:
o Fixes issue where store upgrade could leave relationship ids to be reused by
subsequent usage of the database
2.1.0-RC1
---------
Kernel:
o The traversal framework can now take Iterable<Node> as starting points
o The Iterable returned from getRelationships(...) can now be iterated more than once
o Improve the performance of the server by reducing the overhead of logging
o Further performance improvements for the upgrade process
o Improve performance by producing less work for the GC in various places
o Fixes a bug where the transaction log could get duplicate entries, making it unusable for recovery
o Fixes a bug where the database could leak memory after a mode switch in HA
o Fixes a bug where file descriptors would leak if more than one MERGE statement was executed in a transaction
o Fixes a bug where an uncommitted index creation in a transaction could interfer with observing the state
of other existing indexes
o Fixes a bug where old transaction log files could prevent the database from upgrading to a newer version
Cypher:
o To the new planner, added:
- Select or SemiApply
- Optional Expand
- Outer Hash Join
- Aggregation
- Skip
- Limit
- SortLimit
o New planner is disabled by default
2.1.0-M02
---------
Kernel:
o Widens recoverable failure scenarios for schema indexes
o Fix for recovery of schema changes in the case of 2PC transactions
o Compile on Java8. Fixes #2149
o Reduce synchronization in createTranasction path
o Made transaction service more resilient to user code leaking transactions.
o Performance improvements for upgrade process.
Cypher:
o Add a new cost based planner
o To the new planner, added:
- All nodes scan
- Cartesian product
- Apply
- Relationship by id
- Expand
- Node by id
- Node by label
- Node by index seek
- Hash join
- Optional
- Projection
- Selection
- SemiApply
- Sort
- Named paths
o Fix problem where LOAD CSV stops indexes from being used
2.1.0-M01
---------
Cypher:
o Add LOAD CSV
o Add USING PERIODIC COMMIT
Kernel:
o Introduces utility methods for printing paths into a new class, org.neo4j.graphdb.traveral.Paths
o Deprecates several methods in the old traversal framework (org.neo4j.kernel.Traversal) that have been replaced by
new utilities in the org.neo4j.graphdb.traversal library. No breaking changes made, but this flags for these features
being removed in the next major version, 3.0.
o Relationship chains are now split by type and direction. Disk storage format changes, requires an upgrade.
o Fixes an issue with tx log reading in damaged log files
o Adds support for labels in transaction event handlers
2.0.3
-----
Cypher:
o MERGE must fail when trying to create 2 nodes with same id but different labels (e.g., MERGE (a: Foo)-[r:KNOWS]->(a: Bar))
o Allow Cypher split() with empty separator
o Ensure Cypher range() works with negative step values
Kernel:
o Fixes a deadlock issue in the page cache
o Fix a transaction log issue where the log could be written to after
tx manager marked as NOT_OK.
o Performance improvements for concurrent reads
2.0.2
-----
Cypher:
o Fixes #1897 - goes into never ending loop for some aggregate queries
o Add the functions toInt(...) and toFloat(...)
o Renames the Cypher type Double to Float
o Add the function split(...)
o Reading a non-existent property from a map returns null rather than failing
o MERGE will choose a direction when it has to create a relationship if you use an undirected relationship pattern
Kernel:
o Fixes an issue with tx log reading in severely damaged log files.
o Fixes a JVM deadlock issue between committing and a reading thread
o Can now handle more gracefully a larger set of failed index states
o Logical logs are now kept, by default, for 7 days to make backup more likely to choose incremental.
o Fixes issue where store migration forgets about legacy indexes
o Datasource specific transaction application now respects global TM state
o Fix a cache poisoning issue where large properties would keep a reference to a closed
store after a HA role switch. Manifested as NullPointerException when reading very large
properties in rare cases.
o Fixes an issue where indexes that have been dropped would fail recovery
if commands to activate them were run in recovery.
o Fixes byte count monitoring
o Fixes issue with proper update of indexes that came from improper
command execution order
o Fixes memory leak in XaResourceManager that could lead recovered
transaction application to delay noticeably
o Fixes null pointer exceptions coming from LazyProperties being
half loaded while a datasource restart happens
Server:
o Fixes github issues #1872, #961 that deal with Content-Encoding headers
o Server log and messages.log now share common formatting. Achieved
through the use of the same logging framework
2.0.1 (2014-01-04)
------------------
Kernel:
o Improve speed of verifying unique constraints on constraint creation.
o Improve speed of creating label scan store in BatchInserter.
o Fixes issue with batch inserter which could lead to record not in use exception
when adding properties
o Introduces monitoring for reads/writes to the logical log
Server:
o Fixes issue with transactions leaking when there is an exception while rendering the response
Cypher:
o Fixes bug around MERGE inside a FOREACH inside a FOREACH
o Makes it possible to write MERGE queries with no already known parts
o Fixes problem with compiling queries with NOT expressions in them
o Fixes #1735 - Indexes and AND predicates produce wrong results
o Fixes #1876 - Null nodes and properties should be ignored when SETting properties
o Fixes problem with parser not being thread safe. State is bad, m'kay?
o Add support for double literals in exponent form
o Use internal heirarchy for types. Previously dependeded on Scala type hierarchy
o Fixes MERGE without any identifier previously known
o Corrects numerous inconsistencies when performing static type inference during compilation.
2.0.0 (2013-12-11)
------------------
Cypher:
o Fix for problem with index lookups against properties
o Fix: MERGE should work when finding multiple elements
o Fix: Should support updates for merging
o Fix issue when mixing Cypher queries of different versions
o Fix problems with CREATE for relationships without declared nodes
o Allow MERGE to run inside FOREACH
o Prevent the use of parameter maps in MATCH and MERGE
2.0.0-RC1 (2013-11-21)
----------------------
Kernel:
o BREAKING CHANGE: Reference node has been removed.
o BREAKING CHANGE: All classes under the org.neo4j.kernel package space, except
those related to the traversal frameworks, are now deprecated and due to be moved
into internal packages. This includes well-known classes such as EmbeddedGraphDatabase
and HighlyAvailableGraphDatabase, both of which are replaced by GraphDatabaseFactory
and HighlyAvailableGraphDatabaseFactory, respectively.
o BREAKING CHANGE: Removed deprecated settings from org.neo4j.graphdb.factory.GraphDatabaseSettings. These settings are
no longer effective and can be removed without any effect.
o BREAKING CHANGE: Removed deprecated org.neo4j.graphdb.index.IndexProvider (and associated
org.neo4j.graphdb.index.IndexIterable and org.neo4j.graphdb.index.IndexProviderKernelExtensionFactory). This has been
replaced by the kernel extension mechanism.
o BREAKING CHANGE: Removed deprecated org.neo4j.graphdb.PropertyContainer#getPropertyValues(). Instead use
org.neo4j.graphdb.PropertyContainer#getPropertyKeys() and org.neo4j.graphdb.PropertyContainer#getProperty(String).
o BREAKING CHANGE: Removed deprecated methods from org.neo4j.kernel.GraphDatabaseAPI: #getDiagnosticsManager(),
#getMessageLog(), #getIdGeneratorFactory(), #getKernelData() and #getPersistenceSource(). These are internal
components which Kernel clients should not need to access. The entire org.neo4j.kernel.GraphDatabaseAPI interface is
deprecated and will be removed in future.
o BREAKING CHANGE: Deprecated constructors of EmbeddedReadOnlyDatabase and EmbeddedGraphDatabase have been removed,
in favor of the long-advertised alternative GraphDatabaseFactory.
o BREAKING CHANGE: All deprecated methods in GraphDatabaseAPI have been removed in favor of getDependencyResolver().
Cypher:
o Add OPTIONAL MATCH to Cypher
o Remove question mark symbol from patterns in Cypher
o Fixes 1313
o Fixes problem with collection index types
o Changes behaviour of LAST/HEAD/TAIL and collection slice -
they now all return null for ranges outside a collection
o Fixed #1471 - SETting a relationship to a map value fails
Shell:
o Add '-' as filename for piping stdin directly into the shell, behaves as a file import.
Server:
o BREAKING CHANGE: Removed deprecated method org.neo4j.server.AbstractNeoServer#stopServerOnly(). To stop the server use
org.neo4j.server.AbstractNeoServer#stop(). If you would like to disconnect the database life cycle from server control
use org.neo4j.server.WrappingNeoServer.
o BREAKING CHANGE: org.neo4j.server.database.Database is now an interface. Direct uses of the class can be replaced by
one of its implementations.
o Transactional endpoint status codes are now textual rather than numeric. Since the transactional endpoint was introduced
in the 2.0.0 series, it is not considered a breaking change. It will, however, require modifying client code that depends
on the numeric status codes.
2.0.0-M06 (2013-10-15)
----------------------
o Windows desktop GUI added
Cypher:
o Parenthesis around nodes are now mandatory if a label is used on the node
2.0.0-M05 (2013-09-10)
----------------------
Kernel:
o BREAKING CHANGE: GraphDatabaseSettings now only exposes Setting, deprecated settings classes have been removed.
o Fixed problems with array properties being updated multiple times in a single transaction
o Adds label store as an index
o Transaction now implements AutoClosable
o Distinguish between data and schema transactions
o Unique constraint validation for new data
Cypher:
o Promote the experimental parser to the default
o Added literal maps
o Makes RETURN only queries valid
o Labels on optional nodes no longer stop the whole MATCH
clause from returning results.
o Updated NOT precedence
o Added collection slice and collection index
o Added list comprehension documentation
Shell:
o Adds support for RETURN only Cypher queries
2.0.0-M04 (2013-08-08)
----------------------
Kernel:
o BREAKING CHANGE: Require Java 7
o BREAKING CHANGE: Transactions are now required for all operations throughout Java Core API,
read operations as well as write operations
o Define proper equality for indexing of array properties
o BREAKING CHANGE: Equality for indexing of number properties compares numbers independent of underlying primitive Java type
Cypher:
o Fixes #844 - Label predicate do not work on optional nodes that are null
o Fixes #897 - Cypher start doesnt allow combining multiple starting points with start node sets
o BREAKING CHANGE: Removes "?", "!" syntax for accessing properties. Missing properties are now treated as null
o Introduced a new experimental and fast PEG parser
o BREAKING CHANGE: Escaped identifiers in the RETURN clause are kept as the user entered them
o BREAKING CHANGE: No longer possible to use expressions and params to identify nodes in patterns
o BREAKING CHANGE: Use "|" in favor of ":" in FOREACH, EXTRACT and REDUCE to avoid disambiguity with label syntax
Cypher:
o Fixes a concurrency problem in query parser
Server:
o Added support for extracting and returning the graph structure from the result of a Cypher query executed via the transactional endpoint
2.0.0-M03 (2013-05-29)
----------------------
Kernel:
o Read-only index results are closed properly
Cypher:
o Make Cypher execution results closable
o Adds Cypher label scan hint
o Removes alternative WITH syntax in Cypher
o Fixes bug with UNION text output
o Added startNode()/endNode()
o Fixes #780 - Queries with literal collections fail against schema indexes
Server:
o Added support for transaction keep-alive
2.0.0-M02 (2013-04-28)
----------------------
o In server, added REST transaction support
o In cypher, added MERGE clause
o In cypher, MATCH now supports single-node patterns
o In shell, support for listing indexes and their state
o Support for labels in the org.neo4j.unsafe.batchinsert APIs.
o BREAKING CHANGE: Replaced protected fields from org.neo4j.graphdb.factory.GraphDatabaseFactory with a single
org.neo4j.graphdb.factory.GraphDatabaseFactoryState instance to avoid race conditions when creating multiple,
lazily instantiated builders
o BREAKING CHANGE: org.neo4j.graphdb.index.BatchInserterIndex and org.neo4j.graphdb.index.BatchInserterIndexProvider
has been removed in favor of the same interfaces available in org.neo4j.unsafe.batchinsert
o BREAKING CHANGE: The BatchInserter and the BatchGraphDatabase are not binary compatible with 1.9 due to some methods
now taking a varargs array of labels as last argument. Please recompile any code that depends on the BatchInserter.
2.0.0-M01 (2013-04-08)
----------------------
o Added support for labels across all APIs: Cypher, Core Java and REST
o Added support for the new label-based indexes across all APIs: Cypher, Core Java and REST
o Improvements to shell, including import/export of small graphs via cypher statements
1.9.6 (2014-01-31)
------------------
Kernel:
o Fixes issue with batch inserter which could lead to record not in use exception
when adding properties
o Introduces monitoring for reads/writes to the logical log
Server:
o Fixes issue with transacions leaking when there is an exception while rendering the response
1.9.5 (2013-11-11)
------------------
Kernel:
o Fixed NPE in PersistenceWindowPool when concurrently loading non-mapped windows
o Fixed potential deadlock in PersistenceWindowPool cause by negative mark count
o Performance optimizations for best-first selector
o Database now waits on a timeout for transactions to finish before actually shutting
down, while preventing new transactions from starting up
Server:
o Shutdown hook is now properly removed on normal shutdown, removing potential thread
leak which might prevent orderly exit of the VM process
Graph Algorithms:
o Fixed potential suboptimal path finding in A* executions for particular graph topologies. Also
improved performance and memory consumption of A*
1.9.4 (2013-09-19)
------------------
Lucene index:
o Fixed issue where querying an index for "*:*" while having removed entities
from it in the same transaction might result in exceptions.
1.9.3 (2013-08-30)
------------------
Logging in console is now consistent across modules and more informative
Kernel:
o Remove hard dependency on Logback
o Introduction of logical_log_rotation_threshold to control log rotation.
o Autoconfigurator can handle cases where physical memory is less than the configured JVM heap
o Fixes index out of bounds errors when iterating over relationships
o Fixes race in persistent window pool which might lead to inconsistent data
Cypher:
o Fixes problems with extra columns showing up in some conditions
Server:
o Reintroduces, deprecated, the Configurator.getThirdpartyJaxRsClasses. Fixes, among other things, the authentication-extension
o Server now properly returns the version when asked through REST
Index:
o Stop keeping norms in Lucene indexes, saving space and memory
1.9.2 (2013-07-16)
------------------
Kernel:
o When flushing persistent windows, do so only if dirty. This is a performance improvement
for certain scenarios.
o Fixes bug where loading relationship chains with high ids would cause them to be
ignored when iterating over them.
Cypher:
o Fixes problem where Cypher would see changes while the query was running
Server:
o The Content-Type is now correctly used to set the text encoding, not Content-Encoding
o Fixes concurrency issue with generation of JSON responses
o HTTPS scheme is now properly propagated on batch requests
1.9.1 (2013-06-24)
------------------
Kernel:
o Fixes bug where creating an Index with an invalid configuration would not properly clean up
the configuration for it.
o Fixes race condition that occasionally would make Node.getSingleRelationship() mistakenly fail.
o Fixes compliance for non-logback logging implementations
o Cleanup of transactions that fail commit happens under the same lock as the commit
Cypher:
o Cypher execution results are now closeable
o Allow | to be used as a separator in foreach and extract+reduce
Server:
o Fixes bug where the last security rule would be the only one respected, if multiple would
be present
o Support for chained certificates
o Enabled streaming support for paged traversals
Packaging:
o Improved handling of JAVA_HOME on OSX
1.9 (2013-05-13)
----------------
Kernel:
o Performance improvement on initial loading of relationship types during startup
1.9.RC2 (2013-04-30)
--------------------
Kernel:
o Fixes race conditions on usage of persistence windows' byte buffers that occasionally led to buffer over/underflows.
Server:
o Create unique node with properties that have collection values properly casts them to arrays
o Data visualization editor now navigates back to the data browser on save and cancel
Cypher:
o Fixes problem when sending down custom queries to index providers
1.9.RC1 (2013-04-15)
--------------------
Lucene Index:
o Lucene upgraded to 3.6.2
Server:
o Introduces new splash screen containing a guide to Neo4j. Several small aesthetic improvements
Cypher:
o Fixed #578 - problem with profiling queries that use LIMIT
o Fixes #550 - problem when using START after WITH
o Allows single node patterns in MATCH
o Fixes problem for some patterns and all-nodes start points
o Fixes #650 - issue when doing multiple aggregation expressions on the same identifier
o Added timestamp function
Packaging:
o plugins/ subdirectory is searched recursively for server plugins
1.9.M05 (2013-03-05)
--------------------
Now compiles and runs under JDK 7
Kernel:
o Concurrent modifications to relationship chains now do now lead to RecordNotInUse exceptions or
cache poisoning
o Proper tx management will now make negative transaction counts impossible
o IndexProvider is now deprecated, replaced by KernelExtensionFactory
o Store locks are respected from read only instances too
o grab_file_lock configuration setting is now deprecated
Lucene Index:
o LuceneIndexProvider is now replaced by LuceneKernelExtension
Server:
o Added support for X-Forwarded-Host and X-Forwarded-Proto headers to allow parameterising of
links in data for hosting behind proxy servers.
JMX:
o JMX will now provide info on all configuration values, including the defaults not explicitly set
Cypher:
o Fixes #450 - Predicates in WHERE are not evaluated correctly for certain patterns
o Fixes problem with null comparisons and optional relationships
o Made it possible to run the parser concurrently
o DISTINCT is now lazy, and keeps the incoming ordering
o Added execution plan descriptions to execution results
o Fixes #464 - getDeletedRelationships does not work for javacompat.ExecutionResult
o Fixes #535 - 'INTERNAL_SORT' columns show when doing RETURN * ORDER BY
o Added experimental profiled query support
o Fixes #489 - CREATE UNIQUE does not work as expected inside FOREACH
1.9.M04 (2013-01-17)
--------------------
Kernel:
o Start entries are now explicitly marked as written, solves a bug that might cause recovery to fail
Server:
o Increased performance for rest-batch-operations by a factor of 100
Cypher:
o Clearer error message for when aggregations are used in ORDER BY and not in RETURN
o Fixes #394 - Identifiers inside of FOREACH get the wrong type
o Fixes #390 - IN/ANY/NONE/ANY/SINGLE causes RuntimeException for some patterns
o Fixes #387 - Some patterns produced "Unexpected traversal state" in Cypher
o Upgraded the Scala version to 2.10
o Fixes #355 - Collections in collections are still Scala collections instead of Java collections
1.9.M03 (2012-12-21)
--------------------
Server:
o Pulled out Gremlin as separate plugin to support different versions
Cypher:
o Fixes #336 - Patterns that re-use a pattern node can produce non-existing matches
o Fixes #369 - The substring-function sometimes fails when no length is specified
1.9.M02 (2012-11-30)
--------------------
Kernel:
o Made sure that auto-indexing removed graph elements from indexes when they are delete
o OrderByTypeExpander keeps ordering of type AND direction
o Fixed an issue where a lock on a store was sometimes not released
o Old GraphDatabaseSetting classes are now wrappers for Settings instances
o Fixes an issue where an incomplete 2PC transaction could cause recovery to not be triggered
o Optimizations for read performance
- Cache refers to relationship types as ints instead of Strings.
- Binary search on sorted arrays for finding properties and
relationship types in the cache.
- Less objects instantiated during getting and iterating relationships.
- Reduced number of map lookups significantly for a getProperty call,
especially outside transaction or in transactions without any changes.
(previously 8 lookups whereof 2 synchronized, now down to as low as 2)
- Uses ThreadLocal as mapper from thread to transaction
- Refactored LockReleaser into TransactionState, associated with each
transaction instead
Server:
o Server now allows - under some specific circumstances - setting empty arrays as properties.
Specifically, it is allowed if there is a pre-existing array property on the entity from
which the server can infer the type of array to store.
o Traversal Javascript is now security sandboxed. It is possible to turn the sandbox off for
the next two releases, for backwards compatibility.
Cypher:
o The traversal pattern matcher now supports variable length relationship patterns
o Fixes #946 - HAS(...) fails with ThisShouldNotHappenException for some patterns
o Made Cypher better at keeping a numeric type. Adding two integers now returns an integer, and not a double.
o Major refactoring to make certain Cypher is more lazy
o When asking for the top x rows by some value, Cypher will now only keep a list the size of x
o Fix so identifiers created inside a foreach can be used by other statements in the foreach
o Fix for problems when using patterns with multiple unnamed nodes
o Fixes problems when doing ORDER BY ... LIMIT x. When x is larger than the input set, sorting was never done.
1.9.M01 (2012-10-23)
--------------------
Kernel:
o XaDatasources now implement lifecycle and their registration with XaDatasourceManager triggers TxManager recovery
on startup.
o Neo4j logical log now handles running out of disk space at a critical point gracefully.
o Kernel extensions are now factories that create instances which participate in the database's lifecycle
o Fixes a race condition around relationship chain loading from multiple threads on the same node
Cypher:
o Predicates can now be returned and used to set properties
o Fixes #797: CREATE UNIQUE now makes sure used identifiers have the same properties even if
they are re-used without the properties
o Added the traversal matcher, which uses the new traversal framework abilities to do
pattern matching. It should provide for nice performance benefits for a lot of queries.
o Fixed #866: Changed the LRU cache to make it safe to use concurrently, and made the parser single threaded
o Added the reduce() functionality
o Made addition automatically convert numbers to strings when adding the two together
o Added the string functions: str(), replace(), substring(), left(), right(), ltrim(), rtrim(), trim(), lower(), upper()
o Added the possibility to use ORDER BY, SKIP and LIMIT together with WITH
o Fixes #904: CREATE UNIQUE doesn't work with parameter maps
o Fixes #908: Parameters do not survive WITH if it has aggregation
o SET can now be used to set properties on nodes and relationships from maps or other graph elements
1.8.RC1 (2012-09-05)
--------------------
Kernel:
o Removed contention around allocating and moving persistence windows so that a thread won't need to await
another thread doing this refresh, instead just continue knowing that the windows will be optimally
placed in a very near future.
o Removed contention around translating a key (as String) into the ID by using copy-on-write map instead
of a concurrent hash map. Used in property key as well as relationship type translation.
o Fix for Node/Relationship#getPropertyValues() sometimes returning null values from the iterator.
Server:
o Upgraded Jackson JAXRS to version 1.9.7
o Keeping the Cypher execution engine between calls makes it possible to re-use execution plans
o added User-Agent header tracking to udc to determine rest-driver usage
Cypher:
o Removed the /../ literal for regular expressions. Now a normal string literal is used instead
o Concatenation handles types better
o Changed how the graph-matching module is used, to make it safe for concurrent use
o Better type error messages
o Renamed iterable to collection
o Fixed #795: so that WITH keeps parameters also for empty aggregation results
o Fixed #772: Creating nodes/relationships goes before SET, so SET can run on already created elements
o Added error when using != instead of <>
o Fixed #787: Issue when comparing array properties with literal collections
o Fixed #751: Better error message for some type errors
o Fixed #818: Problem where properties could only have scalar values (they can be arrays as well)
o Fixed #834: Gives relevant syntax exception when properties are entered in MATCH
1.8.M07 (2012-08-08)
--------------------
Kernel:
o Traversal framework backwards compatibility
+ Cleaned up any breaking changes
+ Removed Expander#addFilter
o Kernel JMX bean instance identifier is now reused and can optionally be set explicitly via forced_kernel_id config setting
Server:
o Consoles in webadmin can now be disabled.
Cypher:
o Added escape characters to string literals
o Renamed `RELATE` to `CREATE UNIQUE`
UDC:
o Added edition information (community, advanced, enterprise)
o Added a cluster-name hash so that stores originating from the same cluster can be aggregated
o Fixed release version and revision
o Changed precedence of database configuration over internal udc configuration
o Added distribution information (dpkg, rpm, unknown)
1.8.M06 (2012-07-06)
--------------------
Kernel:
o Deprecated AbstractGraphDatabase.transactionRunning()
o Changed synchronization of applying transactions to prevent a deadlock scenario
o Original cause can be extracted from a transaction RollbackException
Server:
o Fixed issue that stopped the server from starting without the UDC-jars.
Cypher:
o Fixes problem when graph elements are deleted multiple times in the same query
o Fixes #625: Values passed through WITH have the wrong type
o Fixes #654: Some paths are returned the wrong way
1.8.M05 (2012-06-25)
--------------------
Kernel:
o Configurable amount of logical logs to keep, by for example number of days or size on disk.
keep_logical_logs configuration is extended to support values such as: "10 days", "200M size" a.s.o.
Regardless of configuration there will always be at least the latest non-empty logical log left.
o Reduced synchronization while memory mapping files, leading to increased multithreaded performance
Server:
o Added support for multi line Cypher queries in webadmin browser
Lucene-index:
o Removed lucene_writers_cache_size and have lucene_searcher_cache_size decide for both, since
it's doesn't make sense to have a writer w/o a searcher and isn't possible to have a searcher
w/o its writer.
o Loosened contention regarding getting index searchers for querying.
Cypher:
o CREATE and RELATE can now introduce path identifiers
o String literals can now contain escape characters
o Fixes #600: Double optional with no matching relationships returns too many rows
o Fixes #613: Missing dependencies not reported correctly for queries with RELATE/SET/DELETE
o Fixes around optional paths
1.8.M04 (2012-06-07)
--------------------
Kernel:
o Additions to the traversal framework:
+ Bidirectional traversals (with BidirectionalTraversalDescription). AllPaths/AllSimplePaths
uses this feature and are now faster due to less relationships being traversed.
+ Multiple start nodes (as well as multiple end nodes for bidirectional traversals).
+ PathExpander (RelationshipExpander for Paths) which has the full Path passed in instead of
just the end node of the path. It can also see and modify a user defined traversal branch state.
+ Metadata about the traversal, for the time being: number of relationships traversal and
number paths returned.
+ Added Path#reverseNodes() and Path#reverseRelationships which gives all nodes/relationships in
a path in reverse order (starting from the end node going back to the start node). More relevant
in many scenarios as well as allowing for a more efficient implementation.
+ Sorting of traversal results, specify with TraversalDescription#sort(Comparable).
+ Some measure to reduce memory consumption and garbage generation during traversals.
Graph-algo:
o AllPaths/AllSimplePaths uses the new bidirectional traversal feature in the traversal framework.
Less relationships now needs to be traversed to find the requested paths.
o Added an implementation of the shortest path algorithm with the bidirectional traversal feature.
Cypher:
o CREATE now accepts full paths and not only single nodes and relationships
o Path patterns can now be used as expressions and as predicates
o Fixes bug where RELATE fails to compare array properties
o Fixes #573: Arithmetics operations have wrong type
o Fixes #567: Parameter maps coming through REST are not parsed correctly
o Fixes #563: COUNT(*) does not return 0 for empty result
o Fixes #561: RELATE doesn't work as expected with map-parameters
1.8.M03 (2012-05-24)
--------------------
Kernel:
o Changed array map to CHM in property index manager, better multithreaded performance
Shell:
o Added BEGIN TRANSACTION/COMMIT/ROLLBACK
o Sessions now live on the server side instead of on the client, which means that not just
serializable values can be set there. Paves the way for Cypher making use of it.
Server:
o keep_logical_logs is now respected if set to false - default is still true
Cypher:
o Added RELATE
o Changed the CREATE syntax, so it looks more like RELATE
o Fixes #506: delete head(rels) doesn't work
o Fixes #508: length function on array properties doesn't work
o Fixes #512: start n=node(*) match n-[r?]->() delete n,r not working
o Fixes #514: Extract doesn't work with array properties
o Fixes #523: String literals not parsed correctly in CREATE statement
o Fixes #526: cypher filter in return clause
o Fixes #536: SQRT only returns an integer
o Fixes #543: Appending elements to collections
1.8.M02 (2012-05-11)
--------------------
Kernel:
o Optimized short string and short array encoding algorithms
o Fixed problem with SpringTransactionManager during HA master switch
Shell:
o Shell can now be exited with Ctrl-D
Server:
o Support for streaming results for http batch operations.
o Proper encoding of Index URI key/value pairs.
o Fixed Swedish character problem in webadmin string properties.
o Webadmin chart labels have nice formatting now.
Cypher:
o Added the possibility to create nodes from an iterable of maps
1.8.M01 (2012-04-26)
--------------------
o Byte array properties are handled in a more optimized way, increasing performance by a couple of times at least.
o Fix for an issue where update of cache when creating a relationship on a very dense node would take longer and longer time.
o Fix for an issue where a recovery would sometimes fail with it reporting that a start record already had been injected.
o Added "create" shell app for Cypher queries only doing creations.
Server:
o Added streaming to REST API. All representation implementations have been adapted to produce their data lazily.
o Added HTTP logging.
Cypher:
o Added the possibility to return all graph elements using RETURN *
o Added CREATE, SET, DELETE, FOREACH, WITH
o Fixes issue #432, #446
1.7 (2012-04-18)
----------------
o Moved BatchInserter to a different package.
o Fixed 'Record Not In Use' issue with creating and setting Node properties with the BatchInserter.
Cypher:
o Added the possibility to use multiple relationship types on patterns
o Fixed bug when aggregation is used in ORDER BY and not listed in the RETURN clause
Server:
o Added scored index results to REST API
o Improvements to installation docs for the server
o Added auto index management API to REST, fixing #399
o Fixed unicode issues in batch operations API in windows and OS X
o Server now disallows creating indexes with empty names. Closes #311
o Attempting to delete a non-existing index now returns 404, closes #349
UDC:
o Modified UDC to run one thread per DB, and to shut down background thread on unload. Closes #279
o UDC now sends the machines MAC adress to Neo Technology, to separate between instances behind firewalls
o UDC now sends database registration ID to Neo Technology, if one is available
o UDC now sends "tags" to Neo Technology, these contain information about the type of deployment, such as language, web-container, app-container, spring, ejb
1.7.M03 (2012-04-11)
--------------------
o Removed old OSGi support in favor of the new and better one.
o Added possibility to use logback for logging.
o Renamed array cache to GC resistant cache (GCR) and moved it to enterprise.
o Fixed problem with GCR cache that could cause it to calculate incorrect size.
o Fixed problem with closing of messages.log on windows
1.7.M02 (2012-03-26)
--------------------
o Added lock free atomic array cache that avoids triggering full GCs.
o Added GC monitor that will keep track on how much the JVM blocks application threads.
o Fix for an issue where upgrading indices with an unclean shutdown.
1.7.M01 (2012-03-12)
--------------------
o Fixed bug in PropertyStore that during recovery would throw exception if the last record was incomplete.
o Fixes to transaction log start position caching which mitigates a performance issue and fixes a caching issue during rotation.
o Fixed a couple of issue around copying incomplete transaction to new log during a log rotation.
o Fixed a property cache poisoning bug and some stale references leaking.
o Fixed a data race issue between threads removing the same property while the node is evicted from cache.
o Fixed an issue where a property record in the logical log was missing its owner.
o Log messages in messages.log are now printed in UTC time zone so that it's the same across servers.
o Fix for an issue where a full rebuild of an id generator (rebuild_idgenerators_fast=false) could result
in exception when adding free ids.
o Fix for issue which would close an id generator as clean if a startup failed at the wrong time, which would make
the id generator diverge from the store it held ids for and possible truncate that store file the next clean shutdown.
Indexing:
o Added LowerCaseKeywordAnalyzer and a clear test for it which shows how to configure a case-insensitive exact index.
Cypher:
o Added literal collections and the IN predicate
o Added HEAD, TAIL, LAST and FILTER
o Added ! so that missing property can evaluate to false
o BREAKING CHANGE: To check whether a property exists on a node, use the HAS(...) function
o Arithmetic & string concatenation
o An identifier can now be assigned all the nodes/rels in the graph - START a=node(*)
o Predicates can be specified inside of a pattern relationship description
Server:
o Fixed a NPE in guarded database for the result of Index#putIfAbsent.
o Added SSL support in the server.
o SecurityRule implementations can now use simple wildcards to allow whole sub paths of URIs to be covered by the rule.
o Added an "order" parameter to index REST queries to control result ordering.
Shell:
o dbinfo command now able to print simple values as well as arrays and compound values as JSON output.
o A shell server which isn't remotely avaiable doesn't touch RMI, neither does a client which connects
to a server within the same JVM. This makes for less RMI garbage when forgetting to call shutdown().
o Fixes problem with eval command in that it couldn't execute a single-line command, which made it impossible
to do ./shell -c 'eval ...' from outside
UDC:
o Added MAC address to pings.
1.6 (2012-01-19)
----------------
o Fixed a ConcurrentModificationException problem in lucene index when rotating logs and listing store files.
o Fixes issues #173, #118, #138, #103
o Minor performance optimization in property handling code.
Cypher:
o Lots of changes to the parsers error reporting
o Queries can now be pre-pended with which parser version to use
o Database configuration can now change which version of the parser to use as default
1.6.M03 (2012-01-12)
--------------------
o Added a different aggregation logic. Makes aggregating on the same columns as sorting much faster
o Made it possible to query on array properties
o Fixed bugs #157,#140,#168,#170 and a bug which prevented a node sent in as a parameter unable to be returned in a result
o Added means of introspecting locks taken by the LockManager.
o Added a diagnostics API.
o Added Index#putIfAbsent which ensures uniquely put key/value pair for an entity.
o Added UniqueFactory which gets or creates entities uniquely using Index#putIfAbsent
o Fixed an issue with upgrading an 1.5.M02 store where a "store version" record wouldn't be added and which caused problems after non-clean shutdown.
o Fixed an issue where sometimes dual start entries for a transaction would be added in the logical log.
o Upgraded to Lucene version 3.5.
o Added request timeout, controlled with org.neo4j.server.webserver.limit.executiontime (disabled by default).
Request header (max-execution-time) can shorten it if specified.
o Fixed issues #113, #166, #172
o Allow overriding of server base url for when test browser needs to access server via a different hostname from the bind address.
o Exposes get-or-create-uniquely via REST in ex. POST /index/node/<name>?unique {...}
o Added shell command mknode for creating new nodes w/o creating a relationship.
1.6.M02 (2011-12-16)
--------------------
o [server] Webadmin data browser now supports cypher queries
o [server] DEPRECATION: Cypher execution is now part of the core REST API, the cypher plugin is deprecated.
o [server] Updated to gremlin 1.4
o [server] Fixed bug in how auto indexes are represented
o [server] Max request execution time can now be limited
o [server] Hypermedia URLs returned by the server now set their host based on the HTTP host header
o [kernel] Lower memory usage of ImpermanentGraphDatabase.
o [kernel] Abstracted stores that stores id/name pairs into AbstractNameStore/AbstractNameRecord and removed lots of duplicated code.