B Š2ža«Xaã@sxddlZddlZddlZdd„ZGdd„dejƒZGdd„dejƒZGdd „d ejƒZd d „Z d d „Z e dkrte ƒdS)éNcCsdS)NZ sqlite_testdb©rrrú>/opt/alt/python37/lib64/python3.7/sqlite3/test/transactions.pyÚ get_db_pathsrc@sˆeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z e   e jdkd¡dd„ƒZe   e jdkd¡dd„ƒZdd„ZdS)ÚTransactionTestscCsfyt tƒ¡Wntk r$YnXtjtƒdd|_|j ¡|_tjtƒdd|_ |j  ¡|_ dS)Ngš™™™™™¹?)Ztimeout) ÚosÚremoverÚOSErrorÚsqliteÚconnectÚcon1ÚcursorÚcur1Úcon2Úcur2)ÚselfrrrÚsetUps zTransactionTests.setUpcCsR|j ¡|j ¡|j ¡|j ¡yt tƒ¡Wntk rLYnXdS)N) r Úcloser rrrÚunlinkrr)rrrrÚtearDown+s    zTransactionTests.tearDowncCsN|j d¡|j d¡|j d¡|j d¡|j ¡}| t|ƒd¡dS)Nzcreate table test(i)zinsert into test(i) values (5)zcreate table test2(j)zselect i from testr)r ÚexecuterÚfetchallÚ assertEqualÚlen)rÚresrrrÚCheckDMLDoesNotAutoCommitBefore7s      z0TransactionTests.CheckDMLDoesNotAutoCommitBeforecCsB|j d¡|j d¡|j d¡|j ¡}| t|ƒd¡dS)Nzcreate table test(i)zinsert into test(i) values (5)zselect i from testr)r rrrrr)rrrrrÚCheckInsertStartsTransaction?s     z-TransactionTests.CheckInsertStartsTransactioncCsX|j d¡|j d¡|j ¡|j d¡|j d¡|j ¡d}| |d¡dS)Nzcreate table test(i)zinsert into test(i) values (5)zupdate test set i=6zselect i from testré)r rr ÚcommitrZfetchoner)rrrrrÚCheckUpdateStartsTransactionFs     z-TransactionTests.CheckUpdateStartsTransactioncCsX|j d¡|j d¡|j ¡|j d¡|j d¡|j ¡}| t|ƒd¡dS)Nzcreate table test(i)zinsert into test(i) values (5)zdelete from testzselect i from testé)r rr rrrrr)rrrrrÚCheckDeleteStartsTransactionOs      z-TransactionTests.CheckDeleteStartsTransactioncCsl|j d¡|j d¡|j ¡|j d¡|j d¡|j ¡}| t|ƒd¡| |ddd¡dS)Nzcreate table test(i)zinsert into test(i) values (5)zreplace into test(i) values (6)zselect i from testrrr)r rr rrrrr)rrrrrÚCheckReplaceStartsTransactionXs      z.TransactionTests.CheckReplaceStartsTransactioncCs¤|j d¡|j d¡d|j_| |jjd¡|j d¡|j ¡}| t|ƒd¡d|j_| |jjd¡|j d¡|j d¡|j ¡}| t|ƒd¡dS)Nzcreate table test(i)zinsert into test(i) values (5)zselect i from testrZDEFERRED)r rr Zisolation_levelrrrr)rrrrrÚCheckToggleAutoCommitbs       z&TransactionTests.CheckToggleAutoCommit)éér$z.test hangs on sqlite versions older than 3.2.2c Cs@|j d¡|j d¡| tj¡|j d¡WdQRXdS)Nzcreate table test(i)zinsert into test(i) values (5))r rÚ assertRaisesr ÚOperationalErrorr)rrrrÚCheckRaiseTimeoutrs  z"TransactionTests.CheckRaiseTimeoutc CsJ|j d¡|j d¡| tj¡|j d¡WdQRX|j ¡dS)z This tests the improved concurrency with pysqlite 2.3.4. You needed to roll back con2 before you could commit con1. zcreate table test(i)zinsert into test(i) values (5)N)r rr%r r&rr r)rrrrÚ CheckLockingzs   zTransactionTests.CheckLockingc Cs\t d¡}| ¡}| d¡| d¡| d¡| ¡| tj¡| ¡WdQRXdS)z… Checks if cursors on the connection are set into a "reset" state when a rollback is done on the connection. z:memory:zcreate table test(x)zinsert into test(x) values (5)z&select 1 union select 2 union select 3N)r r r rÚrollbackr%ZInterfaceErrorr)rÚconÚcurrrrÚCheckRollbackCursorConsistencyˆs    z/TransactionTests.CheckRollbackCursorConsistencyN)Ú__name__Ú __module__Ú __qualname__rrrrrr r!r"ÚunittestZskipIfr Zsqlite_version_infor'r(r,rrrrrs        rc@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ÚSpecialCommandTestscCst d¡|_|j ¡|_dS)Nz:memory:)r r r*r r+)rrrrr˜s zSpecialCommandTests.setUpcCs(|j d¡|j d¡|j d¡dS)Nzcreate table test(i)zinsert into test(i) values (5)zdrop table test)r+r)rrrrÚCheckDropTableœs  z"SpecialCommandTests.CheckDropTablecCs(|j d¡|j d¡|j d¡dS)Nzcreate table test(i)zinsert into test(i) values (5)zpragma count_changes=1)r+r)rrrrÚ CheckPragma¡s  zSpecialCommandTests.CheckPragmacCs|j ¡|j ¡dS)N)r+rr*)rrrrr¦s zSpecialCommandTests.tearDownN)r-r.r/rr2r3rrrrrr1—sr1c@s4eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) ÚTransactionalDDLcCst d¡|_dS)Nz:memory:)r r r*)rrrrr«szTransactionalDDL.setUpcCs6|j d¡|j ¡|j d¡ ¡}| |g¡dS)Nzcreate table test(i)zselect * from test)r*rr)rr)rÚresultrrrÚ#CheckDdlDoesNotAutostartTransaction®s  z4TransactionalDDL.CheckDdlDoesNotAutostartTransactionc CsJ|j d¡|j d¡|j ¡| tj¡|j d¡WdQRXdS)Nzbegin immediatezcreate table test(i)zselect * from test)r*rr)r%r r&)rrrrÚCheckImmediateTransactionalDDL¶s    z/TransactionalDDL.CheckImmediateTransactionalDDLc CsJ|j d¡|j d¡|j ¡| tj¡|j d¡WdQRXdS)NZbeginzcreate table test(i)zselect * from test)r*rr)r%r r&)rrrrÚCheckTransactionalDDL¿s    z&TransactionalDDL.CheckTransactionalDDLcCs|j ¡dS)N)r*r)rrrrrÈszTransactionalDDL.tearDownN)r-r.r/rr6r7r8rrrrrr4ªs   r4cCs4t td¡}t td¡}t td¡}t |||f¡S)NZCheck)r0Z makeSuiterr1r4Z TestSuite)Z default_suiteZspecial_command_suiteZ ddl_suiterrrÚsuiteËs   r9cCst ¡}| tƒ¡dS)N)r0ZTextTestRunnerÚrunr9)ZrunnerrrrÚtestÑsr;Ú__main__) rr0Zsqlite3r rZTestCaserr1r4r9r;r-rrrrÚsy!