Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
4b0b8dad
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,体验更适合开发者的 AI 搜索 >>
提交
4b0b8dad
编写于
3月 27, 2003
作者:
B
Bruce Momjian
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add new files.
上级
54f7338f
变更
2
展开全部
隐藏空白更改
内联
并排
Showing
2 changed file
with
545 addition
and
0 deletion
+545
-0
src/backend/executor/tstoreReceiver.c
src/backend/executor/tstoreReceiver.c
+89
-0
src/backend/utils/mb/conversion_procs/conversion_create.sql
src/backend/utils/mb/conversion_procs/conversion_create.sql
+456
-0
未找到文件。
src/backend/executor/tstoreReceiver.c
0 → 100644
浏览文件 @
4b0b8dad
/*-------------------------------------------------------------------------
*
* tstore_receiver.c
* an implementation of DestReceiver that stores the result tuples in
* a Tuplestore
*
*
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/executor/tstoreReceiver.c,v 1.1 2003/03/27 16:53:15 momjian Exp $
*
*-------------------------------------------------------------------------
*/
#include "postgres.h"
#include "executor/tstoreReceiver.h"
#include "utils/memutils.h"
#include "utils/portal.h"
typedef
struct
{
DestReceiver
pub
;
Tuplestorestate
*
tstore
;
MemoryContext
cxt
;
}
TStoreState
;
/*
* Receive a tuple from the executor and store it in the tuplestore.
*
* XXX: As currently implemented, this routine is a hack: there should
* be no tie between this code and the portal system. Instead, the
* receiver function that is part of DestFunction should be passed a
* QueryDesc, so that the call site of ExecutorRun can "sub-class"
* QueryDesc and pass in any necessary addition information (in this
* case, the Tuplestore to use).
*/
static
void
tstoreSetupReceiver
(
DestReceiver
*
self
,
int
operation
,
const
char
*
portalname
,
TupleDesc
typeinfo
)
{
TStoreState
*
myState
=
(
TStoreState
*
)
self
;
Portal
portal
;
if
(
operation
!=
CMD_SELECT
)
elog
(
ERROR
,
"Unexpected operation type: %d"
,
operation
);
portal
=
GetPortalByName
(
portalname
);
if
(
portal
==
NULL
)
elog
(
ERROR
,
"Specified portal does not exist: %s"
,
portalname
);
myState
->
tstore
=
portal
->
holdStore
;
myState
->
cxt
=
portal
->
holdContext
;
}
static
void
tstoreReceiveTuple
(
HeapTuple
tuple
,
TupleDesc
typeinfo
,
DestReceiver
*
self
)
{
TStoreState
*
myState
=
(
TStoreState
*
)
self
;
MemoryContext
oldcxt
=
MemoryContextSwitchTo
(
myState
->
cxt
);
tuplestore_puttuple
(
myState
->
tstore
,
tuple
);
MemoryContextSwitchTo
(
oldcxt
);
}
static
void
tstoreCleanupReceiver
(
DestReceiver
*
self
)
{
;
/* do nothing */
}
DestReceiver
*
tstoreReceiverCreateDR
(
void
)
{
TStoreState
*
self
=
(
TStoreState
*
)
palloc
(
sizeof
(
TStoreState
));
self
->
pub
.
receiveTuple
=
tstoreReceiveTuple
;
self
->
pub
.
setup
=
tstoreSetupReceiver
;
self
->
pub
.
cleanup
=
tstoreCleanupReceiver
;
self
->
tstore
=
NULL
;
self
->
cxt
=
NULL
;
return
(
DestReceiver
*
)
self
;
}
src/backend/utils/mb/conversion_procs/conversion_create.sql
0 → 100644
浏览文件 @
4b0b8dad
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录