返回首页

gbase数据、南大通用产品文档:GBase8sifx_getenv() 函数

更新日期:2024年09月11日

ifx_getenv() 函数检索当前环境变量的值。
语法
char *ifx_getenv( varname );
const char *varname;
varname
指向包含环境变量的名称的缓冲区的指针。

用法
ifx_getenv() 函数以下列顺序来搜索环境变量:

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 711 -
应用程序以 ifx_putenv() 函数或直接地修改了或定义了的 GBase 8s 环境变量的表
(InetLogin 结构)
用户以 Setnet32 实用程序已在 Registry 中定义了的 GBase 8s 环境变量的表
从 C 运行时刻环境变量检索的非 GBase 8s 环境变量
定义了的 GBase 8s 环境变量的缺省值的表
ifx_getenv() 函数不区分大小写。您以大写或小写指定环境变量的名称。
ifx_getenv() 仅对 C 运行时刻库可访问的数据结构进行操作,而不对操作系统为进程
创建的环境段进行操作。因此,使用 ifx_getenv() 的程序可能检索无效的信息。
ifx_putenv() 和 ifx_getenv() 函数使用全局变量 _environ 指向的环境的副本来访问
该环境。
下列程序片段使用 ifx_getenv() 来检索 GBASEDBTDIR 环境变量的当前值:
char GbasedbtDirVal[100];

/* Get current value of GBASEDBTDIR */
GbasedbtDirVal = ifx_getenv( "gbasedbtdir" );
/* Check if GBASEDBTDIR is set */
If( GbasedbtDirVal != NULL )
printf( "Current GBASEDBTDIR value is %\n", GbasedbtDirVal );
返回代码
ifx_getenv() 函数返回指向包含 varname 的 GBase 8s 环境表条目的指针,或返回
NULL,如果该函数在表中未找到 varname 的话。
限制:
请不要使用返回的指针来修改环境变量的值。
请改为使用 ifx_putenv() 函数。
如果 ifx_getenv() 在 GBase 8s 环境表中未找到 "varname" ,则返回值为 NULL。

取值:[0|1]
默认值:0
说明:镜像表,如果某个表在本地VC 没有可用节点,是否自动访问镜像表。默认

GBase 8a MPP Cluster 参数手册
文档版本2022-06-07
南大通用数据技术股份有限公司
99
为0,不可以。
修改方式:可使用set 语句修改值。适用于session、global 范围均可。

在事务处理期间,使用 SET DATASKIP 语句来控制数据库服务器是否跳过不可
用的 dbspace。
此语句是对 SQL 的 ANSI/ISO 标准的扩展。
语法

元素
描述
限制
语法
dbspace 跳过的 dbspace 的名称 在执行时刻必须存在
标识符
用法
SET DATASKIP 允许您在运行时重置 Dataskip 特性,在处理事务的过程中,其
控制数据库服务器是否跳过不可用的 dbspace(例如,由于介质失败)。
在 GBase 8s ESQL/C 中,如果跳过 dbspace,则将警告标志
sqlca.sqlwarn.sqlwarn6 设置为 W。另请参阅 GBase 8s ESQL/C 程序员手册。
在 GBase 8s 中,此语句仅适用于那些跨 dbspace 或分区分片的表。它既不适用
于 blobspace 也不适用于 sbspac。
指定不包括 dbspace 的 SET DATASKIP ON,指导数据库服务器跳过在不可用的
分片列表中的任何 dbspace。您可使用 onstat -d 或 -D 选项来确定 dbspace 是否
关闭。
当您指定 SET DATASKIP ON dbspace 时,你正在指导数据库服务器跳过指定的
dbspace,如果它是不可用的话。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 985
如果您指定 SET DATASKIP OFF,则禁用 Dataskip 特性。如果您指定 SET
DATASKIP DEFAULT,则数据库服务器使用在 ONCONFIG 文件中 DATASKIP
配置参数中指定的设置。
示例
下例跳过当前会话的 dbsp1:
SET DATASKIP ON dbsp1;
下例将 DATASKIP 的值设置为在 onconfig 中指定的值:
SET DATASKIP DEFAULT;
下例关闭 DATASKIP 以便于使用所有 dbspace。
SET DATASKIP OFF;
当不可跳过 dbspace 时的情况
在某些条件下,数据库服务器不可跳过 dbspace。下列列表概述这些条件:

引用的约束检查
当您想要删除父行时,子行也必须可用于删除,且必须在可用的分片中存
在。
当您想要插入新的子行时,必须在可用的分片中找到父行。

更新
当您执行一个将记录从一个分片移到另一分片的更新时,两个分片必须都
是可用的。

插入
当您试图在基于表达式的分片策略中插入记录且该 dbspace 不可用时,
返回错误。
当您试图在基于轮转法分片策略中插入记录时,且 dbspace 关闭,数据
库服务器将这些行插入到任何可用的 dbspace 内。
当没有 dbspace 可用时,返回错误。

索引
当您执行影响索引的更新时,比如当您插入或删除行,或更新索引了的
列,该索引必须是可用的。
当您试图创建索引时,您想要使用的 dbspace 必须是可用的。

序列键

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 986
使用第一个分片内部地存储当前的序列键。除了当第一个分片不再可用并
需要新的序列键值时之外,这是对您不可见的,其可发生在 INSERT 语
句期间。