From 6b682238710be717f737308af91e2bd1a1861b7a Mon Sep 17 00:00:00 2001 From: Shivaditya Shivganesh Date: Tue, 15 Oct 2024 20:57:45 -0400 Subject: [PATCH] fix: sql functions not updated --- .../20241002004403_issue_comments.sql | 2 ++ .../20241016000744_function_issue.sql | 33 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 supabase/migrations/20241016000744_function_issue.sql diff --git a/supabase/migrations/20241002004403_issue_comments.sql b/supabase/migrations/20241002004403_issue_comments.sql index 9ebb751..f06eb41 100644 --- a/supabase/migrations/20241002004403_issue_comments.sql +++ b/supabase/migrations/20241002004403_issue_comments.sql @@ -1,3 +1,5 @@ +DROP FUNCTION IF EXISTS find_similar_issues; + CREATE OR REPLACE FUNCTION find_similar_issues(current_id VARCHAR, query_embedding vector(1024), threshold float8, top_k INT) RETURNS TABLE(issue_id VARCHAR, issue_plaintext TEXT, similarity float8) AS $$ DECLARE diff --git a/supabase/migrations/20241016000744_function_issue.sql b/supabase/migrations/20241016000744_function_issue.sql new file mode 100644 index 0000000..6f5645b --- /dev/null +++ b/supabase/migrations/20241016000744_function_issue.sql @@ -0,0 +1,33 @@ +DROP FUNCTION IF EXISTS find_similar_issues; + +CREATE OR REPLACE FUNCTION find_similar_issues(current_id VARCHAR, query_embedding vector(1024), threshold float8, top_k INT) +RETURNS TABLE(issue_id VARCHAR, issue_plaintext TEXT, similarity float8) AS $$ +DECLARE + current_quantized vector(1024); + current_repo TEXT; + current_org TEXT; +BEGIN + -- Ensure the query_embedding is in the correct format + current_quantized := query_embedding; + + -- Extract the current issue's repo and org from the payload + SELECT + payload->'repository'->>'name'::text, + payload->'repository'->'owner'->>'login'::text + INTO current_repo, current_org + FROM issues + WHERE id = current_id; + + RETURN QUERY + SELECT id AS issue_id, + plaintext AS issue_plaintext, + ((0.5 * inner_product(current_quantized, embedding)) + 0.5 * (1 / (1 + l2_distance(current_quantized, embedding)))) as similarity + FROM issues + WHERE id <> current_id + AND COALESCE(payload->'repository'->>'name', '') = COALESCE(current_repo, '') -- To handle Private Issues + AND COALESCE(payload->'repository'->'owner'->>'login', '') = COALESCE(current_org, '') -- To handle Private Issues + AND ((0.5 * inner_product(current_quantized, embedding)) + 0.5 * (1 / (1 + l2_distance(current_quantized, embedding)))) > threshold + ORDER BY similarity DESC + LIMIT top_k; +END; +$$ LANGUAGE plpgsql; \ No newline at end of file