Github user selvaganesang commented on a diff in the pull request:

    
https://github.com/apache/incubator-trafodion/pull/1311#discussion_r153837812
  
    --- Diff: win-odbc64/odbcclient/drvr35/sqltocconv.cpp ---
    @@ -36,6 +36,34 @@
     
     #define MAXCHARLEN 32768 //32K
     
    +// for server2008 when using function pow() then throws 
STATUS_ILLEGAL_INSTRUCTION
    +__int64 pow(int base, short scale)
    +{
    +   DWORD dwVersion = 0;
    +   DWORD dwBuild = 0;
    +
    +   dwVersion = GetVersion();
    +
    +   // Get the build number.
    +
    +   if (dwVersion < 0x80000000)
    +           dwBuild = (DWORD)(HIWORD(dwVersion));
    +
    +   __int64 retValue = 1;
    +   if (dwBuild == 7600)
    +   {
    +           scale = scale > 18 ? 18 : scale;
    +           for (int i = 0; i < scale; i++)
    +                   retValue = retValue * 10;
    +   }
    +   else
    +   {
    +           retValue = pow((double)base, scale);
    --- End diff --
    
    Suggest to look at the errno to return proper errors.  I wonder due to 
compatible method signature, there is possibility that linker might resolve to 
the standard pow function instead of calling this function.


---

Reply via email to