Neo4j 3.0 changelog

MishaDemianenko edited this page Dec 16, 2016 · 207 revisions

For Neo4j 3.0 and later versions, the changelog is no longer split between the editions. Instead, if a change is edition-specific, this will be reflected by a sub-bullet in the changelog statement.

NOTE: All 3.0.x versions and milestones require java 8

3.0.9

Not yet released

3.0.8

Kernel

  • Fixes importer issue which could hang shutdown during panic #8198
  • Setting dbms.tracer=null will no longer prevent the database from starting when metrics are enabled #8402
  • Update legacy indexes to preserve documents sort fields on update #8462
  • Add deferred locks to a list of enterprise edition dependencies #8465

Cypher

  • Fix a bug where aliasing of aggregations caused queries to fail in semantic checking. #8278
  • Fixes a bug with eagerness on property reads. #8295

    Previous to this commit, the eagerness analysis system has been working with the assumption that the QueryGraph encodes all reads being done in a PlannerQuery. This is not correct, the QueryHorizon may also encode reads. This commit fixes eagerness issues related to property reads in the horizon, when those conflict with writes being done in the QueryGraph.

    Still left to do are reads made by functions in the horizon (labels(), properties()). Additionally, potential conflicts between reads in horizon and subsequent writes in the tail(s) of the PQs.

    Also fixed for the rule planner.

  • Fixes a bug whereby previously-bound nodes were created when using FOREACH on a mixed-type collection #8367

    Foreach on a mixed/Any type collection containing nodes should not create nodes already bound by the loop variable.

    Switches to use SemanticTable.isNode(_:String) which correctly infers node type.

  • Fixed error in relationship direction in VarLengthExpand description #8368
  • RETURN * with ORDER BY should not leak internal variable names in the final #8389

    result due to AST rewriting.

  • Ensures that shortest path enforces relationship uniqueness when using the exhaustive fallback plan #8395

    This only applies to cases where a predicate require the exhaustive fallback plan.

  • Make sure all expressions are shown in plan descriptions #8421
  • Upgrade Cypher compiler dependency to 2.3.8 #8487

Packaging

  • Print a helpful message if JAVA_HOME is incorrectly defined #8445

Bolt Server

  • Give client error message on all failures #8196

3.0.7

Kernel

  • Add possibility to use label store as a source of affected nodes for schema index creation. #7915
  • Lock node without relationships during detach delete. Fixes: #7771 #7991
  • Retry count store lookup in case of concurrent state change. #8003
  • Improved message when store upgrade can't be done #8023
  • Fix problem where terminating transaction from a different thread could end up terminating wrong transaction when using nested transactions. This could occur when one user attempts to terminate another user's transaction, but incorrectly ends up having their own transaction terminated. #8084
  • Fix number of fields growth in legacy indexes #8101

Cypher

  • Tweaks to query re-planning #7881
  • Fixes #7903 - resolves a type-checking bug for toInt() #7982
  • Refactor type checking for functions and expressions #7989
  • Fix type checking bugs related to mixed-type literal lists #7992
  • Make IN work with list slices and subscripts #8015
  • Faster planning for cartesian products #8046
  • Fix bug around IN predicate in Cypher #8053
  • Ensures property tokens are not attempted to be created on read operations #8100
  • asPrivateType not handling lists and maps #8225
  • Plan description fails for NestedExpression #8241
  • Fixed a NullPointerException in LabelsFunction #8256

High Availability

  • Includes reason for master replying NOT_LOCKED #7975
  • Increases the default ha.heartbeat_timeout value to 40s #8081
  • Adds configuration settings for ordering branch handling and store copying on slaves #8234

Tools

  • Fixed a race condition in neoj4-import with ID groups which would have some correct relationships considered invalid and logged into bad.log instead #8135

Config

  • Fixed parsing of config values with trailing spaces #8149 #8165

Browser

  • Cypher frame now only loads ascii table results when required #242
  • Update neo4j-driver to 1.0.4 #244

Bolt Server

  • Race conditions in ChunkedOutput #7963
  • Nicer error message when using null keys in maps #8169

Docker

  • Listen on localhost only when setting credentials #53

3.0.6

Packaging:

  • Debian packages now provide upgrade instructions when upgrading from 2.x to 3.x.
  • Fixed a bug in the Debian packages which caused an "upgrading from 2.x" warning to be printed even when upgrading from 3.x.

Cypher:

  • Fixes #7718 - resolves a bug where using coalesce with strings in a list fails if one of the items is null #7780
  • Fixes a bug so that lists containing null are now handled properly #7936

Kernel:

  • Fixed misleading error message on https port conflict #7854
  • (Enterprise only) Bumps store version for change in high-limit format. This requires setting dbms.allow_format_migration=true config for stores using that format, although no actual store upgrade will be performed since it's a backwards compatible change. The store will be marked as being of the newer version so that older version can't start on an upgraded store.#7916

HA:

  • Update ha component lifecycle to make sure we have only one active update puller on slaves. Fixes problem introduced in 3.0.5 #7800

3.0.5

Packaging:

  • The Docker image now exposes a /logs volume which can be used to access the Neo4j logs.

Cypher:

  • Fixes a bug causing queries using unnamed shortest paths to fail #7599
  • Fixes #7546 - resolves a bug with deleting the same node more than once using DETACH DELETE #7726
  • For empty statistics (such as when the database is empty), default to a single cardinality #7734
  • Fixes #7544 - resolves a bug with returning mutable map result values #7729
  • Fixes #7634 - escapes : when listing constraints #7763
  • Fixes an issue so that accessing the relationship type of a deleted relationship does not throw an exception #7796
  • Fixes the inability to use returned point types as parameters to later queries #7757

Kernel:

  • Open legacy indexes in read only mode when database started in read only mode (not applicable to ha setup) to prevent cases when usage of interrupts will result in deleted index #7651
  • Open schema indexes in read only mode when database started in read only mode (not applicable to ha setup) to prevent cases when usage of interrupts will result in deleted index #7657
  • Don't take locks for entities created in the same transaction #7628
  • Allow to access transaction id and transaction commit time on afterCommit in TransactionEventHandlers #7632
  • Improves the performance of CSV input data reading by parsing data in parallel if multi-line fields are disallowed #7605
  • Automatically rebuild indexes that fail to open on startup #7745
  • Faster import tool due to ability to better utilize all available resources and higher I/O saturation #7790
  • Speed up enterprise 'high limit' record format by adding possibility to store small records in a fixed references form to avoid variable length encoding/decoding costs #7670

Server:

  • Expanded key size used in the creation of server self-signed certificate from 1024 to 2048. Also expanded Diffie Hellman (DH) key size from default 1024 to 2048 for DH-RSA cipher suites that are used in server TLS handshakes #7614

3.0.4

Cypher:

  • Better handling for large number of filters #7415
  • Proper error handling for single new line cypher queries #7313
  • Fixes #7085 - Bad error message when parameter to CREATE UNIQUE is null #7399
  • Functions toInt(), toFloat(), labels(), type() now accepts arguments with type Any #7392
  • LOAD CSV failing to find the specified csv file is now a client error #7384
  • Preparsing option runtime=compiled is again valid but will use the interpreted runtime #7418
  • min() and max() now accepts strings properly - fixes #6979
  • Improve performance for queries with many OPTIONAL MATCH - fixes #7407
  • Property access is now possible on expressions of type Any 7567

Bolt:

  • Better handling of RESET message in session state machine #7356
  • Fixed NullPointerException in ChunkedOutput when writing response to driver #7470
  • Better readable error message when missing username and password #7487
  • TransientErrors (which includes DeadlockError) are reported to user #7116
  • Better error handling for unpackable values #7500

Browser:

  • Update neo4j-driver to 1.0.3
  • Fixed vizualisation bug where auto-complete feature would not display nodes and relationships

Kernel-Enterprise:

  • Allow relationship ids to be reused. Introduce property 'dbms.ids.reuse.types.override' to specify names of id types (comma separated) that should be reused. Currently only 'RELATIONSHIP' type is supported. #7555

Kernel:

  • Fixed exception thrown when iterating over reverseNodes() if Path was a single node long #7609
  • Fix failure propagation in concurrent environment during application of transactions to log #7621
  • Fixes issue in Neo4j 3.0 where refreshing a legacy index that had not changed since last refresh would cause a null pointer exception #7631
  • When terminating an unsafe transaction on slave during pulling of updates from master, termination-related information is now logged #7636

HA:

  • Fixes a problem where deleted property record ids may be reused twice after a role switch in HA, causing properties to be overwritten #7342
  • Unexpected exceptions during transaction application on slaves now causes kernel panic, to prevent partial application of transactions. #7457
  • Removal of read locks on properties together with a fix for previously found issue (#7349) in 3.0.3 #7477
  • Rethrowing errors from an END_LOCK_SESSION request, could previously delay/prevent HA state machine from switching to slave/master. Such errors are now logged instead, thereby solving this issue #7597

Import tool:

  • Relationship group chains are defragmented so that dense nodes are read more efficiently. This was recently changed as part of importing relationships per type due to high memory usage. With this change the memory requirements are unchanged, but adds the benefit of relationship groups being co-located on disk per node. #7435
  • Fixed an argument parsing bug in neo4j-import when multiple csv-files were specified on Windows #7292

Packaging:

  • Allow Debian package users to configure shutdown parameters via defaults #7323

3.0.3

Packaging:

  • Fixes a bug where changes to the NEO4J_ULIMIT_NOFILE default is not used on restart. (Debian packages only.)

Cypher:

  • Improves the performance of toInt - #7247
  • Improves the performance of variable-length queries containing all or none predicates - #7294
  • Improves the performance of IN for lists containing constants - #7253

Kernel:

  • Fix very rare decoding bug with dynamic records, where unused records would temporarily appear to be in use and contain garbage data - #7310
  • Reintroduced read locks on property reads until discovered issues have been resolved - #7349
  • Tools like consistency checker and backup no longer need to explicitly specify store format, this is now automatically detected - #7141
  • Decrease default sampling size gathering statistics for non-unique indexes, and introduced configuration setting to tweak this value - #7160

3.0.2

Known Issues:

  • Property record ids may be reused twice after a role switch in HA potentially resulting in overwitten properties
  • Properties may be read inconsistently on slaves in HA when simultaneously pulling updates

Cypher:

  • Fixes IDP solver configs to prevent unnecessary expansion - #7047
  • Miscellaneous improvements to LOAD CSV #7149
  • Use GeoJSON for point serialisation in REST - #7119 #7104
  • Fixes #7087 - resolves a bug whereby procedures yielding a collection of nodes were returning only a single node - #7112
  • Fixes #7046 - resolves a bug whereby paths could not be returned from procedures - #7105
  • Fixes #7084 - resolves a bug causing an out of memory issue when using PERIODIC COMMIT in the shell - #7109
  • Better error messages for percentile functions - #7142
  • Fixes #7059 - resolves a bug whereby using a regular expression in the WHERE clause led to invalid results being returned #7157
  • Fixes the running of MERGE inside FOREACH in compatibility mode - #7146
  • Fixes issue when removing properties from variables having an unknown type - #7152
  • Fixes #7053 and #7055 - allow ToString to defer some type checks to runtime - #7169
  • Improved error handling for spatial points - #7120
  • Set a Neo-specific user-agent when using LOAD CSV connections - #7210
  • Fixes the handling of null lists for the IN operator - #7190
  • Resolves the ambiguity between Geographic and Cartesian CRS - #7165
  • Gives a semantic exception when providing an aggregation function call as a direct argument to a procedure - #7197
  • Handles gracefully the accessing of properties of a newly-deleted node or relationship - #7217
  • Makes IN predicates faster by handling lists using auto-parametrization - #7248

Import Tool:

  • import-tool is now much faster at importing datasets that have a large number of dense nodes #7026

Upgrade:

  • Store upgrade from older versions may now change ids of relationships – this can invalidate the contents of manual relationship indexes #7026

Packaging:

  • Added ability to set max number of open files in /etc/default/neo4j (default behavior remains unchanged) #7095
  • Workaround for OpenJDK 9 being in the Ubuntu 16.04 repos #7222 #7188

Kernel:

  • Reading properties scales better by no longer needing to acquire read locks. This also removes experimental.use_read_locks_on_property_reads setting. - #7179
  • Fix rare record decoding exceptions caused by page reads racing with page writes to the same record, or page eviction. - #7089
  • Safer handling of unused property records #7060
  • Faster string/array decoding #7054
  • Improve error message for incorrect store format #7007
  • Fix problem when recovering with an invalid IdGenerator #7049
  • Fix issue with legacy index log corruption #7213
  • Fix issue with dense nodes not being recognised as such after a big import #7224
  • Fix issue of null being added to legacy indexes #7097
  • Safe freeing of aggressively reused ids #7072
  • Fix bug with partitioned index document update when document will be added to each partition #7153

Bug fixes:

  • The presence of the obsolete setting dbms.querylog.filename in neo4j.conf no longer stops Neo4j from starting up #7093
  • Fixed the - argument in neo4j-shell for reading files via STDIN #7090 #7056
  • Make sure /var/run/neo4j exists when starting the service #7086
  • Publish the jar for neo4j-slf4j which was missing from 3.0.0 and 3.0.1
  • Fixed the resolution of relative paths passed to command-line tools. #7231

Browser:

  • Display index used when doing NodeIndexSeek, in query plan
  • Update neo4j-driver to 1.0.1
  • Fix: Don't require server config browser.remote_content_hostname_whitelist to include protocol.
  • Fix: Don't display 0 ms for periodic commit queries.
  • Fix: Optimizations in text table rendering

3.0.1

Cypher:

  • Fixes concurrency errors on deleting nodes and relationships - #6928
  • Make detach delete atomic - 6b315e2
  • Fixes two phase locking - #7061

Neo4j Browser

  • URL param API to populate the editor on load. http://localhost:7474/?cmd=play&arg=movies will populate the editor with :play movies. Nothing is automatically executed, the users will have to execute manually.
  • Use server config browser.post_connect_cmd to define a command that the Neo4j Browser will execute once connected to the database.
  • Community Edition: Use server config browser.remote_content_hostname_whitelist to allow playing remote guides from specified sources. * to allow content from any hostname. Used to be Enterprise Edition only.
  • Added the ability to dynamically populate content in remote guides. Ex: <input value-for="foo"/> Hello <span value-key="foo"></span> type "bar" in to the <input> would produce Hello bar
  • Experimental: Graph StyleSheets (GraSS) can now be imported with the :style command. Ex: :style http://url-to-grass.
  • Fixed: Broken docs links on help topics.
  • Fixed: The styling editor in the visualization frame no longer disappears with every change.
  • Fixed: The display of HA and Cluster parts of :sysinfo now works.

Neo4j Desktop:

  • Configuration file can be specified as a command-line parameter, e.g. neo4j-ce.exe --config-file my-neo4j.conf
  • Fixed: The Options window now displays the correct location for the plugins folder.

3.0.0

Cypher:

  • Optimizes memory usage for aggregation queries - #6948
  • Fixes #6956 and #6876 - resolves a bug when deleting entities in a FOREACH query - #6896
  • Fixes rule planning issue regarding a bound relationship occurring multiple times in a pattern with unnamed start and end nodes - #6922
  • Fixes the logic around aggregations so that only variables in scope are used as grouping key expressions - #6917
  • Fixes the sampling of the Lucene index size - #6963
  • Fixes a transaction leak in the procedure result when using Cypher to execute a procedure - #6973
  • Fixes around PERIODIC COMMIT and transactions - #6974
  • Reverts a change causing regressions in query performance - #6996
  • Fixes transaction handling for PERIODIC COMMIT in the server and Bolt server - #6997 and #6995

Kernel - Enterprise

  • Make the new high-limit record format not enabled by default #6953
  • Dynamically configure the default record format specific settings [#6864](https://github.com/neo4j/neo4j/pull/6864
  • Restrict custom IO devices from performing store copy. #6901
  • Specify a default value for dbms.checkpoint.iops.limit #6949
  • Increase default backup timeout #6988

Kernel

  • Bug fixes
    • Fix deadlock caused by inconsistent lock ordering on nodes for relationships #6930
    • Fix an issue where progress reporting for batch import and database migration was overzealous. #6971

Procedures:

  • Fixed issue when having multiple CALL statement in a query #6950
  • Support CALL in neo4j shell #6916
  • Fix for leaking transactions in procedures #6973

Bolt Protocol:

  • Returning deleted nodes and relationships #6960

Neo4j Desktop:

  • The "command prompt" feature has been removed and there is now no way to run neo4j-shell or neo4j-import in a Desktop installation; most functionality of these tools is available in the Neo4j Browser; to use neo4j-shell or neo4j-import, install the tarball or zip package as appropriate for your platform.

Neo4j Browser:

  • New: Sample scripts section in Favorites drawer
  • Updated: External links to Neo4j docs
  • Fixed: Problem using Bolt when auth on server was disabled
  • Fixed: Bug where paths weren't rendered in visualization
  • Fixed: Periodic commits prepended by planner rule now works
  • Fixed: Bug where closing frame did not terminate cypher queries

Known Problems:

  • Java 8 is not included in Ubuntu 14.04 LTS, and will have to be installed manually prior to installing or upgrading to 3.0.
  • Custom procedures cannot be loaded in Neo4j Desktop.
  • Query termination via the Bolt protocol does not work.
  • Data for High Availability and Cluster not showing up in :sysinfo frame in Neo4j Browser.
  • The obsolete setting dbms.querylog.filename must not be present in the configuration file neo4j.conf or Neo4j will not start.
  • The settings to control GC logging (dbms.logs.gc.*) do not have any effect on Windows. On Windows GC logging can be configured by explicitly specifying JVM arguments using the setting dbms.jvm.additional in neo4j-wrapper.conf.

3.0.0-RC1

Server:

  • Changed some status codes for consistency #7009. See manual for current codes in use.

Cypher:

  • Introduce CALL ... YIELD syntax to mix Procedures within a Cypher statement #6670
  • Improve selectivity estimation for inequalities #6605
  • Ensure functions are case-insensitive for various optimizations #6717
  • Disallow multiple threads in procedures #6727
  • Made Expand(Into) more deterministic #6724
  • Improve the performance of queries containing multiple MERGE statements:
  • Bug fixes:
    • Fixed intermittent errors with stale plan cache query context #6602
    • Fixed create/merge with existing aliases identifiers #6733
    • Fixed combining dbhits and time in compacted query plans #6732
    • Fixed planning issues with label cardinality when aliasing variables #6751
    • Fixed planning issues for complex CREATE/MERGE queries #6758
    • Fixes #6488 - ensure that a modulo operation performed on a property does not lose precision - #6756
    • Fixed SET so that it supports setting a property with a generic expression representing either nodes or relationships #6802
    • Fixes #6809 - ensure that COLLECT(DISTINCT) handles null elements - #6814
    • Fixed double counting of self-loop relationships #6881
    • Fixed update queries so that variables introduced before multiple projections are carried through, thereby preventing the (re)creation of already-bound nodes/relationships #6867
    • Fixed inconsistent behaviour when attempting to access an array element with a non-integer index, so that any such query will now fail irrespective of whether the type of index is known beforehand or only at runtime #6858

Packaging:

  • Windows command line UI
    • The UI has been simplified so that it is no longer necessary to invoke the Powershell module. Neo4j can be started with bin\neo4j console; see the docs for more details.
    • The Powershell module's API has been simplified and updated. These changes are not backwards compatible; see the docs for more details.
  • logging
    • neo4j-gc.log is now called gc.log
    • Logs are now stored in the directory specified in dbms.logs.directory, and defaults to logs.
    • All logs use UTC timezone.
    • debug.log is now properly put in the logs directory when using Desktop.
    • Consistency checker reports now go in the logs directory.
    • http.log is now handled using the same mechanisms as the other logs, and is no longer configurable via logback.
  • directory structure
    • Certificates are stored in the certificates directory, and are called neo4j.key and neo4j.cert.
    • Databases are now stored in a directory called databases under the directory specified in dbms.directories.data
  • configuration
    • Obsolete and deprecated settings and automatic migration for them have been removed.
    • Many settings have been modified and configuration will need to be updated manually. See the documentation for details.
    • By default the online backup server now listens only on 127.0.0.1. This matches the previous behaviour of the settings file shipped in the packages, so default installations will see no change.
  • The Linux/OS X Neo4j scripts now respond to the following environment variables
    • NEO4J_HOME: The root of the Neo4j install. Defaults to the parent of the directory where the script is located. Must be set if that is not correct.
    • NEO4J_BIN: The directory where the scripts are located. Must be set if the scripts are invoked via a symlink.
    • NEO4J_CONF: The directory where configuration files are located. Defaults to ${NEO4J_HOME}/conf. Must be set if that is not correct.
  • Debian package
    • The service installed by the Debian package is now called neo4j instead of neo4j-service.

Kernel (Enterprise):

  • It is now possible to restrict the IO bandwidth consumed by the background check-pointing process, by specifying and IOPS (IOs Per Second) limit in neo4j.conf with the dbms.checkpoint.iops.limit=<some integer> setting. The setting is advisory, and followed on a best effort basis.
  • More efficient reference decoding in highlimit record format #6819

Kernel

  • Process all property updates from particular node as single update during index population #6624
  • Remove possibility to recover database directly from consistency checker #6830
  • Optimized page size during import #6611
  • Bug fixes:
    • Fix record counting in legacy Consistency Checker #6697
    • Fix bug where corrupted counts store may be interpreted as being valid #6849
    • Fixes issue with incremental backup failing with invalid high id #6627
    • Fix a bug in Windows with HA mode when connecting to self #6667
    • Fixed a bug where some properties could get dropped during large imports #6692

Procedures:

  • sys. top-level procedure namespace is renamed to dbms. #6880
  • dbms.components would now return Neo4j edition too #6878
  • dbms.changePassword now rejects the password change if the new password is the same with the current one. #6857
  • db.indexes now includes description, state, and index state fields #6710 #6725
  • db.indexes now also list unique indexes #6736
  • Made it possible to use CALL together with periodic commit #6837
  • Added a new built-in procedure dbms.queryJmx that allows querying JMX beans by name, and getting back a Neo4j-typed representation of the result #6835

Bolt Protocol:

  • Added severity in notifications to be returned in the result summary #6600

Neo4j Browser:

  • New: Neo4j Sync (sign in and sync your favorites, folders and grass)
  • New: Use Bolt for communication where it's available
  • New: New icons and a facelift for the editor
  • New: Added new default queries to favorites drawer
  • Fixed: Limiting frame count could remove pinned frames
  • Fixed: Set caret to end of line when browsing through history
  • Fixed: Viz glitch when too many relationships on a node
  • Removed: Webadmin

3.0.0-M05

Cypher:

  • Added properties() function to return graph entities as maps #6581
  • Made ENDS WITH an indexed backed predicate #6514
  • Improved performance for more counting queries by utilizing the counts store in more cases:
    • Counting labels/property combinations with existence constraint - #6472
    • Treating count(*) same as count(n) - #6472
  • Documentation:
    • Using list instead of collection in code and documents: #6388, #6415
  • Bug fixes:
    • Fixed OOM errors on count(*) with unwind #6463
    • Fixed eagerness with deletes followed by reads #6549
    • Fixed inability to execute queries with query_cache_size=0 #6569

Packaging:

  • directory structure
    • it is no longer possible to configure Neo4j to mount a database on an arbitrary path; all databases live under the data directory and are mounted by name
    • the location of the data directory is now configurable
    • the contents of the data directory is now an internal implementation detail and subject to change without notice; you should not depend on its structure
  • shell scripts
    • the neo4j info command has been removed without replacement; use neo4j status to see the status of Neo4j when running in the background
    • the new neo4j-admin script has been introduced
    • the neo4j-admin import command can be used to import a database from an arbitrary path
    • Initialize-Neo4jServer cmdlet: the ClearExistingDatabase parameter has been removed without replacement
    • Start-Neo4jImport cmdlet: the --into parameter is now mandatory
  • configuration
    • the setting org.neo4j.server.database.location has been removed
    • a new setting dbms.active_database is used to specify the database to mount by name
    • a new setting dbms.directories.data is used to configure the path of the data directory
  • logging
    • console.log is now called neo4j.log
    • messages.log is now called debug.log
    • queries.log is now called query.log
  • Linux packages
    • RPMs are not available for this release
    • Deb packages are available for this release

Testing:

  • neo4j-harness will no longer mount existing databases from arbitrary paths; use neo4j-admin import to import existing test databases into a configurable data directory

Monitoring:

  • JMX
    • a new property DatabaseName has been added
    • the StoreDirectory property has been removed for security reasons

HA:

  • Fixed an issue where a cluster member would send traffic from the wrong address, in case multiple IPs were available - #6562

Embedded:

  • dbms.directories.logs is required to be set to the location where logs should be stored when query logging is enabled. (Enterprise only.)

Neo4j Browser:

  • Added runtime type to plan frame when using PROFILE/EXPLAIN
  • Added experimental flag to settings
  • Prevent settings being set to negative values
  • Stop trimming attribute values when displaying graph result
  • Fixed issue where / would focus on editor when typing in a field
  • Fixed issue where graph rendering would break when a node has more than 7 direct relationships
  • Fixed cypher highlighting bug

Kernel (Enterprise):

  • New record format with much higher ID limits + automatic migration from community format.

Consistency Checker:

  • Legacy consistency checker has been removed
  • Fixes an issue where relationship inconsistencies would sometimes be overlooked, see #6517

Clustering:

  • Adds a timer to arbiter's shutdown hook in case of deadlock trying to about an indefinitely retrying cluster join.

Import Tool:

  • import-tool now accepts escaped ASCII-codes like \123 for quoting and field delimiting (--quote and --delimiter respectively). #6034, #6221
  • Fixes an int overflow issue when importing a big number of dense nodes - #6253
  • Ability to supply some store configuration in import tool. Considered configuration options are those affecting store at time of creation, such as array_block_size and string_block_size and are supplied via a configuration file specified using --db-config option. See #6284
  • Report error and starting line in import if quote is unbalanced - #6217
  • Slight performance improvement for imports in very property-heavy scenarios. - #6225
  • Improved the import tool to better handle whitespace around numeric values. #6321

Kernel:

  • Fixes #6133 - Fix reading of properties with different block sizes - #6141

Graph Algo:

  • Fixes #2987 - Fix AStar result in case End equals Start - #6223

Bolt Protocol:

  • Introduced auth capabilities (protocol incompatible with M04)
  • Improved error messages and log detail
  • More built-in procedures:
    • db.indexes
    • db.constraints
    • sys.components
  • Renamed built-in procedures:
    • sys.db.labels is now db.labels
    • sys.db.propertyKeys is now db.propertyKeys
    • sys.db.relationshipTypes is now db.relationshipTypes
    • sys.db.procedures is now sys.procedures
  • Reintroduce ACK_FAILURE as a milder alternative to RESET
  • Better query logging with BOLT
  • Consolidation and clean up in status messages.

3.0.0-M04

Cypher:

  • Support for calling procedures with CALL
  • Removed deprecated function str() - #6352
  • Added a new configuration option dbms.cypher.forbid.exhaustive.shortestpath which, if enabled, will make queries that use the exhaustive fallback for shortestPath throw an error - #6325
  • Very large query plan descriptions will now compact similar consecutive operators and truncate long list of variables - #6341
  • Bug-fixes:
    • Reduce exponentially long planning times on very long patterns by constraining the solution space - #6269
    • Fixes an issue where the relationship-by-id operator did not work with arguments - #6333
    • Will no longer warn about missing property keys in literal maps - #6347
    • The cost-based planner will now be able to solve queries with PERIODIC COMMIT - #6356
    • Fixes an issue where the planner did not correctly calculate connected components from previously matched relationships - #6368
    • Use correct uniqueness constraints for the rule planner in 2.3 compatibility mode - #6361
    • Will no longer create new label tokens when executing REMOVE - #6369, #6367
    • DISTINCT and aggregation will now work properly with array properties nested inside lists and maps - #6340
    • range() function will now be able to work with integral values that require more than 32 bits - #6430
    • Fixes #6274 - Serialization of returned deleted entities throws exception - #6354
    • Will no longer warn for missing labels, relationship types, or property keys when creating new entities - #6422

Packaging:

  • configuration changes
    • the two configuration files neo4j.properties and neo4j-server.properties have been merged into a single new file neo4j.conf
    • the system property used to specify the location of the new configuration file is org.neo4j.config.file (in place of using org.neo4j.server.properties to specify the location of neo4j-server.properties)
    • the configuration setting org.neo4j.server.db.tuning.properties, used to specify the location of neo4j.properties is no longer used
    • deprecated configuration settings and migrations from 2.2 have been removed
  • the Arbiter has been merged into the main product and is now controlled by configuration
    • to run an arbiter set org.neo4j.server.database.mode=ARBITER in neo4j.conf
    • the neo4j-arbiter script has been removed; to run an arbiter use the neo4j script
    • the neo4j-arbiter Debian package is no longer being published; to run an arbiter install the neo4j-enterprise package

Kernel:

  • 3.0 can no longer upgrade directly from 1.9
  • Fixes #6209 - Fix raw ASCII support in import tool - #6221
  • Ability to import > 2.4 billion nodes in import tool - #6180
  • Log MasterClient errors in debug instead of info logs, and better logging of other ComExceptions- #6146
  • Fixes #6133 - Fix reading of propertiess with different block sizes - #6141
  • Fixes #2987 - Fix AStar result in case End equals Start - #6223
  • Report error and starting line in import if quote is unbalanced - #6217
  • Slight performance improvement for imports in very property-heavy scenarios. - #6225
  • Improved the import tool to better handle whitespace around numeric values. #6321

Lucene-index:

  • Index population made faster due to usage of parallel index writing in Lucene, see #6334

Bolt protocol:

  • Support for read-only procedures
  • Support for writing procedures
  • Added built-in procedures:
    • sys.db.labels, returns all labels that are in use in the database
    • sys.db.relationshipTypes, returns all relationship types that are in use in the database
    • sys.db.propertyKeys, returns all property keys that in the database
    • sys.db.procedures, returns all procedures that are in the database

Neo4j Browser:

  • Graph visualization context menu (click on node in viz).
    • Explore relationships
    • Remove node from visualization
    • Release/unlock sticky node
  • Fix broken slider in text table view

3.0.0-M03

Known issues:

  • neo4j service cannot be started after installing RPM
    • Workaround: execute this command after installing sudo mkdir -p /usr/share/neo4j/neo4j-home/ssl && sudo chown neo4j:neo4j /usr/share/neo4j/neo4j-home/ssl

Cypher:

  • Additional support for update queries in the cost-based planner:
    • MERGE with patterns - #6069
    • LOAD CSV clause - #6242
    • FOREACH clause - #6260
  • General improvements and performance enhancements:
    • The query planner is now able to plan index lookups where the label or property predicate is dependant on a previous read - #6162
    • Now provides a better error message when encountering illegal unicode literals - #6236
    • Queries using predicates with CONTAINS on indexed nodes will now be able to use a native index lookup for increased performance - #6233
  • Bug-fixes:
    • allShortestPaths has now also been reworked, and will now use an exhaustive Cypher search of the graph in cases where the standard algorithm will fail to find a path - #6121
    • Fixes #6057 - MERGE inside UNWIND broken - #6259
    • Fixes an issue related to planning disconnected patterns separated by horizons - #6216
    • Fixes an issue where queries containing large amounts of clauses would not compile - #6257
    • The issues around Cypher 2.3 compatibility in 3.0.0-M02 have been resolved

Packaging:

  • neo4j start no longer waits for Neo4j to be up before it exits. As a consequence the neo4j start-no-wait option has been removed. To wait for Neo4j you should now poll the HTTP endpoint (for example http://localhost:7474) until you get a 200 reponse.
  • neo4j start now issues a nohup, so Neo4j will keep running when the current shell session exits.
  • Calling neo4j stop when Neo4j is not running is no longer considered an error so process will exit with status 0.
  • neo4j stop no longer hangs indefinitely if shutdown doesn't complete within two minutes; instead it exits with status 1.
  • The service installed by the Debian package no longer kills Neo4j if shutdown doesn't complete within 30 seconds; instead it behaves in the same way as neo4j stop.
  • Unofficial support for Cygwin has been dropped.
  • Support for Bash version 3.1 and earlier has been dropped.
  • The neo4j and neo4j-arbiter commands status and info now require a valid Java environment.
  • The standard location for database directories has changed from data to data/databases (for example data/graph.db moves to data/databases/graph.db).
  • All jars are now in lib rather than split between lib and system/lib.
  • Merge advanced edition features into enterprise, and remove advanced edition.

Browser:

  • Neo4j Browser is now built from a separate repo and pulled in as an external dependency
  • Zoom added to the graph vizualisation when in fullscreen mode
  • Added text table view to results frame

Kernel:

  • Skip indexing of strings and arrays that are longer then maximum allowed term size. - #6213

3.0.0-M02

Known issues:

  • Write performance regressions have been noted under heavy load compared to 3.0.0-M01
  • Cypher 2.3 compatibility might not function properly for some queries. For example, errors have been triggered when calculating shortest paths.

Cypher:

  • Additional support for update queries in the cost-based planner:
    • Support for REMOVE in the cost-based planner #6071
  • General improvements and performance enhancements:
    • Read-only queries will no longer grab locks when using unique indexes - #5988
    • The cost-based planner will now plan a hash join by value instead of a cartesian product, if possible - #6015
    • The pre-parsing option planner=greedy is no longer supported, and that planner has been removed - #6051
    • Cypher queries can now be forced to run eagerly by specifying the pre-parsing option updateStrategy = eager - #5968
    • Improved performance of shortestPath with predicates involving all nodes in the path #5974
  • Bug-fixes:
    • shortestPath has been reworked, and will now use an exhaustive Cypher search of the graph in cases where the standard algorithm will fail to find a path - #6004
    • Fixes #5902 - Regression: NoSuchIndex is now a DatabaseError - #5925
    • Fixed planning issues around 'USING JOIN' - #5927
    • Fixed a bug with CREATE UNIQUE where it would sometimes fail in a concurrent scenario - #5999
    • Fixes #5986 - The planner incorrectly plans an index seek by range for n.prop > m.prop where n and m are nodes #6063
    • Fixes bug in new count-store optimization on empty database - #6053
    • Makes query plans logged to logfile more readable - #6100

Bolt protocol:

  • A special preamble message is now required to connect to Bolt V1 - #6006
  • Bolt TCP, TLS, WebSocket and Secure WebSocket now all run over the same port #6020

Kernel:

  • Deprecated support for Ganglia as an output for metrics information. - #5993
  • Upgrade to Lucene 5, with support for upgrading databases with older Lucene versions. - #5861
  • Fixes an issue in OSX where a file limit warning would be shown unnecessarily when using neo4j console. - #6080
  • Makes import tool more flexible with csv delimiter values. - #6034
  • Fixes #5996 - Calling the terminate method of a transaction after the close method causes the following transaction to fail. - #6075
  • The migration process now logs progress information in the user log. - #6050
  • Add the option to trace ComExceptions when debug-level logging is turned on. - #6117

Shell:

  • Fixed problem of neo4j-shell not starting as correct Neo4j edition. - #5995

3.0.0-M01

Browser:

  • :help for new cypher commands (STARTS WITH, ENDS WITH, CONTAINS, DETACH DELETE)
  • Adds tooltips to icons
  • Adds references to query plans

Kernel:

  • Fixes issue where exception would be thrown when trying to list relationships for dense node w/o any relationships left.
  • Fixes issue starting BatchInserter when run in enterprise edition.

Packaging:

  • Adds more PowerShell scripts to common Neo4j Server tasks.

Cypher:

  • Initial support for update queries in the cost-based planner:
  • General improvements and performance enhancements:
    • Removes eagerness from query execution plans in cases where it is not necessary
    • Improved performance for counting queries by utilizing the counts store - #5506
    • Re-planning counts are now exposed through the metrics plugin - #5717
    • The slow query logging now also logs parameter values - #5747
    • Removed deprecated has() function (use exists() instead) - #5816
    • Added initial support for spatial functions point() and distance() - #5520
    • Use term variable to refer to the concept previously know as identifier - #5881
    • Take exclusive locks for incrementing properties - #5891
  • Bug-fixes:
    • Fixes #5432 - percentileCont and percentileDisc accepts bad arguments - #5701
    • Fixes #5742 - problems with DELETE - #5810
    • Fixes #5714 - compiling queries scales exponentially - #5821
    • Fixes numeric overflow in AVG and SUM - #5707
    • Fixes #5777 - toString should support boolean - #5879, #5900
    • Equality should treat chars as strings - #5909
    • Specifying planner=cost now gives the correct cost-based planner (IDP)
    • Allow exists() to accept maps, enabling IS NOT NULL to work with LOAD CSV
    • Fixes a bug where MERGE would create duplicate relationships if it had an array property
    • Functions toInt() and toFloat() will now accept arguments of type CTNumber
    • Fixes #5779 - false positive warnings about Cartesian products
    • Fixes #5745 - inability to ORDER BY boolean properties

Desktop:

  • Updated to use JRE 1.8.0_60

Server & Drivers:

  • Introduction of Bolt binary protocol, available by default on port 7687. This protocol, along with the new drivers, provide a brand new surface for Cypher execution, with a more equal experience across languages.
  • First release of Java driver (Python and JS drivers to follow shortly)
  • Removes RRDB and the dashboard in legacy webadmin interface

Metrics:

  • Deprecate metrics reporting into a single csv file since support event based metrics was added. Event based metrics don't have a fixed interval which makes it impossible to log alongside other events arriving at different intervals.