From: Bruce Momjian <bruce@momjian.us>
Date: Sat, 4 Aug 2001 19:33:49 +0000 (+0000)
Subject: > 1) When a row is retrieved, and then a SQL_FETCH_FIRST is issued, the
X-Git-Tag: REL7_2_BETA1~773
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f8683e8a9c9369d1713e9a13867a0541ac56787e;p=postgresql

> 1) When a row is retrieved, and then a SQL_FETCH_FIRST is issued, the
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
---

diff --git a/src/interfaces/odbc/convert.c b/src/interfaces/odbc/convert.c
index 69d3043b95..a99eba0af8 100644
--- a/src/interfaces/odbc/convert.c
+++ b/src/interfaces/odbc/convert.c
@@ -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;
 		}