Set utf8 flag in pg_db_error_field
olafgw opened this issue · 2 comments
olafgw commented
Is it possible to set the utf8 flag at the end of pg_db_error_field() like pg_error()?
diff --git a/dbdimp.c b/dbdimp.c
index df136d3..7462ec9 100644
--- a/dbdimp.c
+++ b/dbdimp.c
@@ -4526,9 +4526,15 @@ SV * pg_db_error_field (SV *dbh, char * fieldname)
if (TEND_slow) TRC(DBILOGFP, "%sEnd pg_db_error_field (fieldcode: %d)\n", THEADER_slow, fieldcode);
- return NULL == PQresultErrorField(imp_dbh->last_result, fieldcode) ? &PL_sv_undef :
- sv_2mortal(newSVpv(PQresultErrorField(imp_dbh->last_result, fieldcode), 0));
-
+ char *pq_err_field = PQresultErrorField(imp_dbh->last_result, fieldcode);
+ if(NULL == pq_err_field) {
+ return &PL_sv_undef;
+ } else {
+ SV *sv_err_field = newSVpv(pq_err_field, 0);
+ if (imp_dbh->pg_utf8_flag)
+ SvUTF8_on(sv_err_field);
+ return sv_2mortal(sv_err_field);
+ }
} /* end of pg_db_error_field */