Validate attribute prefix existance on query string

pull/6753/head
Gokhan Gulbiz 2023-03-13 13:24:27 +03:00
parent 0de2ebad3f
commit 59990addd1
No known key found for this signature in database
GPG Key ID: 608EF06B6BD1B45B
1 changed files with 20 additions and 22 deletions

View File

@ -30,7 +30,7 @@ static void AttributeMetricsIfApplicable(void);
ExecutorEnd_hook_type prev_ExecutorEnd = NULL;
#define ATTRIBUTE_PREFIX "/*{"
#define ATTRIBUTE_PREFIX "{\"tId\":"
#define ATTRIBUTE_STRING_FORMAT "/*{\"tId\":%s,\"cId\":%d}*/"
#define CITUS_STATS_TENANTS_COLUMNS 7
#define ONE_QUERY_SCORE 1000000000
@ -159,34 +159,32 @@ AttributeQueryIfAnnotated(const char *query_string, CmdType commandType)
return;
}
char *annotation = extractTopComment(query_string);
if (annotation != NULL)
if (strncmp(ATTRIBUTE_PREFIX, query_string, strlen(ATTRIBUTE_PREFIX)) == 0)
{
Datum jsonbDatum = DirectFunctionCall1(jsonb_in, PointerGetDatum(annotation));
text *tenantIdTextP = ExtractFieldTextP(jsonbDatum, "tId");
if (tenantIdTextP != NULL)
char *annotation = extractTopComment(query_string);
if (annotation != NULL)
{
char *tenantId = text_to_cstring(tenantIdTextP);
strcpy_s(attributeToTenant, sizeof(attributeToTenant), tenantId);
}
Datum jsonbDatum = DirectFunctionCall1(jsonb_in, PointerGetDatum(annotation));
colocationGroupId = ExtractFieldInt32(jsonbDatum, "cId", 0);
text *tenantIdTextP = ExtractFieldTextP(jsonbDatum, "tId");
if (tenantIdTextP != NULL)
{
char *tenantId = text_to_cstring(tenantIdTextP);
strcpy_s(attributeToTenant, sizeof(attributeToTenant), tenantId);
}
if (MultiTenantMonitoringLogLevel != CITUS_LOG_LEVEL_OFF)
{
ereport(NOTICE, (errmsg(
"attributing query to tenant: %s, colocationGroupId: %d",
quote_literal_cstr(attributeToTenant),
colocationGroupId)));
colocationGroupId = ExtractFieldInt32(jsonbDatum, "cId", 0);
if (MultiTenantMonitoringLogLevel != CITUS_LOG_LEVEL_OFF)
{
ereport(NOTICE, (errmsg(
"attributing query to tenant: %s, colocationGroupId: %d",
quote_literal_cstr(attributeToTenant),
colocationGroupId)));
}
}
}
else
{
/*Assert(attributeToTenant == NULL); */
}
/*DetachSegment(); */
attributeToTenantStart = clock();
}