Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
8db43db0
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,发现更多精彩内容 >>
提交
8db43db0
编写于
11月 09, 2007
作者:
P
Peter Eisentraut
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Allow XML processing instructions starting with "xml" while prohibiting
those being exactly "xml". Bug #3735 from Ben Leslie
上级
3991c3fb
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
53 addition
and
7 deletion
+53
-7
src/backend/utils/adt/xml.c
src/backend/utils/adt/xml.c
+16
-3
src/test/regress/expected/xml.out
src/test/regress/expected/xml.out
+22
-4
src/test/regress/expected/xml_1.out
src/test/regress/expected/xml_1.out
+12
-0
src/test/regress/sql/xml.sql
src/test/regress/sql/xml.sql
+3
-0
未找到文件。
src/backend/utils/adt/xml.c
浏览文件 @
8db43db0
...
...
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $PostgreSQL: pgsql/src/backend/utils/adt/xml.c,v 1.5
3 2007/11/08 15:16:45
petere Exp $
* $PostgreSQL: pgsql/src/backend/utils/adt/xml.c,v 1.5
4 2007/11/09 15:52:51
petere Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -676,11 +676,11 @@ xmlpi(char *target, text *arg, bool arg_is_null, bool *result_is_null)
xmltype
*
result
;
StringInfoData
buf
;
if
(
pg_str
ncasecmp
(
target
,
"xml"
,
3
)
==
0
)
if
(
pg_str
casecmp
(
target
,
"xml"
)
==
0
)
ereport
(
ERROR
,
(
errcode
(
ERRCODE_SYNTAX_ERROR
),
/* really */
errmsg
(
"invalid XML processing instruction"
),
errdetail
(
"XML processing instruction target name cannot
start with
\"
xml
\"
."
)));
errdetail
(
"XML processing instruction target name cannot
be
\"
%s
\"
."
,
target
)));
/*
* Following the SQL standard, the null check comes after the
...
...
@@ -997,6 +997,14 @@ xml_init(void)
#define SKIP_XML_SPACE(p) \
while (xmlIsBlank_ch(*(p))) (p)++
/* Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar | Extender */
#define pg_xmlIsNameChar(c) \
(xmlIsBaseChar_ch(c) || xmlIsIdeographicQ(c) \
|| xmlIsDigit_ch(c) \
|| c == '.' || c == '-' || c == '_' || c == ':' \
|| xmlIsCombiningQ(c) \
|| xmlIsExtender_ch(c))
static
int
parse_xml_decl
(
const
xmlChar
*
str
,
size_t
*
lenp
,
xmlChar
**
version
,
xmlChar
**
encoding
,
int
*
standalone
)
...
...
@@ -1004,6 +1012,7 @@ parse_xml_decl(const xmlChar *str,size_t *lenp,
const
xmlChar
*
p
;
const
xmlChar
*
save_p
;
size_t
len
;
int
utf8len
;
xml_init
();
...
...
@@ -1019,6 +1028,10 @@ parse_xml_decl(const xmlChar *str,size_t *lenp,
if
(
xmlStrncmp
(
p
,
(
xmlChar
*
)
"<?xml"
,
5
)
!=
0
)
goto
finished
;
/* This means it's a PI like <?xml-stylesheet ...?>. */
if
(
pg_xmlIsNameChar
(
xmlGetUTF8Char
(
&
p
[
5
],
&
utf8len
)))
goto
finished
;
p
+=
5
;
/* version */
...
...
src/test/regress/expected/xml.out
浏览文件 @
8db43db0
...
...
@@ -180,9 +180,15 @@ SELECT xmlpi(name foo);
<?foo?>
(1 row)
SELECT xmlpi(name xml
stuff
);
SELECT xmlpi(name xml);
ERROR: invalid XML processing instruction
DETAIL: XML processing instruction target name cannot start with "xml".
DETAIL: XML processing instruction target name cannot be "xml".
SELECT xmlpi(name xmlstuff);
xmlpi
--------------
<?xmlstuff?>
(1 row)
SELECT xmlpi(name foo, 'bar');
xmlpi
-------------
...
...
@@ -198,9 +204,21 @@ SELECT xmlpi(name foo, null);
(1 row)
SELECT xmlpi(name xml
stuff
, null);
SELECT xmlpi(name xml, null);
ERROR: invalid XML processing instruction
DETAIL: XML processing instruction target name cannot start with "xml".
DETAIL: XML processing instruction target name cannot be "xml".
SELECT xmlpi(name xmlstuff, null);
xmlpi
-------
(1 row)
SELECT xmlpi(name "xml-stylesheet", 'href="mystyle.css" type="text/css"');
xmlpi
-------------------------------------------------------
<?xml-stylesheet href="mystyle.css" type="text/css"?>
(1 row)
SELECT xmlpi(name foo, ' bar');
xmlpi
-------------
...
...
src/test/regress/expected/xml_1.out
浏览文件 @
8db43db0
...
...
@@ -140,6 +140,10 @@ SELECT xmlpi(name foo);
ERROR: unsupported XML feature
DETAIL: This functionality requires the server to be built with libxml support.
HINT: You need to rebuild PostgreSQL using --with-libxml.
SELECT xmlpi(name xml);
ERROR: unsupported XML feature
DETAIL: This functionality requires the server to be built with libxml support.
HINT: You need to rebuild PostgreSQL using --with-libxml.
SELECT xmlpi(name xmlstuff);
ERROR: unsupported XML feature
DETAIL: This functionality requires the server to be built with libxml support.
...
...
@@ -156,10 +160,18 @@ SELECT xmlpi(name foo, null);
ERROR: unsupported XML feature
DETAIL: This functionality requires the server to be built with libxml support.
HINT: You need to rebuild PostgreSQL using --with-libxml.
SELECT xmlpi(name xml, null);
ERROR: unsupported XML feature
DETAIL: This functionality requires the server to be built with libxml support.
HINT: You need to rebuild PostgreSQL using --with-libxml.
SELECT xmlpi(name xmlstuff, null);
ERROR: unsupported XML feature
DETAIL: This functionality requires the server to be built with libxml support.
HINT: You need to rebuild PostgreSQL using --with-libxml.
SELECT xmlpi(name "xml-stylesheet", 'href="mystyle.css" type="text/css"');
ERROR: unsupported XML feature
DETAIL: This functionality requires the server to be built with libxml support.
HINT: You need to rebuild PostgreSQL using --with-libxml.
SELECT xmlpi(name foo, ' bar');
ERROR: unsupported XML feature
DETAIL: This functionality requires the server to be built with libxml support.
...
...
src/test/regress/sql/xml.sql
浏览文件 @
8db43db0
...
...
@@ -61,11 +61,14 @@ SELECT xmlparse(document '<abc>x</abc>');
SELECT
xmlpi
(
name
foo
);
SELECT
xmlpi
(
name
xml
);
SELECT
xmlpi
(
name
xmlstuff
);
SELECT
xmlpi
(
name
foo
,
'bar'
);
SELECT
xmlpi
(
name
foo
,
'in?>valid'
);
SELECT
xmlpi
(
name
foo
,
null
);
SELECT
xmlpi
(
name
xml
,
null
);
SELECT
xmlpi
(
name
xmlstuff
,
null
);
SELECT
xmlpi
(
name
"xml-stylesheet"
,
'href="mystyle.css" type="text/css"'
);
SELECT
xmlpi
(
name
foo
,
' bar'
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录