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

chenjinbao1989 pushed a commit to branch cbdb-postgres-merge
in repository https://gitbox.apache.org/repos/asf/cloudberry.git


The following commit(s) were added to refs/heads/cbdb-postgres-merge by this 
push:
     new 4b71147f80b Add read function for 
Integer/Boolean/Float/String/BitString in read fast
4b71147f80b is described below

commit 4b71147f80b19933472f7160415f721ce1b5105e
Author: Jinbao Chen <[email protected]>
AuthorDate: Thu Oct 23 22:51:53 2025 +0800

    Add read function for Integer/Boolean/Float/String/BitString in read fast
---
 src/backend/nodes/readfast.c | 93 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 93 insertions(+)

diff --git a/src/backend/nodes/readfast.c b/src/backend/nodes/readfast.c
index e1d1078b935..67f517634de 100644
--- a/src/backend/nodes/readfast.c
+++ b/src/backend/nodes/readfast.c
@@ -461,6 +461,84 @@ _readUpdateStmt(void)
        READ_DONE();
 }
 
+
+static Integer *
+_readInteger(void)
+{
+       READ_LOCALS(Integer);
+
+       memcpy(&local_node->ival, read_str_ptr, sizeof(long));
+       read_str_ptr += sizeof(long);
+
+       READ_DONE();
+}
+
+static Boolean *
+_readBoolean(void)
+{
+       READ_LOCALS(Boolean);
+
+       memcpy(&local_node->boolval, read_str_ptr, sizeof(long));
+       read_str_ptr += sizeof(long);
+
+       READ_DONE();
+}
+
+static Float *
+_readFloat(void)
+{
+       READ_LOCALS(Float);
+
+       int slen;
+       char *nn;
+       memcpy(&slen, read_str_ptr, sizeof(int));
+       read_str_ptr += sizeof(int);
+       nn = palloc(slen + 1);
+       memcpy(nn, read_str_ptr, slen);
+       nn[slen] = '\0';
+       local_node->fval = nn;
+       read_str_ptr += slen;
+
+       READ_DONE();
+}
+
+static String *
+_readString(void)
+{
+       int slen;
+       char *nn;
+
+       READ_LOCALS(String);
+
+       memcpy(&slen, read_str_ptr, sizeof(int));
+       read_str_ptr += sizeof(int);
+       nn = palloc(slen + 1);
+       memcpy(nn, read_str_ptr, slen);
+       nn[slen] = '\0';
+       local_node->sval = nn;
+       read_str_ptr += slen;
+
+       READ_DONE();
+}
+
+static BitString *
+_readBitString(void)
+{
+       READ_LOCALS(BitString);
+
+       int slen;
+       char *nn;
+       memcpy(&slen, read_str_ptr, sizeof(int));
+       read_str_ptr += sizeof(int);
+       nn = palloc(slen + 1);
+       memcpy(nn, read_str_ptr, slen);
+       nn[slen] = '\0';
+       local_node->bsval = nn;
+       read_str_ptr += slen;
+
+       READ_DONE();
+}
+
 static A_Const *
 _readAConst(void)
 {
@@ -2629,6 +2707,21 @@ readNodeBinary(void)
                        case T_ParamRef:
                                return_value = _readParamRef();
                                break;
+                       case T_Integer:
+                               return_value = _readInteger();
+                               break;
+                       case T_Boolean:
+                               return_value = _readBoolean();
+                               break;
+                       case T_Float:
+                               return_value = _readFloat();
+                               break;
+                       case T_String:
+                               return_value = _readString();
+                               break;
+                       case T_BitString:
+                               return_value = _readBitString();
+                               break;
                        case T_A_Const:
                                return_value = _readAConst();
                                break;


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

Reply via email to