aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/varlena.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/utils/adt/varlena.c')
-rw-r--r--src/backend/utils/adt/varlena.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/backend/utils/adt/varlena.c b/src/backend/utils/adt/varlena.c
index c74c890b9b5..0b0032787b2 100644
--- a/src/backend/utils/adt/varlena.c
+++ b/src/backend/utils/adt/varlena.c
@@ -4218,12 +4218,23 @@ text_to_array_internal(PG_FUNCTION_ARGS)
*/
if (fldsep_len < 1)
{
+ Datum elems[1];
+ bool nulls[1];
+ int dims[1];
+ int lbs[1];
+
text_position_cleanup(&state);
/* single element can be a NULL too */
is_null = null_string ? text_isequal(inputstring, null_string) : false;
- PG_RETURN_ARRAYTYPE_P(create_singleton_array(fcinfo, TEXTOID,
- PointerGetDatum(inputstring),
- is_null, 1));
+
+ elems[0] = PointerGetDatum(inputstring);
+ nulls[0] = is_null;
+ dims[0] = 1;
+ lbs[0] = 1;
+ /* XXX: this hardcodes assumptions about the text type */
+ PG_RETURN_ARRAYTYPE_P(construct_md_array(elems, nulls,
+ 1, dims, lbs,
+ TEXTOID, -1, false, 'i'));
}
start_posn = 1;