diff --git a/modules/ROOT/content-nav.adoc b/modules/ROOT/content-nav.adoc index d7c5a81fa..bffd13898 100644 --- a/modules/ROOT/content-nav.adoc +++ b/modules/ROOT/content-nav.adoc @@ -125,6 +125,7 @@ *** xref:database-administration/composite-databases/querying-composite-databases.adoc[] *** xref:database-administration/composite-databases/sharding-with-copy.adoc[] ** xref:database-administration/syntax.adoc[] +** xref:database-administration/routing-decisions.adoc[] * xref:database-internals/index.adoc[] ** xref:database-internals/transaction-management.adoc[] @@ -236,6 +237,8 @@ *** xref:tools/neo4j-admin/validate-config.adoc[] ** xref:tools/cypher-shell.adoc[] +* xref:procedures.adoc[] + * xref:tutorial/index.adoc[] //** xref:tutorial/local-causal-cluster.adoc[] //** xref:tutorial/causal-backup-restore-db.adoc[] @@ -246,10 +249,6 @@ ** xref:tutorial/tutorial-immutable-privileges.adoc[] ** xref:tutorial/tutorial-clustering-docker.adoc[] -* Appendix -** xref:reference/procedures.adoc[] -** xref:routing-decisions.adoc[] - // ** xref:clustering-advanced/index.adoc[] // *** xref:clustering-advanced/lifecycle.adoc[] // *** xref:clustering-advanced/multi-data-center/index.adoc[] diff --git a/modules/ROOT/pages/authentication-authorization/ldap-integration.adoc b/modules/ROOT/pages/authentication-authorization/ldap-integration.adoc index e658c194d..d927164f2 100644 --- a/modules/ROOT/pages/authentication-authorization/ldap-integration.adoc +++ b/modules/ROOT/pages/authentication-authorization/ldap-integration.adoc @@ -65,7 +65,7 @@ this LDAP group will fail authentication, even if their credentials are correct. |=== All settings are defined at server startup time in the default configuration file _xref:configuration/neo4j-conf.adoc[neo4j.conf]_ or can be modified at -runtime using xref:reference/procedures.adoc#procedure_dbms_setconfigvalue[`dbms.setConfigValue()`]. +runtime using xref:procedures.adoc#procedure_dbms_setconfigvalue[`dbms.setConfigValue()`]. [[auth-ldap-configure-provider]] diff --git a/modules/ROOT/pages/clustering/databases.adoc b/modules/ROOT/pages/clustering/databases.adoc index 3a3336fb9..dae7b8502 100644 --- a/modules/ROOT/pages/clustering/databases.adoc +++ b/modules/ROOT/pages/clustering/databases.adoc @@ -145,9 +145,9 @@ By default, a newly created database has both read and write access. To relieve the load of a specific server(s), you can use one of the following procedures to deallocate databases causing the pressure from the server(s): -* xref:reference/procedures.adoc#procedure_dbms_cluster_deallocateDatabaseFromServer[`dbms.cluster.deallocateDatabaseFromServer("server-name", "database-name")`] -* xref:reference/procedures.adoc#procedure_dbms_cluster_deallocateDatabaseFromServers[`dbms.cluster.deallocateDatabaseFromServers(["server-name1", "server-name2"\], "database-name")`] -* xref:reference/procedures.adoc#procedure_dbms_cluster_deallocateNumberOfDatabases[`dbms.cluster.deallocateNumberOfDatabases("server-name", number)`] +* xref:procedures.adoc#procedure_dbms_cluster_deallocateDatabaseFromServer[`dbms.cluster.deallocateDatabaseFromServer("server-name", "database-name")`] +* xref:procedures.adoc#procedure_dbms_cluster_deallocateDatabaseFromServers[`dbms.cluster.deallocateDatabaseFromServers(["server-name1", "server-name2"\], "database-name")`] +* xref:procedures.adoc#procedure_dbms_cluster_deallocateNumberOfDatabases[`dbms.cluster.deallocateNumberOfDatabases("server-name", number)`] [NOTE] ==== @@ -200,7 +200,7 @@ To rebalance all database allocations across the cluster, for example, because y [[reallocate-databases-procedure]] === Reallocate databases using a procedure -You can use the procedure xref:reference/procedures.adoc#procedure_dbms_cluster_reallocateDatabase[`dbms.cluster.reallocateDatabase`] to rebalance a specific database across the cluster, or xref:reference/procedures.adoc#procedure_dbms_cluster_reallocateNumberOfDatabases[`dbms.cluster.reallocateNumberOfDatabases`] to rebalance a number of database allocations across the cluster and relieve overloaded servers. +You can use the procedure xref:procedures.adoc#procedure_dbms_cluster_reallocateDatabase[`dbms.cluster.reallocateDatabase`] to rebalance a specific database across the cluster, or xref:procedures.adoc#procedure_dbms_cluster_reallocateNumberOfDatabases[`dbms.cluster.reallocateNumberOfDatabases`] to rebalance a number of database allocations across the cluster and relieve overloaded servers. Note that if the cluster is already balanced, no reallocations will happen when running these procedures. These procedures do not require a server name and can be executed with or without a dry run. @@ -240,7 +240,7 @@ This command can also be used with `DRYRUN` to preview the new allocation of dat [CAUTION] ==== `REALLOCATE DATABASES` on a large cluster with many databases has the potential to move a lot of allocations at once, which might stress the cluster. -Consider starting with more limited reallocations, such as xref:reference/procedures.adoc#procedure_dbms_cluster_reallocateNumberOfDatabases[`dbms.cluster.reallocateNumberOfDatabases`] with a small number, and let the databases complete their reallocation before calling it again, until no more reallocations are necessary. +Consider starting with more limited reallocations, such as xref:procedures.adoc#procedure_dbms_cluster_reallocateNumberOfDatabases[`dbms.cluster.reallocateNumberOfDatabases`] with a small number, and let the databases complete their reallocation before calling it again, until no more reallocations are necessary. ==== [NOTE] @@ -263,13 +263,13 @@ neo4j@neo4j> DRYRUN REALLOCATE DATABASES; [[recreate-databases]] == Recreate a database -Neo4j 5.24 introduces the xref:reference/procedures.adoc#procedure_dbms_cluster_recreateDatabase[`dbms.cluster.recreateDatabase()`] procedure, which allows you: +Neo4j 5.24 introduces the xref:procedures.adoc#procedure_dbms_cluster_recreateDatabase[`dbms.cluster.recreateDatabase()`] procedure, which allows you: * To change the database store to a specified backup, while keeping all the associated privileges for the database. * To make your database write-available again after it has been lost (for example, due to a disaster). // See xref:clustering/disaster-recovery.adoc[] for more information. - + [CAUTION] ==== The recreate procedure works only for real user databases and not for composite databases, or the `system` database. @@ -338,7 +338,7 @@ If not used stores were more up to date than the used ones, this results in data You can specify a set of available servers. The stores on all allocations will be synchronized to the most up-to-date store from the defined servers. -The number of defined servers cannot exceed the number of total allocations in the desired topology. +The number of defined servers cannot exceed the number of total allocations in the desired topology. [source, shell] ---- @@ -375,7 +375,7 @@ There is an option to define a new topology when recreating a database. This can be beneficial during a disaster, if enough servers are not available to recreate the database with the original topology. When altering the total number of allocations down during a recreation, it is important to remember that the number of seeding servers cannot exceed the number of total allocations of the database. This also holds true when using recreate with an empty list of seeders. -If there are more available servers in the cluster hosting the database than the number of new allocations, the recreation will fail. +If there are more available servers in the cluster hosting the database than the number of new allocations, the recreation will fail. [source, shell] ---- @@ -664,7 +664,7 @@ If not set, there are no mode constraints on the server. [[cluster-default-database]] == Change the default database -You can use the procedure xref:reference/procedures.adoc#procedure_dbms_setDefaultDatabase[`dbms.setDefaultDatabase("newDefaultDatabaseName")`] to change the default database for a DBMS. +You can use the procedure xref:procedures.adoc#procedure_dbms_setDefaultDatabase[`dbms.setDefaultDatabase("newDefaultDatabaseName")`] to change the default database for a DBMS. . Ensure that the database to be set as default exists, otherwise create it using the command `CREATE DATABASE `. . Show the name and status of the current default database by using the command `SHOW DEFAULT DATABASE`. diff --git a/modules/ROOT/pages/clustering/monitoring/status-check.adoc b/modules/ROOT/pages/clustering/monitoring/status-check.adoc index 445ceee5f..df24bdcb7 100644 --- a/modules/ROOT/pages/clustering/monitoring/status-check.adoc +++ b/modules/ROOT/pages/clustering/monitoring/status-check.adoc @@ -4,8 +4,8 @@ [[monitoring-replication]] = Monitor replication status -Neo4j 5.24 introduces the xref:reference/procedures.adoc#procedure_dbms_cluster_statusCheck[`dbms.cluster.statusCheck()`] procedure to monitor the ability to replicate in clustered databases. - +Neo4j 5.24 introduces the xref:procedures.adoc#procedure_dbms_cluster_statusCheck[`dbms.cluster.statusCheck()`] procedure, which can be used to monitor the ability to replicate in clustered databases. +In most cases this means a clustered database is write available. The procedure identifies which members of a clustered database are up-to-date and can participate in successful replication. Therefore, it is useful in determining the fault tolerance of a clustered database. Additionally, you can use the procedure to identify the leader of a clustered database within the cluster. @@ -37,7 +37,7 @@ CALL dbms.cluster.statusCheck(databases :: LIST, timeoutMilliseconds = n | databases | List | Databases for which the status check should run. Providing an empty list runs the status check for all *clustered* databases on that server, i.e. it does not run on singles or secondaries. | timeoutMilliseconds | Integer | How long to allow for replication, before returning it was unsuccessful. -Default value is 1000 milliseconds. +Default value is 1000 milliseconds. |=== [status-check-return-arguments] @@ -55,10 +55,10 @@ The procedure returns a row for all primary members of all the requested databas | replicationSuccessful | Boolean | Indicates if the server (on which the procedure is run) can replicate a transaction. | memberStatus | String | The status of each primary member. | recognisedLeader | String | The server id of the perceived leader of each primary member. -| recognisedLeaderTerm | Integer | The term of the perceived leader of each primary member. +| recognisedLeaderTerm | Integer | The term of the perceived leader of each primary member. If the members report different leaders, the one with the highest term should be trusted. | requester | Boolean | Whether a server is the requester or not. -| error | String | Contains the error message if one is present. +| error | String | Contains the error message if one is present. An example of an error is that one or more of the requested databases do not exist on the requester. |=== diff --git a/modules/ROOT/pages/clustering/servers.adoc b/modules/ROOT/pages/clustering/servers.adoc index 3f1d00fc4..47eb47e4b 100644 --- a/modules/ROOT/pages/clustering/servers.adoc +++ b/modules/ROOT/pages/clustering/servers.adoc @@ -277,7 +277,7 @@ neo4j@neo4j> ENABLE SERVER '25a7efc7-d063-44b8-bdee-f23357f89f01' OPTIONS The `allowedDatabases` and `deniedDatabases` are mutually exclusive and if both are specified, an error is returned. Optionally, it is possible to automatically enable free servers by setting the xref:configuration/configuration-settings.adoc#config_initial.dbms.automatically_enable_free_servers[`initial.dbms.automatically_enable_free_servers`] to `true`. -This can be changed after startup using the xref:reference/procedures.adoc#procedure_dbms_cluster_setAutomaticallyEnableFreeServers[`dbms.cluster.setAutomaticallyEnableFreeServers`] procedure. +This can be changed after startup using the xref:procedures.adoc#procedure_dbms_cluster_setAutomaticallyEnableFreeServers[`dbms.cluster.setAutomaticallyEnableFreeServers`] procedure. Server `tags` are used during database allocation and when configuring load balancing and replication policies. They cannot contain duplicates, so `tags:['eu', 'eu']` will return an error. diff --git a/modules/ROOT/pages/clustering/settings.adoc b/modules/ROOT/pages/clustering/settings.adoc index d1cfaf20b..f627e53ed 100644 --- a/modules/ROOT/pages/clustering/settings.adoc +++ b/modules/ROOT/pages/clustering/settings.adoc @@ -20,7 +20,7 @@ This server always only hosts those databases in `SECONDARY` mode. | xref:configuration/configuration-settings.adoc#config_initial.dbms.automatically_enable_free_servers[`initial.dbms.automatically_enable_free_servers`] | This setting allows for auto-enable of servers in the `FREE` state. -After startup, it can be changed with the xref:reference/procedures.adoc#procedure_dbms_cluster_setAutomaticallyEnableFreeServers[`dbms.cluster.setAutomaticallyEnableFreeServers`] procedure. +After startup, it can be changed with the xref:procedures.adoc#procedure_dbms_cluster_setAutomaticallyEnableFreeServers[`dbms.cluster.setAutomaticallyEnableFreeServers`] procedure. | xref:configuration/configuration-settings.adoc#config_server.cluster.system_database_mode[`server.cluster.system_database_mode`] | Every cluster member hosts the `system` database. diff --git a/modules/ROOT/pages/clustering/setup/deploy.adoc b/modules/ROOT/pages/clustering/setup/deploy.adoc index 0b779527f..b70fe8b7a 100644 --- a/modules/ROOT/pages/clustering/setup/deploy.adoc +++ b/modules/ROOT/pages/clustering/setup/deploy.adoc @@ -46,9 +46,9 @@ If not specified, it defaults to zero hostings in secondary mode. [NOTE] ==== Any setting with the `initial` prefix is only effective on the first startup of the DBMS. -Changing the default number of primaries and secondaries dynamically can only be done with the xref:reference/procedures.adoc#procedure_dbms_setDefaultAllocationNumbers[`dbms.setDefaultAllocationNumbers`] procedure. +Changing the default number of primaries and secondaries dynamically can only be done with the xref:procedures.adoc#procedure_dbms_setDefaultAllocationNumbers[`dbms.setDefaultAllocationNumbers`] procedure. See xref:clustering/databases.adoc#_create_database[`CREATE DATABASE`] for more information. -To view the current default settings, use the xref:reference/procedures.adoc#procedure_dbms_showTopologyGraphConfig[`dbms.showTopologyGraphConfig`] procedure. +To view the current default settings, use the xref:procedures.adoc#procedure_dbms_showTopologyGraphConfig[`dbms.showTopologyGraphConfig`] procedure. ==== diff --git a/modules/ROOT/pages/routing-decisions.adoc b/modules/ROOT/pages/database-administration/routing-decisions.adoc similarity index 96% rename from modules/ROOT/pages/routing-decisions.adoc rename to modules/ROOT/pages/database-administration/routing-decisions.adoc index dede66e13..62e2c1756 100644 --- a/modules/ROOT/pages/routing-decisions.adoc +++ b/modules/ROOT/pages/database-administration/routing-decisions.adoc @@ -1,13 +1,11 @@ -[appendix] [role=enterprise-edition] -[[appendix-routing-decisions]] +[[routing-decisions]] = Query routing decisions :description: This page describes in detail how queries are routed to databases for execution. Query routing is the process of deciding which Cypher executor (database) should be used and at which physical location the query should be executed. Every query that arrives at a Neo4j server, over the bolt protocol from a driver, undergoes the process described here. -[[appendix-routing-decisions-tree]] == Routing decision tree Before the query is executed, these are the decisions taken during query routing stage: @@ -52,6 +50,5 @@ Step 5: Open a transaction:: Step 6: Execute query:: * Execute the query in the open transaction. -[[appendix-routing-decisions-tree-illustrated]] == Illustrated routing decision tree image::routing-decisions.svg[width=800, title="Illustrated routing decision tree"] diff --git a/modules/ROOT/pages/database-administration/standard-databases/errors.adoc b/modules/ROOT/pages/database-administration/standard-databases/errors.adoc index 6d0153e96..5aec772ce 100644 --- a/modules/ROOT/pages/database-administration/standard-databases/errors.adoc +++ b/modules/ROOT/pages/database-administration/standard-databases/errors.adoc @@ -162,7 +162,7 @@ It produces a database dump that can be further examined and potentially repaire There are two ways to get a database into a `quarantined` state: -* By using the xref:reference/procedures.adoc#procedure_dbms_quarantineDatabase[`dbms.quarantineDatabase`] procedure locally to isolate a specific database. +* By using the xref:procedures.adoc#procedure_dbms_quarantineDatabase[`dbms.quarantineDatabase`] procedure locally to isolate a specific database. The procedure must be executed on the instance whose copy of the database you want to quarantine. A reason for that can be, for example, when a database is unable to start on a given instance due to a file system permissions issue with the volume where the database is located or when a recently started database begins to log errors. The quarantine state renders the database inaccessible on that instance and prevents its state from being changed, for example, with the `START DATABASE` command. @@ -210,7 +210,7 @@ The result contains the user, the time, and the reason for the quarantine. [NOTE] ==== -The `dbms.quarantineDatabase` procedure replaces xref:reference/procedures.adoc#procedure_dbms_cluster_quarantinedatabase[`dbms.cluster.quarantineDatabase`], which has been deprecated in Neo4j 4.3 and will be removed with the next major version. +The `dbms.quarantineDatabase` procedure replaces xref:procedures.adoc#procedure_dbms_cluster_quarantinedatabase[`dbms.cluster.quarantineDatabase`], which has been deprecated in Neo4j 4.3 and will be removed with the next major version. ==== .Quarantine a database @@ -251,7 +251,7 @@ neo4j@system> SHOW DATABASE foo; ==== A `quarantined` state is persisted for user databases. This means that if a database is quarantined, it will remain so even if that Neo4j instance is restarted. -You can remove it only by running the xref:reference/procedures.adoc#procedure_dbms_quarantineDatabase[`dbms.quarantineDatabase`] procedure on the instance where the quarantined database is located, passing `false` for the `setStatus` parameter. +You can remove it only by running the xref:procedures.adoc#procedure_dbms_quarantineDatabase[`dbms.quarantineDatabase`] procedure on the instance where the quarantined database is located, passing `false` for the `setStatus` parameter. The one exception to this rule is for the built-in `system` database. Any quarantine for that database is removed automatically after instance restart. diff --git a/modules/ROOT/pages/database-internals/transaction-logs.adoc b/modules/ROOT/pages/database-internals/transaction-logs.adoc index 57688d3ed..079076502 100644 --- a/modules/ROOT/pages/database-internals/transaction-logs.adoc +++ b/modules/ROOT/pages/database-internals/transaction-logs.adoc @@ -85,7 +85,7 @@ Old transaction logs cannot be safely archived or removed by external jobs since Log pruning is called only after checkpoint completion to ensure at least one checkpoint and points to a valid place in the transaction log data. In reality, this means that all transaction logs created between checkpoints are kept for some time, and only after a checkpoint, the pruning strategy removes them. For more details on how to speed up checkpointing, see xref:database-internals/checkpointing.adoc#transaction-logging-log-pruning[Configure log pruning]. -To force a checkpoint, run the procedure xref:reference/procedures.adoc#procedure_db_checkpoint[`CALL db.checkpoint()`]. +To force a checkpoint, run the procedure xref:procedures.adoc#procedure_db_checkpoint[`CALL db.checkpoint()`]. + [NOTE] ==== diff --git a/modules/ROOT/pages/monitoring/logging.adoc b/modules/ROOT/pages/monitoring/logging.adoc index 1e0e1a8e9..41bb62f9e 100644 --- a/modules/ROOT/pages/monitoring/logging.adoc +++ b/modules/ROOT/pages/monitoring/logging.adoc @@ -1009,7 +1009,7 @@ The last two parenthesis `{}` `{}` are for the query parameters and `txMetaData` [[attach-metadata-tx]] === Attach metadata to a transaction -You can attach metadata to a transaction and have it printed in the query log using the built-in procedure xref:reference/procedures.adoc#procedure_tx_setmetadata[`tx.setMetaData`]. +You can attach metadata to a transaction and have it printed in the query log using the built-in procedure xref:procedures.adoc#procedure_tx_setmetadata[`tx.setMetaData`]. [NOTE] ==== @@ -1035,7 +1035,7 @@ Every graph app should follow a convention for passing metadata with the queries This is typically done programmatically but can also be used with the Neo4j dev tools. + In general, you start a transaction on a user database and attach a list of metadata to it by calling `tx.setMetaData`. -You can also use the procedure xref:reference/procedures.adoc#procedure_tx_getmetadata[`CALL tx.getMetaData()`] to show the metadata of the current transaction. +You can also use the procedure xref:procedures.adoc#procedure_tx_getmetadata[`CALL tx.getMetaData()`] to show the metadata of the current transaction. These examples use the MovieGraph dataset from the link:https://neo4j.com/docs/browser-manual/current/visual-tour/#guides[Neo4j Browser guide]. .Using `cypher-shell`, attach metadata to a transaction diff --git a/modules/ROOT/pages/performance/index-configuration.adoc b/modules/ROOT/pages/performance/index-configuration.adoc index 2bbb3e9e6..39b042737 100644 --- a/modules/ROOT/pages/performance/index-configuration.adoc +++ b/modules/ROOT/pages/performance/index-configuration.adoc @@ -142,7 +142,7 @@ A full description of how to create and use full-text indexes is provided in the === Configuring a full-text index The following options are available for configuring full-text indexes. -For a complete list of Neo4j procedures, see xref:reference/procedures/[]. +For a complete list of Neo4j procedures, see xref:procedures.adoc#_index_management[Procedures]. `db.index.fulltext.default_analyzer`:: The name of the default analyzer when creating a new Full-text index. diff --git a/modules/ROOT/pages/performance/space-reuse.adoc b/modules/ROOT/pages/performance/space-reuse.adoc index aeacaf3c5..4fd5fd8cd 100644 --- a/modules/ROOT/pages/performance/space-reuse.adoc +++ b/modules/ROOT/pages/performance/space-reuse.adoc @@ -106,7 +106,7 @@ neo4j@neo4j> MATCH (n:testnode1) RETURN ID(n) as ID order by ID limit 5; 5 rows available after 171 ms, consumed after another 84 ms ---- + -. Run xref:reference/procedures.adoc#procedure_db_checkpoint[`call db.checkpoint()`] procedure to force a checkpoint. +. Run xref:procedures.adoc#procedure_db_checkpoint[`call db.checkpoint()`] procedure to force a checkpoint. + [source, shell] ---- diff --git a/modules/ROOT/pages/performance/statistics-execution-plans.adoc b/modules/ROOT/pages/performance/statistics-execution-plans.adoc index 07dcfff0c..95f29bd05 100644 --- a/modules/ROOT/pages/performance/statistics-execution-plans.adoc +++ b/modules/ROOT/pages/performance/statistics-execution-plans.adoc @@ -57,7 +57,7 @@ You can control whether and how often statistics are collected automatically by You can manually trigger index resampling by using the built-in procedures `db.resampleIndex()` and `db.resampleOutdatedIndexes()`. -xref:reference/procedures.adoc#procedure_db_resampleindex[`db.resampleIndex()`]:: +xref:procedures.adoc#procedure_db_resampleindex[`db.resampleIndex()`]:: Trigger resampling of a specified index. + [source, cypher] @@ -65,7 +65,7 @@ Trigger resampling of a specified index. CALL db.resampleIndex("indexName") ---- -xref:reference/procedures.adoc#procedure_db_resampleoutdatedindexes[`db.resampleOutdatedIndexes()`]:: +xref:procedures.adoc#procedure_db_resampleoutdatedindexes[`db.resampleOutdatedIndexes()`]:: Trigger resampling of all outdated indexes. + [source, cypher] @@ -108,7 +108,7 @@ This ensures that even moderately changing databases see query replanning after You can manually force the database to replan the execution plans that are already in the cache by using the following built-in procedures: -xref:reference/procedures.adoc#procedure_db_clearquerycaches[`db.clearQueryCaches()`]:: +xref:procedures.adoc#procedure_db_clearquerycaches[`db.clearQueryCaches()`]:: Clear all query caches. Does not change the database statistics. + @@ -117,7 +117,7 @@ Does not change the database statistics. CALL db.clearQueryCaches() ---- -xref:reference/procedures.adoc#procedure_db_prepareforreplanning[`db.prepareForReplanning()`]:: +xref:procedures.adoc#procedure_db_prepareforreplanning[`db.prepareForReplanning()`]:: Completely recalculates all database statistics to be used for any subsequent query planning. + The procedure triggers an index resampling, waits for it to complete, and clears all query caches. @@ -134,4 +134,4 @@ For more information, see: * link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/query-tuning#cypher-replanning[Cypher manual -> Cypher replanning] * link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/execution-plans[Cypher manual -> Execution plans] -* xref:reference/procedures.adoc[Procedures] +* xref:procedures.adoc[Procedures] diff --git a/modules/ROOT/pages/procedures.adoc b/modules/ROOT/pages/procedures.adoc new file mode 100644 index 000000000..d5fec5c1b --- /dev/null +++ b/modules/ROOT/pages/procedures.adoc @@ -0,0 +1,2232 @@ +[[neo4j-procedures]] += Procedures +:description: This page provides a complete reference to the Neo4j procedures. +:table-caption!: +:table-stripes: hover +:table-frame: topbot + +:stem: +:mathjax-tex-packages: ams + +This page provides a complete reference to Neo4j's built-in procedures. +// The procedures are grouped into the following categories: + + +// * <<#_authentication_and_authorization,Authentication and authorization>> +// * <<#_background_job_management,Background job management>> +// * <<#_change_data_capture_cdc,Change Data Capture (CDC)>> +// * <<#_cluster_management,Cluster management>> +// * <<#_configuration_and_dbms_info,Configuration and DBMS info>> +// * <<#_connection_management,Connection management>> +// * <<#_database_management,Database management>> +// * <<#_genai_and_vectors, GenAI and vectors>> +// * <<#_index_management,Index management>> +// * <<#_metrics, Metrics>> +// * <<#_schema_and_metadata,Schema and metadata>> +// * <<#_statistics_and_query_planning,Statistics and query planning>> +// * <<#_transaction_management,Transaction management>> + + +It also lists current xref:procedures.adoc#deprecated-procedures[deprecated procedures] and the xref:procedures.adoc#removed-procedures[procedures removed in Neo4j 5], along with their replacements. + +The available procedures on a server depends on several factors: + +* Neo4j Enterprise Edition provides a larger set of procedures than Neo4j Community Edition. +* Neo4j's link:{neo4j-docs-base-uri}/apoc/{page-version}/[APOC Core library] and link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/genai-integrations/[GenAI plugin] are installed by default on link:{neo4j-docs-base-uri}/aura/[Aura] instances, but have to be installed separately on on-prem servers. +* Cluster members have procedures that are not available in standalone mode. + +To check which procedures are available in your Neo4j DBMS, use the Cypher command link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/clauses/listing-procedures[`SHOW PROCEDURES`]: + +.List available procedures with default output columns +[source, cypher] +---- +SHOW PROCEDURES +---- + +.List available procedures with full output columns +[source, cypher] +---- +SHOW PROCEDURES YIELD * +---- + + +[NOTE] +==== +Some procedures can only be run by users with `Admin` privileges. +Specifically, either the `EXECUTE ADMIN PROCEDURES` privilege or both the `EXECUTE PROCEDURES` and `EXECUTE BOOSTED PROCEDURES` privileges. +These procedures are labeled with label:admin-only[]. + +For more information, see xref:authentication-authorization/dbms-administration.adoc#access-control-dbms-administration-execute[the `EXECUTE` privileges section]. +==== + +== Authentication and authorization + +For more information, see xref:authentication-authorization/index.adoc[Authentication and authorization]. + +[role=label--enterprise-edition label--admin-only] +[[procedure_dbms_security_clearauthcache]] +=== dbms.security.clearAuthCache() + + +.Details +|=== +| *Syntax* 3+m| dbms.security.clearAuthCache() +| *Description* 3+a| Clears authentication and authorization cache. +| *Mode* 3+| DBMS +|=== + + +[[procedure_dbms_showcurrentuser]] +=== dbms.showCurrentUser() + + +.Details +|=== +| *Syntax* 3+m| dbms.showCurrentUser() :: (username, roles, flags) +| *Description* 3+a| Show the current user. +.4+| *Return arguments* | *Name* | *Type* | *Description* +| `username` | `STRING` | The name of the current user. +| `roles` | `LIST` | The roles assigned to the current user. +| `flags` | `LIST` | The flags set on the current user. +| *Mode* 3+| DBMS +|=== + + +== Background job management + +For more information, see xref:monitoring/background-jobs.adoc[]. + +[[procedure_dbms_scheduler_failedjobs]] +[role=label--enterprise-edition label--admin-only] +=== dbms.scheduler.failedJobs() + + +.Details +|=== +| *Syntax* 3+m| dbms.scheduler.failedJobs() :: (jobId, group, database, submitter, description, type, submitted, executionStart, failureTime, failureDescription) +| *Description* 3+a| List failed job runs. There is a limit for amount of historical data. +.11+| *Return arguments* | *Name* | *Type* | *Description* +| `jobId` | `STRING` | The id of the failed job. +| `group` | `STRING` | The category of the failed job. +| `database` | `STRING` | The name of the database the job failed in. +| `submitter` | `STRING` | The creator of the failed job. +| `description` | `STRING` | Information about the failed job. +| `type` | `STRING` | The interval of the failed job. +| `submitted` | `STRING` | The submission time of the failed job. +| `executionStart` | `STRING` | The start time of the failed job. +| `failureTime` | `STRING` | The failure time of the failed job. +| `failureDescription` | `STRING` | Information about the job failure. +| *Mode* 3+| DBMS +|=== + +[NOTE] +==== +This procedure is not considered safe to run from multiple threads. +It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). +For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. +==== + +[role=label--enterprise-edition label--admin-only] +[[procedure_dbms_scheduler_groups]] +=== dbms.scheduler.groups() + + +.Details +|=== +| *Syntax* 3+m| dbms.scheduler.groups() :: (group, threads) +| *Description* 3+a| List the job groups that are active in the database internal job scheduler. +.3+| *Return arguments* | *Name* | *Type* | *Description* +| `group` | `STRING` | The name of the job group. +| `threads` | `INTEGER` | The number of active threads in that job group. +| *Mode* 3+| DBMS +|=== + +[NOTE] +==== +This procedure is not considered safe to run from multiple threads. +It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). +For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. +==== + +[role=label--enterprise-edition label--admin-only] +[[procedure_dbms_scheduler_jobs]] +=== dbms.scheduler.jobs() + + +.Details +|=== +| *Syntax* 3+m| dbms.scheduler.jobs() :: (jobId, group, submitted, database, submitter, description, type, scheduledAt, period, state, currentStateDescription) +| *Description* 3+a| List all jobs that are active in the database internal job scheduler. +.12+| *Return arguments* | *Name* | *Type* | *Description* +| `jobId` | `STRING` | The id of the job. +| `group` | `STRING` | The category of the job. +| `submitted` | `STRING` | The submission time of the job. +| `database` | `STRING` | The name of the database the job is in. +| `submitter` | `STRING` | The creator of the job. +| `description` | `STRING` | Information about the job. +| `type` | `STRING` | The interval of the job. +| `scheduledAt` | `STRING` | The start time of the job. +| `period` | `STRING` | The interval for jobs run periodically. +| `state` | `STRING` | The state of the job: ('EXECUTING', 'SCHEDULED'). +| `currentStateDescription` | `STRING` | A description of the job state. +| *Mode* 3+| DBMS +|=== + +[NOTE] +==== +This procedure is not considered safe to run from multiple threads. +It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). +For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. +==== + +== Change Data Capture (CDC) + +For more information, see the link:{neo4j-docs-base-uri}/cdc/{page-version}/[CDC documentation]. + +[role=label--enterprise-edition label--new-5.14 label--beta label--deprecated-5.17] +[[procedure_cdc_current]] +=== cdc.current() + + +.Details +|=== +| *Syntax* 3+m| cdc.current() :: (id) +| *Description* 3+a| Returns the current change identifier that can be used to stream changes from. +.2+| *Return arguments* | *Name* | *Type* | *Description* +| `id` | `STRING` | The change identifier. +| *Mode* 3+| READ +| *Replaced by* 3+| xref:procedures.adoc#db_cdc_current[`db.cdc.current()`] +|=== + +[role=label--enterprise-edition label--new-5.13 label--beta label--deprecated-5.17] +[[procedure_cdc_earliest]] +=== cdc.earliest() + + +.Details +|=== +| *Syntax* 3+m| cdc.earliest() :: (id) +| *Description* 3+a| Returns the earliest change identifier that can be used to stream changes from. +.2+| *Return arguments* | *Name* | *Type* | *Description* +| `id` | `STRING` | The change identifier. +| *Mode* 3+| READ +| *Replaced by* 3+| xref:procedures.adoc#db_cdc_earliest[`db.cdc.earliest()`] +|=== + +[role=label--enterprise-edition label--new-5.13 label--beta label--deprecated-5.17 label--admin-only] +[[procedure_cdc_query]] +=== cdc.query() + + +.Details +|=== +| *Syntax* 3+m| cdc.query([ from selectors ]) :: (id, txId, seq, metadata, event) +| *Description* 3+a| Query changes happened from the provided change identifier. +.3+| *Input arguments* | *Name* | *Type* | *Description* +| `from` | `STRING` | The change identifier to query changes from. +| `selectors` | `LIST` | An optional list of selectors to filter out changes. +.6+| *Return arguments* | *Name* | *Type* | *Description* +| `id` | `STRING` | The change identifier for this change event. Used to continue querying from this change event. +| `txId` | `INTEGER` | A number identifying which transaction the change happened in, unique in combination with seq. +| `seq` | `INTEGER` | A number used for ordering changes that happened in the same transaction. +| `metadata` | `MAP` | Metadata from the transaction that caused this change event. +| `event` | `MAP` | The retrieved changes on the affected entity. +| *Mode* 3+| READ +| *Replaced by* 3+| xref:procedures.adoc#db_cdc_query[`db.cdc.query()`] +|=== + +[role=label--enterprise-edition label--new-5.17 label--beta] +[[procedure_db_cdc_current]] +=== db.cdc.current() + + +.Details +|=== +| *Syntax* 3+m| db.cdc.current() :: (id) +| *Description* 3+a| Returns the current change identifier that can be used to stream changes from. +.2+| *Return arguments* | *Name* | *Type* | *Description* +| `id` | `STRING` | The change identifier. +| *Mode* 3+| READ +|=== + +[role=label--new-5.17 label--beta] +[[procedure_db_cdc_earliest]] +=== db.cdc.earliest() + + +.Details +|=== +| *Syntax* 3+m| db.cdc.earliest() :: (id) +| *Description* 3+a| Returns the earliest change identifier that can be used to stream changes from. +.2+| *Return arguments* | *Name* | *Type* | *Description* +| `id` | `STRING` | The change identifier. +| *Mode* 3+| READ +|=== + +[role=label--enterprise-edition label--new-5.17 label--beta label--admin-only] +[[procedure_db_cdc_query]] +=== db.cdc.query() + + +.Details +|=== +| *Syntax* 3+m| db.cdc.query([ from selectors ]) :: (id, txId, seq, metadata, event) +| *Description* 3+a| Query changes happened from the provided change identifier. +.3+| *Input arguments* | *Name* | *Type* | *Description* +| `from` | `STRING` | The change identifier to query changes from. +| `selectors` | `LIST` | An optional list of selectors to filter out changes. +.6+| *Return arguments* | *Name* | *Type* | *Description* +| `id` | `STRING` | The change identifier for this change event. Used to continue querying from this change event. +| `txId` | `INTEGER` | A number identifying which transaction the change happened in, unique in combination with seq. +| `seq` | `INTEGER` | A number used for ordering changes that happened in the same transaction. +| `metadata` | `MAP` | Metadata from the transaction that caused this change event. +| `event` | `MAP` | The retrieved changes on the affected entity. +| *Mode* 3+| READ +|=== + +== Cluster management + +For more information, see xref:clustering/index.adoc[]. + +[role=label--enterprise-edition label--admin-only] +[[procedure_dbms_cluster_checkConnectivity]] +=== dbms.cluster.checkConnectivity() + + +.Details +|=== +| *Syntax* 3+m| dbms.cluster.checkConnectivity([ port-name server ]) :: (serverId, name, address, mode-constraint, port-name, port-address, result) +| *Description* 3+a| Check the connectivity of this instance to other cluster members. Not all ports are relevant to all members. Valid values for 'port-name' are: [CLUSTER, INTRA_BOLT, RAFT] +.3+| *Input arguments* | *Name* | *Type* | *Description* +| `port-name` | `STRING` | The name of the port: ('CLUSTER', 'RAFT'). +| `server` | `STRING` | The id of the server to check connectivity of. +.8+| *Return arguments* | *Name* | *Type* | *Description* +| `serverId` | `STRING` | The id of the checked server. +| `name` | `STRING` | name :: STRING +| `address` | `STRING` | address :: STRING +| `mode-constraint` | `STRING` | The instance mode constraint of the server. +| `port-name` | `STRING` | The name of the checked port. +| `port-address` | `STRING` | The address of the checked port. +| `result` | `STRING` | Whether the check was successful or not. +| *Mode* 3+| DBMS +|=== + +[role=label--enterprise-edition] +[[procedure_dbms_cluster_cordonServer]] +=== dbms.cluster.cordonServer() + + +.Details +|=== +| *Syntax* 3+m| dbms.cluster.cordonServer(server) +| *Description* 3+a| Mark a server in the topology as not suitable for new allocations. It will not force current allocations off the server. This is useful when deallocating databases when you have multiple unavailable servers. +.2+| *Input arguments* | *Name* | *Type* | *Description* +| `server` | `STRING` | The name or id of the server to be cordoned. +| *Mode* 3+| WRITE +|*Required provileges* 3+| `SERVER MANAGEMENT` +|=== + + +[NOTE] +==== +Before Neo4j 5.23, the procedure `dbms.cluster.cordonServer()` can be run only by users with `Admin` privileges. +Since Neo4j 5.23, it can be run with the `SERVER MANAGEMENT` privilege. +It will still run with the `Admin` privilege, but that should be considered deprecated. +==== + +[role=label--enterprise-edition label--new-5.26 label--admin-only ] +[[procedure_dbms_cluster_movetonextdiscoveryversion]] +=== dbms.cluster.moveToNextDiscoveryVersion() + +.Details +|=== +| *Syntax* 3+m| dbms.cluster.moveToNextDiscoveryVersion() +| *Description* 3+a| The procedure triggers a switch to the next discovery service version for all known members of the cluster (as listed in the system database and discovery). +For example, if the current member's discovery version is V1_ONLY, it will switch all members to V1_OVER_V2. In case of failure, the user must manually resolve the issue. +| *Mode* 3+| DBMS +|=== + +[role=label--enterprise-edition label--new-5.23] +[[procedure_dbms_cluster_deallocateDatabaseFromServer]] +=== dbms.cluster.deallocateDatabaseFromServer() + + +.Details +|=== +| *Syntax* 3+m| dbms.cluster.deallocateDatabaseFromServer(server, database [, dryrun ]) :: (database, fromServerName, fromServerId, toServerName, toServerId, mode) +| *Description* 3+a| Deallocate a specific user database from a specific server. +.4+| *Input arguments* | *Name* | *Type* | *Description* +| `server` | `STRING` | The id of the server to deallocate from. +| `database` | `STRING` | The name of the database to deallocate. +| `dryrun` | `BOOLEAN` | Set to `true` to dry run the procedure. +.7+| *Return arguments* | *Name* | *Type* | *Description* +| `database` | `STRING` | The name of the database. +| `fromServerName` | `STRING` | The name of the server. +| `fromServerId` | `STRING` | The id of the server. +| `toServerName` | `STRING` | The name of the server. +| `toServerId` | `STRING` | The id of the server. +| `mode` | `STRING` | The mode in which the database is hosted. +| *Mode* 3+| WRITE +| *Required provileges* 3+| `SERVER MANAGEMENT` +|=== + +[role=label--enterprise-edition label--new-5.23] +[[procedure_dbms_cluster_deallocateDatabaseFromServers]] +=== dbms.cluster.deallocateDatabaseFromServers() + + +.Details +|=== +| *Syntax* 3+m| dbms.cluster.deallocateDatabaseFromServers(servers, database [, dryrun ]) :: (database, fromServerName, fromServerId, toServerName, toServerId, mode) +| *Description* 3+a| Deallocate a specific user database from a list of servers. +.4+| *Input arguments* | *Name* | *Type* | *Description* +| `servers` | `LIST` | The ids of the servers to deallocate from. +| `database` | `STRING` | The id of the database to deallocate. +| `dryrun` | `BOOLEAN` | Set to `true` to dry run the procedure. +.7+| *Return arguments* | *Name* | *Type* | *Description* +| `database` | `STRING` | The name of the database. +| `fromServerName` | `STRING` | The name of the server. +| `fromServerId` | `STRING` | The id of the server. +| `toServerName` | `STRING` | The name of the server. +| `toServerId` | `STRING` | The id of the server. +| `mode` | `STRING` | The mode in which the database is hosted. +| *Mode* 3+| WRITE +| *Required provileges* 3+| `SERVER MANAGEMENT` +|=== + + +[role=label--enterprise-edition label--new-5.23] +[[procedure_dbms_cluster_deallocateNumberOfDatabases]] +=== dbms.cluster.deallocateNumberOfDatabases() + + +.Details +|=== +| *Syntax* 3+m| dbms.cluster.deallocateNumberOfDatabases(server, number [, dryrun ]) :: (database, fromServerName, fromServerId, toServerName, toServerId, mode) +| *Description* 3+a| Deallocate a number of user databases from a specific server. +.4+| *Input arguments* | *Name* | *Type* | *Description* +| `server` | `STRING` | The id of the server to deallocate from. +| `number` | `INTEGER` | The number of databases to deallocate. +| `dryrun` | `BOOLEAN` | Set to `true` to dry run the procedure. +.7+| *Return arguments* | *Name* | *Type* | *Description* +| `database` | `STRING` | The name of the database. +| `fromServerName` | `STRING` | The name of the server. +| `fromServerId` | `STRING` | The id of the server. +| `toServerName` | `STRING` | The name of the server. +| `toServerId` | `STRING` | The id of the server. +| `mode` | `STRING` | The mode in which the database is hosted. +| *Mode* 3+| WRITE +| *Required provileges* 3+| `SERVER MANAGEMENT` +|=== + +[role=label--enterprise-edition] +[[procedure_dbms_cluster_protocols]] +=== dbms.cluster.protocols() + + +.Details +|=== +| *Syntax* 3+m| dbms.cluster.protocols() :: (orientation, remoteAddress, applicationProtocol, applicationProtocolVersion, modifierProtocols) +| *Description* 3+a| Overview of installed protocols +.6+| *Return arguments* | *Name* | *Type* | *Description* +| `orientation` | `STRING` | Direction of the protocol (inbound or outbound). +| `remoteAddress` | `STRING` | The socket address this protocol is available on. +| `applicationProtocol` | `STRING` | The name of the protocol. +| `applicationProtocolVersion` | `INTEGER` | The version of the protocol. +| `modifierProtocols` | `STRING` | Installed modifier protocols, for example, compression. +| *Mode* 3+| DBMS +|=== + +[role=label--enterprise-edition label--admin-only label--deprecated-5.6] +[[procedure_dbms_cluster_readreplicatoggle]] +=== dbms.cluster.readReplicaToggle() + + +.Details +|=== +| *Syntax* 3+m| dbms.cluster.readReplicaToggle(databaseName, pause) :: (state) +| *Description* 3+a| The toggle can pause or resume read replica (deprecated in favor of dbms.cluster.secondaryReplicationDisable) +.3+| *Input arguments* | *Name* | *Type* | *Description* +| `databaseName` | `STRING` | The name of the database to toggle the secondary replication process for. +| `pause` | `BOOLEAN` | Whether or not to enable/disable the secondary replication process. +.2+| *Return arguments* | *Name* | *Type* | *Description* +| `state` | `STRING` | The current state of the secondary replication process. +| *Mode* 3+| DBMS +|=== + + +[TIP] +==== +_What is it for?_ + +You can perform a point-in-time backup, as the backup will contain only the transactions up to the point where the transaction pulling was paused. +Follow these steps to do so: + +. Connect directly to the server hosting the database in secondary mode. (Neo4j Driver use `bolt://` or use the HTTP API). +. Pause transaction pulling for the specified database. +. Back up the database, see xref:backup-restore/online-backup.adoc[Back up an online database]. + +If connected directly to a server hosting a database in secondary mode, Data Scientists can execute analysis on a specific database that is paused, the data will not unexpectedly change while performing the analysis. +==== + +[NOTE] +==== +This procedure can only be executed on a database that runs in a secondary role on the connected server. +==== + + +.Pause transaction pulling for database `neo4j` +[source, cypher, role="noheader"] +---- +CALL dbms.cluster.readReplicaToggle("neo4j", true) +---- + + +.Resume transaction pulling for database `neo4j` +[source, cypher, role="noheader"] +---- +CALL dbms.cluster.readReplicaToggle("neo4j", false) +---- + +[role=label--enterprise-edition label--new-5.23] +[[procedure_dbms_cluster_reallocateDatabase]] +=== dbms.cluster.reallocateDatabase() + + +.Details +|=== +| *Syntax* 3+m| dbms.cluster.reallocateDatabase(database [, dryrun ]) :: (database, fromServerName, fromServerId, toServerName, toServerId, mode) +| *Description* 3+a| Reallocate a specific database. +.3+| *Input arguments* | *Name* | *Type* | *Description* +| `database` | `STRING` | The name of the database to reallocate. +| `dryrun` | `BOOLEAN` | Set to `true` to dry run the procedure. +.7+| *Return arguments* | *Name* | *Type* | *Description* +| `database` | `STRING` | The name of the database. +| `fromServerName` | `STRING` | The name of the server. +| `fromServerId` | `STRING` | The id of the server. +| `toServerName` | `STRING` | The name of the server. +| `toServerId` | `STRING` | The id of the server. +| `mode` | `STRING` | The mode in which the database is hosted. +| *Mode* 3+| WRITE +| *Required provileges* 3+| `SERVER MANAGEMENT` +|=== + +[role=label--enterprise-edition label--new-5.23] +[[procedure_dbms_cluster_reallocateNumberOfDatabases]] +=== dbms.cluster.reallocateNumberOfDatabases() + +.Details +|=== +| *Syntax* 3+m| dbms.cluster.reallocateNumberOfDatabases(number [, dryrun ]) :: (database, fromServerName, fromServerId, toServerName, toServerId, mode) +| *Description* 3+a| Reallocate a specified number of user databases. +.3+| *Input arguments* | *Name* | *Type* | *Description* +| `number` | `INTEGER` | The number of databases to reallocate. +| `dryrun` | `BOOLEAN` | Set to `true` to dry run the procedure. +.7+| *Return arguments* | *Name* | *Type* | *Description* +| `database` | `STRING` | The name of the database. +| `fromServerName` | `STRING` | The name of the server. +| `fromServerId` | `STRING` | The id of the server. +| `toServerName` | `STRING` | The name of the server. +| `toServerId` | `STRING` | The id of the server. +| `mode` | `STRING` | The mode in which the database is hosted. +| *Mode* 3+| WRITE +| *Required provileges* 3+| `SERVER MANAGEMENT` +|=== + +[role=label--enterprise-edition label--new-5.24] +[[procedure_dbms_cluster_recreateDatabase]] +=== dbms.cluster.recreateDatabase() + +.Details +|=== +| *Syntax* 3+m| dbms.cluster.recreateDatabase(database :: STRING, options = {} :: MAP) +| *Description* 3+a| Recreates a database while keeping all RBAC settings. +The procedure initiates a process, which when complete, will have synchronized and started all database instances within the cluster. +.3+| *Input arguments* | *Name* | *Type* | *Description* +| `database` | `STRING` | database :: STRING +| `options` | `MAP` | options = {} :: MAP +| *Mode* 3+| WRITE +|=== + + +[role=label--enterprise-edition label--deprecated-5.21] +[[procedure_dbms_cluster_routing_getroutingtable]] +=== dbms.cluster.routing.getRoutingTable() + + +.Details +|=== +| *Syntax* 3+m| dbms.cluster.routing.getRoutingTable(context [, database ]) :: (ttl, servers) +| *Description* 3+a| Returns the advertised bolt capable endpoints for a given database, divided by each endpoint's capabilities. For example, an endpoint may serve read queries, write queries, and/or future `getRoutingTable` requests. +.3+| *Input arguments* | *Name* | *Type* | *Description* +| `context` | `MAP` | Routing context, for example, routing policies. +| `database` | `STRING` | The database to get a routing table for. +.3+| *Return arguments* | *Name* | *Type* | *Description* +| `ttl` | `INTEGER` | Time to live (in seconds) for the routing table. +| `servers` | `LIST` | Servers grouped by whether they are readers, writers, or routers. +| *Mode* 3+| DBMS +|=== + +[role=label--enterprise-edition label--new-5.6 label--admin-only] +[[procedure_dbms_cluster_secondaryreplicationdisable]] +=== dbms.cluster.secondaryReplicationDisable() + + +.Details +|=== +| *Syntax* 3+m| dbms.cluster.secondaryReplicationDisable(databaseName, pause) :: (state) +| *Description* 3+a| The toggle can pause or resume the secondary replication process. +.3+| *Input arguments* | *Name* | *Type* | *Description* +| `databaseName` | `STRING` | The name of the database to toggle the secondary replication process for. +| `pause` | `BOOLEAN` | Whether or not to enable/disable the secondary replication process. +.2+| *Return arguments* | *Name* | *Type* | *Description* +| `state` | `STRING` | The current state of the secondary replication process. +| *Mode* 3+| DBMS +|=== + +[TIP] +==== +_What is it for?_ + +You can perform a point-in-time backup, as the backup will contain only the transactions up to the point where the transaction pulling was paused. +Follow these steps to do so: + +. Connect directly to the server hosting the database in secondary mode. (Neo4j Driver use `bolt://` or use the HTTP API). +. Pause transaction pulling for the specified database. +. Back up the database, see xref:backup-restore/online-backup.adoc[Back up an online database]. + +If connected directly to a server hosting a database in secondary mode, Data Scientists can execute analysis on a specific database that is paused, the data will not unexpectedly change while performing the analysis. +==== + +[NOTE] +==== +This procedure can only be executed on a database that runs in a secondary role on the connected server. +==== + +.Pause transaction pulling for database `neo4j` +[source, cypher, role="noheader"] +---- +CALL dbms.cluster.secondaryReplicationDisable("neo4j", true) +---- + +.Resume transaction pulling for database `neo4j` +[source, cypher, role="noheader"] +---- +CALL dbms.cluster.secondaryReplicationDisable("neo4j", false) +---- + +[role=label--enterprise-edition] +[[procedure_dbms_cluster_setAutomaticallyEnableFreeServers]] +=== dbms.cluster.setAutomaticallyEnableFreeServers() + + +.Details +|=== +| *Syntax* 3+m| dbms.cluster.setAutomaticallyEnableFreeServers(autoEnable) +| *Description* 3+a| With this method you can set whether free servers are automatically enabled. +.2+| *Input arguments* | *Name* | *Type* | *Description* +| `autoEnable` | `BOOLEAN` | Whether or not to automatically enable free servers. +| *Mode* 3+| WRITE +| *Required provileges* 3+| `SERVER MANAGEMENT` +|=== + + +[NOTE] +==== +Before Neo4j 5.23, the procedure `dbms.cluster.setAutomaticallyEnableFreeServers()` can be run only by users with the `Admin` privileges. +Since Neo4j 5.23, it can be run with the `SERVER MANAGEMENT` privilege. +It will still run with the `Admin` privilege, but that should be considered deprecated. +==== + +[role=label--enterprise-edition label--new-5.22 label--admin-only ] +[[procedure_dbms_cluster_showparalleldiscoverystate]] +=== dbms.cluster.showParallelDiscoveryState() + + +.Details +|=== +| *Syntax* 3+m| dbms.cluster.showParallelDiscoveryState() :: (mode, stateComparison, v1ServerCount, v2ServerCount) +| *Description* 3+a| Compare the states of Discovery service V1 and Discovery service V2. +.5+| *Return arguments* | *Name* | *Type* | *Description* +| `mode` | `STRING` | mode :: STRING +| `stateComparison` | `STRING` | stateComparison :: STRING +| `v1ServerCount` | `STRING` | v1ServerCount :: STRING +| `v2ServerCount` | `STRING` | v2ServerCount :: STRING +| *Mode* 3+| DBMS +|=== + + +[role=label--enterprise-edition label--new-5.24 label--admin-only] +[[procedure_dbms_cluster_statusCheck]] +=== dbms.cluster.statusCheck() + +.Details +|=== +| *Syntax* 3+m| dbms.cluster.statusCheck(databases, timeoutMilliseconds) :: (database, serverId, serverName, address, replicationSuccessful, memberStatus, recognisedLeader, recognisedLeaderTerm, requester, error) +| *Description* 3+a| Performs a rafted status check. +.3+| *Input arguments* | *Name* | *Type* | *Description* +| `databases` | `LIST` | databases :: LIST +| `timeoutMilliseconds` | `INTEGER` | timeoutMilliseconds = null :: INTEGER +.11+| *Return arguments* | *Name* | *Type* | *Description* +| `database` | `STRING` | database :: STRING +| `serverId` | `STRING` | serverId :: STRING +| `serverName` | `STRING` | serverName :: STRING +| `address` | `STRING` | address :: STRING +| `replicationSuccessful` | `BOOLEAN` | replicationSuccessful :: BOOLEAN +| `memberStatus` | `STRING` | memberStatus :: STRING +| `recognisedLeader` | `STRING` | recognisedLeaderTerm :: INTEGER +| `recognisedLeaderTerm` | `STRING` | requester :: BOOLEAN +| `requester` | `STRING` | requester :: BOOLEAN +| `error` | `STRING` | error :: STRING +| *Mode* 3+| DBMS +|=== + + +[role=label--enterprise-edition label--new-5.22 label--admin-only] +[[procedure_dbms_cluster_switchdiscoveryserviceversion]] +=== dbms.cluster.switchDiscoveryServiceVersion() + + +.Details +|=== +| *Syntax* 3+m| dbms.cluster.switchDiscoveryServiceVersion(mode) +| *Description* 3+a| Allows you to select which discovery service should be started. +Possible values are: + +* `V1_ONLY` -- it runs only discovery service v1. +* `V1_OVER_V2` -- it runs both Discovery Service V1 and Discovery Service V2, where V1 is the main service and V2 runs in the background. +* `V2_OVER_V1` -- it runs both Discovery Service V1 and Discovery Service V2, where V2 is the main service and V1 runs in the background. +* `V2_ONLY` -- it runs only discovery service v2. +.2+| *Input arguments* | *Name* | *Type* | *Description* +| `mode` | `STRING` | mode :: STRING +| *Mode* 3+| DBMS +|=== + +[role=label--enterprise-edition label--deprecated-5.23] +[[procedure_dbms_cluster_uncordonServer]] +=== dbms.cluster.uncordonServer() + + +.Details +|=== +| *Syntax* 3+m| dbms.cluster.uncordonServer(server) +| *Description* 3+a| Remove the cordon on a server, returning it to 'enabled'. +.2+| *Input arguments* | *Name* | *Type* | *Description* +| `server` | `STRING` | The name or id of the server to be uncordoned. +| *Mode* 3+| WRITE +| *Replaced by* 3+| xref:clustering/server-syntax.adoc#server-management-syntax[`ENABLE SERVER`] +|*Required provileges* 3+| `SERVER MANAGEMENT` +|=== + +[NOTE] +==== +Before Neo4j 5.23, the procedure `dbms.cluster.uncordonServer()` can be run only by users with `Admin` privileges. +Since Neo4j 5.23, it can be run with the `SERVER MANAGEMENT` privilege. +It will still run with the `Admin` privilege, but that should be considered deprecated. +==== + +[role=label--enterprise-edition label--admin-only label--deprecated-5.23] +[[procedure_dbms_setDatabaseAllocator]] +=== dbms.setDatabaseAllocator() + + +.Details +|=== +| *Syntax* 3+m| dbms.setDatabaseAllocator(allocator) +| *Description* 3+a| With this method you can set the allocator that is responsible for selecting servers for hosting databases. +.2+| *Input arguments* | *Name* | *Type* | *Description* +| `allocator` | `STRING` | The name of the allocator. +| *Mode* 3+| WRITE +|=== + + +[role=label--enterprise-edition label--admin-only] +[[procedure_dbms_setDefaultAllocationNumbers]] +=== dbms.setDefaultAllocationNumbers() + + +.Details +|=== +| *Syntax* 3+m| dbms.setDefaultAllocationNumbers(primaries, secondaries) +| *Description* 3+a| With this method you can set the default number of primaries and secondaries. +.3+| *Input arguments* | *Name* | *Type* | *Description* +| `primaries` | `INTEGER` | The default number of primaries. +| `secondaries` | `INTEGER` | The default number of secondaries. +| *Mode* 3+| WRITE +|=== + +[role=label--enterprise-edition label--admin-only] +[[procedure_dbms_showTopologyGraphConfig]] +=== dbms.showTopologyGraphConfig() + + +.Details +|=== +| *Syntax* 3+m| dbms.showTopologyGraphConfig() :: (allocator, defaultPrimariesCount, defaultSecondariesCount, defaultDatabase, autoEnableFreeServers) +| *Description* 3+a| With this method the configuration of the Topology Graph can be displayed. +.6+| *Return arguments* | *Name* | *Type* | *Description* +| `allocator` | `STRING` | The name of the allocator. +| `defaultPrimariesCount` | `INTEGER` | The default number of primaries. +| `defaultSecondariesCount` | `INTEGER` | The default number of secondaries. +| `defaultDatabase` | `STRING` | The name of the default database. +| `autoEnableFreeServers` | `BOOLEAN` | Whether or not to automatically enable free servers. +| *Mode* 3+| READ +|=== + + +== Configuration and DBMS info + +For more information, see xref:configuration/index.adoc[]. + +[role=label--enterprise-edition label--admin-only] +[[procedure_dbms_checkconfigvalue]] +=== dbms.checkConfigValue() + + +.Details +|=== +| *Syntax* 3+m| dbms.checkConfigValue(setting, value) :: (valid, message) +| *Description* 3+a| Check if a potential config setting value is valid. +.3+| *Input arguments* | *Name* | *Type* | *Description* +| `setting` | `STRING` | The name of the setting. +| `value` | `STRING` | The setting value to verify. +.3+| *Return arguments* | *Name* | *Type* | *Description* +| `valid` | `BOOLEAN` | Whether or not the setting value is valid. +| `message` | `STRING` | Details about the outcome of the procedure. +| *Mode* 3+| DBMS +|=== + +[NOTE] +==== +This procedure is not considered safe to run from multiple threads. +It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). +For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. +==== + + +[[procedure_dbms_components]] +=== dbms.components() + + +.Details +|=== +| *Syntax* 3+m| dbms.components() :: (name, versions, edition) +| *Description* 3+a| List DBMS components and their versions. +.4+| *Return arguments* | *Name* | *Type* | *Description* +| `name` | `STRING` | The name of the component. +| `versions` | `LIST` | The installed versions of the component. +| `edition` | `STRING` | The Neo4j edition of the DBMS. +| *Mode* 3+| DBMS +|=== + + +[[procedure_dbms_info]] +=== dbms.info() + + +.Details +|=== +| *Syntax* 3+m| dbms.info() :: (id, name, creationDate) +| *Description* 3+a| Provides information regarding the DBMS. +.4+| *Return arguments* | *Name* | *Type* | *Description* +| `id` | `STRING` | The id of the DBMS. +| `name` | `STRING` | The name of the DBMS. +| `creationDate` | `STRING` | The creation date of the DBMS. +| *Mode* 3+| DBMS +|=== + +[[procedure_dbms_listcapabilities]] +=== dbms.listCapabilities() + + +.Details +|=== +| *Syntax* 3+m| dbms.listCapabilities() :: (name, description, value) +| *Description* 3+a| List capabilities. +.4+| *Return arguments* | *Name* | *Type* | *Description* +| `name` | `STRING` | The full name of the capability (e.g. "dbms.instance.version"). +| `description` | `STRING` | The capability description (e.g. "Neo4j version this instance is running"). +| `value` | `ANY` | The capability object if it is present in the system (e.g. "5.20.0"). +| *Mode* 3+| DBMS +|=== + +[role=label--admin-only] +[[procedure_dbms_listconfig]] +=== dbms.listConfig() + + +.Details +|=== +| *Syntax* 3+m| dbms.listConfig([ searchString ]) :: (name, description, value, dynamic, defaultValue, startupValue, explicitlySet, validValues) +| *Description* 3+a| List the currently active configuration settings of Neo4j. +.2+| *Input arguments* | *Name* | *Type* | *Description* +| `searchString` | `STRING` | A string that filters on the name of config settings. +.9+| *Return arguments* | *Name* | *Type* | *Description* +| `name` | `STRING` | The name of the setting. +| `description` | `STRING` | The description of the setting. +| `value` | `STRING` | The set value of the setting. +| `dynamic` | `BOOLEAN` | If the setting can be set dynamically or not. +| `defaultValue` | `STRING` | The default value of the setting. +| `startupValue` | `STRING` | The value of the setting when the database started. +| `explicitlySet` | `BOOLEAN` | Whether or not the setting was explicitly set. +| `validValues` | `STRING` | A description of the valid values. +| *Mode* 3+| DBMS +|=== + +[role=label--enterprise-edition label--admin-only label--not-on-aura] +[[procedure_dbms_setconfigvalue]] +=== dbms.setConfigValue() + + +.Details +|=== +| *Syntax* 3+m| dbms.setConfigValue(setting, value) +| *Description* 3+a| Update a given setting value. Passing an empty value results in removing the configured value and falling back to the default value. Changes do not persist and are lost if the server is restarted. In a clustered environment, `dbms.setConfigValue` affects only the cluster member it is run against. +.3+| *Input arguments* | *Name* | *Type* | *Description* +| `setting` | `STRING` | The name of the setting. +| `value` | `STRING` | The value to set. +| *Mode* 3+| DBMS +|=== + +[role=label--enterprise-edition] +[[procedure_dbms_listpools]] +=== dbms.listPools() + + +.Details +|=== +| *Syntax* 3+m| dbms.listPools() :: (pool, databaseName, heapMemoryUsed, heapMemoryUsedBytes, nativeMemoryUsed, nativeMemoryUsedBytes, freeMemory, freeMemoryBytes, totalPoolMemory, totalPoolMemoryBytes) +| *Description* 3+a| List all memory pools, including sub pools, currently registered at this instance that are visible to the user. +.11+| *Return arguments* | *Name* | *Type* | *Description* +| `pool` | `STRING` | The name of the memory pool. +| `databaseName` | `STRING` | The name of the database. +| `heapMemoryUsed` | `STRING` | The amount of heap memory used. +| `heapMemoryUsedBytes` | `STRING` | The amount of heap memory used in bytes. +| `nativeMemoryUsed` | `STRING` | The amount of native memory used. +| `nativeMemoryUsedBytes` | `STRING` | The amount of native memory used in bytes. +| `freeMemory` | `STRING` | The amount of free memory. +| `freeMemoryBytes` | `STRING` | The amount of free memory in bytes. +| `totalPoolMemory` | `STRING` | The total pool memory. +| `totalPoolMemoryBytes` | `STRING` | The total pool memory in bytes. +| *Mode* 3+| DBMS +|=== + +[NOTE] +==== +This procedure is not considered safe to run from multiple threads. +It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). +For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. +==== + +== Connection management + +For more information, see xref:monitoring/connection-management.adoc[]. + +[[procedure_dbms_listconnections]] +=== dbms.listConnections() + + +.Details +|=== +| *Syntax* 3+m| dbms.listConnections() :: (connectionId, connectTime, connector, username, userAgent, serverAddress, clientAddress) +| *Description* 3+a| List all accepted network connections at this instance that are visible to the user. +.8+| *Return arguments* | *Name* | *Type* | *Description* +| `connectionId` | `STRING` | The id of the connection. +| `connectTime` | `STRING` | The time the connection was established. +| `connector` | `STRING` | The protocol of the connector. +| `username` | `STRING` | The username of the connected user. +| `userAgent` | `STRING` | The active agent. +| `serverAddress` | `STRING` | The address of the connected server. +| `clientAddress` | `STRING` | The address of the connected client. +| *Mode* 3+| DBMS +|=== + +[[procedure_dbms_killconnection]] +=== dbms.killConnection() + + +.Details +|=== +| *Syntax* 3+m| dbms.killConnection(id) :: (connectionId, username, message) +| *Description* 3+a| Kill network connection with the given connection id. +.2+| *Input arguments* | *Name* | *Type* | *Description* +| `id` | `STRING` | The id of the connection to kill. +.4+| *Return arguments* | *Name* | *Type* | *Description* +| `connectionId` | `STRING` | The id of the connection killed. +| `username` | `STRING` | The username of the user of the killed connection. +| `message` | `STRING` | Details about the outcome of the procedure. +| *Mode* 3+| DBMS +|=== + +[[procedure_dbms_killconnections]] +=== dbms.killConnections() + + +.Details +|=== +| *Syntax* 3+m| dbms.killConnections(ids) :: (connectionId, username, message) +| *Description* 3+a| Kill all network connections with the given connection ids. +.2+| *Input arguments* | *Name* | *Type* | *Description* +| `ids` | `LIST` | The ids of the connections to kill. +.4+| *Return arguments* | *Name* | *Type* | *Description* +| `connectionId` | `STRING` | The id of the connection killed. +| `username` | `STRING` | The username of the user of the killed connection. +| `message` | `STRING` | Details about the outcome of the procedure. +| *Mode* 3+| DBMS +|=== + + +== Database management + +For more information, see xref:database-administration/index.adoc[] and xref:database-internals/index.adoc[]. + +[role=label--enterprise-edition] +[[procedure_db_checkpoint]] +=== db.checkpoint() + + +.Details +|=== +| *Syntax* 3+m| db.checkpoint() :: (success, message) +| *Description* 3+a| Initiate and wait for a new check point, or wait any already on-going check point to complete. Note that this temporarily disables the `db.checkpoint.iops.limit` setting in order to make the check point complete faster. This might cause transaction throughput to degrade slightly, due to increased IO load. +.3+| *Return arguments* | *Name* | *Type* | *Description* +| `success` | `BOOLEAN` | Whether the checkpoint has successfully completed. +| `message` | `STRING` | Details about the outcome of the procedure. +| *Mode* 3+| DBMS +|=== + +[NOTE] +==== +This procedure is not considered safe to run from multiple threads. +It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). +For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. +==== + +[[procedure_db_info]] +=== db.info() + + +.Details +|=== +| *Syntax* 3+m| db.info() :: (id, name, creationDate) +| *Description* 3+a| Provides information regarding the database. +.4+| *Return arguments* | *Name* | *Type* | *Description* +| `id` | `STRING` | The id of the database. +| `name` | `STRING` | The name of the database. +| `creationDate` | `STRING` | The creation date of the database. +| *Mode* 3+| READ +|=== + +[role=label--enterprise-edition] +[[procedure_dbms_listactivelocks]] +=== dbms.listActiveLocks() + + +.Details +|=== +| *Syntax* 3+m| dbms.listActiveLocks(queryId) :: (mode, resourceType, resourceId) +| *Description* 3+a| List the active lock requests granted for the transaction executing the query with the given query id. +.2+| *Input arguments* | *Name* | *Type* | *Description* +| `queryId` | `STRING` | The id of the query to check for active locks on. +.4+| *Return arguments* | *Name* | *Type* | *Description* +| `mode` | `STRING` | The lock type: ('SHARED', 'EXCLUSIVE'). +| `resourceType` | `STRING` | The locked resource. +| `resourceId` | `INTEGER` | The id of the locked resource. +| *Mode* 3+| DBMS +|=== + +[NOTE] +==== +This procedure is not considered safe to run from multiple threads. +It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). +For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. +==== + +[role=label--enterprise-edition label--admin-only] +[[procedure_listlocks]] +=== db.listLocks() + + +.Details +|=== +| *Syntax* 3+m| db.listLocks() :: (mode, resourceType, resourceId, transactionId) +| *Description* 3+a| List all locks at this database. +.5+| *Return arguments* | *Name* | *Type* | *Description* +| `mode` | `STRING` | The locking mode this lock is using, either "SHARED" or "EXCLUSIVE". +| `resourceType` | `STRING` | The type of resource (e.g. nodes, relationships, labels) this lock protects. +| `resourceId` | `INTEGER` | The id of the resource this lock protects. +| `transactionId` | `STRING` | The id of the transaction that owns this lock. +| *Mode* 3+| DBMS +|=== + +[[procedure_db_ping]] +=== db.ping() + + +.Details +|=== +| *Syntax* 3+m| db.ping() :: (success) +| *Description* 3+a| This procedure can be used by client side tooling to test whether they are correctly connected to a database. The procedure is available in all databases and always returns true. A faulty connection can be detected by not being able to call this procedure. +.2+| *Return arguments* | *Name* | *Type* | *Description* +| `success` | `BOOLEAN` | Whether or not the connection call to the database has been successful. +| *Mode* 3+| READ +|=== + +[[procedure_dbms_routing_getroutingtable]] +=== dbms.routing.getRoutingTable() + + +.Details +|=== +| *Syntax* 3+m| dbms.routing.getRoutingTable(context [, database ]) :: (ttl, servers) +| *Description* 3+a| Returns the advertised bolt capable endpoints for a given database, divided by each endpoint's capabilities. For example, an endpoint may serve read queries, write queries, and/or future `getRoutingTable` requests. +.3+| *Input arguments* | *Name* | *Type* | *Description* +| `context` | `MAP` | Routing context, for example, routing policies. +| `database` | `STRING` | The database to get a routing table for. +.3+| *Return arguments* | *Name* | *Type* | *Description* +| `ttl` | `INTEGER` | Time to live (in seconds) for the routing table. +| `servers` | `LIST` | Servers grouped by whether they are readers, writers, or routers. +| *Mode* 3+| DBMS +|=== + +[role=label--enterprise-edition label--admin-only] +[[procedure_dbms_setDefaultDatabase]] +=== dbms.setDefaultDatabase() + + +.Details +|=== +| *Syntax* 3+m| dbms.setDefaultDatabase(databaseName) :: (result) +| *Description* 3+a| Change the default database to the provided value. The database must exist and the old default database must be stopped. +.2+| *Input arguments* | *Name* | *Type* | *Description* +| `databaseName` | `STRING` | The name of the database. +.2+| *Return arguments* | *Name* | *Type* | *Description* +| `result` | `STRING` | Information about the default database. +| *Mode* 3+| WRITE +|=== + +[role=label--enterprise-edition label--admin-only] +[[procedure_dbms_quarantineDatabase]] +=== dbms.quarantineDatabase() + + +.Details +|=== +| *Syntax* 3+m| dbms.quarantineDatabase(databaseName, setStatus [, reason ]) :: (databaseName, quarantined, result) +| *Description* 3+a| Place a database into quarantine or remove it from it. +.4+| *Input arguments* | *Name* | *Type* | *Description* +| `databaseName` | `STRING` | The name of the database to set the quarantine status of. +| `setStatus` | `BOOLEAN` | Whether or not to quarantine the database. +| `reason` | `STRING` | The reason to quarantine the database. +.4+| *Return arguments* | *Name* | *Type* | *Description* +| `databaseName` | `STRING` | The name of the database. +| `quarantined` | `BOOLEAN` | Whether or not the database is quarantined. +| `result` | `STRING` | Details about the outcome of the procedure. +| *Mode* 3+| DBMS +|=== + +[role=label--admin-only label--deprecated-5.9] +[[procedure_dbms_upgrade]] +=== dbms.upgrade() + + +.Details +|=== +| *Syntax* 3+m| dbms.upgrade() :: (status, upgradeResult) +| *Description* 3+a| Upgrade the system database schema if it is not the current schema. +.3+| *Return arguments* | *Name* | *Type* | *Description* +| `status` | `STRING` | The upgrade status of the system database. +| `upgradeResult` | `STRING` | Information about the upgrade outcome. +| *Mode* 3+| WRITE +|=== + +[NOTE] +==== +This procedure is not considered safe to run from multiple threads. +It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). +For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. +==== + + +[role=label--admin-only label--deprecated-5.9] +[[procedure_dbms_upgradestatus]] +=== dbms.upgradeStatus() + + +.Details +|=== +| *Syntax* 3+m| dbms.upgradeStatus() :: (status, description, resolution) +| *Description* 3+a| Report the current status of the system database sub-graph schema. +.4+| *Return arguments* | *Name* | *Type* | *Description* +| `status` | `STRING` | The upgrade status of the system database. +| `description` | `STRING` | Information describing the upgrade status. +| `resolution` | `STRING` | Information about the steps necessary to upgrade. +| *Mode* 3+| READ +|=== + +[NOTE] +==== +This procedure is not considered safe to run from multiple threads. +It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). +For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. +==== + +== GenAI and vectors + +For more information, see: + +* link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/indexes/semantic-indexes/vector-indexes/[Cypher Manual -> Vector indexes] +* link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/genai-integrations[Cypher Manual -> GenAI integrations] +* link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/functions/vector-functions/[Cypher Manual -> Vector functions] +* link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/functions/genai-functions/[Cypher Manual -> GenAI functions] +* link:{neo4j-docs-base-uri}/genai/tutorials/embeddings-vector-indexes/[GenAI documentation -> Embeddings & Vector Indexes Tutorial] + +[role=label--new-5.13 label--beta] +[[procedure_db_create_setnodevectorproperty]] +=== db.create.setNodeVectorProperty + + +.Details +|=== +| *Syntax* 3+m| db.create.setNodeVectorProperty(node, key, vector) +| *Description* 3+a| Set a vector property on a given node in a more space efficient representation than Cypher's `SET`. +.4+| *Input arguments* | *Name* | *Type* | *Description* +| `node` | `NODE` | The node on which the new property will be stored. +| `key` | `STRING` | The name of the new property. +| `vector` | `ANY` | The object containing the embedding. +| *Mode* 3+| WRITE +|=== + +.Known issue +[NOTE] +==== +Procedure signatures from `SHOW PROCEDURES` renders the vector arguments with a type of `ANY` rather than the semantically correct type of `LIST`. +The types are still enforced as `LIST`. +==== + +[role=label--new-5.18 label--beta] +[[procedure_db_create_setrelationshipvectorproperty]] +=== db.create.setRelationshipVectorProperty() + + +.Details +|=== +| *Syntax* 3+m| db.create.setRelationshipVectorProperty(relationship, key, vector) +| *Description* 3+a| Set a vector property on a given relationship in a more space efficient representation than Cypher's `SET`. +.4+| *Input arguments* | *Name* | *Type* | *Description* +| `relationship` | `RELATIONSHIP` | The relationship on which the new property will be stored. +| `key` | `STRING` | The name of the new property. +| `vector` | `ANY` | The object containing the embedding. +| *Mode* 3+| WRITE +|=== + +.Known issue +[NOTE] +==== +Procedure signatures from `SHOW PROCEDURES` renders the vector arguments with a type of `ANY` rather than the semantically correct type of `LIST`. +The types are still enforced as `LIST`. +==== + +[role=label--new-5.11 label--beta label--deprecated-5.13] +[[procedure_db_create_setvectorproperty]] +=== db.create.setVectorProperty() + + +.Details +|=== +| *Syntax* 3+m| db.create.setVectorProperty(node, key, vector) :: (node) +| *Description* 3+a| Set a vector property on a given node in a more space efficient representation than Cypher's SET. +.4+| *Input arguments* | *Name* | *Type* | *Description* +| `node` | `NODE` | The node on which the new property will be stored. +| `key` | `STRING` | The name of the new property. +| `vector` | `ANY` | The object containing the embedding. +.2+| *Return arguments* | *Name* | *Type* | *Description* +| `node` | `NODE` | The node on which the vector property was set. +| *Mode* 3+| WRITE +| *Replaced by* 3+| xref:procedures.adoc#procedure_db_create_setnodevectorproperty[`db.create.setNodeVectorProperty()`] and xref:procedures.adoc#procedure_db_create_setrelationshipvectorproperty[`db.create.setRelationshipVectorProperty()`] +|=== + +.Known issue +[NOTE] +==== +Procedure signatures from `SHOW PROCEDURES` renders the vector arguments with a type of `ANY` rather than the semantically correct type of `LIST`. +The types are still enforced as `LIST`. +==== + + +[role=label--new-5.11 label--deprecated-5.26] +[[procedure_db_index_vector_createnodeindex]] +=== db.index.vector.createNodeIndex() + + +.Details +|=== +| *Syntax* 3+m| db.index.vector.createNodeIndex(indexName, label, propertyKey, vectorDimension, vectorSimilarityFunction) +| *Description* 3+a| Create a named node vector index for the specified label and property with the given vector dimensionality using either the EUCLIDEAN or COSINE similarity function. +Both similarity functions are case-insensitive. +Use the `db.index.vector.queryNodes` procedure to query the named index. + +.6+| *Input arguments* | *Name* | *Type* | *Description* +| `indexName` | `STRING` | indexName :: STRING +| `label` | `STRING` | label :: STRING +| `propertyKey` | `STRING` | propertyKey :: STRING +| `vectorDimension` | `INTEGER` | vectorDimension :: INTEGER +| `vectorSimilarityFunction` | `STRING` | vectorSimilarityFunction :: STRING +| *Mode* 3+| SCHEMA +|=== + +[NOTE] +As of Neo4j 5.15, vector indexes can be created with the Cypher Command `CREATE VECTOR INDEX`. +For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/indexes/semantic-indexes/vector-indexes/#create-vector-index[Cypher Manual -> Create a vector index]. + +[role=label--new-5.18] +[[procedure_db_index_vector_createrelationshipindex]] + +=== db.index.vector.queryNodes() + + +.Details +|=== +| *Syntax* 3+m| db.index.vector.queryNodes(indexName, numberOfNearestNeighbours, query) :: (node, score) +| *Description* 3+a| Query the given node vector index. +Returns requested number of nearest neighbors to the provided query vector, and their similarity score to that query vector, based on the configured similarity function for the index. +The similarity score is a value between [0, 1]; where 0 indicates least similar, 1 most similar. + +.4+| *Input arguments* | *Name* | *Type* | *Description* +| `indexName` | `STRING` | The name of the vector index. +| `numberOfNearestNeighbours` | `INTEGER` | The size of the vector neighbourhood. +| `query` | `ANY` | The object to find approximate matches for. +.3+| *Return arguments* | *Name* | *Type* | *Description* +| `node` | `NODE` | A node which contains a vector property similar to the query object. +| `score` | `FLOAT` | The score measuring how similar the node property is to the query object. +| *Mode* 3+| READ +|=== + +[role=label--new-5.18] +[[procedure_db_index_vector_queryrelationships]] +=== db.index.vector.queryRelationships() + + +.Details +|=== +| *Syntax* 3+m| db.index.vector.queryRelationships(indexName, numberOfNearestNeighbours, query) :: (relationship, score) +| *Description* 3+a| Query the given relationship vector index. +Returns requested number of nearest neighbors to the provided query vector, +and their similarity score to that query vector, based on the configured similarity function for the index. +The similarity score is a value between [0, 1]; where 0 indicates least similar, 1 most similar. + +.4+| *Input arguments* | *Name* | *Type* | *Description* +| `indexName` | `STRING` | The name of the vector index. +| `numberOfNearestNeighbours` | `INTEGER` | The size of the vector neighbourhood. +| `query` | `ANY` | The object to find approximate matches for. +.3+| *Return arguments* | *Name* | *Type* | *Description* +| `relationship` | `RELATIONSHIP` | A relationship which contains a vector property similar to the query object. +| `score` | `FLOAT` | The score measuring how similar the node property is to the query object. +| *Mode* 3+| READ +|=== + + +[role=label--new-5.17] +[[procedure_genai_vector_encodeBatch]] +=== genai.vector.encodeBatch() + + +.Details +|=== +| *Syntax* 3+m| genai.vector.encodeBatch(resources, provider, configuration) :: (index, resource, vector) +| *Description* 3+a| Encode a given batch of resources as vectors using the named provider. +For each element in the given resource LIST this returns: + +* the corresponding 'index' within that LIST, +* the original 'resource' element itself, +* and the encoded 'vector'. + +.4+| *Input arguments* | *Name* | *Type* | *Description* +| `resources` | `LIST` | The object to transform into an embedding. +| `provider` | `STRING` | The GenAI provider to use. +| `configuration` | `MAP` | The provider specific settings. +.4+| *Return arguments* | *Name* | *Type* | *Description* +| `index` | `INTEGER` | The index of the corresponding element in the input list. +| `resource` | `STRING` | The name of the input resource. +| `vector` | `ANY` | The generated vector embedding for the resource. +| *Mode* 3+| DEFAULT +|=== + +For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/genai-integrations/#multiple-embeddings[Cypher Manual -> Generating a batch of embeddings]. + +.Known issue +[NOTE] +==== +Procedure signatures from `SHOW PROCEDURES` renders the vector arguments with a type of `ANY` rather than the semantically correct type of `LIST`. +The types are still enforced as `LIST`. +==== + +[role=label--new-5.19] +[[procedure_genai_vector_listEncodingProviders]] +=== genai.vector.listEncodingProviders() + + +.Details +|=== +| *Syntax* 3+m| genai.vector.listEncodingProviders() :: (name, requiredConfigType, otionalConfigType, defaultConfig) +| *Description* 3+a| Lists the available vector embedding providers. +.5+| *Return arguments* | *Name* | *Type* | *Description* +| `name` | `STRING` | The name of the GenAI provider. +| `requiredConfigType` | `STRING` | The signature of the required config map. +| `optionalConfigType` | `STRING` | The signature of the optional config map. +| `defaultConfig` | `MAP` | The default values for the GenAI provider. +| *Mode* 3+| DEFAULT +|=== + + +== Index management + +For more information, see: + +* xref:performance/index-configuration.adoc[] +* link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/indexes/search-performance-indexes/overview/[Cypher Manual -> Search performance indexes] +* link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/indexes/semantic-indexes/full-text-indexes[Cypher Manual -> Full-text indexes] + +[[procedure_db_awaitindex]] +=== db.awaitIndex() + + +.Details +|=== +| *Syntax* 3+m| db.awaitIndex(indexName [, timeOutSeconds ]) +| *Description* 3+a| Wait for an index to come online (for example: CALL db.awaitIndex("MyIndex", 300)). +.3+| *Input arguments* | *Name* | *Type* | *Description* +| `indexName` | `STRING` | The name of the awaited index. +| `timeOutSeconds` | `INTEGER` | The maximum time to wait. +| *Mode* 3+| READ +|=== + +[NOTE] +==== +This procedure is not considered safe to run from multiple threads. +It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). +For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. +==== + +[[procedure_db_awaitIndexes]] +=== db.awaitIndexes() + + +.Details +|=== +| *Syntax* 3+m| db.awaitIndexes([ timeOutSeconds ]) +| *Description* 3+a| Wait for all indexes to come online (for example: CALL db.awaitIndexes(300)). +.2+| *Input arguments* | *Name* | *Type* | *Description* +| `timeOutSeconds` | `INTEGER` | The maximum time to wait. +| *Mode* 3+| READ +|=== + +[NOTE] +==== +This procedure is not considered safe to run from multiple threads. +It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). +For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. +==== + + +[[procedure_db_index_fulltext_awaiteventuallyconsistentindexrefresh]] +=== db.index.fulltext.awaitEventuallyConsistentIndexRefresh() + + +.Details +|=== +| *Syntax* 3+m| db.index.fulltext.awaitEventuallyConsistentIndexRefresh() +| *Description* 3+a| Wait for the updates from recently committed transactions to be applied to any eventually-consistent full-text indexes. +| *Mode* 3+| READ +|=== + +[[procedure_db_index_fulltext_listavailableanalyzers]] +=== db.index.fulltext.listAvailableAnalyzers() + + +.Details +|=== +| *Syntax* 3+m| db.index.fulltext.listAvailableAnalyzers() :: (analyzer, description, stopwords) +| *Description* 3+a| List the available analyzers that the full-text indexes can be configured with. +.4+| *Return arguments* | *Name* | *Type* | *Description* +| `analyzer` | `STRING` | The name of the analyzer. +| `description` | `STRING` | The description of the analyzer. +| `stopwords` | `LIST` | The stopwords used by the analyzer to tokenize strings. +| *Mode* 3+| READ +|=== + + +[[procedure_db_index_fulltext_querynodes]] +=== db.index.fulltext.queryNodes() + + +.Details +|=== +| *Syntax* 3+m| db.index.fulltext.queryNodes(indexName, queryString [, options ]) :: (node, score) +| *Description* 3+a| Query the given full-text index. Returns the matching nodes and their Lucene query score, ordered by score. +Valid _key: value_ pairs for the `options` map are: + +* 'skip' -- to skip the top N results. +* 'limit' -- to limit the number of results returned. +* 'analyzer' -- to use the specified analyzer as a search analyzer for this query. + +The `options` map and any of the keys are optional. +An example of the `options` map: `{skip: 30, limit: 10, analyzer: 'whitespace'}` + +.4+| *Input arguments* | *Name* | *Type* | *Description* +| `indexName` | `STRING` | The name of the fulltext index. +| `queryString` | `STRING` | The string to find approximate matches for. +| `options` | `MAP` | {skip :: INTEGER, limit :: INTEGER, analyzer :: STRING} +.3+| *Return arguments* | *Name* | *Type* | *Description* +| `node` | `NODE` | A node which contains a property similar to the query string. +| `score` | `FLOAT` | The score measuring how similar the node property is to the query string. +| *Mode* 3+| READ +|=== + +[[procedure_db_index_fulltext_queryRelationships]] +=== db.index.fulltext.queryRelationships() + + +.Details +|=== +| *Syntax* 3+m| db.index.fulltext.queryRelationships(indexName, queryString [, options ]) :: (relationship, score) +| *Description* 3+a| Query the given full-text index. Returns the matching relationships and their Lucene query score, ordered by score. +Valid _key: value_ pairs for the `options` map are: + +* 'skip' -- to skip the top N results. +* 'limit' -- to limit the number of results returned. +* 'analyzer' -- to use the specified analyzer as a search analyzer for this query. + +The `options` map and any of the keys are optional. +An example of the `options` map: `{skip: 30, limit: 10, analyzer: 'whitespace'}` + +.4+| *Input arguments* | *Name* | *Type* | *Description* +| `indexName` | `STRING` | The name of the fulltext index. +| `queryString` | `STRING` | The string to find approximate matches for. +| `options` | `MAP` | {skip :: INTEGER, limit :: INTEGER, analyzer :: STRING} +.3+| *Return arguments* | *Name* | *Type* | *Description* +| `relationship` | `RELATIONSHIP` | A relationship which contains a property similar to the query string. +| `score` | `FLOAT` | The score measuring how similar the node property is to the query string. +| *Mode* 3+| READ +|=== + + +[[procedure_db_resampleindex]] +=== db.resampleIndex() + + +.Details +|=== +| *Syntax* 3+m| db.resampleIndex(indexName) +| *Description* 3+a| Schedule resampling of an index (for example: CALL db.resampleIndex("MyIndex")). +.2+| *Input arguments* | *Name* | *Type* | *Description* +| `indexName` | `STRING` | The name of the index. +| *Mode* 3+| READ +|=== + +[NOTE] +==== +This procedure is not considered safe to run from multiple threads. +It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). +For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. +==== + + +[[procedure_db_resampleoutdatedindexes]] +=== db.resampleOutdatedIndexes() + + +.Details +|=== +| *Syntax* 3+m| db.resampleOutdatedIndexes() +| *Description* 3+a| Schedule resampling of all outdated indexes. +| *Mode* 3+| READ +|=== + +[NOTE] +==== +This procedure is not considered safe to run from multiple threads. +It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). +For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. +==== + +== Metrics + +[[procedure_dbms_queryjmx]] +=== dbms.queryJmx() + + +.Details +|=== +| *Syntax* 3+m| dbms.queryJmx(query) :: (name, description, attributes) +| *Description* 3+a| Query JMX management data by domain and name. For instance, use *:* to find all JMX beans. +.2+| *Input arguments* | *Name* | *Type* | *Description* +| `query` | `STRING` | A query for MBeans on this MBeanServer (e.g. '*:*,name=*neo4j*' for all metrics in neo4j database). +.4+| *Return arguments* | *Name* | *Type* | *Description* +| `name` | `STRING` | The name of the metric. +| `description` | `STRING` | The description of the metric. +| `attributes` | `MAP` | A collection with the attributes (values) of that metric. +| *Mode* 3+| DBMS +|=== + +== Schema and metadata + +[[procedure_db_schema_nodetypeproperties]] +=== db.schema.nodeTypeProperties() + + +.Details +|=== +| *Syntax* 3+m| db.schema.nodeTypeProperties() :: (nodeType, nodeLabels, propertyName, propertyTypes, mandatory) +| *Description* 3+a| Show the derived property schema of the nodes in tabular form. +.6+| *Return arguments* | *Name* | *Type* | *Description* +| `nodeType` | `STRING` | A name generated from the labels on the node. +| `nodeLabels` | `LIST` | A list containing the labels on a category of node. +| `propertyName` | `STRING` | A property key on a category of node. +| `propertyTypes` | `LIST` | All types of a property belonging to a node category. +| `mandatory` | `BOOLEAN` | Whether or not the property is present on all nodes belonging to a node category. +| *Mode* 3+| READ +|=== + + +[NOTE] +==== +This procedure is not considered safe to run from multiple threads. +It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). +For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. +==== + +[[procedure_db_schema_reltypeproperties]] +=== db.schema.relTypeProperties() + + +.Details +|=== +| *Syntax* 3+m| db.schema.relTypeProperties() :: (relType, propertyName, propertyTypes, mandatory) +| *Description* 3+a| Show the derived property schema of the relationships in tabular form. +.5+| *Return arguments* | *Name* | *Type* | *Description* +| `relType` | `STRING` | A name generated from the type on the relationship. +| `propertyName` | `STRING` | A property key on a category of relationship. +| `propertyTypes` | `LIST` | All types of a property belonging to a relationship category. +| `mandatory` | `BOOLEAN` | Whether or not the property is present on all relationships belonging to a relationship category. +| *Mode* 3+| READ +|=== + + +[NOTE] +==== +This procedure is not considered safe to run from multiple threads. +It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). +For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. +==== + +[[procedure_db_schema_visualization]] +=== db.schema.visualization() + + +.Details +|=== +| *Syntax* 3+m| db.schema.visualization() :: (nodes, relationships) +| *Description* 3+a| Visualizes the schema of the data based on available statistics. A new node is returned for each label. The properties represented on the node include: `name` (label name), `indexes` (list of indexes), and `constraints` (list of constraints). A relationship of a given type is returned for all possible combinations of start and end nodes. The properties represented on the relationship include: `name` (type name). Note that this may include additional relationships that do not exist in the data due to the information available in the count store. +.3+| *Return arguments* | *Name* | *Type* | *Description* +| `nodes` | `LIST` | A list of virtual nodes representing each label in the database. +| `relationships` | `LIST` | A list of virtual relationships representing all combinations between start and end nodes in the database. +| *Mode* 3+| READ +|=== + +[NOTE] +==== +This procedure is not considered safe to run from multiple threads. +It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). +For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. +==== + +[[procedure_db_createlabel]] +=== db.createLabel() + + +.Details +|=== +| *Syntax* 3+m| db.createLabel(newLabel) +| *Description* 3+a| Create a label +.2+| *Input arguments* | *Name* | *Type* | *Description* +| `newLabel` | `STRING` | A new label. +| *Mode* 3+| WRITE +|=== + +[[procedure_db_createproperty]] +=== db.createProperty() + + +.Details +|=== +| *Syntax* 3+m| db.createProperty(newProperty) +| *Description* 3+a| Create a Property +.2+| *Input arguments* | *Name* | *Type* | *Description* +| `newProperty` | `STRING` | A new property. +| *Mode* 3+| WRITE +|=== + +[[procedure_db_createRelationshiptype]] +=== db.createRelationshipType + + +.Details +|=== +| *Syntax* 3+m| db.createRelationshipType(newRelationshipType) +| *Description* 3+a| Create a RelationshipType +.2+| *Input arguments* | *Name* | *Type* | *Description* +| `newRelationshipType` | `STRING` | A new relationship type. +| *Mode* 3+| WRITE +|=== + +[[procedure_db_labels]] +=== db.labels() + + +.Details +|=== +| *Syntax* 3+m| db.labels() :: (label) +| *Description* 3+a| List all labels attached to nodes within a database according to the user's access rights. The procedure returns empty results if the user is not authorized to view those labels. +.2+| *Return arguments* | *Name* | *Type* | *Description* +| `label` | `STRING` | A label within the database. +| *Mode* 3+| READ +|=== + + +[[procedure_db_propertykeys]] +=== db.propertyKeys() + + +.Details +|=== +| *Syntax* 3+m| db.propertyKeys() :: (propertyKey) +| *Description* 3+a| List all property keys in the database. +.2+| *Return arguments* | *Name* | *Type* | *Description* +| `propertyKey` | `STRING` | A property key in the database. +| *Mode* 3+| READ +|=== + +[NOTE] +==== +This procedure is not considered safe to run from multiple threads. +It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). +For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. +==== + +[[procedure_db_relationshiptypes]] +=== db.relationshipTypes() + + +.Details +|=== +| *Syntax* 3+m| db.relationshipTypes() :: (relationshipType) +| *Description* 3+a| List all types attached to relationships within a database according to the user's access rights. The procedure returns empty results if the user is not authorized to view those relationship types. +.2+| *Return arguments* | *Name* | *Type* | *Description* +| `relationshipType` | `STRING` | A relationship type in the database. +| *Mode* 3+| READ +|=== + +[NOTE] +==== +This procedure is not considered safe to run from multiple threads. +It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). +For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. +==== + +== Statistics and query planning + +For more information, see xref:performance/statistics-execution-plans.adoc[] + +[role=label--admin-only] +[[procedure_db_clearyquerycaches]] +=== db.clearQueryCaches() + + +.Details +|=== +| *Syntax* 3+m| db.clearQueryCaches() :: (value) +| *Description* 3+a| Clears all query caches. +.2+| *Return arguments* | *Name* | *Type* | *Description* +| `value` | `STRING` | The number of cleared query caches. +| *Mode* 3+| DBMS +|=== + +[role=label--admin-only] +[[procedure_db_prepareforreplanning]] +=== db.prepareForReplanning() + + +.Details +|=== +| *Syntax* 3+m| db.prepareForReplanning([ timeOutSeconds ]) +| *Description* 3+a| Triggers an index resample and waits for it to complete, and after that clears query caches. After this procedure has finished queries will be planned using the latest database statistics. +.2+| *Input arguments* | *Name* | *Type* | *Description* +| `timeOutSeconds` | `INTEGER` | The maximum time to wait. +| *Mode* 3+| READ +|=== + +[NOTE] +==== +This procedure is not considered safe to run from multiple threads. +It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). +For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. +==== + +[role=label--admin-only] +[[procedure_db_stats_clear]] +=== db.stats.clear + + +.Details +|=== +| *Syntax* 3+m| db.stats.clear(section) :: (section, success, message) +| *Description* 3+a| Clear collected data of a given data section. Valid sections are 'QUERIES' +.2+| *Input arguments* | *Name* | *Type* | *Description* +| `section` | `STRING` | Specify 'QUERIES'. +.4+| *Return arguments* | *Name* | *Type* | *Description* +| `section` | `STRING` | The section cleared. +| `success` | `BOOLEAN` | Whether the section was successfully cleared. +| `message` | `STRING` | Details about the outcome of the procedure. +| *Mode* 3+| READ +|=== + +[role=label--admin-only] +[[procedure_db_stats_collect]] +=== db.stats.collect() + + +.Details +|=== +| *Syntax* 3+m| db.stats.collect(section [, config ]) :: (section, success, message) +| *Description* 3+a| Start data collection of a given data section. Valid sections are 'QUERIES' +.3+| *Input arguments* | *Name* | *Type* | *Description* +| `section` | `STRING` | Specify 'QUERIES'. +| `config` | `MAP` | A map containing a single key `durationSeconds` (default value of -1). +.4+| *Return arguments* | *Name* | *Type* | *Description* +| `section` | `STRING` | The section collected. +| `success` | `BOOLEAN` | Whether the section was successfully collected. +| `message` | `STRING` | Details about the outcome of the procedure. +| *Mode* 3+| READ +|=== + +[role=label--admin-only] +[[procedure_db_stats_retrieve]] +=== db.stats.retrieve() + + +.Details +|=== +| *Syntax* 3+m| db.stats.retrieve(section [, config ]) :: (section, data) +| *Description* 3+a| Retrieve statistical data about the current database. Valid sections are 'GRAPH COUNTS', 'TOKENS', 'QUERIES', 'META' +.3+| *Input arguments* | *Name* | *Type* | *Description* +| `section` | `STRING` | A section of stats to retrieve: ('GRAPH COUNTS', 'TOKENS', 'QUERIES', 'META'). +| `config` | `MAP` | A map containing a single key `maxInvocations` (default value of 100). +.3+| *Return arguments* | *Name* | *Type* | *Description* +| `section` | `STRING` | The section retrieved. +| `data` | `MAP` | Data pertaining to the retrieved statistics. +| *Mode* 3+| READ +|=== + +[role=label--admin-only] +[[procedure_db_stats_retrieveallanonymized]] +=== db.stats.retrieveAllAnonymized() + + +.Details +|=== +| *Syntax* 3+m| db.stats.retrieveAllAnonymized(graphToken [, config ]) :: (section, data) +| *Description* 3+a| Retrieve all available statistical data about the current database, in an anonymized form. +.3+| *Input arguments* | *Name* | *Type* | *Description* +| `graphToken` | `STRING` | The name of the graph token. +| `config` | `MAP` | A map containing a single key `maxInvocations` (default value of 100). +.3+| *Return arguments* | *Name* | *Type* | *Description* +| `section` | `STRING` | The section retrieved. +| `data` | `MAP` | Data pertaining to the retrieved statistics. +| *Mode* 3+| READ +|=== + + +[role=label--admin-only] +[[procedure_db_stats_status]] +=== db.stats.status() + + +.Details +|=== +| *Syntax* 3+m| db.stats.status() :: (section, status, data) +| *Description* 3+a| Retrieve the status of all available collector daemons, for this database. +.4+| *Return arguments* | *Name* | *Type* | *Description* +| `section` | `STRING` | String with the message "QUERIES". +| `status` | `STRING` | The status of the QueryCollector: "idle" or "collecting". +| `data` | `MAP` | data :: MAP +| *Mode* 3+| READ +|=== + + +[role=label--admin-only] +[[procedure_db_stats_stop]] +=== db.stats.stop() + + +.Details +|=== +| *Syntax* 3+m| db.stats.stop(section) :: (section, success, message) +| *Description* 3+a| Stop data collection of a given data section. Valid sections are 'QUERIES' +.2+| *Input arguments* | *Name* | *Type* | *Description* +| `section` | `STRING` | Specify 'QUERIES'. +.4+| *Return arguments* | *Name* | *Type* | *Description* +| `section` | `STRING` | The stopped section. +| `success` | `BOOLEAN` | Whether the section was successfully stopped. +| `message` | `STRING` | Details about the outcome of the procedure. +| *Mode* 3+| READ +|=== + + +== Transaction management + +[[procedure_tx_getmetadata]] +=== tx.getMetaData() + + +.Details +|=== +| *Syntax* 3+m| tx.getMetaData() :: (metadata) +| *Description* 3+a| Provides attached transaction metadata. +.2+| *Return arguments* | *Name* | *Type* | *Description* +| `metadata` | `MAP` | Metadata about the transaction. +| *Mode* 3+| DBMS +|=== + + +[[procedure_tx_setmetadata]] +=== tx.setMetaData() + + +.Details +|=== +| *Syntax* 3+m| tx.setMetaData(data) +| *Description* 3+a| Attaches a map of data to the transaction. The data will be printed when listing queries, and inserted into the query log. +.2+| *Input arguments* | *Name* | *Type* | *Description* +| `data` | `MAP` | Metadata to attach to the transaction. +| *Mode* 3+| DBMS +|=== + + +[[deprecated-procedures]] +== List of deprecated procedures + +Neo4j 5 contains several deprecated procedures. +These procedures have been replaced either by Cypher commands or different procedures. +The procedures deprecated in Neo4j 5 will be removed in the next major release of Neo4j. + +.See all deprecated procedures +[%collapsible] +==== +[options=header, cols="3m,1,1,3"] +|=== +| Name +| Community Edition +| Enterprise Edition +| Comment + +| xref:procedures.adoc#procedure_cdc_current[`cdc.current()`] +| label:no[] +| label:yes[] +| label:new[Introduced in 5.13] label:beta[] label:deprecated[Deprecated in 5.17] +Replaced by: xref:procedures.adoc#procedure_db_cdc_current[`db.cdc.current()`] + +| xref:procedures.adoc#procedure_cdc_earliest[`cdc.earliest()`] +| label:no[] +| label:yes[] +| label:new[Introduced in 5.13] label:beta[] label:deprecated[Deprecated in 5.17] +Replaced by: xref:procedures.adoc#procedure_db_cdc_earliest[`db.cdc.earliest()`] + +| xref:procedures.adoc#procedure_cdc_query[`cdc.query()`] +| label:no[] +| label:yes[] +| label:new[Introduced in 5.13] label:beta[] label:admin-only[] label:deprecated[Deprecated in 5.17] +Replaced by: xref:procedures.adoc#procedure_db_cdc_query[`db.cdc.query()`] + +| xref:procedures.adoc#procedure_db_create_setVectorProperty[`db.create.setVectorProperty()`] +| label:yes[] +| label:yes[] +| label:new[Introduced in 5.11] label:beta[] label:deprecated[Deprecated in 5.13] Replaced by: xref:procedures.adoc#procedure_db_create_setNodeVectorProperty[`db.create.setNodeVectorProperty()`] + +// New in 4.2 +// com.neo4j.causaulclustering.discovery.procedures.ReadReplicaToggleProcedure +| xref:procedures.adoc#procedure_dbms_cluster_readreplicatoggle[`dbms.cluster.readReplicaToggle()`] +| label:no[] +| label:yes[] +| label:admin-only[] label:deprecated[Deprecated in 5.6]. + +Replaced by: xref:procedures.adoc#procedure_dbms_cluster_secondaryreplicationdisable[`dbms.cluster.secondaryReplicationDisable()`]. + +| xref:procedures.adoc#procedure_dbms_cluster_routing_getroutingtable[`dbms.cluster.routing.getRoutingTable()`] +| label:yes[] +| label:yes[] +| label:deprecated[Deprecated in 5.21]. + +Replaced by: xref:procedures.adoc#procedure_dbms_routing_getroutingtable[`dbms.routing.getRoutingTable()`]. + +| xref:procedures.adoc#procedure_dbms_cluster_uncordonServer[`dbms.cluster.uncordonServer()`] +| label:no[] +| label:yes[] +| label:deprecated[Deprecated in 5.23]. + +Before Neo4j 5.23, the procedure can be run only with the `Admin` privileges. + +Replaced by xref:clustering/server-syntax.adoc#server-management-syntax[`ENABLE SERVER`]. + +| xref:procedures.adoc#procedure_dbms_setDatabaseAllocator[`dbms.setDatabaseAllocator()`] +| label:no[] +| label:yes[] +| label:admin-only[] label:deprecated[Deprecated in 5.23] + +// New in 4.1 +| xref:procedures.adoc#procedure_dbms_upgrade[`dbms.upgrade()`] +| label:yes[] +| label:yes[] +| label:admin-only[] label:deprecated[Deprecated in 5.9] + +// New in 4.1 +| xref:procedures.adoc#procedure_dbms_upgradestatus[`dbms.upgradeStatus()`] +| label:yes[] +| label:yes[] +| label:admin-only[] label:deprecated[Deprecated in 5.9] + +|=== + +==== + +[[removed-procedures]] +== List of removed procedures + +Several procedures were removed with the release of Neo4j. +They were functionally replaced by Cypher commands or different procedures. + +.See all procedures removed in Neo4j 5.0 and their replacements +[%collapsible] +==== + +[options=header,cols="3m,1,1,3"] +|=== +| Name +| Community Edition +| Enterprise Edition +| Replaced by + +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_db_constraints[`db.constraints()`] +| label:yes[] +| label:yes[] +| `SHOW CONSTRAINTS` + +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_db_createindex[`db.createIndex()`] +| label:yes[] +| label:yes[] +| `CREATE INDEX` + +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_db_createnodekey[`db.createNodeKey()`] +| label:no[] +| label:yes[] +| `CREATE CONSTRAINT ... IS NODE KEY` + +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_db_createuniquepropertyconstraint[`db.createUniquePropertyConstraint()`] +| label:yes[] +| label:yes[] +| `CREATE CONSTRAINT ... IS UNIQUE` + +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_db_indexes[`db.indexes()`] +| label:yes[] +| label:yes[] +| `SHOW INDEXES` + +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_db_indexdetails[`db.indexDetails()`] +| label:yes[] +| label:yes[] +| `SHOW INDEXES YIELD*` + +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_db_index_fulltext_createnodeindex[`db.index.fulltext.createNodeIndex()`] +| label:yes[] +| label:yes[] +| `CREATE FULLTEXT INDEX ...` + +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_db_index_fulltext_createrelationshipindex[`db.index.fulltext.createRelationshipIndex()`] +| label:yes[] +| label:yes[] +| `CREATE FULLTEXT INDEX ...` + +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_db_index_fulltext_drop[`db.index.fulltext.drop()`] +| label:yes[] +| label:yes[] +| `DROP INDEX ...` + +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_db_schemastatements[`db.schemaStatements()`] +| label:yes[] +| label:yes[] +| `SHOW INDEXES YIELD *` and `SHOW CONSTRAINTS YIELD *` + +// New in 4.0 +// com.neo4j.causaulclustering.discovery.procedures.ClusterOverviewProcedure +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_dbms_cluster_overview[`dbms.cluster.overview()`] +| label:no[] +| label:yes[] +| `SHOW SERVERS` + + +// New in 4.2 +// com.neo4j.dbms.procedures.QuarantineProcedure +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_dbms_cluster_quarantinedatabase[`dbms.cluster.quarantineDatabase()`] +| label:no[] +| label:yes[] +| `dbms.quarantineDatabase()` + + +// New in 4.0 +// Removed in 5.0 +// com.neo4j.causaulclustering.discovery.procedures.RoleProcedure +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_dbms_cluster_role[`dbms.cluster.role()`] +| label:no[] +| label:yes[] +| `SHOW DATABASES` + +// New in 4.1 +// Removed in 5.0 +// com.neo4j.dbms.procedures.ClusterSetDefaultDatabaseProcedure +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_dbms_cluster_setdefaultdatabase[`dbms.cluster.setDefaultDatabase()`] +| label:no[] +| label:yes[] +| `dbms.setDefaultDatabase` + +// Removed in 5.0 +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_dbms_database_state[`dbms.database.state()`] +| label:yes[] +| label:yes[] +| `SHOW DATABASES` + +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_dbms_functions[`dbms.functions()`] +| label:yes[] +| label:yes[] +| `SHOW FUNCTIONS` + +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_dbms_killqueries[`dbms.killQueries()`] +| label:yes[] +| label:yes[] +| `TERMINATE TRANSACTIONS` + +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_dbms_killquery[`dbms.killQuery()`] +| label:yes[] +| label:yes[] +| `TERMINATE TRANSACTIONS` + +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_dbms_killtransaction[`dbms.killTransaction()`] +| label:yes[] +| label:yes[] +| `TERMINATE TRANSACTIONS` + +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_dbms_killtransactions[`dbms.killTransactions()`] +| label:yes[] +| label:yes[] +| `TERMINATE TRANSACTIONS` + +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_dbms_listqueries[`dbms.listQueries()`] +| label:yes[] +| label:yes[] +| `SHOW TRANSACTIONS` + +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_dbms_listtransactions[`dbms.listTransactions()`] +| label:yes[] +| label:yes[] +| `SHOW TRANSACTIONS` + + +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_dbms_procedures[`dbms.procedures()`] +| label:no[] +| label:yes[] +| `SHOW PROCEDURES` + +// Removed in 5.0 +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_dbms_security_activateuser[`dbms.security.activateUser()`] +| label:no[] +| label:yes[] +| `ALTER USER` + +// Removed in 5.0 +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_dbms_security_addroletouser[`dbms.security.addRoleToUser()`] +| label:no[] +| label:yes[] +| `GRANT ROLE TO USER` + +// Removed in 5.0 +// newSet( READER, EDITOR, PUBLISHER, ARCHITECT, ADMIN ) +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_dbms_security_changepassword[`dbms.security.changePassword()`] +| label:yes[] +| label:yes[] +| `ALTER CURRENT USER SET PASSWORD` + +// Removed in 5.0 +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_dbms_security_changeuserpassword[`dbms.security.changeUserPassword()`] +| label:no[] +| label:yes[] +| `ALTER USER` + +// Removed in 5.0 +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_dbms_security_createrole[`dbms.security.createRole()`] +| label:no[] +| label:yes[] +| `CREATE ROLE` + +// Removed in 5.0 +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_dbms_security_createuser[`dbms.security.createUser()`] +| label:yes[] +| label:yes[] +| `CREATE USER` + +// Removed in 5.0 +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_dbms_security_deleterole[`dbms.security.deleteRole()`] +| label:no[] +| label:yes[] +| `DROP ROLE` + +// Removed in 5.0 +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_dbms_security_deleteuser[`dbms.security.deleteUser()`] +| label:yes[] +| label:yes[] +| `DROP USER` + +// Removed in 5.0 +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_dbms_security_listroles[`dbms.security.listRoles()`] +| label:yes[] +| label:yes[] +| `SHOW ROLES` + +// Removed in 5.0 +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_dbms_security_listrolesforuser[`dbms.security.listRolesForUser()`] +| label:no[] +| label:yes[] +| `SHOW USERS` + +// Removed in 5.0 +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_dbms_security_listusers[`dbms.security.listUsers()`] +| label:yes[] +| label:yes[] +| `SHOW USERS` + +// Removed in 5.0 +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_dbms_security_listusersforrole[`dbms.security.listUsersForRole()`] +| label:no[] +| label:yes[] +| `SHOW ROLES WITH USERS` + +// Removed in 5.0 +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_dbms_security_removerolefromuser[`dbms.security.removeRoleFromUser()`] +| label:no[] +| label:yes[] +| `REVOKE ROLE FROM USER` + +// Removed in 5.0 +| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/#procedure_dbms_security_suspenduser[`dbms.security.suspendUser()`] +| label:no[] +| label:yes[] +| `ALTER USER` + +|=== + +==== + diff --git a/modules/ROOT/pages/reference/index.adoc b/modules/ROOT/pages/reference/index.adoc deleted file mode 100644 index 756b97b24..000000000 --- a/modules/ROOT/pages/reference/index.adoc +++ /dev/null @@ -1,10 +0,0 @@ -[appendix] -[[reference]] -= Reference -:description: Appendix reference for Neo4j configuration settings and Neo4j procedures. - -This appendix contains the following topics: - -* xref:reference/procedures.adoc[Procedures] - - diff --git a/modules/ROOT/pages/reference/procedures.adoc b/modules/ROOT/pages/reference/procedures.adoc deleted file mode 100644 index 7ccaf2f4d..000000000 --- a/modules/ROOT/pages/reference/procedures.adoc +++ /dev/null @@ -1,2559 +0,0 @@ -[[neo4j-procedures]] -= Procedures -:description: This page provides a complete reference to the Neo4j procedures. - -:description: Reference for Neo4j procedures. - -:stem: -:mathjax-tex-packages: ams - -This page provides a complete reference to the Neo4j procedures. -Available procedures depend on the type of installation you have: - -* Neo4j Enterprise Edition provides a larger set of procedures than Neo4j Community Edition. -* Cluster members have procedures that are not available in standalone mode. - -To check which procedures are available in your Neo4j DBMS, use the Cypher command `SHOW PROCEDURES`: - -.List available procedures -==== -[source, cypher] ----- -SHOW PROCEDURES ----- -==== - -[NOTE] -==== -Some procedures can only be run by users with `Admin` privileges. -Specifically, either the `EXECUTE ADMIN PROCEDURES` privilege or both the `EXECUTE PROCEDURES` and `EXECUTE BOOSTED PROCEDURES` privileges. -These procedures are labeled with label:admin-only[]. - -For more information, see xref:authentication-authorization/dbms-administration.adoc#access-control-dbms-administration-execute[the `EXECUTE` privileges section]. -==== - -== List of procedures - -.Neo4j procedures -[options=header,cols="3m,1,1,3"] -|=== -| Name -| Community Edition -| Enterprise Edition -| Comment - -| xref:reference/procedures.adoc#procedure_db_cdc_current[`db.cdc.current()`] -| label:no[] -| label:yes[] -| label:new[Introduced in 5.17] label:beta[] - -| xref:reference/procedures.adoc#procedure_db_cdc_earliest[`db.cdc.earliest()`] -| label:no[] -| label:yes[] -| label:new[Introduced in 5.17] label:beta[] - -| xref:reference/procedures.adoc#procedure_db_cdc_query[`db.cdc.query()`] -| label:no[] -| label:yes[] -| label:new[Introduced in 5.17] label:beta[] label:admin-only[] - - -| xref:reference/procedures.adoc#procedure_db_awaitindex[`db.awaitIndex()`] -| label:yes[] -| label:yes[] -| - -| xref:reference/procedures.adoc#procedure_db_awaitindexes[`db.awaitIndexes()`] -| label:yes[] -| label:yes[] -| - - -| xref:reference/procedures.adoc#procedure_db_checkpoint[`db.checkpoint()`] -| label:no[] -| label:yes[] -| - -| xref:reference/procedures.adoc#procedure_db_clearquerycaches[`db.clearQueryCaches()`] -| label:yes[] -| label:yes[] -| label:admin-only[] - -| xref:reference/procedures.adoc#procedure_db_create_setNodeVectorProperty[`db.create.setNodeVectorProperty()`] -| label:yes[] -| label:yes[] -| label:new[Introduced in 5.13] label:beta[] - -| xref:reference/procedures.adoc#procedure_db.create.setRelationshipVectorProperty[`db.create.setRelationshipVectorProperty()`] -| label:yes[] -| label:yes[] -| label:new[Introduced in 5.18] label:beta[] - -| xref:reference/procedures.adoc#procedure_db_createlabel[`db.createLabel()`] -| label:yes[] -| label:yes[] -| - -| xref:reference/procedures.adoc#procedure_db_createproperty[`db.createProperty()`] -| label:yes[] -| label:yes[] -| - -| xref:reference/procedures.adoc#procedure_db_createrelationshiptype[`db.createRelationshipType()`] -| label:yes[] -| label:yes[] -| - -| xref:reference/procedures.adoc#procedure_db_index_fulltext_awaiteventuallyconsistentindexrefresh[`db.index.fulltext.awaitEventuallyConsistentIndexRefresh()`] -| label:yes[] -| label:yes[] -| - -| xref:reference/procedures.adoc#procedure_db_index_fulltext_listavailableanalyzers[`db.index.fulltext.listAvailableAnalyzers()`] -| label:yes[] -| label:yes[] -| - -| xref:reference/procedures.adoc#procedure_db_index_fulltext_querynodes[`db.index.fulltext.queryNodes()`] -| label:yes[] -| label:yes[] -| In 4.1, signature changed to `db.index.fulltext.queryNodes(indexName :: STRING, queryString :: STRING, options = {} :: MAP) :: (node :: NODE, score :: FLOAT)`. - -| xref:reference/procedures.adoc#procedure_db_index_fulltext_queryrelationships[`db.index.fulltext.queryRelationships()`] -| label:yes[] -| label:yes[] -| In 4.1, signature changed to `db.index.fulltext.queryRelationships(indexName :: STRING, queryString :: STRING, options = {} :: MAP) :: (relationship :: RELATIONSHIP, score :: FLOAT)`. - -| xref:reference/procedures.adoc#procedure_db_index_vector_createNodeIndex[`db.index.vector.createNodeIndex()`] -| label:yes[] -| label:yes[] -| label:new[Introduced in 5.11] label:beta[Beta until 5.13] Replaced by: `CREATE VECTOR INDEX ...` - -| xref:reference/procedures.adoc#procedure_db_index_vector_queryNodes[`db.index.vector.queryNodes()`] -| label:yes[] -| label:yes[] -| label:new[Introduced in 5.11] label:beta[Beta until 5.13] - -| xref:reference/procedures.adoc#procedure_db.index.vector.queryRelationships[`db.index.vector.queryRelationships()`] -| label:yes[] -| label:yes[] -| label:new[Introduced in 5.18] - -| xref:reference/procedures.adoc#procedure_db_info[`db.info()`] -| label:yes[] -| label:yes[] -| - -| xref:reference/procedures.adoc#procedure_db_labels[`db.labels()`] -| label:yes[] -| label:yes[] -| - -| xref:reference/procedures.adoc#procedure_db_listlocks[`db.listLocks()`] -| label:no[] -| label:yes[] -| label:admin-only[] + -In 4.2, signature changed to `db.listLocks() :: (mode :: STRING, resourceType :: STRING, resourceId :: INTEGER, transactionId :: STRING)`. - -| xref:reference/procedures.adoc#procedure_db_ping[`db.ping()`] -| label:yes[] -| label:yes[] -| - -// Bugfix in 4.0 -// Default users are: admin -| xref:reference/procedures.adoc#procedure_db_prepareforreplanning[`db.prepareForReplanning()`] -| label:yes[] -| label:yes[] -| label:admin-only[] - -| xref:reference/procedures.adoc#procedure_db_propertykeys[`db.propertyKeys()`] -| label:yes[] -| label:yes[] -| - -| xref:reference/procedures.adoc#procedure_db_relationshiptypes[`db.relationshipTypes()`] -| label:yes[] -| label:yes[] -| - -| xref:reference/procedures.adoc#procedure_db_resampleindex[`db.resampleIndex()`] -| label:yes[] -| label:yes[] -| - -| xref:reference/procedures.adoc#procedure_db_resampleoutdatedindexes[`db.resampleOutdatedIndexes()`] -| label:yes[] -| label:yes[] -| - -| xref:reference/procedures.adoc#procedure_db_schema_nodetypeproperties[`db.schema.nodeTypeProperties()`] -| label:yes[] -| label:yes[] -| - -| xref:reference/procedures.adoc#procedure_db_schema_reltypeproperties[`db.schema.relTypeProperties()`] -| label:yes[] -| label:yes[] -| - -| xref:reference/procedures.adoc#procedure_db_schema_visualization[`db.schema.visualization()`] -| label:yes[] -| label:yes[] -| - -// Bugfix in 4.0 -// Default users are: admin -| xref:reference/procedures.adoc#procedure_db_stats_clear[`db.stats.clear()`] -| label:yes[] -| label:yes[] -| label:admin-only[] - -// Bugfix in 4.0 -// Default users are: admin -| xref:reference/procedures.adoc#procedure_db_stats_collect[`db.stats.collect()`] -| label:yes[] -| label:yes[] -| label:admin-only[] - -// Bugfix in 4.0 -// Default users are: admin -| xref:reference/procedures.adoc#procedure_db_stats_retrieve[`db.stats.retrieve()`] -| label:yes[] -| label:yes[] -| label:admin-only[] - -// Bugfix in 4.0 -// Default users are: admin -| xref:reference/procedures.adoc#procedure_db_stats_retrieveallanonymized[`db.stats.retrieveAllAnonymized()`] -| label:yes[] -| label:yes[] -| label:admin-only[] - -// Bugfix in 4.0 -// Default users are: admin -| xref:reference/procedures.adoc#procedure_db_stats_status[`db.stats.status()`] -| label:yes[] -| label:yes[] -| label:admin-only[] - -// Bugfix in 4.0 -// Default users are: admin -| xref:reference/procedures.adoc#procedure_db_stats_stop[`db.stats.stop()`] -| label:yes[] -| label:yes[] -| label:admin-only[] - -// New in 5.0 -// Only for admins -| xref:reference/procedures.adoc#procedure_dbms_checkconfigvalue[`dbms.checkConfigValue()`] -| label:no[] -| label:yes[] -| label:new[Introduced in 5.0] label:admin-only[] - -// New in 4.0 -// Internal -// dbms.clientConfig() - -| xref:reference/procedures.adoc#procedure_dbms_cluster_setAutomaticallyEnableFreeServers[`dbms.cluster.setAutomaticallyEnableFreeServers()`] -| label:no[] -| label:yes[] -| Before Neo4j 5.23, the procedure can be run only with the `Admin` privileges. - -| xref:reference/procedures.adoc#procedure_dbms_cluster_checkConnectivity[`dbms.cluster.checkConnectivity()`] -| label:no[] -| label:yes[] -| label:admin-only[] - -| xref:reference/procedures.adoc#procedure_dbms_cluster_cordonServer[`dbms.cluster.cordonServer()`] -| label:no[] -| label:yes[] -| Before Neo4j 5.23, the procedure can be run only with the `Admin` privileges. - -// New in 4.0 -// com.neo4j.causaulclustering.discovery.procedures.InstalledProtocolsProcedure -| xref:reference/procedures.adoc#procedure_dbms_cluster_protocols[`dbms.cluster.protocols()`] -| label:no[] -| label:yes[] -| - -| xref:reference/procedures.adoc#procedure_dbms_cluster_secondaryreplicationdisable[`dbms.cluster.secondaryReplicationDisable()`] -| label:no[] -| label:yes[] -| label:new[Introduced in 5.6] label:admin-only[] - - -| xref:reference/procedures.adoc#procedure_dbms_cluster_switchdiscoveryserviceversion[`dbms.cluster.switchDiscoveryServiceVersion()`] -| label:no[] -| label:yes[] -| label:new[Introduced in 5.22] label:admin-only[] - -| xref:reference/procedures.adoc#procedure_dbms_cluster_showparalleldiscoverystate[`dbms.cluster.showParallelDiscoveryState()`] -| label:no[] -| label:yes[] -| label:new[Introduced in 5.22] label:admin-only[] - -| xref:reference/procedures.adoc#procedure_dbms_cluster_movetonextdiscoveryversion[`dbms.cluster.moveToNextDiscoveryVersion()`] -| label:no[] -| label:yes[] -| label:new[Introduced in 5.26] label:admin-only[] - -| xref:reference/procedures.adoc#procedure_dbms_cluster_deallocateDatabaseFromServer[`dbms.cluster.deallocateDatabaseFromServer()`] -| label:no[] -| label:yes[] -| label:new[Introduced in 5.23] label:server-management[`SERVER MANAGEMENT` privilege only] - -| xref:reference/procedures.adoc#procedure_dbms_cluster_deallocateDatabaseFromServers[`dbms.cluster.deallocateDatabaseFromServers()`] -| label:no[] -| label:yes[] -| label:new[Introduced in 5.23] label:server-management[`SERVER MANAGEMENT` privilege only] - -| xref:reference/procedures.adoc#procedure_dbms_cluster_deallocateNumberOfDatabases[`dbms.cluster.deallocateNumberOfDatabases()`] -| label:no[] -| label:yes[] -| label:new[Introduced in 5.23] label:server-management[`SERVER MANAGEMENT` privilege only] - -| xref:reference/procedures.adoc#procedure_dbms_cluster_reallocateDatabase[`dbms.cluster.reallocateDatabase()`] -| label:no[] -| label:yes[] -| label:new[Introduced in 5.23] label:server-management[`SERVER MANAGEMENT` privilege only] - -| xref:reference/procedures.adoc#procedure_dbms_cluster_reallocateNumberOfDatabases[`dbms.cluster.reallocateNumberOfDatabases()`] -| label:no[] -| label:yes[] -| label:new[Introduced in 5.23] label:server-management[`SERVER MANAGEMENT` privilege only] - -| xref:reference/procedures.adoc#procedure_dbms_cluster_recreateDatabase[`dbms.cluster.recreateDatabase()`] -| label:no[] -| label:yes[] -| label:new[Introduced in 5.24] - -| xref:reference/procedures.adoc#procedure_dbms_cluster_statusCheck[`dbms.cluster.statusCheck()`] -| label:no[] -| label:yes[] -| label:new[Introduced in 5.24] label:admin-only[] - -| xref:reference/procedures.adoc#procedure_dbms_components[`dbms.components()`] -| label:yes[] -| label:yes[] -| - -| xref:reference/procedures.adoc#procedure_dbms_info[`dbms.info()`] -| label:yes[] -| label:yes[] -| - -// Community Edition in 4.2 -| xref:reference/procedures.adoc#procedure_dbms_killconnection[`dbms.killConnection()`] -| label:yes[] -| label:yes[] -| - -// Community Edition in 4.2 -| xref:reference/procedures.adoc#procedure_dbms_killconnections[`dbms.killConnections()`] -| label:yes[] -| label:yes[] -| - -| xref:reference/procedures.adoc#procedure_dbms_listactivelocks[`dbms.listActiveLocks()`] -| label:yes[] -| label:yes[] -| - -| xref:reference/procedures.adoc#procedure_dbms_listcapabilities[`dbms.listCapabilities()`] -| label:yes[] -| label:yes[] -| - -| xref:reference/procedures.adoc#procedure_dbms_listconfig[`dbms.listConfig()`] -| label:yes[] -| label:yes[] -| label:admin-only[] - -| xref:reference/procedures.adoc#procedure_dbms_listconnections[`dbms.listConnections()`] -| label:yes[] -| label:yes[] -| - -// New in 4.1 -| xref:reference/procedures.adoc#procedure_dbms_listpools[`dbms.listPools()`] -| label:no[] -| label:yes[] -| - -// New in 4.3 -| xref:reference/procedures.adoc#procedure_dbms_quarantineDatabase[`dbms.quarantineDatabase()`] -| label:no[] -| label:yes[] -| label:admin-only[] - -| xref:reference/procedures.adoc#procedure_dbms_queryjmx[`dbms.queryJmx()`] -| label:yes[] -| label:yes[] -| - -| xref:reference/procedures.adoc#procedure_dbms_routing_getroutingtable[`dbms.routing.getRoutingTable()`] -| label:yes[] -| label:yes[] -| - -// New in 4.2 -| xref:reference/procedures.adoc#procedure_dbms_scheduler_failedjobs[`dbms.scheduler.failedJobs()`] -| label:no[] -| label:yes[] -| label:admin-only[] - -| xref:reference/procedures.adoc#procedure_dbms_scheduler_groups[`dbms.scheduler.groups()`] -| label:no[] -| label:yes[] -| label:admin-only[] - -// New in 4.2 -| xref:reference/procedures.adoc#procedure_dbms_scheduler_jobs[`dbms.scheduler.jobs()`] -| label:no[] -| label:yes[] -| label:admin-only[] - -| xref:reference/procedures.adoc#procedure_dbms_security_clearauthcache[`dbms.security.clearAuthCache()`] -| label:no[] -| label:yes[] -| label:admin-only[] - -| xref:reference/procedures.adoc#procedure_dbms_setconfigvalue[`dbms.setConfigValue()`] -| label:no[] -| label:yes[] -| label:admin-only[] label:not-aura[Not available on Aura] - -| xref:reference/procedures.adoc#procedure_dbms_setDatabaseAllocator[`dbms.setDatabaseAllocator()`] -| label:no[] -| label:yes[] -| label:admin-only[] - -| xref:reference/procedures.adoc#procedure_dbms_setDefaultAllocationNumbers[`dbms.setDefaultAllocationNumbers()`] -| label:no[] -| label:yes[] -| label:admin-only[] - -| xref:reference/procedures.adoc#procedure_dbms_setDefaultDatabase[`dbms.setDefaultDatabase()`] -| label:no[] -| label:yes[] -| label:admin-only[] - - -| xref:reference/procedures.adoc#procedure_dbms_showcurrentuser[`dbms.showCurrentUser()`] -| label:yes[] -| label:yes[] -| - -| xref:reference/procedures.adoc#procedure_dbms_showTopologyGraphConfig[`dbms.showTopologyGraphConfig()`] -| label:no[] -| label:yes[] -| label:admin-only[] - -// New in 5.19 -| xref:reference/procedures.adoc#procedure_genai_vector_listEncodingProviders[`genai.vector.listEncodingProviders()`] -| label:yes[] -| label:yes[] -| label:new[Introduced in 5.19] - -// New in 5.16 on Aura, from Neo4j 5.17 also on-prem -| xref:reference/procedures.adoc#procedure_genai_vector_encodeBatch[`genai.vector.encodeBatch()`] -| label:yes[] -| label:yes[] -| label:new[Introduced in 5.17] - -| xref:reference/procedures.adoc#procedure_tx_getmetadata[`tx.getMetaData()`] -| label:yes[] -| label:yes[] -| - -| xref:reference/procedures.adoc#procedure_tx_setmetadata[`tx.setMetaData()`] -| label:yes[] -| label:yes[] -| - -|=== - - -== List of deprecated procedures - -.Deprecated Neo4j procedures -[options=header, cols="3m,1,1,3"] -|=== -| Name -| Community Edition -| Enterprise Edition -| Comment - -| xref:reference/procedures.adoc#procedure_cdc_current[`cdc.current()`] -| label:no[] -| label:yes[] -| label:new[Introduced in 5.13] label:beta[] label:deprecated[Deprecated in 5.17] -Replaced by: xref:reference/procedures.adoc#procedure_db_cdc_current[`db.cdc.current()`] - -| xref:reference/procedures.adoc#procedure_cdc_earliest[`cdc.earliest()`] -| label:no[] -| label:yes[] -| label:new[Introduced in 5.13] label:beta[] label:deprecated[Deprecated in 5.17] -Replaced by: xref:reference/procedures.adoc#procedure_db_cdc_earliest[`db.cdc.earliest()`] - -| xref:reference/procedures.adoc#procedure_cdc_query[`cdc.query()`] -| label:no[] -| label:yes[] -| label:new[Introduced in 5.13] label:beta[] label:admin-only[] label:deprecated[Deprecated in 5.17] -Replaced by: xref:reference/procedures.adoc#procedure_db_cdc_query[`db.cdc.query()`] - -| xref:reference/procedures.adoc#procedure_db_create_setVectorProperty[`db.create.setVectorProperty()`] -| label:yes[] -| label:yes[] -| label:new[Introduced in 5.11] label:beta[] label:deprecated[Deprecated in 5.13] Replaced by: xref:reference/procedures.adoc#procedure_db_create_setNodeVectorProperty[`db.create.setNodeVectorProperty()`] - -// New in 4.2 -// com.neo4j.causaulclustering.discovery.procedures.ReadReplicaToggleProcedure -| xref:reference/procedures.adoc#procedure_dbms_cluster_readreplicatoggle[`dbms.cluster.readReplicaToggle()`] -| label:no[] -| label:yes[] -| label:admin-only[] label:deprecated[Deprecated in 5.6]. + -Replaced by: xref:reference/procedures.adoc#procedure_dbms_cluster_secondaryreplicationdisable[`dbms.cluster.secondaryReplicationDisable()`]. - -| xref:reference/procedures.adoc#procedure_dbms_cluster_routing_getroutingtable[`dbms.cluster.routing.getRoutingTable()`] -| label:yes[] -| label:yes[] -| label:deprecated[Deprecated in 5.21]. + -Replaced by: xref:reference/procedures.adoc#procedure_dbms_routing_getroutingtable[`dbms.routing.getRoutingTable()`]. - -| xref:reference/procedures.adoc#procedure_dbms_cluster_uncordonServer[`dbms.cluster.uncordonServer()`] -| label:no[] -| label:yes[] -| label:deprecated[Deprecated in 5.23]. + -Before Neo4j 5.23, the procedure can be run only with the `Admin` privileges. + -Replaced by xref:clustering/server-syntax.adoc#server-management-syntax[`ENABLE SERVER`]. - -| xref:reference/procedures.adoc#procedure_dbms_setDatabaseAllocator[`dbms.setDatabaseAllocator()`] -| label:no[] -| label:yes[] -| label:admin-only[] label:deprecated[Deprecated in 5.23] - -// New in 4.1 -| xref:reference/procedures.adoc#procedure_dbms_upgrade[`dbms.upgrade()`] -| label:yes[] -| label:yes[] -| label:admin-only[] label:deprecated[Deprecated in 5.9] - -// New in 4.1 -| xref:reference/procedures.adoc#procedure_dbms_upgradestatus[`dbms.upgradeStatus()`] -| label:yes[] -| label:yes[] -| label:admin-only[] label:deprecated[Deprecated in 5.9] - -|=== - - - -== List of removed procedures - - -.Removed Neo4j procedures in 5.0 -[options=header,cols="3m,1,1,3"] -|=== -| Name -| Community Edition -| Enterprise Edition -| Replaced by - -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_db_constraints[`db.constraints()`] -| label:yes[] -| label:yes[] -| `SHOW CONSTRAINTS` - -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_db_createindex[`db.createIndex()`] -| label:yes[] -| label:yes[] -| `CREATE INDEX` - -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_db_createnodekey[`db.createNodeKey()`] -| label:no[] -| label:yes[] -| `CREATE CONSTRAINT ... IS NODE KEY` - -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_db_createuniquepropertyconstraint[`db.createUniquePropertyConstraint()`] -| label:yes[] -| label:yes[] -| `CREATE CONSTRAINT ... IS UNIQUE` - -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_db_indexes[`db.indexes()`] -| label:yes[] -| label:yes[] -| `SHOW INDEXES` - -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_db_indexdetails[`db.indexDetails()`] -| label:yes[] -| label:yes[] -| `SHOW INDEXES YIELD*` - -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_db_index_fulltext_createnodeindex[`db.index.fulltext.createNodeIndex()`] -| label:yes[] -| label:yes[] -| `CREATE FULLTEXT INDEX ...` - -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_db_index_fulltext_createrelationshipindex[`db.index.fulltext.createRelationshipIndex()`] -| label:yes[] -| label:yes[] -| `CREATE FULLTEXT INDEX ...` - -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_db_index_fulltext_drop[`db.index.fulltext.drop()`] -| label:yes[] -| label:yes[] -| `DROP INDEX ...` - -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_db_schemastatements[`db.schemaStatements()`] -| label:yes[] -| label:yes[] -| `SHOW INDEXES YIELD *` and `SHOW CONSTRAINTS YIELD *` - -// New in 4.0 -// com.neo4j.causaulclustering.discovery.procedures.ClusterOverviewProcedure -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_dbms_cluster_overview[`dbms.cluster.overview()`] -| label:no[] -| label:yes[] -| `SHOW SERVERS` - - -// New in 4.2 -// com.neo4j.dbms.procedures.QuarantineProcedure -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_dbms_cluster_quarantinedatabase[`dbms.cluster.quarantineDatabase()`] -| label:no[] -| label:yes[] -| `dbms.quarantineDatabase()` - - -// New in 4.0 -// Removed in 5.0 -// com.neo4j.causaulclustering.discovery.procedures.RoleProcedure -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_dbms_cluster_role[`dbms.cluster.role()`] -| label:no[] -| label:yes[] -| `SHOW DATABASES` - -// New in 4.1 -// Removed in 5.0 -// com.neo4j.dbms.procedures.ClusterSetDefaultDatabaseProcedure -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_dbms_cluster_setdefaultdatabase[`dbms.cluster.setDefaultDatabase()`] -| label:no[] -| label:yes[] -| `dbms.setDefaultDatabase` - -// Removed in 5.0 -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_dbms_database_state[`dbms.database.state()`] -| label:yes[] -| label:yes[] -| `SHOW DATABASES` - -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_dbms_functions[`dbms.functions()`] -| label:yes[] -| label:yes[] -| `SHOW FUNCTIONS` - -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_dbms_killqueries[`dbms.killQueries()`] -| label:yes[] -| label:yes[] -| `TERMINATE TRANSACTIONS` - -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_dbms_killquery[`dbms.killQuery()`] -| label:yes[] -| label:yes[] -| `TERMINATE TRANSACTIONS` - -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_dbms_killtransaction[`dbms.killTransaction()`] -| label:yes[] -| label:yes[] -| `TERMINATE TRANSACTIONS` - -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_dbms_killtransactions[`dbms.killTransactions()`] -| label:yes[] -| label:yes[] -| `TERMINATE TRANSACTIONS` - -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_dbms_listqueries[`dbms.listQueries()`] -| label:yes[] -| label:yes[] -| `SHOW TRANSACTIONS` - -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_dbms_listtransactions[`dbms.listTransactions()`] -| label:yes[] -| label:yes[] -| `SHOW TRANSACTIONS` - - -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_dbms_procedures[`dbms.procedures()`] -| label:no[] -| label:yes[] -| `SHOW PROCEDURES` - -// Removed in 5.0 -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_dbms_security_activateuser[`dbms.security.activateUser()`] -| label:no[] -| label:yes[] -| `ALTER USER` - -// Removed in 5.0 -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_dbms_security_addroletouser[`dbms.security.addRoleToUser()`] -| label:no[] -| label:yes[] -| `GRANT ROLE TO USER` - -// Removed in 5.0 -// newSet( READER, EDITOR, PUBLISHER, ARCHITECT, ADMIN ) -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_dbms_security_changepassword[`dbms.security.changePassword()`] -| label:yes[] -| label:yes[] -| `ALTER CURRENT USER SET PASSWORD` - -// Removed in 5.0 -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_dbms_security_changeuserpassword[`dbms.security.changeUserPassword()`] -| label:no[] -| label:yes[] -| `ALTER USER` - -// Removed in 5.0 -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_dbms_security_createrole[`dbms.security.createRole()`] -| label:no[] -| label:yes[] -| `CREATE ROLE` - -// Removed in 5.0 -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_dbms_security_createuser[`dbms.security.createUser()`] -| label:yes[] -| label:yes[] -| `CREATE USER` - -// Removed in 5.0 -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_dbms_security_deleterole[`dbms.security.deleteRole()`] -| label:no[] -| label:yes[] -| `DROP ROLE` - -// Removed in 5.0 -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_dbms_security_deleteuser[`dbms.security.deleteUser()`] -| label:yes[] -| label:yes[] -| `DROP USER` - -// Removed in 5.0 -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_dbms_security_listroles[`dbms.security.listRoles()`] -| label:yes[] -| label:yes[] -| `SHOW ROLES` - -// Removed in 5.0 -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_dbms_security_listrolesforuser[`dbms.security.listRolesForUser()`] -| label:no[] -| label:yes[] -| `SHOW USERS` - -// Removed in 5.0 -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_dbms_security_listusers[`dbms.security.listUsers()`] -| label:yes[] -| label:yes[] -| `SHOW USERS` - -// Removed in 5.0 -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_dbms_security_listusersforrole[`dbms.security.listUsersForRole()`] -| label:no[] -| label:yes[] -| `SHOW ROLES WITH USERS` - -// Removed in 5.0 -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_dbms_security_removerolefromuser[`dbms.security.removeRoleFromUser()`] -| label:no[] -| label:yes[] -| `REVOKE ROLE FROM USER` - -// Removed in 5.0 -| link:{neo4j-docs-base-uri}/operations-manual/4.4/reference/procedures/#procedure_dbms_security_suspenduser[`dbms.security.suspendUser()`] -| label:no[] -| label:yes[] -| `ALTER USER` - -|=== - - -== Procedure descriptions - - -[[procedure_cdc_current]] -[role=label--new-5.13 label--beta label--deprecated-5.17] -.cdc.current() -[cols="<15s,<85"] -|=== -| Description -a| -Returns the current change identifier that can be used to stream changes from. -| Signature -m|cdc.current() :: (id :: STRING) -| Mode -m|READ -| Replaced by -a|xref:reference/procedures.adoc#procedure_db_cdc_current[`db.cdc.current()`] -|=== - - -[[procedure_cdc_earliest]] -[role=label--new-5.13 label--beta label--deprecated-5.17] -.cdc.earliest() -[cols="<15s,<85"] -|=== -| Description -a| -Returns the earliest change identifier that can be used to stream changes from. -| Signature -m|cdc.earliest() :: (id :: STRING) -| Mode -m|READ -| Replaced by -a|xref:reference/procedures.adoc#procedure_db_cdc_earliest[`db.cdc.earliest()`] -|=== - - -[[procedure_cdc_query]] -[role=label--new-5.13 label--beta label--admin-only label--deprecated-5.17] -.cdc.query() -[cols="<15s,<85"] -|=== -| Description -a| -Query changes happened from the provided change identifier. -| Signature -m|cdc.query(from = :: STRING, selectors = [] :: LIST) :: (id :: STRING, txId :: INTEGER, seq :: INTEGER, metadata :: MAP, event :: MAP) -| Mode -m|READ -| Replaced by -a|xref:reference/procedures.adoc#procedure_db_cdc_query[`db.cdc.query()`] -|=== - - -[[procedure_db_cdc_current]] -[role=label--new-5.17 label--beta] -.db.cdc.current() -[cols="<15s,<85"] -|=== -| Description -a| -Returns the current change identifier that can be used to stream changes from. -| Signature -m|db.cdc.current() :: (id :: STRING) -| Mode -m|READ -|=== - - -[[procedure_db_cdc_earliest]] -[role=label--new-5.17 label--beta] -.db.cdc.earliest() -[cols="<15s,<85"] -|=== -| Description -a| -Returns the earliest change identifier that can be used to stream changes from. -| Signature -m|db.cdc.earliest() :: (id :: STRING) -| Mode -m|READ -|=== - - -[[procedure_db_cdc_query]] -[role=label--new-5.17 label--beta label--admin-only] -.db.cdc.query() -[cols="<15s,<85"] -|=== -| Description -a| -Query changes happened from the provided change identifier. -| Signature -m|db.cdc.query(from = :: STRING, selectors = [] :: LIST) :: (id :: STRING, txId :: INTEGER, seq :: INTEGER, metadata :: MAP, event :: MAP) -| Mode -m|READ - -|=== - - -[[procedure_db_awaitindex]] -.db.awaitIndex() -[cols="<15s,<85"] -|=== -| Description -a| -Wait for an index to come online (for example: `CALL db.awaitIndex("MyIndex", 300)`). -| Signature -m|db.awaitIndex(indexName :: STRING, timeOutSeconds = 300 :: INTEGER) -| Mode -m|READ -// | Default roles -// m|reader, editor, publisher, architect, admin -|=== - -[NOTE] -==== -This procedure is not considered safe to run from multiple threads. -It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). -For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. -==== - - -[[procedure_db_awaitindexes]] -.db.awaitIndexes() -[cols="<15s,<85"] -|=== -| Description -a| -Wait for all indexes to come online (for example: `CALL db.awaitIndexes(300)`). -| Signature -m|db.awaitIndexes(timeOutSeconds = 300 :: INTEGER) -| Mode -m|READ -// | Default roles -// m|reader, editor, publisher, architect, admin -|=== - -[NOTE] -==== -This procedure is not considered safe to run from multiple threads. -It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). -For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. -==== - - -[[procedure_db_checkpoint]] -[role=label--enterprise-edition] -.db.checkpoint() -[cols="<15s,<85"] -|=== -| Description -a| -Initiate and wait for a new check point, or wait any already on-going check point to complete. - -Note that this temporarily disables the `db.checkpoint.iops.limit` setting in order to make the check point complete faster. -This might cause transaction throughput to degrade slightly, due to increased IO load. -| Signature -m|db.checkpoint() :: (success :: BOOLEAN, message :: STRING) -| Mode -m|DBMS -// | Default roles -// m|reader, editor, publisher, architect, admin -|=== - -[NOTE] -==== -This procedure is not considered safe to run from multiple threads. -It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). -For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. -==== - - -[[procedure_db_clearquerycaches]] -[role=label--admin-only] -.db.clearQueryCaches() -[cols="<15s,<85"] -|=== -| Description -a| -Clears all query caches. -| Signature -m|db.clearQueryCaches() :: (value :: STRING) -| Mode -m|DBMS -// | Default roles -// m|admin -|=== - - -[[procedure_db_create_setNodeVectorProperty]] -[role=label--new-5.13 label--beta] -.db.create.setNodeVectorProperty() -[cols="<15s,<85"] -|=== -| Description -a| -Set a vector property on a given node in a more space efficient representation than Cypher’s link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/clauses/set#set-set-a-property[`SET`]. -| Signature -m| db.create.setNodeVectorProperty(node :: NODE, key :: STRING, vector :: ANY) -| Mode -m|WRITE -|=== - -.Known issue -[NOTE] -==== -Procedure signatures from `SHOW PROCEDURES` renders the vector arguments with a type of `ANY` rather than the semantically correct type of `LIST`. -The types are still enforced as `LIST`. -==== - -[role=label--new-5.18 label--beta] -[[procedure_db.create.setRelationshipVectorProperty]] -.db.create.setRelationshipVectorProperty() -[cols="<15s,<85"] -|=== -| Description -a| -Set a vector property on a given relationship in a more space efficient representation than Cypher's link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/clauses/set#set-set-a-property[`SET`]. -| Signature -m| db.create.setRelationshipVectorProperty(relationship :: RELATIONSHIP, key :: STRING, vector :: ANY) -| Mode -m|WRITE -|=== - -.Known issue -[NOTE] -==== -Procedure signatures from `SHOW PROCEDURES` renders the vector arguments with a type of `ANY` rather than the semantically correct type of `LIST`. -The types are still enforced as `LIST`. -==== - -[[procedure_db_create_setVectorProperty]] -[role=label--new-5.11 label--beta label--deprecated-5.13] -.db.create.setVectorProperty() -[cols="<15s,<85"] -|=== -| Description -a| -Set a vector property on a given node in a more space efficient representation than Cypher’s link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/clauses/set#set-set-a-property[`SET`]. -| Signature -m| db.create.setVectorProperty(node :: NODE, key :: STRING, vector :: ANY) :: (node :: NODE) -| Mode -m|WRITE -| Replaced by -a|xref:reference/procedures.adoc#procedure_db_create_setNodeVectorProperty[`db.create.setNodeVectorProperty()`] -|=== - -.Known issue -[NOTE] -==== -Procedure signatures from `SHOW PROCEDURES` renders the vector arguments with a type of `ANY` rather than the semantically correct type of `LIST`. -The types are still enforced as `LIST`. -==== - -[[procedure_db_createlabel]] -.db.createLabel() -[cols="<15s,<85"] -|=== -| Description -a| -Create a label -| Signature -m|db.createLabel(newLabel :: STRING) -| Mode -m|WRITE -// | Default roles -// m|publisher, architect, admin -|=== - - -[[procedure_db_createproperty]] -.db.createProperty() -[cols="<15s,<85"] -|=== -| Description -a| -Create a Property -| Signature -m|db.createProperty(newProperty :: STRING) -| Mode -m|WRITE -// | Default roles -// m|publisher, architect, admin -|=== - - -[[procedure_db_createrelationshiptype]] -.db.createRelationshipType() -[cols="<15s,<85"] -|=== -| Description -a| -Create a RelationshipType -| Signature -m|db.createRelationshipType(newRelationshipType :: STRING) -| Mode -m|WRITE -// | Default roles -// m|publisher, architect, admin -|=== - - -[[procedure_db_index_fulltext_awaiteventuallyconsistentindexrefresh]] -.db.index.fulltext.awaitEventuallyConsistentIndexRefresh() -[cols="<15s,<85"] -|=== -| Description -a| -Wait for the updates from recently committed transactions to be applied to any eventually-consistent full-text indexes. -| Signature -m|db.index.fulltext.awaitEventuallyConsistentIndexRefresh() -| Mode -m|READ -// | Default roles -// m|reader, editor, publisher, architect, admin -|=== - - -[[procedure_db_index_fulltext_listavailableanalyzers]] -.db.index.fulltext.listAvailableAnalyzers() -[cols="<15s,<85"] -|=== -| Description -a| -List the available analyzers that the full-text indexes can be configured with. -| Signature -m|db.index.fulltext.listAvailableAnalyzers() :: (analyzer :: STRING, description :: STRING, stopwords :: LIST) -| Mode -m|READ -// | Default roles -// m|reader, editor, publisher, architect, admin -|=== - - -[[procedure_db_index_fulltext_querynodes]] -.db.index.fulltext.queryNodes() -[cols="<15s,<85"] -|=== -| Description -a| -Query the given full-text index. -Returns the matching nodes and their Lucene query score, ordered by score. -Valid _key: value_ pairs for the `options` map are: - -* `skip: ` -- to skip the top N results. -* `limit: ` -- to limit the number of results returned. -* `analyzer: ` -- to use the specified analyzer as a search analyzer for this query. - -The `options` map and any of the keys are optional. -An example of the `options` map: `{skip: 30, limit: 10, analyzer: 'whitespace'}` -| Signature -m|db.index.fulltext.queryNodes(indexName :: STRING, queryString :: STRING, options = {} :: MAP) :: (node :: NODE, score :: FLOAT) -| Mode -m|READ -// | Default roles -// m|reader, editor, publisher, architect, admin -|=== - - -[[procedure_db_index_fulltext_queryrelationships]] -.db.index.fulltext.queryRelationships() -[cols="<15s,<85"] -|=== -| Description -a| -Query the given full-text index. -Returns the matching relationships and their Lucene query score, ordered by score. -Valid _key: value_ pairs for the `options` map are: - -* `skip: ` -- to skip the top N results. -* `limit: ` -- to limit the number of results returned. -* `analyzer: ` -- to use the specified analyzer as a search analyzer for this query. - -The `options` map and any of the keys are optional. -An example of the `options` map: `{skip: 30, limit: 10, analyzer: 'whitespace'}` -| Signature -m|db.index.fulltext.queryRelationships(indexName :: STRING, queryString :: STRING, options = {} :: MAP) :: (relationship :: RELATIONSHIP, score :: FLOAT) -| Mode -m|READ -// | Default roles -// m|reader, editor, publisher, architect, admin -|=== - - - -[[procedure_db_index_vector_createNodeIndex]] -[role=label--new-5.11] -.db.index.vector.createNodeIndex() label:beta[Beta until 5.13] -[cols="<15s,<85"] -|=== -| Description -a| -Create a named node vector index for the specified label and property with the given vector dimensionality using either the EUCLIDEAN or COSINE similarity function. -Both similarity functions are case-insensitive. -Use the `db.index.vector.queryNodes` procedure to query the named index. -| Signature -m| db.index.vector.createNodeIndex(indexName :: STRING, label :: STRING, propertyKey :: STRING, vectorDimension :: INTEGER, vectorSimilarityFunction :: STRING) -| Mode -m|SCHEMA -| Replaced by -m|CREATE VECTOR INDEX ... -|=== - - - -[[procedure_db_index_vector_queryNodes]] -[role=label--new-5.11] -.db.index.vector.queryNodes() label:beta[Beta until 5.13] -[cols="<15s,<85"] -|=== -| Description -a| -Query the given vector index. -Returns requested number of nearest neighbors to the provided query vector, and their similarity score to that query vector, based on the configured similarity function for the index. -The similarity score is a value between [0, 1]; where `0` indicates least similar, `1` most similar. -| Signature -m| db.index.vector.queryNodes(indexName :: STRING, numberOfNearestNeighbours :: INTEGER, query :: ANY) :: (node :: NODE, score :: FLOAT) -| Mode -m|READ -|=== - -.Known issue -[NOTE] -==== -Procedure signatures from `SHOW PROCEDURES` renders the vector arguments with a type of `ANY` rather than the semantically correct type of `LIST`. -The types are still enforced as `LIST`. -==== - -[role=label--new-5.18] -[[procedure_db.index.vector.queryRelationships]] -.db.index.vector.queryRelationships() -[cols="<15s,<85"] -|=== -| Description -a| -Query the given relationship vector index. -Returns requested number of nearest neighbors to the provided query vector, and their similarity score to that query vector, based on the configured similarity function for the index. The similarity score is a value between `[0, 1]`; where `0` indicates least similar, `1` most similar. -| Signature -m| db.index.vector.queryRelationships(indexName :: STRING, numberOfNearestNeighbours :: INTEGER, query :: ANY) :: (relationship :: RELATIONSHIP, score :: FLOAT) -| Mode -m|READ -|=== - -.Known issue -[NOTE] -==== -Procedure signatures from `SHOW PROCEDURES` renders the vector arguments with a type of `ANY` rather than the semantically correct type of `LIST`. -The types are still enforced as `LIST`. -==== - -[[procedure_db_info]] -.db.info() -[cols="<15s,<85"] -|=== -| Description -a| -Provides information regarding the database. -| Signature -m|db.info() :: (id :: STRING, name :: STRING, creationDate :: STRING) -| Mode -m|READ -// | Default roles -// m|reader, editor, publisher, architect, admin -|=== - -[NOTE] -==== -This procedure is not considered safe to run from multiple threads. -It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). -For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. -==== - - -[[procedure_db_labels]] -.db.labels() -[cols="<15s,<85"] -|=== -| Description -a| -List all labels attached to nodes within a database according to the user's access rights. -The procedure returns empty results if the user is not authorized to view those labels. -| Signature -m|db.labels() :: (label :: STRING) -| Mode -m|READ -// | Default roles -// m|reader, editor, publisher, architect, admin -|=== - -[NOTE] -==== -This procedure is not considered safe to run from multiple threads. -It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). -For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. -==== - - - -[[procedure_db_listlocks]] -[role=label--enterprise-edition label--admin-only] -.db.listLocks() -[cols="<15s,<85"] -|=== -| Description -a| -List all locks at this database. -| Signature -m|db.listLocks() :: (mode :: STRING, resourceType :: STRING, resourceId :: INTEGER, transactionId :: STRING) -| Mode -m|DBMS -// | Default roles -// m|admin -|=== - -[NOTE] -==== -This procedure is not considered safe to run from multiple threads. -It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). -For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. -==== - - -[[procedure_db_ping]] -.db.ping() -[cols="<15s,<85"] -|=== -| Description -a| -This procedure can be used by client side tooling to test whether they are correctly connected to a database. -The procedure is available in all databases and always returns true. -A faulty connection can be detected by not being able to call this procedure. -| Signature -m|db.ping() :: (success :: BOOLEAN) -| Mode -m|READ -// | Default roles -// m|reader, editor, publisher, architect, admin -|=== - -[NOTE] -==== -This procedure is not considered safe to run from multiple threads. -It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). -For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. -==== - - - -[[procedure_db_prepareforreplanning]] -[role=label--admin-only] -.db.prepareForReplanning() -[cols="<15s,<85"] -|=== -| Description -a| -Triggers an index resample and waits for it to complete, and after that clears query caches. -After this procedure has finished queries will be planned using the latest database statistics. -| Signature -m|db.prepareForReplanning(timeOutSeconds = 300 :: INTEGER) -| Mode -m|READ -// | Default roles -// m|admin -|=== - -[NOTE] -==== -This procedure is not considered safe to run from multiple threads. -It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). -For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. -==== - -[[procedure_db_propertykeys]] -.db.propertyKeys() -[cols="<15s,<85"] -|=== -| Description -a| -List all property keys in the database. -| Signature -m|db.propertyKeys() :: (propertyKey :: STRING) -| Mode -m|READ -// | Default roles -// m|reader, editor, publisher, architect, admin -|=== - -[NOTE] -==== -This procedure is not considered safe to run from multiple threads. -It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). -For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. -==== - -[[procedure_db_relationshiptypes]] -.db.relationshipTypes() -[cols="<15s,<85"] -|=== -| Description -a| -List all types attached to relationships within a database according to the user's access rights. -The procedure returns empty results if the user is not authorized to view those relationship types. -| Signature -m|db.relationshipTypes() :: (relationshipType :: STRING) -| Mode -m|READ -// | Default roles -// m|reader, editor, publisher, architect, admin -|=== - -[NOTE] -==== -This procedure is not considered safe to run from multiple threads. -It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). -For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. -==== - -[[procedure_db_resampleindex]] -.db.resampleIndex() -[cols="<15s,<85"] -|=== -| Description -a| -Schedule resampling of an index (for example: `CALL db.resampleIndex("MyIndex")`). -| Signature -m|db.resampleIndex(indexName :: STRING) -| Mode -m|READ -// | Default roles -// m|reader, editor, publisher, architect, admin -|=== - -[NOTE] -==== -This procedure is not considered safe to run from multiple threads. -It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). -For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. -==== - -[[procedure_db_resampleoutdatedindexes]] -.db.resampleOutdatedIndexes() -[cols="<15s,<85"] -|=== -| Description -a| -Schedule resampling of all outdated indexes. -| Signature -m|db.resampleOutdatedIndexes() -| Mode -m|READ -// | Default roles -// m|reader, editor, publisher, architect, admin -|=== - -[NOTE] -==== -This procedure is not considered safe to run from multiple threads. -It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). -For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. -==== - - -[[procedure_db_schema_nodetypeproperties]] -.db.schema.nodeTypeProperties() -[cols="<15s,<85"] -|=== -| Description -a| -Show the derived property schema of the nodes in tabular form. -| Signature -m|db.schema.nodeTypeProperties() :: (nodeType :: STRING, nodeLabels :: LIST, propertyName :: STRING, propertyTypes :: LIST, mandatory :: BOOLEAN) -| Mode -m|READ -// | Default roles -// m|reader, editor, publisher, architect, admin -|=== - -[NOTE] -==== -This procedure is not considered safe to run from multiple threads. -It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). -For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. -==== - -[[procedure_db_schema_reltypeproperties]] -.db.schema.relTypeProperties() -[cols="<15s,<85"] -|=== -| Description -a| -Show the derived property schema of the relationships in tabular form. -| Signature -m|db.schema.relTypeProperties() :: (relType :: STRING, propertyName :: STRING, propertyTypes :: LIST, mandatory :: BOOLEAN) -| Mode -m|READ -// | Default roles -// m|reader, editor, publisher, architect, admin -|=== - -[NOTE] -==== -This procedure is not considered safe to run from multiple threads. -It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). -For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. -==== - -[[procedure_db_schema_visualization]] -.db.schema.visualization() -[cols="<15s,<85"] -|=== -| Description -a| -Visualizes the schema of the data based on available statistics. -A new node is returned for each label. -The properties represented on the node include: name (label name), indexes (list of indexes), and constraints (list of constraints). -A relationship of a given type is returned for all possible combinations of start and end nodes. -The properties represented on the relationship include: name (type name). -Note that this may include additional relationships that do not exist in the data due to the information available in the count store. -| Signature -m|db.schema.visualization() :: (nodes :: LIST, relationships :: LIST) -| Mode -m|READ -// | Default roles -// m|reader, editor, publisher, architect, admin -|=== - -[NOTE] -==== -This procedure is not considered safe to run from multiple threads. -It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). -For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. -==== - - - -[[procedure_db_stats_clear]] -[role=label--admin-only] -.db.stats.clear() -[cols="<15s,<85"] -|=== -| Description -a| -Clear collected data of a given data section. - -Valid sections are `'QUERIES'` -| Signature -m|db.stats.clear(section :: STRING) :: (section :: STRING, success :: BOOLEAN, message :: STRING) -| Mode -m|READ -// | Default roles -// m|admin -|=== - - - -[[procedure_db_stats_collect]] -[role=label--admin-only] -.db.stats.collect() -[cols="<15s,<85"] -|=== -| Description -a| -Start data collection of a given data section. - -Valid sections are `'QUERIES'` -| Signature -m|db.stats.collect(section :: STRING, config = {} :: MAP) :: (section :: STRING, success :: BOOLEAN, message :: STRING) -| Mode -m|READ -// | Default roles -// m|admin -|=== - - - -[[procedure_db_stats_retrieve]] -[role=label--admin-only] -.db.stats.retrieve() -[cols="<15s,<85"] -|=== -| Description -a| -Retrieve statistical data about the current database. - -Valid sections are `'GRAPH COUNTS', 'TOKENS', 'QUERIES', 'META'` -| Signature -m|db.stats.retrieve(section :: STRING, config = {} :: MAP) :: (section :: STRING, data :: MAP) -| Mode -m|READ -// | Default roles -// m|admin -|=== - - - -[[procedure_db_stats_retrieveallanonymized]] -[role=label--admin-only] -.db.stats.retrieveAllAnonymized() -[cols="<15s,<85"] -|=== -| Description -a| -Retrieve all available statistical data about the current database, in an anonymized form. -| Signature -m|db.stats.retrieveAllAnonymized(graphToken :: STRING, config = {} :: MAP) :: (section :: STRING, data :: MAP) -| Mode -m|READ -// | Default roles -// m|admin -|=== - - - -[[procedure_db_stats_status]] -[role=label--admin-only] -.db.stats.status() -[cols="<15s,<85"] -|=== -| Description -a| -Retrieve the status of all available collector daemons, for this database. -| Signature -m|db.stats.status() :: (section :: STRING, status :: STRING, data :: MAP) -| Mode -m|READ -// | Default roles -// m|admin -|=== - - - -[[procedure_db_stats_stop]] -[role=label--admin-only] -.db.stats.stop() -[cols="<15s,<85"] -|=== -| Description -a| -Stop data collection of a given data section. - -Valid sections are `'QUERIES'` -| Signature -m|db.stats.stop(section :: STRING) :: (section :: STRING, success :: BOOLEAN, message :: STRING) -| Mode -m|READ -// | Default roles -// m|admin -|=== - - - -[[procedure_dbms_checkconfigvalue]] -[role=label--enterprise-edition label--admin-only] -.dbms.checkConfigValue() -[cols="<15s,<85"] -|=== -| Description -a| -This procedure provides feedback about the validity of a setting value. -It does not change the setting. - -The procedure returns: - -* `valid`: if the value is valid. -A valid value for a non-dynamic setting requires a restart. -* `message`: a message describing the reason for the invalidity. -The message is empty if the value is `valid` and the setting is dynamic. - -| Signature -m|dbms.checkConfigValue(setting :: STRING, value :: STRING) :: (valid :: BOOLEAN, message :: STRING) -| Mode -m|DBMS -// | Default roles -// m|admin -|=== - -[NOTE] -==== -This procedure is not considered safe to run from multiple threads. -It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). -For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. -==== - - - -[[procedure_dbms_cluster_setAutomaticallyEnableFreeServers]] -[role=label--enterprise-edition] -.dbms.cluster.setAutomaticallyEnableFreeServers() -[cols="<15s,<85"] -|=== -| Description -a| -With this method you can set whether free servers are automatically enabled. -| Signature -m|dbms.cluster.setAutomaticallyEnableFreeServers(autoEnable :: BOOLEAN) -| Mode -m|WRITE -|=== - -[NOTE] -==== -Before Neo4j 5.23, the procedure `dbms.cluster.setAutomaticallyEnableFreeServers()` can be run only by users with the `Admin` privileges. -Since Neo4j 5.23, it can be run with the `SERVER MANAGEMENT` privilege. -It will still run with the `Admin` privilege, but that should be considered deprecated. -==== - -[[procedure_dbms_cluster_checkConnectivity]] -[role=label--enterprise-edition label--admin-only] -.dbms.cluster.checkConnectivity() -[cols="<15s,<85"] -|=== -| Description -a| -Check the connectivity of this instance to other cluster members. -Not all ports are relevant to all members. -Valid values for 'port-name' are: [CLUSTER, RAFT]. -| Signature -m|dbms.cluster.checkConnectivity(port-name = null :: STRING, server = null :: STRING) :: (serverId :: STRING, name :: STRING, address :: STRING, mode-constraint :: STRING, port-name :: STRING, port-address :: STRING, result :: STRING) -| Mode -m|DBMS -|=== - - - -[[procedure_dbms_cluster_cordonServer]] -[role=label--enterprise-edition] -.dbms.cluster.cordonServer() -[cols="<15s,<85"] -|=== -| Description -a| -Mark a server in the topology as not suitable for new allocations. -It will not force current allocations off the server. -This is useful when deallocating databases when you have multiple unavailable servers. -| Signature -m|dbms.cluster.cordonServer(server :: STRING) -| Mode -m|WRITE -|=== - -[NOTE] -==== -Before Neo4j 5.23, the procedure `dbms.cluster.cordonServer()` can be run only by users with `Admin` privileges. -Since Neo4j 5.23, it can be run with the `SERVER MANAGEMENT` privilege. -It will still run with the `Admin` privilege, but that should be considered deprecated. -==== - -[[procedure_dbms_cluster_routing_getroutingtable]] -[role=label--deprecated-5.21] -.dbms.cluster.routing.getRoutingTable() -[cols="<15s,<85"] -|=== -| Description -a| -Returns the advertised bolt capable endpoints for a given database, divided by each endpoint’s capabilities. -For example, an endpoint may serve read queries, write queries, and/or future `getRoutingTable` requests. -| Signature -m|dbms.cluster.routing.getRoutingTable(context :: MAP, database = null :: STRING) :: (ttl :: INTEGER, servers :: LIST) -| Mode -m|DBMS -// | Default roles -// m|reader, editor, publisher, architect, admin -|=== - - - -[[procedure_dbms_cluster_protocols]] -[role=label--enterprise-edition] -.dbms.cluster.protocols() -[cols="<15s,<85"] -|=== -| Description -a| -Overview of installed protocols. -| Signature -m|dbms.cluster.protocols() :: (orientation :: STRING, remoteAddress :: STRING, applicationProtocol :: STRING, applicationProtocolVersion :: INTEGER, modifierProtocols :: STRING) -| Mode -m|DBMS -// | Default roles -// m|reader, editor, publisher, architect, admin -|=== - - - -[[procedure_dbms_cluster_readreplicatoggle]] -[role=label--enterprise-edition label--admin-only label--deprecated-5.6] -.dbms.cluster.readReplicaToggle() -[cols="<15s,<85"] -|=== -| Description -a| -The toggle can pause or resume read replica (deprecated in favor of `dbms.cluster.secondaryReplicationDisable`) -| Signature -m|dbms.cluster.readReplicaToggle(databaseName :: STRING, pause :: BOOLEAN) :: (state :: STRING) -| Mode -m|DBMS -| Replaced by -a|xref:reference/procedures.adoc#procedure_dbms_cluster_secondaryreplicationdisable[`dbms.cluster.secondaryReplicationDisable()`] -// | Default roles -// m|admin -|=== - -[TIP] -==== -_What is it for?_ - -You can perform a point-in-time backup, as the backup will contain only the transactions up to the point where the transaction pulling was paused. -Follow these steps to do so: - -. Connect directly to the server hosting the database in secondary mode. (Neo4j Driver use `bolt://` or use the HTTP API). -. Pause transaction pulling for the specified database. -. Back up the database, see xref:backup-restore/online-backup.adoc[Back up an online database]. - -If connected directly to a server hosting a database in secondary mode, Data Scientists can execute analysis on a specific database that is paused, the data will not unexpectedly change while performing the analysis. -==== - -[NOTE] -==== -This procedure can only be executed on a database that runs in a secondary role on the connected server. -==== - - -.Pause transaction pulling for database `neo4j` -[source, cypher, role="noheader"] ----- -CALL dbms.cluster.readReplicaToggle("neo4j", true) ----- - - -.Resume transaction pulling for database `neo4j` -[source, cypher, role="noheader"] ----- -CALL dbms.cluster.readReplicaToggle("neo4j", false) ----- - - - -[[procedure_dbms_cluster_secondaryreplicationdisable]] -[role= label--enterprise-edition label--new-5.6 label--admin-only] -.dbms.cluster.secondaryReplicationDisable() -[cols="<15s,<85"] -|=== -| Description -a| -The toggle can pause or resume the secondary replication process. -| Signature -m|dbms.cluster.secondaryReplicationDisable(databaseName :: STRING, pause :: BOOLEAN) :: (state :: STRING) -| Mode -m|DBMS -// | Default roles -// m|admin -|=== - -[TIP] -==== -_What is it for?_ - -You can perform a point-in-time backup, as the backup will contain only the transactions up to the point where the transaction pulling was paused. -Follow these steps to do so: - -. Connect directly to the server hosting the database in secondary mode. (Neo4j Driver use `bolt://` or use the HTTP API). -. Pause transaction pulling for the specified database. -. Back up the database, see xref:backup-restore/online-backup.adoc[Back up an online database]. - -If connected directly to a server hosting a database in secondary mode, Data Scientists can execute analysis on a specific database that is paused, the data will not unexpectedly change while performing the analysis. -==== - -[NOTE] -==== -This procedure can only be executed on a database that runs in a secondary role on the connected server. -==== - -.Pause transaction pulling for database `neo4j` -[source, cypher, role="noheader"] ----- -CALL dbms.cluster.secondaryReplicationDisable("neo4j", true) ----- - -.Resume transaction pulling for database `neo4j` -[source, cypher, role="noheader"] ----- -CALL dbms.cluster.secondaryReplicationDisable("neo4j", false) ----- - - -[[procedure_dbms_cluster_uncordonServer]] -[role=label--enterprise-edition label--deprecated-5.23] -.dbms.cluster.uncordonServer() -[cols="<15s,<85"] -|=== -| Description -a| Remove the cordon on a server, returning it to 'enabled'. -| Signature -m| dbms.cluster.uncordonServer(server :: STRING) -| Mode -m|WRITE -| Replaced by -a|xref:clustering/server-syntax.adoc#server-management-syntax[`ENABLE SERVER`] -|=== - -[NOTE] -==== -Before Neo4j 5.23, the procedure `dbms.cluster.uncordonServer()` can be run only by users with `Admin` privileges. -Since Neo4j 5.23, it can be run with the `SERVER MANAGEMENT` privilege. -It will still run with the `Admin` privilege, but that should be considered deprecated. -==== - -[[procedure_dbms_cluster_switchdiscoveryserviceversion]] -[role=label--enterprise-edition label--new-5.22 label--admin-only] -.dbms.cluster.switchDiscoveryServiceVersion() -[cols="<15s,<85"] -|=== -| Description -a| Allows you to select which discovery service should be started. -Possible values are: - -* `V1_ONLY` -- it runs only discovery service v1. -* `V1_OVER_V2` -- it runs both Discovery Service V1 and Discovery Service V2, where V1 is the main service and V2 runs in the background. -* `V2_OVER_V1` -- it runs both Discovery Service V1 and Discovery Service V2, where V2 is the main service and V1 runs in the background. -* `V2_ONLY` -- it runs only discovery service v2. -| Signature -m| dbms.cluster.switchDiscoveryServiceVersion(mode :: STRING) -| Mode -m|DBMS -|=== - -[[procedure_dbms_cluster_showparalleldiscoverystate]] -[role=label--enterprise-edition label--new-5.22 label--admin-only ] -.dbms.cluster.showParallelDiscoveryState() -[cols="<15s,<85"] -|=== -| Description -a| Compare the states of Discovery service V1 and Discovery service V2. -| Signature -m| dbms.cluster.showParallelDiscoveryState() :: (mode :: STRING, stateComparison :: STRING, v1ServerCount :: STRING, v2ServerCount :: STRING) -| Mode -m|DBMS -|=== - -[[procedure_dbms_cluster_movetonextdiscoveryversion]] -[role=label--enterprise-edition label--new-5.26 label--admin-only ] -.dbms.cluster.moveToNextDiscoveryVersion() -[cols="<15s,<85"] -|=== -| Description -a| The procedure triggers a switch to the next discovery service version for all known members of the cluster (as listed in the system database and discovery). -For example, if the current member's discovery version is V1_ONLY, it will switch all members to V1_OVER_V2. In case of failure, the user must manually resolve the issue. -| Signature -m| dbms.cluster.moveToNextDiscoveryVersion() -| Mode -m|DBMS -|=== - -[[procedure_dbms_cluster_deallocateDatabaseFromServer]] -[role=label--enterprise-edition label--new-5.23] -.dbms.cluster.deallocateDatabaseFromServer() -[cols="<15s,<85"] -|=== -| Description -a| Deallocate a specific user database from a specific server. -| Signature -m| dbms.cluster.deallocateDatabaseFromServer(server :: STRING, database :: STRING, dryrun = false :: BOOLEAN) :: (database :: STRING, fromServerName :: STRING, fromServerId :: STRING, toServerName :: STRING, toServerId :: STRING, mode :: STRING) -| Mode -m|WRITE -|=== - -This procedure requires the `SERVER MANAGEMENT` privilege. - -[[procedure_dbms_cluster_deallocateDatabaseFromServers]] -[role=label--enterprise-edition label--new-5.23] -.dbms.cluster.deallocateDatabaseFromServers() -[cols="<15s,<85"] -|=== -| Description -a| Deallocate a specific user database from a list of servers. -| Signature -m| dbms.cluster.deallocateDatabaseFromServers(servers :: LIST, database :: STRING, dryrun = false :: BOOLEAN) :: (database :: STRING, fromServerName :: STRING, fromServerId :: STRING, toServerName :: STRING, toServerId :: STRING, mode :: STRING) -| Mode -m|WRITE -|=== - -This procedure requires the `SERVER MANAGEMENT` privilege. - -[[procedure_dbms_cluster_deallocateNumberOfDatabases]] -[role=label--enterprise-edition label--new-5.23] -.dbms.cluster.deallocateNumberOfDatabases() -[cols="<15s,<85"] -|=== -| Description -a| Deallocate a number of user databases from a specific server. -| Signature -m| dbms.cluster.deallocateNumberOfDatabases(server :: STRING, number :: INTEGER, dryrun = false :: BOOLEAN) :: (database :: STRING, fromServerName :: STRING, fromServerId :: STRING, toServerName :: STRING, toServerId :: STRING, mode :: STRING) -| Mode -m|WRITE -|=== - -This procedure requires the `SERVER MANAGEMENT` privilege. - -[[procedure_dbms_cluster_reallocateDatabase]] -[role=label--enterprise-edition label--new-5.23] -.dbms.cluster.reallocateDatabase() -[cols="<15s,<85"] -|=== -| Description -a| Reallocate a specific database. -| Signature -m| dbms.cluster.reallocateDatabase(database :: STRING, dryrun = false :: BOOLEAN) :: (database :: STRING, fromServerName :: STRING, fromServerId :: STRING, toServerName :: STRING, toServerId :: STRING, mode :: STRING) -| Mode -m|WRITE -|=== - -This procedure requires the `SERVER MANAGEMENT` privilege. - - -[[procedure_dbms_cluster_reallocateNumberOfDatabases]] -[role=label--enterprise-edition label--new-5.23] -.dbms.cluster.reallocateNumberOfDatabases() -[cols="<15s,<85"] -|=== -| Description -a| Reallocate a specified number of user databases. -| Signature -m| dbms.cluster.reallocateNumberOfDatabases(number :: INTEGER, dryrun = false :: BOOLEAN) :: (database :: STRING, fromServerName :: STRING, fromServerId :: STRING, toServerName :: STRING, toServerId :: STRING, mode :: STRING) -| Mode -m|WRITE -|=== - -This procedure requires the `SERVER MANAGEMENT` privilege. - -[[procedure_dbms_cluster_recreateDatabase]] -[role=label--enterprise-edition label--new-5.24] -.dbms.cluster.recreateDatabase() -[cols="<15s,<85"] -|=== -| Description -a|Recreates a database while keeping all RBAC settings. -The procedure initiates a process, which when complete, will have synchronized and started all database instances within the cluster. -| Signature -m|dbms.cluster.recreateDatabase(database :: STRING, options = {} :: MAP) -| Mode -a|WRITE -|=== - -[[procedure_dbms_cluster_statusCheck]] -[role=label--enterprise-edition label--new-5.24 label--admin-only] -.dbms.cluster.statusCheck() -[cols="<15s,<85"] -|=== -| Description -a|Performs a rafted status check. -| Signature -m|dbms.cluster.statusCheck(databases :: LIST, timeoutMilliseconds = null :: INTEGER) :: (database :: STRING, serverId :: STRING, serverName :: STRING, address :: STRING, replicationSuccessful :: BOOLEAN, memberStatus :: STRING, recognisedLeader :: STRING, recognisedLeaderTerm :: INTEGER, requester :: BOOLEAN, error :: STRING) -| Mode -a|DBMS -|=== - -[[procedure_dbms_components]] -.dbms.components() -[cols="<15s,<85"] -|=== -| Description -a| -List DBMS components and their versions. -| Signature -m|dbms.components() :: (name :: STRING, versions :: LIST, edition :: STRING) -| Mode -m|DBMS -// | Default roles -// m|reader, editor, publisher, architect, admin -|=== - - -[[procedure_dbms_info]] -.dbms.info() -[cols="<15s,<85"] -|=== -| Description -a| -Provides information regarding the DBMS. -| Signature -m|dbms.info() :: (id :: STRING, name :: STRING, creationDate :: STRING) -| Mode -m|DBMS -// | Default roles -// m|reader, editor, publisher, architect, admin -|=== - - -[[procedure_dbms_killconnection]] -.dbms.killConnection() -[cols="<15s,<85"] -|=== -| Description -a| -Kill network connection with the given connection id. -| Signature -m|dbms.killConnection(id :: STRING) :: (connectionId :: STRING, username :: STRING, message :: STRING) -| Mode -m|DBMS -// | Default roles -// m|reader, editor, publisher, architect, admin -|=== - - -[[procedure_dbms_killconnections]] -.dbms.killConnections() -[cols="<15s,<85"] -|=== -| Description -a| -Kill all network connections with the given connection ids. -| Signature -m|dbms.killConnections(ids :: LIST) :: (connectionId :: STRING, username :: STRING, message :: STRING) -| Mode -m|DBMS -// | Default roles -// m|reader, editor, publisher, architect, admin -|=== - - - -[[procedure_dbms_listactivelocks]] -[role=label--enterprise-edition] -.dbms.listActiveLocks() -[cols="<15s,<85"] -|=== -| Description -a| -List the active lock requests granted for the transaction executing the query with the given query id. -| Signature -m|dbms.listActiveLocks(queryId :: STRING) :: (mode :: STRING, resourceType :: STRING, resourceId :: INTEGER) -| Mode -m|DBMS -// | Default roles -// m|reader, editor, publisher, architect, admin -|=== - -[NOTE] -==== -This procedure is not considered safe to run from multiple threads. -It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). -For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. -==== - - -[[procedure_dbms_listcapabilities]] -.dbms.listCapabilities() -[cols="<15s,<85"] -|=== -| Description -a| -List capabilities. -| Signature -m|dbms.listCapabilities() :: (name :: STRING, description :: STRING, value :: ANY) -| Mode -m|DBMS -|=== - - - -[[procedure_dbms_listconfig]] -[role=label--admin-only] -.dbms.listConfig() -[cols="<15s,<85"] -|=== -| Description -a| -List the currently active configuration settings of Neo4j. -| Signature -m|dbms.listConfig(searchString = :: STRING) :: (name :: STRING, description :: STRING, value :: STRING, dynamic :: BOOLEAN, defaultValue :: STRING, startupValue :: STRING, explicitlySet :: BOOLEAN, validValues :: STRING) -| Mode -m|DBMS -// | Default roles -// m|admin -|=== - -[[procedure_dbms_listconnections]] -.dbms.listConnections() -[cols="<15s,<85"] -|=== -| Description -a| -List all accepted network connections at this instance that are visible to the user. -| Signature -m|dbms.listConnections() :: (connectionId :: STRING, connectTime :: STRING, connector :: STRING, username :: STRING, userAgent :: STRING, serverAddress :: STRING, clientAddress :: STRING) -| Mode -m|DBMS -// | Default roles -// m|reader, editor, publisher, architect, admin -|=== - - - -[[procedure_dbms_listpools]] -[role=label--enterprise-edition] -.dbms.listPools() -[cols="<15s,<85"] -|=== -| Description -a| -List all memory pools, including sub pools, currently registered at this instance that are visible to the user. -| Signature -m|dbms.listPools() :: (pool :: STRING, databaseName :: STRING, heapMemoryUsed :: STRING, heapMemoryUsedBytes :: STRING, nativeMemoryUsed :: STRING, nativeMemoryUsedBytes :: STRING, freeMemory :: STRING, freeMemoryBytes :: STRING, totalPoolMemory :: STRING, totalPoolMemoryBytes :: STRING) -| Mode -m|DBMS -// | Default roles -// m|reader, editor, publisher, architect, admin -|=== - -[NOTE] -==== -This procedure is not considered safe to run from multiple threads. -It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). -For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. -==== - - - -[[procedure_dbms_quarantineDatabase]] -[role=label--enterprise-edition label--admin-only] -.dbms.quarantineDatabase() -[cols="<15s,<85"] -|=== -| Description -a| -Place a database into quarantine or remove it from it. -| Signature -m|dbms.quarantineDatabase(databaseName :: STRING, setStatus :: BOOLEAN, reason = No reason given :: STRING) :: (databaseName :: STRING, quarantined :: BOOLEAN, result :: STRING) -| Mode -m|DBMS -// | Default roles -// m|admin -|=== - -[[procedure_dbms_queryjmx]] -.dbms.queryJmx() -[cols="<15s,<85"] -|=== -| Description -a| -Query JMX management data by domain and name. For instance, use `:` to find all JMX beans. -| Signature -m|dbms.queryJmx(query :: STRING) :: (name :: STRING, description :: STRING, attributes :: MAP) -| Mode -m|DBMS -// | Default roles -// m|reader, editor, publisher, architect, admin -|=== - - -[[procedure_dbms_routing_getroutingtable]] -.dbms.routing.getRoutingTable() -[cols="<15s,<85"] -|=== -| Description -a| -Returns the advertised bolt capable endpoints for a given database, divided by each endpoint’s capabilities. -For example an endpoint may serve read queries, write queries and/or future `getRoutingTable` requests. -| Signature -m|dbms.routing.getRoutingTable(context :: MAP, database = null :: STRING) :: (ttl :: INTEGER, servers :: LIST) -| Mode -m|DBMS -// | Default roles -// m|reader, editor, publisher, architect, admin -|=== - - - -[[procedure_dbms_setDatabaseAllocator]] -[role=label--enterprise-edition label--admin-only label--deprecated-5.23] -.dbms.setDatabaseAllocator() -[cols="<15s,<85"] -|=== -| Description -a| -With this method, you can set the allocator that is responsible for selecting servers for hosting databases. -| Signature -m|dbms.setDatabaseAllocator(allocator :: STRING) -| Mode -a|WRITE -|=== - - - -[[procedure_dbms_setDefaultAllocationNumbers]] -[role=label--enterprise-edition label--admin-only] -.dbms.setDefaultAllocationNumbers() -[cols="<15s,<85"] -|=== -| Description -a| With this method you can set the default number of primaries and secondaries. -| Signature -m|dbms.setDefaultAllocationNumbers(primaries :: INTEGER, secondaries :: INTEGER) -| Mode -a|WRITE -|=== - - - -[[procedure_dbms_setDefaultDatabase]] -[role=label--enterprise-edition label--admin-only] -.dbms.setDefaultDatabase() -[cols="<15s,<85"] -|=== -| Description -a| Change the default database to the provided value. -The database must exist and the old default database must be stopped. -| Signature -m|dbms.setDefaultDatabase(databaseName :: STRING) :: (result :: STRING) -| Mode -a|WRITE -|=== - - -[[procedure_dbms_scheduler_failedjobs]] -[role=label--enterprise-edition label--admin-only] -.dbms.scheduler.failedJobs() -[cols="<15s,<85"] -|=== -| Description -a| -List failed job runs. There is a limit for amount of historical data. -| Signature -m|dbms.scheduler.failedJobs() :: (jobId :: STRING, group :: STRING, database :: STRING, submitter :: STRING, description :: STRING, type :: STRING, submitted :: STRING, executionStart :: STRING, failureTime :: STRING, failureDescription :: STRING) -| Mode -m|DBMS -// | Default roles -// m|admin -|=== - -[NOTE] -==== -This procedure is not considered safe to run from multiple threads. -It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). -For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. -==== - - -[[procedure_dbms_scheduler_groups]] -[role=label--enterprise-edition label--admin-only] -.dbms.scheduler.groups() -[cols="<15s,<85"] -|=== -| Description -a| -List the job groups that are active in the database internal job scheduler. -| Signature -m|dbms.scheduler.groups() :: (group :: STRING, threads :: INTEGER) -| Mode -m|DBMS -// | Default roles -// m|admin -|=== - -[NOTE] -==== -This procedure is not considered safe to run from multiple threads. -It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). -For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. -==== - - - -[[procedure_dbms_scheduler_jobs]] -[role=label--enterprise-edition label--admin-only] -.dbms.scheduler.jobs() -[cols="<15s,<85"] -|=== -| Description -a| -List all jobs that are active in the database internal job scheduler. -| Signature -m|dbms.scheduler.jobs() :: (jobId :: STRING, group :: STRING, submitted :: STRING, database :: STRING, submitter :: STRING, description :: STRING, type :: STRING, scheduledAt :: STRING, period :: STRING, state :: STRING, currentStateDescription :: STRING) -| Mode -m|DBMS -// | Default roles -// m|admin -|=== - -[NOTE] -==== -This procedure is not considered safe to run from multiple threads. -It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). -For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. -==== - - - -[[procedure_dbms_security_clearauthcache]] -[role=label--enterprise-edition label--admin-only] -.dbms.security.clearAuthCache() -[cols="<15s,<85"] -|=== -| Description -a| -Clears authentication and authorization cache. -| Signature -m|dbms.security.clearAuthCache() -| Mode -m|DBMS -// | Default roles -// m|admin -|=== - - - -[[procedure_dbms_setconfigvalue]] -[role=label--enterprise-edition label--admin-only label--not-on-aura] -.dbms.setConfigValue() -[cols="<15s,<85"] -|=== -| Description -a| -Update a given setting value. -Passing an empty value results in removing the configured value and falling back to the default value. -Changes do not persist and are lost if the server is restarted. -In a clustered environment, `dbms.setConfigValue` affects only the cluster member it is run against. -| Signature -m|dbms.setConfigValue(setting :: STRING, value :: STRING) -| Mode -m|DBMS -// | Default roles -// m|admin -|=== - - -[[procedure_dbms_showcurrentuser]] -.dbms.showCurrentUser() -[cols="<15s,<85"] -|=== -| Description -a| -Show the current user. -| Signature -m|dbms.showCurrentUser() :: (username :: STRING, roles :: LIST, flags :: LIST) -| Mode -m|DBMS -// | Default roles -// m|reader, editor, publisher, architect, admin -|=== - - - -[[procedure_dbms_showTopologyGraphConfig]] -[role=label--enterprise-edition label--admin-only] -.dbms.showTopologyGraphConfig() -[cols="<15s,<85"] -|=== -| Description -a| With this method the configuration of the Topology Graph can be displayed. -| Signature -m|dbms.showTopologyGraphConfig() :: (allocator :: STRING, defaultPrimariesCount :: INTEGER, defaultSecondariesCount :: INTEGER, defaultDatabase :: STRING, autoEnableFreeServers :: BOOLEAN) -| Mode -m|READ -|=== - - - -[[procedure_dbms_upgrade]] -[role=label--admin-only label--deprecated-5.9] -.dbms.upgrade() -[cols="<15s,<85"] -|=== -| Description -a| -Upgrade the system database schema if it is not the current schema. -| Signature -m|dbms.upgrade() :: (status :: STRING, upgradeResult :: STRING) -| Mode -m|WRITE -// | Default roles -// m|admin -|=== - -[NOTE] -==== -This procedure is not considered safe to run from multiple threads. -It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). -For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. -==== - - - -[[procedure_dbms_upgradestatus]] -[role=label--admin-only label--deprecated-5.9] -.dbms.upgradeStatus() -[cols="<15s,<85"] -|=== -| Description -a| -Report the current status of the system database sub-graph schema. -| Signature -m|dbms.upgradeStatus() :: (status :: STRING, description :: STRING, resolution :: STRING) -| Mode -m|READ -// | Default roles -// m|admin -|=== - -[NOTE] -==== -This procedure is not considered safe to run from multiple threads. -It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). -For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/planning-and-tuning/runtimes/concepts#runtimes-parallel-runtime[Cypher Manual -> Parallel runtime]. -==== - -[[procedure_genai_vector_listEncodingProviders]] -[role=label--new-5.19] -.genai.vector.listEncodingProviders() -[cols="<15s,<85"] -|=== -| Description -a|Lists the available vector embedding providers. -| Signature -m|genai.vector.listEncodingProviders() :: (name :: STRING, requiredConfigType :: STRING, optionalConfigType :: STRING, defaultConfig :: MAP) -| Mode -m|DEFAULT -|=== - -[[procedure_genai_vector_encodeBatch]] -[role=label--new-5.17] -.genai.vector.encodeBatch() -[cols="<15s,<85"] -|=== -| Description -a| -Encode a given batch of resources as vectors using the named provider. -For each element in the given resource LIST this returns: - -* the corresponding 'index' within that LIST, -* the original 'resource' element itself, -* and the encoded 'vector' -| Signature -m|genai.vector.encodeBatch(resources :: LIST, provider :: STRING, configuration = {} :: ANY) :: (index :: INTEGER, resource :: STRING, vector :: ANY) -| Mode -m|DEFAULT -|=== - -For more information, see the link:{neo4j-docs-base-uri}/cypher-manual/{page-version}/genai-integrations/#multiple-embeddings[Cypher Manual -> Generating a batch of embeddings]. - -.Known issue -[NOTE] -==== -Procedure signatures from `SHOW PROCEDURES` renders the vector arguments with a type of `ANY` rather than the semantically correct type of `LIST`. -The types are still enforced as `LIST`. -==== - -[[procedure_tx_getmetadata]] -.tx.getMetaData() -[cols="<15s,<85"] -|=== -| Description -a| -Provides attached transaction metadata. -| Signature -m|tx.getMetaData() :: (metadata :: MAP) -| Mode -m|DBMS -// | Default roles -// m|reader, editor, publisher, architect, admin -|=== - - -[[procedure_tx_setmetadata]] -.tx.setMetaData() -[cols="<15s,<85"] -|=== -| Description -a| -Attaches a map of data to the transaction. -The data will be printed when listing queries, and inserted into the query log. -| Signature -m|tx.setMetaData(data :: MAP) -| Mode -m|DBMS -// | Default roles -// m|reader, editor, publisher, architect, admin -|===