On Jan 10, 2008 7:59 PM, Colin Wetherbee <[EMAIL PROTECTED]> wrote:

> Greetings.
>
> I have a DBI (DBD::Pg) application I'm building in mod_perl.  My queries
> tend to look something like the following.
>
>   my $sql = q(SELECT departure_date, eq.name AS equipment,
>     dp.full_city AS departure_city, ap.full_city AS arrival_city,
>     ca.name AS carrier_name, number
>     FROM jsjourneys
>     FULL OUTER JOIN jscarriers AS ca ON jsjourneys.carrier = ca.id
>     FULL OUTER JOIN jsequipment AS eq ON jsjourneys.equipment = eq.id
>     JOIN jsports AS dp ON jsjourneys.departure_port = dp.id
>     JOIN jsports AS ap ON jsjourneys.arrival_port = ap.id
>     ORDER BY departure_date);
>
> And, then, I execute them as follows.
>
>   $dbh->selectall_arrayref($sql, { Slice => {} });
>
> Which works quite well.
>
> However, I'm concerned about $sql because when I output it to Apache's
> debug log, it looks like this:
>
> [Fri Jan 11 03:49:09 2008] [debug] Log.pm(36): [client 192.168.171.80]
> [JetSet] SELECT departure_date, eq.name AS equipment,\n
> dp.full_city AS departure_city, ap.full_city AS arrival_city,\n
> ca.name AS carrier_name, number\n      FROM jsjourneys\n      FULL OUTER
> JOIN jscarriers AS ca ON jsjourneys.carrier = ca.id\n      FULL OUTER
> JOIN jsequipment AS eq ON jsjourneys.equipment = eq.id\n      JOIN
> jsports AS dp ON jsjourneys.departure_port = dp.id\n      JOIN jsports
> AS ap ON jsjourneys.arrival_port = ap.id\n      ORDER BY departure_date
>
> Notice the newline characters in there.  If those were really in the
> query, I can't imagine the database would run it, so I suppose they're
> an artifact of the combination of using q() to quote my query and using
> Apache's logger to output it.
>

If you're referring to the newlines in the $sql string - I'd be astonished
if the DBMS did not handle them OK.  If you're referring to the \n notation
in the log output, I'd assume those are interpolated by the Apache logging
module.

>
> All this leads up to a pretty simple question: is using q() to quote my
> queries a bad thing, and/or will it cause trouble in the future?
>

It's fine...


> (As an aside, how do you guys quote your queries?  I find that for
> anything longer than about 60 characters, q() and '' and everything else
> start to look horribly inelegant.)
>

q{}; q%%; q[];

On occasion, I've done evil things like q"" and qq'' -- it seemed like a
good idea at the time.



>
> Thanks.
>
> Colin
>



-- 
Jonathan Leffler <[EMAIL PROTECTED]>  #include <disclaimer.h>
Guardian of DBD::Informix - v2007.0914 - http://dbi.perl.org
"Blessed are we who can laugh at ourselves, for we shall never cease to be
amused."

Reply via email to