dbicdh/PostgreSQL/deploy/2/002-extract_crashing_functions.sql
changeset 61 3a0ca02556da
child 76 6a33901e2721
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dbicdh/PostgreSQL/deploy/2/002-extract_crashing_functions.sql	Mon Feb 09 00:06:34 2015 +0100
@@ -0,0 +1,22 @@
+
+CREATE OR REPLACE FUNCTION extract_crashing_functions (processed_json jsonb) RETURNS text AS
+$$
+    -- extract threads[crashing_idx]->frames[*]->function
+    SELECT string_agg(functions, E'\n')
+    FROM (
+        SELECT jsonb_array_elements(
+            (($1 #> ARRAY['threads', $1->'crash_info'->>'crashing_thread'])->'frames')
+        )->>'function' AS functions
+    ) AS frames
+$$
+LANGUAGE sql IMMUTABLE;
+
+-- This extension is the contrib modules
+CREATE EXTENSION IF NOT EXISTS pg_trgm;
+
+-- Used for searching function in the crashing thread backtrace
+-- Search will be really slow if this index is not present
+CREATE INDEX crash_datas_idx_extract_crashing_functions ON crash_datas USING gin (
+    extract_crashing_functions(processed) gin_trgm_ops
+);
+