3
0

Add JSON validity checks to make value extraction safer

This commit is contained in:
Tomaž Jerman 2022-12-08 13:46:35 +01:00 committed by Jože Fortun
parent 46e31f4d01
commit 725ed9f4f2

View File

@ -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
}
}