返回首页

gbase数据、南大通用产品文档:GBase8a_gbase_add_months_mode

更新日期:2024年09月11日

取值:[0|1]
默认值:0
说明:add_months 函数行为控制。
针对函数add_months(date, intervar [, mode])
其中mode 为0 时,则兼容原有的模式,为1 时兼容oracle 模式。

GBase 8a MPP Cluster 参数手册
文档版本2022-06-07
南大通用数据技术股份有限公司
76
mode 是可选参数,不输入mode 时,mode 等价于系统变量
_gbase_add_months_mode。
_gbase_add_months_mode 的默认值为0,最大为1。
值为1 时结果集和oracle 一致,比如边界值处理。当前天是否为本月最后一天,
以及闰年平年的二月份处理。
修改方式:
可使用set 语句修改值也可在配置文件中修改值。
适用于session、
global
范围均可。

命名的行的 Java™ 类必须实现 SQLData 接口。对于命名的行中每一元素,该类必须有一
个成员,但除了这些之外可有其他成员。这些成员可以按任何顺序,且不要公开。
对于命名的行,Java 类必须实现 writeSQL()、readSQL() 和 getSQLTypeName() 方法,如
在 SQLData 接口中定义的那样,但可实现附加的方法。可使用 ClassGenerator 实用程序来
创建该类;要获取更多信息,请参阅 ClassGenerator 实用程序。
要以命名的行来链接此 Java 类,请使用 Connection.setTypeMap() 方法或 getObject() 方法,
来创建定制的类型映射。要获取关于类型映射的更多信息,请参阅 映射数据类型。
不可使用 SQLData 接口来访问未命名的行。
SQLData 示例
本部分中所有示例的完整版本位于安装了驱动程序处的 demo/complex-types 目录中。要获
取更多信息,请参阅 示例代码文件。
下列示例包括一个实现 java.sql.SQLData 接口的 Java™ 类。
这里是样例数据库模式:
CREATE ROW TYPE fullname_t (first char(20), last char(20));
CREATE ROW TYPE person_t (id int, name fullname_t, age int);
CREATE TABLE teachers (person person_t, dept char (20));
INSERT INTO teachers VALUES ("row(100, row('Bill', 'Smith'), 27)",
"physics");
这是 fullname Java 类:
import java.sql.*;
public class fullname implements SQLData

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 125
-
{
public String first;
public String last;
private String sql_type = "fullname_t";

public String getSQLTypeName()
{
return sql_type;
}
public void readSQL (SQLInput stream, String type) throws
SQLException
{
sql_type = type;
first = stream.readString();
last = stream.readString();
}
public void writeSQL (SQLOutput stream) throws SQLException
{
stream.writeString(first);
stream.writeString(last);
}
/*
* Function not required by SQLData interface, but makes
* it easier for displaying results.
*/
public String toString()
{
String s = "fullname: ";
s += "first: " + first + " last: " + last;
return s;
}
}
这是 person Java 类:
import java.sql.*;
public class person implements SQLData
{
public int id;

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 126
-
public fullname name;
public int age;
private String sql_type = "person_t";

public String getSQLTypeName()
{
return sql_type;
}
public void readSQL (SQLInput stream, String type) throws SQLException
{
sql_type = type;
id = stream.readInt();
name = (fullname)stream.readObject();
age = stream.readInt();
}
public void writeSQL (SQLOutput stream) throws SQLException
{
stream.writeInt(id);
stream.writeObject(name);
stream.writeInt(age);
}
public String toString()
{
String s = "person:";
s += "id: " + id + "\n";
s += " name: " + name.toString() + "\n";
s += " age: " + age + "\n";
return s;
}
}
这里是访存命名的行的示例:
java.util.Map map = conn.getTypeMap();
conn.setTypeMap(map);
map.put("fullname_t", Class.forName("fullname"));
map.put("person_t", Class.forName("person"));

...

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 127
-
PreparedStatement pstmt;
ResultSet rs;
pstmt = conn.prepareStatement("select person from teachers");
System.out.println("prepare ...ok");

rs = pstmt.executeQuery();
System.out.println("executetQuery()...ok");

while (rs.next())
{
person who = (person) rs.getObject(1);
System.out.println("getObject()...ok");
System.out.println("Data fetched:");
System.out.println("row: " + who.toString());
}
pstmt.close();
通过 Connection 对象,conn.getTypeMap() 方法从 java.util.Map 对象返回命名的行映射信
息。
map.put() 方法注册数据库服务器上嵌套的命名的行 fullname_t 与 Java 类 fullname 之间
的映射,以及数据库服务器上命名的行 person_t 与 Java 类 person 之间的映射。
person who = (person) rs.getObject(1) 语句将命名的行检索至 Java 对象 who 内。GBase 8s
JDBC Driver 承认此对象 who 是命名的行、distinct 类型或 opaque 类型,因为数据库服务
器发送的信息有扩展的名称 person_t。
驱动程序查找 person_t,
并发现它是命名的行。
驱动程序以键 person_t 调用 map.get() 方法,
其返回 person 类对象。实例化类 person 的一个对象。
person 类中的 readSQL() 方法调用定义在 SQLInput 接口中的方法,来将 ROW 列中每一
字段转换为 Java 对象,并将每一指定为 person 类中的一个成员。
下列展示一个方法,用于使用 setObject() 方法将 Java 对象插入至命名的行列内:
java.util.Map map = conn.getTypeMap();
map.put("fullname_t", Class.forName("fullname"));
map.put("person_t", Class.forName("person"));

...
PreparedStatement pstmt;
System.out.println("Populate person and fullname objects");
person who = new person();
fullname name = new fullname();

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 128
-
name.last = "Jones";
name.first = "Sarah";
who.id = 567;
who.name = name;
who.age = 17;

String s = "insert into teachers values (?, 'physics')";
pstmt = conn.prepareStatement (s);
System.out.println("prepared...ok");

pstmt.setObject(1, who);
System.out.println("setObject()...ok");

int rowcount = pstmt.executeUpdate();
System.out.println("executeUpdate()...ok");
pstmt.close();
通过 Connection 对象,conn.getTypeMap() 方法从 java.util.Map 对象返回命名的行映射信
息。
map.put() 方法注册数据库服务器上嵌套的命名的行 fullname_t 与 Java 类 fullname 之间
的映射,以及数据库服务器上命名的行 person_t 与 Java 类 person 之间的映射。
GBase 8s JDBC Driver 认可对象 who 实现 SQLData 接口,
因此,
它是命名的行、
distinct 类
型,
或 opaque 类型。
对于此对象,
GBase 8s JDBC Driver 调用 getSQLTypeName() 方法
(需
要类实现 SQLData 接口),其返回 person_t。驱动程序查找 person_t,并发现它是命名的
行。
对于类中的每一成员,
person 类中的 writeSQL() 方法调用对应的 SQLOutput.writeXXX() 方
法,将其每一都映射至命名的行 person_t 中的一个字段。该类中的 writeSQL() 方法包含
对 SQLOutput.writeObject(name) 和 SQLOutput.writeInt(id) 方法的调用。序列化类 person 的
每一成员,并写至流内。

功能
这个参数用于配置GBase 8a MPP Cluster 保存进程ID 文件的操作系统路径。
错误的pid 文件会导致节点的gcware 不能正常启动或停止服务。
当节点的集群启
动或停止异常时,可以通过这个参数查看相应的pid 文件是否存在,内容是否正
确。
该参数的默认值为:
$GCLUSTER_BASE/log/$GCLUSTER_SID/gclusterd.pid