Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
0c9e5d5e
G
Gpdb
项目概览
Greenplum
/
Gpdb
通知
7
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
Gpdb
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
0c9e5d5e
编写于
2月 23, 2012
作者:
A
Andrew Dunstan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Correctly handle NULLs in JSON output.
Error reported by David Wheeler.
上级
b2ce6070
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
14 addition
and
12 deletion
+14
-12
src/backend/utils/adt/json.c
src/backend/utils/adt/json.c
+14
-12
未找到文件。
src/backend/utils/adt/json.c
浏览文件 @
0c9e5d5e
...
...
@@ -79,9 +79,10 @@ static void report_parse_error(JsonParseStack *stack, JsonLexContext *lex);
static
void
report_invalid_token
(
JsonLexContext
*
lex
);
static
char
*
extract_mb_char
(
char
*
s
);
static
void
composite_to_json
(
Datum
composite
,
StringInfo
result
,
bool
use_line_feeds
);
static
void
array_dim_to_json
(
StringInfo
result
,
int
dim
,
int
ndims
,
int
*
dims
,
Datum
*
vals
,
int
*
valcount
,
TYPCATEGORY
tcategory
,
Oid
typoutputfunc
,
bool
use_line_feeds
);
static
void
array_dim_to_json
(
StringInfo
result
,
int
dim
,
int
ndims
,
int
*
dims
,
Datum
*
vals
,
bool
*
nulls
,
int
*
valcount
,
TYPCATEGORY
tcategory
,
Oid
typoutputfunc
,
bool
use_line_feeds
);
static
void
array_to_json_internal
(
Datum
array
,
StringInfo
result
,
bool
use_line_feeds
);
/* fake type category for JSON so we can distinguish it in datum_to_json */
...
...
@@ -682,13 +683,13 @@ extract_mb_char(char *s)
* composite_to_json or array_to_json_internal as appropriate.
*/
static
inline
void
datum_to_json
(
Datum
val
,
StringInfo
result
,
TYPCATEGORY
tcategory
,
datum_to_json
(
Datum
val
,
bool
is_null
,
StringInfo
result
,
TYPCATEGORY
tcategory
,
Oid
typoutputfunc
)
{
char
*
outputstr
;
if
(
val
==
(
Datum
)
NULL
)
if
(
is_null
)
{
appendStringInfoString
(
result
,
"null"
);
return
;
...
...
@@ -742,8 +743,8 @@ datum_to_json(Datum val, StringInfo result, TYPCATEGORY tcategory,
*/
static
void
array_dim_to_json
(
StringInfo
result
,
int
dim
,
int
ndims
,
int
*
dims
,
Datum
*
vals
,
int
*
valcount
,
TYPCATEGORY
tcategory
,
Oid
typoutputfunc
,
bool
use_line_feeds
)
bool
*
nulls
,
int
*
valcount
,
TYPCATEGORY
tcategory
,
Oid
typoutputfunc
,
bool
use_line_feeds
)
{
int
i
;
...
...
@@ -762,7 +763,8 @@ array_dim_to_json(StringInfo result, int dim, int ndims,int * dims, Datum *vals,
if
(
dim
+
1
==
ndims
)
{
datum_to_json
(
vals
[
*
valcount
],
result
,
tcategory
,
typoutputfunc
);
datum_to_json
(
vals
[
*
valcount
],
nulls
[
*
valcount
],
result
,
tcategory
,
typoutputfunc
);
(
*
valcount
)
++
;
}
else
...
...
@@ -771,8 +773,8 @@ array_dim_to_json(StringInfo result, int dim, int ndims,int * dims, Datum *vals,
* Do we want line feeds on inner dimensions of arrays?
* For now we'll say no.
*/
array_dim_to_json
(
result
,
dim
+
1
,
ndims
,
dims
,
vals
,
valcount
,
tcategory
,
typoutputfunc
,
false
);
array_dim_to_json
(
result
,
dim
+
1
,
ndims
,
dims
,
vals
,
nulls
,
valcount
,
tcategory
,
typoutputfunc
,
false
);
}
}
...
...
@@ -827,7 +829,7 @@ array_to_json_internal(Datum array, StringInfo result, bool use_line_feeds)
else
tcategory
=
TypeCategory
(
element_type
);
array_dim_to_json
(
result
,
0
,
ndim
,
dim
,
elements
,
&
count
,
tcategory
,
array_dim_to_json
(
result
,
0
,
ndim
,
dim
,
elements
,
nulls
,
&
count
,
tcategory
,
typoutputfunc
,
use_line_feeds
);
pfree
(
elements
);
...
...
@@ -908,7 +910,7 @@ composite_to_json(Datum composite, StringInfo result, bool use_line_feeds)
else
val
=
origval
;
datum_to_json
(
val
,
result
,
tcategory
,
typoutput
);
datum_to_json
(
val
,
isnull
,
result
,
tcategory
,
typoutput
);
/* Clean up detoasted copy, if any */
if
(
val
!=
origval
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录