pull/6763/head
Gokhan Gulbiz 2023-03-22 17:13:24 +03:00
parent bb2ab9e93c
commit 46ae3a37d5
No known key found for this signature in database
GPG Key ID: 608EF06B6BD1B45B
2 changed files with 39 additions and 34 deletions

View File

@ -150,7 +150,7 @@ distributed_planner(Query *parse,
{
AttributeQueryIfAnnotated(query_string, parse->commandType);
}
List *rangeTableList = ExtractRangeTableEntryList(parse);
if (cursorOptions & CURSOR_OPT_FORCE_DISTRIBUTED)

View File

@ -193,17 +193,19 @@ AttributeQueryIfAnnotated(const char *query_string, CmdType commandType)
}
int colocationId = ExtractFieldInt32(jsonbDatum, "cId",
0);
0);
AttributeTask(tenantId, colocationId, commandType);
}
}
}
/*
* AttributeTask assigns the given attributes of a tenant and starts a timer
*/
void AttributeTask(char *tenantId, int colocationId, CmdType commandType)
void
AttributeTask(char *tenantId, int colocationId, CmdType commandType)
{
colocationGroupId = colocationId;
strcpy_s(attributeToTenant, sizeof(attributeToTenant), tenantId);
@ -212,14 +214,15 @@ void AttributeTask(char *tenantId, int colocationId, CmdType commandType)
if (MultiTenantMonitoringLogLevel != CITUS_LOG_LEVEL_OFF)
{
ereport(NOTICE, (errmsg(
"attributing query to tenant: %s, colocationGroupId: %d",
quote_literal_cstr(attributeToTenant),
colocationGroupId)));
"attributing query to tenant: %s, colocationGroupId: %d",
quote_literal_cstr(attributeToTenant),
colocationGroupId)));
}
attributeToTenantStart = clock();
}
/*
* AnnotateQuery annotates the query with tenant attributes.
*/
@ -621,42 +624,43 @@ MultiTenantMonitorshmemSize(void)
static char *
ExtractTopComment(const char *inputString)
{
int commentCharsLength = 2;
int inputStringLen = strlen(inputString);
if (inputStringLen < commentCharsLength)
{
return NULL;
}
int commentCharsLength = 2;
int inputStringLen = strlen(inputString);
if (inputStringLen < commentCharsLength)
{
return NULL;
}
const char *commentStartChars = "/*";
const char *commentEndChars = "*/";
const char *commentStartChars = "/*";
const char *commentEndChars = "*/";
/* If query doesn't start with a comment, return NULL */
if (strstr(inputString, commentStartChars) != inputString)
{
return NULL;
}
/* If query doesn't start with a comment, return NULL */
if (strstr(inputString, commentStartChars) != inputString)
{
return NULL;
}
StringInfo commentData = makeStringInfo();
StringInfo commentData = makeStringInfo();
/* Skip the comment start characters */
const char *commentStart = inputString + commentCharsLength;
/* Skip the comment start characters */
const char *commentStart = inputString + commentCharsLength;
/* Find the first comment end character */
const char *commentEnd = strstr(commentStart, commentEndChars);
if (commentEnd == NULL)
{
return NULL;
}
/* Find the first comment end character */
const char *commentEnd = strstr(commentStart, commentEndChars);
if (commentEnd == NULL)
{
return NULL;
}
/* Append the comment to the StringInfo buffer */
int commentLength = commentEnd - commentStart;
appendStringInfo(commentData, "%.*s", commentLength, commentStart);
/* Append the comment to the StringInfo buffer */
int commentLength = commentEnd - commentStart;
appendStringInfo(commentData, "%.*s", commentLength, commentStart);
/* Return the extracted comment */
return commentData->data;
/* Return the extracted comment */
return commentData->data;
}
/* EscapeCommentChars adds a backslash before each occurrence of '*' or '/' in the input string */
static char *
EscapeCommentChars(const char *str)
@ -673,11 +677,12 @@ EscapeCommentChars(const char *str)
}
appendStringInfoChar(escapedString, str[originalStringIndex]);
}
}
return escapedString->data;
}
/* UnescapeCommentChars removes the backslash that precedes '*' or '/' in the input string. */
static char *
UnescapeCommentChars(const char *str)