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.
---