Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Changes In Branch tkt-6749cb3c Excluding Merge-Ins
This is equivalent to a diff from 6bfa44da to b4716931
2019-07-29
| ||
15:32 | When using an index for both DISTINCT and ORDER BY, do not confuse the number of columns required for distinctness with the number required to get the correct sort order. Fix for [6749cb3c]. (check-in: 6ac0f822 user: dan tags: trunk) | |
14:42 | When using an index for both DISTINCT and ORDER BY, do not confuse the number of columns required for distinctness with the number required to get the correct sort order. Fix for [6749cb3c]. (Closed-Leaf check-in: b4716931 user: dan tags: tkt-6749cb3c) | |
02:49 | Fix harmless compiler warning seen with MSVC for x64. (check-in: 857b2ba6 user: mistachkin tags: trunk) | |
2019-07-26
| ||
20:54 | Merge latest changes from trunk into this branch. (check-in: 7f1e4e4b user: dan tags: reuse-schema) | |
20:33 | Update RBU so that it supports indexes on expressions. (check-in: 6bfa44da user: dan tags: trunk) | |
16:16 | Fix RBU handling of partial indexes with comments embedded in their CREATE INDEX statements. (check-in: e1ccf211 user: dan tags: trunk) | |
Changes to src/where.c.
︙ | |||
3691 3692 3693 3694 3695 3696 3697 | 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 | - - + + | if( wctrlFlags & WHERE_ORDERBY_LIMIT ) continue; }else{ pLoop = pLast; } if( pLoop->wsFlags & WHERE_VIRTUALTABLE ){ if( pLoop->u.vtab.isOrdered ) obSat = obDone; break; |
︙ | |||
3834 3835 3836 3837 3838 3839 3840 | 3834 3835 3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3850 | + - + + | continue; } } if( iColumn!=XN_ROWID ){ pColl = sqlite3ExprNNCollSeq(pWInfo->pParse, pOrderBy->a[i].pExpr); if( sqlite3StrICmp(pColl->zName, pIndex->azColl[j])!=0 ) continue; } if( wctrlFlags & WHERE_DISTINCTBY ){ |
︙ | |||
5155 5156 5157 5158 5159 5160 5161 | 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5168 5169 5170 5171 | - + | int addrSeek = 0; Index *pIdx; int n; if( pWInfo->eDistinct==WHERE_DISTINCT_ORDERED && i==pWInfo->nLevel-1 /* Ticket [ef9318757b152e3] 2017-10-21 */ && (pLoop->wsFlags & WHERE_INDEXED)!=0 && (pIdx = pLoop->u.btree.pIndex)->hasStat1 |
︙ |
Changes to src/whereInt.h.
︙ | |||
124 125 126 127 128 129 130 | 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 | - + | LogEst rRun; /* Cost of running each loop */ LogEst nOut; /* Estimated number of output rows */ union { struct { /* Information for internal btree tables */ u16 nEq; /* Number of equality constraints */ u16 nBtm; /* Size of BTM vector */ u16 nTop; /* Size of TOP vector */ |
︙ |
Changes to test/distinct2.test.
︙ | |||
224 225 226 227 228 229 230 231 232 233 | 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + | INSERT INTO t1(a, b) VALUES(1, 'yes'); CREATE TABLE t2(x PRIMARY KEY); INSERT INTO t2 VALUES('yes'); SELECT DISTINCT a FROM t1, t2 WHERE x=b; ANALYZE; SELECT DISTINCT a FROM t1, t2 WHERE x=b; } {1 1} #------------------------------------------------------------------------- reset_db do_execsql_test 2000 { CREATE TABLE t0 (c0, c1, c2, PRIMARY KEY (c0, c1)); CREATE TABLE t1 (c2); INSERT INTO t0(c2) VALUES (0),(1),(3),(4),(5),(6),(7),(8),(9),(10),(11); INSERT INTO t0(c1) VALUES ('a'); INSERT INTO t1(c2) VALUES (0); } do_execsql_test 2010 { SELECT DISTINCT t0.c0, t1._rowid_, t0.c1 FROM t1 CROSS JOIN t0 ORDER BY t0.c0; } {{} 1 {} {} 1 a} do_execsql_test 1.2 { ANALYZE; } do_execsql_test 2020 { SELECT DISTINCT t0.c0, t1._rowid_, t0.c1 FROM t1 CROSS JOIN t0 ORDER BY t0.c0; } {{} 1 {} {} 1 a} do_execsql_test 2030 { CREATE TABLE t2(a, b, c); CREATE INDEX t2ab ON t2(a, b); WITH c(i) AS (SELECT 1 UNION ALL SELECT i+1 FROM c WHERE i<64) INSERT INTO t2 SELECT 'one', i%2, 'one' FROM c; WITH c(i) AS (SELECT 1 UNION ALL SELECT i+1 FROM c WHERE i<64) INSERT INTO t2 SELECT 'two', i%2, 'two' FROM c; CREATE TABLE t3(x INTEGER PRIMARY KEY); INSERT INTO t3 VALUES(1); ANALYZE; } do_execsql_test 2040 { SELECT DISTINCT a, b, x FROM t3 CROSS JOIN t2 ORDER BY a; } { one 0 1 one 1 1 two 0 1 two 1 1 } finish_test |