You've already forked explain.depesz.com
							
							
				mirror of
				https://gitlab.com/depesz/explain.depesz.com.git
				synced 2025-10-31 00:07:57 +02:00 
			
		
		
		
	We don't have that many of them, but on slow(ish) server dumps or vacuums take long time. Partitioning will make it possible to handle work in smaller increments
		
			
				
	
	
		
			26 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PL/PgSQL
		
	
	
	
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PL/PgSQL
		
	
	
	
	
	
| CREATE OR REPLACE FUNCTION register_plan(in_title text, in_plan text, in_is_public boolean, in_is_anonymized boolean, in_username text) RETURNS register_plan_return
 | |
|     LANGUAGE plpgsql
 | |
|     AS $$
 | |
| DECLARE
 | |
|     use_hash_length int4 := 2;
 | |
|     reply register_plan_return;
 | |
|     use_sql TEXT;
 | |
| BEGIN
 | |
|     reply.delete_key := get_random_string( 50 );
 | |
|     LOOP
 | |
|         reply.id := get_random_string(use_hash_length);
 | |
|         use_sql := format( 'INSERT INTO plans.%I (id, title, plan, is_public, entered_on, is_anonymized, delete_key, added_by) VALUES ($1, $2, $3, $4, now(), $5, $6, $7 )', 'part_' || substr(reply.id, 1, 1) );
 | |
|         BEGIN
 | |
|             execute use_sql using reply.id, in_title, in_plan, in_is_public, in_is_anonymized, reply.delete_key, in_username;
 | |
|             RETURN reply;
 | |
|         EXCEPTION WHEN unique_violation THEN
 | |
|                 -- do nothing
 | |
|         END;
 | |
|         use_hash_length := use_hash_length + 1;
 | |
|         IF use_hash_length >= 30 THEN
 | |
|             raise exception 'Random string of length == 30 requested. something''s wrong.';
 | |
|         END IF;
 | |
|     END LOOP;
 | |
| END;
 | |
| $$;
 |