blob: bd2d386816e67bc91cf04ddf7112b7252fe6ba0b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
/*-------------------------------------------------------------------------
*
* copyapi.h
* API for COPY TO handlers
*
*
* Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* src/include/commands/copyapi.h
*
*-------------------------------------------------------------------------
*/
#ifndef COPYAPI_H
#define COPYAPI_H
#include "commands/copy.h"
/*
* API structure for a COPY TO format implementation. Note this must be
* allocated in a server-lifetime manner, typically as a static const struct.
*/
typedef struct CopyToRoutine
{
/*
* Set output function information. This callback is called once at the
* beginning of COPY TO.
*
* 'finfo' can be optionally filled to provide the catalog information of
* the output function.
*
* 'atttypid' is the OID of data type used by the relation's attribute.
*/
void (*CopyToOutFunc) (CopyToState cstate, Oid atttypid,
FmgrInfo *finfo);
/*
* Start a COPY TO. This callback is called once at the beginning of COPY
* TO.
*
* 'tupDesc' is the tuple descriptor of the relation from where the data
* is read.
*/
void (*CopyToStart) (CopyToState cstate, TupleDesc tupDesc);
/*
* Write one row stored in 'slot' to the destination.
*/
void (*CopyToOneRow) (CopyToState cstate, TupleTableSlot *slot);
/*
* End a COPY TO. This callback is called once at the end of COPY TO.
*/
void (*CopyToEnd) (CopyToState cstate);
} CopyToRoutine;
#endif /* COPYAPI_H */
|