Skip to content

Neo4j 2.0 Enterprise changelog

Jonas Kalderstam edited this page Mar 31, 2017 · 2 revisions

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

Cluster:

  • Fixes issue where an instance could revert into SLAVE mode while shutting down.

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

HA:

  • Fixes potential deadlock when concurrently shutting down the database and role switching
  • Fixes issue where cluster would become unresponsive if a message would get lost

Cluster:

  • Fixes issue where failed instances would not be able to rejoin the cluster after restart
  • Throttles output of learn failure messages that could create big messages.log files
  • Adds INSTANCE_ID header to every message, solving class of problems where reusing a URI would cause denied entry errors
  • Introduces throttle in the message logging of cluster transitions

Backup:

  • Backup no longer differentiates between full and incremental backup, instead automatically chooses the best option to use. This also handles cases where a backup is very old and can no longer be incrementally backed up. OnlineBackup#incremental(..) and OnlineBackup.full(..) are now deprecated, and will be removed in the next major release (3.0.0).
  • Fixes issue with backup client shutting down the network connection before the backup complete

2.0.1 (2014-01-04)

HA:

  • Index delete now propagates properly across all cluster nodes
  • Slaves now retry switching, making possible overcoming temporary failures
  • Remote transaction initialization is now explicitly marked and tracked, solving transaction leakage and reuse problems
  • HA instances no longer require a snapshot on cluster join
  • HA instances now properly switch to PENDING state when losing quorum
  • Fixes slave deadlock problem
  • Transactions now happen in the context of a master epoch, to solve issues with transactions wrongly propagating between masters
  • Introduces monitoring for remote calls between cluster instances

Cypher:

  • Fixes a concurrency problem in query parser

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.

Backup:

  • HA backup instances now are logged as backup instead of "-1"

Cluster:

  • Fixes message reordering issue
  • Fixes a Paxos instance reuse issue
  • Cluster join denial now includes cluster configuration
  • Fixes issues with proper Payload values passed around

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: 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(). o The GCResistantCache is now called the HighPerformanceCache. The configuration for enabling it has changed from 'gcr' to 'hpc', although the old setting will remaing functional until the next major release.

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.

Backup: o BREAKING CHANGE: Removed deprecated org.neo4j.backup.check.ConsistencyCheck main class. This is replaced by org.neo4j.consistency.ConsistencyCheckTool.

2.0.0-M06 (2013-10-15)

  • Windows desktop GUI added

HA: o Constraints can now be created in a running HA cluster

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

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)

  • 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