-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Neo4j 3.5 changelog
- Upgrade Apache Shiro from
1.8.0
to1.9.1
. This version includes fixes forCVE-2022-32532
. - Adds blocklist of ip addresses for cypher's outbound http requests
-
Redhat are no longer supporting or updating the
openjdk
docker images that we use as base images. This means there will no longer be security updates toopenjdk
images after July 2022.- https://github.com/docker-library/openjdk/issues/505
- https://github.com/docker-library/docs/pull/2162
Switching Docker base image to eclipse-temurin AdoptOpenJDK java built on top of
debian:bullseye-slim
. -
Change base image to eclipse temurin JRE not JDK. The JDK is overkill and could introduce unnecessary security issues.
- 1.1.15
- Export plan txt and make download dropdown context dependent
- Set SSO as default if sso providers were present - NOTE only supported from Neo4j 4.4.
- Fix bug causing autocomplete to no longer work
- Fixed security issue with the HTTP Transactional API.
- 1.1.15
- Export plan txt and make download dropdown context dependent
- Set SSO as default if sso providers were present - NOTE only supported from Neo4j 4.4.
- Fix bug causing autocomplete to no longer work
- 1.1.15
- Map Factory timezone to UTC
- Remove support for
US/Pacific-New
timezone. Existing values that use unsupported timezone will be interpreted asUS/Pacific
- Fixed a bug where matching on the same variable multiple times would trigger an exception during planning or produce incorrect results.
- Update
jackson-databind
from2.10.5.1
to2.13.2.2
(and thus alsocom.fasterxml.jackson.*
from2.10.5
to2.13.2
), to address CVE-2020-36518
- Upgrade to D3 v7
- Show hint about :auto on CALL {...} IN TRANSACTIONS
- Add missing 4.4 keywords
- Upgrade query plan view to D3 v7
- Reduce icon size to avoid scroll on single line values in table
- Display clustering data in :sysinfo frame again
- Enable setting :params on multiple lines
- Use shift, cmd or ctrl as mod key for wheel zoom
- Add zoom to fit button
- Bump driver to 4.4.2
- Zoom mod key info message
- Debounce writing to localstorage to improve performance
- Remove hard limit of 1000 nodes for visualisation
- Params template on missing paramters errors
- Make max record setting user configurable
- Handle null values in graph viz
- Remove listConfig call in sys info frame causing error for non admins
- Improve causal cluster detection
- Cypher-shell version 1.1.15
- 1.1.14
- Bug fix: Neo4j now also accepts datetime expressions including an offset of times immediately after switching from summer time to winter time.
- Fix bug where planner would fail to find a sorted plan to fulfil order on two variables including aggregation, which would result in issuing an "Expected a sorted plan" error.
- Fixed a bug where using values returned from a procedure would cause a type error like
Type mismatch: expected Float, Integer or Duration but was Number
. - Handle timestamp() in CYPHER 3.4 mode regardless of casing
- Fix a memory leak of the runtime transactional context into the query plan cache
- Update caffeine version from 2.6.2 to 2.9.2 to mitigate potential vulnerability CWE-611
- Upgrade to D3 v7
- Show hint about :auto on CALL {...} IN TRANSACTIONS
- Add missing 4.4 keywords
- Upgrade query plan view to D3 v7
- Reduce icon size to avoid scroll on single line values in table
- Display clustering data in :sysinfo frame again
- Enable setting :params on multiple lines
- Use shift, cmd or ctrl as mod key for wheel zoom
- Add zoom to fit button
- Bump driver to 4.4.2
- Zoom mod key info message
- Debounce writing to localstorage to improve performance
- Remove hard limit of 1000 nodes for visualisation
- Params template on missing paramters errors
- Make max record setting user configurable
- Handle null values in graph viz
- Improve causal cluster detection
- Bump commons compress to 1.21
- Fixes an overflow issue for Duration properties where specific values could lead to failed transactions or transaction log corruption.
- Fix a bug where querying for self-relationships (a relationship that connects a node to itself) in combination with asserting on relationship id (e.g.
MATCH (n)-[r]->(n) WHERE id(r) = 7
) could incorrectly return matches from non-self-relationships. The Cypher planner will now do necessary filtering to ensure that start and end nodes are bound to the same node variable when matching self-relationships in combination with asserting on relationship id. - When performing an
OPTIONAL MATCH
with 2 or more relationships of different relationship types, when returning DISTINCT results (whether in the context of an aggregation or not), the results could be wrong. An example query that returned wrong results is:OPTIONAL MATCH (a)-[r:R]->(b)-[r2:R2]->(c) RETURN count(DISTINCT a) as count
. This has been fixed. - Upgrade to Apache Shiro 1.8.0
- Fixes a bug where queries like
MATCH (a:A) RETURN count(a.prop)
would return the wrong results if there is a uniqueness constraint on labelA
and propertyprop
.
- 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
- Update netty to 4.1.66 to address vulnerabilities CVE-2021-21409 and CVE-2021-21295
- Update netty to address CVE-2021-37136 and CVE-2021-37137
- 1.1.14
- Better handling of inconsistent property chains so that in the very unlikely event that a property record chain cannot be read properly a better failure will propagate to the user. It is also possible to delete entities with inconsistent property chains, at which point the entity's data will be logged to debug.log (only if user explicitly sets setting
dbms.log_inconsistent_data_deletion=true
. - Fix issue with relationship belonging to dense nodes in the high-limit format that could cause corruptions. This affects relationship types with ids larger than 65535.
- Don't overflow on
--9223372036854775808
. Github issue: neo4j/neo4j#12726
- add --expand-commands flag to neo4j-admin commands
- Admin commands stop using the 'Xms' heap setting from the server config
- Update jetty to 9.4.39.v20210325 to address vulnerability CVE-2021-28165
- Removing 'No progress check' from crash generation cleaner
- Fix some corner cases where unhelpful exceptions were thrown when a transaction would read a deleted entity lazily. The entity could have been deleted by this or some other concurrent transaction. We now throw ReadAndDeleteTransactionConflictException from the embedded API, and TransientException (which tells clients to retry their transactions) from the driver (Bolt) API.
- Fixes an issue where an unexpected concurrent closing of a page cursor which was in the middle of doing page faulting might leave a latch unreleased, trapping all future cursors that wanted to look at that page.
- Handle returning of deleted path
- Upgrade to Apache Shiro 1.7.1
- Update jetty to address security vulnerability CVE-2020-27223 (#9199)
- Update Jackson to 2.10.5.1 to address CVE-2020-25649
- Fixes an issue with over-assigning threads during import which could lead to scheduling problems and sub-optimal performance
- Update jetty to address security vulnerability CVE-2020-27218
- Fixes an issue scanning records in high_limit format, where trying to read a record which happened to be a secondary unit would throw exception or read invalid data instead of observing it as unused
- Restore ability to have KeyStores with multiple certificates
- Upgrade to Apache Shiro 1.7.0
- The neo4j-admin push-to-cloud command now does an early check for whether the database will fit the Aura instance before making the dump
- Update jetty from 9.4.17.v20190418 to 9.4.34.v20201102
- Fixes a volumetric checkpoint triggering issue where database could be stuck in a state where checkpoint was made, but no logs were pruned and so checkpoints would be continued to be made even tho no transactions were committed
- Fixes an issue decrementing node degrees where deleting a relationship from a node could sometimes, if the node had self-relationships, decrement the degree twice
- Add StandardNoStopWords analyser provider.
- Fixes an issue where a panic during import could cause a deadlock
- Improving cooperation between the page cache and the IO limiter
-
Fixes a scoping issue where nested pattern comprehensions were evaluated in the wrong scope leading to wrong results. An example of such a query:
MATCH (f:F)<-[:A]-(p) WHERE ALL(condition IN [ (p)-[:B]->(d:D) d.name CONTAINS 'foo' ] WHERE condition) RETURN p { .name }
-
Prevent crash in dbms.killTransaction when log level is set to debug
-
Fix bug where predicate in WHERE clause was ignored for queries combining
variable length pattern and DISTINCT.
- Cypher-shell version 1.1.14
-
Improve error message when index key size limit is violated during index population, include entity id index description.
-
BatchInserter builds counts once
-
Fix bug with potential wrong order for queries with "ORDER BY"
that use an index in the presence of concurrent inserts into that index.
- Fix issue where queries like
WITH *, count(a) AS c ORDER BY c RETURN a
were failing withno variable a in scope
. - Upgrade the dependencies of SLF4j and Shiro to latest stable versions in order to mitigate security vulnerabilities.
- expose and document the
causal_clustering.cluster_binding_timeout
setting
- Make failed indexes restartable again
- Fixed bug where args provided to neo4j-admin commands could not have spaces on windows
- Update Apache Shiro version to 1.5.3
- Fix bug when combining * and a map projection in the same projection, e.g. WITH , s {.}...
- 3.5 planner cardinality fix for OPTIONAL MATCH under APPLY
- Fix bug with multiple ANYs in WHERE clause fail to match
- Fixed a bug where using
node:Label
check on a node returned from a procedure would result in a planner error. - Retain solved hints from the right-hand side of a union.
- Fix a bug where deleting a relationship would not remove its entry from any relevant full-text index on relationships such relationships.
- Fix a bug where space would not be reclaimed by label scan store when removing many nodes or labels, causing the label scan store to grow indefinitely on workloads that would continuously create and delete large portions of the graph.
- Threadpool race fix 3.5
- Fix RollupApply bug
- explicitly set neo4j uid and gid to 7474 in Docker
- Includes store file name in version/ids debug.log printout
- The
BatchInserter
now honours thedbms.read_only
setting. Furthermore, read-only batch inserters are faster to shut down because they don't rebuild indexes. - Fixes issue where created indexes would stop being resampled after restart
- Planner bugfix to avoid cases where the planner gives up without considering all possible plans
- Fixes a bug that in rare cases can lead to a JVM crash with a
sysmalloc: Assertion
orSIGSEGV
error message. - Includes NodeRecord in dynamic label record load error
- Attempting to create a full-text index with a non-existent analyser will now fail the creating query, instead of failing at commit time.
- Fixes issue shrinking high_limit double-unit record back to single-unit
- Update Apache Shiro to 1.5.2 to fix BlackDuck warning
- Log ClusterId and MemberId in neo4j.log on cluster bootstrap
- removed docker specific configuration overrides incompatible with windows networking
- Fix a bug in DETACH DELETE on dense nodes that could lead to inconsistencies
- Fix a bug where DETACH DELETE would not lock the relationships being deleted, allowing overlapping transactions to make changes, such as property updates and chain linkage changes, to those records, which could lead to inconsistencies.
- Fixed a bug where shadowed variable from outer scope would be accessible inside list comprehension when combined with aggregating function.
- Parsing or compilation related errors are now also logged in the query log.
- Fix a problem where the combination of parallel
apoc.periodic.iterate
, anddbms.logs.query.parameter_logging_enabled=true
, could lead to a JVM crash. - Last line in the configuration file is no longer ignored if there is a missing new line
- Add jvm argument,
-Dorg.neo4j.kernel.impl.storemigration.participant.StoreMigrator.migration_threads=<nbrOfThreads>
, to set number of threads used to read and write when upgrading store. By setting a lower value the contention on disk can be reduced. Default value is the number of processors available to the process. - Fix bug where store upgrade could see
IndexOutOfBoundsException
when upgrading store that was much larger than available memory.
- Upgrade the Bouncy Castle dependency to version 1.64
- Pass through exception message in transaction event handlers
- Fix bug with negative intervals such as
RETURN range(1, 2, -1)
- Fixed a bug where outer hash join would be incorrectly planned to solve
OPTIONAL MATCH
with non-join dependencies.
- Add NEO4JLABS_PLUGINS support for neosemantics (n10s)
- Upgrade jackson to 2.10
- A bug has been fixed where recovery of large stores with the
high_limit
format would sometimes fail with anAccess to record <...> went out of bounds of the page
error. - Fix a bug where a ClassCastException would be thrown when querying a full-text index, from a transaction that has uncommitted changes.
- Fix race between index drop and checkpoint
- Upgrade netty to 4.1.43.Final
- Replaced curl with wget in the entrypoint
- Upgrade commons-compress to 1.19
- Fix a bug that would sometimes cause a NullPointerException to be thrown when generating index update commands for transaction changes that partially matched a full-text index.
- The consistency-checker now no longer report NullPointerExceptions when a node or relationship does not have all properties declared in a full-text index. Mismatches between the properties and what is indexed are also properly reported.
- Transaction id is now available for transaction event handles, even for "zero-change write transactions."
- Fix a bug in internal relationship traversal that could lead to a dense node that does not have any relationships of a sought after relationship type, would appear to have a relationship of that type if the iteration occurred immediately after another non-empty relationship iteration.
- Neo4j utility scripts respects HEAP_SIZE over setting from neo4j.conf
- Solved a bug in compiled runtime where complex NodeHashJoins sometimes led to wrong result.
- Decrease the chance of getting
Found no solution for block with size 0
by reducing the number of solutions considered - When calling procedures with parameters of the wrong type, the error message has been improved to make this clear.
- Fixed an IDP planner edge case where complex joins fail to find a solution due to the presence of ignored argument variables
- Fixes regressions with PatternComprehensions inside of
head
or single element accesses/list slices . Expampleshead([ (a)-->(b) | b.prop ])
,[ (a)-->(b) | b.prop ][1]
,[ (a)-->(b) | b.prop ][..5]
- Fixes bug where queries with a pattern comprehension in an
ORDER BY
could get wrong results. - Improve error message for procedure calls
- Added a nicer error message if the planner fails to find a plan
- Fix handling of IPv6 addresses in the backup command.
- 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
- Fix a problem where exceptions can occur in the metrics component during HA mode switch.
-
Fix a planning problem where the planner wasn't using the index after nodes have been deleted.
-
Combining index read, DISTINCT, and MERGE could in some
situations end up with an error saying
Uh oh... There was no slot for...
- Fixed parsing of neo4j.conf on Windows to allow users to specify additional jvm arguments such as jdk.serialFilter.
- Starting a database that needs recovery will no longer wait for a uniqueness index to be rebuilt if the uniqueness index has no uniqueness constraint associated with it
- Consistency check now verify structural consistency of indexes
- Fulltext procedure can not create index with duplicate entity tokens
- Fixed a bug where
Distinct
combined withMapProjection
could cause some results to be removed because they were incorrectly seen as not distinct. - Upgrade commons-compress due to security fix
- Upgrade Apache Shiro to 1.4.1 to mitigate DoS vulnerability
- Queries with variables defined before optional matches that contain
OR
predicates and can be planned asUNION
queries were failing to retain the incoming variables. - Allows queries like
MATCH (n) WHERE id(n)=20.0 RETURN n
to return the node with the id 20.
- Load external config file for akka.
- Optionally use jdk.serialFilter to avoid java serialization exploits
- Fix leak in akka distributed metadata
- No longer try to connect to members which are long gone.
- Startup script has been fixed to run on java11 in all bash variants.
- The consistency checker no longer logs DEBUG messages about the full text indexes failing to register transaction state providers or procedures. These were harmless to begin with, so now they are gone.
- Improve error message for returning relationships that are deleted in the same transaction.
- Fix bug that broke settings that used relative paths when using
neo4j-admin backup
. - Monotonic time tracking for transaction termination monitor
-
: Solves a bug that produced wrong results for queries with
VarExpand
and a predicate that qualifies for solving during expansion containing aPatternComprehension
. An example query looks like this:MATCH path = ( (a) -[r1:REL*0..]- (b) ) WHERE ALL(n in nodes(path) WHERE some.predicate( [ (n)<-[r2]-(c) | c.foo ] ) )
-
Fixes bug in slotted runtime, when a property is read from index and then a node property of the same name is updated later in the query.
E.g.
MATCH (n:Label) WHERE n.prop > 0 WITH collect(n.prop) AS ns MATCH (n:Label) SET n.prop = 0
-
Solved a bug in slotted runtime where complex NodeHashJoins sometimes led to wrong result.
-
Bound calculated selectivity of range seek to exact match selectivity...
-
Adding ProcedureCallContext to Context that can be used by procedures. This will give procedures information about the context in which they were called, specifically which return items were requested via yield. Based on this, the procedure can safely decide to skip calculating values that are not yielded anyway. The procedures db.labels and db.relationshipTypes have taken advantage of this for performance optimizations.
- Resets HA slave state on InvalidEpochException
- LabelScanStore is always store copied under StoreCopyCheckpointMutex
- GenericKey only keep entityId if strictly needed to differentiate keys in minimalSplitter
- Less logging of
Discarded stale query...
- Fix bug where an eventually consistent fulltext index after db restart not be not be eventually consistent anymore.
- The
db.labels
anddb.indexes
procedures now no longer take shared schema locks, which means that they no longer conflict with, nor wait for the completion of, schema mutating transactions.
- Fixes bug with the message "Expressions need to be registered with it's owning Pipe, so the profiling knows where to report db-hits". This should now never happen when assertions are disabled.
- Spatial distance queries will now be solved by a NodeUniqueIndexSeekByRange instead of a NodeByLabelScan when an uniqueness constraint exists.
- Fix planning bug with pattern-predicates on var-length-expand patterns, which would get overly expensive plans including RollUpApplies. This bug is only present in 3.5.6.
- Rarely the planner was not able to find a join between two perfectly joinable plans which would then result in a "Found no solution for block with size 0" error. This is fixed now.
- Fix a rewriter issue which caused too many predicates to be rewritten away for certain queries with optional match and distinct.
- Changed the base image from adoptopenjdk/openjdk8:alpine-jre to openjdk:8-jre-slim
- A new
dbms.checkpoint
procedure has been added. This is useful for when you change the log pruning configuration, and you want the changes to take effect quickly. Note that calling this procedure can have a negative effect on transaction throughput because it temporarily disables thedbms.checkpoint.iops.limit
setting. - Fixes a problem where the recovery that happened after an incremental catchup in a Causal Cluster, would put the write the wrong starting transaction to the
debug.log
. The starting transaction was cached from the first recovery, and wasn't cleared for subsequent recoveries. This only influenced the logging output -- the recovery process itself always picked the correct starting transaction to recovery from. - Full-text schema index queries can now start with a leading
"*"
wildcard, such that, for instance, the token "abcdef" in a property value, can be matched by the query"*def"
. - Print process priority as part of neo4j admin report instead of start time.
- Better handling of OutOfMemoryErrors during log flushing
- Solve bug with the error message
This expression should not be added to a logical plan
that would only occur in test environments. - Fix bug in slot allocation of aliased variable names
- Fix bug with node reference leaking to bolt server
- Fix bug where adding nodes to the graph would not cause a query replan
- Fix rounding error in DurationValue approximate
- Fix memory hogging query collector
- Fixes bug with the message "Tried to map bad logical plan. LHS and RHS must never be the same".
- Partially order routers in accordance with filtering policies
- Reset last message timer monitor on leader stepping down.
- 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
- Backup no longer logs in running server debug.log
- Failure message is not flushed when no free work thread is available
- Performance of making changes to nodes and relationships are no longer affected by the presence of indexes and/or constraints that are not related to the actual changes. Before these changes a large number of indexes and/or constraints could affect performance of write transactions negatively, even if the actual changes were unrelated to the changes made.
- Fix a number of cases where unhelpful exceptions were thrown, when a committed write transaction that perform deletes or removals cause conflicts in an overlapping read transaction. We now throw
IllegalStateException
from the embedded API, andTransientException
(which tells clients to retry their transactions) from the driver (Bolt) API. - 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.
- The
neo4j-admin dump
now uses a new archive format. This makes thedump
andload
commands significantly faster, while also making the archives slightly smaller. Additionally, thedump
andload
commands now also prints their progress to the console. - Fix delay calculation in IO limiter
- Always close reader from RecordingConflictDetector
- fix runtime=slotted any() on rhs of NodeHashJoin
- fix
scala.MatchError
crash onDELETE last(col)
- Fix bug in planner where queries with many OR:ed exact predicates would plan slowly or never complete, if they where solvable with a uniqueness constraint (or Node Key) index.
- Fix missing register-owning-pipe on expression in some pipes
- Makes consistency checker relationship cache algo actually work
- Three improvements around uniqueness constraint creation: (1) Indexes of type UNIQUE without a constraint can be dropped using
DROP INDEX ON :Label(key)
. (2) Uniqueness constraint creation will not be subject to thedbms.transaction.timeout
timeout. (3) Uniqueness constraint creation transaction will notice termination, e.g. termination usingkillQuery
/killTransaction
procedures will actually terminate it. - Internal annotation processors are now in a separate module so they can run from a cleaner annotation path, rather than the classpath. This makes it easier to convince build tools to not complain about them, when building applications that embed Neo4j.
-
neo4j-admin memrec
now makes better suggestions for systems that have memory capacities in the 512 MiB to 1 GiB range. - Deprecate for removal dbms.active_database and unsupported.dbms.directories.database.
- The Causal Cluster Raft Replicator will no longer print (potentially enormous) textual transaction log segments to the
debug.log
. - Index population backed by "block based index populator" could report false negatives for duplicate property values. This happened if, while scanning the store to provide updates for the populating index, property values changed such that the scan would see the same value twice even though no duplication existed in any point in time. This is mitigated by verifying suspected duplicates after population is finished.
- Fix rare bug in slotted runtime which would manifest as an exception with the message
Tried to copy more data into less
in Cypher queries with execution plans containing anApply
with aOptional
and aDistinct
on its right hand side. - Fixes problem in procedure
dbms.setTXMetaData()
wherenull
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
- Routing procedures now run with mode DBMS
- ClusterBinding Shutdown
- Improve logging of result of causal cluster handshakes
- Raft membership manager can no longer consider itself superfluous
- 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
- Updated Jetty version to 9.2.26.v20180806
- 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.
- Improvements to total mapped size calculations
- Programatic invocations of online backup now respects the page cache tuning parameters that they are given.
- Programatic invocations of online backup now respects the page cache tuning parameters that they are given.
- Adds IndexReader#distinctValues() able to access all distinct values in an index with number of indexed entries for each value. Values are materialized if user requests it and the index supports materialization of actual values.
- Backport: Removes accidental limitation of number of reltypes to 64K for high_limit format
- Updating after undirected match with predicate
- Fix issue with PROFILE and EXPLAIN of queries with unusual variable names
- Fix bug in slotted NodeRightOuterHashJoin, which would lead to wrong results.
- Delete spammy log line.
- A new
db.index.fulltext.awaitIndex
procedure has been added, which can await indexes specified by name, instead of the label/property pattern it supported so far by thedb.awaitIndex
procedure. Specifically, this means that you can now wait for specific named fulltext indexes to come online. Previously it was only possible to wait for fulltext indexes to come online, by calling thedb.awaitIndexes
procedure, which waits for all schema indexes. The behaviour of the existingdb.awaitIndex
procedure has not been changed, in order to preserve compatibility. - 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
- Fix a problem where if a fulltext schema index and a normal schema has the same schema (e.g. the same label and property combination) then the fulltext schema index could not be dropped. It is now possible to drop fulltext schema indexes, even when the schema of the fulltext index matches that of a normal schema index.
- 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.
- The result of the
db.index.fulltext.listAvailableAnalyzers
procedure now includes a description of each analyzer. Thesimple
,classic
, andstop
analyzers from the standard Lucene analyzer suite have also been added. - Properly prints FAILED on import failure
- Close all index readers opened during lockingNodeUniqueIndexSeek
- Restore possibility to use BranchedStoreBean.
- Prevent fulltext indexes from being created via db.createIndex procedure.
-
Obsfucate LDAP system password in debug log
-
When ordering both by aliased (
var01
) and unaliased (p.name
)columns, we would possibly swap them. This is now fixed.
- Pass command line arguments to powershell scripts using proper parameter passing rather than injection into a script block.
- Netty 4.1.32.Final
- Remove ID-files if instance was unbound
-
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 -
Add link
:server user list
to admin section of db sidebar
- Deprecate JMX beans in favour of metrics that can be exposed over multiple providers (including JMX) or procedures.
- Introduce procedures that able to kill transactions.
- Neo4j will now log warnings if there are duplicate settings in the
neo4j.conf
file. - Update reported metrics types to correctly represent nature of reported event.
- Removes explicit neo4j-admin import db existence check
- Improves the error message when a kernel extension cannot be loaded for various reasons, such as version mismatches between extensions like APOC, and Neo4j itself.
- Fix public api: revive legacy iterators
- Fix VM pause monitor logging
-
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. -
Fixes an issue with having a DISTINCT (that is on the node instead of the property) between an index read and the usage of the property.
E.g
MATCH (n:Label) WHERE n.prop = 42 WITH DISTINCT n RETURN n.prop
-
Fix an error that made the timestamp function case sensitive, https://github.com/neo4j/neo4j/issues/12097
-
Solve a bug where a variable reused after a WITH ORDER BY (e.g.
MATCH (n) WITH n.prop1 AS prop ORDER BY n.prop2 MATCH (n) ...
), meant the variable use in the ORDER BY was not picked up in semantic checking.
- 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
- Fixed an issue where discovery document construction did not consider request URI for
bolt
entries and always pointed tolocalhost
when noadvertised_address
is not configured for the connector.
- Fix issue where queries with many disjunctive index seeks (
... n.age = 3 OR n.name = 'George' ...
) would plan forever.
- Adds IndexReader#distinctValues
- Add original cause of failure to failed index stack trace. Partly addresses https://github.com/neo4j/neo4j/issues/12038
- The
continuous
checkpoint policy (thedbms.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
- 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.
- 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
- 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.
- Index providers lucene-1.0, lucene+native-1.0 and lucene+native-2.0 are deprecated and will eventually be removed. The recommended index provider to use is native-btree-1.0. The only reason to use any of the deprecated providers should be the limitations described in detail in the operations manual. For those limitations there are currently no replacement and deprecated providers will not be removed until there is.
- In some cases, label would be left out when printing index description in logs. This is now fixed. Partly addresses https://github.com/neo4j/neo4j/issues/12038
- In the case where an index ends up in a failed state, it is now possible to get the cause of the failure from procedure
db.indexes
. Partly addresses https://github.com/neo4j/neo4j/issues/12038 - Avoids legacy index removed-entity-repair if no write allowed
- Fix issue where missing headers caused a
NullPointerException
to occur. - Fix ORDER BY + LIMIT 0 in slotted runtime
- Added new property schema procedures
db.schema.nodeTypeProperties
anddb.schema.relTypeProperties
- Fixes issue where spatial and temporal properties wasn't handled correctly when using
"resultDataContents": ["rest"]
in REST API. - Fix PeRiOdiC COmmIT being case sensitive
- Fixed a bug with alphabetical ordering of indexes from db.indexes
- 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.
- Consistency-checker PropertyReader detects circular property chains
- 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.
- Server plugins are now deprecated for removal in the next major release. We recommend that unmanaged extensions are used instead.
- The
neo4j-shell
command, and the shell server, have been removed. We recommend usingcypher-shell
instead.
-
Fixes issue with index planning around predicates with dependencies. In particular, spatial bounding box queries can now be index backed even if the min and/or max expressions include variables.
-
Fix planner regression in which HashJoin + AllNodeScan was preferred
over OptionalExpand in certain cases.
-
Fix ORDER BY + LIMIT 0 in slotted runtime
- Garbage collector log location is changed to be logs directory instead of neo4j home.
- 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.
- Fixes an authentication bug when using startTLS and System Account
- Read replicas now copy the store from a single other member of the cluster.
- 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
- Rotate transaction logs during incremental backup.
-
Remove cursor pooling on a page cache level.
-
Uses order from index seeks in Cypher instead of planning Sort operators, where possible. This will work only for a very limited set of queries and only for ascending order. Example
MATCH (n:B) WHERE n.prop STARTS WITH 'foo' RETURN n.prop ORDER BY n.prop
. In order to trigger index-backed ordering, it is currently always necessary to provide a Range predicate (n.prop STARTS WITH 'foo'
orn.prop > 0
or ...).This also adds a new column to the ASCII art plan description: Order. The column describes the order of the outgoing rows of that operator.
-
Augment Cypher to support index-backed order on
CONTAINS
andENDS WITH
predicates. This is possible because all current indexes that support ordering solve these queries by a scan and filter, and therefore provide results in order. -
Enable Index-backed order by in descending order from Cypher.
-
This changes the planner to use index provided properties (instead of going to the property store) in the following two cases:
MATCH (n:L) WHERE n.prop <= 42 AND n.prop % 2 = 0
(usage in another predicate)MATCH (n:L) WHERE n.prop = 42 WITH n as m MATCH (m)-[r]-(o) RETURN m.prop
(usage after a WITH) -
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
, whichCanada/East-Saskatchewan
has been renamed to. Previously only the value read from store would beCanada/Saskatchewan
-
Fix bug in queries containing
RETURN
orWITH
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 withWITH/RETURN should note its Scope in the SemanticState
. -
Fix bug which would cause
FunctionInvocation(...) has to type from semantic analysis
errors for some complexWITH
-clauses in a write query.
- Check recovery status of store when bootstrapping cluster
- User log can written directly to neo4j.log. neo4j.log can be configured to use log rotation.
- Fix username not updating in sidebar when disconnecting
- Improve Cypher result rendering performance
- Prepare for Neo4j Desktop distribution
- Allow disabling HTTP in Neo4j server and harness. Embedded Jetty server is not started when both HTTP and HTTPS are disabled. REST endpoints will not be available and server plugins / extensions will never be loaded or executed.
- Upgrade the Bouncy Castle dependency to version 1.60.
- Deprecate High Availability Edition.
- 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.
- Cluster instances display additional information on availability endpoints to help in rolling upgrades
- Unbind from cluster successful if already unbound
- Revert mistakenly enabling NEO4J_DEBUG by default for neo4j-admin
- 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 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.
-
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
-
If the index can provide exact property values, they will be used starting of now. Indexes can always provide the values for equality predicates and all native indexes except the spatial index can also return the property values for other predicates. Lucene and spatial indexes cannot provide the values.
An example of what improves:
MATCH (n:N) WHERE n.prop > 10 RETURN n.prop
used to planned with a Projection. Now, the property values are obtained directly from the NodeIndexSeek. This will avoid additional lookups in the PropertyStore. -
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.
- Add an eventually consistent update mode for the fulltext indexes.
- All APIs, surfaces and features related to explicit/auto/manual/legacy indexes are now deprecated for removal in the next major release. People are encouraged to switch to schema indexes, and the new full-text indexes, instead.
- Avoid ConcurrentModificationException in the SchemaCacheState copy-constructor.
- Allow disabling the FileWatcher
- 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.
- Akka discovery
- Bounded queue and batching for Raft content
- Fix hostname regression
- Removing the stracktrace of login errors in user log (neo4j.log)
- Constraint index violation won't fail BatchInserter#shutdown()
- Fix issue https://github.com/neo4j/neo4j/issues/11993
-
Port okapi.schema() procedure to 3.4
-
date(null)
used to falsely return the current date. Now it returnsnull
instead. The same is true for all other temporal functions. -
Give sensible error message for merge on null node.
-
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.
- Add support for Powershell ConstrainedLanguage mode
- ICE hostname verification
- Procedures to list and kill network connections
- Fix connection stop from failing because of rejected execution errors
- Index provider for the fulltext index
- Add support for attaching to running neo4j instance on Windows servers
- 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
- Fix log warning of replication retry attempts
- Add toggle for multi statement cypher editor
- Fix editor to handle string literals that contain new lines
- Make authentication rate limits configurable
- Parallel flushing and forcing of pages
- Disable prometheus during backup to fix port conflict issues
- 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 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
and1/6
.
-
Nicer store copy logging.
Avoid logging stack trace on:
- connection refused
- topology lookup exception
- Add support for multi-statement execution
- 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
- Restore ability to handle directories on database restore
- Fix incorrect index validity check for lucene indexes (Backport of PR #11150)
- Update logging messages around indexes and constraints population.
- Fix issue where the diagnostic reporter did not support paths with spaces in the destination file.
- 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
- Add missing hits and unpins metrics to page cache statistics JMX bean.
-
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
-
Plan consecutive CREATE clauses as one Create operator instead of multiple CreateNode and CreateRelationship. This improves performance of big create queries, and avoid stack overflow problems for extreme cases.
-
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. -
Fixes bug that caused the Unknown value type: STRUCT error with queries that use PERIODIC COMMIT over bolt and return whole nodes or relationships
-
Aggregation (SUM, AVG) for Durations
-
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
-
Add support for using compiled expressions.
- Streamed replicated content
- Abort replication on missing leader or leader switch
- 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
- Show the total number of nodes and relationships in db meta sidebar
- Fix issue where neo4j-browser kept allocating more and more disk space
- Upgrade to jetty 9.4.11.v20180605
-
Increase swapper id limit, allowing more files (like indexes) to be opened by the page cache, and fix a MemoryManager bug around alignment handling.
-
Adds the configuration option
db.temporal.timezone
to configure a default time zone affecting the creation of all temporal values. -
Remove the traversal endpoints.
-
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.
-
Fix bug in un-directed ProjectEndPoints when both end points are in scope
-
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
- Failure to switch to master is no longer terminal
- Cache local topology information and various minor cleanup
- 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
- Enable thread to execute cypher on (web worker)
- Fix issue where mapping cypher result to vis would break the app
- 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
- Add page cache hit ratio to :sysinfo frame
- 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
- 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
- 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
- Configurable CORS header
- Couple security-related improvements for server