表 34.1中列出了为从 SQL 操纵大对象定制的服务器端函数。
表 34.1. 面向 SQL 的大对象函数
函数 描述 例子 |
---|
创建一个大对象并在其中存储 |
在大对象中写入从给定偏移量开始的 |
提取大对象的内容,或在其中的子字符串。 |
之前描述过的每个客户端函数都有一个相应的服务器端函数。实际上, 多半客户端函数都是等效的服务器端函数的简单接口。这些可以从 SQL 命令方便调用的函数是: lo_creat
、 lo_create
、 lo_unlink
、 lo_import
以及 lo_export
。 下面是使用它们的例子:
CREATE TABLE image (
name text,
raster oid
);
SELECT lo_creat(-1); -- 返回新的空大对象的OID
SELECT lo_create(43213); -- 尝试创建OID为43213的大对象
SELECT lo_unlink(173454); -- 删除OID为173454的大对象
INSERT INTO image (name, raster)
VALUES ("beautiful image", lo_import("/etc/motd"));
INSERT INTO image (name, raster) -- 和上面相同,但是指定了使用的OID
VALUES ("beautiful image", lo_import("/etc/motd", 68583));
SELECT lo_export(image.raster, "/tmp/motd") FROM image
WHERE name = "beautiful image";
服务器端的lo_import
和lo_export
函数具有和它们的客户端同类大不相同的行为。这两个函数从服务器的文件系统中读和写文件,使用的是数据库所有者的权限。因此,默认情况下它们的使用被限制于超级用户。相反,客户端的导入和导出函数读写的是客户端的文件系统,使用的是客户端程序的权限。除了读取或写入所请求的大对象的特权之外,客户端函数不要求任何数据库特权。
可以把服务器端的lo_import
和lo_export
函数GRANT给非超级用户,但需要仔细地考虑安全因素。有这类特权的恶意用户可以很容易地利用它们成为超级用户(例如通过重写服务器配置文件),或者攻击该服务器文件系统的其他部分而无需获得数据库超级用户特权。
因此对具有这类特权的角色访问必须受到和超级用户角色一样的仔细保护。
尽管如此,如果某些例行任务需要使用服务器端的lo_import
或者lo_export
,使用具有这类特权的角色比使用具有完整超级用户特权的角色更加安全,因为那样会减小意外错误造成的损伤风险。
函数lo_read
和 lo_write
的功能也可以在服务器端调用,但是在服务器端的名称与客户端接口不同:它们的名称中不包含下划线。我们必须以loread
和lowrite
调用这些函数。
35.6.1. 字符串35.6.2. numeric类型35.6.3. 日期类型35.6.4. 时间戳类型35.6.5. 区间类型35.6.6. decimal类型35.6.7. pgtypeslib...
ALLOCATE DESCRIPTOR — 分配一个 SQL 描述符区域CONNECT — 建立一个数据库连接DEALLOCATE DESCRIPTOR — 释放一个 SQL 描述符...
Image height 属性 Image 对象定义和用法height 属性可设置或者返回图片的 height 属性值。height 属性指定了图片的高度。语法im...
Image hspace 属性 Image 对象定义和用法hspace 属性可设置或者返回图片的 hspace 属性值。hspace 属性指定图像的左边缘和右边缘...
Style borderBottomLeftRadius 属性 Style 对象实例向 div 元素的左下角添加圆角边框:document.getElementById(myDIV).style.bo...
Style backgroundClip 属性 Style 对象实例指定背景的绘制区域:document.getElementById(myDIV).style.backgroundClip=content-...
Style columnRule 属性 Style 对象实例规定列之间的宽度、样式和颜色规则:document.getElementById(myDIV).style.columnRule=3p...
Style cssFloat 属性 Style 对象定义和用法cssFloat 属性设置或返回元素的水平对齐方式。语法设置 cssFloat 属性:Object.style....
Style listStyle 属性 Style 对象定义和用法listStyle 属性以速记形式设置或返回三个独立的列表属性。通过该属性,您可以设置/返...
描述该语句用来创建租户。格式CREATE TENANT [IF NOT EXISTS] tenantname[tenant_characteristic_list] [opt_set_sys_var]tenant...