From f4b2674fd5ce9d845b7ef871ce232b27d0764880 Mon Sep 17 00:00:00 2001 From: Mitchell van der Hoeff <8631205+mitchelljustin@users.noreply.github.com> Date: Wed, 6 Dec 2023 09:20:35 -0500 Subject: [PATCH] fix(sql): Encode JSON numbers as f64 to fix JSON_EXTRACT queries (#797) Signed-off-by: Mitchell van der Hoeff <8631205+mitchelljustin@users.noreply.github.com> --- .changes/fix-number-query-params.md | 5 +++++ plugins/sql/src/plugin.rs | 4 ++++ 2 files changed, 9 insertions(+) create mode 100644 .changes/fix-number-query-params.md diff --git a/.changes/fix-number-query-params.md b/.changes/fix-number-query-params.md new file mode 100644 index 00000000..2785898f --- /dev/null +++ b/.changes/fix-number-query-params.md @@ -0,0 +1,5 @@ +--- +"sql": patch +--- + +Encode JSON number query params as f64 to fix JSON_EXTRACT queries on SQLite diff --git a/plugins/sql/src/plugin.rs b/plugins/sql/src/plugin.rs index 8d524345..aa6ec5f5 100644 --- a/plugins/sql/src/plugin.rs +++ b/plugins/sql/src/plugin.rs @@ -211,6 +211,8 @@ async fn execute( query = query.bind(None::); } else if value.is_string() { query = query.bind(value.as_str().unwrap().to_owned()) + } else if let Some(number) = value.as_number() { + query = query.bind(number.as_f64().unwrap_or_default()) } else { query = query.bind(value); } @@ -240,6 +242,8 @@ async fn select( query = query.bind(None::); } else if value.is_string() { query = query.bind(value.as_str().unwrap().to_owned()) + } else if let Some(number) = value.as_number() { + query = query.bind(number.as_f64().unwrap_or_default()) } else { query = query.bind(value); }