Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Make sure that the likelihood() function does not mess up generation of result-set code when it is used (inappropropriately) in a result-set expression. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
7cdbae625eb029538a693d2bebec465a |
User & Date: | drh 2015-06-20 13:18:34.320 |
Context
2015-06-20
| ||
14:11 | Update the fuzztest data using the latest test vectors discovered by AFL. (check-in: b97f9cf73e user: drh tags: trunk) | |
13:18 | Make sure that the likelihood() function does not mess up generation of result-set code when it is used (inappropropriately) in a result-set expression. (check-in: 7cdbae625e user: drh tags: trunk) | |
2015-06-19
| ||
20:31 | Performance improvements in btreeParseCell() by inlining the varint decoder. (check-in: 172a864d14 user: drh tags: trunk) | |
Changes
Changes to src/expr.c.
︙ | ︙ | |||
2851 2852 2853 2854 2855 2856 2857 | } /* The UNLIKELY() function is a no-op. The result is the value ** of the first argument. */ if( pDef->funcFlags & SQLITE_FUNC_UNLIKELY ){ assert( nFarg>=1 ); | | | 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 | } /* The UNLIKELY() function is a no-op. The result is the value ** of the first argument. */ if( pDef->funcFlags & SQLITE_FUNC_UNLIKELY ){ assert( nFarg>=1 ); inReg = sqlite3ExprCodeTarget(pParse, pFarg->a[0].pExpr, target); break; } for(i=0; i<nFarg; i++){ if( i<32 && sqlite3ExprIsConstant(pFarg->a[i].pExpr) ){ testcase( i==31 ); constMask |= MASKBIT32(i); |
︙ | ︙ |
Changes to test/whereG.test.
︙ | ︙ | |||
240 241 242 243 244 245 246 247 248 | DROP TABLE IF EXISTS t2; CREATE TABLE t2(i int, bool char); INSERT INTO t2 VALUES(1,'T'), (2,'F'); SELECT count(*) FROM t1 LEFT JOIN t2 ON t1.i=t2.i AND bool='T'; SELECT count(*) FROM t1 LEFT JOIN t2 ON likely(t1.i=t2.i) AND bool='T'; } {4 4} finish_test | > > > > > > > > > > > > > > > > > > > > > > | 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 | DROP TABLE IF EXISTS t2; CREATE TABLE t2(i int, bool char); INSERT INTO t2 VALUES(1,'T'), (2,'F'); SELECT count(*) FROM t1 LEFT JOIN t2 ON t1.i=t2.i AND bool='T'; SELECT count(*) FROM t1 LEFT JOIN t2 ON likely(t1.i=t2.i) AND bool='T'; } {4 4} # 2015-06-20 # Crash discovered by AFL # do_execsql_test 7.0 { DROP TABLE IF EXISTS t1; CREATE TABLE t1(a, b, PRIMARY KEY(a,b)); INSERT INTO t1 VALUES(9,1),(1,2); DROP TABLE IF EXISTS t2; CREATE TABLE t2(x, y, PRIMARY KEY(x,y)); INSERT INTO t2 VALUES(3,3),(4,4); SELECT likely(a), x FROM t1, t2 ORDER BY 1, 2; } {1 3 1 4 9 3 9 4} do_execsql_test 7.1 { SELECT unlikely(a), x FROM t1, t2 ORDER BY 1, 2; } {1 3 1 4 9 3 9 4} do_execsql_test 7.2 { SELECT likelihood(a,0.5), x FROM t1, t2 ORDER BY 1, 2; } {1 3 1 4 9 3 9 4} do_execsql_test 7.3 { SELECT coalesce(a,a), x FROM t1, t2 ORDER BY 1, 2; } {1 3 1 4 9 3 9 4} finish_test |