mirror of
https://github.com/postgres/postgres.git
synced 2025-06-11 20:28:21 +03:00
Tweak dblink functions to use int4 arguments instead of int2,
to avoid having to write explicit casts. From Joe Conway.
This commit is contained in:
@ -1002,6 +1002,9 @@ dblink_last_oid(PG_FUNCTION_ARGS)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef SHRT_MAX
|
||||||
|
#define SHRT_MAX (0x7FFF)
|
||||||
|
#endif
|
||||||
/*
|
/*
|
||||||
* dblink_build_sql_insert
|
* dblink_build_sql_insert
|
||||||
*
|
*
|
||||||
@ -1028,7 +1031,8 @@ dblink_build_sql_insert(PG_FUNCTION_ARGS)
|
|||||||
Oid relid;
|
Oid relid;
|
||||||
text *relname_text;
|
text *relname_text;
|
||||||
int16 *pkattnums;
|
int16 *pkattnums;
|
||||||
int16 pknumatts;
|
int pknumatts_tmp;
|
||||||
|
int16 pknumatts = 0;
|
||||||
char **src_pkattvals;
|
char **src_pkattvals;
|
||||||
char **tgt_pkattvals;
|
char **tgt_pkattvals;
|
||||||
ArrayType *src_pkattvals_arry;
|
ArrayType *src_pkattvals_arry;
|
||||||
@ -1057,7 +1061,11 @@ dblink_build_sql_insert(PG_FUNCTION_ARGS)
|
|||||||
elog(ERROR, "dblink_build_sql_insert: relation does not exist");
|
elog(ERROR, "dblink_build_sql_insert: relation does not exist");
|
||||||
|
|
||||||
pkattnums = (int16 *) PG_GETARG_POINTER(1);
|
pkattnums = (int16 *) PG_GETARG_POINTER(1);
|
||||||
pknumatts = PG_GETARG_INT16(2);
|
pknumatts_tmp = PG_GETARG_INT32(2);
|
||||||
|
if (pknumatts_tmp <= SHRT_MAX)
|
||||||
|
pknumatts = pknumatts_tmp;
|
||||||
|
else
|
||||||
|
elog(ERROR, "Bad input value for pknumatts; too large");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* There should be at least one key attribute
|
* There should be at least one key attribute
|
||||||
@ -1167,7 +1175,8 @@ dblink_build_sql_delete(PG_FUNCTION_ARGS)
|
|||||||
Oid relid;
|
Oid relid;
|
||||||
text *relname_text;
|
text *relname_text;
|
||||||
int16 *pkattnums;
|
int16 *pkattnums;
|
||||||
int16 pknumatts;
|
int pknumatts_tmp;
|
||||||
|
int16 pknumatts = 0;
|
||||||
char **tgt_pkattvals;
|
char **tgt_pkattvals;
|
||||||
ArrayType *tgt_pkattvals_arry;
|
ArrayType *tgt_pkattvals_arry;
|
||||||
int tgt_ndim;
|
int tgt_ndim;
|
||||||
@ -1191,7 +1200,11 @@ dblink_build_sql_delete(PG_FUNCTION_ARGS)
|
|||||||
elog(ERROR, "dblink_build_sql_delete: relation does not exist");
|
elog(ERROR, "dblink_build_sql_delete: relation does not exist");
|
||||||
|
|
||||||
pkattnums = (int16 *) PG_GETARG_POINTER(1);
|
pkattnums = (int16 *) PG_GETARG_POINTER(1);
|
||||||
pknumatts = PG_GETARG_INT16(2);
|
pknumatts_tmp = PG_GETARG_INT32(2);
|
||||||
|
if (pknumatts_tmp <= SHRT_MAX)
|
||||||
|
pknumatts = pknumatts_tmp;
|
||||||
|
else
|
||||||
|
elog(ERROR, "Bad input value for pknumatts; too large");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* There should be at least one key attribute
|
* There should be at least one key attribute
|
||||||
@ -1274,7 +1287,8 @@ dblink_build_sql_update(PG_FUNCTION_ARGS)
|
|||||||
Oid relid;
|
Oid relid;
|
||||||
text *relname_text;
|
text *relname_text;
|
||||||
int16 *pkattnums;
|
int16 *pkattnums;
|
||||||
int16 pknumatts;
|
int pknumatts_tmp;
|
||||||
|
int16 pknumatts = 0;
|
||||||
char **src_pkattvals;
|
char **src_pkattvals;
|
||||||
char **tgt_pkattvals;
|
char **tgt_pkattvals;
|
||||||
ArrayType *src_pkattvals_arry;
|
ArrayType *src_pkattvals_arry;
|
||||||
@ -1303,7 +1317,11 @@ dblink_build_sql_update(PG_FUNCTION_ARGS)
|
|||||||
elog(ERROR, "dblink_build_sql_update: relation does not exist");
|
elog(ERROR, "dblink_build_sql_update: relation does not exist");
|
||||||
|
|
||||||
pkattnums = (int16 *) PG_GETARG_POINTER(1);
|
pkattnums = (int16 *) PG_GETARG_POINTER(1);
|
||||||
pknumatts = PG_GETARG_INT16(2);
|
pknumatts_tmp = PG_GETARG_INT32(2);
|
||||||
|
if (pknumatts_tmp <= SHRT_MAX)
|
||||||
|
pknumatts = pknumatts_tmp;
|
||||||
|
else
|
||||||
|
elog(ERROR, "Bad input value for pknumatts; too large");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* There should be one source array key values for each key attnum
|
* There should be one source array key values for each key attnum
|
||||||
|
@ -57,15 +57,15 @@ CREATE OR REPLACE FUNCTION dblink_get_pkey (text) RETURNS setof dblink_pkey_resu
|
|||||||
AS 'MODULE_PATHNAME','dblink_get_pkey' LANGUAGE 'c'
|
AS 'MODULE_PATHNAME','dblink_get_pkey' LANGUAGE 'c'
|
||||||
WITH (isstrict);
|
WITH (isstrict);
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION dblink_build_sql_insert (text, int2vector, int2, _text, _text) RETURNS text
|
CREATE OR REPLACE FUNCTION dblink_build_sql_insert (text, int2vector, int4, _text, _text) RETURNS text
|
||||||
AS 'MODULE_PATHNAME','dblink_build_sql_insert' LANGUAGE 'c'
|
AS 'MODULE_PATHNAME','dblink_build_sql_insert' LANGUAGE 'c'
|
||||||
WITH (isstrict);
|
WITH (isstrict);
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION dblink_build_sql_delete (text, int2vector, int2, _text) RETURNS text
|
CREATE OR REPLACE FUNCTION dblink_build_sql_delete (text, int2vector, int4, _text) RETURNS text
|
||||||
AS 'MODULE_PATHNAME','dblink_build_sql_delete' LANGUAGE 'c'
|
AS 'MODULE_PATHNAME','dblink_build_sql_delete' LANGUAGE 'c'
|
||||||
WITH (isstrict);
|
WITH (isstrict);
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION dblink_build_sql_update (text, int2vector, int2, _text, _text) RETURNS text
|
CREATE OR REPLACE FUNCTION dblink_build_sql_update (text, int2vector, int4, _text, _text) RETURNS text
|
||||||
AS 'MODULE_PATHNAME','dblink_build_sql_update' LANGUAGE 'c'
|
AS 'MODULE_PATHNAME','dblink_build_sql_update' LANGUAGE 'c'
|
||||||
WITH (isstrict);
|
WITH (isstrict);
|
||||||
|
|
||||||
@ -82,8 +82,8 @@ GRANT EXECUTE ON FUNCTION dblink (text) TO PUBLIC;
|
|||||||
GRANT EXECUTE ON FUNCTION dblink_exec (text,text) TO PUBLIC;
|
GRANT EXECUTE ON FUNCTION dblink_exec (text,text) TO PUBLIC;
|
||||||
GRANT EXECUTE ON FUNCTION dblink_exec (text) TO PUBLIC;
|
GRANT EXECUTE ON FUNCTION dblink_exec (text) TO PUBLIC;
|
||||||
GRANT EXECUTE ON FUNCTION dblink_get_pkey (text) TO PUBLIC;
|
GRANT EXECUTE ON FUNCTION dblink_get_pkey (text) TO PUBLIC;
|
||||||
GRANT EXECUTE ON FUNCTION dblink_build_sql_insert (text, int2vector, int2, _text, _text) TO PUBLIC;
|
GRANT EXECUTE ON FUNCTION dblink_build_sql_insert (text, int2vector, int4, _text, _text) TO PUBLIC;
|
||||||
GRANT EXECUTE ON FUNCTION dblink_build_sql_delete (text, int2vector, int2, _text) TO PUBLIC;
|
GRANT EXECUTE ON FUNCTION dblink_build_sql_delete (text, int2vector, int4, _text) TO PUBLIC;
|
||||||
GRANT EXECUTE ON FUNCTION dblink_build_sql_update (text, int2vector, int2, _text, _text) TO PUBLIC;
|
GRANT EXECUTE ON FUNCTION dblink_build_sql_update (text, int2vector, int4, _text, _text) TO PUBLIC;
|
||||||
GRANT EXECUTE ON FUNCTION dblink_current_query () TO PUBLIC;
|
GRANT EXECUTE ON FUNCTION dblink_current_query () TO PUBLIC;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user