VirtualBox

Ignore:
Timestamp:
Jun 5, 2016 3:57:06 AM (9 years ago)
Author:
vboxsync
Message:

testresults.py: Help the postgresql planner order the tables by explictly joining with TestBoxesWithStrings. (According to their docs, join forces a stronger from table lookup odering. We want our subqueries to be executed before touching TestBoxesWithStrings of course.)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/testmanager/core/testresults.py

    r61468 r61469  
    937937                  '       array_agg(TestResultFailures.sComment        ORDER BY TestResultFailures.idTestResult),\n' \
    938938                  '       (TestSets.tsDone IS NULL) SortRunningFirst' + sSortColumns + '\n' \
    939                   'FROM   BuildCategories,\n' \
    940                   '       Builds,\n' \
    941                   '       TestBoxesWithStrings,\n' \
    942                   '       TestResults,\n' \
    943                   '       TestCases,\n' \
    944                   '       TestCaseArgs,\n' \
    945                   '       (  SELECT TestSets.idTestSet AS idTestSet,\n' \
     939                  'FROM   (  SELECT TestSets.idTestSet AS idTestSet,\n' \
    946940                  '                 TestSets.tsDone AS tsDone,\n' \
    947941                  '                 TestSets.tsCreated AS tsCreated,\n' \
     
    980974
    981975        sQuery += '       ) AS TestSets\n' \
     976                  '            INNER JOIN TestBoxesWithStrings\n' \
     977                  '                    ON TestSets.idGenTestBox     = TestBoxesWithStrings.idGenTestBox' \
    982978                  '       LEFT OUTER JOIN Builds AS TestSuiteBits\n' \
    983979                  '                    ON TestSets.idBuildTestSuite = TestSuiteBits.idBuild\n' \
    984980                  '       LEFT OUTER JOIN TestResultFailures\n' \
    985981                  '                    ON     TestSets.idTestSet          = TestResultFailures.idTestSet\n' \
    986                   '                       AND TestResultFailures.tsExpire = \'infinity\'::TIMESTAMP\n';
     982                  '                       AND TestResultFailures.tsExpire = \'infinity\'::TIMESTAMP';
    987983        if sSortOrderBy is not None and sSortOrderBy.find('FailureReason') >= 0:
    988984            sQuery += '\n' \
    989985                      '       LEFT OUTER JOIN FailureReasons\n' \
    990986                      '                    ON     TestResultFailures.idFailureReason = FailureReasons.idFailureReason\n' \
    991                       '                       AND FailureReasons.tsExpire            = \'infinity\'::TIMESTAMP\n';
     987                      '                       AND FailureReasons.tsExpire            = \'infinity\'::TIMESTAMP';
     988        sQuery += ',\n' \
     989                  '       BuildCategories,\n' \
     990                  '       Builds,\n' \
     991                  '       TestResults,\n' \
     992                  '       TestCases,\n' \
     993                  '       TestCaseArgs\n';
    992994        sQuery += 'WHERE  TestSets.idTestSet         = TestResults.idTestSet\n' \
    993995                  '   AND TestResults.idTestResultParent is NULL\n' \
     
    996998                  '   AND Builds.tsEffective        <= TestSets.tsCreated\n' \
    997999                  '   AND Builds.idBuildCategory     = BuildCategories.idBuildCategory\n' \
    998                   '   AND TestSets.idGenTestBox      = TestBoxesWithStrings.idGenTestBox\n' \
    9991000                  '   AND TestSets.idGenTestCase     = TestCases.idGenTestCase\n' \
    10001001                  '   AND TestSets.idGenTestCaseArgs = TestCaseArgs.idGenTestCaseArgs\n';
     
    11811182
    11821183        self._oDb.execute('SELECT TestBoxesWithStrings.*\n'
    1183                           'FROM   TestBoxesWithStrings,\n'
    1184                           '       ( SELECT idTestBox         AS idTestBox,\n'
     1184                          'FROM   ( SELECT idTestBox         AS idTestBox,\n'
    11851185                          '                MAX(idGenTestBox) AS idGenTestBox\n'
    11861186                          '         FROM   TestSets\n'
     
    11881188                          '         GROUP BY idTestBox\n'
    11891189                          '       ) AS TestBoxIDs\n'
    1190                           'WHERE  TestBoxesWithStrings.idGenTestBox = TestBoxIDs.idGenTestBox\n'
     1190                          '       INNER JOIN TestBoxesWithStrings\n'
     1191                          '               ON TestBoxesWithStrings.idGenTestBox = TestBoxIDs.idGenTestBox\n'
    11911192                          'ORDER BY TestBoxesWithStrings.sName\n' );
    11921193        aoRet = []
     
    12021203
    12031204        self._oDb.execute('SELECT TestCases.*\n'
    1204                           'FROM   TestCases,\n'
    1205                           '       ( SELECT idTestCase         AS idTestCase,\n'
     1205                          'FROM   ( SELECT idTestCase         AS idTestCase,\n'
    12061206                          '                MAX(idGenTestCase) AS idGenTestCase\n'
    12071207                          '         FROM   TestSets\n'
     
    12091209                          '         GROUP BY idTestCase\n'
    12101210                          '       ) AS TestCasesIDs\n'
    1211                           'WHERE TestCases.idGenTestCase = TestCasesIDs.idGenTestCase\n'
     1211                          '       INNER JOIN TestCases ON TestCases.idGenTestCase = TestCasesIDs.idGenTestCase\n'
    12121212                          'ORDER BY TestCases.sName\n' );
    12131213        aoRet = [];
     
    12231223
    12241224        self._oDb.execute('SELECT SchedGroups.*\n'
    1225                           'FROM   SchedGroups,\n'
    1226                           '       ( SELECT TestBoxes.idSchedGroup  AS idSchedGroup,\n'
     1225                          'FROM   ( SELECT TestBoxes.idSchedGroup  AS idSchedGroup,\n'
    12271226                          '                MAX(TestSets.tsCreated) AS tsNow\n'
    12281227                          '         FROM   TestSets,\n'
     
    12321231                          '         GROUP BY idSchedGroup\n'
    12331232                          '       ) AS SchedGroupIDs\n'
    1234                           'WHERE  SchedGroups.idSchedGroup = SchedGroupIDs.idSchedGroup\n'
    1235                           '   AND SchedGroups.tsExpire     > SchedGroupIDs.tsNow\n'
    1236                           '   AND SchedGroups.tsEffective <= SchedGroupIDs.tsNow\n'
     1233                          '       INNER JOIN SchedGroups\n'
     1234                          '               ON SchedGroups.idSchedGroup = SchedGroupIDs.idSchedGroup\n'
     1235                          '              AND SchedGroups.tsExpire     > SchedGroupIDs.tsNow\n'
     1236                          '              AND SchedGroups.tsEffective <= SchedGroupIDs.tsNow\n'
    12371237                          'ORDER BY SchedGroups.sName\n' );
    12381238        aoRet = []
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette