Fix an incorrect assert() in sqlite3_value_config(). Updates to the

sqlite3_value_config() documentation.

FossilOrigin-Name: 22cbc01a2600c6100112315d9afb5f2d8f80b3df
This commit is contained in:
drh 2011-05-05 23:07:43 +00:00
parent 87f67bf143
commit 367e84d089
4 changed files with 36 additions and 37 deletions

View File

@ -1,5 +1,5 @@
C Fix\ssqlite3_vtab_on_conflict()\sto\sreturn\sthe\scorrect\svalues\sfor\nABORT,\sFAIL,\sand\sIGNORE. C Fix\san\sincorrect\sassert()\sin\ssqlite3_value_config().\s\sUpdates\sto\sthe\nsqlite3_value_config()\sdocumentation.
D 2011-05-05T17:41:58.205 D 2011-05-05T23:07:43.483
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in 7a4d9524721d40ef9ee26f93f9bd6a51dba106f2 F Makefile.in 7a4d9524721d40ef9ee26f93f9bd6a51dba106f2
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@ -179,7 +179,7 @@ F src/resolve.c 1c0f32b64f8e3f555fe1f732f9d6f501a7f05706
F src/rowset.c 69afa95a97c524ba6faf3805e717b5b7ae85a697 F src/rowset.c 69afa95a97c524ba6faf3805e717b5b7ae85a697
F src/select.c d9d440809025a58547e39f4f268c2a296bfb56ff F src/select.c d9d440809025a58547e39f4f268c2a296bfb56ff
F src/shell.c 72e7e176bf46d5c6518d15ac4ad6847c4bb5df79 F src/shell.c 72e7e176bf46d5c6518d15ac4ad6847c4bb5df79
F src/sqlite.h.in 9bf19a5dcf6317b0f091c255edaed0b1fc01dcd0 F src/sqlite.h.in 7f5ec849936098c5932b43fea2b1c5a4e1ec87b7
F src/sqlite3ext.h c90bd5507099f62043832d73f6425d8d5c5da754 F src/sqlite3ext.h c90bd5507099f62043832d73f6425d8d5c5da754
F src/sqliteInt.h e70a03bb66d209e279b3edeb57d4fdc42a1d9fda F src/sqliteInt.h e70a03bb66d209e279b3edeb57d4fdc42a1d9fda
F src/sqliteLimit.h 164b0e6749d31e0daa1a4589a169d31c0dec7b3d F src/sqliteLimit.h 164b0e6749d31e0daa1a4589a169d31c0dec7b3d
@ -244,7 +244,7 @@ F src/vdbeaux.c 25aa5ba7d46b4fe7c8f33dc132d474242d5f9726
F src/vdbeblob.c c3ccb7c8732858c680f442932e66ad06bb036562 F src/vdbeblob.c c3ccb7c8732858c680f442932e66ad06bb036562
F src/vdbemem.c 0498796b6ffbe45e32960d6a1f5adfb6e419883b F src/vdbemem.c 0498796b6ffbe45e32960d6a1f5adfb6e419883b
F src/vdbetrace.c 5d0dc3d5fd54878cc8d6d28eb41deb8d5885b114 F src/vdbetrace.c 5d0dc3d5fd54878cc8d6d28eb41deb8d5885b114
F src/vtab.c 5e17098829cb1533ae85aa46de98aa175f65eb83 F src/vtab.c bfd252c7d699ccb1287bea3e5ca49eac2222beb0
F src/wal.c 7334009b396285b658a95a3b6bc6d2b016a1f794 F src/wal.c 7334009b396285b658a95a3b6bc6d2b016a1f794
F src/wal.h 7a5fbb00114b7f2cd40c7e1003d4c41ce9d26840 F src/wal.h 7a5fbb00114b7f2cd40c7e1003d4c41ce9d26840
F src/walker.c 3112bb3afe1d85dc52317cb1d752055e9a781f8f F src/walker.c 3112bb3afe1d85dc52317cb1d752055e9a781f8f
@ -933,7 +933,7 @@ F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
F tool/split-sqlite3c.tcl d9be87f1c340285a3e081eb19b4a247981ed290c F tool/split-sqlite3c.tcl d9be87f1c340285a3e081eb19b4a247981ed290c
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
P 8ba456ae0b3d0c0b6f72f98bd0bc28f72dfa4ff5 P f0617d619dc6654f6d27543999c0aad724a0d967
R e350890a304deaff131b57483c8e478b R 31cf9f23f5ca6aefc15da38ca5caec3a
U drh U drh
Z 6b45c0a2e4c7eb15d8acfe532af4cf91 Z 536ce71311e8f997eb3d277fca3551df

View File

@ -1 +1 @@
f0617d619dc6654f6d27543999c0aad724a0d967 22cbc01a2600c6100112315d9afb5f2d8f80b3df

View File

@ -6426,28 +6426,28 @@ int sqlite3_vtab_config(sqlite3*, int op, ...);
** **
** <dl> ** <dl>
** <dt>SQLITE_VTAB_CONSTRAINT_SUPPORT ** <dt>SQLITE_VTAB_CONSTRAINT_SUPPORT
** <dd>If the second argument to [sqlite3_vtab_config()] is ** <dd>Calls of the form
** SQLITE_VTAB_CONSTRAINT_SUPPORT, then SQLite expects this function to ** [sqlite3_vtab_config](db,SQLITE_VTAB_CONSTRAINT_SUPPORT,X) are supported,
** have been called with three arguments, the third of which being of ** where X is an integer. If X is zero, then the [virtual table] whose
** type 'int'. If the third argument is zero, then the virtual table ** [xCreate] or [xConnect] method invoked [sqlite3_vtab_config()] does not
** is indicating that it does not support constraints. In this case if ** support constraints. In this configuration (which is the default) if
** a call to the [xUpdate] method returns [SQLITE_CONSTRAINT], the entire ** a call to the [xUpdate] method returns [SQLITE_CONSTRAINT], then the entire
** statement is rolled back as if [ON CONFLICT | OR ABORT] had been ** statement is rolled back as if [ON CONFLICT | OR ABORT] had been
** specified as part of the users SQL statement, regardless of the actual ** specified as part of the users SQL statement, regardless of the actual
** ON CONFLICT mode specified. ** ON CONFLICT mode specified.
** **
** If the third argument passed is non-zero, then the virtual table ** If X is non-zero, then the virtual table implementation guarantees
** implementation must guarantee that if [xUpdate] returns ** that if [xUpdate] returns [SQLITE_CONSTRAINT], it will do so before
** [SQLITE_CONSTRAINT], it does so before any modifications to internal ** any modifications to internal or persistent data structures have been made.
** or persistent data structures have been made. If the [ON CONFLICT] ** If the [ON CONFLICT] mode is ABORT, FAIL, IGNORE or ROLLBACK, SQLite
** mode is ABORT, FAIL, IGNORE or ROLLBACK, SQLite is able to roll back ** is able to roll back a statement or database transaction, and abandon
** a statement or database transaction, and abandon or continue processing ** or continue processing the current SQL statement as appropriate.
** the current SQL statement as appropriate. If the ON CONFLICT mode is ** If the ON CONFLICT mode is REPLACE and the [xUpdate] method returns
** REPLACE and the [xUpdate] method returns [SQLITE_CONSTRAINT], SQLite ** [SQLITE_CONSTRAINT], SQLite handles this as if the ON CONFLICT mode
** handles this as if the ON CONFLICT mode had been ABORT. ** had been ABORT.
** **
** Virtual table implementations that are required to handle OR REPLACE ** Virtual table implementations that are required to handle OR REPLACE
** must do so within the xUpdate method. If a call to the ** must do so within the [xUpdate] method. If a call to the
** [sqlite3_vtab_on_conflict()] function indicates that the current ON ** [sqlite3_vtab_on_conflict()] function indicates that the current ON
** CONFLICT policy is REPLACE, the virtual table implementation should ** CONFLICT policy is REPLACE, the virtual table implementation should
** silently replace the appropriate rows within the xUpdate callback and ** silently replace the appropriate rows within the xUpdate callback and
@ -6455,7 +6455,6 @@ int sqlite3_vtab_config(sqlite3*, int op, ...);
** SQLITE_CONSTRAINT, in which case SQLite falls back to OR ABORT ** SQLITE_CONSTRAINT, in which case SQLite falls back to OR ABORT
** constraint handling. ** constraint handling.
** </dl> ** </dl>
**
*/ */
#define SQLITE_VTAB_CONSTRAINT_SUPPORT 1 #define SQLITE_VTAB_CONSTRAINT_SUPPORT 1

View File

@ -1027,7 +1027,7 @@ int sqlite3_vtab_config(sqlite3 *db, int op, ...){
if( !p ){ if( !p ){
rc = SQLITE_MISUSE_BKPT; rc = SQLITE_MISUSE_BKPT;
}else{ }else{
assert( (p->pTab->tabFlags & TF_Virtual)!=0 ); assert( p->pTab==0 || (p->pTab->tabFlags & TF_Virtual)!=0 );
p->pVTable->bConstraint = (u8)va_arg(ap, int); p->pVTable->bConstraint = (u8)va_arg(ap, int);
} }
break; break;