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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
|
#include "postgres.h"
#include "executor/spi.h"
#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif
extern Datum text_checksum2(PG_FUNCTION_ARGS);
extern Datum text_checksum4(PG_FUNCTION_ARGS);
extern Datum text_checksum8(PG_FUNCTION_ARGS);
PG_FUNCTION_INFO_V1(text_checksum2);
PG_FUNCTION_INFO_V1(text_checksum4);
PG_FUNCTION_INFO_V1(text_checksum8);
#include "jenkins.c"
Datum text_checksum2(PG_FUNCTION_ARGS)
{
unsigned char * data;
size_t size;
if (PG_ARGISNULL(0))
{
data = NULL, size = 0;
}
else
{
text *t = PG_GETARG_TEXT_P(0);
size = VARSIZE(t) - VARHDRSZ;
data = (unsigned char *) VARDATA(t);
}
PG_RETURN_INT16(checksum_int2(data, size));
}
Datum text_checksum4(PG_FUNCTION_ARGS)
{
unsigned char * data;
size_t size;
if (PG_ARGISNULL(0))
{
data = NULL, size = 0;
}
else
{
text *t = PG_GETARG_TEXT_P(0);
size = VARSIZE(t) - VARHDRSZ;
data = (unsigned char *) VARDATA(t);
}
PG_RETURN_INT32(checksum_int4(data, size));
}
Datum text_checksum8(PG_FUNCTION_ARGS)
{
unsigned char * data;
size_t size;
if (PG_ARGISNULL(0))
{
data = NULL, size = 0;
}
else
{
text * t = PG_GETARG_TEXT_P(0);
data = (unsigned char *) VARDATA(t);
size = VARSIZE(t) - VARHDRSZ;
}
PG_RETURN_INT64(checksum_int8(data, size));
}
extern Datum text_fnv2(PG_FUNCTION_ARGS);
extern Datum text_fnv4(PG_FUNCTION_ARGS);
extern Datum text_fnv8(PG_FUNCTION_ARGS);
PG_FUNCTION_INFO_V1(text_fnv2);
PG_FUNCTION_INFO_V1(text_fnv4);
PG_FUNCTION_INFO_V1(text_fnv8);
#include "fnv.c"
Datum text_fnv2(PG_FUNCTION_ARGS)
{
unsigned char * data;
size_t size;
if (PG_ARGISNULL(0))
{
data = NULL, size = 0;
}
else
{
text *t = PG_GETARG_TEXT_P(0);
size = VARSIZE(t) - VARHDRSZ;
data = (unsigned char *) VARDATA(t);
}
PG_RETURN_INT16(fnv_int2(data, size));
}
Datum text_fnv4(PG_FUNCTION_ARGS)
{
unsigned char * data;
size_t size;
if (PG_ARGISNULL(0))
{
data = NULL, size = 0;
}
else
{
text *t = PG_GETARG_TEXT_P(0);
size = VARSIZE(t) - VARHDRSZ;
data = (unsigned char *) VARDATA(t);
}
PG_RETURN_INT32(fnv_int4(data, size));
}
Datum text_fnv8(PG_FUNCTION_ARGS)
{
unsigned char * data;
size_t size;
if (PG_ARGISNULL(0))
{
data = NULL, size = 0;
}
else
{
text *t = PG_GETARG_TEXT_P(0);
size = VARSIZE(t) - VARHDRSZ;
data = (unsigned char *) VARDATA(t);
}
PG_RETURN_INT64(fnv_int8(data, size));
}
|