U .‘c¯ã@sxddlZddlZddlZdd„ZGdd„dejƒZGdd„dejƒZGdd „d ejƒZd d „Z d d „Z e dkrte ƒdS)éNcCsdS)NZ sqlite_testdb©rrrú>/opt/alt/python38/lib64/python3.8/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)ÚTransactionTestscCsfzt 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 ¡zt tƒ¡Wntk rLYnXdS©N) r Úcloser rrrÚunlinkrrrrrrÚtearDown+s    zTransactionTests.tearDowncCsN|j d¡|j d¡|j d¡|j d¡|j ¡}| t|ƒd¡dS)Núcreate table test(i)úinsert into test(i) values (5)zcreate table test2(j)úselect i from testr©r ÚexecuterÚfetchallÚ assertEqualÚlen©rÚresrrrÚCheckDMLDoesNotAutoCommitBefore7s      z0TransactionTests.CheckDMLDoesNotAutoCommitBeforecCsB|j d¡|j d¡|j d¡|j ¡}| t|ƒd¡dS)NrrrrrrrrrÚCheckInsertStartsTransaction?s     z-TransactionTests.CheckInsertStartsTransactioncCsX|j d¡|j d¡|j ¡|j d¡|j d¡|j ¡d}| |d¡dS)Nrrzupdate test set i=6rré)r rr ÚcommitrZfetchonerrrrrÚCheckUpdateStartsTransactionFs     z-TransactionTests.CheckUpdateStartsTransactioncCsX|j d¡|j d¡|j ¡|j d¡|j d¡|j ¡}| t|ƒd¡dS)Nrrzdelete from testré©r rr r$rrrrrrrrÚCheckDeleteStartsTransactionOs      z-TransactionTests.CheckDeleteStartsTransactioncCsl|j d¡|j d¡|j ¡|j d¡|j d¡|j ¡}| t|ƒd¡| |ddd¡dS)Nrrzreplace into test(i) values (6)rr&rr#r'rrrrÚ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)Nrrrr&ZDEFERRED)r rr Zisolation_levelrrrrrrrrÚCheckToggleAutoCommitbs       z&TransactionTests.CheckToggleAutoCommit)éér,z.test hangs on sqlite versions older than 3.2.2c Cs@|j d¡|j d¡| tj¡|j d¡W5QRXdS)Nrr)r rÚ assertRaisesr ÚOperationalErrorrrrrrÚCheckRaiseTimeoutrs  z"TransactionTests.CheckRaiseTimeoutc CsJ|j d¡|j d¡| tj¡|j d¡W5QRX|j ¡dS)z This tests the improved concurrency with pysqlite 2.3.4. You needed to roll back con2 before you could commit con1. rrN)r rr-r r.rr r$rrrrÚ CheckLockingzs   zTransactionTests.CheckLockingc Cs\t d¡}| ¡}| d¡| d¡| d¡| ¡| tj¡| ¡W5QRXdS)z… Checks if cursors on the connection are set into a "reset" state when a rollback is done on the connection. ú: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__rrr!r"r%r(r)r*ÚunittestZskipIfr Zsqlite_version_infor/r0r5rrrrrs"      ÿ  ÿ rc@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ÚSpecialCommandTestscCst d¡|_|j ¡|_dS©Nr1)r r r3r r4rrrrr˜s zSpecialCommandTests.setUpcCs(|j d¡|j d¡|j d¡dS)Nrrzdrop table test©r4rrrrrÚCheckDropTableœs  z"SpecialCommandTests.CheckDropTablecCs(|j d¡|j d¡|j d¡dS)Nrrzpragma count_changes=1r<rrrrÚ CheckPragma¡s  zSpecialCommandTests.CheckPragmacCs|j ¡|j ¡dSr)r4rr3rrrrr¦s zSpecialCommandTests.tearDownN)r6r7r8rr=r>rrrrrr:—sr:c@s4eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) ÚTransactionalDDLcCst d¡|_dSr;)r r r3rrrrr«szTransactionalDDL.setUpcCs6|j d¡|j ¡|j d¡ ¡}| |g¡dS)Nrúselect * from test)r3rr2rr)rÚresultrrrÚ#CheckDdlDoesNotAutostartTransaction®s  z4TransactionalDDL.CheckDdlDoesNotAutostartTransactionc CsJ|j d¡|j d¡|j ¡| tj¡|j d¡W5QRXdS)Nzbegin immediaterr@©r3rr2r-r r.rrrrÚCheckImmediateTransactionalDDL¶s    z/TransactionalDDL.CheckImmediateTransactionalDDLc CsJ|j d¡|j d¡|j ¡| tj¡|j d¡W5QRXdS)NZbeginrr@rCrrrrÚCheckTransactionalDDL¿s    z&TransactionalDDL.CheckTransactionalDDLcCs|j ¡dSr)r3rrrrrrÈszTransactionalDDL.tearDownN)r6r7r8rrBrDrErrrrrr?ªs   r?cCs4t td¡}t td¡}t td¡}t |||f¡S)NZCheck)r9Z makeSuiterr:r?Z TestSuite)Z default_suiteZspecial_command_suiteZ ddl_suiterrrÚsuiteËs   rFcCst ¡}| tƒ¡dSr)r9ZTextTestRunnerÚrunrF)ZrunnerrrrÚtestÑsrHÚ__main__) rr9Zsqlite3r rZTestCaserr:r?rFrHr6rrrrÚsy!