hawq-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From j...@apache.org
Subject incubator-hawq git commit: HAWQ-35. Handle a case when a large tuple across split boundary
Date Sat, 10 Oct 2015 07:59:13 GMT
Repository: incubator-hawq
Updated Branches:
  refs/heads/master fda0245fc -> a4d49c456


HAWQ-35. Handle a case when a large tuple across split boundary


Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq/commit/a4d49c45
Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq/tree/a4d49c45
Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq/diff/a4d49c45

Branch: refs/heads/master
Commit: a4d49c456aa78e7b39b1c5829805ba0eebdf41d1
Parents: fda0245
Author: Lirong Jian <jianlirong@gmail.com>
Authored: Sat Oct 10 15:34:09 2015 +0800
Committer: Lirong Jian <jianlirong@gmail.com>
Committed: Sat Oct 10 15:34:09 2015 +0800

----------------------------------------------------------------------
 src/backend/cdb/cdbappendonlystorageread.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/a4d49c45/src/backend/cdb/cdbappendonlystorageread.c
----------------------------------------------------------------------
diff --git a/src/backend/cdb/cdbappendonlystorageread.c b/src/backend/cdb/cdbappendonlystorageread.c
index e642ba1..c674293 100755
--- a/src/backend/cdb/cdbappendonlystorageread.c
+++ b/src/backend/cdb/cdbappendonlystorageread.c
@@ -1122,6 +1122,15 @@ bool AppendOnlyStorageRead_GetBlockInfo(
 	Assert(storageRead != NULL);
 	Assert(storageRead->isActive);
 
+	/*
+	 * If isUseSplitLen= true and readPosition>splitLen,then this block should not belong
to this split.
+	 * We should read segment file for a new split.
+	 * This situation will occur when the previous block is the last block of a big tuple which
is larger than read split  size(128MB).
+	 * It also means the last tuple cross splits and the rest of this split should handle for
other vSeg not this vSeg.
+	 */
+	if (isUseSplitLen && storageRead->bufferedRead.largeReadPosition >= storageRead->bufferedRead.splitLen)
+	   return false;
+
 	isNext = AppendOnlyStorageRead_InternalGetBlockInfo(storageRead, isUseSplitLen);
 
 	/*
@@ -1452,7 +1461,7 @@ void AppendOnlyStorageRead_Content(
 										storageRead,
 										&header,
 										&content,
-										true);
+										isUseSplitLen);
 
 		if (!storageRead->current.isCompressed)
 		{


Mime
View raw message