]> git.sur5r.net Git - bacula/bacula/commitdiff
ebl speedup a bit base64_decode_lstat
authorEric Bollengier <eric@eb.homelinux.org>
Fri, 19 Dec 2008 19:56:59 +0000 (19:56 +0000)
committerEric Bollengier <eric@eb.homelinux.org>
Fri, 19 Dec 2008 19:56:59 +0000 (19:56 +0000)
ebl  set base64_decode_lstat as IMMUTABLE STRICT to be able to create
     index with this function

git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@8194 91ce42f0-d328-0410-95d8-f526ca767f89

gui/bweb/script/bweb-postgresql.sql

index 9c20d7b110420ad295bba99b7ece04465c1b4120..fbea337cae4b8e89e546bd42450e614281d05eb7 100644 (file)
@@ -235,9 +235,11 @@ RETURNS double precision AS $$
     select extract(epoch from $1);
 $$ LANGUAGE SQL;
 
-CREATE OR REPLACE FUNCTION base64_decode_lstat(int4, varchar) RETURNS int8 AS $$
+CREATE OR REPLACE FUNCTION base64_decode_lstat(int4, varchar) RETURNS int8 
+IMMUTABLE STRICT AS $$
 DECLARE
 val int8;
+len int8;
 b64 varchar(64);
 size varchar(64);
 i int;
@@ -245,8 +247,9 @@ BEGIN
 size := split_part($2, ' ', $1);
 b64 := 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
 val := 0;
-FOR i IN 1..length(size) LOOP
-val := val + (strpos(b64, substr(size, i, 1))-1) * (64^(length(size)-i));
+len=length(size);
+FOR i IN 1..len LOOP
+val := val + (strpos(b64, substr(size, i, 1))-1) * (64^(len-i));
 END LOOP;
 RETURN val;
 END;