}
+#ifndef SHRT_MAX
+#define SHRT_MAX (0x7FFF)
+#endif
/*
* dblink_build_sql_insert
*
Oid relid;
text *relname_text;
int16 *pkattnums;
- int16 pknumatts;
+ int pknumatts_tmp;
+ int16 pknumatts = 0;
char **src_pkattvals;
char **tgt_pkattvals;
ArrayType *src_pkattvals_arry;
elog(ERROR, "dblink_build_sql_insert: relation does not exist");
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
Oid relid;
text *relname_text;
int16 *pkattnums;
- int16 pknumatts;
+ int pknumatts_tmp;
+ int16 pknumatts = 0;
char **tgt_pkattvals;
ArrayType *tgt_pkattvals_arry;
int tgt_ndim;
elog(ERROR, "dblink_build_sql_delete: relation does not exist");
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
Oid relid;
text *relname_text;
int16 *pkattnums;
- int16 pknumatts;
+ int pknumatts_tmp;
+ int16 pknumatts = 0;
char **src_pkattvals;
char **tgt_pkattvals;
ArrayType *src_pkattvals_arry;
elog(ERROR, "dblink_build_sql_update: relation does not exist");
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
AS 'MODULE_PATHNAME','dblink_get_pkey' LANGUAGE 'c'
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'
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'
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'
WITH (isstrict);
GRANT EXECUTE ON FUNCTION dblink_exec (text,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_build_sql_insert (text, int2vector, int2, _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_update (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, int4, _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;