#openGauss #入门 #安装 #数据库 #开源
知识来源:docs-opengauss.osinfra.cn/zh/
-
Datum *extractQuery(Datum query, int32 *nkeys, StrategyNumber n, bool **pmatch, Pointer **extra_data, bool **nullFlags, int32 *searchMode)
给定一个被查询的值,返回一个对应的key的数组。也就是说,query是可索引操作符右侧的值,而该操作符左侧是被索引的字段。 n是操作符类中操作符的策略号。通常,extractQuery需要参考n来决定query的数据类型以及抽取键值的方法。返回key的个数必须存放在*nkeys中。如果任何key都可能为NULL,还要分配包含*nkeys个布尔元素的数组,将地址存储到*nullFlags,并且根据需要设置NULL值。 如果所有key都是非NULL的,可以让*nullFlags保持为NULL(他的初始值)。如果query不包含任何key,返回值可以为NULL。
searchMode是一个输出参数,他允许extractQuery指定一些关于如何执行搜索的细节。如果设置*searchMode为GIN_SEARCH_MODE_DEFAULT(这也是调用函数前此参数的初始化值),只有那些至少返回一个key的item才能被考虑作为候选匹配项。如果设置*searchMode为GIN_SEARCH_MODE_INCLUDE_EMPTY,除了包含至少一个匹配key的item之外,根本不包含任何key的item也被考虑作为候选匹配项。(这个模式对于实现像“是否是子集”这样的操作是有用的)如果设置*searchMode为GIN_SEARCH_MODE_ALL,索引中所有非NULL的item都被考虑作为候选匹配项,不管他们是否匹配返回key中的任何一个。
pmatch是一个允许支持部分匹配的输出参数。如果使用此参数,extractQuery必须分配有*nkeys个布尔元素的数组,并把数组地址保存到*pmatch。如果需要部分匹配相应的key,则数组的每个元素应该设置为TRUE;如果不需要匹配,则设置为FALSE。如果设置*pmatch为NULL,则假设GIN不需要部分匹配。在函数调用前这个值被初始化为NULL,因此,对于不支持部分匹配的操作符类,可以忽略这个参数。
extra_data是一个允许extractQuery以consistent和comparePartial的方式传递额外数据的输出参数。如果使用他,extractQuery必须分配一个包含*nkeys个Pointer元素的数组,并把数组地址保存到*extra_data,然后把他想附加的东西存储到各个独立的指针中。在函数调用前这个值初始化为NULL,因此,对于不需要附加数据的操作符类,可以忽略这个参数。如果设置了*extra_data,那么以consistent方式传递整个数组,使用comparePartial方式传递适当的元素。
#openGauss #入门 #安装 #数据库 #开源