Ticket #554: programid-part-fixes.patch

File programid-part-fixes.patch, 2.0 KB (added by jppoet@…, 16 years ago)

Version for -fixes (maybe). No guarantee it still applies.

  • programs/mythfilldatabase/main.cpp

     
    660660                QString("    Found %1").arg(query.numRowsAffected()));
    661661    }
    662662
     663    if (grab_data)
     664    {
     665        VERBOSE(VB_GENERAL, "Fudging non-unique programid "
     666                "with multiple parts.");
     667
     668        MSqlQuery sel(MSqlQuery::InitCon());
     669        sel.exec("SELECT DISTINCT programid, partnumber "
     670                   "FROM program WHERE partnumber > 0 AND parttotal > 0 AND "
     671                   "programid LIKE '%0000'");
     672
     673        if (sel.isActive() && sel.size() > 0)
     674        {
     675            MSqlQuery repl(MSqlQuery::InitCon());
     676
     677            while (sel.next())
     678            {
     679                QString orig_programid = sel.value(0).toString();
     680                int partnum = sel.value(1).toInt();
     681                QString new_programid = orig_programid.left(8);
     682                QString part;
     683
     684                part.setNum(partnum);
     685                new_programid.append(part.rightJustify(4, '0'));
     686
     687                repl.prepare("UPDATE program SET programid = :NEWID "
     688                             "WHERE programid = :OLDID AND "
     689                             "partnumber = :PART");
     690                repl.bindValue(":NEWID", new_programid);
     691                repl.bindValue(":OLDID", orig_programid);
     692                repl.bindValue(":PART", partnum);
     693                if (!repl.exec())
     694                {
     695                    MythContext::DBError(QString("Fudging programid from '%1' "
     696                                                 " to '%2'")
     697                                         .arg(orig_programid)
     698                                         .arg(new_programid), repl);
     699                }
     700            }
     701        }
     702
     703        VERBOSE(VB_GENERAL,
     704                QString("    Found %1").arg(sel.numRowsAffected()));
     705    }
     706
    663707    if (mark_repeats)
    664708    {
    665709        VERBOSE(VB_GENERAL, "Marking repeats.");