public.snippets

BlocksLoopsBranchesBlock CoverageLoop CoverageBranch Coverage
401217
67.50% 
43.75% 
47.06% 
 CREATE FUNCTION public.snippets ( IN a integer, IN b boolean ) RETURNS SETOF pg_namespace IMMUTABLE
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180DECLARE x varchar(20); n integer := 403; i integer; ys integer[] := '{}'; result text; fooValue record; loopElement record; formattedName character varying; myself pg_proc%ROWTYPE; shareCount integer := 99999999; count integer; BEGIN -- IF-THEN IF a <> 0 THEN SELECT INTO n sum("id") FROM pg_users; END IF; -- IF-THEN-ELSE IF a IS NULL OR b::varchar = '' THEN x := 'bahut badmash!'; ELSE SELECT INTO ys ARRAY(SELECT * FROM generate_series(1, a)); END IF; -- IF-THEN-ELSIF IF array_upper(ys, 1) = 0 THEN result := 'zero'; ELSIF array_upper(ys, 1) > 0 THEN result := 'positive'; ELSIF array_upper(ys, 1) < 0 THEN result := 'negative'; ELSE /* commentary and buffoonary * * that spans multiple lines * * but does not explain much * * about tom foolery jewelry */ result := 'NULL'; END IF; FOR fooValue IN SELECT *, prolang IN ( SELECT oid FROM pg_language WHERE lanname <> 'plpgsql' ) AS frump FROM pg_proc WHERE pronamespace IN ( SELECT oid FROM pg_namespace WHERE nspname ILIKE 'pg_%' ) LOOP -- nest IF-THEN-ELSE statements IF fooValue.frump THEN formattedName := 'man'; ELSE IF fooValue.proretset IS FALSE THEN formattedName := 'ULYSSES S GRUMP'; END IF; END IF; -- simple CASE with search-expression CASE a WHEN 1, 2 THEN result := 'one or two'; WHEN 3, 4 THEN RAISE NOTICE 'I see you baybee'; ELSE result := 'other value than one or two'; END CASE; -- searched CASE with boolean-expression CASE WHEN b IS NULL THEN myself := NULL; WHEN b BETWEEN 0 and 10 THEN myself := fooValue; WHEN b BETWEEN 11 and 20 THEN myself := fooValue; END CASE; END LOOP; DECLARE a integer := 10; b integer := 5; c integer := 20; BEGIN << labelA >> LOOP a := a + 1; EXIT labelA WHEN a > 10; END LOOP labelA; LOOP b := b + 1; EXIT WHEN b > 10; CONTINUE WHEN b > 10; END LOOP; LOOP c := c + 1; IF c > 10 THEN EXIT; END IF; END LOOP; END; << labelB >> BEGIN -- some computations IF shareCount > 100000 THEN EXIT labelB; -- causes exit from BEGIN block END IF; -- computations here will be skipped when stocks > 100000 RAISE NOTICE 'get outta hyah kid! ya bahthrin me'; END; count := 0; WHILE count > 10 AND true LOOP count := floor(count / 4.0); END LOOP; << labelC >> WHILE NOT n = 10 LOOP -- some computations here n := 10; END LOOP labelC; << labelD >> WHILE n NOT IN (1,2,3) LOOP n := 3; CONTINUE labelD WHEN n < 10; END LOOP; FOR i IN 1 .. 10 LOOP SELECT INTO n sum(fuzit) FROM generate_series(1, i) AS fuzit; ys[i] = n; END LOOP; << labelD >> FOR i IN REVERSE 10..1 LOOP -- EXIT labelD WHEN i = 5; END LOOP labelD; << labelE >> FOR i IN REVERSE 10..1 BY 2 LOOP SELECT INTO n avg(whozit)::integer FROM generate_series(1, i) AS whozit; ys[20 - i] := n; --CONTINUE labelE; END LOOP; FOR loopElement IN SELECT * FROM pg_namespace LIMIT 2 LOOP -- can do some processing home RETURN NEXT loopElement; -- return current row of SELECT END LOOP; FOR loopElement IN EXECUTE 'SELECT * FROM pg_namespace' LOOP CONTINUE; END LOOP; BEGIN n := n + 1; n := n / 0; EXCEPTION WHEN SQLSTATE '22012' THEN -- relax, don't do it WHEN division_by_zero OR unique_violation THEN RAISE NOTICE 'caught a fool'; END; END
Notes
  1. never evaluates true
  2. never evaluated
  3. never evaluates false
  4. never evaluated
  5. never evaluates true
  6. never evaluated
  7. never evaluates true
  8. never evaluated
  9. never evaluates true
  10. never evaluated
  11. loop always iterates more than once
  12. never evaluates false
  13. never evaluated
  14. never evaluated
  15. never evaluated
  16. never evaluated
  17. never evaluated
  18. never evaluates false
  19. never evaluated
  20. never evaluated
  21. never evaluated
  22. never evaluated
  23. iterations always terminate early. loop always iterates only once
  24. never evaluates false
  25. loop always iterates more than once
  26. never evaluates true
  27. iterations always terminate early. loop always iterates only once
  28. never evaluates false
  29. never evaluates false
  30. loop always passes through
  31. never evaluated
  32. loop always iterates only once
  33. loop always iterates only once
  34. never evaluates false
  35. loop always iterates more than once
  36. loop always iterates more than once
  37. loop always iterates more than once
  38. loop always iterates more than once
  39. iterations always terminate early. loop always iterates more than once
  40. never evaluated
Generated by piggly 2.2.4 at April 18, 2018 21:04 CDT
Return to index