Dagnabit C0 Coverage Information - RCov

lib/dagnabit/link/transitive_closure_recalculation/on_destroy.rb

Name Total Lines Lines of Code Total Coverage Code Coverage
lib/dagnabit/link/transitive_closure_recalculation/on_destroy.rb 125 104
100.00%
100.00%

Key

Code reported as executed by Ruby looks like this...and this: this line is also marked as covered.Lines considered as run by rcov, but not reported by Ruby, look like this,and this: these lines were inferred by rcov (using simple heuristics).Finally, here's a line marked as not executed.

Coverage Details

1 module Dagnabit
2   module Link
3     module TransitiveClosureRecalculation
4       module OnDestroy
5         def after_destroy
6           super
7           update_transitive_closure_for_destroy(*quoted_dag_link_values)
8         end
9 
10         private
11 
12         def update_transitive_closure_for_destroy(aid, did, atype, dtype)
13           my_table = self.class.quoted_table_name
14           my_aid, my_did, my_atype, my_dtype = quoted_dag_link_column_names
15           tc = self.class.transitive_closure_table_name
16           tc_aid, tc_did, tc_atype, tc_dtype = quoted_dag_link_column_names
17 
18           with_temporary_edge_tables('suspect', 'trusty', 'new') do |suspect, trusty, new|
19             connection.execute <<-END
20               INSERT INTO #{suspect} 
21                 SELECT * FROM (
22                   SELECT
23                     TC1.#{tc_aid}, TC2.#{tc_did}, TC1.#{tc_atype}, TC2.#{tc_dtype}
24                     FROM
25                       #{tc} AS TC1, #{tc} AS TC2
26                     WHERE
27                       TC1.#{tc_did} = #{aid} AND TC2.#{tc_aid} = #{did}
28                       AND
29                       TC1.#{tc_dtype} = #{atype} AND TC2.#{tc_atype} = #{dtype}
30                   UNION
31                   SELECT
32                     TC.#{tc_aid}, #{did}, TC.#{tc_atype}, #{dtype}
33                     FROM
34                       #{tc} AS TC
35                     WHERE
36                       TC.#{tc_did} = #{aid} AND TC.#{tc_dtype} = #{atype}
37                   UNION
38                   SELECT
39                     #{aid}, TC.#{tc_did}, #{atype}, TC.#{tc_dtype}
40                     FROM
41                       #{tc} AS TC
42                     WHERE
43                       TC.#{tc_aid} = #{did} AND TC.#{tc_atype} = #{dtype}
44                   UNION
45                     SELECT
46                       #{aid}, #{did}, #{atype}, #{dtype}
47                       FROM
48                         #{tc} AS TC
49                       WHERE
50                         TC.#{tc_aid} = #{aid} AND TC.#{tc_did} = #{did}
51                         AND
52                         TC.#{tc_atype} = #{atype} AND TC.#{tc_dtype} = #{dtype}
53                 ) AS tmp0
54             END
55 
56             connection.execute <<-END
57               INSERT INTO #{trusty}
58                 SELECT
59                   #{tc_aid}, #{tc_did}, #{tc_atype}, #{tc_dtype}
60                   FROM (
61                     SELECT
62                       #{tc_aid}, #{tc_did}, #{tc_atype}, #{tc_dtype}
63                       FROM
64                         #{tc} AS TC
65                       WHERE NOT EXISTS (
66                         SELECT *
67                           FROM
68                             #{suspect} AS SUSPECT
69                           WHERE
70                             SUSPECT.#{tc_aid} = TC.#{tc_aid} AND SUSPECT.#{tc_did} = TC.#{tc_did}
71                             AND
72                             SUSPECT.#{tc_atype} = TC.#{tc_atype} AND SUSPECT.#{tc_dtype} = TC.#{tc_dtype}
73                       )
74                   UNION
75                   SELECT
76                     #{my_aid}, #{my_did}, #{my_atype}, #{my_dtype}
77                     FROM
78                       #{my_table} AS G
79                     WHERE
80                       NOT (G.#{my_aid} = #{aid} AND g.#{my_atype} = #{atype}
81                            AND
82                            G.#{my_did} = #{did} AND g.#{my_dtype} = #{dtype})
83                 ) AS tmp0
84             END
85 
86             connection.execute <<-END
87               INSERT INTO #{new}
88                 SELECT * FROM (
89                   SELECT * FROM #{trusty}
90                   UNION
91                   SELECT
92                     T1.#{tc_aid}, T2.#{tc_aid}, T1.#{tc_atype}, T2.#{tc_dtype}
93                     FROM
94                       #{trusty} T1, #{trusty} T2
95                     WHERE
96                       T1.#{tc_aid} = T2.#{tc_aid} AND T1.#{tc_atype} = T2.#{tc_dtype}
97                   UNION
98                   SELECT
99                     T1.#{tc_aid}, T3.#{tc_aid}, T1.#{tc_atype}, T3.#{tc_dtype}
100                     FROM
101                       #{trusty} T1, #{trusty} T2, #{trusty} T3
102                     WHERE
103                       T1.#{tc_aid} = T2.#{tc_aid} AND T2.#{tc_aid} = T3.#{tc_aid}
104                       AND
105                       T1.#{tc_dtype} = T2.#{tc_atype} AND T2.#{tc_dtype} = T3.#{tc_atype}
106                 ) AS tmp0
107             END
108 
109             connection.execute <<-END
110               DELETE FROM #{tc} WHERE NOT EXISTS (
111                 SELECT *
112                   FROM
113                     #{new} T
114                   WHERE
115                     T.#{tc_aid} = #{tc}.#{tc_aid} AND T.#{tc_did} = #{tc}.#{tc_did}
116                     AND
117                     T.#{tc_atype} = #{tc}.#{tc_atype} AND T.#{tc_dtype} = #{tc}.#{tc_dtype}
118               )
119             END
120           end
121         end
122       end
123     end
124   end
125 end

Generated on Tue Dec 08 04:06:14 -0600 2009 with rcov 0.9.6