Ticket #673: xmltv_aus.diff

File xmltv_aus.diff, 24.8 KB (added by anonymous, 14 years ago)
  • programs/mythfilldatabase/filldata.cpp

     
    22462246
    22472247        int chanid = 0;
    22482248
     2249        QValueList<int> chanList;
     2250
    22492251        query.prepare("SELECT chanid FROM channel WHERE sourceid = :ID AND "
    22502252                      "xmltvid = :XMLTVID;");
    22512253        query.bindValue(":ID", id);
     
    22532255
    22542256        query.exec();
    22552257
    2256         if (query.isActive() && query.size() > 0)
     2258        while (query.next())
    22572259        {
    2258             query.next();
    2259             chanid = query.value(0).toInt();
     2260            chanList.push_front(query.value(0).toInt());
    22602261        }
    22612262
    2262         if (chanid == 0)
     2263        for (QValueList<int>::iterator it = chanList.begin(); it != chanList.end(); ++it)
    22632264        {
    2264             cerr << "Unknown xmltv channel identifier: " << mapiter.key()
    2265                  << endl << "Skipping channel.\n";
    2266             continue;
    2267         }
    2268 
    2269         QValueList<ProgInfo> *sortlist = &((*proglist)[mapiter.key()]);
    2270 
    2271         fixProgramList(sortlist);
    2272 
    2273         QValueList<ProgInfo>::iterator i = sortlist->begin();
    2274         for (; i != sortlist->end(); i++)
    2275         {
    2276             query.prepare("SELECT * FROM program WHERE "
    2277                           "chanid=:CHANID AND "
    2278                           "starttime=:START AND "
    2279                           "endtime=:END AND "
    2280                           "title=:TITLE AND "
    2281                           "subtitle=:SUBTITLE AND "
    2282                           "description=:DESC AND "
    2283                           "category=:CATEGORY AND "
    2284                           "category_type=:CATEGORY_TYPE AND "
    2285                           "airdate=:AIRDATE AND "
    2286                           "stars=:STARS AND "
    2287                           "previouslyshown=:PREVIOUSLYSHOWN AND "
    2288                           "title_pronounce=:TITLE_PRONOUNCE AND "
    2289                           "stereo=:STEREO AND "
    2290                           "subtitled=:SUBTITLED AND "
    2291                           "hdtv=:HDTV AND "
    2292                           "closecaptioned=:CLOSECAPTIONED AND "
    2293                           "partnumber=:PARTNUMBER AND "
    2294                           "parttotal=:PARTTOTAL AND "
    2295                           "seriesid=:SERIESID AND "
    2296                           "showtype=:SHOWTYPE AND "
    2297                           "colorcode=:COLORCODE AND "
    2298                           "syndicatedepisodenumber=:SYNDICATEDEPISODENUMBER AND "
    2299                           "programid=:PROGRAMID;");
    2300             query.bindValue(":CHANID", chanid);
    2301             query.bindValue(":START", (*i).start);
    2302             query.bindValue(":END", (*i).end);
    2303             query.bindValue(":TITLE", (*i).title.utf8());
    2304             query.bindValue(":SUBTITLE", (*i).subtitle.utf8());
    2305             query.bindValue(":DESC", (*i).desc.utf8());
    2306             query.bindValue(":CATEGORY", (*i).category.utf8());
    2307             query.bindValue(":CATEGORY_TYPE", (*i).catType.utf8());
    2308             query.bindValue(":AIRDATE", (*i).airdate.utf8());
    2309             query.bindValue(":STARS", (*i).stars.utf8());
    2310             query.bindValue(":PREVIOUSLYSHOWN", (*i).previouslyshown);
    2311             query.bindValue(":TITLE_PRONOUNCE", (*i).title_pronounce.utf8());
    2312             query.bindValue(":STEREO", (*i).stereo);
    2313             query.bindValue(":SUBTITLED", (*i).subtitled);
    2314             query.bindValue(":HDTV", (*i).hdtv);
    2315             query.bindValue(":CLOSECAPTIONED", (*i).closecaptioned);
    2316             query.bindValue(":PARTNUMBER", (*i).partnumber);
    2317             query.bindValue(":PARTTOTAL", (*i).parttotal);
    2318             query.bindValue(":SERIESID", (*i).seriesid);
    2319             query.bindValue(":SHOWTYPE", (*i).showtype);
    2320             query.bindValue(":COLORCODE", (*i).colorcode);
    2321             query.bindValue(":SYNDICATEDEPISODENUMBER", (*i).syndicatedepisodenumber);
    2322             query.bindValue(":PROGRAMID", (*i).programid);
    2323             query.exec();
    2324 
    2325             if (query.isActive() && query.size() > 0)
     2265            chanid = *it;
     2266            if (chanid == 0)
    23262267            {
    2327                 unchanged++;
     2268                cerr << "Unknown xmltv channel identifier: " << mapiter.key()
     2269                     << endl << "Skipping channel.\n";
    23282270                continue;
    23292271            }
    23302272
    2331             query.prepare("SELECT title,starttime,endtime FROM program WHERE "
    2332                           "chanid=:CHANID AND starttime>=:START AND "
    2333                           "starttime<:END;");
    2334             query.bindValue(":CHANID", chanid);
    2335             query.bindValue(":START", (*i).start);
    2336             query.bindValue(":END", (*i).end);
    2337             query.exec();
     2273            QValueList<ProgInfo> *sortlist = &((*proglist)[mapiter.key()]);
    23382274
    2339             if (query.isActive() && query.size() > 0)
     2275            fixProgramList(sortlist);
     2276
     2277            QValueList<ProgInfo>::iterator i = sortlist->begin();
     2278            for (; i != sortlist->end(); i++)
    23402279            {
    2341                 if (!quiet)
     2280                query.prepare("SELECT * FROM program WHERE "
     2281                              "chanid=:CHANID AND "
     2282                              "starttime=:START AND "
     2283                              "endtime=:END AND "
     2284                              "title=:TITLE AND "
     2285                              "subtitle=:SUBTITLE AND "
     2286                              "description=:DESC AND "
     2287                              "category=:CATEGORY AND "
     2288                              "category_type=:CATEGORY_TYPE AND "
     2289                              "airdate=:AIRDATE AND "
     2290                              "stars=:STARS AND "
     2291                              "previouslyshown=:PREVIOUSLYSHOWN AND "
     2292                              "title_pronounce=:TITLE_PRONOUNCE AND "
     2293                              "stereo=:STEREO AND "
     2294                              "subtitled=:SUBTITLED AND "
     2295                              "hdtv=:HDTV AND "
     2296                              "closecaptioned=:CLOSECAPTIONED AND "
     2297                              "partnumber=:PARTNUMBER AND "
     2298                              "parttotal=:PARTTOTAL AND "
     2299                              "seriesid=:SERIESID AND "
     2300                              "showtype=:SHOWTYPE AND "
     2301                              "colorcode=:COLORCODE AND "
     2302                              "syndicatedepisodenumber=:SYNDICATEDEPISODENUMBER AND "
     2303                              "programid=:PROGRAMID;");
     2304                query.bindValue(":CHANID", chanid);
     2305                query.bindValue(":START", (*i).start);
     2306                query.bindValue(":END", (*i).end);
     2307                query.bindValue(":TITLE", (*i).title.utf8());
     2308                query.bindValue(":SUBTITLE", (*i).subtitle.utf8());
     2309                query.bindValue(":DESC", (*i).desc.utf8());
     2310                query.bindValue(":CATEGORY", (*i).category.utf8());
     2311                query.bindValue(":CATEGORY_TYPE", (*i).catType.utf8());
     2312                query.bindValue(":AIRDATE", (*i).airdate.utf8());
     2313                query.bindValue(":STARS", (*i).stars.utf8());
     2314                query.bindValue(":PREVIOUSLYSHOWN", (*i).previouslyshown);
     2315                query.bindValue(":TITLE_PRONOUNCE", (*i).title_pronounce.utf8());
     2316                query.bindValue(":STEREO", (*i).stereo);
     2317                query.bindValue(":SUBTITLED", (*i).subtitled);
     2318                query.bindValue(":HDTV", (*i).hdtv);
     2319                query.bindValue(":CLOSECAPTIONED", (*i).closecaptioned);
     2320                query.bindValue(":PARTNUMBER", (*i).partnumber);
     2321                query.bindValue(":PARTTOTAL", (*i).parttotal);
     2322                query.bindValue(":SERIESID", (*i).seriesid);
     2323                query.bindValue(":SHOWTYPE", (*i).showtype);
     2324                query.bindValue(":COLORCODE", (*i).colorcode);
     2325                query.bindValue(":SYNDICATEDEPISODENUMBER", (*i).syndicatedepisodenumber);
     2326                query.bindValue(":PROGRAMID", (*i).programid);
     2327                query.exec();
     2328
     2329                if (query.isActive() && query.size() > 0)
    23422330                {
    2343                     while(query.next())
     2331                    unchanged++;
     2332                    continue;
     2333                }
     2334
     2335                query.prepare("SELECT title,starttime,endtime FROM program WHERE "
     2336                              "chanid=:CHANID AND starttime>=:START AND "
     2337                              "starttime<:END;");
     2338                query.bindValue(":CHANID", chanid);
     2339                query.bindValue(":START", (*i).start);
     2340                query.bindValue(":END", (*i).end);
     2341                query.exec();
     2342
     2343                if (query.isActive() && query.size() > 0)
     2344                {
     2345                    if (!quiet)
    23442346                    {
    2345                         cerr << "removing existing program: "
     2347                        while(query.next())
     2348                        {
     2349                            cerr << "removing existing program: "
     2350                                 << (*i).channel.local8Bit() << " "
     2351                                 << QString::fromUtf8(query.value(0).toString()).local8Bit() << " "
     2352                                 << query.value(1).toDateTime().toString(Qt::ISODate) << " - "
     2353                                 << query.value(2).toDateTime().toString(Qt::ISODate) << endl;
     2354                        }
     2355
     2356                        cerr << "inserting new program    : "
    23462357                             << (*i).channel.local8Bit() << " "
    2347                              << QString::fromUtf8(query.value(0).toString()).local8Bit() << " "
    2348                              << query.value(1).toDateTime().toString(Qt::ISODate) << " - "
    2349                              << query.value(2).toDateTime().toString(Qt::ISODate) << endl;
     2358                             << (*i).title.local8Bit() << " "
     2359                             << (*i).start.toString() << " - "
     2360                             << (*i).end.toString() << endl << endl;
    23502361                    }
    23512362
    2352                     cerr << "inserting new program    : "
    2353                          << (*i).channel.local8Bit() << " "
    2354                          << (*i).title.local8Bit() << " "
    2355                          << (*i).start.toString() << " - "
    2356                          << (*i).end.toString() << endl << endl;
    2357                 }
     2363                    MSqlQuery subquery(MSqlQuery::InitCon());
     2364                    subquery.prepare("DELETE FROM program WHERE "
     2365                                     "chanid=:CHANID AND starttime>=:START "
     2366                                     "AND starttime<:END;");
     2367                    subquery.bindValue(":CHANID", chanid);
     2368                    subquery.bindValue(":START", (*i).start);
     2369                    subquery.bindValue(":END", (*i).end);
    23582370
    2359                 MSqlQuery subquery(MSqlQuery::InitCon());
    2360                 subquery.prepare("DELETE FROM program WHERE "
    2361                                  "chanid=:CHANID AND starttime>=:START "
    2362                                  "AND starttime<:END;");
    2363                 subquery.bindValue(":CHANID", chanid);
    2364                 subquery.bindValue(":START", (*i).start);
    2365                 subquery.bindValue(":END", (*i).end);
     2371                    subquery.exec();
    23662372
    2367                 subquery.exec();
     2373                    subquery.prepare("DELETE FROM programrating WHERE "
     2374                                     "chanid=:CHANID AND starttime>=:START "
     2375                                     "AND starttime<:END;");
     2376                    subquery.bindValue(":CHANID", chanid);
     2377                    subquery.bindValue(":START", (*i).start);
     2378                    subquery.bindValue(":END", (*i).end);
    23682379
    2369                 subquery.prepare("DELETE FROM programrating WHERE "
    2370                                  "chanid=:CHANID AND starttime>=:START "
    2371                                  "AND starttime<:END;");
    2372                 subquery.bindValue(":CHANID", chanid);
    2373                 subquery.bindValue(":START", (*i).start);
    2374                 subquery.bindValue(":END", (*i).end);
     2380                    subquery.exec();
    23752381
    2376                 subquery.exec();
     2382                    subquery.prepare("DELETE FROM credits WHERE "
     2383                                     "chanid=:CHANID AND starttime>=:START "
     2384                                     "AND starttime<:END;");
     2385                    subquery.bindValue(":CHANID", chanid);
     2386                    subquery.bindValue(":START", (*i).start);
     2387                    subquery.bindValue(":END", (*i).end);
    23772388
    2378                 subquery.prepare("DELETE FROM credits WHERE "
    2379                                  "chanid=:CHANID AND starttime>=:START "
    2380                                  "AND starttime<:END;");
    2381                 subquery.bindValue(":CHANID", chanid);
    2382                 subquery.bindValue(":START", (*i).start);
    2383                 subquery.bindValue(":END", (*i).end);
     2389                    subquery.exec();
     2390                }
    23842391
    2385                 subquery.exec();
    2386             }
    2387 
    2388             query.prepare("INSERT INTO program (chanid,starttime,endtime,"
    2389                           "title,subtitle,description,category,category_type,"
    2390                           "airdate,stars,previouslyshown,title_pronounce,stereo,"
    2391                           "subtitled,hdtv,closecaptioned,partnumber,parttotal,"
    2392                           "seriesid,originalairdate,showtype,colorcode,"
    2393                           "syndicatedepisodenumber,programid) "
    2394                           "VALUES(:CHANID,:STARTTIME,:ENDTIME,:TITLE,"
    2395                           ":SUBTITLE,:DESCRIPTION,:CATEGORY,:CATEGORY_TYPE,:AIRDATE,:STARS,"
    2396                           ":PREVIOUSLYSHOWN,:TITLE_PRONOUNCE,:STEREO,:SUBTITLED,"
    2397                           ":HDTV,:CLOSECAPTIONED,:PARTNUMBER,:PARTTOTAL,:SERIESID,"
    2398                           ":ORIGINALAIRDATE,:SHOWTYPE,:COLORCODE,:SYNDICATEDEPISODENUMBER,"
    2399                           ":PROGRAMID);");
    2400             query.bindValue(":CHANID", chanid);
    2401             query.bindValue(":STARTTIME", (*i).start);
    2402             query.bindValue(":ENDTIME", (*i).end);
    2403             query.bindValue(":TITLE", (*i).title.utf8());
    2404             query.bindValue(":SUBTITLE", (*i).subtitle.utf8());
    2405             query.bindValue(":DESCRIPTION", (*i).desc.utf8());
    2406             query.bindValue(":CATEGORY", (*i).category.utf8());
    2407             query.bindValue(":CATEGORY_TYPE", (*i).catType.utf8());
    2408             query.bindValue(":AIRDATE", (*i).airdate.utf8());
    2409             query.bindValue(":STARS", (*i).stars.utf8());
    2410             query.bindValue(":PREVIOUSLYSHOWN", (*i).previouslyshown);
    2411             query.bindValue(":TITLE_PRONOUNCE", (*i).title_pronounce.utf8());
    2412             query.bindValue(":STEREO", (*i).stereo);
    2413             query.bindValue(":SUBTITLED", (*i).subtitled);
    2414             query.bindValue(":HDTV", (*i).hdtv);
    2415             query.bindValue(":CLOSECAPTIONED", (*i).closecaptioned);
    2416             query.bindValue(":PARTNUMBER", (*i).partnumber);
    2417             query.bindValue(":PARTTOTAL", (*i).parttotal);
    2418             query.bindValue(":SERIESID", (*i).seriesid);
    2419             query.bindValue(":ORIGINALAIRDATE", (*i).originalairdate);
    2420             query.bindValue(":SHOWTYPE", (*i).showtype);
    2421             query.bindValue(":COLORCODE", (*i).colorcode);
    2422             query.bindValue(":SYNDICATEDEPISODENUMBER", (*i).syndicatedepisodenumber);
    2423             query.bindValue(":PROGRAMID", (*i).programid);
    2424             if (!query.exec())
    2425             {
    2426                 MythContext::DBError("program insert", query);
    2427             }
    2428 
    2429             updated++;
    2430 
    2431             QValueList<ProgRating>::iterator j = (*i).ratings.begin();
    2432             for (; j != (*i).ratings.end(); j++)
    2433             {
    2434                 query.prepare("INSERT INTO programrating (chanid,starttime,"
    2435                               "system,rating) VALUES (:CHANID, :START, :SYS, "
    2436                               ":RATING);");
     2392                query.prepare("INSERT INTO program (chanid,starttime,endtime,"
     2393                              "title,subtitle,description,category,category_type,"
     2394                              "airdate,stars,previouslyshown,title_pronounce,stereo,"
     2395                              "subtitled,hdtv,closecaptioned,partnumber,parttotal,"
     2396                              "seriesid,originalairdate,showtype,colorcode,"
     2397                              "syndicatedepisodenumber,programid) "
     2398                              "VALUES(:CHANID,:STARTTIME,:ENDTIME,:TITLE,"
     2399                              ":SUBTITLE,:DESCRIPTION,:CATEGORY,:CATEGORY_TYPE,:AIRDATE,:STARS,"
     2400                              ":PREVIOUSLYSHOWN,:TITLE_PRONOUNCE,:STEREO,:SUBTITLED,"
     2401                              ":HDTV,:CLOSECAPTIONED,:PARTNUMBER,:PARTTOTAL,:SERIESID,"
     2402                              ":ORIGINALAIRDATE,:SHOWTYPE,:COLORCODE,:SYNDICATEDEPISODENUMBER,"
     2403                              ":PROGRAMID);");
    24372404                query.bindValue(":CHANID", chanid);
    2438                 query.bindValue(":START", (*i).start);
    2439                 query.bindValue(":SYS", (*j).system.utf8());
    2440                 query.bindValue(":RATING", (*j).rating.utf8());
    2441 
     2405                query.bindValue(":STARTTIME", (*i).start);
     2406                query.bindValue(":ENDTIME", (*i).end);
     2407                query.bindValue(":TITLE", (*i).title.utf8());
     2408                query.bindValue(":SUBTITLE", (*i).subtitle.utf8());
     2409                query.bindValue(":DESCRIPTION", (*i).desc.utf8());
     2410                query.bindValue(":CATEGORY", (*i).category.utf8());
     2411                query.bindValue(":CATEGORY_TYPE", (*i).catType.utf8());
     2412                query.bindValue(":AIRDATE", (*i).airdate.utf8());
     2413                query.bindValue(":STARS", (*i).stars.utf8());
     2414                query.bindValue(":PREVIOUSLYSHOWN", (*i).previouslyshown);
     2415                query.bindValue(":TITLE_PRONOUNCE", (*i).title_pronounce.utf8());
     2416                query.bindValue(":STEREO", (*i).stereo);
     2417                query.bindValue(":SUBTITLED", (*i).subtitled);
     2418                query.bindValue(":HDTV", (*i).hdtv);
     2419                query.bindValue(":CLOSECAPTIONED", (*i).closecaptioned);
     2420                query.bindValue(":PARTNUMBER", (*i).partnumber);
     2421                query.bindValue(":PARTTOTAL", (*i).parttotal);
     2422                query.bindValue(":SERIESID", (*i).seriesid);
     2423                query.bindValue(":ORIGINALAIRDATE", (*i).originalairdate);
     2424                query.bindValue(":SHOWTYPE", (*i).showtype);
     2425                query.bindValue(":COLORCODE", (*i).colorcode);
     2426                query.bindValue(":SYNDICATEDEPISODENUMBER", (*i).syndicatedepisodenumber);
     2427                query.bindValue(":PROGRAMID", (*i).programid);
    24422428                if (!query.exec())
    24432429                {
    2444                     MythContext::DBError("programrating insert", query);
     2430                    MythContext::DBError("program insert", query);
    24452431                }
    2446             }
    24472432
    2448             QValueList<ProgCredit>::iterator k = (*i).credits.begin();
    2449             for (; k != (*i).credits.end(); k++)
    2450             {
    2451                 query.prepare("SELECT person FROM people WHERE "
    2452                               "name = :NAME;");
    2453                 query.bindValue(":NAME", (*k).name.utf8());
    2454                 if (!query.exec())
    2455                     MythContext::DBError("person lookup", query);
     2433                updated++;
    24562434
    2457                 int personid = -1;
    2458                 if (query.isActive() && query.size() > 0)
     2435                QValueList<ProgRating>::iterator j = (*i).ratings.begin();
     2436                for (; j != (*i).ratings.end(); j++)
    24592437                {
    2460                     query.next();
    2461                     personid = query.value(0).toInt();
     2438                    query.prepare("INSERT INTO programrating (chanid,starttime,"
     2439                                  "system,rating) VALUES (:CHANID, :START, :SYS, "
     2440                                  ":RATING);");
     2441                    query.bindValue(":CHANID", chanid);
     2442                    query.bindValue(":START", (*i).start);
     2443                    query.bindValue(":SYS", (*j).system.utf8());
     2444                    query.bindValue(":RATING", (*j).rating.utf8());
     2445
     2446                    if (!query.exec())
     2447                    {
     2448                        MythContext::DBError("programrating insert", query);
     2449                    }
    24622450                }
    24632451
    2464                 if (personid < 0)
     2452                QValueList<ProgCredit>::iterator k = (*i).credits.begin();
     2453                for (; k != (*i).credits.end(); k++)
    24652454                {
    2466                     query.prepare("INSERT INTO people (name) VALUES "
    2467                                   "(:NAME);");
    2468                     query.bindValue(":NAME", (*k).name.utf8());
    2469                     if (!query.exec())
    2470                         MythContext::DBError("person insert", query);
    2471 
    24722455                    query.prepare("SELECT person FROM people WHERE "
    24732456                                  "name = :NAME;");
    24742457                    query.bindValue(":NAME", (*k).name.utf8());
    24752458                    if (!query.exec())
    2476                        MythContext::DBError("person lookup", query);
     2459                        MythContext::DBError("person lookup", query);
    24772460
     2461                    int personid = -1;
    24782462                    if (query.isActive() && query.size() > 0)
    24792463                    {
    24802464                        query.next();
    24812465                        personid = query.value(0).toInt();
    24822466                    }
    2483                 }
    24842467
    2485                 if (personid < 0)
    2486                 {
    2487                     cerr << "Error inserting person\n";
    2488                     continue;
    2489                 }
     2468                    if (personid < 0)
     2469                    {
     2470                        query.prepare("INSERT INTO people (name) VALUES "
     2471                                      "(:NAME);");
     2472                        query.bindValue(":NAME", (*k).name.utf8());
     2473                        if (!query.exec())
     2474                            MythContext::DBError("person insert", query);
    24902475
    2491                 query.prepare("INSERT INTO credits (chanid,starttime,"
    2492                               "role,person) VALUES "
    2493                               "(:CHANID, :START, :ROLE, :PERSON);");
    2494                 query.bindValue(":CHANID", chanid);
    2495                 query.bindValue(":START", (*i).start);
    2496                 query.bindValue(":ROLE", (*k).role.utf8());
    2497                 query.bindValue(":PERSON", personid);
    2498                 if (!query.exec())
    2499                 {
    2500                     // be careful of the startime/timestamp "feature"!
    2501                     query.prepare("UPDATE credits SET "
    2502                                   "role = concat(role,',:ROLE'), "
    2503                                   "starttime = :START "
    2504                                   "WHERE chanid = :CHANID AND "
    2505                                   "starttime = :START2 and person = :PERSON");
     2476                        query.prepare("SELECT person FROM people WHERE "
     2477                                      "name = :NAME;");
     2478                        query.bindValue(":NAME", (*k).name.utf8());
     2479                        if (!query.exec())
     2480                           MythContext::DBError("person lookup", query);
     2481
     2482                        if (query.isActive() && query.size() > 0)
     2483                        {
     2484                            query.next();
     2485                            personid = query.value(0).toInt();
     2486                        }
     2487                    }
     2488   
     2489                    if (personid < 0)
     2490                    {
     2491                        cerr << "Error inserting person\n";
     2492                        continue;
     2493                    }
     2494
     2495                    query.prepare("INSERT INTO credits (chanid,starttime,"
     2496                                  "role,person) VALUES "
     2497                                  "(:CHANID, :START, :ROLE, :PERSON);");
     2498                    query.bindValue(":CHANID", chanid);
     2499                    query.bindValue(":START", (*i).start);
    25062500                    query.bindValue(":ROLE", (*k).role.utf8());
    2507                     query.bindValue(":START", (*i).start);
    2508                     query.bindValue(":CHANID", chanid);
    2509                     query.bindValue(":START2", (*i).start);
    25102501                    query.bindValue(":PERSON", personid);
     2502                    if (!query.exec())
     2503                    {
     2504                        // be careful of the startime/timestamp "feature"!
     2505                        query.prepare("UPDATE credits SET "
     2506                                      "role = concat(role,',:ROLE'), "
     2507                                      "starttime = :START "
     2508                                      "WHERE chanid = :CHANID AND "
     2509                                      "starttime = :START2 and person = :PERSON");
     2510                        query.bindValue(":ROLE", (*k).role.utf8());
     2511                        query.bindValue(":START", (*i).start);
     2512                        query.bindValue(":CHANID", chanid);
     2513                        query.bindValue(":START2", (*i).start);
     2514                        query.bindValue(":PERSON", personid);
    25112515
    2512                     if (!query.exec())
    2513                         MythContext::DBError("credits update", query);
     2516                        if (!query.exec())
     2517                            MythContext::DBError("credits update", query);
     2518                    }
    25142519                }
    25152520            }
    25162521        }