All freetext/fulltext stuff has been removed in favour of 3.5+ productized fulltext indexes.
apoc.index.relatedNodes (index feature ootb) apoc.index.orderedRange (index feature ootb)
apoc.algo.* (use separate graph algo package instead)
apoc.static.get (proc deleted, function exists) apoc.static.getAll (proc deleted, function exists)
apoc.monitor.locks() (proc deleted, cannot get information via api)
-
apoc.agg.statistics on an empty list returns
null
formin
andmax
. Used to be0
previously -
all apoc* configuration option needs to be moved to
apoc.conf
-
apoc.initializer.cypher
-
*apoc.initializer.cypher.<anything>`
-
mongo calls use
compatibleValue:true
by default. Reason: 4.0 doesn’t support java.util.Date as nested value in a map returned from a procedures. Side effect: date values are returned as millis since epoc.
-
Note
|
the following list is incomplete |
-
Neo4j config does no longer allow adhoc dynamic settings - which apoc uses a lot. Therefore APOC 4.0 uses it’s own
apoc.conf
, seeApocConfig.java
. -
moving global core API actions from
GraphDatabaseService
toTransaction
- e.g.tx.createNode(…)
-
removal of graph properties. UUIDHandler, CypherProcedures and Triggers used them in APOC. Instead APOC 4.0 uses
systemdb
, e.g. we maintain a separate node for each trigger:CREATE (n:ApocTrigger{database: <dbname>}, …)
-
refactoring lots of
static
datastructure in APOC intoLifeCycles
, so they can exist on a per-database level -
all calls to AlgoFactory require now a
ExecutionContext
(aka db + tx) -
TransactionTemplate
has been removed from Neo4j -
org.neo4j.cypher.export.SubGraphExporter
et.al have been removed in Neo4j → we add the latest version of the sources to apoc -
using
ImpermanentDatabaseRule
instead ofTestGraphDatabaseFactory…
-
ImpermanentDatabaseRule.withSetting()
takes now typed values instead of strings -
curly braces syntax for Cypher parameters no longer supported :
$param
instead of{param}
-
cypher’s
length
functions doesn’t work on strings any longer. usesize
instead -
TransactionEventHandler
renamed toTransactionListener
-
TransactionListener.beforeCommit
gets an additional parameterTransaction
-
apoc.periodic.iterate
might return different error messages. -
on API level a
IndexDefinition
could have multiple labels. Apoc’sSchema
should reflect that - to be discussed. -
nodes/rels acquired in one tx need to be rebound when used in another tx
tx.getNodeByid(node.getId())