1 drop procedure if exists k_neurons
;
2 drop function if exists k_get_node_weigth
;
6 create function k_get_node_weigth (node
INT, user INT) returns DOUBLE
8 declare vector
,node2
,len
,n_owner
,offset int;
9 declare final,n_weight
,o_weight
,s_weight
double;
11 select node_vector
into vector
from nodes
where node_id
= node
;
14 /* select k from nodes into final where node_id = node;*/
16 set len
= length(vector
);
20 /* XXX node length is hardcoded */
21 set node2
= substring(node2
,offset,8);
22 set offset = offset + 8;
23 /* weigths from user to:
24 - all nodes from node to root node
25 - all node owners from node to root node
26 - all nodes between themselves (safe?)
28 select node_weight
,node_creator
into n_weight
,n_owner
from nodes
where node_id
=node2
;
29 select synapse_weight
into s_weight
from neurons
where src
=user and dst
=node2
;
30 select synapse_weight
into o_weight
from neurons
where src
=user and dst
=n_owner
;
32 if o_weight
= NULL then set o_weight
=1; end if;
33 if s_weight
= NULL then set s_weight
=1; end if;
34 if n_weight
= NULL then set n_weight
=1; end if;
36 set final = final * s_weight
* o_weight
* n_weight
;
42 create procedure k_neurons ()
44 select k
,node_id
,node_name
from nodes
where k
>0
45 and node_created
>now()-interval 20 day order by k_get_node_weigth(node_id
,904) desc;
This page took 0.250706 seconds and 4 git commands to generate.