added script for fixing vectors
authorniekt0 <niekt0@kyberia.cz>
Thu, 3 Mar 2011 00:17:55 +0000 (01:17 +0100)
committerniekt0 <niekt0@kyberia.cz>
Thu, 3 Mar 2011 00:17:55 +0000 (01:17 +0100)
wwwroot/backend/mysql/sys.sql [new file with mode: 0644]
wwwroot/backend/mysql/test.sql

diff --git a/wwwroot/backend/mysql/sys.sql b/wwwroot/backend/mysql/sys.sql
new file mode 100644 (file)
index 0000000..7cdb1e0
--- /dev/null
@@ -0,0 +1,33 @@
+drop procedure if exists fix_all_vectors;
+drop function if exists get_fix_vector;
+delimiter //
+/* compute correct vector for node */
+create function get_fix_vector (node INT) returns varchar(80)
+BEGIN
+       declare np,mynode,safe int;
+       declare vector varchar(80);
+
+       set safe=100; /* loop detection, max tree depth*/
+       set mynode=node;
+       set vector='';
+       REPEAT
+               select node_parent into np from nodes where node_id = mynode;
+               select concat(lpad(mynode,8,'00000000'),vector) into vector;
+               set mynode=np;
+               set safe=safe - 1;
+               UNTIL np = NULL or np = 0 or safe = 0 or np = node
+       END REPEAT;
+
+       if safe = 0 then 
+               return 'loooped';
+       end if;
+       return vector;
+
+END//
+
+/* fix vector for all the nodes*/
+create procedure fix_all_vectors ()
+begin
+       update nodes set node_vector=get_fix_vector(node_id);
+end//
+delimiter ;
index 893b92d1824732e1f6d88b67f5d487649f176e68..338db8b583552ff0991e4f8f07bbe55da0c50cba 100644 (file)
@@ -3,7 +3,7 @@ drop function if exists k_get_node_weigth;
 delimiter //
 create function k_get_node_weigth (node INT, user INT) returns DOUBLE
 BEGIN
-       declare vector,node2,len,n_owner,offset int;
+       declare vector,node2,len,n_owner,offset int; /* vector type*/
        declare final,n_weight,o_weight,s_weight double;
 
        select node_vector into vector from nodes where node_id = node;
@@ -41,5 +41,28 @@ begin
                 and node_created>now()-interval 20 day;
 
 --     select * from tmp_table order by k_weight desc;
+end//
+
+create function get_fix_vector (node INT) returns varchar(80)
+BEGIN
+       declare np,mynode int;
+
+       set mynode=node;
+       REPEAT
+               select node_parent into np from nodes where node_id = mynode;
+               /* XXX padding */
+               vector=concat(node_parent,vector);
+               set mynode=node_parent;
+       UNTIL node_parent != NULL and node_parent > 0
+       END REPEAT;
+       
+       return vector;
+
+END//
+
+create procedure fix_all_vectors ()
+begin
+       
 end//
 delimiter ;
+
This page took 0.169697 seconds and 4 git commands to generate.