From 44fec55d581cd62ae90aefd29cd424aeefd79c13 Mon Sep 17 00:00:00 2001 From: Gokhan Gulbiz Date: Wed, 15 Mar 2023 08:11:07 +0300 Subject: [PATCH] Escape/Unescape sql comment chars --- src/backend/distributed/utils/attribute.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/backend/distributed/utils/attribute.c b/src/backend/distributed/utils/attribute.c index a01ba3701..d95b87082 100644 --- a/src/backend/distributed/utils/attribute.c +++ b/src/backend/distributed/utils/attribute.c @@ -23,6 +23,7 @@ #include "utils/builtins.h" #include "utils/json.h" #include "distributed/utils/attribute.h" +#include "common/base64.h" #include @@ -171,7 +172,7 @@ AttributeQueryIfAnnotated(const char *query_string, CmdType commandType) text *tenantIdTextP = ExtractFieldTextP(jsonbDatum, "tId"); if (tenantIdTextP != NULL) { - char *tenantId = text_to_cstring(tenantIdTextP); + char *tenantId = UnescapeCommentChars(text_to_cstring(tenantIdTextP)); strcpy_s(attributeToTenant, sizeof(attributeToTenant), tenantId); } @@ -202,12 +203,15 @@ AnnotateQuery(char *queryString, char *partitionColumn, int colocationId) return queryString; } + char *commentCharsEscaped = EscapeCommentChars(partitionColumn); StringInfo escapedSourceName = makeStringInfo(); - escape_json(escapedSourceName, partitionColumn); + + escape_json(escapedSourceName, commentCharsEscaped); StringInfo newQuery = makeStringInfo(); appendStringInfo(newQuery, ATTRIBUTE_STRING_FORMAT, escapedSourceName->data, colocationId); + appendStringInfoString(newQuery, queryString); return newQuery->data;