]> granicus.if.org Git - postgresql/commitdiff
> 1) When a row is retrieved, and then a SQL_FETCH_FIRST is issued, the
authorBruce Momjian <bruce@momjian.us>
Sat, 4 Aug 2001 19:33:49 +0000 (19:33 +0000)
committerBruce Momjian <bruce@momjian.us>
Sat, 4 Aug 2001 19:33:49 +0000 (19:33 +0000)
check
> in convert.c
> does not consider the fact that the value in the field has been altered to
> be a '1' if the
> backend handed it a 't'.  The net result being that the first row on any
> subsequent queries
> has all it's boolean set to 0.

Aidan Mountford

src/interfaces/odbc/convert.c

index 69d3043b9527e2cb3b56d187cba7d70cbcea60f1..a99eba0af82f6d1b7d31f21f7e75cdd5a48a4e36 100644 (file)
@@ -292,10 +292,23 @@ copy_and_convert_field(StatementClass *stmt, Int4 field_type, void *value, Int2
                        {                                       /* change T/F to 1/0 */
                                char       *s = (char *) value;
 
-                               if (s[0] == 'T' || s[0] == 't')
+                               /*  Aidan Mountford (aidan@oz.to) 1/08/2001:  
+                                       
+                                       >> if (s[0] == 'T' || s[0] == 't') <<< This wont work...
+
+                                       When MoveFirst is called twice on one set of tuples, 
+                                       this will have the effect of setting s[0] to 1 on the
+                                       first pass, and s[0] on the second.
+
+                                       This is bad ;)
+
+                               */
+                                       
+                               if (s[0] == 'T' || s[0] == 't' || s[0] == '1')
                                        s[0] = '1';
                                else
-                                       s[0] = '0';
+                                   s[0] = '0';
+
                        }
                        break;
 
@@ -1158,7 +1171,10 @@ copy_statement_with_parameters(StatementClass *stmt)
                }
                else
                {
+                       
+                       
                        used = stmt->parameters[param_number].used ? *stmt->parameters[param_number].used : SQL_NTS;
+                       
                        buffer = stmt->parameters[param_number].buffer;
                }