Thomas A. Lowery wrote:
> 
> Great stuff, I've applied your patch to the attached copy. I haven't had
> to much time to test.
> 
> I did change the where the ado_consts, myado_types* to attributes of
> the database handler, instead of package variable. I was having some
> "score" problems.
> 
> One challenge is supporting two different values for SQL_BIT. Which
> version is truly needed?

The problem moved to SQL_BIGINT :-(
The attached patch drops (most of) the datatype constants and uses
the DBI 1.21 constants.


Steffen
*** DBD-ADO-2.4.02-orig/lib/DBD\ADO.pm  Thu Dec 13 01:17:30 2001
--- ADO.pm      Fri Feb 08 09:29:08 2002
***************
*** 111,160 ****
  
        use constant DBPROPVAL_TC_NONE  => 0;
  
!       use constant SQL_GUID                                                          
                                         => -11;
!       use constant SQL_WLONGVARCHAR                 =>  -10;
!       use constant SQL_WVARCHAR                     =>   -9;
!       use constant SQL_WCHAR                        =>   -8;
!       use constant SQL_BIT_MS                       =>   -7;
!       use constant SQL_TINYINT                      =>   -6;
!       use constant SQL_BIGINT                       =>   -5;
!       use constant SQL_LONGVARBINARY                =>   -4;
!       use constant SQL_VARBINARY                    =>   -3;
!       use constant SQL_BINARY                       =>   -2;
!       use constant SQL_LONGVARCHAR                  =>   -1;
!       use constant SQL_UNKNOWN_TYPE                                                  
                 =>   0;
! 
!       use constant SQL_BIT                          =>   14;
!       use constant SQL_BIT_VARYING                  =>   15;
!       use constant SQL_BOOLEAN                      =>   16;
!       use constant SQL_UDT                          =>   17;
!       use constant SQL_UDT_LOCATOR                  =>   18;
!       use constant SQL_ROW                          =>   19;
!       use constant SQL_REF                          =>   20;
!       use constant SQL_BLOB                         =>   30;
!       use constant SQL_BLOB_LOCATOR                 =>   31;
!       use constant SQL_CLOB                         =>   40;
!       use constant SQL_CLOB_LOCATOR                 =>   41;
!       use constant SQL_ARRAY                        =>   50;
!       use constant SQL_ARRAY_LOCATOR                =>   51;
!       use constant SQL_TYPE_DATE                    =>   91;
!       use constant SQL_TYPE_TIME                    =>   92;
!       use constant SQL_TYPE_TIMESTAMP               =>   93;
!       use constant SQL_TYPE_TIME_WITH_TIMEZONE      =>   94;
!       use constant SQL_TYPE_TIMESTAMP_WITH_TIMEZONE =>   95;
!       use constant SQL_INTERVAL_YEAR                =>  101;
!       use constant SQL_INTERVAL_MONTH               =>  102;
!       use constant SQL_INTERVAL_DAY                 =>  103;
!       use constant SQL_INTERVAL_HOUR                =>  104;
!       use constant SQL_INTERVAL_MINUTE              =>  105;
!       use constant SQL_INTERVAL_SECOND              =>  106;
!       use constant SQL_INTERVAL_YEAR_TO_MONTH       =>  107;
!       use constant SQL_INTERVAL_DAY_TO_HOUR         =>  108;
!       use constant SQL_INTERVAL_DAY_TO_MINUTE       =>  109;
!       use constant SQL_INTERVAL_DAY_TO_SECOND       =>  110;
!       use constant SQL_INTERVAL_HOUR_TO_MINUTE      =>  111;
!       use constant SQL_INTERVAL_HOUR_TO_SECOND      =>  112;
!       use constant SQL_INTERVAL_MINUTE_TO_SECOND    =>  113;
    
        my $ado_consts = ();
        my $myado_types_supported = ();
--- 111,119 ----
  
        use constant DBPROPVAL_TC_NONE  => 0;
  
!       # additional datatypes:
!       use constant ODBC_BIGINT => -5;
!       use constant  SQL_BIGINT => 25;
    
        my $ado_consts = ();
        my $myado_types_supported = ();
***************
*** 176,236 ****
  
        $myado_types_supported2 = {
                      # AdoType     IsLong IsFixed => SqlType
!         $ado_consts->{adBinary   } => { 0 => { 0 =>      SQL_VARBINARY
!                                              , 1 =>      SQL_BINARY        }
!                                       , 1 => { 0 =>      SQL_LONGVARBINARY
!                                              , 1 =>      SQL_UNKNOWN_TYPE  }}
        , $ado_consts->{adChar     } => { 0 => { 0 => DBI::SQL_VARCHAR
                                               , 1 => DBI::SQL_CHAR          }
!                                       , 1 => { 0 =>      SQL_LONGVARCHAR
!                                              , 1 =>      SQL_UNKNOWN_TYPE  }}
!       , $ado_consts->{adWChar    } => { 0 => { 0 =>      SQL_WVARCHAR
!                                              , 1 =>      SQL_WCHAR         }
!                                       , 1 => { 0 =>      SQL_WLONGVARCHAR
!                                              , 1 =>      SQL_UNKNOWN_TYPE  }}
  #     , $ado_consts->{adVarBinary} =>
  #     , $ado_consts->{adVarChar  } =>
  #     , $ado_consts->{adVarWChar } =>
        };
  
        $myado_types_supported = {
!         $ado_consts->{adArray}                                                =>     
 SQL_ARRAY
!       , $ado_consts->{adBigInt}                                               =>     
 SQL_BIGINT
        , $ado_consts->{adBinary}                                               => 
DBI::SQL_BINARY
!       , $ado_consts->{adBoolean}                                      =>      
SQL_BOOLEAN
!       , $ado_consts->{adBSTR}                                                 =>     
 SQL_UNKNOWN_TYPE
!       , $ado_consts->{adChapter}                                      =>      
SQL_UNKNOWN_TYPE
        , $ado_consts->{adChar}                                                 => 
DBI::SQL_CHAR
        , $ado_consts->{adCurrency}                                     => 
DBI::SQL_NUMERIC
!       , $ado_consts->{adDate}                                                 =>     
 SQL_TYPE_TIMESTAMP # XXX Not really!
!       , $ado_consts->{adDBDate}                                               =>     
 SQL_TYPE_DATE
!       , $ado_consts->{adDBTime}                                               =>     
 SQL_TYPE_TIME
!       , $ado_consts->{adDBTimeStamp}                  =>      SQL_TYPE_TIMESTAMP
        , $ado_consts->{adDecimal}                                      => 
DBI::SQL_DECIMAL
        , $ado_consts->{adDouble}                                               => 
DBI::SQL_DOUBLE
!       , $ado_consts->{adEmpty}                                                =>     
 SQL_UNKNOWN_TYPE
!       , $ado_consts->{adError}                                                =>     
 SQL_UNKNOWN_TYPE
        , $ado_consts->{adFileTime}                                     => 
DBI::SQL_TIMESTAMP
!       , $ado_consts->{adGUID}                                                 =>     
 SQL_GUID
!       , $ado_consts->{adIDispatch}                            =>      
SQL_UNKNOWN_TYPE
        , $ado_consts->{adInteger}                                      => 
DBI::SQL_INTEGER
!       , $ado_consts->{adIUnknown}                                     =>      
SQL_UNKNOWN_TYPE
        , $ado_consts->{adLongVarBinary}                => DBI::SQL_LONGVARBINARY
        , $ado_consts->{adLongVarChar}                  => DBI::SQL_LONGVARCHAR
        , $ado_consts->{adLongVarWChar}                 => DBI::SQL_WLONGVARCHAR
        , $ado_consts->{adNumeric}                                      => 
DBI::SQL_NUMERIC
!       , $ado_consts->{adPropVariant}                  =>      SQL_UNKNOWN_TYPE
        , $ado_consts->{adSingle}                                               => 
DBI::SQL_FLOAT
        , $ado_consts->{adSmallInt}                                     => 
DBI::SQL_SMALLINT
        , $ado_consts->{adTinyInt}                                      => 
DBI::SQL_TINYINT
!       , $ado_consts->{adUnsignedBigInt}               =>      SQL_UNKNOWN_TYPE
        , $ado_consts->{adUnsignedInt}                  => DBI::SQL_WCHAR
!       , $ado_consts->{adUnsignedSmallInt}     =>      SQL_UNKNOWN_TYPE
!       , $ado_consts->{adUnsignedTinyInt}      =>      SQL_UNKNOWN_TYPE
!       , $ado_consts->{adUserDefined}                  =>      SQL_UNKNOWN_TYPE
        , $ado_consts->{adVarBinary}                            => DBI::SQL_VARBINARY
        , $ado_consts->{adVarChar}                                      => 
DBI::SQL_VARCHAR
!       , $ado_consts->{adVariant}                                      =>      
SQL_UNKNOWN_TYPE
        , $ado_consts->{adVarNumeric}                           => DBI::SQL_INTEGER
        , $ado_consts->{adVarWChar}                                     => 
DBI::SQL_WVARCHAR
        , $ado_consts->{adWChar}                                                => 
DBI::SQL_WCHAR
--- 135,195 ----
  
        $myado_types_supported2 = {
                      # AdoType     IsLong IsFixed => SqlType
!         $ado_consts->{adBinary   } => { 0 => { 0 => DBI::SQL_VARBINARY
!                                              , 1 => DBI::SQL_BINARY        }
!                                       , 1 => { 0 => DBI::SQL_LONGVARBINARY
!                                              , 1 => DBI::SQL_UNKNOWN_TYPE  }}
        , $ado_consts->{adChar     } => { 0 => { 0 => DBI::SQL_VARCHAR
                                               , 1 => DBI::SQL_CHAR          }
!                                       , 1 => { 0 => DBI::SQL_LONGVARCHAR
!                                              , 1 => DBI::SQL_UNKNOWN_TYPE  }}
!       , $ado_consts->{adWChar    } => { 0 => { 0 => DBI::SQL_WVARCHAR
!                                              , 1 => DBI::SQL_WCHAR         }
!                                       , 1 => { 0 => DBI::SQL_WLONGVARCHAR
!                                              , 1 => DBI::SQL_UNKNOWN_TYPE  }}
  #     , $ado_consts->{adVarBinary} =>
  #     , $ado_consts->{adVarChar  } =>
  #     , $ado_consts->{adVarWChar } =>
        };
  
        $myado_types_supported = {
!         $ado_consts->{adArray}                                                => 
DBI::SQL_ARRAY
!       , $ado_consts->{adBigInt}                                               =>     
ODBC_BIGINT  # XXX SQL_BIGINT?
        , $ado_consts->{adBinary}                                               => 
DBI::SQL_BINARY
!       , $ado_consts->{adBoolean}                                      => 
DBI::SQL_BOOLEAN
!       , $ado_consts->{adBSTR}                                                 => 
DBI::SQL_UNKNOWN_TYPE
!       , $ado_consts->{adChapter}                                      => 
DBI::SQL_UNKNOWN_TYPE
        , $ado_consts->{adChar}                                                 => 
DBI::SQL_CHAR
        , $ado_consts->{adCurrency}                                     => 
DBI::SQL_NUMERIC
!       , $ado_consts->{adDate}                                                 => 
DBI::SQL_TYPE_TIMESTAMP # XXX Not really!
!       , $ado_consts->{adDBDate}                                               => 
DBI::SQL_TYPE_DATE
!       , $ado_consts->{adDBTime}                                               => 
DBI::SQL_TYPE_TIME
!       , $ado_consts->{adDBTimeStamp}                  => DBI::SQL_TYPE_TIMESTAMP
        , $ado_consts->{adDecimal}                                      => 
DBI::SQL_DECIMAL
        , $ado_consts->{adDouble}                                               => 
DBI::SQL_DOUBLE
!       , $ado_consts->{adEmpty}                                                => 
DBI::SQL_UNKNOWN_TYPE
!       , $ado_consts->{adError}                                                => 
DBI::SQL_UNKNOWN_TYPE
        , $ado_consts->{adFileTime}                                     => 
DBI::SQL_TIMESTAMP
!       , $ado_consts->{adGUID}                                                 => 
DBI::SQL_GUID
!       , $ado_consts->{adIDispatch}                            => 
DBI::SQL_UNKNOWN_TYPE
        , $ado_consts->{adInteger}                                      => 
DBI::SQL_INTEGER
!       , $ado_consts->{adIUnknown}                                     => 
DBI::SQL_UNKNOWN_TYPE
        , $ado_consts->{adLongVarBinary}                => DBI::SQL_LONGVARBINARY
        , $ado_consts->{adLongVarChar}                  => DBI::SQL_LONGVARCHAR
        , $ado_consts->{adLongVarWChar}                 => DBI::SQL_WLONGVARCHAR
        , $ado_consts->{adNumeric}                                      => 
DBI::SQL_NUMERIC
!       , $ado_consts->{adPropVariant}                  => DBI::SQL_UNKNOWN_TYPE
        , $ado_consts->{adSingle}                                               => 
DBI::SQL_FLOAT
        , $ado_consts->{adSmallInt}                                     => 
DBI::SQL_SMALLINT
        , $ado_consts->{adTinyInt}                                      => 
DBI::SQL_TINYINT
!       , $ado_consts->{adUnsignedBigInt}               => DBI::SQL_UNKNOWN_TYPE
        , $ado_consts->{adUnsignedInt}                  => DBI::SQL_WCHAR
!       , $ado_consts->{adUnsignedSmallInt}     => DBI::SQL_UNKNOWN_TYPE
!       , $ado_consts->{adUnsignedTinyInt}      => DBI::SQL_UNKNOWN_TYPE
!       , $ado_consts->{adUserDefined}                  => DBI::SQL_UNKNOWN_TYPE
        , $ado_consts->{adVarBinary}                            => DBI::SQL_VARBINARY
        , $ado_consts->{adVarChar}                                      => 
DBI::SQL_VARCHAR
!       , $ado_consts->{adVariant}                                      => 
DBI::SQL_UNKNOWN_TYPE
        , $ado_consts->{adVarNumeric}                           => DBI::SQL_INTEGER
        , $ado_consts->{adVarWChar}                                     => 
DBI::SQL_WVARCHAR
        , $ado_consts->{adWChar}                                                => 
DBI::SQL_WCHAR

Reply via email to