LOAD

Name

LOAD — 动态装载一个对象文件
LOAD 'filename'
  

输入

filename

用于动态装载的对象文件.

输出

LOAD

命令成功执行的返回.

ERROR: LOAD: could not open file 'filename'

果声明的文件没有找到,返回此信息.文件必须可被 Postgres后端读写, 要避免此信息,声明合适的全路径.

描述

装载一个对象 (或 ".o")文件到 Postgres 后端的地址空间.一旦一个文件被装载, 该文件内所有函数都可以被访问.这个功能用于支持用户定义的类型和函数.

如果一个文件没有使用 LOAD装载, Postgres 将在函数第一次被调用时自动装载该文件. LOAD 还可用于一个重新编辑和编译后的目标文件的重新装载. 目前只支持用 C 创建的对象的文件.

注意

被装载的对象文件内的函数不应该调用其他通过 LOAD 命令装载的对象文件内部的函数. 例如,所有文件 A 内的函数可以互相调用, 可以调用标准库或数学库中的函数或 Postgres 自身内部的函数. 它们不能调用定义在另一个装载文件 B 内的函数. 这是因为如果 B 装载器将不能够重新定位从 A 中函数调用的 B 中函数的地址空间. 但是如果 B 没有重装载,就不会有问题.

对象文件必须编译成包含位置无关的代码. 例如,在 DECstations 上你必须使用带 -G 0 选项的 /bin/cc 编译将要装载的对象(目标)文件.

注意如果你向新的平台移植 Postgres, 为支持 ADT,LOAD 必须(可用). (译注∶ADT Abstract Data Type)

用法

装载文件 /usr/postgres/demo/circle.o

LOAD '/usr/postgres/demo/circle.o'
   

兼容性

SQL92

SQL92里没有 LOAD