Skip to content

Neo4j 3.4 changelog

Gustav Lindroth edited this page Apr 29, 2020 · 51 revisions

3.4.18

Cypher-shell version

  • 1.1.13

Kernel

  • Bump dependencies to address security issue
  • Last line in the configuration file is no longer ignored if there is a missing new line

3.4.17

Kernel

  • Upgrade commons-compress to 1.19

Cypher

  • Fixed an IDP planner edge case where complex joins fail to find a solution due to the presence of ignored argument variables
  • Added a nicer error message if the planner fails to find a plan

Browser

  • Drag and drop cypher and grass files anywhere to import
  • Detect operating enviromentments more generically
  • Upgrade neo4j-driver to 1.7.5
  • Handle Infinity and -Infinity results correctly
  • Now displaying clickable urls in table and graph views
  • Export :history
  • Give user more connection feedback + add connection timeout configuration
  • Export query result records as JSON
  • Support additional :param definition. See :help params in neo4j-browser for instructions.
  • Use GraphQL version of Relate-API when available (in Neo4j Desktop)
  • UI fixes on :server user add and :server user list commands
  • Fix regression in write-code guide name
  • Revert "Use GraphQL version of Relate-API when available (in Neo4j Desktop)"
  • More robust :server change-password in a clustered system
  • Request discovery endpoint in cloud env
  • Fix various UI glitches
  • Don’t auto-connect without credentials
  • Bring back JSON data export
  • Fix "Force password change" on :server user add

Cypher Shell

  • Fixes issue where cypher-shell would hang if it was run with

    the timeout command from inside a shell script.

    • Only prompt if interactive input is available
    • Prompt directly to /dev/tty if stdout is redirected
    • Prompt to /dev/null if no tty is available
    • If only username is given, but not password, prompt directly before attempting to connect

3.4.16

Kernel

  • Monotonic time tracking for transaction termination monitor

Cypher

  • Upgrade Apache Shiro to 1.4.1 to mitigate DoS vulnerability
  • Allows queries like MATCH (n) WHERE id(n)=20.0 RETURN n to return the node with the id 20.

Packaging

  • Fixed parsing of neo4j.conf on Windows to allow users to specify additional jvm arguments such as jdk.serialFilter.

Misc

  • Optionally use jdk.serialFilter to avoid java serialization exploits

3.4.15

Cypher

  • Spatial distance queries will now be solved by a NodeUniqueIndexSeekByRange instead of a NodeByLabelScan when an uniqueness constraint exists.
  • Make the cost planner able to plan joins when the leaves contain additional variables from e.g. LOAD CSV.

High Availability

  • Resets HA slave state on InvalidEpochException

3.4.14

Cypher

  • Fix missing register-owning-pipe on expression in some pipes
  • Fix bug in slot allocation of aliased variable names
  • Fix bug where adding nodes to the graph would not cause a query replan
  • Fix rounding error in DurationValue approximate

Browser

  • Block background queries until the prev is finished
  • Updates to dark theme
  • Fix retain credentials info on connect frame
  • Escape auto-completed labels, types and property keys in editor.
  • Upgrade to neo4j-driver version 1.7.4

3.4.13

Kernel

  • Fixes an issue where a large amount of bad data items encountered during an import could use an excessive amount of heap and slow down the import as a whole. The report queue is now bounded and applies back-pressure.
  • Properly prints FAILED on import failure
  • Improvements to total mapped size calculations
  • Programatic invocations of online backup now respects the page cache tuning parameters that they are given.
  • Backport: Removes accidental limitation of number of reltypes to 64K for high_limit format
  • Failed index sampling doesn't prevent index drop. Previously if index sampling failed for some reason, this could prevent index from being dropped because sampler didn't clean up after itself.
  • Fix delay calculation in IO limiter

Cypher

  • Updating after undirected match with predicate
  • Fixes problem in procedure dbms.setTXMetaData() where null value in the given map could lead to a null pointer exception
  • Fixed distance queries that used < and ranged over the dateline and would miss points exactly on the dateline
  • fix runtime=slotted any() on rhs of NodeHashJoin

Causal Clustering

  • Delete spammy log line.
  • Improve logging of result of causal cluster handshakes

Browser

  • Fix [object Object] for integers in viz for PathSegments
  • Use less resource intensive background requests
  • Fix user management UI in Community Edition
  • Add tx metadata to queries that's generated by user actions
  • Show query termination message when closing frame that has an active query
  • Fix subgraphs not displaying correctly under certain circumstances

Cypher Shell

  • Don't send parameter lambdas to server
  • Upgrade to java 11
  • Stream results of autocommit queries

Misc

  • Updated Jetty version to 9.2.26.v20180806

3.4.12

Kernel

  • When a native memory allocation fails, Neo4j will now include helpful debugging information in all such cases, instead of just some of them.
  • Fix node set property to not lock unrelated constraints
  • Fixes a race updating the label index, where e.g. a node CREATE followed by DELETE could be reordered into DELETE followed by CREATE, and vice versa.
  • Close all index readers opened during lockingNodeUniqueIndexSeek

Cypher

  • Obsfucate LDAP system password in debug log

Browser

  • Support Neo4j Kerberos auth when in a Neo4j Desktop environment

  • Keep bolt connections alive in web workers

  • Fix hidden error on re-run when going from success -> error result

  • Fix :help keys in dark mode

    fixes: https://github.com/neo4j/neo4j-browser/issues/889

  • Add link :server user list to admin section of db sidebar

3.4.11

Kernel

  • Removes explicit neo4j-admin import db existence check
  • Fix VM pause monitor logging

Cypher

  • Fix issue where queries with many disjunctive index seeks (... n.age = 3 OR n.name = 'George' ...) would plan forever.
  • Fix issue with compiled runtime and count(), where transient entity inconsistencies would make some aggregating queries (e.g. MATCH (n:Artist) WHERE n.name = 'Madonna' RETURN count(n)) return fewer rows than expected.

Browser

  • New format for tx metadata for logs
  • Fix application crash when killing a query from :queries frame
  • Fix (extremely) slow data parsing in certain cases
  • Collapse manually expanded nodes in the viz
  • Replace and add more viz styling colors
  • Upgrade neo4j-driver to 1.7.2
  • Support deep links via Neo4j Desktop

3.4.10

Kernel

  • Adds IndexReader#distinctValues
  • Add original cause of failure to failed index stack trace. Partly addresses https://github.com/neo4j/neo4j/issues/12038
  • Avoids legacy index removed-entity-repair if no write allowed
  • The continuous checkpoint policy (the dbms.checkpoint setting) has been made less aggressive. It will now only requests checkpoints if any write transactions has committed since last check, and it now only checks at most once every 100 milliseconds, instead of in a busy loop. This reduces the CPU overhead of the policy on systems that don't do many writes.
  • Throttle StoreSizeMBean calls to prevent excessive resources consumption

Cypher

  • Added new property schema procedures db.schema.nodeTypeProperties and db.schema.relTypeProperties
  • Fixed a bug with alphabetical ordering of indexes from db.indexes
  • Fixes 12051 so that more complex IN predicates (containing AND/OR together with NOT) are rewritten correctly.
  • Fixes bug with cypher.lenient_create_relationship. It would not work under some circumstances with MERGE in interpreted.

Browser

  • Update icons
  • Introduce experimental features section in Settings
  • Enable fullscreen ability for :queries frame
  • Fix auto-completed relationships not showing in viz legend on first render
  • Fix nested :params bug
  • Update neo4j-driver to 1.7 and send transaction metadata with Cypher queries
  • Let the configuration initCmd be empty
  • Fix stream rendering issues in IE 11
  • Add Order to plan output if it exists
  • Update links to documentation in the docs sidebar
  • Show message if neo4j-browser is opened without an active graph in a Neo4j Desktop environment
  • Add support for GraSS selectors (node labels and rel types) containing a .
  • Remote guides - resovle config ’*’ to default whitelist

Misc

  • Fix queue size update race in Bolt read limiter
  • "Connection reset by peer" errors will be logged on warning level without stack traces to avoid log pollution.

3.4.9

Kernel

Cypher

  • Fix issue where missing headers caused a NullPointerException to occur.
  • Fix ORDER BY + LIMIT 0 in slotted runtime
  • Fixes issue where spatial and temporal properties wasn't handled correctly when using "resultDataContents": ["rest"] in REST API.

Packaging

  • Garbage collector log location is changed to be logs directory instead of neo4j home.

Security

  • Fixes an authentication bug when using startTLS and System Account

Causal Clustering

  • Fix issue where concurrent log pruning could potentially cause cluster members not to receive all transactions.
  • Read replicas now copy the store from a single other member of the cluster.
  • Incremental online backup now leaves the resulting backed up store in a fully recovered state. This fixes problems with seeding a Causal Cluster with a store from an incremental online backup.

Browser

  • Fix issue where editor buttons would overflow the viewport
  • Fetch fresh version of remote guides on every request
  • Fix neo4j-browser not working properly when db auth is disabled
  • Future proof Neo4j Desktop integration by using the url field in connection info.
  • Fix rare neo4j-browser crash when clicking on yellow Cypher warning triangle
  • Fix crashing :queries frame in clustered environments when all members couldn't be reached

Misc

  • Rotate transaction logs during incremental backup.

3.4.8

Kernel

  • Remove cursor pooling on a page cache level.
  • Upgrade the Bouncy Castle dependency to version 1.60.
  • Fixes an issue in IndexHits#getSingle() where it would miss an item when called after a previous call to IndexHits#hasNext().
  • Remove property key tokens limit from BatchInserterImpl.

Cypher

  • Fix $12011 by providing the wanted functionality under a feature toggle.

  • Remove browser warnings when using temporal and spatial property accessors e.g. .year, .x.

  • Fix 12029 where combining multiple a IN with AND and OR could lead to the wrong result.

  • Ensure renamed timezones are always returned the same way.

    RETURN datetime("2018-04-05T12:34:00[Canada/East-Saskatchewan]")
    MATCH (n) WHERE n.date = datetime("2018-04-05T12:34:00[Canada/East-Saskatchewan]") RETURN n.date
    

    Will now return the same object with timezone set to Canada/Saskatchewan, which Canada/East-Saskatchewan has been renamed to. Previously only the value read from store would be Canada/Saskatchewan

  • Fix bug in queries containing RETURN or WITH clauses including both a star and a pattern comprehesion (e.g. ... RETURN *, [ (a)-[:HAS_BUREAU]->(bureau:Bureau) | bureau.CREDIT_ACTIVE = "Active"] AS bureauStatus), which would previously fail with WITH/RETURN should note its Scope in the SemanticState.

  • Fix bug which would cause FunctionInvocation(...) has to type from semantic analysis errors for some complex WITH-clauses in a write query.

  • Fix planner regression in which HashJoin + AllNodeScan was preferred

    over OptionalExpand in certain cases.

Security

  • Properly handle multiple authorization providers. Fixes an issue where if one provider failed (e.g. connection to ldap failed) the user would end up un-authorized even though another provider had succeeded.

Causal Clustering

  • Check recovery status of store when bootstrapping cluster

Tools

  • Revert mistakenly enabling NEO4J_DEBUG by default for neo4j-admin

Browser

  • Add :history clear command
  • Add pagecache hits and misses to plan output
  • Add complete support for bolt+routing://
  • Add Neo4j Community Forum link to sidebar
  • Enable users with non reader roles to connect
  • Fix :server switch bug in Neo4j Desktop environment
  • Fix username not updating in sidebar when disconnecting
  • Improve Cypher result rendering performance
  • Prepare for Neo4j Desktop distribution

3.4.7

Kernel

  • Fix bug causing property values that where too large for an index to slip through during population. This will later cause readers to fail upon reading from index with org.neo4j.io.pagecache.CursorException: Read unreliable key. For further information on how to handle this issue, please see release notes.
  • Reuse threads between cleanup jobs during recovery. This fixes an issue where user would see java.lang.OutOfMemoryError: unable to create new native thread caused by Neo violating the number of allowed tasks per process, set by system.
  • Remove objenesis from the dependencies and from libraries included into distribution.
  • Fixes a native index issue where inserting large values, although within size limit, could result in attempt to write out of bounds on page. Any transaction experiencing this would be allowed to commit, but run into this issue when applying the changes to the index.
  • Remove com.google.code.findbugs:jsr305 from distribution libraries.

Cypher

  • Fixed a bug where spatial range queries with inequalities would return points on the axes defined by the search points
  • Made error messages for functions applied to incompatible types more consistent
  • Fixes https://github.com/neo4j/neo4j/issues/12017 so when solving an OR predicate, other predicates are only considered solved if they were solved in both underlying operators.
  • Fix broken ON MATCH SET in PERIODIC COMMIT. This bug would show up as a problem to read properties in all the PERIODIC COMMIT commits except the first.

3.4.6

Kernel

Cypher

  • Port okapi.schema() procedure to 3.4

  • date(null) used to falsely return the current date. Now it returns null instead. The same is true for all other temporal functions.

  • Reverts the restriction on passing unknown keys to the point function. Behaviour is now as it was before, allowing complex maps. Users need to take note of the fact that this means a map like {x:1,y:2,z:3} will create a 2D point in Neo4j 3.1-3.3, but a 3D point in Neo4j 3.4 and later.

  • Pattern comprehensions in other expressions were not planned correctly. Example:

    size([ (a)-->(b:B) WHERE (b)-->(:C) b.foo ]). This is now fixed.

  • Fixed issues with WRITE procedures interacting badly with their enclosing Cypher read queries by allowing authors to add an eager attribute to the @Procedure annotation.

Packaging

  • Add support for Powershell ConstrainedLanguage mode

Causal Clustering

  • Fix hostname regression

Misc

  • Fix connection stop from failing because of rejected execution errors
  • Removing the stracktrace of login errors in user log (neo4j.log)

3.4.5

Kernel

  • Add support for attaching to running neo4j instance on Windows servers

Cypher

  • Take Query Parameters over default arguments. If you don't provide actual arguments, but query parameters instead (like in CALL org.neo4j.aNodeWithLabel params = Map("label" -> "Cat") ) this will from now on use the provided parameters and override any default arguments. It was preferring default arguments before, if they existed.
  • Improve error message on non-node input in LockNodesPipe
  • Compiled ExpandInto respects relationship type
  • Give sensible error message for merge on null node.

Causal Clustering

  • Fix log warning of replication retry attempts

Browser

  • Add toggle for multi statement cypher editor
  • Fix editor to handle string literals that contain new lines

Misc

  • Make authentication rate limits configurable

3.4.4

Browser

  • Add support for multi-statement execution

3.4.2

Kernel

  • Update logging messages around indexes and constraints population.
  • Fix a bug whereby once a spatial index exists, all future spatial indexes of the same CRS will inherit the same settings, regardless of what the neo4j.conf settings say.
  • Fix issue where the diagnostic reporter did not support paths with spaces in the destination file.
  • Disable prometheus during backup to fix port conflict issues

Cypher

  • Core API users used to be allowed to pass in arbitrary objects as parameters. If these were not used by Cypher, we would silently ignore them. In 3.4.0 this was changed to always fail the query if any parameter was not convertible to a cypher type. This commits reverts to the previous lenient behavior, as this change caused problems for some users.

  • Fix a bug where predicates inside pattern comprehensions could end up not being correctly planned which could lead to incorrect results

  • Fix bug in duration.between() that would calculate wrong time difference for date times if the total difference was less than a whole day.

  • Don't use exact division in selectivity estimation

    We were using BigDecimal#divide without rounding mode when computing the selectivity. It uses exact division and does thus not handle numbers with non-terminating decimal expansions, e.g. 1/3 and 1/6.

Causal Clustering

  • Nicer store copy logging.

    Avoid logging stack trace on:

    • connection refused
    • topology lookup exception

Browser

  • Show the total number of nodes and relationships in db meta sidebar
  • Fix issue where neo4j-browser kept allocating more and more disk space
  • Switch to React 16.4
  • Fix meta query to be more performant
  • Handle changelog url building in disconnected state
  • Fix crashing favorites sidebar when using non latin1 characters

Misc

  • Upgrade to jetty 9.4.11.v20180605

3.4.1

Kernel

  • Restore ability to handle directories on database restore

  • Fix incorrect index validity check for lucene indexes (Backport of PR #11150)

  • Increase swapper id limit, allowing more files (like indexes) to be opened by the page cache, and fix a MemoryManager bug around alignment handling.

  • When writing WHERE n.str CONTAINS 'x'

            or WHERE n.str ENDS WITH 'x'
    

    Cypher will issue a warning, if n.str is backed by a native String index which is suboptimal for these index scans.

  • Add db-setting: dbms.import.csv.buffer_size allowing for increasing the internal buffer in order to handle csv-files with huge fields.

  • Update CSV file rotation threshold in metrics to be 10m instead of 100m by default

  • Disable tracking of CPU time and memory allocation by default

Cypher

  • Such hints in spatial indexes when querying by distance are now allowed:

    MATCH (b:Business)<-[:REVIEWS]-(r:Review)
    USING INDEX b:Business(location)
    WHERE distance(b.location, point({latitude: 33.3288, longitude: -111.977})) < 6500
    
  • Fix bug in un-directed ProjectEndPoints when both end points are in scope

  • Fixes bug that caused the Unknown value type: STRUCT error with queries that use PERIODIC COMMIT over bolt and return whole nodes or relationships

  • Add missing accessors to duration

  • Return null when trying to access a non-existing property from

    a string instead of throwing error.

  • fixes #11663, Using percentileDisc with empty data should return null

  • Fixes problems where variables were displayed as ReferenceFromSlot in plan descriptions.

  • VarExpand: Detect dependencies on path in inner predicates

  • Fix locking seeks with NO_VALUE

  • Clean up of QueryGraph

High Availability

  • Failure to switch to master is no longer terminal

Causal Clustering

  • Abort replication on missing leader or leader switch
  • Cache local topology information and various minor cleanup

Browser

  • Add auto refresh to sysinfo frame
  • Fix [object Object] output when returning paths with new types
  • Fix missing inspector items when spread over more than one line
  • Word break long values in db info drawer
  • Don’t add type hinting quotes on strings in CSV export
  • In guides allow one dynamic field to update multiple elements
  • Fix :style / GraSS regressions

Misc

  • Configurable CORS header
  • Couple security-related improvements for server

3.4.0-rc02

Kernel

  • Adds the configuration option db.temporal.timezone to configure a default time zone affecting the creation of all temporal values.

Cypher

  • Make CompatibilityCache concurrency-safe

Browser

  • Upgrade neo4j-driver to 1.6.0
  • Render new types correctly in visualization
  • Show more information on operators in plan output
  • Fix docs links in sidebar to point to the connected version
  • Upgrade neo4j-driver to 1.6.1

Cypher Shell

  • update to 1.6 driver
  • upgrading to driver 1.6.1

3.4.0-rc01

Cypher

  • Fix issue with cost planning index seeks
  • Fix bug in query cache key.

Browser

  • Add page cache hit ratio to :sysinfo frame
  • Make every type of Bolt transactions use web workers
  • Display driver result summary in code view
  • Support new Neo4j types (Neo4j 3.4)
  • Fix Cypher warning position in Warnings View
  • Display more store sizes if they exist (Neo4j > 3.2)
  • Add new param syntax to evaluate against the server

Cypher Shell

  • adding support for spatial and temporal datatype

Misc

  • Add update service command to PowerShell scripts

3.4.0-beta02

Kernel

  • Fixes a CSV trim issue with fields containing only whitespace

  • Fixed visibility of LDAP system password in debug.log through new @Secret annotation.

    Marking config settings as @Secret will cause them to be printed as ########## in debug.log as well as the output of CALL dbms.listConfig.

Cypher

  • Support byte[] as valid input and output types for procedures, user defined functions and aggregation functions

Causal Clustering

  • Separate backup SSL policy
  • Upgrade netty to 4.1.23.Final

Cypher Shell

  • Assigning cypher expressions to parameters
  • update params display to show new params setting
  • Upgrade to 1.6.0-beta01

3.4.0-beta01

Kernel

  • Extended Core API with more variants of findNodes: String prefix, suffix and contains queries on single property indexes, and exact seeks in composite indexes.
  • Strings are indexed with native implementation instead of in Lucene.

Cypher

  • Under some circumstances Cypher queries using extract() would hang indefinitely when accessed over bolt, if the result of extract was returned. This issue has been fixed.
  • Fix problem with UNWIND of nodes in compiled runtime

Security

  • Replication benchmark security

Causal Clustering

  • Configurable store copy upstream strategy

Browser

  • Sync styling with Browser sync
  • Disable editor highlighting with config option
  • Add more detailed error messages for known Browser/OS issues
  • Fix issue of some queries getting stuck because of the shape of the result
  • Use latest released neo4j-driver
  • Update :sysinfo to display 'Store sizes' jmx values
  • Fix for clearing local data when not signed in to browser sync
  • Fix memory leak in background job

Cypher Shell

  • upgrading to latest version of driver

3.4.0-alpha10

Kernel

  • Resumable store copy
  • 3.1 Resolved inc backup debug.logs wrong location
  • Support uniqueness constraints for spatial points

Cypher

  • Fixed performance regression with user-defined functions that expand paths

  • Temporal functions from Cypher. One example query for each function category follows below:

    1. Create

    WITH localdatetime({year:1984, week:41, dayOfWeek:4, hour:12, minute:31, second:14}) as d
    RETURN d
    

    will return localdatetime("1984-10-11T12:31:14")

    WITH duration({days: 2.5, hours:5, minutes: -12, seconds: 70.5, nanoseconds: 3}) as d
    RETURN d
    

    will return P2DT17H-11M10.500000003S

    2. Select

    WITH date("1984-06-24") as d
    RETURN localdatetime({date:d, day:21, hour:12, minute:34})
    

    will return localdatetime("1984-06-21T12:34")

    3. toString

    WITH localtime({hour:12, minute:31, second:14, nanosecond:645000000})
    RETURN toString(d), date(toString(d)) == d
    

    will return "12:34:14.645", true

    4. Comparison

    WITH localtime({hour:12, minute: 31}) as x, localtime({hour:13}) as y
    RETURN x > y, x < y, x >= y, x <= y, x = y  
    

    will return false, true, false, true, false

    5. Arithmetics

    WITH date("2017-04-13") as date, duration({weeks:2, days:3}) as dur
    RETURN date - dur, date + dur
    

    will return date("2017-03-27"), date("2017-04-30")

    6. Truncation

    WITH date({year: 1984, month: 10, day:3}) as d
    RETURN datetime.truncate('decade', d, {day:2, timezone:'Europe/Stockholm'})
    

    will return datetime("1980-01-02T00:00+01:00[Europe/Stockholm]")

    7. Accessors

    WITH date({year: 1984, month: 10, day:11) as d
    RETURN d.year, d.month, d.day, d.weekYear, d.week, d.weekDay, d.ordinalDay, 
    d.quarter, d.dayOfQuarter
    

    will return 1984, 10, 11, 1984, 41, 4, 285, 4, 42

    8. Duration between

    RETURN duration.between(datetime("2014-07-21T21:40:36.143+0200"), date("2015-06-24"))
    

    will return P11M3DT-21H-40M-36.143S

  • Accessors for Points are now available: p.crs, p.x, p.y, p.z (for 3D points). For WGS84 points the aliases p.longitude, p.lattitude and p.height for p.x, p.y and p.z are also valid.

  • Fix bug with identical join hints on different optional matches

High Availability

  • Elector identification now happens more reliably

Causal Clustering

  • 3.4 modifier protocols
  • 3.4 Multiclustering server-side
  • Legacy policy create under synchronized

3.4.0-alpha09

Kernel

  • Active page cache warmup
  • Fixes as issue with applying index updates to unique indexes
  • Implement new VM pause monitor
  • Traversal endpoint script execution is now disabled by default, by introducing the unsupported.dbms.security.script_enabled setting, and making it false by default.
  • 3.2 Resolved inc backup debug.logs wrong location
  • 3.3 Resolved inc backup debug.logs wrong location
  • 3.4 Resolved inc backup debug.logs wrong location

Cypher

  • Index-backed support for spatial point distance searches from Cypher.

    For example, the following query will return all points within 10km of the point here:

      WITH point({latitude: 56.5, longitude: 12.5}) as here
      MATCH (c:CoffeeShop) WHERE distance(c.location, here) < 10000
      RETURN c.name as CoffeeShop, c.address as Address, distance(c.location, here) as distance
      ORDER BY distance
    
  • Close procedure streams on failures

  • Added support for 3D cartesian and 3D WGS84 (GPS) points

  • Solves nested pattern comprehension bug in slotted runtime

  • Fixes bug with unsupported default value for explicit.remove procedures

  • Fix Node X not found exceptions arising when searching an explicit index which contains nodes that have been deleted.

Security

  • Fix ssl protocol config for ssl context

Causal Clustering

  • Netty 4.1.21.Final
  • Disable hazelcast shutdown hook

Misc

  • Fixed error during upgrade from 3.1 on Debian

3.4.0-alpha08

Kernel

  • Index-backed support for spatial point equality and range searches from Cypher.

    For example, the following query will return all points in the specified range:

      WITH point({latitude: 56.5, longitude: 12.5}) as bottomLeft, point({latitude: 57.5, longitude: 13.5}) as topRight
      MATCH (c:City) WHERE c.location > bottomLeft AND c.location < topRight
    

    This also includes support for storing points and arrays of points as node properties.

  • Any temporal value can be stored in a property. This includes Date, Time, DateTime, LocalTime, LocalDateTime, and Duration.

Cypher

  • Fix bug in bytecode generation for multiple ands and ors
  • dbms.procedures() which lists all built-in procedures now also list their mode
  • Fix bug where shortestPath unnecessarily required named nodes
  • Fixes incorrect planning of pattern comprehension inside unwind
  • Fix offset bug in periodic commit

Causal Clustering

  • Handshaking protocol
  • Raft pre elections should be compatible with refuse_to_be_leader
  • Fix cluster seeding failing in certain scenarios

Bolt Server

  • Upgrade to jetty 9.4
  • Enforce TLSv1.2 for HTTPS and Bolt server

3.4.0-alpha07

Kernel

  • Data snapshot query execution
  • Much reduced memory usage of collision values in importer
  • Rename setting dbms.logs.timezone to dbms.db.timezone
  • Make dbms.tx_log.rotation.* settings dynamic
  • Add "Page cache usage" metric

Cypher

  • Fixes bug with missing results when a relationship created in the same transaction was not found by optional match or pattern comprehension

  • Bugfix so that the cost planner can now plan the following:

    REMOVE CASE WHEN ... THEN a ELSE b END.prop

  • Fixes bug with incorrect ordering when aliasing.

    Queries such as match (n),(m) return m as m2, n as m order by m were rewritten incorrectly to sort by the wrong column m as m2. Now, the result is correctly ordered by n as m.

  • Fixes planner bug with join hints on optional matches.

Security

  • Remove deprecation annotation for legacy ssl settings

Causal Clustering

  • Separate initial cluster size from runtime raft member set

Tools

  • Added a neo4j-admin memrec command, which can print recommendations for the Neo4j heap and pagecache memory settings.

Misc

  • remove initial heapsize settings for neo4j scripts

3.4.0-alpha06

Kernel

  • Add --pagecache parameter to the neo4j-admin backup command, with a default value of 8 MiB that now overrides the page cache setting in neo4j.conf.
  • CSV parser do not trim quoted strings
  • Bump lucene to latest 5.5.5 version
  • dbms.track_query_allocation and dbms.track_query_cpu_time are now dynamic settings
  • Upgrade metrics version from 3.1.2 to 4.0.2
  • Ability to drop a broken uniqueness constraint
  • Remove not used TransactionTerminated state in favor of Status.Transaction.Terminated
  • Cleanup accidental Path exposure as a Resource.

Cypher

  • Don't throw error for n.prop = null
  • Fixes #10607 by explicitly checking that all parameters present in the query are also provided in the parameter list
  • Proper handling of plan descriptions for queries running with older versions of Cypher.
  • Fixes problem where Cypher would sometimes run out of stack space for really large queries.
  • Fix that MERGE did not enforce relationship uniqueness.
  • Handle creating plan descriptions for big plans without StackOverflow.

Security

  • 3.4 dependency check

Bolt Server

  • Upgrade bouncycastle from 1.53 to 1.59

3.4.0-alpha05

Kernel

  • Fixes a concurrency issue creating constraints
  • More detailed message on MultipleFoundException during findNode operation.

Cypher

  • Do not return Object[] when querying for array property in Cypher.

3.4.0-alpha04

Kernel

  • Better progress monitor in importer
  • Introduce volumetric check-pointing, where the check-point frequency is adjusted to avoid the transaction log retention policy falling too far behind.
  • Prometheus endpoint for metrics
  • Lower memory requirement of recovery
  • Reworked transaction batching during recovery
  • Removes accidental limitation of number of reltypes to 64K for high_limit format

Cypher

  • Solves problem around queries with many optional matches
  • Upgrade scala to 2.11.12

Causal Clustering

  • Monitoring of Raft message processing performance
  • Improved timer service
  • Release the storecopy mutex after the store copy

3.4.0-alpha03

Kernel

  • Ability to provide import arguments as -f argument

Cypher

  • Sensible error message/notification when running slotted/compiled with START/CREATE UNIQUE
  • Configuration parameter for db.index.explicit.forNodes
  • Fixed error when returning properties from deleted node

Security

  • [tls] disable client-initiated renegotiation
  • [tls] make version 1.2 the only default

Causal Clustering

  • Implement a pre-election stage in Raft protocol

    This should reduce the incidence of unnecessary elections caused by a disruptive follower, for example rejoining the cluster after a network partition. This is a breaking change and must be explicitly enabled with causal_clustering.enable_pre_voting=true.

  • Fix seeding from backups

  • Raft heartbeat messages refresh election timeouts on receive rather than on process.

    This addresses unnecessary elections caused by the raft message processing being delayed and failing to reset election timeouts in a timely manner.

Browser

  • Fix issue where mapping cypher result to vis would break the app

Bolt Server

  • Introduce network level write throttling for better use of memory in bolt server.

3.4.0-alpha02

Kernel

  • Fix a bug that prevented page cache metrics from the Causal Cluster replication from being reported
  • Asynchronously terminated transactions now immediately release their locks, so others can make progress
  • Fix bugs in neo4j-shell CALL and trav commands
  • Avoid creating the query.log file if query logging is not actually enabled, make the dbms.logs.query.rotation.size and the dbms.logs.query.rotation.keep_number settings dynamic, so they can be updated at runtime.
  • Keeps fewer transactions in memory during recovery
  • Fix an integer overflow bug that prevented allocation of 512 GiB or more for the page cache.

Cypher

  • Fixes equality for lists in accordance with OpenCypher.

    Before this change, [1,2,3] = [1,2,null] returned false. Now, this comparison will return null which makes equality more consistent in it's behaviour.

  • Fixed an error in slotted runtime where a runtime failure happened when a reference node was being compared to a primitive node

  • Fixes #10387, ArrayIndexOutOfBoundsException for index scans in the slotted runtime for some queries.

  • Adds the ability to log which runtime that was used in query.log

  • Report statistics for changing node key constraints

  • Add renaming of ambiguous variable name in property to semantic table

    Fixes #10444

  • Fixes issue with medium and large databases that might change relatively slowly from never having their Cypher queries replanned. This has been achieved by having the database statistics divergence threshold set by cypher.statistics_divergence_threshold shrink over time, by default from 75% to 10% over 7 hours. The decay is modelled using an inverse function that tends toward zero over many days, and so ultimately all queries will get replanned if even small changes occur.

  • Only open an InputStream in LoadCSV when needed

Causal Clustering

  • New cache for in-flight Raft entries
  • Add unified causal clustering REST endpoint
  • Upgrade to netty 4.1.17.Final

Browser

  • Enable thread to execute cypher on (web worker)

Bolt Server

  • Abandoned and timed out transactions are not released by bolt server

Misc

  • Fixed broken service installation for paths with spaces on Windows

3.4.0-alpha01

Kernel

  • Fix issue https://github.com/neo4j/neo4j/issues/10132
  • Fix online backup of read-only instances with schema and legacy indexes.
  • Fix a bug that would cause exceptions with the message The statement has been closed. when using the traversal API from inside procedures.
  • Allow usage of system timezone for database logs
  • Enable metrics by default. Make reports csv files rotatable.
  • Fix a bug where an entity could be temporarily excluded from some index query results if another key indexed on the same entity were removed.
  • Make the dbms.checkpoint.iops.limit setting dynamic so it can be changed at runtime with the dbms.setConfigValue(setting, value) procedure
  • Fix a NullPointerException bug that could disrupt transactions if a transaction event handler was registered in between beforeCommit and afterCommit

Cypher

  • Only perform check on conflicting mode when @PerformsWrites is present
  • Shade ASM library to avoid version conflicts in embedded deployments
  • Change the behaviour of min and max to not throw exceptions when aggregating values other than numbers and strings.
  • Fix where multiple label predicates are combined with OR
  • Properly handle filtering with empty properties map
  • Fixes #9685 so nested function calls in ELSE inside shorthand CASE works correctly
  • Fixes #8201 so shortestPath and allShortestPaths have the right type in WITH clauses
  • Transitive closure in where clauses
  • Fixes #2556 so that a sensible error message is generated when "not" is parsed as a function.
  • Fixes #3870 so that null values in a parameter map is ignored on CREATE.
  • Fixes #10021 so that we can concatenate and reverse lists of mixed types
  • Fixed bug in shortestPath with predicate depending on multiple patterns
  • Fixes #6568 so that the error message for missing a colon in the relationship type becomes more helpful.
  • Fixes bug in pattern matching around pruning var expand
  • Fixes #9492, so that PruningVarExpand after optional match will handle incoming null nodes
  • Fixes #9492, so that PruningVarExpand after optional match will handle incoming null nodes
  • Fixes #10353 so that calling exists or IS NOT null on a property of a null node evaluates to null rather than throwing an exception
  • Added procedure to clear query caches.
  • Fixes problem around equality and lists with single values
  • Improved error message for invalid regex syntax.

Causal Clustering

  • Mark legacy SSL policy settings as deprecated
  • Fix store copy of growing files
  • Make topology address exception checked
  • Enable hazelcast logging through custom factory
  • Hazelcast bind any
  • Removing the multi-DC flag for refuse-to-be-leader.
  • Increase catchup client timeout to 20s

Tools

  • neo4j-admin restore now exits with error if directory is not a backup

Browser

  • Update JS driver to 1.0.0
  • Update Neo4j JS Driver to 1.0.2
  • Update neo4j js driver to 1.0.3
  • Get Bolt address from server discovery service
  • Query parameter support added
  • Persist visualization auto-complete of relationships and add it to Settings Drawer.
  • Cypher frame now only loads ascii table results when required
  • Enable Bolt setting by default
  • List and kill running queries with the new command :qs
  • See Core-Edge cluster in :sysinfo and connect to individual members
  • Update neo4j-driver to 1.1.0
  • Bolt query execution time is now timed on the server side.
  • Update links to docs on pre-releases to 'beta'
  • Rename command :qs -> :queries
  • Include the server version in the beta docs url
  • Show 'beta' welcome frame for pre-releases to promote new features and how users can send us feedback.
  • Enable :queries command only when procedure is available
  • Sort user roles alphabetically in user admin frame
  • Add support for the bolt+routing protocol when in a Causal Cluster
  • Give users feedback when setting :param
  • Reuse connections for heartbeat to not flood the security log with login items
  • Pre-release of rewritten version of Neo4j Browser.
  • Try to fetch guide remotely if not found locally
  • Fix slow loading of user and system info in database drawer
  • Read and act on server config retain_connection_credentials
  • Define URL to connect to with URL param 'connectURL'
  • Style table view and just show relevant information
  • Fix editor error when writing Cypher LOAD CSV or referencing non existing indexes
  • Fix failure to parse server config browser.remote_content_hostname_whitelist
  • Fix missing scrollbars in left drawer in some web browsers
  • Make the Browser commands case insensitive
  • Fix for collected graph items now showing up in viz
  • Bring back :server status command.
  • Present total db hits and time stats in PROFILE View
  • Backtick meta items in auto generated queries from drawer
  • Fix login for restricted users
  • Fix broken elapsed time in :queries frame
  • Add slider to text view statusbar
  • Listen for config maxFrames and enforce that limit in stream
  • Fix indicator being at start of line in error messages
  • Fix for sensitive dropdown menu closing too easy
  • Update document title with connected username and host
  • Add support for handling multiple commands from browser.post_connect_cmd
  • Escape backticks in meta item queries
  • Limit number of meta items shown in db drawer
  • Introduce fetching client configuration from a remote JSON file
  • Fix :help input with space
  • Fix unstable guide pagination
  • Fix missing auth headers on local :GET, :POST etc command requests
  • Fix cursor sometimes resetting to start position
  • Parse server config duration strings correctly
  • Add cluster role, db filename and total store size to sidebar
  • Add dark theme
  • Only display truthy connection data in the browser title
  • Use separate thread for running cypher queries
  • Save/Edit favorite in editor
  • Add support for setting browser :config with objects
  • Fix sluggish experience when having hundreds of thousands meta items
  • Fix app break when no events in UDC state
  • Fixes mapping issue when using :sysinfo with HA
  • Honor url whitelist when fetching remote grass files
  • Bring back :style command
  • Fix display of zero length paths
  • Don't add repeated executed commands to history
  • Fix expand/collapse of plan results in all levels
  • Fix cypher result exports
  • Fix display of Neo4j integers in Cypher result frames
  • Add ability to download a query plan as png
  • Fix x overflow in frames with %-width in IE 11
  • Sort keys when inspecting nodes
  • Fix null not rendering in table view results
  • Fix generated query for sidebar meta items named ‘*’
  • Update neo4j-driver to 1.4.0
  • Autologin to Browser Sync and obey server config browser.allow_outgoing_connections
  • Fix various bugs in editor Cypher parsing
  • Fix Browser not being able to run cypher queries when using TLS and self signed certs
  • Fix setting initial password over TLS when encryption is required
  • In query plan: show signature of the procedure that got called
  • In query plan: show the label that has been scanned
  • Fix viz bug where boolean captions didn't show up on graph elements
  • Add 3rd party LICENSES.txt and NOTICE.txt
  • Remove escaping of characters in tables views
  • Add visual feedback when adding new favourite, and enter 'edit favourite' mode.
  • Integrate with desktop API
  • Show Browser Sync banner when not accepted terms yet

Bolt Server

  • upgrade jetty server to 9.2

Cypher Shell

  • Added modes: verbose/plain. Verbose displays more information and is intended for interactive use. Plain displays only the data from queries, intended for scripting

  • Added multiline statement support

  • Added option (--encryption) to choose between encrypted and unencrypted communication with the server

  • Added option --debug to get additional information in case of errors

  • Made semicolons optional for shell commands

  • Added version of connected Neo4j to welcome message

  • Fixed lack of interactive detection on Windows

    • Now always uses interactive mode on Windows by default
    • If non-interactive mode is desired (for scripting) then a new flag --non-interactive has been added
  • Insist that username is not empty

  • Fallback to plain bolt:// when url scheme is bolt+routing://

  • Fixed incorrect handling of bangs [!] in usernames/passwords

  • empty password gives a more descriptive error message

  • Fixed handling of pipes on Windows

  • updated to neo4j java driver 1.2

  • cypher-shell now available in standalone Debian and RPM packages

  • Added tabular output format

  • automatically select output format when terminal is interactive or not

  • Fix periodic commit statements

  • Fixed startup crash on Alpine Linux

  • Updated Bolt driver to 1.4.3

Misc

  • Have systemd treat exit code 143 as success

    Since java exits with code 143 when stopped the service should treat this as a graceful exit.

Clone this wiki locally