diff options
Diffstat (limited to 'src/backend/utils')
| -rw-r--r-- | src/backend/utils/adt/numutils.c | 22 | ||||
| -rw-r--r-- | src/backend/utils/adt/tsquery_rewrite.c | 3 | ||||
| -rw-r--r-- | src/backend/utils/adt/tsvector_op.c | 3 | ||||
| -rw-r--r-- | src/backend/utils/adt/xml.c | 10 |
4 files changed, 31 insertions, 7 deletions
diff --git a/src/backend/utils/adt/numutils.c b/src/backend/utils/adt/numutils.c index 6b105964bd..da100f7c0f 100644 --- a/src/backend/utils/adt/numutils.c +++ b/src/backend/utils/adt/numutils.c @@ -388,3 +388,25 @@ pg_ltostr(char *str, int32 value) return end; } + +/* + * pg_strtouint64 + * Converts 'str' into an unsigned 64-bit integer. + * + * This has the identical API to strtoul(3), except that it will handle + * 64-bit ints even where "long" is narrower than that. + * + * For the moment it seems sufficient to assume that the platform has + * such a function somewhere; let's not roll our own. + */ +uint64 +pg_strtouint64(const char *str, char **endptr, int base) +{ +#ifdef WIN32 + return _strtoui64(str, endptr, base); +#elif defined(HAVE_STRTOULL) && SIZEOF_LONG < 8 + return strtoull(str, endptr, base); +#else + return strtoul(str, endptr, base); +#endif +} diff --git a/src/backend/utils/adt/tsquery_rewrite.c b/src/backend/utils/adt/tsquery_rewrite.c index 0870afd867..28f328ddb3 100644 --- a/src/backend/utils/adt/tsquery_rewrite.c +++ b/src/backend/utils/adt/tsquery_rewrite.c @@ -260,7 +260,6 @@ tsquery_rewrite_query(PG_FUNCTION_ARGS) SPIPlanPtr plan; Portal portal; bool isnull; - int i; if (query->size == 0) { @@ -294,6 +293,8 @@ tsquery_rewrite_query(PG_FUNCTION_ARGS) while (SPI_processed > 0 && tree) { + uint64 i; + for (i = 0; i < SPI_processed && tree; i++) { Datum qdata = SPI_getbinval(SPI_tuptable->vals[i], SPI_tuptable->tupdesc, 1, &isnull); diff --git a/src/backend/utils/adt/tsvector_op.c b/src/backend/utils/adt/tsvector_op.c index 186b3d337a..f6d3fb5d7b 100644 --- a/src/backend/utils/adt/tsvector_op.c +++ b/src/backend/utils/adt/tsvector_op.c @@ -1682,7 +1682,6 @@ static TSVectorStat * ts_stat_sql(MemoryContext persistentContext, text *txt, text *ws) { char *query = text_to_cstring(txt); - int i; TSVectorStat *stat; bool isnull; Portal portal; @@ -1746,6 +1745,8 @@ ts_stat_sql(MemoryContext persistentContext, text *txt, text *ws) while (SPI_processed > 0) { + uint64 i; + for (i = 0; i < SPI_processed; i++) { Datum data = SPI_getbinval(SPI_tuptable->vals[i], SPI_tuptable->tupdesc, 1, &isnull); diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c index 56179f822e..7ed5bcb93d 100644 --- a/src/backend/utils/adt/xml.c +++ b/src/backend/utils/adt/xml.c @@ -161,7 +161,7 @@ static const char *map_sql_catalog_to_xmlschema_types(List *nspid_list, static const char *map_sql_type_to_xml_name(Oid typeoid, int typmod); static const char *map_sql_typecoll_to_xmlschema_types(List *tupdesc_list); static const char *map_sql_type_to_xmlschema_type(Oid typeoid, int typmod); -static void SPI_sql_row_to_xmlelement(int rownum, StringInfo result, +static void SPI_sql_row_to_xmlelement(uint64 rownum, StringInfo result, char *tablename, bool nulls, bool tableforest, const char *targetns, bool top_level); @@ -2260,7 +2260,7 @@ _SPI_strdup(const char *s) static List * query_to_oid_list(const char *query) { - int i; + uint64 i; List *list = NIL; SPI_execute(query, true, 0); @@ -2379,7 +2379,7 @@ cursor_to_xml(PG_FUNCTION_ARGS) StringInfoData result; Portal portal; - int i; + uint64 i; initStringInfo(&result); @@ -2454,7 +2454,7 @@ query_to_xml_internal(const char *query, char *tablename, { StringInfo result; char *xmltn; - int i; + uint64 i; if (tablename) xmltn = map_sql_identifier_to_xml_name(tablename, true, false); @@ -3532,7 +3532,7 @@ map_sql_type_to_xmlschema_type(Oid typeoid, int typmod) * SPI cursor. See also SQL/XML:2008 section 9.10. */ static void -SPI_sql_row_to_xmlelement(int rownum, StringInfo result, char *tablename, +SPI_sql_row_to_xmlelement(uint64 rownum, StringInfo result, char *tablename, bool nulls, bool tableforest, const char *targetns, bool top_level) { |
