Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
bd97e4e7
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,发现更多精彩内容 >>
提交
bd97e4e7
编写于
10月 05, 2001
作者:
T
Thomas G. Lockhart
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Implement explicit date/time precision per SQL99 spec.
Use CAST() mechanism to define CURRENT_TIME and CURRENT_TIMESTAMP.
上级
c24e5ddf
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
45 addition
and
44 deletion
+45
-44
src/backend/parser/gram.y
src/backend/parser/gram.y
+45
-44
未找到文件。
src/backend/parser/gram.y
浏览文件 @
bd97e4e7
...
...
@@ -11,7 +11,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.25
8 2001/10/03 20:54:21 tgl
Exp $
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.25
9 2001/10/05 06:37:42 thomas
Exp $
*
* HISTORY
* AUTHOR DATE MAJOR EVENT
...
...
@@ -4251,8 +4251,8 @@ ConstDatetime: datetime
*/
$$->timezone = $5;
if (($3 < 0) || ($3 > 13))
elog(ERROR,"TIMESTAMP
%s precision %d must be beween 0
and %d",
($5? " WITH TIME ZONE": ""), 0, 13);
elog(ERROR,"TIMESTAMP
(%d) %s precision must be beween %d
and %d",
$3,
($5? " WITH TIME ZONE": ""), 0, 13);
$$->typmod = $3;
}
| TIMESTAMP opt_timezone_x
...
...
@@ -4276,8 +4276,8 @@ ConstDatetime: datetime
else
$$->name = xlateSqlType("time");
if (($3 < 0) || ($3 > 13))
elog(ERROR,"TIME
%s precision %d must be beween 0
and %d",
($5? " WITH TIME ZONE": ""), 0, 13);
elog(ERROR,"TIME
(%d) %s precision must be beween %d
and %d",
$3,
($5? " WITH TIME ZONE": ""), 0, 13);
$$->typmod = $3;
}
| TIME opt_timezone
...
...
@@ -4911,7 +4911,7 @@ c_expr: attr
*/
A_Const *s = makeNode(A_Const);
TypeName *t = makeNode(TypeName);
FuncCall *n = makeNode(FuncCall
);
TypeName *d = makeNode(TypeName
);
s->val.type = T_String;
s->val.val.str = "now";
...
...
@@ -4921,12 +4921,12 @@ c_expr: attr
t->setof = FALSE;
t->typmod = -1;
n->funcname = xlateSqlType("date"
);
n->args = makeList1(s
);
n->agg_star
= FALSE;
n->agg_distinct = FALSE
;
d = makeNode(TypeName
);
d->name = xlateSqlType("date"
);
d->setof
= FALSE;
d->typmod = -1
;
$$ = (Node *)
n
;
$$ = (Node *)
makeTypeCast((Node *)s, d)
;
}
| CURRENT_TIME
{
...
...
@@ -4936,7 +4936,7 @@ c_expr: attr
*/
A_Const *s = makeNode(A_Const);
TypeName *t = makeNode(TypeName);
FuncCall *n = makeNode(FuncCall
);
TypeName *d = makeNode(TypeName
);
s->val.type = T_String;
s->val.val.str = "now";
...
...
@@ -4946,12 +4946,12 @@ c_expr: attr
t->setof = FALSE;
t->typmod = -1;
n->funcname = xlateSqlType("time"
);
n->args = makeList1(s
);
n->agg_star
= FALSE;
n->agg_distinct = FALSE
;
d = makeNode(TypeName
);
d->name = xlateSqlType("time"
);
d->setof
= FALSE;
d->typmod = 0
;
$$ = (Node *)
n
;
$$ = (Node *)
makeTypeCast((Node *)s, d)
;
}
| CURRENT_TIME '(' Iconst ')'
{
...
...
@@ -4961,7 +4961,7 @@ c_expr: attr
*/
A_Const *s = makeNode(A_Const);
TypeName *t = makeNode(TypeName);
FuncCall *n = makeNode(FuncCall
);
TypeName *d = makeNode(TypeName
);
s->val.type = T_String;
s->val.val.str = "now";
...
...
@@ -4971,26 +4971,25 @@ c_expr: attr
t->setof = FALSE;
t->typmod = -1;
n->funcname = xlateSqlType("time");
n->args = makeList1(s);
n->agg_star = FALSE;
n->agg_distinct = FALSE;
if ($3 != 0)
elog(NOTICE,"CURRENT_TIME(%d) precision not implemented"
"; zero used instead",$3);
d = makeNode(TypeName);
d->name = xlateSqlType("timetz");
d->setof = FALSE;
if (($3 < 0) || ($3 > 13))
elog(ERROR,"CURRENT_TIME(%d) precision must be between %d and %d",
$3, 0, 13);
d->typmod = $3;
$$ = (Node *)
n
;
$$ = (Node *)
makeTypeCast((Node *)s, d)
;
}
| CURRENT_TIMESTAMP
{
/*
* Translate as "timestamp('now'::text)".
* Translate as "timestamp
tz
('now'::text)".
* See comments for CURRENT_DATE.
*/
A_Const *s = makeNode(A_Const);
TypeName *t = makeNode(TypeName);
FuncCall *n = makeNode(FuncCall
);
TypeName *d = makeNode(TypeName
);
s->val.type = T_String;
s->val.val.str = "now";
...
...
@@ -5000,12 +4999,15 @@ c_expr: attr
t->setof = FALSE;
t->typmod = -1;
n->funcname = xlateSqlType("timestamp");
n->args = makeList1(s);
n->agg_star = FALSE;
n->agg_distinct = FALSE;
/* SQL99 mandates a default precision of 6
* for timestamp. - thomas 2001-10-04
*/
d = makeNode(TypeName);
d->name = xlateSqlType("timestamptz");
d->setof = FALSE;
d->typmod = 6;
$$ = (Node *)
n
;
$$ = (Node *)
makeTypeCast((Node *)s, d)
;
}
| CURRENT_TIMESTAMP '(' Iconst ')'
{
...
...
@@ -5015,7 +5017,7 @@ c_expr: attr
*/
A_Const *s = makeNode(A_Const);
TypeName *t = makeNode(TypeName);
FuncCall *n = makeNode(FuncCall
);
TypeName *d = makeNode(TypeName
);
s->val.type = T_String;
s->val.val.str = "now";
...
...
@@ -5025,16 +5027,15 @@ c_expr: attr
t->setof = FALSE;
t->typmod = -1;
n->funcname = xlateSqlType("timestamp");
n->args = makeList1(s);
n->agg_star = FALSE;
n->agg_distinct = FALSE;
if ($3 != 0)
elog(NOTICE,"CURRENT_TIMESTAMP(%d) precision not implemented"
"; zero used instead",$3);
d = makeNode(TypeName);
d->name = xlateSqlType("timestamptz");
d->setof = FALSE;
if (($3 < 0) || ($3 > 13))
elog(ERROR,"CURRENT_TIMESTAMP(%d) precision must be beween %d and %d",
$3, 0, 13);
d->typmod = $3;
$$ = (Node *)
n
;
$$ = (Node *)
makeTypeCast((Node *)s, d)
;
}
| CURRENT_USER
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录