*** ./interfaces/odbc/convert.c	Thu Aug 02 15:28:28 2001
--- ./interfaces/odbc/.#convert.c.1.44	Wed Aug 01 23:36:58 2001
***************
*** 292,301 ****
  			{					/* change T/F to 1/0 */
  				char	   *s = (char *) value;
  
! 				if (s[0] == 'T' || s[0] == 't')
  					s[0] = '1';
  				else
! 					s[0] = '0';
  			}
  			break;
  
--- 292,314 ----
  			{					/* change T/F to 1/0 */
  				char	   *s = (char *) value;
  
! 				/*  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';
! 
  			}
  			break;
  
***************
*** 412,421 ****
  				break;
  
  			case PG_TYPE_BOOL:
! 				len = 1;
  				if (cbValueMax > len)
  				{
! 					strcpy(rgbValueBindRow, value);
  					mylog("PG_TYPE_BOOL: rgbValueBindRow = '%s'\n", rgbValueBindRow);
  				}
  				break;
--- 425,452 ----
  				break;
  
  			case PG_TYPE_BOOL:
! 				
  				if (cbValueMax > len)
  				{
! 					/*  Aidan Mountford (aidan@oz.to) 1/08/2001:  
! 						
! 						When returning a CHAR datatype, return -1
! 						instead of +1.  
! 
! 						That way if someone casts it back to a boolean
! 						again - it will work.
! 					*/
! 					if ( *(char *) value = '1')
! 					{
! 					    strcpy(rgbValueBindRow, "-1");
! 						len = 2;
! 					}
! 					else
! 					{
! 					    strcpy(rgbValueBindRow, "0");
! 						len = 1;
! 					}
! 
  					mylog("PG_TYPE_BOOL: rgbValueBindRow = '%s'\n", rgbValueBindRow);
  				}
  				break;
***************
*** 1158,1164 ****
--- 1189,1198 ----
  		}
  		else
  		{
+ 			
+ 			
  			used = stmt->parameters[param_number].used ? *stmt->parameters[param_number].used : SQL_NTS;
+ 			
  			buffer = stmt->parameters[param_number].buffer;
  		}
  
