]> granicus.if.org Git - postgresql/commitdiff
Fixed test for array boundary.
authorMichael Meskes <meskes@postgresql.org>
Fri, 5 Oct 2012 14:37:45 +0000 (16:37 +0200)
committerMichael Meskes <meskes@postgresql.org>
Fri, 5 Oct 2012 15:07:31 +0000 (17:07 +0200)
Instead of continuing if the next character is not an array boundary get_data()
used to continue only on finding a boundary so it was not able to read any
element after the first.

src/interfaces/ecpg/ecpglib/data.c

index db975035df916e6dca5a3a55f28835f7cc468179..dcccd924ece1a6de4a42950b11b734381a7e94eb 100644 (file)
@@ -422,6 +422,7 @@ ecpg_get_data(const PGresult *results, int act_tuple, int act_field, int lineno,
                                                        ecpg_raise(lineno, ECPG_CONVERT_BOOL,
                                                                           ECPG_SQLSTATE_DATATYPE_MISMATCH,
                                                                           NULL);
+                                               pval++;
                                                break;
                                        }
                                        else if (pval[0] == 't' && pval[1] == '\0')
@@ -434,6 +435,7 @@ ecpg_get_data(const PGresult *results, int act_tuple, int act_field, int lineno,
                                                        ecpg_raise(lineno, ECPG_CONVERT_BOOL,
                                                                           ECPG_SQLSTATE_DATATYPE_MISMATCH,
                                                                           NULL);
+                                               pval++;
                                                break;
                                        }
                                        else if (pval[0] == '\0' && PQgetisnull(results, act_tuple, act_field))
@@ -777,7 +779,7 @@ ecpg_get_data(const PGresult *results, int act_tuple, int act_field, int lineno,
                                        ++pval;
                        }
                }
-       } while (*pval != '\0' && array_boundary(isarray, *pval));
+       } while (*pval != '\0' && !array_boundary(isarray, *pval));
 
        return (true);
 }