All pastes #794458 Raw Edit

Something

public text v1 · immutable
#794458 ·published 2007-11-23 04:02 UTC
rendered paste body
---- Route lookup
SELECT
  route, rid, did, description, country, cinit, cinc, pinit, pinc, rate, cost, capacity
INTO
  dest
FROM
  routes
WHERE
  rid = ANY((SELECT routes FROM groups WHERE gid = client.gid AND active)::varchar[]) AND
  ((route = SUBSTR(client.dialed, 1, 1) AND LENGTH(route) = 1) OR
   (route = SUBSTR(client.dialed, 1, 2) AND LENGTH(route) = 2) OR
   (route = SUBSTR(client.dialed, 1, 3) AND LENGTH(route) = 3) OR
   (LENGTH(route) >= 4 AND SUBSTR(route, 1, 4) = SUBSTR(client.dialed, 1, 4) AND (client.dialed LIKE (route || '%')))) AND
  active
ORDER BY
  route DESC, cost ASC LIMIT 1;


            Table "public.routes"
   Column    |       Type        | Modifiers
-------------+-------------------+-----------
 route       | character varying |
 lata        | character varying |
 ocn         | character varying |
 rate        | double precision  |
 cost        | double precision  |
 cinit       | integer           |
 cinc        | integer           |
 pinit       | integer           |
 pinc        | integer           |
 city        | character varying |
 state       | character varying |
 country     | character varying |
 description | character varying |
 rid         | character varying |
 did         | integer           |
 capacity    | integer           |
 active      | boolean           |
Indexes:
    "routes_idx1" btree (substr(route::text, 1, 1)) WHERE length(route::text) = 1
    "routes_idx2" btree (substr(route::text, 1, 2)) WHERE length(route::text) = 2
    "routes_idx3" btree (substr(route::text, 1, 3)) WHERE length(route::text) = 3
    "routes_idx4" btree (substr(route::text, 1, 4)) WHERE length(route::text) >= 4