Author: turnstep
Date: Mon Aug 18 06:42:05 2008
New Revision: 11661
Modified:
DBD-Pg/trunk/Changes
DBD-Pg/trunk/dbdimp.c
DBD-Pg/trunk/t/09arrays.t
Log:
Mapping empty Postgres arrays should give an empty Perl array, not an undef-filled one.
Thanks to David E. Wheeler for catching this.
Modified: DBD-Pg/trunk/Changes
==============================================================================
--- DBD-Pg/trunk/Changes (original)
+++ DBD-Pg/trunk/Changes Mon Aug 18 06:42:05 2008
@@ -1,6 +1,11 @@
('GSM' is Greg Sabino Mullane, [email protected])
-2.9.1 Released August 17, 2008
+2.9.2 Released August 18, 2008
+
+ - Empty Postgres arrays should return empty Perl arrays, not undef.
+ (CPAN bug #38552) [David E. Wheeler]
+
+2.9.1 Released August 17, 2008 (subversion r11660)
- Return undef when mapping Postgres array to Perl array and
the array is empty '{}'. (CPAN bug #38552) [GSM]
Modified: DBD-Pg/trunk/dbdimp.c
==============================================================================
--- DBD-Pg/trunk/dbdimp.c (original)
+++ DBD-Pg/trunk/dbdimp.c Mon Aug 18 06:42:05 2008
@@ -2531,8 +2531,10 @@
if ('}' == *input || (coltype->array_delimeter == *input && '}' != *(input-1))) {
string[section_size] = '\0';
- if ((0 == section_size && !seen_quotes) ||
- ((4 == section_size && 0 == strncmp(string, "NULL", 4) && '"' != *(input-1)))) {
+ if (0 == section_size && !seen_quotes) {
+ /* Just an empty array */
+ }
+ else if (4 == section_size && 0 == strncmp(string, "NULL", 4) && '"' != *(input-1)) {
av_push(currentav, &PL_sv_undef);
}
else {
Modified: DBD-Pg/trunk/t/09arrays.t
==============================================================================
--- DBD-Pg/trunk/t/09arrays.t (original)
+++ DBD-Pg/trunk/t/09arrays.t Mon Aug 18 06:42:05 2008
@@ -296,12 +296,12 @@
## Test of no-item and empty string arrays
-$t=q{String array with no items returns undef};
+$t=q{String array with no items returns empty array};
$cleararray->execute();
$addarray->execute('{}');
$getarray->execute();
$result = $getarray->fetchall_arrayref();
-is_deeply ($result, [[[undef]]], $t);
+is_deeply ($result, [[[]]], $t);
$t=q{String array with empty string returns empty string};
$cleararray->execute();
@@ -310,12 +310,12 @@
$result = $getarray->fetchall_arrayref();
is_deeply ($result, [[['']]], $t);
-$t=q{Integer array with no items returns undef};
+$t=q{Integer array with no items returns empty array};
$cleararray->execute();
$addarray_int->execute('{}');
$getarray_int->execute();
$result = $getarray_int->fetchall_arrayref();
-is_deeply ($result, [[[undef]]], $t);
+is_deeply ($result, [[[]]], $t);
## Pure string to array conversion testing
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.