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