开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
1 Star 0 Fork 20

peitingwei/IvorySQL

forked from IvorySQL/IvorySQL
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (37)
标签 (552)
master
IVORY_REL_2_STABLE
IVORY_REL_1_STABLE
REL_15_STABLE
REL_13_STABLE
REL_14_STABLE
REL9_6_STABLE
REL_10_STABLE
REL_11_STABLE
REL_12_STABLE
REL9_5_STABLE
REL9_4_STABLE
REL9_3_STABLE
REL9_2_STABLE
REL9_1_STABLE
REL9_0_STABLE
REL8_2_STABLE
REL8_3_STABLE
REL8_4_STABLE
REL8_1_STABLE
Ivory_REL_2_1
Ivory_REL_1_5
Ivory_REL_1_4
Ivory_REL_1_3
Ivory_REL_1_2
Ivory_REL_1_1
Ivory_REL_1_0
REL_14_0
REL_14_RC1
REL9_6_23
REL_10_18
REL_11_13
REL_12_8
REL_13_4
REL_14_BETA3
REL_14_BETA2
REL_14_BETA1
REL9_6_22
REL_10_17
REL_11_12
master
分支 (37)
标签 (552)
master
IVORY_REL_2_STABLE
IVORY_REL_1_STABLE
REL_15_STABLE
REL_13_STABLE
REL_14_STABLE
REL9_6_STABLE
REL_10_STABLE
REL_11_STABLE
REL_12_STABLE
REL9_5_STABLE
REL9_4_STABLE
REL9_3_STABLE
REL9_2_STABLE
REL9_1_STABLE
REL9_0_STABLE
REL8_2_STABLE
REL8_3_STABLE
REL8_4_STABLE
REL8_1_STABLE
Ivory_REL_2_1
Ivory_REL_1_5
Ivory_REL_1_4
Ivory_REL_1_3
Ivory_REL_1_2
Ivory_REL_1_1
Ivory_REL_1_0
REL_14_0
REL_14_RC1
REL9_6_23
REL_10_18
REL_11_13
REL_12_8
REL_13_4
REL_14_BETA3
REL_14_BETA2
REL_14_BETA1
REL9_6_22
REL_10_17
REL_11_12
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (37)
标签 (552)
master
IVORY_REL_2_STABLE
IVORY_REL_1_STABLE
REL_15_STABLE
REL_13_STABLE
REL_14_STABLE
REL9_6_STABLE
REL_10_STABLE
REL_11_STABLE
REL_12_STABLE
REL9_5_STABLE
REL9_4_STABLE
REL9_3_STABLE
REL9_2_STABLE
REL9_1_STABLE
REL9_0_STABLE
REL8_2_STABLE
REL8_3_STABLE
REL8_4_STABLE
REL8_1_STABLE
Ivory_REL_2_1
Ivory_REL_1_5
Ivory_REL_1_4
Ivory_REL_1_3
Ivory_REL_1_2
Ivory_REL_1_1
Ivory_REL_1_0
REL_14_0
REL_14_RC1
REL9_6_23
REL_10_18
REL_11_13
REL_12_8
REL_13_4
REL_14_BETA3
REL_14_BETA2
REL_14_BETA1
REL9_6_22
REL_10_17
REL_11_12
IvorySQL
/
src
/
include
/
utils
/
arrayaccess.h
IvorySQL
/
src
/
include
/
utils
/
arrayaccess.h
arrayaccess.h 2.99 KB
一键复制 编辑 原始数据 按行查看 历史
Bruce Momjian 提交于 2022年01月08日 08:04 +08:00 . Update copyright for 2022
/*-------------------------------------------------------------------------
*
* arrayaccess.h
* Declarations for element-by-element access to Postgres arrays.
*
*
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* src/include/utils/arrayaccess.h
*
*-------------------------------------------------------------------------
*/
#ifndef ARRAYACCESS_H
#define ARRAYACCESS_H
#include "access/tupmacs.h"
#include "utils/array.h"
/*
* Functions for iterating through elements of a flat or expanded array.
* These require a state struct "array_iter iter".
*
* Use "array_iter_setup(&iter, arrayptr);" to prepare to iterate, and
* "datumvar = array_iter_next(&iter, &isnullvar, index, ...);" to fetch
* the next element into datumvar/isnullvar.
* "index" must be the zero-origin element number; we make caller provide
* this since caller is generally counting the elements anyway. Despite
* that, these functions can only fetch elements sequentially.
*/
typedef struct array_iter
{
/* datumptr being NULL or not tells if we have flat or expanded array */
/* Fields used when we have an expanded array */
Datum *datumptr; /* Pointer to Datum array */
bool *isnullptr; /* Pointer to isnull array */
/* Fields used when we have a flat array */
char *dataptr; /* Current spot in the data area */
bits8 *bitmapptr; /* Current byte of the nulls bitmap, or NULL */
int bitmask; /* mask for current bit in nulls bitmap */
} array_iter;
static inline void
array_iter_setup(array_iter *it, AnyArrayType *a)
{
if (VARATT_IS_EXPANDED_HEADER(a))
{
if (a->xpn.dvalues)
{
it->datumptr = a->xpn.dvalues;
it->isnullptr = a->xpn.dnulls;
/* we must fill all fields to prevent compiler warnings */
it->dataptr = NULL;
it->bitmapptr = NULL;
}
else
{
/* Work with flat array embedded in the expanded datum */
it->datumptr = NULL;
it->isnullptr = NULL;
it->dataptr = ARR_DATA_PTR(a->xpn.fvalue);
it->bitmapptr = ARR_NULLBITMAP(a->xpn.fvalue);
}
}
else
{
it->datumptr = NULL;
it->isnullptr = NULL;
it->dataptr = ARR_DATA_PTR((ArrayType *) a);
it->bitmapptr = ARR_NULLBITMAP((ArrayType *) a);
}
it->bitmask = 1;
}
static inline Datum
array_iter_next(array_iter *it, bool *isnull, int i,
int elmlen, bool elmbyval, char elmalign)
{
Datum ret;
if (it->datumptr)
{
ret = it->datumptr[i];
*isnull = it->isnullptr ? it->isnullptr[i] : false;
}
else
{
if (it->bitmapptr && (*(it->bitmapptr) & it->bitmask) == 0)
{
*isnull = true;
ret = (Datum) 0;
}
else
{
*isnull = false;
ret = fetch_att(it->dataptr, elmbyval, elmlen);
it->dataptr = att_addlength_pointer(it->dataptr, elmlen,
it->dataptr);
it->dataptr = (char *) att_align_nominal(it->dataptr, elmalign);
}
it->bitmask <<= 1;
if (it->bitmask == 0x100)
{
if (it->bitmapptr)
it->bitmapptr++;
it->bitmask = 1;
}
}
return ret;
}
#endif /* ARRAYACCESS_H */
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

暂无描述
暂无标签
Apache-2.0
使用 Apache-2.0 开源许可协议
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C
1
https://gitee.com/peitingwei/IvorySQL.git
git@gitee.com:peitingwei/IvorySQL.git
peitingwei
IvorySQL
IvorySQL
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /