SHOW PROCEDURES

可以使用 SHOW PROCEDURES 列出可用的过程。

命令 SHOW PROCEDURES 仅返回默认输出。若要获得完整输出,请使用可选的 YIELD 命令。完整输出:SHOW PROCEDURES YIELD *

此命令将生成一个包含以下列的表格

表 1. 列出过程输出
描述 类型

name

过程的名称。 默认输出

STRING

description

过程描述。 默认输出

STRING

mode

过程模式,例如 READWRITE默认输出

STRING

worksOnSystem

该过程是否可以在 system 数据库上运行。 默认输出

BOOLEAN

signature

过程的签名。

STRING

argumentDescription

过程参数列表,作为包含 nametypedefaultisDeprecateddescription 的字符串和布尔值的映射列表。

LIST<MAP>

returnDescription

过程返回的值列表,作为包含 nametypeisDeprecateddescription 的字符串和布尔值的映射列表。

LIST<MAP>

admin

如果此过程是管理员过程,则为 true

BOOLEAN

rolesExecution

允许执行此过程的角色列表。如果没有 SHOW ROLE 权限,则为 null

LIST<STRING>

rolesBoostedExecution

允许在执行此过程时使用增强模式的角色列表。如果没有 SHOW ROLE 权限,则为 null

LIST<STRING>

isDeprecated

该过程是否已弃用。 在 5.9 中引入

BOOLEAN

deprecatedBy

在弃用情况下要使用的替换过程;否则为 null在 5.21 中引入

STRING

option

额外输出的映射,例如,如果该过程已弃用。

MAP

过程的弃用信息在 isDeprecatedoption 列中返回。

语法

有关语法描述的更多详细信息,请参阅 此处

列出所有过程
SHOW PROCEDURE[S]
[YIELD { * | field[, ...] } [ORDER BY field[, ...]] [SKIP n] [LIMIT n]]
[WHERE expression]
[RETURN field[, ...] [ORDER BY field[, ...]] [SKIP n] [LIMIT n]]

使用 RETURN 子句时,YIELD 子句是必需的,不能省略。

列出当前用户可以执行的过程
SHOW PROCEDURE[S] EXECUTABLE [BY CURRENT USER]
[YIELD { * | field[, ...] } [ORDER BY field[, ...]] [SKIP n] [LIMIT n]]
[WHERE expression]
[RETURN field[, ...] [ORDER BY field[, ...]] [SKIP n] [LIMIT n]]

使用 RETURN 子句时,YIELD 子句是必需的,不能省略。

列出指定用户可以执行的过程
SHOW PROCEDURE[S] EXECUTABLE BY username
[YIELD { * | field[, ...] } [ORDER BY field[, ...]] [SKIP n] [LIMIT n]]
[WHERE expression]
[RETURN field[, ...] [ORDER BY field[, ...]] [SKIP n] [LIMIT n]]

需要 SHOW USER 权限。此命令不能用于 LDAP 用户。

使用 RETURN 子句时,YIELD 子句是必需的,不能省略。

列出所有过程

要使用默认输出列列出所有可用过程,可以使用 SHOW PROCEDURES 命令。如果需要所有列,请使用 SHOW PROCEDURES YIELD *

查询
SHOW PROCEDURES
表 2. 结果
name description mode worksOnSystem

"cdc.current"

"返回可用于从其流式传输更改的当前更改标识符。"

"READ"

false

"cdc.earliest"

"返回可用于从其流式传输更改的最早更改标识符。"

"READ"

false

"cdc.query"

"查询由提供的更改标识符观察到的更改。"

"READ"

false

"db.awaitIndex"

"等待索引上线(例如:CALL db.awaitIndex("MyIndex", 300)。"

"READ"

true

"db.awaitIndexes"

"等待所有索引上线(例如:CALL db.awaitIndexes(300)。"

"READ"

true

"db.checkpoint"

"启动并等待新的检查点,或等待任何正在进行的检查点完成。请注意,这会暂时禁用 dbms.checkpoint.iops.limit 设置,以使检查点更快地完成。这可能会导致事务吞吐量略微下降,因为 IO 负载增加。"

"DBMS"

true

"db.clearQueryCaches"

"清除所有查询缓存。"

"DBMS"

true

"db.createLabel"

"创建标签"

"WRITE"

false

"db.createProperty"

"创建属性"

"WRITE"

false

"db.createRelationshipType"

"创建关系类型"

"WRITE"

false

"db.index.fulltext.awaitEventuallyConsistentIndexRefresh"

"等待最近提交的事务的更新应用到任何最终一致的全文索引。"

"READ"

true

"db.index.fulltext.listAvailableAnalyzers"

"列出可用于配置全文索引的可用分析器。"

"READ"

true

"db.index.fulltext.queryNodes"

"查询给定的全文索引。返回匹配的节点及其 Lucene 查询得分,按得分排序。选项映射的有效键包括:'skip' 以跳过前 N 个结果;'limit' 以限制返回的结果数量;'analyzer' 以将指定的分析器用作此查询的搜索分析器。"

"READ"

true

"db.index.fulltext.queryRelationships"

"查询给定的全文索引。返回匹配的关系及其 Lucene 查询得分,按得分排序。选项映射的有效键包括:'skip' 以跳过前 N 个结果;'limit' 以限制返回的结果数量;'analyzer' 以将指定的分析器用作此查询的搜索分析器。"

"READ"

true

"db.info"

"提供有关数据库的信息。"

"READ"

true

"db.labels"

"列出数据库中所有可用的标签。"

"READ"

true

"db.listLocks"

"列出数据库中的所有锁。"

"DBMS"

true

"db.ping"

"此过程可由客户端工具使用,以测试它们是否正确连接到数据库。该过程在所有数据库中都可用,并且始终返回 true。通过无法调用此过程,可以检测到故障连接。"

"READ"

true

行数:15

上表仅显示查询的前 15 个结果。要获取 Neo4j 中所有内置过程的完整列表,请访问 操作手册 → 过程列表

列出带输出列过滤器的过程

列出的程序可以通过多种方式进行过滤,其中一种方式是使用 WHERE 子句。例如,返回所有 admin 程序的名称

查询
SHOW PROCEDURES YIELD name, admin
WHERE admin
表 3. 结果
name admin

"db.clearQueryCaches"

true

"db.listLocks"

true

"db.prepareForReplanning"

true

"db.stats.clear"

true

"db.stats.collect"

true

"db.stats.retrieve"

true

"db.stats.retrieveAllAnonymized"

true

"db.stats.status"

true

"db.stats.stop"

true

"dbms.checkConfigValue"

true

"dbms.cluster.checkConnectivity"

true

"dbms.cluster.cordonServer"

true

"dbms.cluster.readReplicaToggle"

true

"dbms.cluster.uncordonServer"

true

"dbms.listConfig"

true

行数:15

以上表格仅显示查询结果的前 15 条。要查看 Neo4j 中所有需要 admin 权限的程序的完整列表,请访问 /docs/operations-manual/5/reference/procedures#/#_list_of_procedures[操作手册 → 程序列表]。

使用其他过滤条件列出程序

列出的程序也可以通过用户是否可以执行它们来过滤。这种过滤只能通过 EXECUTABLE 子句进行,而不能通过 WHERE 子句进行。这是因为使用的是用户的权限,而不是对可用输出列进行过滤。

使用 EXECUTABLE 子句有两种选择。第一个选项是过滤当前用户

查询
SHOW PROCEDURES EXECUTABLE BY CURRENT USER YIELD *
表 4. 结果
name description rolesExecution rolesBoostedExecution …​

"db.awaitIndex"

"等待索引上线(例如:CALL db.awaitIndex("MyIndex", 300)。"

<null>

<null>

"db.awaitIndexes"

"等待所有索引上线(例如:CALL db.awaitIndexes(300)。"

<null>

<null>

"db.checkpoint"

"启动并等待新的检查点,或等待任何正在进行的检查点完成。请注意,这会暂时禁用 dbms.checkpoint.iops.limit 设置,以使检查点更快地完成。这可能会导致事务吞吐量略微下降,因为 IO 负载增加。"

<null>

<null>

"db.clearQueryCaches"

"清除所有查询缓存。"

<null>

<null>

"db.createLabel"

"创建标签"

<null>

<null>

"db.createProperty"

"创建属性"

<null>

<null>

"db.createRelationshipType"

"创建关系类型"

<null>

<null>

"db.index.fulltext.awaitEventuallyConsistentIndexRefresh"

"等待最近提交的事务的更新应用到任何最终一致的全文索引。"

<null>

<null>

"db.index.fulltext.listAvailableAnalyzers"

"列出可用于配置全文索引的可用分析器。"

<null>

<null>

"db.index.fulltext.queryNodes"

"查询给定的全文索引。返回匹配的节点及其 Lucene 查询得分,按得分排序。选项映射的有效键包括:'skip' 以跳过前 N 个结果;'limit' 以限制返回的结果数量;'analyzer' 以将指定的分析器用作此查询的搜索分析器。"

<null>

<null>

"db.index.fulltext.queryRelationships"

"查询给定的全文索引。返回匹配的关系及其 Lucene 查询得分,按得分排序。选项映射的有效键包括:'skip' 以跳过前 N 个结果;'limit' 以限制返回的结果数量;'analyzer' 以将指定的分析器用作此查询的搜索分析器。"

<null>

<null>

"db.info"

"提供有关数据库的信息。"

<null>

<null>

"db.labels"

"列出数据库中所有可用的标签。"

<null>

<null>

"db.listLocks"

"列出数据库中的所有锁。"

<null>

<null>

"db.ping"

"此过程可由客户端工具使用,以测试它们是否正确连接到数据库。该过程在所有数据库中都可用,并且始终返回 true。通过无法调用此过程,可以检测到故障连接。"

<null>

<null>

行数:15

以上表格仅显示查询结果的前 15 条。请注意,由于缺少 SHOW ROLE 权限,两个 roles 列为空。还要注意,以下列不在表格中

  • mode

  • worksOnSystem

  • signature

  • argumentDescription

  • returnDescription

  • admin

  • isDeprecated

  • deprecatedBy

  • options

使用 EXECUTABLE 子句的第二个选项是将列表过滤为仅包含特定用户可以执行的程序。以下示例显示了用户 jake 可用的程序,该用户已被数据库的 admin 授予 EXECUTE PROCEDURE dbms.* 权限。(有关 DBMS EXECUTE 权限管理的更多信息,请参见 操作手册 → DBMS EXECUTE 权限)。

查询
SHOW PROCEDURES EXECUTABLE BY jake
表 5. 结果
name description mode worksOnSystem

"dbms.cluster.protocols"

"已安装协议的概述。"

"DBMS"

true

"dbms.cluster.routing.getRoutingTable"

"返回给定数据库的广告的 bolt 兼容端点,按每个端点的功能划分。例如,端点可以提供读取查询、写入查询和/或未来的 getRoutingTable 请求。"

"DBMS"

true

"dbms.components"

"列出 DBMS 组件及其版本。"

"DBMS"

true

"dbms.info"

"提供有关 DBMS 的信息。"

"DBMS"

true

"dbms.killConnection

"使用给定的连接 ID 终止网络连接。"

"DBMS"

false

"dbms.killConnections"

"使用给定的连接 ID 终止所有网络连接。"

"DBMS"

true

"dbms.listActiveLocks"

"列出为使用给定查询 ID 执行查询的事务授予的活动锁定请求。"

"DBMS"

true

"dbms.listCapabilities"

"列出功能"

"DBMS"

true

"dbms.listConnections"

"列出此实例处所有接受的网络连接,这些连接对用户可见。"

"DBMS"

true

"dbms.listPools"

"列出此实例处当前注册的所有内存池(包括子池),这些池对用户可见。"

"DBMS"

true

"dbms.queryJmx"

"按域和名称查询 JMX 管理数据。例如,":""

"DBMS"

true

"dbms.routing.getRoutingTable"

"返回给定数据库的广告的 bolt 兼容端点,按每个端点的功能划分。例如,端点可以提供读取查询、写入查询和/或未来的 getRoutingTable 请求。"

"DBMS"

true

"dbms.showCurrentUser"

"显示当前用户。"

"DBMS"

true

行数:13