diff --git a/regress/expected/agtype.out b/regress/expected/agtype.out index 49d227846..25770154f 100644 --- a/regress/expected/agtype.out +++ b/regress/expected/agtype.out @@ -3191,6 +3191,30 @@ SELECT agtype_btree_cmp( -1 (1 row) +--Int2 to Agtype in agtype_volatile_wrapper +SELECT ag_catalog.agtype_volatile_wrapper(1::int2); + agtype_volatile_wrapper +------------------------- + 1 +(1 row) + +SELECT ag_catalog.agtype_volatile_wrapper(32767::int2); + agtype_volatile_wrapper +------------------------- + 32767 +(1 row) + +SELECT ag_catalog.agtype_volatile_wrapper(-32767::int2); + agtype_volatile_wrapper +------------------------- + -32767 +(1 row) + +-- These should fail +SELECT ag_catalog.agtype_volatile_wrapper(32768::int2); +ERROR: smallint out of range +SELECT ag_catalog.agtype_volatile_wrapper(-32768::int2); +ERROR: smallint out of range -- -- Cleanup -- diff --git a/regress/sql/agtype.sql b/regress/sql/agtype.sql index e3bef554b..2cb153efb 100644 --- a/regress/sql/agtype.sql +++ b/regress/sql/agtype.sql @@ -924,6 +924,15 @@ SELECT agtype_btree_cmp( '[{"id":1, "label":"test", "properties":{"id":100}}::vertex, {"id":2, "start_id":1, "end_id": 3, "label":"elabel", "properties":{}}::edge, {"id":4, "label":"vlabel", "properties":{}}::vertex]::path'::agtype); + +--Int2 to Agtype in agtype_volatile_wrapper +SELECT ag_catalog.agtype_volatile_wrapper(1::int2); +SELECT ag_catalog.agtype_volatile_wrapper(32767::int2); +SELECT ag_catalog.agtype_volatile_wrapper(-32767::int2); + +-- These should fail +SELECT ag_catalog.agtype_volatile_wrapper(32768::int2); +SELECT ag_catalog.agtype_volatile_wrapper(-32768::int2); -- -- Cleanup -- diff --git a/src/backend/utils/adt/agtype.c b/src/backend/utils/adt/agtype.c index f8cfb3ccb..e4326aa85 100644 --- a/src/backend/utils/adt/agtype.c +++ b/src/backend/utils/adt/agtype.c @@ -10791,7 +10791,7 @@ Datum agtype_volatile_wrapper(PG_FUNCTION_ARGS) { agtv_result.val.int_value = (int64) DatumGetInt32(arg); } - else if (type == INT4OID) + else if (type == INT2OID) { agtv_result.val.int_value = (int64) DatumGetInt16(arg); }