You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Misc input validation improvements, sanitizing path segments in both SQL
and JSON queries, standardizing the processing of column and JSON paths
across different adapters, and making adjustments to traversal and alias
generation to align behavior across components.
FROM json_each(${table}.${pathSegments[0]}) AS ${alias}
29
+
FROM json_each(${table}.${sanitizePathSegment(pathSegments[0])}) AS ${alias}
28
30
WHERE ${createJSONQuery({
29
31
operator,
30
32
pathSegments: newPathSegments,
@@ -61,25 +63,25 @@ const createConstraint = ({
61
63
62
64
if(operator==='exists'){
63
65
if(pathSegments.length===1){
64
-
return`EXISTS (SELECT 1 FROM json_each("${pathSegments[0]}") AS ${newAlias})`
66
+
return`EXISTS (SELECT 1 FROM json_each("${sanitizePathSegment(pathSegments[0])}") AS ${newAlias})`
65
67
}
66
68
67
69
return`EXISTS (
68
70
SELECT 1
69
-
FROM json_each(${alias}.value -> '${pathSegments[0]}') AS ${newAlias}
70
-
WHERE ${newAlias}.key = '${pathSegments[1]}'
71
+
FROM json_each(${alias}.value -> '${sanitizePathSegment(pathSegments[0])}') AS ${newAlias}
72
+
WHERE ${newAlias}.key = '${sanitizePathSegment(pathSegments[1])}'
71
73
)`
72
74
}
73
75
74
76
if(operator==='not_exists'){
75
77
if(pathSegments.length===1){
76
-
return`NOT EXISTS (SELECT 1 FROM json_each("${pathSegments[0]}") AS ${newAlias})`
78
+
return`NOT EXISTS (SELECT 1 FROM json_each("${sanitizePathSegment(pathSegments[0])}") AS ${newAlias})`
77
79
}
78
80
79
81
return`NOT EXISTS (
80
82
SELECT 1
81
-
FROM json_each(${alias}.value -> '${pathSegments[0]}') AS ${newAlias}
82
-
WHERE ${newAlias}.key = '${pathSegments[1]}'
83
+
FROM json_each(${alias}.value -> '${sanitizePathSegment(pathSegments[0])}') AS ${newAlias}
84
+
WHERE ${newAlias}.key = '${sanitizePathSegment(pathSegments[1])}'
83
85
)`
84
86
}
85
87
@@ -96,13 +98,13 @@ const createConstraint = ({
96
98
}
97
99
98
100
if(pathSegments.length===1){
99
-
return`EXISTS (SELECT 1 FROM json_each("${pathSegments[0]}") AS ${newAlias} WHERE ${newAlias}.value ${formattedOperator} '${formattedValue}')`
101
+
return`EXISTS (SELECT 1 FROM json_each("${sanitizePathSegment(pathSegments[0])}") AS ${newAlias} WHERE ${newAlias}.value ${formattedOperator} '${formattedValue}')`
100
102
}
101
103
102
104
return`EXISTS (
103
105
SELECT 1
104
-
FROM json_each(${alias}.value -> '${pathSegments[0]}') AS ${newAlias}
105
-
WHERE COALESCE(${newAlias}.value ->> '${pathSegments[1]}', '') ${formattedOperator} '${formattedValue}'
106
+
FROM json_each(${alias}.value -> '${sanitizePathSegment(pathSegments[0])}') AS ${newAlias}
107
+
WHERE COALESCE(${newAlias}.value ->> '${sanitizePathSegment(pathSegments[1])}', '') ${formattedOperator} '${formattedValue}'
0 commit comments