From 9531cfd3bf4d9950e3593eed90f092418bb6ff4b Mon Sep 17 00:00:00 2001 From: Gokhan Gulbiz Date: Mon, 20 Mar 2023 08:46:22 +0300 Subject: [PATCH] Use text_substr for getting top comment --- src/backend/distributed/utils/attribute.c | 32 +++-------------------- 1 file changed, 4 insertions(+), 28 deletions(-) diff --git a/src/backend/distributed/utils/attribute.c b/src/backend/distributed/utils/attribute.c index 9a839a6cb..d3567619c 100644 --- a/src/backend/distributed/utils/attribute.c +++ b/src/backend/distributed/utils/attribute.c @@ -63,7 +63,6 @@ static int CreateTenantStats(MultiTenantMonitor *monitor); static int FindTenantStats(MultiTenantMonitor *monitor); static size_t MultiTenantMonitorshmemSize(void); static char * ExtractTopComment(const char *inputString); -static char * Substring(const char *str, int start, int end); static char * EscapeCommentChars(const char *str); static char * UnescapeCommentChars(const char *str); @@ -639,7 +638,10 @@ ExtractTopComment(const char *inputString) if (commentEndCharsIndex > commentStartCharsLength) { - return Substring(inputString, commentStartCharsLength, commentEndCharsIndex); + Datum substringTextDatum = DirectFunctionCall3(text_substr, PointerGetDatum(inputString), + Int32GetDatum(commentStartCharsLength), + Int32GetDatum(commentEndCharsIndex - commentStartCharsLength)); + return TextDatumGetCString(substringTextDatum); } else { @@ -647,32 +649,6 @@ ExtractTopComment(const char *inputString) } } - -/* Extracts a substring from the input string between the specified start and end indices.*/ -static char * -Substring(const char *str, int start, int end) -{ - int len = strlen(str); - - /* Ensure start and end are within the bounds of the string */ - if (start < 0 || end > len || start > end) - { - return NULL; - } - - /* Allocate memory for the substring */ - char *substr = (char *) palloc((end - start + 1) * sizeof(char)); - - /* Copy the substring to the new memory location */ - strncpy_s(substr, end - start + 1, str + start, end - start); - - /* Add null terminator to end the substring */ - substr[end - start] = '\0'; - - return substr; -} - - /* EscapeCommentChars adds a backslash before each occurrence of '*' or '/' in the input string */ static char * EscapeCommentChars(const char *str)