EXTDIRECTIVES 会话环境选项

在当前的会话期间,您可使用 SET ENVIRONMENT 语句的 EXTDIRECTIVES 环境选项来启用或禁用外部的优化器伪指令。

EXTDIRECTIVES 会话环境选项有此语法:

EXTDIRECTIVES 环境选项

用法

您为 EXTDIRECTIVES 会话环境选项指定的设置可覆盖在 ONCONFIG 文件中的 IFX_EXTDIRECTIVES 环境变量和 EXT_DIRECTIVES 配置参数的设置,用于启用或禁用当前会话中的外部优化器伪指令。不影响其他用户会话。

DEFAULT 设置

如果在同一会话中,您(或 sysdbopen 例程)稍早使用了 SET ENVIRONMENT EXTDIRECTIVES 语句来启用或禁用外部的优化器伪指令,则 SET ENVIRONMENT EXTDIRECTIVES DEFAULT 语句将数据库服务器的外部优化器伪指令行为恢复到它的原始状态。

在会话的 DEFAULT 设置生效之后,外部的伪指令是否影响查询执行优化器依赖于 EXT_DIRECTIVES 配置参数和客户端侧 IFX_EXTDIRECTIVES 环境变量的设置。
  • 当 SET ENVIRONMENT 的 EXTDIRECTIVES 选项设置为 DEFAULT,且同时启用 EXT_DIRECTIVES 与 IFX_EXTDIRECTIVES时,在当前的会话期间启用外部的优化器伪指令。

  • 当 EXTDIRECTIVES 设置为 DEFAULT,且同时禁用 EXT_DIRECTIVES 和 IFX_EXTDIRECTIVES 时,在当前的会话期间禁用外部的优化器伪指令。

  • 如果 EXTDIRECTIVES 设置为 DEFAULT,但将 EXT_DIRECTIVES 与 IFX_EXTDIRECTIVES 设置为冲突的值,比如启用一个,但禁用另一个,则数据库服务器的行为依赖于 EXT_DIRECTIVE 配置参数的设置:
    • 如果 EXTDIRECTIVES 设置为 0(或如果它没有设置),则在缺省情况下,即使启用 IFX_EXTDIRECTIVES,也禁用外部的伪指令。
    • 如果 EXTDIRECTIVES 设置为 1,则可启用外部的指令,如果设置启用 IFX_EXTDIRECTIVES 的话。(但如果 IFX_EXTDIRECTIVES 设置为禁用的,则禁用外部的伪指令。)
    • 如果 EXTDIRECTIVES 设置为 2,则即使 IFX_EXTDIRECTIVES 设置为禁用的,也启用外部的伪指令。

如果 SET ENVIRONMENT 的 EXTDIRECTIVES 选项设置为 DEFAULT,但 EXT_DIRECTIVES 配置参数与客户端侧 IFX_EXTDIRECTIVES 环境变量设置为冲突的值,比如启用一个,而禁用另一个,则数据库服务器的行为依赖于 EXT_DIRECTIVE 设置:

启用或禁用外部的伪指令的示例

下列语句启用在当前会话中执行的后续查询中的外部伪指令:
SET ENVIRONMENT EXTDIRECTIVES "1";
下列语句有相同的作用:
SET ENVIRONMENT EXTDIRECTIVES ON;
在两种情况下,数据库服务器都不理会 EXT_DIRECTIVES 和 IFX_EXTDIRECTIVES 的设置,但那些设置会影响其他并发会话中的查询。
下列两个语句都禁用在当前的会话中后续查询的外部伪指令:
SET ENVIRONMENT EXTDIRECTIVES OFF;
          
          SET ENVIRONMENT EXTDIRECTIVES "0";
下列语句允许通过 EXT_DIRECTIVES 和 IFX_EXTDIRECTIVES 的设置来决定对当前会话的后续查询中外部伪指令的处理,如本主题中稍早描述的那样:
SET ENVIRONMENT EXTDIRECTIVES DEFAULT;

要获取关于如何定义外部的优化器伪指令以及如何将它们保存在系统目录的 sysdirectives 表中的信息,请参阅 SAVE EXTERNAL DIRECTIVES 语句 的描述。要获取更多关于 EXT_DIRECTIVES 配置参数以及它的设置的作用,请参阅“GBase 8s 管理员参考”。要获取更多关于 IFX_EXTDIRECTIVES 环境变量的信息,请参阅 GBase 8s SQL 参考指南,其中还描述 EXT_DIRECTIVES 配置参数与 IFX_EXTDIRECTIVES 环境变量二者的设置如何能确定对于查询优化器是启用还是禁用对外部伪指令的访问。