Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Make sure the omit-noop-left-join optimization is not applied if columns of the LEFT JOIN are used in the ORDER BY clause. Ticket [be84e357c035] |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
0303d6bc7112e6f810ae1bd75cafc5ff |
User & Date: | drh 2013-09-03 14:03:47.008 |
Context
2013-09-03
| ||
14:49 | Merge in all the latest trunk changes, including the win32-longpath VFS and the fix for the segfault in the omit-left-join optimization. (check-in: cdd3838b78 user: drh tags: sessions) | |
14:43 | Fix another problem in stat4 sample selection. (check-in: d59f580904 user: dan tags: trunk) | |
14:33 | Make sure the omit-noop-left-join optimization is not applied if columns of the LEFT JOIN are used in the ORDER BY clause. Ticket [be84e357c035]. Increase version number to 3.8.0.2. (check-in: cce541864d user: drh tags: branch-3.8.0) | |
14:03 | Make sure the omit-noop-left-join optimization is not applied if columns of the LEFT JOIN are used in the ORDER BY clause. Ticket [be84e357c035] (check-in: 0303d6bc71 user: drh tags: trunk) | |
2013-09-02
| ||
20:22 | Simplify branch coverage testing by interchanging the order of two tests in the whereLoopInsert() function. (check-in: f7079b5365 user: drh tags: trunk) | |
Changes
Changes to src/where.c.
︙ | ︙ | |||
5905 5906 5907 5908 5909 5910 5911 | #endif /* Attempt to omit tables from the join that do not effect the result */ if( pWInfo->nLevel>=2 && pResultSet!=0 && OptimizationEnabled(db, SQLITE_OmitNoopJoin) ){ Bitmask tabUsed = exprListTableUsage(pMaskSet, pResultSet); | | | 5905 5906 5907 5908 5909 5910 5911 5912 5913 5914 5915 5916 5917 5918 5919 | #endif /* Attempt to omit tables from the join that do not effect the result */ if( pWInfo->nLevel>=2 && pResultSet!=0 && OptimizationEnabled(db, SQLITE_OmitNoopJoin) ){ Bitmask tabUsed = exprListTableUsage(pMaskSet, pResultSet); if( sWLB.pOrderBy ) tabUsed |= exprListTableUsage(pMaskSet, sWLB.pOrderBy); while( pWInfo->nLevel>=2 ){ WhereTerm *pTerm, *pEnd; pLoop = pWInfo->a[pWInfo->nLevel-1].pWLoop; if( (pWInfo->pTabList->a[pLoop->iTab].jointype & JT_LEFT)==0 ) break; if( (wctrlFlags & WHERE_WANT_DISTINCT)==0 && (pLoop->wsFlags & WHERE_ONEROW)==0 ){ |
︙ | ︙ |
Changes to test/where.test.
︙ | ︙ | |||
1299 1300 1301 1302 1303 1304 1305 1306 1307 | do_test where-17.5 { execsql { CREATE TABLE tother(a, b); INSERT INTO tother VALUES(1, 3.7); SELECT id, a FROM tbooking, tother WHERE id>a; } } {42 1 43 1} finish_test | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 | do_test where-17.5 { execsql { CREATE TABLE tother(a, b); INSERT INTO tother VALUES(1, 3.7); SELECT id, a FROM tbooking, tother WHERE id>a; } } {42 1 43 1} # Ticket [be84e357c035d068135f20bcfe82761bbf95006b] 2013-09-03 # Segfault during query involving LEFT JOIN column in the ORDER BY clause. # do_execsql_test where-18.1 { CREATE TABLE t181(a); CREATE TABLE t182(b,c); INSERT INTO t181 VALUES(1); SELECT DISTINCT a FROM t181 LEFT JOIN t182 ON a=b ORDER BY c IS NULL; } {1} do_execsql_test where-18.2 { SELECT DISTINCT a FROM t181 LEFT JOIN t182 ON a=b ORDER BY +c; } {1} do_execsql_test where-18.3 { SELECT DISTINCT a FROM t181 LEFT JOIN t182 ON a=b ORDER BY c; } {1} do_execsql_test where-18.4 { INSERT INTO t181 VALUES(1),(1),(1),(1); SELECT DISTINCT a FROM t181 LEFT JOIN t182 ON a=b ORDER BY +c; } {1} do_execsql_test where-18.5 { INSERT INTO t181 VALUES(2); SELECT DISTINCT a FROM t181 LEFT JOIN t182 ON a=b ORDER BY c IS NULL, +a; } {1 2} do_execsql_test where-18.6 { INSERT INTO t181 VALUES(2); SELECT DISTINCT a FROM t181 LEFT JOIN t182 ON a=b ORDER BY +a, +c IS NULL; } {1 2} finish_test |