summaryrefslogtreecommitdiff
path: root/src/include/utils/jsonpath.h
diff options
context:
space:
mode:
authorAmit Langote <amitlan@postgresql.org>2024-06-19 15:22:06 +0900
committerAmit Langote <amitlan@postgresql.org>2024-06-19 15:22:06 +0900
commit0f271e8e8d9c8db0ea86c0d12b3221009b81d8bf (patch)
tree4890052933a315ad69089aff7c38fbc532367196 /src/include/utils/jsonpath.h
parent5e05a0e9924e97c24be13c75e4ba12c60bd0e4ad (diff)
SQL/JSON: Correct jsonpath variable name matching
Previously, GetJsonPathVar() allowed a jsonpath expression to reference any prefix of a PASSING variable's name. For example, the following query would incorrectly work: SELECT JSON_QUERY(context_item, jsonpath '$xy' PASSING val AS xyz); The fix ensures that the length of the variable name mentioned in a jsonpath expression matches exactly with the name of the PASSING variable before comparing the strings using strncmp(). Reported-by: Alvaro Herrera (off-list) Discussion: https://postgr.es/m/CA+HiwqFGkLWMvELBH6E4SQ45qUHthgcRH6gCJL20OsYDRtFx_w@mail.gmail.com
Diffstat (limited to 'src/include/utils/jsonpath.h')
-rw-r--r--src/include/utils/jsonpath.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/include/utils/jsonpath.h b/src/include/utils/jsonpath.h
index 9d2b8533d54..ee35698d083 100644
--- a/src/include/utils/jsonpath.h
+++ b/src/include/utils/jsonpath.h
@@ -287,6 +287,7 @@ extern bool jspConvertRegexFlags(uint32 xflags, int *result,
typedef struct JsonPathVariable
{
char *name;
+ int namelen; /* strlen(name) as cache for GetJsonPathVar() */
Oid typid;
int32 typmod;
Datum value;