diff --git a/writeengine/bulk/we_bulkloadbuffer.cpp b/writeengine/bulk/we_bulkloadbuffer.cpp index 877f0b033..da568f9a6 100644 --- a/writeengine/bulk/we_bulkloadbuffer.cpp +++ b/writeengine/bulk/we_bulkloadbuffer.cpp @@ -31,8 +31,6 @@ #include #include -#include - #include "we_bulkload.h" #include "we_bulkloadbuffer.h" #include "we_brm.h" @@ -370,18 +368,11 @@ void BulkLoadBuffer::convert(char* field, int fieldLength, { errno = 0; - if (iequals(field, "true")) - { - fVal = 1; - } - else - { #ifdef _MSC_VER - fVal = (float)strtod( field, 0 ); + fVal = (float)strtod( field, 0 ); #else - fVal = strtof( field, 0 ); + fVal = strtof( field, 0 ); #endif - } if (errno == ERANGE) { @@ -414,6 +405,11 @@ void BulkLoadBuffer::convert(char* field, int fieldLength, fVal = minFltSat; bufStats.satCount++; } + if ( fVal == 0 + && isTrueWord(const_cast(field), fieldLength) ) + { + fVal = 1; + } } } @@ -474,14 +470,7 @@ void BulkLoadBuffer::convert(char* field, int fieldLength, { errno = 0; - if (iequals(field, "true")) - { - dVal = 1; - } - else - { - dVal = strtod(field, 0); - } + dVal = strtod(field, 0); if (errno == ERANGE) { @@ -514,6 +503,11 @@ void BulkLoadBuffer::convert(char* field, int fieldLength, dVal = column.fMinDblSat; bufStats.satCount++; } + else if (dVal == 0 + && isTrueWord(const_cast(field), fieldLength)) + { + dVal = 1; + } } } @@ -629,12 +623,6 @@ void BulkLoadBuffer::convert(char* field, int fieldLength, } else { - if (iequals(field, "true")) - { - strcpy(field, "1"); - fieldLength = 1; - } - if ( (column.dataType == CalpontSystemCatalog::DECIMAL ) || (column.dataType == CalpontSystemCatalog::UDECIMAL) ) { @@ -664,6 +652,11 @@ void BulkLoadBuffer::convert(char* field, int fieldLength, origVal = static_cast(column.fMaxIntSat); bSatVal = true; } + else if ( origVal == 0 + && isTrueWord(const_cast(field), fieldLength) ) + { + origVal = 1; + } if (bSatVal) bufStats.satCount++; @@ -722,15 +715,8 @@ void BulkLoadBuffer::convert(char* field, int fieldLength, { errno = 0; - if (iequals(field, "true")) - { - origVal = 1; - } - else - { - origVal = strtoll(field, 0, 10); - } - + origVal = strtoll(field, 0, 10); + if (errno == ERANGE) bSatVal = true; } @@ -747,6 +733,11 @@ void BulkLoadBuffer::convert(char* field, int fieldLength, origVal = static_cast(column.fMaxIntSat); bSatVal = true; } + else if ( origVal == 0 + && isTrueWord(const_cast(field), fieldLength) ) + { + origVal = 1; + } if (bSatVal) bufStats.satCount++; @@ -805,12 +796,12 @@ void BulkLoadBuffer::convert(char* field, int fieldLength, } else { - if (iequals(field, "true")) + if (isTrueWord(const_cast(field), fieldLength)) { strcpy(field, "1"); fieldLength = 1; } - + if ( (column.dataType == CalpontSystemCatalog::DECIMAL ) || (column.dataType == CalpontSystemCatalog::UDECIMAL)) { @@ -898,14 +889,7 @@ void BulkLoadBuffer::convert(char* field, int fieldLength, { errno = 0; - if (iequals(field, "true")) - { - origVal = 1; - } - else - { - origVal = strtoll(field, 0, 10); - } + origVal = strtoll(field, 0, 10); if (errno == ERANGE) bSatVal = true; @@ -923,6 +907,11 @@ void BulkLoadBuffer::convert(char* field, int fieldLength, origVal = static_cast(column.fMaxIntSat); bSatVal = true; } + else if ( origVal == 0 + && isTrueWord(const_cast(field), fieldLength) ) + { + origVal = 1; + } if (bSatVal) bufStats.satCount++; @@ -981,12 +970,12 @@ void BulkLoadBuffer::convert(char* field, int fieldLength, } else { - if (iequals(field, "true")) + if (isTrueWord(const_cast(field), fieldLength)) { strcpy(field, "1"); fieldLength = 1; } - + if ( (column.dataType == CalpontSystemCatalog::DECIMAL) || (column.dataType == CalpontSystemCatalog::UDECIMAL)) { @@ -1018,6 +1007,7 @@ void BulkLoadBuffer::convert(char* field, int fieldLength, bSatVal = true; } + if (bSatVal) bufStats.satCount++; @@ -1199,14 +1189,7 @@ void BulkLoadBuffer::convert(char* field, int fieldLength, { errno = 0; - if (iequals(field, "true")) - { - ullVal = 1; - } - else - { - ullVal = strtoull(field, 0, 10); - } + ullVal = strtoull(field, 0, 10); if (errno == ERANGE) bSatVal = true; @@ -1220,6 +1203,11 @@ void BulkLoadBuffer::convert(char* field, int fieldLength, ullVal = column.fMaxIntSat; bSatVal = true; } + else if ( ullVal == 0 + && isTrueWord(const_cast(field), fieldLength) ) + { + ullVal = 1; + } if (bSatVal) bufStats.satCount++; @@ -1276,14 +1264,7 @@ void BulkLoadBuffer::convert(char* field, int fieldLength, { errno = 0; - if (iequals(field, "true")) - { - origVal = 1; - } - else - { - origVal = strtoll(field, 0, 10); - } + origVal = strtoll(field, 0, 10); if (errno == ERANGE) bSatVal = true; @@ -1301,6 +1282,11 @@ void BulkLoadBuffer::convert(char* field, int fieldLength, origVal = static_cast(column.fMaxIntSat); bSatVal = true; } + else if ( origVal == 0 + && isTrueWord(const_cast(field), fieldLength) ) + { + origVal = 1; + } if (bSatVal) bufStats.satCount++; @@ -1361,12 +1347,12 @@ void BulkLoadBuffer::convert(char* field, int fieldLength, } else { - if (iequals(field, "true")) + if (isTrueWord(const_cast(field), fieldLength)) { strcpy(field, "1"); fieldLength = 1; } - + if ( (column.dataType == CalpontSystemCatalog::DECIMAL) || (column.dataType == CalpontSystemCatalog::UDECIMAL)) { diff --git a/writeengine/bulk/we_bulkloadbuffer.h b/writeengine/bulk/we_bulkloadbuffer.h index 85d60980c..649e9847e 100644 --- a/writeengine/bulk/we_bulkloadbuffer.h +++ b/writeengine/bulk/we_bulkloadbuffer.h @@ -383,5 +383,14 @@ public: } }; +inline bool isTrueWord(const char *field, int fieldLength) +{ + //return false; + return fieldLength == 4 && ( field[0] == 'T' || field[0] == 't' ) + && ( field[1] == 'R' || field[1] == 'r' ) + && ( field[2] == 'U' || field[2] == 'u' ) + && ( field[3] == 'E' || field[3] == 'e' ); +} + } #endif