PostgreSQL Source Code: src/include/funcapi.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17#ifndef FUNCAPI_H

18#define FUNCAPI_H

19

24

25

26

27

28

29

30

31

32

33

34

36{

37

39

40

42

43

45

46

49

50

51

52

53

54

55

56

58{

59

60

61

62

63

64

66

67

68

69

70

71

72

73

75

76

77

78

79

80

81

83

84

85

86

87

88

89

90

92

93

94

95

96

97

98

99

100

102

103

104

105

106

107

108

109

110

111

113

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

147{

154

156 Oid *resultTypeId,

159 Oid *resultTypeId,

162 Oid *resultTypeId,

164

166

168 char *argmodes,

169 Node *call_expr);

170

172 Oid **p_argtypes, char ***p_argnames,

173 char **p_argmodes);

174

176 char ***arg_names);

177

180

182 Datum proallargtypes,

183 Datum proargmodes,

184 Datum proargnames);

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

222

223

228

229static inline Datum

231{

233}

234

235

236#define TupleGetDatum(_slot, _tuple) HeapTupleGetDatum(_tuple)

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

296#define MAT_SRF_USE_EXPECTED_DESC 0x01

297#define MAT_SRF_BLESS 0x02

298

300

305#define SRF_IS_FIRSTCALL() (fcinfo->flinfo->fn_extra == NULL)

307#define SRF_FIRSTCALL_INIT() init_MultiFuncCall(fcinfo)

309#define SRF_PERCALL_SETUP() per_MultiFuncCall(fcinfo)

311#define SRF_RETURN_NEXT(_funcctx, _result) \

312 do { \

313 ReturnSetInfo *rsi; \

314 (_funcctx)->call_cntr++; \

315 rsi = (ReturnSetInfo *) fcinfo->resultinfo; \

316 rsi->isDone = ExprMultipleResult; \

317 PG_RETURN_DATUM(_result); \

318 } while (0)

320#define SRF_RETURN_NEXT_NULL(_funcctx) \

321 do { \

322 ReturnSetInfo *rsi; \

323 (_funcctx)->call_cntr++; \

324 rsi = (ReturnSetInfo *) fcinfo->resultinfo; \

325 rsi->isDone = ExprMultipleResult; \

326 PG_RETURN_NULL(); \

327 } while (0)

329#define SRF_RETURN_DONE(_funcctx) \

330 do { \

331 ReturnSetInfo *rsi; \

332 end_MultiFuncCall(fcinfo, _funcctx); \

333 rsi = (ReturnSetInfo *) fcinfo->resultinfo; \

334 rsi->isDone = ExprEndResult; \

335 PG_RETURN_NULL(); \

336 } while (0)

337

338

339

340

341

342

343

344

345

346

347

348

349

350

351

352

353

354

355

357 bool convert_unknown, Datum **args,

359

360#endif

static Datum values[MAXATTR]

TupleDesc BlessTupleDesc(TupleDesc tupdesc)

void InitMaterializedSRF(FunctionCallInfo fcinfo, bits32 flags)

HeapTuple BuildTupleFromCStrings(AttInMetadata *attinmeta, char **values)

int get_func_trftypes(HeapTuple procTup, Oid **p_trftypes)

@ TYPEFUNC_COMPOSITE_DOMAIN

struct AttInMetadata AttInMetadata

TupleDesc build_function_result_tupdesc_t(HeapTuple procTuple)

char * get_func_result_name(Oid functionId)

TupleDesc build_function_result_tupdesc_d(char prokind, Datum proallargtypes, Datum proargmodes, Datum proargnames)

Datum HeapTupleHeaderGetDatum(HeapTupleHeader tuple)

bool resolve_polymorphic_argtypes(int numargs, Oid *argtypes, char *argmodes, Node *call_expr)

struct FuncCallContext FuncCallContext

void end_MultiFuncCall(PG_FUNCTION_ARGS, FuncCallContext *funcctx)

int get_func_input_arg_names(Datum proargnames, Datum proargmodes, char ***arg_names)

int get_func_arg_info(HeapTuple procTup, Oid **p_argtypes, char ***p_argnames, char **p_argmodes)

FuncCallContext * per_MultiFuncCall(PG_FUNCTION_ARGS)

FuncCallContext * init_MultiFuncCall(PG_FUNCTION_ARGS)

TupleDesc RelationNameGetTupleDesc(const char *relname)

TypeFuncClass get_call_result_type(FunctionCallInfo fcinfo, Oid *resultTypeId, TupleDesc *resultTupleDesc)

static Datum HeapTupleGetDatum(const HeapTupleData *tuple)

int extract_variadic_args(FunctionCallInfo fcinfo, int variadic_start, bool convert_unknown, Datum **args, Oid **types, bool **nulls)

TupleDesc get_expr_result_tupdesc(Node *expr, bool noError)

AttInMetadata * TupleDescGetAttInMetadata(TupleDesc tupdesc)

TupleDesc TypeGetTupleDesc(Oid typeoid, List *colaliases)

TypeFuncClass get_func_result_type(Oid functionId, Oid *resultTypeId, TupleDesc *resultTupleDesc)

TypeFuncClass get_expr_result_type(Node *expr, Oid *resultTypeId, TupleDesc *resultTupleDesc)

AttInMetadata * attinmeta

MemoryContext multi_call_memory_ctx