Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Give a meaningful error on an attempt to use UPSERT on a virtual table, rather than simply not working. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
fa98748f956cff95fcfda3a513cea4df |
User & Date: | drh 2019-01-04 23:39:37.788 |
Context
2019-01-05
| ||
07:17 | Fix two more problems with corrupt database handling in fts5. (check-in: 444c7c99be user: dan tags: trunk) | |
2019-01-04
| ||
23:39 | Give a meaningful error on an attempt to use UPSERT on a virtual table, rather than simply not working. (check-in: fa98748f95 user: drh tags: trunk) | |
14:29 | If the ".open" command fails in the CLI, reopen to :memory: so that at least some database is available for subsequent commands. (check-in: d7f55c62c3 user: drh tags: trunk) | |
Changes
Changes to src/insert.c.
︙ | ︙ | |||
822 823 824 825 826 827 828 829 830 831 832 833 834 835 | assert( pIdx ); aRegIdx[i] = ++pParse->nMem; pParse->nMem += pIdx->nColumn; } } #ifndef SQLITE_OMIT_UPSERT if( pUpsert ){ pTabList->a[0].iCursor = iDataCur; pUpsert->pUpsertSrc = pTabList; pUpsert->regData = regData; pUpsert->iDataCur = iDataCur; pUpsert->iIdxCur = iIdxCur; if( pUpsert->pUpsertTarget ){ sqlite3UpsertAnalyzeTarget(pParse, pTabList, pUpsert); | > > > > > | 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 | assert( pIdx ); aRegIdx[i] = ++pParse->nMem; pParse->nMem += pIdx->nColumn; } } #ifndef SQLITE_OMIT_UPSERT if( pUpsert ){ if( IsVirtual(pTab) ){ sqlite3ErrorMsg(pParse, "UPSERT not implemented for virtual table \"%s\"", pTab->zName); goto insert_cleanup; } pTabList->a[0].iCursor = iDataCur; pUpsert->pUpsertSrc = pTabList; pUpsert->regData = regData; pUpsert->iDataCur = iDataCur; pUpsert->iIdxCur = iIdxCur; if( pUpsert->pUpsertTarget ){ sqlite3UpsertAnalyzeTarget(pParse, pTabList, pUpsert); |
︙ | ︙ |
Changes to test/misc7.test.
︙ | ︙ | |||
223 224 225 226 227 228 229 230 231 232 233 234 235 236 | register_echo_module [sqlite3_connection_pointer db] execsql { CREATE VIRTUAL TABLE t1 USING echo(abc); SELECT a FROM t1 WHERE a = 1 ORDER BY b; } } {1} set sqlite_where_trace 0 # Specify an ORDER BY clause that cannot be indexed. do_test misc7-11 { execsql { SELECT t1.a, t2.a FROM t1, t1 AS t2 ORDER BY 2 LIMIT 1; } } {1 1} | > > > | 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 | register_echo_module [sqlite3_connection_pointer db] execsql { CREATE VIRTUAL TABLE t1 USING echo(abc); SELECT a FROM t1 WHERE a = 1 ORDER BY b; } } {1} set sqlite_where_trace 0 do_catchsql_test misc7-10.1 { INSERT INTO t1(a,b,c) VALUES(12345,2,3) ON CONFLICT(a) DO NOTHING; } {1 {UPSERT not implemented for virtual table "t1"}} # Specify an ORDER BY clause that cannot be indexed. do_test misc7-11 { execsql { SELECT t1.a, t2.a FROM t1, t1 AS t2 ORDER BY 2 LIMIT 1; } } {1 1} |
︙ | ︙ |