返回首页

gbase数据、南大通用产品文档:GBase8s不透明类型中的智能大对象

更新日期:2024年09月11日

尽管您最可能使用 GBase 8s 扩展类在不透明类型上下文之外的数据库服务器上创建大对
象,但是智能大对象仍可以是不透明类型中的数据成员,
有关智能大对象的更多信息,请参阅智能大对象数据类型。
在不透明类型中大对象存储在 IfxLocator 对象中;
在内部定义不透明类型的 C 结构中,

对象通过 MI_LO_HANDLE 类型的定位指针引用。该对象使用 IfxSmartBlob 类提供的方
法创建,并且从这些方法获得的大对象句柄成为不透明类型中的数据成员。BLOB 和
CLOB 对象都使用相同的大对象句柄,如下例所示:
import java.sql.*;
import com.gbasedbt.jdbc.*;
/*
* C struct of large_bin_udt:
*
* typedef struct LARGE_BIN_TYPE

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 192 -

* {
* MI_LO_HANDLE lb_handle; // handle to large object (72 bytes)
* }
* large_bin_udt;
*
*/
public class largebinUDT implements SQLData
{
private String sql_type = "large_bin_udt";
public Clob lb_handle;

public largebinUDT() { }

public largebinUDT(Clob clob)
{
lb_handle = clob;
}

public String getSQLTypeName()
{
return sql_type;
}
// reads a stream of data values and builds a Java object
public void readSQL(SQLInput stream, String type) throws SQLException
{
sql_type = type;
lb_handle = stream.readClob();
}
// writes a sequence of values from a Java object to a stream
public void writeSQL(SQLOutput stream) throws SQLException
{
stream.writeClob(lb_handle);
}
}
在 JDBC 应用程序中,使用 IfxSmartBlob 类提供的方法创建 MI_LO_HANDLE 对象:
String s = "insert into largebin_tab (int_col, largebin_col, lvc_col) " +

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 193 -

"values (?,?,?)";
System.out.println(s);
pstmt = conn.prepareStatement(s);

...
// create a large object using IfxSmartBlob's methods
String filename = "lbin_in1.dat";
File file = new File(filename);
int fileLength = (int) file.length();
FileInputStream fin = new FileInputStream(file);

IfxLobDescriptor loDesc = new IfxLobDescriptor(conn);
System.out.println("create large object descriptor...ok");

IfxLocator loPtr = new IfxLocator();
IfxSmartBlob smb = new IfxSmartBlob((IfxConnection)conn);
int loFd = smb.IfxLoCreate(loDesc, 8, loPtr);
System.out.println("create large object...ok");

int n = smb.IfxLoWrite(loFd, fin, fileLength);
System.out.println("write file content into large object...ok");

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

// initialize largebin object using the large object created
// above, before doing setObject for the large_bin_udt column.
largebinUDT largebinObj = new largebinUDT();
largebinObj.lb_handle = new IfxCblob(loPtr);
pstmt.setObject(2, largebinObj);
System.out.println("setObject(largebinUDT)...ok");

pstmt.setString(3, "Sydney");
System.out.println("setString...ok");

pstmt.executeUpdate();
System.out.println("execute...ok");

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 194 -


// close/release large object
smb.IfxLoClose(loFd);
System.out.println("close large object...ok");
smb.IfxLoRelease(loPtr);
System.out.println("release large object...ok");
有关详细信息,请参阅智能大对象数据类型。

参数说明:设置时间戳默认格式。
该参数属于USERSET 类型参数,请参考表15-1 中对应设置方法进行设置。
取值范围:字符串
默认值:DD-Mon-YYYY HH:MI:SS.FF AM

语法

更改名称
ALTER CONSUMER GROUP [vc_name.] RENAME [TO] ;

更改描述
ALTER CONSUMER GROUP [vc_name.] COMMENT = 'comment';

增加成员
ALTER CONSUMER GROUP [vc_name.] ADD USER ;

删除成员
ALTER CONSUMER GROUP [vc_name.] REMOVE USER ;
示例

创建用户
CREATE USER user1;
CREATE USER user2;

资源消费组新增用户

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
480
ALTER CONSUMER GROUP group1 ADD USER user1;
ALTER CONSUMER GROUP group1 ADD USER user2;

资源消费组删除用户
ALTER CONSUMER GROUP group1 REMOVE USER user1;
ALTER CONSUMER GROUP group1 REMOVE USER user2;
注意
同一vc 下,
consumer group 与user 之间是一对多的关系,
即一个consumer group 中可
以包含多个user,一个user 只能隶属于一个consumer group。