Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
799ac992
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,发现更多精彩内容 >>
提交
799ac992
编写于
9月 27, 2009
作者:
T
Tom Lane
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Sync psql's scanner with recent changes in backend scanner's flex rules.
Marko Kreen, Tom Lane
上级
3686bcb9
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
47 addition
and
7 deletion
+47
-7
src/backend/parser/scan.l
src/backend/parser/scan.l
+4
-6
src/bin/psql/psqlscan.l
src/bin/psql/psqlscan.l
+43
-1
未找到文件。
src/backend/parser/scan.l
浏览文件 @
799ac992
...
...
@@ -24,7 +24,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/parser/scan.l,v 1.16
1 2009/09/25 21:13:06 petere
Exp $
* $PostgreSQL: pgsql/src/backend/parser/scan.l,v 1.16
2 2009/09/27 03:27:23 tgl
Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -571,10 +571,9 @@ other .
BEGIN(xe);
}
<xeu>.
|
<xeu>\n
|
<xeu>.
{ yyerror("invalid Unicode surrogate pair"); }
<xeu>\n
{ yyerror("invalid Unicode surrogate pair"); }
<xeu><<EOF>> { yyerror("invalid Unicode surrogate pair"); }
<xe,xeu>{xeunicodefail} {
ereport(ERROR,
(errcode(ERRCODE_INVALID_ESCAPE_SEQUENCE),
...
...
@@ -582,7 +581,6 @@ other .
errhint("Unicode escapes must be \\uXXXX or \\UXXXXXXXX."),
lexer_errposition()));
}
<xe>{xeescape} {
if (yytext[1] == '\'')
{
...
...
src/bin/psql/psqlscan.l
浏览文件 @
799ac992
...
...
@@ -33,7 +33,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/bin/psql/psqlscan.l,v 1.2
8 2009/01/01 17:23:55 momjian
Exp $
* $PostgreSQL: pgsql/src/bin/psql/psqlscan.l,v 1.2
9 2009/09/27 03:27:24 tgl
Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -117,6 +117,7 @@ static void push_new_buffer(const char *newstr);
static YY_BUFFER_STATE prepare_buffer(const char *txt, int len,
char **txtcopy);
static void emit(const char *txt, int len);
static bool is_utf16_surrogate_first(uint32 c);
#define ECHO emit(yytext, yyleng)
...
...
@@ -158,6 +159,7 @@ static void emit(const char *txt, int len);
* <xdolq> $foo$ quoted strings
* <xui> quoted identifier with Unicode escapes
* <xus> quoted string with Unicode escapes
* <xeu> Unicode surrogate pair in extended quoted string
*/
%x xb
...
...
@@ -169,6 +171,7 @@ static void emit(const char *txt, int len);
%x xdolq
%x xui
%x xus
%x xeu
/* Additional exclusive states for psql only: lex backslash commands */
%x xslashcmd
%x xslasharg
...
...
@@ -192,6 +195,9 @@ static void emit(const char *txt, int len);
* did not end with a newline.
*
* XXX perhaps \f (formfeed) should be treated as a newline as well?
*
* XXX if you change the set of whitespace characters, fix scanner_isspace()
* to agree, and see also the plpgsql lexer.
*/
space [ \t\n\r\f]
...
...
@@ -253,6 +259,8 @@ xeinside [^\\']+
xeescape [\\][^0-7]
xeoctesc [\\][0-7]{1,3}
xehexesc [\\]x[0-9A-Fa-f]{1,2}
xeunicode [\\](u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})
xeunicodefail [\\](u[0-9A-Fa-f]{0,3}|U[0-9A-Fa-f]{0,7})
/* Extended quote
* xqdouble implements embedded quote, ''''
...
...
@@ -334,6 +342,10 @@ identifier {ident_start}{ident_cont}*
typecast "::"
/* these two token types are used by PL/pgsql, though not in core SQL */
dot_dot \.\.
colon_equals ":="
/*
* "self" is the set of chars that should be returned as single-character
* tokens. "op_chars" is the set of chars that can make up "Op" tokens,
...
...
@@ -511,6 +523,22 @@ other .
<xe>{xeinside} {
ECHO;
}
<xe>{xeunicode} {
uint32 c = strtoul(yytext+2, NULL, 16);
if (is_utf16_surrogate_first(c))
BEGIN(xeu);
ECHO;
}
<xeu>{xeunicode} {
BEGIN(xe);
ECHO;
}
<xeu>. { ECHO; }
<xeu>\n { ECHO; }
<xe,xeu>{xeunicodefail} {
ECHO;
}
<xe>{xeescape} {
ECHO;
}
...
...
@@ -605,6 +633,14 @@ other .
ECHO;
}
{dot_dot} {
ECHO;
}
{colon_equals} {
ECHO;
}
/*
* These rules are specific to psql --- they implement parenthesis
* counting and detection of command-ending semicolon. These must
...
...
@@ -1690,3 +1726,9 @@ emit(const char *txt, int len)
}
}
}
static bool
is_utf16_surrogate_first(uint32 c)
{
return (c >= 0xD800 && c <= 0xDBFF);
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录