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]