Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Add asserts() for a couple of unreachable conditions. Add the Mandelbrot Set query as a test case. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
2ad4583c0cc7988f0dfe78fd0a2eb0fd |
User & Date: | drh 2014-01-18 15:22:53.229 |
Context
2014-01-18
| ||
15:59 | Add extra test cases. No changes to code. (check-in: d38d485e58 user: dan tags: trunk) | |
15:22 | Add asserts() for a couple of unreachable conditions. Add the Mandelbrot Set query as a test case. (check-in: 2ad4583c0c user: drh tags: trunk) | |
08:27 | Avoid spurious "no such table" errors in statements of the form "INSERT INTO tbl WITH xxx AS (...) SELECT * FROM xxx". (check-in: cccff8a0b4 user: dan tags: trunk) | |
Changes
Changes to src/expr.c.
︙ | ︙ | |||
1580 1581 1582 1583 1584 1585 1586 | assert( p->pEList->a[0].pExpr!=0 ); /* Because of isCandidateForInOpt(p) */ assert( p->pSrc!=0 ); /* Because of isCandidateForInOpt(p) */ pTab = p->pSrc->a[0].pTab; pExpr = p->pEList->a[0].pExpr; iCol = (i16)pExpr->iColumn; /* Code an OP_VerifyCookie and OP_TableLock for <table>. */ | | | 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 | assert( p->pEList->a[0].pExpr!=0 ); /* Because of isCandidateForInOpt(p) */ assert( p->pSrc!=0 ); /* Because of isCandidateForInOpt(p) */ pTab = p->pSrc->a[0].pTab; pExpr = p->pEList->a[0].pExpr; iCol = (i16)pExpr->iColumn; /* Code an OP_VerifyCookie and OP_TableLock for <table>. */ if( ALWAYS(pTab->pSchema) ){ iDb = sqlite3SchemaToIndex(db, pTab->pSchema); sqlite3CodeVerifySchema(pParse, iDb); sqlite3TableLock(pParse, iDb, pTab->tnum, 0, pTab->zName); } /* This function is only called from two places. In both cases the vdbe ** has already been allocated. So assume sqlite3GetVdbe() is always |
︙ | ︙ |
Changes to src/vdbe.c.
︙ | ︙ | |||
3386 3387 3388 3389 3390 3391 3392 | p->aMem[p->nMem - pOp->p1] = p->aMem[p->nMem - pOp->p2]; p->aMem[p->nMem - pOp->p2] = tmp; pTmp = p->apCsr[pOp->p1]; p->apCsr[pOp->p1] = p->apCsr[pOp->p2]; p->apCsr[pOp->p2] = pTmp; | > | | 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 | p->aMem[p->nMem - pOp->p1] = p->aMem[p->nMem - pOp->p2]; p->aMem[p->nMem - pOp->p2] = tmp; pTmp = p->apCsr[pOp->p1]; p->apCsr[pOp->p1] = p->apCsr[pOp->p2]; p->apCsr[pOp->p2] = pTmp; assert( pTmp->isTable ); rc = sqlite3BtreeClearTable(pTmp->pBt, MASTER_ROOT, 0); break; } #endif /* ifndef SQLITE_OMIT_CTE */ /* Opcode: SorterOpen P1 * * P4 * ** ** This opcode works like OP_OpenEphemeral except that it opens |
︙ | ︙ |
Changes to test/with1.test.
︙ | ︙ | |||
320 321 322 323 324 325 326 | SELECT i FROM tree WHERE 2 IN (SELECT id FROM t) UNION ALL SELECT i FROM tree, t WHERE p = id ) SELECT id FROM t; } {1 {circular reference: t}} | > | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 | SELECT i FROM tree WHERE 2 IN (SELECT id FROM t) UNION ALL SELECT i FROM tree, t WHERE p = id ) SELECT id FROM t; } {1 {circular reference: t}} # Compute the mandelbrot set using a recursive query # do_execsql_test 8.1 { WITH RECURSIVE xaxis(x) AS (VALUES(-2.0) UNION ALL SELECT x+0.05 FROM xaxis WHERE x<1.2), yaxis(y) AS (VALUES(-1.0) UNION ALL SELECT y+0.1 FROM yaxis WHERE y<1.0), m(iter, cx, cy, x, y) AS ( SELECT 0, x, y, 0.0, 0.0 FROM xaxis, yaxis UNION ALL SELECT iter+1, cx, cy, x*x-y*y + cx, 2.0*x*y + cy FROM m WHERE (x*x + y*y) < 4.0 AND iter<28 ), m2(iter, cx, cy) AS ( SELECT max(iter), cx, cy FROM m GROUP BY cx, cy ), a(t) AS ( SELECT group_concat( substr(' .+*#', 1+min(iter/7,4), 1), '') FROM m2 GROUP BY cy ) SELECT group_concat(rtrim(t),x'0a') FROM a; } {{ ....# ..#*.. ..+####+. .......+####.... + ..##+*##########+.++++ .+.##################+. .............+###################+.+ ..++..#.....*#####################+. ...+#######++#######################. ....+*################################. #############################################... ....+*################################. ...+#######++#######################. ..++..#.....*#####################+. .............+###################+.+ .+.##################+. ..##+*##########+.++++ .......+####.... + ..+####+. ..#*.. ....# +.}} finish_test |