diff --git a/src/backend/columnar/columnar_customscan.c b/src/backend/columnar/columnar_customscan.c index 80cc78405..4a5ce008a 100644 --- a/src/backend/columnar/columnar_customscan.c +++ b/src/backend/columnar/columnar_customscan.c @@ -349,7 +349,7 @@ ColumnarGetRelationInfoHook(PlannerInfo *root, Oid relationObjectId, IndexOptInfo *indexOptInfo = NULL; foreach_ptr(indexOptInfo, rel->indexlist) { - memset(indexOptInfo->canreturn, false, indexOptInfo->ncolumns); + memset(indexOptInfo->canreturn, false, indexOptInfo->ncolumns * sizeof(bool)); } } } diff --git a/src/backend/columnar/columnar_tableam.c b/src/backend/columnar/columnar_tableam.c index 2b99219bd..a59307d53 100644 --- a/src/backend/columnar/columnar_tableam.c +++ b/src/backend/columnar/columnar_tableam.c @@ -585,7 +585,7 @@ columnar_index_fetch_tuple(struct IndexFetchTableData *sscan, * writer transaction commits or aborts, without requiring us to fill * the tupleslot properly. */ - memset(slot->tts_isnull, true, slot->tts_nvalid); + memset(slot->tts_isnull, true, slot->tts_nvalid * sizeof(bool)); } else { diff --git a/src/backend/columnar/columnar_writer.c b/src/backend/columnar/columnar_writer.c index 1f2cb56e1..1db407b6b 100644 --- a/src/backend/columnar/columnar_writer.c +++ b/src/backend/columnar/columnar_writer.c @@ -118,7 +118,7 @@ ColumnarBeginWrite(RelFileNode relfilenode, ALLOCSET_DEFAULT_SIZES); bool *columnMaskArray = palloc(columnCount * sizeof(bool)); - memset(columnMaskArray, true, columnCount); + memset(columnMaskArray, true, columnCount * sizeof(bool)); ChunkData *chunkData = CreateEmptyChunkData(columnCount, columnMaskArray, options.chunkRowCount); @@ -507,7 +507,7 @@ static StringInfo SerializeBoolArray(bool *boolArray, uint32 boolArrayLength) { uint32 boolArrayIndex = 0; - uint32 byteCount = (boolArrayLength + 7) / 8; + uint32 byteCount = ((boolArrayLength * sizeof(bool)) + (8 - sizeof(bool))) / 8; StringInfo boolArrayBuffer = makeStringInfo(); enlargeStringInfo(boolArrayBuffer, byteCount);