How to call MAGE procedures?
Once the MAGE query modules, or any custom modules you developed have been loaded into Memgraph, you can start executing them by calling them.
Calling query modules
Once the MAGE query modules or any custom modules you developed have been loaded into Memgraph, you can call them within queries using the following Cypher syntax:
CALL module.procedure([optional parameter], arg1, "string_argument", ...) YIELD res1, res2, ...;
Every procedure has a first optional parameter and the rest of them depend on the procedure you are trying to call. The optional parameter must be result of the aggregation function
project(). If such a parameter is provided, all operations will be executed on a projected graph. Otherwise, you will work on the whole graph stored inside Memgraph.
Each procedure returns zero or more records, where each record contains named
YIELD clause is used to select fields you are interested in or all
of them (*). If you are not interested in any fields, omit the
The procedure will still run, but the record fields will not be stored in
variables. If you are trying to
YIELD fields that are not a part of the
produced record, the query will result in an error.
Procedures can be standalone as in the example above, or a part of a larger query when we want the procedure to work on data the query is producing.
MATCH (node) CALL module.procedure(node) YIELD result RETURN *;
CALL clause is a part of a larger query, results from the query are
returned using the
RETURN clause. If the
CALL clause is followed by a clause
that only updates the data and doesn't read it,
RETURN is unnecessary. It is
the Cypher convention that read-only queries need to end with a
queries that update something don't need to
Also, if the procedure itself writes into the database, all the rest of the
clauses in the query can only read from the database, and the
CALL clause can
only be followed by the
YIELD clause and/or
If a procedure returns a record with the same field name as some variable we
already have in the query, that field name can be aliased with some other name
MATCH (result) CALL module.procedure(42) YIELD result AS procedure_result RETURN *;
Controlling procedure memory usage
When running a procedure, Memgraph controls the maximum memory usage that the
procedure may consume during its execution. By default, the upper memory limit
when running a procedure is
100 MB. If your query procedure requires more
memory to yield its results, you can increase the memory limit using the
CALL module.procedure(arg1, arg2, ...) PROCEDURE MEMORY LIMIT 100 KB YIELD result;
CALL module.procedure(arg1, arg2, ...) PROCEDURE MEMORY LIMIT 100 MB YIELD result;
CALL module.procedure(arg1, arg2, ...) PROCEDURE MEMORY UNLIMITED YIELD result;
The limit can either be specified to a specific value (either in
KB or in
MB), or it can be set to unlimited.