IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 12002


Ignore:
Timestamp:
Feb 22, 2007, 2:54:18 PM (19 years ago)
Author:
jhoblitt
Message:

attempt to work around MySQL 4.1.21s broken support for nested sub-queries in update statements

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippTools/src/warptool.c

    r11997 r12002  
    937937    PS_ASSERT_PTR_NON_NULL(config, false);
    938938
    939     // find
    940     psString query = psStringCopy(
     939#if MYSQL5
     940    char *query =
    941941        "UPDATE p4Run\n"
    942942        "   SET p4Run.state = 'stop'\n"
     
    962962        "       COUNT(p4SkyCellMap.p4_id) = COUNT(p4Skyfile.p4_id)\n"
    963963        "       ) as Foo\n"
    964         "   )\n"
    965     );
     964        "   )\n";
    966965
    967966    if (!p_psDBRunQuery(config->dbh, query)) {
    968967        psError(PS_ERR_UNKNOWN, false, "database error");
    969         psFree(query);
    970         return false;
    971     }
    972 
    973     psFree(query);
     968        return false;
     969    }
     970#else // if MYSQL5
     971{
     972    char *query =
     973        "CREATE TEMPORARY TABLE finished\n"
     974        " (p4_id INT, PRIMARY KEY(p4_id)) ENGINE=MEMORY\n";
     975
     976    if (!p_psDBRunQuery(config->dbh, query)) {
     977        psError(PS_ERR_UNKNOWN, false, "database error");
     978        return false;
     979    }
     980}   
     981
     982{   
     983    char *query =
     984        "INSERT INTO finished\n"
     985        " SELECT\n"
     986        "   p4_id\n"
     987        " FROM\n"
     988        "   (SELECT DISTINCT\n"
     989        "       p4Run.p4_id,\n"
     990        "       p4SkyCellMap.p4_id as foo,\n"
     991        "       p4Skyfile.p4_id as bar\n"
     992        "   FROM p4Run\n"
     993        "   JOIN p4SkyCellMap\n"
     994        "       USING(p4_id)\n"
     995        "   LEFT JOIN p4Skyfile\n"
     996        "       USING(p4_id, skycell_id, tess_id)\n"
     997        "   WHERE\n"
     998        "       p4Run.state = 'run'\n"
     999        "   GROUP BY\n"
     1000        "       p4Run.p4_id\n" 
     1001        "   HAVING\n"
     1002        "       COUNT(p4SkyCellMap.p4_id) = COUNT(p4Skyfile.p4_id)\n"
     1003        " ) as Foo \n";
     1004
     1005    if (!p_psDBRunQuery(config->dbh, query)) {
     1006        psError(PS_ERR_UNKNOWN, false, "database error");
     1007        return false;
     1008    }
     1009}
     1010{   
     1011    char *query =
     1012        "UPDATE p4Run\n"
     1013        "   SET p4Run.state = 'stop'\n"
     1014        " WHERE\n"
     1015        "   p4Run.p4_id =\n"
     1016        "   (SELECT DISTINCT\n"
     1017        "       p4_id\n"
     1018        "   FROM finished\n"
     1019        "   )\n";
     1020
     1021    if (!p_psDBRunQuery(config->dbh, query)) {
     1022        psError(PS_ERR_UNKNOWN, false, "database error");
     1023        return false;
     1024    }
     1025}
     1026
     1027#endif // if MYSQL5
    9741028
    9751029    return true;
Note: See TracChangeset for help on using the changeset viewer.