Skip to content

Commit 7f96f1a

Browse files
authored
fix: Alter table issue (#23)
1 parent 7339d24 commit 7f96f1a

9 files changed

+50
-47
lines changed

db2i_blobCollection.cc

+2-2
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,9 @@ BlobCollection::getSizeToAllocate(int fieldIndex, bool& shouldProtect)
6161

6262
uint curMaxSize = table->getBlobFieldActualSize(fieldIndex);
6363

64-
uint defaultAllocSize = min(defaultAllocation, fieldLength);
64+
uint defaultAllocSize = std::min(defaultAllocation, fieldLength);
6565

66-
return max(defaultAllocSize, curMaxSize);
66+
return std::max(defaultAllocSize, curMaxSize);
6767

6868
}
6969

db2i_conversion.cc

+17-17
Original file line numberDiff line numberDiff line change
@@ -535,13 +535,13 @@ int ha_ibmdb2i::getFieldTypeMapping(Field* field,
535535
{
536536
if (field->type() == MYSQL_TYPE_STRING)
537537
{
538-
sprintf(stringBuildBuffer, "BINARY(%d)", max(fieldLength, 1));
538+
sprintf(stringBuildBuffer, "BINARY(%u)", std::max(fieldLength, 1u));
539539
}
540540
else
541541
{
542542
if (fieldLength <= MAX_VARCHAR_LENGTH)
543543
{
544-
sprintf(stringBuildBuffer, "VARBINARY(%d)", max(fieldLength, 1));
544+
sprintf(stringBuildBuffer, "VARBINARY(%u)", std::max(fieldLength, 1u));
545545
}
546546
else if (blobMapping == AS_VARCHAR &&
547547
(field->flags & PART_KEY_FLAG))
@@ -550,8 +550,8 @@ int ha_ibmdb2i::getFieldTypeMapping(Field* field,
550550
}
551551
else
552552
{
553-
fieldLength = min(MAX_BLOB_LENGTH, fieldLength);
554-
sprintf(stringBuildBuffer, "BLOB(%d)", max(fieldLength, 1));
553+
fieldLength = std::min(MAX_BLOB_LENGTH, fieldLength);
554+
sprintf(stringBuildBuffer, "BLOB(%u)", std::max(fieldLength, 1u));
555555
}
556556
}
557557
mapping.append(stringBuildBuffer);
@@ -586,14 +586,14 @@ int ha_ibmdb2i::getFieldTypeMapping(Field* field,
586586
return 1;
587587
if (fieldCharSet->mbmaxlen > 1 && (!is_utf8 || is_utf8_general_ci))
588588
{
589-
sprintf(stringBuildBuffer, "GRAPHIC(%d)", max(fieldLength / fieldCharSet->mbmaxlen, 1)); // Number of characters
589+
sprintf(stringBuildBuffer, "GRAPHIC(%u)", std::max(fieldLength / fieldCharSet->mbmaxlen, 1u)); // Number of characters
590590
// Need to set CCSID to 1200 (UTF-16) when using multi-byte charsets
591591
// As well as when the collation is utf*_general_ci because of sort sequence issues
592592
db2Ccsid = 1200;
593593
}
594594
else
595595
{
596-
sprintf(stringBuildBuffer, "CHAR(%d)", max(fieldLength, 1));
596+
sprintf(stringBuildBuffer, "CHAR(%u)", std::max(fieldLength, 1u));
597597
}
598598
mapping.append(stringBuildBuffer);
599599
}
@@ -603,14 +603,14 @@ int ha_ibmdb2i::getFieldTypeMapping(Field* field,
603603
{
604604
if (fieldCharSet->mbmaxlen > 1 && (!is_utf8 || is_utf8_general_ci))
605605
{
606-
sprintf(stringBuildBuffer, "VARGRAPHIC(%d)", max(fieldLength / fieldCharSet->mbmaxlen, 1)); // Number of characters
606+
sprintf(stringBuildBuffer, "VARGRAPHIC(%u)", std::max(fieldLength / fieldCharSet->mbmaxlen, 1u)); // Number of characters
607607
// Need to set CCSID to 1200 (UTF-16) when using multi-byte charsets
608608
// As well as when the collation is utf*_general_ci because of sort sequence issues
609609
db2Ccsid = 1200;
610610
}
611611
else
612612
{
613-
sprintf(stringBuildBuffer, "VARCHAR(%d)", max(fieldLength, 1));
613+
sprintf(stringBuildBuffer, "VARCHAR(%u)", std::max(fieldLength, 1u));
614614
}
615615
}
616616
else if (blobMapping == AS_VARCHAR &&
@@ -630,18 +630,18 @@ int ha_ibmdb2i::getFieldTypeMapping(Field* field,
630630
}
631631
else
632632
{
633-
fieldLength = min(MAX_BLOB_LENGTH, fieldLength);
633+
fieldLength = std::min(MAX_BLOB_LENGTH, fieldLength);
634634

635635
if (fieldCharSet->mbmaxlen > 1 && (!is_utf8 || is_utf8_general_ci))
636636
{
637-
sprintf(stringBuildBuffer, "DBCLOB(%d)", max(fieldLength / fieldCharSet->mbmaxlen, 1)); // Number of characters
637+
sprintf(stringBuildBuffer, "DBCLOB(%u)", std::max(fieldLength / fieldCharSet->mbmaxlen,1u)); // Number of characters
638638
// Need to set CCSID to 1200 (UTF-16) when using multi-byte charsets
639639
// As well as when the collation is utf*_general_ci because of sort sequence issues
640640
db2Ccsid = 1200;
641641
}
642642
else
643643
{
644-
sprintf(stringBuildBuffer, "CLOB(%d)", max(fieldLength, 1)); // Number of characters
644+
sprintf(stringBuildBuffer, "CLOB(%u)", std::max(fieldLength, 1u)); // Number of characters
645645
}
646646
}
647647

@@ -689,7 +689,7 @@ int32 ha_ibmdb2i::convertMySQLtoDB2(Field* field, const DB2Field& db2Field, char
689689
{
690690
uint precision= ((Field_new_decimal*)field)->precision;
691691
uint scale= field->decimals();
692-
uint db2Precision = min(precision, MAX_DEC_PRECISION);
692+
uint db2Precision = std::min(precision, MAX_DEC_PRECISION);
693693
uint truncationAmount = precision - db2Precision;
694694

695695
if (scale >= truncationAmount)
@@ -1160,8 +1160,8 @@ int32 ha_ibmdb2i::convertMySQLtoDB2(Field* field, const DB2Field& db2Field, char
11601160
if (maxDisplayLength == 0 && db2FieldType == QMY_GRAPHIC)
11611161
maxDb2BytesToStore = 2;
11621162
else
1163-
maxDb2BytesToStore = min(((bytesToStore * 2) / fieldCharSet->mbminlen),
1164-
((maxDisplayLength * 2) / fieldCharSet->mbmaxlen));
1163+
maxDb2BytesToStore = std::min(bytesToStore * 2 / fieldCharSet->mbminlen,
1164+
maxDisplayLength * 2 / fieldCharSet->mbmaxlen);
11651165

11661166
if (bytesToStore == 0)
11671167
db2BytesToStore = 0;
@@ -1205,8 +1205,8 @@ int32 ha_ibmdb2i::convertMySQLtoDB2(Field* field, const DB2Field& db2Field, char
12051205
else // Else Far East, special UTF8 or non-special UTF8/UCS2
12061206
{
12071207
size_t maxDb2BytesToStore;
1208-
maxDb2BytesToStore = min(((bytesToStore * 2) / fieldCharSet->mbminlen),
1209-
((maxDisplayLength * 2) / fieldCharSet->mbmaxlen));
1208+
maxDb2BytesToStore = std::min(bytesToStore * 2 / fieldCharSet->mbminlen,
1209+
maxDisplayLength * 2 / fieldCharSet->mbmaxlen);
12101210
temp = getCharacterConversionBuffer(field->field_index, maxDb2BytesToStore);
12111211
rc = convertFieldChars(toDB2, field->field_index, (char*)dataToStore,temp,bytesToStore, maxDb2BytesToStore, &db2BytesToStore);
12121212
if (rc)
@@ -1258,7 +1258,7 @@ int32 ha_ibmdb2i::convertDB2toMySQL(const DB2Field& db2Field, Field* field, cons
12581258
{
12591259
uint precision= ((Field_new_decimal*)field)->precision;
12601260
uint scale= field->decimals();
1261-
uint db2Precision = min(precision, MAX_DEC_PRECISION);
1261+
uint db2Precision = std::min(precision, MAX_DEC_PRECISION);
12621262
uint decimalPlace = precision-scale+1;
12631263
char temp[80];
12641264

db2i_file.cc

+15-10
Original file line numberDiff line numberDiff line change
@@ -346,14 +346,14 @@ size_t db2i_table::smartFilenameToTableName(const char *in, char* out, size_t ou
346346
{
347347
strncpy(out, in, outlen);
348348
my_free(test);
349-
return min(outlen, strlen(out));
349+
return std::min(outlen, strlen(out));
350350
}
351351
++cur;
352352
}
353353

354354
strncpy(out, test, outlen);
355355
my_free(test);
356-
return min(outlen, strlen(out));
356+
return std::min(outlen, strlen(out));
357357
}
358358

359359
void db2i_table::filenameToTablename(const char* in, char* out, size_t outlen)
@@ -376,20 +376,25 @@ void db2i_table::filenameToTablename(const char* in, char* out, size_t outlen)
376376
if (!part4)
377377
part4 = strend(in);
378378
}
379-
380-
memcpy(temp, part1, min(outlen, part2 - part1));
381-
temp[min(outlen-1, part2-part1)] = 0;
382-
379+
380+
{
381+
size_t num_bytes = std::min(outlen-1, static_cast<size_t>(part2 - part1));
382+
memcpy(temp, part1, num_bytes);
383+
temp[num_bytes] = 0;
384+
}
385+
383386
int32 accumLen = smartFilenameToTableName(temp, out, outlen);
384387

385388
if (part2 && (accumLen + 4 < (int) outlen))
386389
{
387390
strcat(out, "#P#");
388391
accumLen += 4;
389392

390-
memset(temp, 0, min(outlen, part2-part1));
391-
memcpy(temp, part3, min(outlen, part4-part3));
392-
temp[min(outlen-1, part4-part3)] = 0;
393+
{
394+
size_t num_bytes = std::min(outlen, static_cast<size_t>(part4-part3));
395+
memcpy(temp, part3, std::min(outlen, num_bytes));
396+
temp[std::min(static_cast<size_t>(outlen-1), num_bytes)] = 0;
397+
}
393398

394399
accumLen += smartFilenameToTableName(temp, strend(out), outlen-accumLen);
395400

@@ -496,7 +501,7 @@ int32 db2i_table::appendQualifiedIndexFileName(const char* indexName,
496501

497502
strncat(generatedName,
498503
tableName+1,
499-
min(strlen(tableName), (MAX_DB2_FILENAME_LENGTH-lenWithoutFile))-2 );
504+
std::min(strlen(tableName), static_cast<size_t>(MAX_DB2_FILENAME_LENGTH-lenWithoutFile))-2 );
500505

501506
char finalName[MAX_DB2_FILENAME_LENGTH+1];
502507
convertMySQLNameToDB2Name(generatedName, finalName, sizeof(finalName), true, (format==ASCII_SQL));

db2i_global.h

+1-2
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,7 @@ OF SUCH DAMAGE.
7474
* Explicit macro will be used.
7575
*/
7676

77-
#define min(a,b) ((long long)(a)>(long long)(b) ? (b) : (a))
78-
#define max(a,b) ((long long)(a)<(long long)(b) ? (b) : (a))
77+
#include <algorithm>
7978

8079
#define db2i_beint16_from_ptr2leint16(V,M) \
8180
do { int16 def_temp;\

db2i_ileBridge.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -612,7 +612,7 @@ int32 db2i_ileBridge::prepOpen(const char* statement,
612612
{
613613
Qmy_MSPO0100_output* output = (Qmy_MSPO0100_output*)parmBlock->outParms;
614614
*rfileHandle = output->ObjHnd;
615-
*recLength = max(output->InNxtRowOff, output->OutNxtRowOff);
615+
*recLength = std::max(output->InNxtRowOff, output->OutNxtRowOff);
616616
}
617617

618618

db2i_misc.cc

+2-2
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ EXTERN bool convertMySQLNameToDB2Name(const char* input,
8282
bool delimit,
8383
bool delimitQuotes)
8484
{
85-
uint o = 0;
85+
size_t o = 0;
8686
if (delimit)
8787
output[o++] = '"';
8888

@@ -100,7 +100,7 @@ EXTERN bool convertMySQLNameToDB2Name(const char* input,
100100

101101
if (delimit)
102102
output[o++] = '"';
103-
output[min(o, outlen-1)] = 0; // This isn't the most user-friendly way to handle overflows,
103+
output[std::min(o, outlen-1)] = 0; // This isn't the most user-friendly way to handle overflows,
104104
// but at least its safe.
105105
return (o <= outlen-1);
106106
}

db2i_safeString.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ OF SUCH DAMAGE.
6767

6868
SafeString& SafeString::strncat(const char* str, size_t len)
6969
{
70-
uint64 amountToCopy = min((allocSize-1) - curPos, len);
70+
size_t amountToCopy = std::min(allocSize-1 - curPos, len);
7171
memcpy(buf + curPos, str, amountToCopy);
7272
curPos += amountToCopy;
7373
buf[curPos] = 0;

db2i_safeString.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ class SafeString
6565

6666
private:
6767
char* buf;
68-
uint64 curPos;
68+
size_t curPos;
6969
size_t allocSize;
7070
};
7171

ha_ibmdb2i.cc

+10-11
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ static const char __NOT_NULL_VALUE_EBCDIC = 0xF0; // '0'
6363
static const char __NULL_VALUE_EBCDIC = 0xF1; // '1'
6464
static const char __DEFAULT_VALUE_EBCDIC = 0xC4; // 'D'
6565
static const char BlankASPName[19] = " ";
66-
static const int DEFAULT_MAX_ROWS_TO_BUFFER = 4096;
66+
static const ha_rows DEFAULT_MAX_ROWS_TO_BUFFER = 4096;
6767

6868
static const char SAVEPOINT_PREFIX[] = {0xD4, 0xE8, 0xE2, 0xD7}; // MYSP (in EBCDIC)
6969

@@ -2791,10 +2791,9 @@ int ha_ibmdb2i::prepReadBuffer(ha_rows rowsToRead, const db2i_file* file, char i
27912791
forceSingleRowRead = true;
27922792
rowsToRead = 1;
27932793
}
2794+
rowsToRead = std::min(stats.records+1,std::min(rowsToRead, DEFAULT_MAX_ROWS_TO_BUFFER));
27942795

2795-
rowsToRead = min(stats.records+1,min(rowsToRead, DEFAULT_MAX_ROWS_TO_BUFFER));
2796-
2797-
uint bufSize = min((format->readRowLen * rowsToRead), THDVAR(thd, max_read_buffer_size));
2796+
uint bufSize = std::min(format->readRowLen * rowsToRead, static_cast<ha_rows>(THDVAR(thd, max_read_buffer_size)));
27982797
multiRowReadBuf.allocBuf(format->readRowLen, format->readRowNullOffset, bufSize);
27992798
activeReadBuf = &multiRowReadBuf;
28002799

@@ -2830,9 +2829,9 @@ int ha_ibmdb2i::prepWriteBuffer(ha_rows rowsToWrite, const db2i_file* file)
28302829

28312830
if (unlikely(rc)) DBUG_RETURN(rc);
28322831

2833-
rowsToWrite = min(rowsToWrite, DEFAULT_MAX_ROWS_TO_BUFFER);
2832+
rowsToWrite = std::min(rowsToWrite, DEFAULT_MAX_ROWS_TO_BUFFER);
28342833

2835-
uint bufSize = min((format->writeRowLen * rowsToWrite), THDVAR(ha_thd(), max_write_buffer_size));
2834+
uint bufSize = std::min((format->writeRowLen * rowsToWrite), static_cast<ha_rows>(THDVAR(ha_thd(), max_write_buffer_size)));
28362835
multiRowWriteBuf.allocBuf(format->writeRowLen, format->writeRowNullOffset, bufSize);
28372836
activeWriteBuf = &multiRowWriteBuf;
28382837

@@ -2916,8 +2915,8 @@ int ha_ibmdb2i::flushWrite(FILE_HANDLE fileHandle, uchar* buf )
29162915
else
29172916
{
29182917
char unknownIndex[MAX_DB2_FILENAME_LENGTH+1];
2919-
convFromEbcdic(lastDupKeyNamePtr, unknownIndex, min(lastDupKeyNameLen, MAX_DB2_FILENAME_LENGTH));
2920-
unknownIndex[min(lastDupKeyNameLen, MAX_DB2_FILENAME_LENGTH)] = 0;
2918+
convFromEbcdic(lastDupKeyNamePtr, unknownIndex, std::min(lastDupKeyNameLen, static_cast<uint32>(MAX_DB2_FILENAME_LENGTH)));
2919+
unknownIndex[std::min(lastDupKeyNameLen, static_cast<uint32>(MAX_DB2_FILENAME_LENGTH))] = 0;
29212920
getErrTxt(DB2I_ERR_UNKNOWN_IDX, unknownIndex);
29222921
}
29232922
}
@@ -3292,7 +3291,7 @@ void ha_ibmdb2i::doInitialRead(char orientation,
32923291
if (forceSingleRowRead)
32933292
rowsToBuffer = 1;
32943293
else
3295-
rowsToBuffer = min(rowsToBuffer, activeReadBuf->getRowCapacity());
3294+
rowsToBuffer = std::min(rowsToBuffer, activeReadBuf->getRowCapacity());
32963295

32973296
activeReadBuf->newReadRequest(activeHandle,
32983297
orientation,
@@ -3430,7 +3429,7 @@ double ha_ibmdb2i::read_time(uint index, uint ranges, ha_rows rows)
34303429
double dataPageCount = stats.data_file_length/IO_SIZE;
34313430

34323431
cost = (rows * dataPageCount / totalRecords) +
3433-
min(idxPageCnt, (log_2(idxPageCnt) * ranges +
3432+
std::min(idxPageCnt, (log_2(idxPageCnt) * ranges +
34343433
rows * (log_2(idxPageCnt) + log_2(rows) - log_2(totalRecords))));
34353434
}
34363435
}
@@ -3579,7 +3578,7 @@ void ha_ibmdb2i::setIndexReadEstimate(uint index, ha_rows rows)
35793578
ha_rows ha_ibmdb2i::getIndexReadEstimate(uint index)
35803579
{
35813580
if (indexReadSizeEstimates)
3582-
return max(indexReadSizeEstimates[index], 1);
3581+
return std::max(indexReadSizeEstimates[index], ha_rows{1});
35833582

35843583
return 10000; // Assume index scan if no estimate exists.
35853584
}

0 commit comments

Comments
 (0)