]> granicus.if.org Git - pdns/commitdiff
Handle NULL and boolean properly in gPGSql
authorAki Tuomi <cmouse@desteem.org>
Sun, 13 Sep 2015 16:45:32 +0000 (19:45 +0300)
committerAki Tuomi <cmouse@cmouse.fi>
Tue, 15 Sep 2015 06:33:48 +0000 (09:33 +0300)
modules/gpgsqlbackend/spgsql.cc

index 84bff3cccb64ea7e79f48c3c783172892e7e5185..49f7ae309f97ae7bcfc1d61936b27a34d15895f9 100644 (file)
@@ -166,8 +166,16 @@ bool SPgSQL::getRow(row_t &row)
     return false;
   }
   
-  for(int i=0;i<PQnfields(d_result);i++)
-    row.push_back(PQgetvalue(d_result,d_count,i) ?: "");
+  for(int i=0;i<PQnfields(d_result);i++) {
+    if (PQgetisnull(d_result, d_count, i)) {
+      row.push_back("");
+    } else if (PQftype(d_result, i) == 16) { // BOOLEAN
+      char *val = PQgetvalue(d_result, d_count, i);
+      row.push_back(val[0] == 't' ? "1" : "0");
+    } else {
+      row.push_back(string(PQgetvalue(d_result, d_count, i)));
+    }
+  }
   d_count++;
   return true;
 }