PostgreSQL Source Code  git master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
funcs_new.c File Reference
#include "postgres.h"
#include "executor/executor.h"
#include "utils/geo_decls.h"
Include dependency graph for funcs_new.c:

Go to the source code of this file.

Functions

 PG_FUNCTION_INFO_V1 (add_one)
 
Datum add_one (PG_FUNCTION_ARGS)
 
 PG_FUNCTION_INFO_V1 (add_one_float8)
 
Datum add_one_float8 (PG_FUNCTION_ARGS)
 
 PG_FUNCTION_INFO_V1 (makepoint)
 
Datum makepoint (PG_FUNCTION_ARGS)
 
 PG_FUNCTION_INFO_V1 (copytext)
 
Datum copytext (PG_FUNCTION_ARGS)
 
 PG_FUNCTION_INFO_V1 (concat_text)
 
Datum concat_text (PG_FUNCTION_ARGS)
 
 PG_FUNCTION_INFO_V1 (c_overpaid)
 
Datum c_overpaid (PG_FUNCTION_ARGS)
 

Variables

 PG_MODULE_MAGIC
 

Function Documentation

Datum add_one ( PG_FUNCTION_ARGS  )

Definition at line 27 of file funcs_new.c.

References arg, PG_GETARG_INT32, and PG_RETURN_INT32.

28 {
30 
31  PG_RETURN_INT32(arg + 1);
32 }
#define PG_GETARG_INT32(n)
Definition: fmgr.h:225
#define PG_RETURN_INT32(x)
Definition: fmgr.h:298
signed int int32
Definition: c.h:253
void * arg
Datum add_one_float8 ( PG_FUNCTION_ARGS  )

Definition at line 39 of file funcs_new.c.

References arg, PG_GETARG_FLOAT8, and PG_RETURN_FLOAT8.

40 {
41  /* The macros for FLOAT8 hide its pass-by-reference nature */
43 
44  PG_RETURN_FLOAT8(arg + 1.0);
45 }
#define PG_GETARG_FLOAT8(n)
Definition: fmgr.h:237
#define PG_RETURN_FLOAT8(x)
Definition: fmgr.h:310
double float8
Definition: c.h:377
void * arg
Datum c_overpaid ( PG_FUNCTION_ARGS  )

Definition at line 110 of file funcs_new.c.

References DatumGetInt32, GetAttributeByName(), PG_GETARG_HEAPTUPLEHEADER, PG_GETARG_INT32, and PG_RETURN_BOOL.

111 {
113  int32 limit = PG_GETARG_INT32(1);
114  bool isnull;
115  int32 salary;
116 
117  salary = DatumGetInt32(GetAttributeByName(t, "salary", &isnull));
118  if (isnull)
119  PG_RETURN_BOOL(false);
120 
121  /*
122  * Alternatively, we might prefer to do PG_RETURN_NULL() for null salary
123  */
124 
125  PG_RETURN_BOOL(salary > limit);
126 }
#define PG_GETARG_INT32(n)
Definition: fmgr.h:225
#define DatumGetInt32(X)
Definition: postgres.h:480
#define PG_GETARG_HEAPTUPLEHEADER(n)
Definition: fmgr.h:275
signed int int32
Definition: c.h:253
Datum GetAttributeByName(HeapTupleHeader tuple, const char *attname, bool *isNull)
Definition: execQual.c:1209
#define PG_RETURN_BOOL(x)
Definition: fmgr.h:303
Datum concat_text ( PG_FUNCTION_ARGS  )

Definition at line 90 of file funcs_new.c.

References palloc(), PG_GETARG_TEXT_P, PG_RETURN_TEXT_P, SET_VARSIZE, VARDATA, VARHDRSZ, and VARSIZE.

91 {
92  text *arg1 = PG_GETARG_TEXT_P(0);
93  text *arg2 = PG_GETARG_TEXT_P(1);
94  int32 arg1_size = VARSIZE(arg1) - VARHDRSZ;
95  int32 arg2_size = VARSIZE(arg2) - VARHDRSZ;
96  int32 new_text_size = arg1_size + arg2_size + VARHDRSZ;
97  text *new_text = (text *) palloc(new_text_size);
98 
99  SET_VARSIZE(new_text, new_text_size);
100  memcpy(VARDATA(new_text), VARDATA(arg1), arg1_size);
101  memcpy(VARDATA(new_text) + arg1_size, VARDATA(arg2), arg2_size);
102  PG_RETURN_TEXT_P(new_text);
103 }
#define VARDATA(PTR)
Definition: postgres.h:305
#define VARSIZE(PTR)
Definition: postgres.h:306
#define VARHDRSZ
Definition: c.h:440
signed int int32
Definition: c.h:253
#define PG_RETURN_TEXT_P(x)
Definition: fmgr.h:314
void * palloc(Size size)
Definition: mcxt.c:891
#define PG_GETARG_TEXT_P(n)
Definition: fmgr.h:269
Definition: c.h:434
#define SET_VARSIZE(PTR, len)
Definition: postgres.h:330
Datum copytext ( PG_FUNCTION_ARGS  )

Definition at line 67 of file funcs_new.c.

References palloc(), PG_GETARG_TEXT_P, PG_RETURN_TEXT_P, SET_VARSIZE, VARDATA, VARHDRSZ, and VARSIZE.

68 {
69  text *t = PG_GETARG_TEXT_P(0);
70 
71  /*
72  * VARSIZE is the total size of the struct in bytes.
73  */
74  text *new_t = (text *) palloc(VARSIZE(t));
75 
76  SET_VARSIZE(new_t, VARSIZE(t));
77 
78  /*
79  * VARDATA is a pointer to the data region of the struct.
80  */
81  memcpy((void *) VARDATA(new_t), /* destination */
82  (void *) VARDATA(t), /* source */
83  VARSIZE(t) - VARHDRSZ); /* how many bytes */
84  PG_RETURN_TEXT_P(new_t);
85 }
#define VARDATA(PTR)
Definition: postgres.h:305
#define VARSIZE(PTR)
Definition: postgres.h:306
#define VARHDRSZ
Definition: c.h:440
#define PG_RETURN_TEXT_P(x)
Definition: fmgr.h:314
void * palloc(Size size)
Definition: mcxt.c:891
#define PG_GETARG_TEXT_P(n)
Definition: fmgr.h:269
Definition: c.h:434
#define SET_VARSIZE(PTR, len)
Definition: postgres.h:330
Datum makepoint ( PG_FUNCTION_ARGS  )

Definition at line 50 of file funcs_new.c.

References palloc(), PG_GETARG_POINT_P, PG_RETURN_POINT_P, Point::x, and Point::y.

51 {
52  Point *pointx = PG_GETARG_POINT_P(0);
53  Point *pointy = PG_GETARG_POINT_P(1);
54  Point *new_point = (Point *) palloc(sizeof(Point));
55 
56  new_point->x = pointx->x;
57  new_point->y = pointy->y;
58 
59  PG_RETURN_POINT_P(new_point);
60 }
double y
Definition: geo_decls.h:60
double x
Definition: geo_decls.h:60
#define PG_GETARG_POINT_P(n)
Definition: geo_decls.h:139
#define PG_RETURN_POINT_P(x)
Definition: geo_decls.h:140
void * palloc(Size size)
Definition: mcxt.c:891
PG_FUNCTION_INFO_V1 ( add_one  )
PG_FUNCTION_INFO_V1 ( add_one_float8  )
PG_FUNCTION_INFO_V1 ( makepoint  )
PG_FUNCTION_INFO_V1 ( copytext  )
PG_FUNCTION_INFO_V1 ( concat_text  )
PG_FUNCTION_INFO_V1 ( c_overpaid  )

Variable Documentation

PG_MODULE_MAGIC

Definition at line 19 of file funcs_new.c.