在当前的会话期间,您可使用 SET ENVIRONMENT 语句的 EXTDIRECTIVES 环境选项来启用或禁用外部的优化器伪指令。
EXTDIRECTIVES 会话环境选项有此语法:
您为 EXTDIRECTIVES 会话环境选项指定的设置可覆盖在 ONCONFIG 文件中的 IFX_EXTDIRECTIVES 环境变量和 EXT_DIRECTIVES 配置参数的设置,用于启用或禁用当前会话中的外部优化器伪指令。不影响其他用户会话。
在当前的会话期间,要禁用外部的优化器伪指令,请指定 '0'、off 或 OFF 作为 EXTDIRECTIVES 的设置。在当前的会话期间,此设置覆盖在客户端侧 IFX_EXTDIRECTIVES 环境变量中或 EXT_DIRECTIVES 配置参数中设置的任何值。
在当前的会话期间,要启用外部的优化器伪指令,请指定 '1'、on 或 ON 作为 EXTDIRECTIVES 的设置。在当前的会话期间,此设置覆盖在客户端侧 IFX_EXTDIRECTIVES 环境变量中或在 EXT_DIRECTIVES 配置参数中设置的任何值。
在当前的会话期间,要启用在 EXT_DIRECTIVES 配置参数中和客户端侧 IFX_EXTDIRECTIVES 环境变量中指定的缺省值,请指定 DEFAULT 作为 SET ENVIRONMENT EXTDIRECTIVES 的值。
如果在同一会话中,您(或 sysdbopen 例程)稍早使用了 SET ENVIRONMENT EXTDIRECTIVES 语句来启用或禁用外部的优化器伪指令,则 SET ENVIRONMENT EXTDIRECTIVES DEFAULT 语句将数据库服务器的外部优化器伪指令行为恢复到它的原始状态。
当 SET ENVIRONMENT 的 EXTDIRECTIVES 选项设置为 DEFAULT,且同时启用 EXT_DIRECTIVES 与 IFX_EXTDIRECTIVES时,在当前的会话期间启用外部的优化器伪指令。
当 EXTDIRECTIVES 设置为 DEFAULT,且同时禁用 EXT_DIRECTIVES 和 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";
SET ENVIRONMENT EXTDIRECTIVES DEFAULT;
要获取关于如何定义外部的优化器伪指令以及如何将它们保存在系统目录的 sysdirectives 表中的信息,请参阅 SAVE EXTERNAL DIRECTIVES 语句 的描述。要获取更多关于 EXT_DIRECTIVES 配置参数以及它的设置的作用,请参阅“GBase 8s 管理员参考”。要获取更多关于 IFX_EXTDIRECTIVES 环境变量的信息,请参阅 GBase 8s SQL 参考指南,其中还描述 EXT_DIRECTIVES 配置参数与 IFX_EXTDIRECTIVES 环境变量二者的设置如何能确定对于查询优化器是启用还是禁用对外部伪指令的访问。