跳到主要内容
Vane Data / API 参考

文件身份

身份函数生成稳定标识,并按位置或内容比较 FILE 值。

签名

example.py
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 子类型还支持 = 与 != 运算符,比较全部五个字段。

参数

名称类型说明默认值
valueFILE 家族值或 Expression待标识对象必填
left / rightFILE 家族值或 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 语义;混用子类型会在绑定时报错。

示例

query.sql
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;

来源与相关页面