Neo4j 2.3 Community changelog - Mats-SX/neo4j GitHub Wiki

###2.3.1 ######Not yet released

Cypher:

  • Allow exists() to accept maps, enabling IS NOT NULL to work with LOAD CSV

###2.3.0 ######Includes all changes from 2.2.6

Cypher:

  • Fixes #5653 - Reverted eagerness changes

###2.3.0-RC1 ######Includes all changes from 2.2.6

Browser:

  • New drawer for :config settings
  • :play remote guides
  • Handle 403 responses from server
  • Add config to control outgoing connections (feature only active in Enterprise Edition)

Consistency-checker:

  • Redesign of record access pattern and added parallelization for faster and more scalable consistency checker. The previous behaviour can still be had by adding --experimental=false

Cypher:

  • Fixed a MergeInto bug so that the direction of the relationship is considered when creating relationships
  • Generates a warning when a plan using LOAD CSV uses MATCH or MERGE on a large label without an index
  • Generates a warning when a plan using LOAD CSV also contains an EagerPipe
  • Introduce STARTS WITH, ENDS WITH and CONTAINS
  • ShortestPath no longer has a max limit of 15 steps
  • Generates a warning when using shortestPath without supplying an upper limit
  • Removes eagerness from query execution plans in cases where it is not necessary
  • CREATE from lists is now deprecated
  • Will now allow literals to be placed on the left-hand side of an inequality predicate also when using an index
  • MergeInto will now properly take direction into account when creating relationships

Import-tool:

  • Prints help information if no arguments were given to the import tool.
  • Root cause like stack traces are printed for unexpected errors, regardless of the value of --stacktrace that user supplied. That option still controls whether or not stack traces should be printed for common errors, which are usually accompanied a more descriptive explanation.
  • Includes meta data about the store and stored transactions in diagnostics logging during startup.

Kernel:

  • Change the default dbms.pagecache.memory setting from 75% to 50% of free system memory after the JVM heap.
  • Fix a bug that caused an incorrect page cache size to be reported when the dump_configuration setting was enabled.
  • Store files no longer have trailers in the end. They were an old artifact of how neo4j used to determine version of store and whether or not there was a clean shutdown. Now there are other mechanisms doing both those checks.
  • Default amount of memory dedicated to the page cache is set to 50%, down from 75% due to occasions of less than expected memory available for the operating system and other services that might be used in a neo4j server.

Server:

  • Client and transient errors cause transactions to be rolled back immediately, instead of merely be marked as failed with the purpose to fail the upcoming commit. This has a more expected behaviour to the user.

Packaging:

  • Neo4j console does not fork a subprocess on Linux, enabling easier process management
  • Resolved Github Issue #5531: Added aliases for Host and Port. This stops the java command accidentally have multiple arguments on the command line e.g. -port 1337 -port 1337
  • Resolved Github Issue #5533: Added text in the example to explicitly state that the Windows Service had already been installed
  • Resolved Github Issue #5536: Added link documentation about the NEO4J_HOME variable in the online manual

###2.3.0-M03 ######Includes all changes from 2.2.5

Cypher:

  • Allow arbitrary expressions for URL in LOAD CSV
  • Support for using compressed data with LOAD CSV
  • Added reverse function for reversing strings
  • Unfulfillable index hints (e.g. on non-existing indices) will now produce a warning or throw an error as configured
  • Now supports dynamic property lookup (f.e. using n['property'])
  • Usage of bare node patterns is now deprecated
  • Range queries can now be solved using index seeks
  • Prefer size() over length() for collections and pattern predicates
  • Accept lower case 'e' in cypher exponent double literals
  • Added support for join hints: USING JOIN ON n
  • Added "DETACH DELETE" to Cypher
  • Fixes a bug where input positions could become wrong on Windows platforms
  • The compiler is now preloaded on db startup, minimizing delay of initial query
  • Triadic selection is now supported
  • Function exists() can now make use of index scans
  • LIMIT now properly influence planning costs
  • Generates a warning when dynamic property lookup makes index plans impossible
  • Inequality predicates can now be chained on the form 0 < n.prop < 10
  • LIKE and ILIKE has been removed
  • ShortestPath should now return paths that fulfil any predicates enforced upon it
  • The str() function is now deprecated
  • Cypher queries will no longer be logged in messages.log

Graph-algo:

  • Correctness fixes to Dijkstra regarding floating point precision, which can now be supplied by user
  • Optimizations to Dijkstra where it didn't terminate as soon as it could have
  • Introducing bidirectional Dijkstra algorithm which often out-performs monodirectional Dijkstra
  • Shortest path algorithm supports result Path filtering

IO:

  • Adds commons-lang3 dependency
  • Uses vectored I/O for better throughput for flushing pages to underlying storage

Kernel:

  • Introducing cursors in Kernel API. Cursors will allow for less garbage (objects) created and more efficient usage of PageCursors
  • Status codes of the 'transient' classification now cause transactions to be rolled back. This resolves several outstanding issues where deadlocks, network errors and other similar problems required clients to manually roll back transactions. Only ClientError and ClientNotification classified status codes leave open transactions running.
  • Adds checkpoints to the log, decoupled from log rotation. This allows for asynchronous flushing of the page cache down to storage, resulting in short-to-no pauses for write transactions that would previously occur around log rotation.
  • Adds PropertyContainer#getAllProperties(), returning a Map<String,Object> of all properties as a more convenient and more performant way of getting all properties of a Node or Relationship.

Packaging:

  • Adds a Windows PowerShell for managing a Neo4j server

Browser:

  • Display cypher warnings in editor gutter
  • In database drawer: display only labels and rel types in use
  • Fetch labels / rel types / propertykeys at interval
  • On EXPLAIN and PROFILE frames, show cypher warnings view if warnings exists
  • Deprecate webadmin
  • When disconnected from database, check for connection every two seconds
  • Show server edition on :play start frame

###2.3.0-M02 ######Includes all changes from 2.2.2

Cypher:

  • Removed support for Cypher version 2.0 and 2.1, as announced
  • Produces error or warning if a query cannot be solved using the specified planner
  • Switched to using a new planner based on Iterative Dynamic Programming (IDP)
  • Switched to using Scala 2.11
  • Cypher now supports two new operators for string pattern matching: LIKE and ILIKE
  • It is now possible to escape '_' and '%' in string literals using backslash (for use with LIKE)
  • Specifying a default Cypher planner in the settings now only applies to the default language version / parser

Consistency Checker:

  • Consistency Checker now has an additional check for node label id arrays that are not sorted

Shell:

  • Print warnings and/or errors (as configured) from Cypher

Browser:

  • Code view of Cypher request frames. It displays info about the frame requests made to the REST API.

###2.3.0-M01 ######Includes all changes from 2.2.1

Cypher:

  • Added new warning mechanism. The first supported warning is generated for queries that contain a potentially unintended catesian product
  • Cypher may now use full index scans to solve queries containing has(n.prop) if apropriate

Server:

  • User has ability to configure jettys max header sizes with added configuration options:
    • org.neo4j.server.webserver.max.request.header
    • org.neo4j.server.webserver.max.response.header

Kernel:

  • Object cache (i.e. node/relationship/property data cached as java objects in heap) has been removed. This reduces heap usage as well as code complexity, while for most use cases maintaining or surpassing performance levels of 2.2.x. The following settings have been removed:
    • cache_type
    • node_cache_size
    • relationship_cache_size
    • node_cache_array_fraction
    • relationship_cache_array_fraction
    • cache.memory_ratio
    • high_performance_cache_min_log_interval
  • When setting properties on node/relationship existing property record chain is scanned for room to fit the new property before creating a new property record. This will have writes pay a small cost, but benefit readers as the property store will be more dense.

Import tool:

  • Added ability to skip duplicate nodes, i.e. multiple nodes with the same ID in the same id space. Maximum total number of bad entries (nodes and relationships) during an import is still controlled using --bad-tolerance=. Skipping of bad relationships/nodes can be enabled/disabled individually with --skip-duplicate-nodes and --skip-bad-relationships.
⚠️ **GitHub.com Fallback** ⚠️