Releases: neo4j-contrib/neo4j-apoc-procedures
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
Fall Release 3.5.01
This is the first APOC release for Neo4j 3.5.0, it is available via Neo4j Desktop.
We're really excited about this APOC release. It contains a lot of solved issues and new features.
Thanks a lot to all contributors that helped crafting the release, especially the folks from our partner Larus, Italy (@conker84 , @AngeloBusato, @omarlarus, @albertodelazzari ), @szarnyasg, my colleagues @sarmbruster, @michael-simons, @kvegter
Let's have a look at the changes:
- apoc.export.json - exports your database/query/subgraph as stream of json objects
- apoc.text.format - additional locale for formatting
- apoc.coll.frequenciesAsMap - the item is the key an the count the value
- added fast procedures for finding distinct neighbours of a node many hops apart
- cypher initializer for running statements at startup of the database
- Added apoc.trigger.removeAll
Issues:
- support older JDBC drivers with missing isClosed method
- Support Temporal types in apoc.load.jdbc
- remove support for XML entities (CVE)
- fix one-line XML import
- handle relative import paths correctly if configured
- apoc.schema.assert does not drop existence constraints
- JSON numbers are loaded as long values, like Cypher supports
- apoc.export.cypher.all works with temporal types
- deal gracefully with URLStreamHandlerFactory init issues
- better argument handling for date format functions
- Fix Graph Refactoring for merge nodes
As usual, please try them out and let us know if everything works for you.
If you run into any issues please raise a GitHub issue here, or ask on the Community Site.