Hi everyone,

Would adding additional examples to testlibpq3.c on handling more data
types be helpful?  I've attached a patch adding how to handle a REAL to
current example.

Regards,
Mark
diff --git a/src/test/examples/testlibpq3.c b/src/test/examples/testlibpq3.c
index 4f7b791388..0c1739fcbb 100644
--- a/src/test/examples/testlibpq3.c
+++ b/src/test/examples/testlibpq3.c
@@ -11,19 +11,21 @@
  * CREATE SCHEMA testlibpq3;
  * SET search_path = testlibpq3;
  * SET standard_conforming_strings = ON;
- * CREATE TABLE test1 (i int4, t text, b bytea);
- * INSERT INTO test1 values (1, 'joe''s place', '\000\001\002\003\004');
- * INSERT INTO test1 values (2, 'ho there', '\004\003\002\001\000');
+ * CREATE TABLE test1 (i int4, r real, t text, b bytea);
+ * INSERT INTO test1 values (1, 2.3, 'joe''s place', '\000\001\002\003\004');
+ * INSERT INTO test1 values (2, 4.5 'ho there', '\004\003\002\001\000');
  *
  * The expected output is:
  *
  * tuple 0: got
  *     i = (4 bytes) 1
+ *     r = (4 bytes) 2.3
  *     t = (11 bytes) 'joe's place'
  *     b = (5 bytes) \000\001\002\003\004
  *
  * tuple 0: got
  *     i = (4 bytes) 2
+ *     r = (4 bytes) 4.5
  *     t = (8 bytes) 'ho there'
  *     b = (5 bytes) \004\003\002\001\000
  */
@@ -62,32 +64,41 @@ show_binary_results(PGresult *res)
        int                     i,
                                j;
        int                     i_fnum,
+                               r_fnum,
                                t_fnum,
                                b_fnum;
 
        /* Use PQfnumber to avoid assumptions about field order in result */
        i_fnum = PQfnumber(res, "i");
+       r_fnum = PQfnumber(res, "r");
        t_fnum = PQfnumber(res, "t");
        b_fnum = PQfnumber(res, "b");
 
        for (i = 0; i < PQntuples(res); i++)
        {
                char       *iptr;
+               char       *rptr;
                char       *tptr;
                char       *bptr;
                int                     blen;
                int                     ival;
+               union {
+                       int             ival;
+                       float   fval;
+               }                       rval;
 
                /* Get the field values (we ignore possibility they are null!) 
*/
                iptr = PQgetvalue(res, i, i_fnum);
+               rptr = PQgetvalue(res, i, r_fnum);
                tptr = PQgetvalue(res, i, t_fnum);
                bptr = PQgetvalue(res, i, b_fnum);
 
                /*
-                * The binary representation of INT4 is in network byte order, 
which
-                * we'd better coerce to the local byte order.
+                * The binary representation of INT4 and REAL are in network 
byte
+                * order, which we'd better coerce to the local byte order.
                 */
                ival = ntohl(*((uint32_t *) iptr));
+               rval.ival = ntohl(*((uint32_t *) rptr));
 
                /*
                 * The binary representation of TEXT is, well, text, and since 
libpq
@@ -102,6 +113,8 @@ show_binary_results(PGresult *res)
                printf("tuple %d: got\n", i);
                printf(" i = (%d bytes) %d\n",
                           PQgetlength(res, i, i_fnum), ival);
+               printf(" r = (%d bytes) %f\n",
+                          PQgetlength(res, i, r_fnum), rval.fval);
                printf(" t = (%d bytes) '%s'\n",
                           PQgetlength(res, i, t_fnum), tptr);
                printf(" b = (%d bytes) ", blen);
diff --git a/src/test/examples/testlibpq3.sql b/src/test/examples/testlibpq3.sql
index 35a95ca347..e3a70cec27 100644
--- a/src/test/examples/testlibpq3.sql
+++ b/src/test/examples/testlibpq3.sql
@@ -1,6 +1,6 @@
 CREATE SCHEMA testlibpq3;
 SET search_path = testlibpq3;
 SET standard_conforming_strings = ON;
-CREATE TABLE test1 (i int4, t text, b bytea);
-INSERT INTO test1 values (1, 'joe''s place', '\000\001\002\003\004');
-INSERT INTO test1 values (2, 'ho there', '\004\003\002\001\000');
+CREATE TABLE test1 (i int4, r real, t text, b bytea);
+INSERT INTO test1 values (1, 2.3, 'joe''s place', '\000\001\002\003\004');
+INSERT INTO test1 values (2, 4.5, 'ho there', '\004\003\002\001\000');

Reply via email to