On Wed, May 1, 2013 at 2:15 PM, Daniel Schürmann <[email protected]> wrote:
> Hi Steven,
>
> Yes, we should solve this issue and use the const values in any case.
> This allows to rely on IDE features like "display call tree".
>
I think we should stick with whatever makes the code easiest to maintain
(which would be using the constants when possible) -- maybe the constants
should be renamed to be a little easier on the eyes? A lot of the DAO code
doesn't use the constants, that's true. We should fix those queries.
>
> But I am not sure if the use of const QString is performance neutral to
> const char* and #define because the heavy QSting constructor is called.
>
> So IMHO we should change it to const char*.
>
> There are a lot of non-performance-neutral choices we make in Mixxx, but
that alone isn't enough to make a decision, we have to take the context
into account. Compared to the QSqlQuery::exec() that comes immediately
after all these queries, some string concatenation isn't going to break the
bank, cycle-wise. Processors are pretty good at memcpy these days :).
>
> Kind regards,
>
> Daniel
>
>
>
>
>
> Am 01.05.2013 17:32, schrieb Steven Boswell II:
>
> Most of the DAO header files in src/library/dao have definitions for the
> names of tables, and the names of columns in the tables, but they're used
> sporadically; quite often, references to them are hardcoded.
>
> I'm writing a new feature (the aforementioned auto-DJ-crates), and the
> necessary info is stored in a temporary table, so I'm writing several SQL
> queries. I'm just wondering if I should hardcode the table/column
> references (which won't automatically get updated if the underlying names
> change), or try to write them using the table/column names defined in
> header files (which makes the query harder to read).
>
> Here's an example. The comment is the hardcoded, human-readable
> version, and following it is the hard-to-read one that'll adapt
> automatically to changes.
>
> // INSERT INTO temp_autodj_crates (track_id, craterefs, timesplayed,
> autodjrefs) SELECT crate_tracks.track_id, COUNT (*), library.timesplayed, 0
> FROM crate_tracks, library WHERE crate_tracks.crate_id IN (SELECT id FROM
> crates WHERE autodj = 1) AND crate_tracks.track_id = library.id AND
> library.mixxx_deleted = 0 GROUP BY crate_tracks.track_id,
> library.timesplayed;
> strQuery = QString ("INSERT INTO " AUTODJCRATES_TABLE
> " (" AUTODJCRATESTABLE_TRACKID ", " AUTODJCRATESTABLE_CRATEREFS ",
> "
> AUTODJCRATESTABLE_TIMESPLAYED ", " AUTODJCRATESTABLE_AUTODJREFS ")"
> " SELECT " CRATE_TRACKS_TABLE ".%1 , COUNT (*), "
> LIBRARY_TABLE ".%2, 0 FROM " CRATE_TRACKS_TABLE ", " LIBRARY_TABLE
> " WHERE " CRATE_TRACKS_TABLE ".%4 IN "
> "(SELECT %5 FROM " CRATE_TABLE " WHERE %6 = 1) AND "
> CRATE_TRACKS_TABLE ".%1 = " LIBRARY_TABLE ".%7 AND " LIBRARY_TABLE
> ".%3 == 0 GROUP BY " CRATE_TRACKS_TABLE ".%1, " LIBRARY_TABLE
> ".%2")
> .arg (CRATETRACKSTABLE_TRACKID) // %1
> .arg (LIBRARYTABLE_TIMESPLAYED) // %2
> .arg (LIBRARYTABLE_MIXXXDELETED) // %3
> .arg (CRATETRACKSTABLE_CRATEID) // %4
> .arg (CRATETABLE_ID) // %5
> .arg (CRATETABLE_AUTODJ) // %6
> .arg (LIBRARYTABLE_ID); // %7
>
> Which should I do?
>
> Pretty soon, I'll make a blueprint for the auto-DJ-crates feature.
>
> Steven Boswell
>
>
> ------------------------------------------------------------------------------
> Introducing AppDynamics Lite, a free troubleshooting tool for Java/.NET
> Get 100% visibility into your production application - at no cost.
> Code-level diagnostics for performance bottlenecks with <2% overhead
> Download for free and get started troubleshooting in
> minutes.http://p.sf.net/sfu/appdyn_d2d_ap1
>
>
>
> _______________________________________________
> Get Mixxx, the #1 Free MP3 DJ Mixing software Todayhttp://mixxx.org
>
>
> Mixxx-devel mailing
> [email protected]https://lists.sourceforge.net/lists/listinfo/mixxx-devel
>
>
>
>
> ------------------------------------------------------------------------------
> Introducing AppDynamics Lite, a free troubleshooting tool for Java/.NET
> Get 100% visibility into your production application - at no cost.
> Code-level diagnostics for performance bottlenecks with <2% overhead
> Download for free and get started troubleshooting in minutes.
> http://p.sf.net/sfu/appdyn_d2d_ap1
> _______________________________________________
> Get Mixxx, the #1 Free MP3 DJ Mixing software Today
> http://mixxx.org
>
>
> Mixxx-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/mixxx-devel
>
------------------------------------------------------------------------------
Introducing AppDynamics Lite, a free troubleshooting tool for Java/.NET
Get 100% visibility into your production application - at no cost.
Code-level diagnostics for performance bottlenecks with <2% overhead
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap1
_______________________________________________
Get Mixxx, the #1 Free MP3 DJ Mixing software Today
http://mixxx.org
Mixxx-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mixxx-devel