Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
47979e67
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,发现更多精彩内容 >>
提交
47979e67
编写于
2月 21, 2005
作者:
T
Teodor Sigaev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix memory leak for timestamp(with and w/o tz) and indexes
上级
70b64cfb
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
21 addition
and
17 deletion
+21
-17
contrib/btree_gist/btree_time.c
contrib/btree_gist/btree_time.c
+13
-11
contrib/btree_gist/btree_ts.c
contrib/btree_gist/btree_ts.c
+8
-6
未找到文件。
contrib/btree_gist/btree_time.c
浏览文件 @
47979e67
...
...
@@ -30,11 +30,13 @@ Datum gbt_time_penalty(PG_FUNCTION_ARGS);
Datum
gbt_time_same
(
PG_FUNCTION_ARGS
);
#define P_TimeADTGetDatum(x) PointerGetDatum( &(x) )
static
bool
gbt_timegt
(
const
void
*
a
,
const
void
*
b
)
{
return
DatumGetBool
(
DirectFunctionCall2
(
time_gt
,
TimeADTGetDatum
(
*
((
TimeADT
*
)
a
)),
TimeADTGetDatum
(
*
((
TimeADT
*
)
b
)))
DirectFunctionCall2
(
time_gt
,
P_TimeADTGetDatum
(
*
((
TimeADT
*
)
a
)),
P_
TimeADTGetDatum
(
*
((
TimeADT
*
)
b
)))
);
}
...
...
@@ -42,7 +44,7 @@ static bool
gbt_timege
(
const
void
*
a
,
const
void
*
b
)
{
return
DatumGetBool
(
DirectFunctionCall2
(
time_ge
,
TimeADTGetDatum
(
*
((
TimeADT
*
)
a
)),
TimeADTGetDatum
(
*
((
TimeADT
*
)
b
)))
DirectFunctionCall2
(
time_ge
,
P_TimeADTGetDatum
(
*
((
TimeADT
*
)
a
)),
P_
TimeADTGetDatum
(
*
((
TimeADT
*
)
b
)))
);
}
...
...
@@ -50,7 +52,7 @@ static bool
gbt_timeeq
(
const
void
*
a
,
const
void
*
b
)
{
return
DatumGetBool
(
DirectFunctionCall2
(
time_eq
,
TimeADTGetDatum
(
*
((
TimeADT
*
)
a
)),
TimeADTGetDatum
(
*
((
TimeADT
*
)
b
)))
DirectFunctionCall2
(
time_eq
,
P_TimeADTGetDatum
(
*
((
TimeADT
*
)
a
)),
P_
TimeADTGetDatum
(
*
((
TimeADT
*
)
b
)))
);
}
...
...
@@ -58,7 +60,7 @@ static bool
gbt_timele
(
const
void
*
a
,
const
void
*
b
)
{
return
DatumGetBool
(
DirectFunctionCall2
(
time_le
,
TimeADTGetDatum
(
*
((
TimeADT
*
)
a
)),
TimeADTGetDatum
(
*
((
TimeADT
*
)
b
)))
DirectFunctionCall2
(
time_le
,
P_TimeADTGetDatum
(
*
((
TimeADT
*
)
a
)),
P_
TimeADTGetDatum
(
*
((
TimeADT
*
)
b
)))
);
}
...
...
@@ -66,7 +68,7 @@ static bool
gbt_timelt
(
const
void
*
a
,
const
void
*
b
)
{
return
DatumGetBool
(
DirectFunctionCall2
(
time_lt
,
TimeADTGetDatum
(
*
((
TimeADT
*
)
a
)),
TimeADTGetDatum
(
*
((
TimeADT
*
)
b
)))
DirectFunctionCall2
(
time_lt
,
P_TimeADTGetDatum
(
*
((
TimeADT
*
)
a
)),
P_
TimeADTGetDatum
(
*
((
TimeADT
*
)
b
)))
);
}
...
...
@@ -202,8 +204,8 @@ gbt_time_penalty(PG_FUNCTION_ARGS)
intr
=
DatumGetIntervalP
(
DirectFunctionCall2
(
time_mi_time
,
TimeADTGetDatum
(
newentry
->
upper
),
TimeADTGetDatum
(
origentry
->
upper
)));
P_
TimeADTGetDatum
(
newentry
->
upper
),
P_
TimeADTGetDatum
(
origentry
->
upper
)));
/* see interval_larger */
res
=
Max
(
intr
->
time
+
intr
->
month
*
(
30
*
86400
),
0
);
...
...
@@ -211,8 +213,8 @@ gbt_time_penalty(PG_FUNCTION_ARGS)
intr
=
DatumGetIntervalP
(
DirectFunctionCall2
(
time_mi_time
,
TimeADTGetDatum
(
origentry
->
lower
),
TimeADTGetDatum
(
newentry
->
lower
)));
P_
TimeADTGetDatum
(
origentry
->
lower
),
P_
TimeADTGetDatum
(
newentry
->
lower
)));
/* see interval_larger */
res
+=
Max
(
intr
->
time
+
intr
->
month
*
(
30
*
86400
),
0
);
...
...
@@ -224,8 +226,8 @@ gbt_time_penalty(PG_FUNCTION_ARGS)
{
intr
=
DatumGetIntervalP
(
DirectFunctionCall2
(
time_mi_time
,
TimeADTGetDatum
(
origentry
->
upper
),
TimeADTGetDatum
(
origentry
->
lower
)));
P_
TimeADTGetDatum
(
origentry
->
upper
),
P_
TimeADTGetDatum
(
origentry
->
lower
)));
*
result
+=
FLT_MIN
;
*
result
+=
(
float
)
(
res
/
((
double
)
(
res
+
intr
->
time
+
intr
->
month
*
(
30
*
86400
))));
*
result
*=
(
FLT_MAX
/
(((
GISTENTRY
*
)
PG_GETARG_POINTER
(
0
))
->
rel
->
rd_att
->
natts
+
1
));
...
...
contrib/btree_gist/btree_ts.c
浏览文件 @
47979e67
...
...
@@ -29,6 +29,8 @@ Datum gbt_ts_penalty(PG_FUNCTION_ARGS);
Datum
gbt_ts_same
(
PG_FUNCTION_ARGS
);
#define P_TimestampGetDatum(x) PointerGetDatum( &(x) )
static
bool
gbt_tsgt
(
const
void
*
a
,
const
void
*
b
)
{
...
...
@@ -231,8 +233,8 @@ gbt_ts_penalty(PG_FUNCTION_ARGS)
intr
=
DatumGetIntervalP
(
DirectFunctionCall2
(
timestamp_mi
,
TimestampGetDatum
(
newentry
->
upper
),
TimestampGetDatum
(
origentry
->
upper
)
P_
TimestampGetDatum
(
newentry
->
upper
),
P_
TimestampGetDatum
(
origentry
->
upper
)
));
/* see interval_larger */
...
...
@@ -242,8 +244,8 @@ gbt_ts_penalty(PG_FUNCTION_ARGS)
intr
=
DatumGetIntervalP
(
DirectFunctionCall2
(
timestamp_mi
,
TimestampGetDatum
(
origentry
->
lower
),
TimestampGetDatum
(
newentry
->
lower
)
P_
TimestampGetDatum
(
origentry
->
lower
),
P_
TimestampGetDatum
(
newentry
->
lower
)
));
/* see interval_larger */
...
...
@@ -256,8 +258,8 @@ gbt_ts_penalty(PG_FUNCTION_ARGS)
{
intr
=
DatumGetIntervalP
(
DirectFunctionCall2
(
timestamp_mi
,
TimestampGetDatum
(
origentry
->
upper
),
TimestampGetDatum
(
origentry
->
lower
)
P_
TimestampGetDatum
(
origentry
->
upper
),
P_
TimestampGetDatum
(
origentry
->
lower
)
));
*
result
+=
FLT_MIN
;
*
result
+=
(
float
)
(
res
/
((
double
)
(
res
+
intr
->
time
+
intr
->
month
*
(
30
*
86400
))));
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录