mirror of
https://github.com/postgres/postgres.git
synced 2025-11-10 17:42:29 +03:00
Convert *GetDatum() and DatumGet*() macros to inline functions
The previous macro implementations just cast the argument to a target type but did not check whether the input type was appropriate. The function implementation can do better type checking of the input type. For the *GetDatumFast() macros, converting to an inline function doesn't work in the !USE_FLOAT8_BYVAL case, but we can use AssertVariableIsOfTypeMacro() to get a similar level of type checking. Reviewed-by: Aleksander Alekseev <aleksander@timescale.com> Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> Discussion: https://www.postgresql.org/message-id/flat/8528fb7e-0aa2-6b54-85fb-0c0886dbd6ed%40enterprisedb.com
This commit is contained in:
@@ -280,7 +280,7 @@ gistMakeUnionKey(GISTSTATE *giststate, int attno,
|
||||
bool
|
||||
gistKeyIsEQ(GISTSTATE *giststate, int attno, Datum a, Datum b)
|
||||
{
|
||||
bool result;
|
||||
bool result = false; /* silence compiler warning */
|
||||
|
||||
FunctionCall3Coll(&giststate->equalFn[attno],
|
||||
giststate->supportCollation[attno],
|
||||
|
||||
@@ -354,7 +354,7 @@ void
|
||||
parsetext(Oid cfgId, ParsedText *prs, char *buf, int buflen)
|
||||
{
|
||||
int type,
|
||||
lenlemm;
|
||||
lenlemm = 0; /* silence compiler warning */
|
||||
char *lemm = NULL;
|
||||
LexizeData ldata;
|
||||
TSLexeme *norms;
|
||||
@@ -529,7 +529,7 @@ void
|
||||
hlparsetext(Oid cfgId, HeadlineParsedText *prs, TSQuery query, char *buf, int buflen)
|
||||
{
|
||||
int type,
|
||||
lenlemm;
|
||||
lenlemm = 0; /* silence compiler warning */
|
||||
char *lemm = NULL;
|
||||
LexizeData ldata;
|
||||
TSLexeme *norms;
|
||||
|
||||
@@ -409,8 +409,8 @@ pg_do_encoding_conversion(unsigned char *src, int len,
|
||||
(void) OidFunctionCall6(proc,
|
||||
Int32GetDatum(src_encoding),
|
||||
Int32GetDatum(dest_encoding),
|
||||
CStringGetDatum(src),
|
||||
CStringGetDatum(result),
|
||||
CStringGetDatum((char *) src),
|
||||
CStringGetDatum((char *) result),
|
||||
Int32GetDatum(len),
|
||||
BoolGetDatum(false));
|
||||
|
||||
@@ -485,8 +485,8 @@ pg_do_encoding_conversion_buf(Oid proc,
|
||||
result = OidFunctionCall6(proc,
|
||||
Int32GetDatum(src_encoding),
|
||||
Int32GetDatum(dest_encoding),
|
||||
CStringGetDatum(src),
|
||||
CStringGetDatum(dest),
|
||||
CStringGetDatum((char *) src),
|
||||
CStringGetDatum((char *) dest),
|
||||
Int32GetDatum(srclen),
|
||||
BoolGetDatum(noError));
|
||||
return DatumGetInt32(result);
|
||||
@@ -910,8 +910,8 @@ pg_unicode_to_server(pg_wchar c, unsigned char *s)
|
||||
FunctionCall6(Utf8ToServerConvProc,
|
||||
Int32GetDatum(PG_UTF8),
|
||||
Int32GetDatum(server_encoding),
|
||||
CStringGetDatum(c_as_utf8),
|
||||
CStringGetDatum(s),
|
||||
CStringGetDatum((char *) c_as_utf8),
|
||||
CStringGetDatum((char *) s),
|
||||
Int32GetDatum(c_as_utf8_len),
|
||||
BoolGetDatum(false));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user