Releases: neo4j-contrib/neo4j-apoc-procedures
APOC Winter Release 3.5.0.7
Admittedly it's been a very mild winter here in London town, but that doesn't mean that we can't have a new APOC release!
Contributions for new procedures, fixes, and documentation updates came from @conker84, @mneedham, and @karmakaze.
Happy developing!
@JMHReif and @mneedham
Quick List of Changes
- add recursive parameter for
map.removeKey
andmap.removeKeys
(fix for #1270) - add
apoc.systemdb.graph
for details of system database in Neo4j - add
apoc.systemdb.execute
to execute DDL commands against system database in Neo4j (fix for #1357) - add exception handling for
apoc.xml.import
on config error - add
apoc.nodes.relationship.types
andapoc.nodes.relationship.exists
to check relationships across multiple nodes (fix for #1136) - add
apoc.date.parseAsZonedDateTime
to parse date with time and timezone
Bug fixes
- fix for
apoc.load.xls
range issue with columns after Z (fix for #1342) - fix for
apoc.cypher.runFile
to not fail on an empty transaction (fix for #1262) - fix for
apoc.periodic.*
to improve logging (fix for #1363) - fix for
apoc.export.cypher.*
to correctly handle multiple labels (fix for #1366) - fix for
apoc.export.csv.graph
to handle internal and business ids in data (fix for #1335)
Configuration changes
- move configurations to 1. environment variables, 2. system properties, or 3. apoc.conf file
- complete list of configurations moved is in docs(https://neo4j.com/docs/labs/apoc/4.0/config/)
Documentation
- add feedback form in documentation pages - let us know where we can improve the docs!
- refactored documentation pages for
apoc.export.csv
andapoc.export.json
- fix for
apoc.load.jsonParams
to add documentation and test (fix for #1279)
APOC First 4.0 release 4.0.0-RC01
This is our first release of APOC that works with the Neo4j 4.0 series for those early birds who are already kicking the tyres of the latest and greatest.
APOC Almost Winter Release 3.5.0.6
It's only just gone 4pm in London and it's already pitch black outside as we do this release. Over in Saint Louis it's still daylight, but then again it is the morning over there.
This release was mostly powered by @conker84, but we also have good assists from @tomasonjo, @vboulaye, and the ever present @sarmbruster.
Quick list of changes:
- Added streaming support to export JSON and GraphML (fix for #1276)
- Added string multiplication
apoc.text.repeat
- Added
apoc.coll.fill
function - Added
apoc.custom.delete/remove
(fix for #1317)
Bugfixes
- fixed some null issues on apoc.coll.containsAll
- apoc.graph.fromDocument considers mappings field into document whitelist (fix for #1333)
- fixed Mongo procedure throws NullPointerException if a field is null (fix for #1331)
- fixed apoc.periodic.repeat doesn't provide any feedback when query is bad (fix for #1268)
- coll.isEqualCollection compare 2 collections in any order (fix for #151)
- ensure Future.cancel(false) is used everywhere (fix for #1315)
- removeRelProperties expects only 2 params + plural property -> ies (fix for #1304)
APOC Fall Release 3.5.0.5
The leaves are turning golden and red here in Europe, and we finally got a new APOC release out.
Thanks a lot to all contributors especially @conker84 (for most of the work), @sarmbruster, @mneedham, @InverseFalcon, @vboulaye
And to everyone who provided feedback, raised issues or submitted ideas.
Thanks to @eastlondoner you can now load APOC and Graph Algorithms directly into your docker image:
docker run -it --rm -p 7474:7474 -p 7867:7867 --env 'NEO4JLABS_PLUGINS=["apoc", "graph-algorithms"]' neo4j:3.5.11
Please note that the APOC docs can now be found under https://neo4j.com/docs/labs/apoc/current
Quick list of changes:
- support for loading data from google cloud storage, thanks to @eastlondoner for the idea
- custom procedures and functions with signature declaration
apoc.graph.fromDocument
for turning (json-)documents into graphs, became much more powerful with custom mappings, embedded documents and handling of missing ids and labels (see the detailed docs)- mongodb object-ids are now handled also in nested fields, you can even get related documents embedded
- lots of documentation updates, thanks @mneedham
- virtual nodes can now wrap real nodes and return only a subset of properties, good to reduce load for visualizations that only need topology + caption
- improvement in the path expansion functions, with
minLevel
andfilterStartNode
, thanks @InverseFalcon - apoc.map.flatten got documented and a parameter for recursion
- new functions apoc.xml.parse and apoc.xml.format to parse XML text directly without loading it from an URL
- Added apoc.agg.maxItems() and apoc.agg.minItems() for getting the collection of items associated with a maximal or minimal supplied value
Bugfixes
- fix in
apoc.export.cypher.query
too many commas and fulltext-index handling - fix in
apoc.export.csv.query
for header order - fix in
apoc.load.jdbc
that prevents the postgres driver from materializing millions of records client-side - fix race condition in cypher initializers
- fixes rounding issues in min, max calculations of statistics aggregation
- fixes 3.5.x apoc.schema.nodes fails
And while you are enjoying this release @sarmbruster is hard at work making APOC ready for Neo4j 4.0
Which includes massive API changes in all places, I can't thank him enough for that. Stefan also fixed a lot of build issues related to Java 11 and Travis and much more !!
Now grab the release and enjoy the new functions and fixes. Please report back any issues and suggestions.
And don't forget to tune in to NODES2019 https://neo4j.com/online-summit our first Neo4j Online Developer conference.
And if you haven't seen them, @mneedham and @JMHReif created a number of APOC guides and knowledge base pages:
APOC Late Spring Release 3.4.0.7
This is just a quick intermediate release before spring is over.
Powered by Neo4j Labs.
As usual big thanks to our contributors that spent countless hours to improve APOC and add useful functionality.
Here are the highlights:
- New procedures: apoc.merge.node.eager() and apoc.merge.relationship.eager()
- New functions: apoc.map.(m)get, apoc.map.mget and apoc.map.submap that fail on missing keys
- Added apoc.date.convertFormats for String date conversions
Bugfixes/Improvements
- Make sure custom procedures are also recreated on other cluster members
- headers incorrect order after apoc csv export
- Prepend cypher runtime=slotted in apoc.periodic.iterate driving statement
- Make the
dbms.directories.import
directory the root for exports too as only that directory should be readable/writeable on a server - keep the mongodb connection open until stream is closed
- allow loading of xml with DTD references
- alias sql statements in neo4j.conf for apoc.load.jdbc
- Adds ignoreQuotations configuration to apoc.load.csv
- Avoid using recursion for re-submitting rejected tasks in the Pools.
- Fix apoc.refactor.mergeNodes index conflict exception by moving property copying last just after deleting of source node
Enjoy!
APOC Late Spring Release 3.5.0.4
This is just a quick intermediate release before spring is over.
Powered by Neo4j Labs.
As usual big thanks to our contributors that spent countless hours to improve APOC and add useful functionality.
Here are the highlights:
- New procedures: apoc.merge.node.eager() and apoc.merge.relationship.eager()
- New functions: apoc.map.(m)get, apoc.map.mget and apoc.map.submap that fail on missing keys
- Added apoc.date.convertFormats for String date conversions
Bugfixes/Improvements
- Make sure custom procedures are also recreated on other cluster members
- headers incorrect order after apoc csv export
- Prepend cypher runtime=slotted in apoc.periodic.iterate driving statement
- Make the
dbms.directories.import
directory the root for exports too as only that directory should be readable/writeable on a server - keep the mongodb connection open until stream is closed
- allow loading of xml with DTD references
- alias sql statements in neo4j.conf for apoc.load.jdbc
- Adds ignoreQuotations configuration to apoc.load.csv
- Avoid using recursion for re-submitting rejected tasks in the Pools.
- Fix apoc.refactor.mergeNodes index conflict exception by moving property copying last just after deleting of source node
Enjoy!
APOC Neo4jLabs Spring Release 3.5.0.3
APOC Spring Release 3.5.0.3
Powered by Neo4j Labs.
This is the first Neo4jLabs release of APOC.
It is full of new features and extensions to existing ones.
Over the next few weeks you will see articles exploring those features a bit more in detail.
As usual we got a lot of support and contributions from many people, especially @conker84 and @AngeloBusato from our partner Larus-IT, Italy.
But this time we have to thank also a lot of new and previous contributors:
New Features
- Automatically create a graph representation from nested JSON document, this is a starting point, it will get more configurable, optionally returns a virtual graph
- New modes for
apoc.export.cypher
that optimize import performance, down from 4 hours for 4M nodes/rels to 10 minutes (with cypher-shell 1.1.9) - An automatic UUID handler configurable by label, ensures that each node of that label will get an UUID id set at creation time, with means to update existing nodes
- Excel Export (
apoc.export.xls.*
) also allows different labels to go to different sheets - New functions for checking if relationships exists and their degrees:
apoc.node.relationships.exist
/apoc.node.relationships.degrees
, also for lists of nodes
Improvements:
- breaking change: switch import directory mode to honor neo4j import directory setting by default, so only files in the import directory can be accessed (security)
apoc.export.csv
has now an option (bulkImport:true
) for supporting the bulk import viaapoc.import.csv
, also handling of quote characters- don't follow redirects that change protocols (security)
- added functions for
apoc.static.get*
- added functions for
apoc.text.phonetic*
- automatically prefix the slotted runtime for apoc.periodic.iterate esp for graph refactorings
description
field for custom procedures- list custom functions and procedures with
apoc.custom.list
- config options to (disable,garble, enable) custom logging (security)
- add an option
includeFailedBatches
toapoc.periodic.iterate
that returns a portion of the failed batch for analysis - fix division by zero operation during sampling of metadata
- revised Metrics and Log Streaming approach, especially for the Halin Monitoring tool (security) (see https://install.graphapp.io)
- test container support for cassandra, jdbc(postgres), neo4j (testing)
Bugfixes
- proper write locking of both nodes and relationships in
apoc.lock.all
- made clone and relationship direction procedures eager.
APOC Neo4jLabs Spring Release 3.4.0.6
APOC Spring Release 3.4.0.6
Powered by Neo4j Labs.
This is the first Neo4jLabs release of APOC.
It is full of new features and extensions to existing ones.
Over the next few weeks you will see articles exploring those features a bit more in detail.
As usual we got a lot of support and contributions from many people, especially @conker84 and @AngeloBusato from our partner Larus-IT, Italy.
But this time we have to thank also a lot of new and previous contributors:
New Features
- Automatically create a graph representation from nested JSON document, this is a starting point, it will get more configurable, optionally returns a virtual graph
- New modes for
apoc.export.cypher
that optimize import performance, down from 4 hours for 4M nodes/rels to 10 minutes (with cypher-shell 1.1.9) - An automatic UUID handler configurable by label, ensures that each node of that label will get an UUID id set at creation time, with means to update existing nodes
- Excel Export (
apoc.export.xls.*
) also allows different labels to go to different sheets - New functions for checking if relationships exists and their degrees:
apoc.node.relationships.exist
/apoc.node.relationships.degrees
, also for lists of nodes
Improvements:
- breaking change: switch import directory mode to honor neo4j import directory setting by default, so only files in the import directory can be accessed (security)
apoc.export.csv
has now an option (bulkImport:true
) for supporting the bulk import viaapoc.import.csv
, also handling of quote characters- don't follow redirects that change protocols (security)
- added functions for
apoc.static.get*
- added functions for
apoc.text.phonetic*
- automatically prefix the slotted runtime for apoc.periodic.iterate esp for graph refactorings
description
field for custom procedures- list custom functions and procedures with
apoc.custom.list
- config options to (disable,garble, enable) custom logging (security)
- add an option
includeFailedBatches
toapoc.periodic.iterate
that returns a portion of the failed batch for analysis - fix division by zero operation during sampling of metadata
- revised Metrics and Log Streaming approach, especially for the Halin Monitoring tool (security) (see https://install.graphapp.io)
- test container support for cassandra, jdbc(postgres), neo4j (testing)
Bugfixes
- proper write locking of both nodes and relationships in
apoc.lock.all
- made clone and relationship direction procedures eager.
APOC Winter Release 3.5.0.2
This release of APOC is packed with new features and capabilities.
Thanks a lot to all the contributors who help to make it such a successful open-source project.
- @conker84 @moxious @AngeloBusato @tomgeudens @sarmbruster @sim51
- @StefanoBelloni @szarnyasg @michael-simons @InverseFalcon @omarlarus
We also proudly introduce the new documentation pages for APOC, which now come with chunked paged for each section.
As usual, we'd love your feedback on the new release and functions. Please submit issues and improvement requests.
New features:
- Added
apoc.refactor.cloneSubgraph()
for cloning and re-anchoring a subgraph of nodes and relationships between them - Added functions for node, relationship or graph hash calculation (fingerprinting)
- A function
apoc.nodes.collapse(node-list, {config})
to collapse larger sets of nodes into single virtual nodes - Adds
apoc.metrics.storage(dirName)
to allow inspection of free storage - Reporting CSV Metrics and Log File Streaming
- Function to drop duplicate neighbors in a collection
- Added
apoc.agg.graph
to return a minimal, distinct set of nodes and relationships from a query
Improvements:
apoc.convert.toTree
config option to include/exclude certain properties- character index and more config options for
apoc.xml.import
- Make
apoc.meta.*
sample at batches taking a given sample-count across all nodes of each label - Add ability to provide label to schema functions for filtered result
apoc.meta.cypherType
should give consistent cypher-type info- Provide a configuration parameter map with user/pass for JDBC
Bugfixes
- quotes handling for
apoc.export.csv
- Several fixes for graphml export and gephi streaming
- apoc.periodic.commit should check for
limit
apoc.export.cypher.all
fails when a compound constraint existsapoc.load.xls
Cannot convert java.util.Date to AnyValueapoc.load.jdbc
select timestamp column which value is NULL raise Exception- export function label ordering
- Better null handling for collection functions
Build Improvments
- Add TestContainer Integration for database and Neo4j(Enterprise) tests
- Add new documentation build toolchain using asciidoc with docbook
APOC Winter Release 3.4.0.5
This release of APOC is packed with new features and capabilities.
Thanks a lot to all the contributors who help to make it such a successful open-source project.
- @conker84 @moxious @AngeloBusato @tomgeudens @sarmbruster @sim51
- @StefanoBelloni @szarnyasg @michael-simons @InverseFalcon @omarlarus
We also proudly introduce the new documentation pages for APOC, which now come with chunked paged for each section.
New features:
- Added
apoc.refactor.cloneSubgraph()
for cloning and re-anchoring a subgraph of nodes and relationships between them - Added functions for node, relationship or graph hash calculation (fingerprinting)
- A function
apoc.nodes.collapse(node-list, {config})
to collapse larger sets of nodes into single virtual nodes - Adds
apoc.metrics.storage(dirName)
to allow inspection of free storage - Reporting CSV Metrics and Log File Streaming
- Function to drop duplicate neighbors in a collection
- Added
apoc.agg.graph
to return a minimal, distinct set of nodes and relationships from a query
Improvements:
apoc.convert.toTree
config option to include/exclude certain properties- character index and more config options for
apoc.xml.import
- Make
apoc.meta.*
sample at batches taking a given sample-count across all nodes of each label - Add ability to provide label to schema functions for filtered result
apoc.meta.cypherType
should give consistent cypher-type info- Provide a configuration parameter map with user/pass for JDBC
Bugfixes
- quotes handling for
apoc.export.csv
- Several fixes for graphml export and gephi streaming
- apoc.periodic.commit should check for
limit
apoc.export.cypher.all
fails when a compound constraint existsapoc.load.xls
Cannot convert java.util.Date to AnyValueapoc.load.jdbc
select timestamp column which value is NULL raise Exception- export function label ordering
- Better null handling for collection functions
Build Improvments
- Add TestContainer Integration for database and Neo4j(Enterprise) tests
- Add new documentation build toolchain using asciidoc with docbook