Add JSON validity checks to make value extraction safer

This commit is contained in:
Tomaž Jerman
2022-12-14 15:47:39 +01:00
committed by Jože Fortun
parent 46e31f4d01
commit 725ed9f4f2
@@ -82,7 +82,7 @@ func (d mssqlDialect) JsonExtract(jsonDoc exp.Expression, pp ...any) (path exp.E
if path, err = jsonPathExpr(pp...); err != nil {
return
} else {
return exp.NewSQLFunctionExpression("JSON_QUERY", jsonDoc, path), nil
return exp.NewLiteralExpression("CASE WHEN ISJSON(?) = 1 THEN ? ELSE NULL END", jsonDoc, exp.NewSQLFunctionExpression("JSON_QUERY", jsonDoc, path)), nil
}
}
@@ -90,7 +90,7 @@ func (d mssqlDialect) JsonExtractUnquote(jsonDoc exp.Expression, pp ...any) (pat
if path, err = jsonPathExpr(pp...); err != nil {
return
} else {
return exp.NewSQLFunctionExpression("JSON_VALUE", jsonDoc, path), nil
return exp.NewLiteralExpression("CASE WHEN ISJSON(?) = 1 THEN ? ELSE NULL END", jsonDoc, exp.NewSQLFunctionExpression("JSON_VALUE", jsonDoc, path)), nil
}
}