Vane Data / API 参考
文件身份
身份函数生成稳定标识,并按位置或内容比较 FILE 值。
签名
vane.file_locator_id(value) -> Expression vane.file_content_id(value) -> Expression vane.file_same_location(left, right) -> Expression vane.file_same_content(left, right) -> Expression
SQL:file_locator_id(file)、file_content_id(file)、file_same_location(left, right) 和 file_same_content(left, right)。每个 FILE 子类型还支持 = 与 != 运算符,比较全部五个字段。
参数
| 名称 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| value | FILE 家族值或 Expression | 待标识对象 | 必填 |
| left / right | FILE 家族值或 Expression | 待比较值;允许不同子类型 | 必填 |
返回值与错误
file_locator_id 返回由 URL 与字节窗口推导的位置标识(VARCHAR)。已知字节窗口为空时,file_content_id 返回 file-content-v1:empty;否则由声明的校验和推导内容标识(VARCHAR),未声明校验和时返回 NULL。
URL 不同时,file_same_location 返回 false。URL 相同时,两侧都不带字节窗口则返回 true,只有一侧带窗口则返回 NULL,两侧都带窗口则比较 position 与 size。
file_same_content 优先比较已知窗口大小:两侧大小不同返回 false,两侧都为零则返回 true,即使没有校验和也是如此。其他情况下比较声明的校验和摘要;任一侧校验和缺失或算法不同则返回 NULL。
这两个身份比较函数允许不同的 FILE 子类型。直接使用 =/!= 比较时,要求相同子类型并遵循 SQL NULL 语义;混用子类型会在绑定时报错。
示例
SELECT file_same_location(file('a.png', NULL, NULL, NULL, NULL), image_file('a.png')) AS same_location; SELECT file_same_content(file('a', NULL, 0, 0, NULL), file('b', NULL, 0, 0, NULL)) AS same_content;