Using q() to define a query



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.

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?

(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.)

Thanks.

Colin
.



Relevant Pages

  • Re: Using q() to define a query
    ... FULL OUTER JOIN jsequipment AS eq ON jsjourneys.equipment = eq.id ... JOIN jsports AS dp ON jsjourneys.departure_port = dp.id ... I'm concerned about $sql because when I output it to Apache's ... queries a bad thing, and/or will it cause trouble in the future? ...
    (perl.dbi.users)
  • RE: Aggregates, Joins, I am totally stuck on this issue
    ... a left outer join it makes it an inner join? ... I have two aggregate queries which are grouped on ... >> query and then create an append query which puts the results of this master ... >> a LEFT OUTER JOIN and run it and what do it get? ...
    (microsoft.public.access.queries)
  • Re: Full outer join and Union again !!
    ... Choose the columns in the two queries so that the column order is the same. ... Union the two queries: ... are project_id and transaction_id and I have anoher table called budget ... > I have tried the left outer join assuming that my transaction table is the ...
    (microsoft.public.access.queries)
  • Re: Relational question
    ... If one considers the question as purely a SQL question then, ... the two queries are equivalent but with further explanation ... Note that if this were an INNER JOIN we would only need to ... >> left outer join ...
    (microsoft.public.sqlserver.programming)
  • Re: Minus in Access
    ... Access does not support a MINUS operation, but you can get the same result ... by using an Outer Join on the keys combined with a Null test. ... "Running Microsoft Access 2000" ... "SQL Queries for Mere Mortals" ...
    (microsoft.public.access.queries)