From: shaneh Date: Sat, 12 Mar 2011 05:55:38 +0000 (+0000) Subject: Backport the SQLITE_OMIT_UNIQUE_ENFORCEMENT change from checkin b86999436e on the... X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=90828dde625e709e165aaa71fa1e817e94a4ae01;p=thirdparty%2Fsqlite.git Backport the SQLITE_OMIT_UNIQUE_ENFORCEMENT change from checkin b86999436e on the trunk. FossilOrigin-Name: 668b91dbff036c6b76a5611cc3ebe455d277ed59 --- diff --git a/manifest b/manifest index da381c9b32..1c8cf637d8 100644 --- a/manifest +++ b/manifest @@ -1,8 +1,5 @@ ------BEGIN PGP SIGNED MESSAGE----- -Hash: SHA1 - -C Backport\sthe\sOP_Next\sand\sOP_Prev\sfor\sUNIQUE\sindices\spatch\sfrom\ncheckin\s[f000c9b2b7]\son\sthe\strunk. -D 2011-03-09T22:09:32.107 +C Backport\sthe\sSQLITE_OMIT_UNIQUE_ENFORCEMENT\schange\sfrom\scheckin\sb86999436e\son\sthe\strunk. +D 2011-03-12T05:55:38.900 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 543f91f24cd7fee774ecc0a61c19704c0c3e78fd F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -122,7 +119,7 @@ F src/btreeInt.h 5b034ff54800046cc5870605d683ac1f9134bd99 F src/build.c a3c83d34a7f1e56308175076f65d510ae52dd6dc F src/callback.c da3c38d0ef5d7f04fae371e519bda61aa9cb1704 F src/complete.c dc1d136c0feee03c2f7550bafc0d29075e36deac -F src/ctime.c 4f3aadad62c6c9f0d4e5a96718516ac4e3c598df +F src/ctime.c 2e39d3374e785a63117e077bcba9d4a6656df363 F src/date.c 5dd8448a0bfea8d31fb14cff487d0c06ff8c8b20 F src/delete.c 7ed8a8c8b5f748ece92df173d7e0f7810c899ebd F src/expr.c 9ee507c3dc6eaa5657cbd1dad026cdeda89c559f @@ -133,7 +130,7 @@ F src/global.c 02335177cf6946fe5525c6f0755cf181140debf3 F src/hash.c 458488dcc159c301b8e7686280ab209f1fb915af F src/hash.h 2894c932d84d9f892d4b4023a75e501f83050970 F src/hwtime.h d32741c8f4df852c7d959236615444e2b1063b08 -F src/insert.c a4995747c062256582a90b4f87f716e11b067050 +F src/insert.c 9b6fa065fc528d305184d7fbd5506c8dd58592e0 F src/journal.c 552839e54d1bf76fb8f7abe51868b66acacf6a0e F src/legacy.c a199d7683d60cef73089e892409113e69c23a99f F src/lempar.c 7f026423f4d71d989e719a743f98a1cbd4e6d99e @@ -193,7 +190,7 @@ F src/test_async.c 0612a752896fad42d55c3999a5122af10dcf22ad F src/test_autoext.c 30e7bd98ab6d70a62bb9ba572e4c7df347fe645e F src/test_backup.c c129c91127e9b46e335715ae2e75756e25ba27de F src/test_btree.c 47cd771250f09cdc6e12dda5bc71bc0b3abc96e2 -F src/test_config.c 5a11c51af2156e2d07186930b36f2b8239a4393f +F src/test_config.c fcafb30c453b5e2bfea7acd3c596bd33417f1361 F src/test_demovfs.c 0aed671636735116fc872c5b03706fd5612488b5 F src/test_devsym.c e7498904e72ba7491d142d5c83b476c4e76993bc F src/test_func.c 13b582345fb1185a93e46c53310fae8547dcce20 @@ -830,7 +827,7 @@ F tool/mkspeedsql.tcl a1a334d288f7adfe6e996f2e712becf076745c97 F tool/mksqlite3c.tcl aff0d53f0e84cf919922c0d02e767bdf5eeafb90 F tool/mksqlite3h.tcl eb100dce83f24b501b325b340f8b5eb8e5106b3b F tool/mksqlite3internalh.tcl 7b43894e21bcb1bb39e11547ce7e38a063357e87 -F tool/omittest.tcl 27d6f6e3b1e95aeb26a1c140e6eb57771c6d794a +F tool/omittest.tcl ec597b7db5177df7108705961171200d7ffcd786 F tool/opcodeDoc.awk b3a2a3d5d3075b8bd90b7afe24283efdd586659c F tool/restore_jrnl.tcl 6957a34f8f1f0f8285e07536225ec3b292a9024a F tool/shell1.test 930444cadb71ce9ce78bc6cd14ec21e6b69776ea @@ -850,14 +847,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f -P 440d995661c961257ca15833ab94c7ec7a5892c8 -R 0512033c30f28c260fba564d8ba18c22 -U drh -Z b94a8a7377160219347c5558d6729f6c ------BEGIN PGP SIGNATURE----- -Version: GnuPG v1.4.6 (GNU/Linux) - -iD8DBQFNd/qnoxKgR168RlERAsE8AKCADPQN2xr488gJH6K59ZWN2x7QZwCfXUH1 -oOrribX3yWOwHCagHmUiuvA= -=ELlT ------END PGP SIGNATURE----- +P 2d55234ea3b8a8d6f18683d51f05945394e97275 +R 1db94dc3291fba1026c28b4049abf650 +U shaneh +Z 84dd2ae494c40f1290217661561c5409 diff --git a/manifest.uuid b/manifest.uuid index 4257b5c748..ec6b70c56b 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -2d55234ea3b8a8d6f18683d51f05945394e97275 \ No newline at end of file +668b91dbff036c6b76a5611cc3ebe455d277ed59 \ No newline at end of file diff --git a/src/ctime.c b/src/ctime.c index f7248f4fa0..55b2780e7a 100644 --- a/src/ctime.c +++ b/src/ctime.c @@ -299,6 +299,9 @@ static const char * const azCompileOpt[] = { #ifdef SQLITE_OMIT_TRUNCATE_OPTIMIZATION "OMIT_TRUNCATE_OPTIMIZATION", #endif +#ifdef SQLITE_OMIT_UNIQUE_ENFORCEMENT + "OMIT_UNIQUE_ENFORCEMENT", +#endif #ifdef SQLITE_OMIT_UTF16 "OMIT_UTF16", #endif diff --git a/src/insert.c b/src/insert.c index adf6ef2ed4..c29419b021 100644 --- a/src/insert.c +++ b/src/insert.c @@ -1312,7 +1312,9 @@ void sqlite3GenerateConstraintChecks( */ for(iCur=0, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, iCur++){ int regIdx; +#ifndef SQLITE_OMIT_UNIQUE_ENFORCEMENT int regR; +#endif if( aRegIdx[iCur]==0 ) continue; /* Skip unused indices */ @@ -1331,6 +1333,11 @@ void sqlite3GenerateConstraintChecks( sqlite3VdbeChangeP4(v, -1, sqlite3IndexAffinityStr(v, pIdx), 0); sqlite3ExprCacheAffinityChange(pParse, regIdx, pIdx->nColumn+1); +#ifdef SQLITE_OMIT_UNIQUE_ENFORCEMENT + sqlite3ReleaseTempRange(pParse, regIdx, pIdx->nColumn+1); + continue; /* Treat pIdx as if it is not a UNIQUE index */ +#else + /* Find out what action to take in case there is an indexing conflict */ onError = pIdx->onError; if( onError==OE_None ){ @@ -1404,6 +1411,7 @@ void sqlite3GenerateConstraintChecks( } sqlite3VdbeJumpHere(v, j3); sqlite3ReleaseTempReg(pParse, regR); +#endif } if( pbMayReplace ){ diff --git a/src/test_config.c b/src/test_config.c index 7ada13f4f6..ccce568e5e 100644 --- a/src/test_config.c +++ b/src/test_config.c @@ -469,6 +469,12 @@ Tcl_SetVar2(interp, "sqlite_options", "long_double", Tcl_SetVar2(interp, "sqlite_options", "truncate_opt", "1", TCL_GLOBAL_ONLY); #endif +#ifdef SQLITE_OMIT_UNIQUE_ENFORCEMENT + Tcl_SetVar2(interp, "sqlite_options", "unique_enforcement", "0", TCL_GLOBAL_ONLY); +#else + Tcl_SetVar2(interp, "sqlite_options", "unique_enforcement", "1", TCL_GLOBAL_ONLY); +#endif + #ifdef SQLITE_OMIT_UTF16 Tcl_SetVar2(interp, "sqlite_options", "utf16", "0", TCL_GLOBAL_ONLY); #else diff --git a/tool/omittest.tcl b/tool/omittest.tcl index ec1508c239..47af2d324e 100644 --- a/tool/omittest.tcl +++ b/tool/omittest.tcl @@ -155,7 +155,7 @@ proc main {argv} { SQLITE_OMIT_CONFLICT_CLAUSE \ SQLITE_OMIT_DATETIME_FUNCS \ SQLITE_OMIT_DECLTYPE \ - off_SQLITE_OMIT_DISKIO \ + off_SQLITE_OMIT_DISKIO \ SQLITE_OMIT_EXPLAIN \ SQLITE_OMIT_FLAG_PRAGMAS \ SQLITE_OMIT_FLOATING_POINT \ @@ -182,11 +182,15 @@ proc main {argv} { SQLITE_OMIT_TEMPDB \ SQLITE_OMIT_TRACE \ SQLITE_OMIT_TRIGGER \ - SQLITE_OMIT_UTF16 \ - SQLITE_OMIT_VACUUM \ - SQLITE_OMIT_VIEW \ - SQLITE_OMIT_VIRTUALTABLE \ - SQLITE_OMIT_XFER_OPT \ + SQLITE_OMIT_TRUNCATE_OPTIMIZATION \ + SQLITE_OMIT_UNIQUE_ENFORCEMENT \ + SQLITE_OMIT_UTF16 \ + SQLITE_OMIT_VACUUM \ + SQLITE_OMIT_VIEW \ + SQLITE_OMIT_VIRTUALTABLE \ + SQLITE_OMIT_WAL \ + SQLITE_OMIT_WSD \ + SQLITE_OMIT_XFER_OPT \ ] # Process any command line options.