This is an automated email from the ASF dual-hosted git repository.

maxyang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudberry.git


The following commit(s) were added to refs/heads/main by this push:
     new dbc7a710ea Refactor internals to support pageinspect (#850)
dbc7a710ea is described below

commit dbc7a710ea61c372d4a1b7f2bc6b3e33c505cb05
Author: reshke <[email protected]>
AuthorDate: Thu Jan 9 11:31:13 2025 +0500

    Refactor internals to support pageinspect (#850)
    
    In late december 2024 I was busy supporting pageinspect extension for 
AO/AOCS relations in out GP6 fork.
    Here is prelimitary patch for supporting same in CBDB.
---
 src/backend/access/appendonly/appendonlyam.c |  9 +++++----
 src/backend/cdb/cdbvarblock.c                |  4 ++++
 src/include/cdb/cdbappendonlyam.h            | 14 ++++++++++++++
 3 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/src/backend/access/appendonly/appendonlyam.c 
b/src/backend/access/appendonly/appendonlyam.c
index ce404aa45f..6fec38ef38 100755
--- a/src/backend/access/appendonly/appendonlyam.c
+++ b/src/backend/access/appendonly/appendonlyam.c
@@ -137,7 +137,7 @@ initscan(AppendOnlyScanDesc scan, ScanKey key)
 /*
  * Open the next file segment to scan and allocate all resources needed for it.
  */
-static bool
+bool
 SetNextFileSegForRead(AppendOnlyScanDesc scan)
 {
        Relation        reln = scan->aos_rd;
@@ -470,7 +470,7 @@ CloseWritableFileSeg(AppendOnlyInsertDesc aoInsertDesc)
 
 /* 
------------------------------------------------------------------------------ 
*/
 
-static void
+void
 AppendOnlyExecutorReadBlock_GetContents(AppendOnlyExecutorReadBlock 
*executorReadBlock)
 {
        VarBlockCheckError varBlockCheckError;
@@ -669,7 +669,7 @@ 
AppendOnlyExecutorReadBlock_GetContents(AppendOnlyExecutorReadBlock *executorRea
        }
 }
 
-static bool
+bool
 AppendOnlyExecutorReadBlock_GetBlockInfo(AppendOnlyStorageRead *storageRead,
                                                                                
 AppendOnlyExecutorReadBlock *executorReadBlock)
 {
@@ -1011,7 +1011,8 @@ 
AppendOnlyExecutorReadBlock_ProcessTuple(AppendOnlyExecutorReadBlock *executorRe
        return valid;
 }
 
-static bool
+
+bool
 AppendOnlyExecutorReadBlock_ScanNextTuple(AppendOnlyExecutorReadBlock 
*executorReadBlock,
                                                                                
  int nkeys,
                                                                                
  ScanKey key,
diff --git a/src/backend/cdb/cdbvarblock.c b/src/backend/cdb/cdbvarblock.c
index db7822dd47..40a3d75bf8 100644
--- a/src/backend/cdb/cdbvarblock.c
+++ b/src/backend/cdb/cdbvarblock.c
@@ -755,6 +755,7 @@ VarBlockGetItemPtrAndLen(
        VarBlockByteOffset offset;
 
        Assert(varBlockReader != NULL);
+       Assert(varBlockReader->header);
 
        header = varBlockReader->header;
        buffer = (uint8 *) header;
@@ -804,6 +805,7 @@ VarBlockReaderGetNextItemPtr(
 
        Assert(varBlockReader != NULL);
        Assert(itemLen != NULL);
+       Assert(varBlockReader->header);
 
        if (varBlockReader->nextIndex >=
                VarBlockGet_itemCount(varBlockReader->header))
@@ -828,6 +830,7 @@ VarBlockReaderItemCount(
                                                VarBlockReader *varBlockReader)
 {
        Assert(varBlockReader != NULL);
+       Assert(varBlockReader->header != NULL);
 
        return VarBlockGet_itemCount(varBlockReader->header);
 }
@@ -844,6 +847,7 @@ VarBlockReaderGetItemPtr(
        uint8      *nextItemPtr;
 
        Assert(varBlockReader != NULL);
+       Assert(varBlockReader->header);
        Assert(itemIndex >= 0);
        Assert(itemIndex < VarBlockGet_itemCount(varBlockReader->header));
 
diff --git a/src/include/cdb/cdbappendonlyam.h 
b/src/include/cdb/cdbappendonlyam.h
index 8cd5bee658..262b934156 100644
--- a/src/include/cdb/cdbappendonlyam.h
+++ b/src/include/cdb/cdbappendonlyam.h
@@ -481,4 +481,18 @@ extern ExprState* 
appendonly_predicate_pushdown_prepare(AppendOnlyScanDesc scan,
                                                                                
                   ExprState *qual,
                                                                                
                   ExprContext *ecxt);
 
+extern bool AppendOnlyExecutorReadBlock_GetBlockInfo(AppendOnlyStorageRead 
*storageRead,
+                                                                               
 AppendOnlyExecutorReadBlock *executorReadBlock);
+
+extern void AppendOnlyStorageRead_CloseFile(AppendOnlyStorageRead 
*storageRead);
+
+extern bool SetNextFileSegForRead(AppendOnlyScanDesc scan);
+
+extern bool 
AppendOnlyExecutorReadBlock_ScanNextTuple(AppendOnlyExecutorReadBlock 
*executorReadBlock,
+                                                                               
  int nkeys,
+                                                                               
  ScanKey key,
+                                                                               
  TupleTableSlot *slot);
+
+extern void 
AppendOnlyExecutorReadBlock_GetContents(AppendOnlyExecutorReadBlock 
*executorReadBlock);
+
 #endif   /* CDBAPPENDONLYAM_H */


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to