Neo4j 2.0 Community changelog - Mats-SX/neo4j GitHub Wiki
###2.0.3 Cypher:
- MERGE must fail when trying to create 2 nodes with same id but different labels (e.g., MERGE (a: Foo)-[r:KNOWS]->(a: Bar))
- Allow Cypher split() with empty separator
- Ensure Cypher range() works with negative step values
Kernel:
- Fixes a deadlock issue in the page cache
- Fix a transaction log issue where the log could be written to after tx manager marked as NOT_OK.
- Performance improvements for concurrent reads
###2.0.2 Cypher:
- Fixes #1897 - goes into never ending loop for some aggregate queries
- Add the functions toInt(...) and toFloat(...)
- Renames the Cypher type Double to Float
- Add the function split(...)
- Reading a non-existent property from a map returns null rather than failing
- MERGE will choose a direction when it has to create a relationship if you use an undirected relationship pattern
Kernel:
- Fixes an issue with tx log reading in severely damaged log files.
- Fixes a JVM deadlock issue between committing and a reading thread
- Can now handle more gracefully a larger set of failed index states
- Logical logs are now kept, by default, for 7 days to make backup more likely to choose incremental.
- Fixes issue where store migration forgets about legacy indexes
- Datasource specific transaction application now respects global TM state
- 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.
- Fixes an issue where indexes that have been dropped would fail recovery if commands to activate them were run in recovery.
- Fixes byte count monitoring
- Fixes issue with proper update of indexes that came from improper command execution order
- Fixes memory leak in XaResourceManager that could lead recovered transaction application to delay noticeably
- Fixes null pointer exceptions coming from LazyProperties being half loaded while a datasource restart happens
Server:
- Fixes github issues #1872, #961 that deal with Content-Encoding headers
- 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:
- Improve speed of verifying unique constraints on constraint creation.
- Improve speed of creating label scan store in BatchInserter.
- Fixes issue with batch inserter which could lead to record not in use exception when adding properties
- Introduces monitoring for reads/writes to the logical log
Server:
- Fixes issue with transactions leaking when there is an exception while rendering the response
Cypher:
- Fixes bug around MERGE inside a FOREACH inside a FOREACH
- Makes it possible to write MERGE queries with no already known parts
- Fixes problem with compiling queries with NOT expressions in them
- Fixes #1735 - Indexes and AND predicates produce wrong results
- Fixes #1876 - Null nodes and properties should be ignored when SETting properties
- Fixes problem with parser not being thread safe. State is bad, m'kay?
- Add support for double literals in exponent form
- Use internal heirarchy for types. Previously dependeded on Scala type hierarchy
- Fixes MERGE without any identifier previously known
- Corrects numerous inconsistencies when performing static type inference during compilation.
###2.0.0 (2013-12-11) Cypher:
- Fix for problem with index lookups against properties
- Fix: MERGE should work when finding multiple elements
- Fix: Should support updates for merging
- Fix issue when mixing Cypher queries of different versions
- Fix problems with CREATE for relationships without declared nodes
- Allow MERGE to run inside FOREACH
- Prevent the use of parameter maps in MATCH and MERGE
###2.0.0-RC1 (2013-11-21) Kernel:
- BREAKING CHANGE: Reference node has been removed.
- 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.
- BREAKING CHANGE: Removed deprecated settings from org.neo4j.graphdb.factory.GraphDatabaseSettings. These settings are no longer effective and can be removed without any effect.
- 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.
- BREAKING CHANGE: Removed deprecated org.neo4j.graphdb.PropertyContainer#getPropertyValues(). Instead use org.neo4j.graphdb.PropertyContainer#getPropertyKeys() and org.neo4j.graphdb.PropertyContainer#getProperty(String).
- 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.
- BREAKING CHANGE: Deprecated constructors of EmbeddedReadOnlyDatabase and EmbeddedGraphDatabase have been removed, in favor of the long-advertised alternative GraphDatabaseFactory.
- BREAKING CHANGE: All deprecated methods in GraphDatabaseAPI have been removed in favor of getDependencyResolver().
Cypher:
- Add OPTIONAL MATCH to Cypher
- Remove question mark symbol from patterns in Cypher
- Fixes 1313
- Fixes problem with collection index types
- Changes behaviour of LAST/HEAD/TAIL and collection slice - they now all return null for ranges outside a collection
- Fixed #1471 - SETting a relationship to a map value fails
Shell:
- Add '-' as filename for piping stdin directly into the shell, behaves as a file import.
Server:
- 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.
- BREAKING CHANGE: org.neo4j.server.database.Database is now an interface. Direct uses of the class can be replaced by one of its implementations.
- 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)
- Windows desktop GUI added
Cypher:
- Parenthesis around nodes are now mandatory if a label is used on the node
###2.0.0-M05 (2013-09-10) Kernel:
- BREAKING CHANGE: GraphDatabaseSettings now only exposes Setting, deprecated settings classes have been removed.
- Fixed problems with array properties being updated multiple times in a single transaction
- Adds label store as an index
- Transaction now implements AutoClosable
- Distinguish between data and schema transactions
- Unique constraint validation for new data
Cypher:
- Promote the experimental parser to the default
- Added literal maps
- Makes RETURN only queries valid
- Labels on optional nodes no longer stop the whole MATCH clause from returning results.
- Updated NOT precedence
- Added collection slice and collection index
- Added list comprehension documentation
Shell:
- Adds support for RETURN only Cypher queries
###2.0.0-M04 (2013-08-08) Kernel:
- BREAKING CHANGE: Require Java 7
- BREAKING CHANGE: Transactions are now required for all operations throughout Java Core API, read operations as well as write operations
- Define proper equality for indexing of array properties
- BREAKING CHANGE: Equality for indexing of number properties compares numbers independent of underlying primitive Java type
Cypher:
- Fixes #844 - Label predicate do not work on optional nodes that are null
- Fixes #897 - Cypher start doesnt allow combining multiple starting points with start node sets
- BREAKING CHANGE: Removes "?", "!" syntax for accessing properties. Missing properties are now treated as null
- Introduced a new experimental and fast PEG parser
- BREAKING CHANGE: Escaped identifiers in the RETURN clause are kept as the user entered them
- BREAKING CHANGE: No longer possible to use expressions and params to identify nodes in patterns
- BREAKING CHANGE: Use "|" in favor of ":" in FOREACH, EXTRACT and REDUCE to avoid disambiguity with label syntax
Cypher:
- Fixes a concurrency problem in query parser
Server:
- 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:
- Read-only index results are closed properly
Cypher:
- Make Cypher execution results closable
- Adds Cypher label scan hint
- Removes alternative WITH syntax in Cypher
- Fixes bug with UNION text output
- Added startNode()/endNode()
- Fixes #780 - Queries with literal collections fail against schema indexes
Server:
- Added support for transaction keep-alive
###2.0.0-M02 (2013-04-28)
- In server, added REST transaction support
- In cypher, added MERGE clause
- In cypher, MATCH now supports single-node patterns
- In shell, support for listing indexes and their state
- Support for labels in the org.neo4j.unsafe.batchinsert APIs.
- 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
- 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
- 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)
- Added support for labels across all APIs: Cypher, Core Java and REST
- Added support for the new label-based indexes across all APIs: Cypher, Core Java and REST
- Improvements to shell, including import/export of small graphs via cypher statements