Skip to content

Releases: neo4j-contrib/neo4j-apoc-procedures

APOC First 4.0 release 4.0.0-RC01

12 Dec 12:06
Compare
Choose a tag to compare

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

18 Nov 15:51
Compare
Choose a tag to compare

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.

Enjoy!
@mneedham and @JMHReif

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

04 Oct 10:33
Compare
Choose a tag to compare

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 and filterStartNode, 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

30 May 21:44
Compare
Choose a tag to compare

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

30 May 22:01
Compare
Choose a tag to compare

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

17 Apr 23:57
Compare
Choose a tag to compare

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 via apoc.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 to apoc.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

17 Apr 23:43
Compare
Choose a tag to compare

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 via apoc.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 to apoc.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

17 Apr 23:45
Compare
Choose a tag to compare

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.

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 exists
  • apoc.load.xls Cannot convert java.util.Date to AnyValue
  • apoc.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

15 Feb 21:08
Compare
Choose a tag to compare

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.

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 exists
  • apoc.load.xls Cannot convert java.util.Date to AnyValue
  • apoc.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

27 Nov 14:16
Compare
Choose a tag to compare

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.