anchor.diff:  
   Function TOdbcConnection.GetInfoString(InfoType: SQLUSMALLINT): String;
   Var
  -  Supported: NullString;
  +  Supported: PChar;
     StringLength: SQLSMALLINT;
   Begin
     Connect;
   
  -  FRetCode:= SQLGetInfo(FHdbc, InfoType, @Supported, SizeOf(Supported), StringLength);
  -  If Not FEnv.Error.Success(FRetCode) Then
  -    Result:= ''
  -  Else
  -    Result:= StrPas(Supported);
  +  Supported := odbcPChar(DefaultStringCount);
  +  try
  +    FRetCode:= SQLGetInfo(FHdbc, InfoType, Supported, DefaultStringSize, StringLength);
  +    If Not FEnv.Error.Success(FRetCode) Then
  +      Result:= ''
  +    Else
  +      Result:= fromOdbcPChar(Supported);
  +  finally
  +    FreeMem(supported);
  +  end;
   End;
   
   Function TOdbcConnection.GetInfoSmallint(InfoType: SQLUSMALLINT): SQLUSMALLINT;
  
positive.code:   BindNull(ParamByName(ParamName));
  End;
  
  Procedure TOdbcStatement.BindNullStringByName(ParamName: String;
                                        Var ParamValue: NullString);
  Begin
    BindNullString(ParamByName(ParamName), ParamValue);
  End;
  
  Procedure TOdbcStatement.BindStringByName(ParamName: String;
                                    Var ParamValue: String);
  Begin
  
negative.code: 
  Procedure TOdbcStatement.DetermineTargetTable;
  Var
    CharAttr: PChar;
    NumAttr: SQLLEN;
    StringLength: SQLSMALLINT;
    Loc: Integer;
  Begin
    CharAttr := odbcPChar(DefaultStringSize);
    try
      { Determine Target Table }
      If Trim(FTargetTable) = '' Then
      Begin
        FRetCode:= SQLColAttribute(FHstmt, 1, SQL_DESC_SCHEMA_NAME, CharAttr, DefaultStringSize, StringLength, NumAttr);
        FTableOwner:= Trim(fromOdbcPChar(CharAttr));
        If Not FEnv.Error.Success(FRetCode) Then
          FTableOwner:= '';
  
        FRetCode:= SQLColAttribute(FHstmt, 1, SQL_DESC_TABLE_NAME, CharAttr, DefaultStringSize, StringLength, NumAttr);
        FTableName:= Trim(fromOdbcPChar(CharAttr));
        If FTableName = '' Then
        Begin
          FTableName:= StringReplace(FSQL, EnterString, ' ', [rfReplaceAll, rfIgnoreCase]);
          Loc:= Pos(' FROM ', UpperCase(FTableName));
          If Loc > 0 Then
          Begin
            FTableName:= Trim(Copy(FTableName, Loc+6, Length(FTableName)-Loc-5));
            Loc:= Pos(' ', FTableName);
            If Loc > 0 Then
              FTableName:= Copy(FTableName, 1, Loc-1);  //can include table owner
          End
          Else
            FTableName:= '';
        End;
        If (Not FEnv.Error.Success(FRetCode)) Or (FTableName = '') Then
          Raise EODBCExpress.Create('Unable to determine table name:  set TargetTable property.');
      End
      Else
      Begin
        FTableOwner:= '';
        FTableName:= Trim(FTargetTable);
      End;
    finally
      freemem(CharAttr);
    end;
  End;
  
  Procedure TOdbcStatement.DeterminePrimaryCols;
  