HEX
Server: Microsoft-IIS/10.0
System: Windows NT ITPWINWEBSVR22 10.0 build 20348 (Windows Server 2022) AMD64
User: www.conferencesearch.co.uk (0)
PHP: 8.3.30
Disabled: NONE
Upload Files
File: D:/Python311/Lib/test/test_sqlite3/__pycache__/test_regression.cpython-311.opt-1.pyc
�

��Vc�M����ddlZddlZddlZddlZddlZddlmZddlm	Z	ddl
mZmZGd�dej
��ZGd�dej
��Zed	krej��dSdS)
�N)�support)�patch)�memory_database�cx_limitc���eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d �Z"d!�Z#d"�Z$d#�Z%d$�Z&d%�Z'd&S)'�RegressionTestsc�8�tjd��|_dS)N�:memory:)�sqlite�connect�con��selfs �5D:\Python311\Lib\test\test_sqlite3\test_regression.py�setUpzRegressionTests.setUp#s���>�*�-�-�����c�8�|j���dS�N)r
�closers r�tearDownzRegressionTests.tearDown&s����������rc�b�|j���}|�d��dS)Nzpragma user_version)r
�cursor�execute�r�curs  r�test_pragma_user_versionz(RegressionTests.test_pragma_user_version)s,���h�o�o�������)�*�*�*�*�*rc�N�tjdtj���}	|j���}|�d��|���|���dS#|���|���wxYw)Nr
��detect_typeszpragma schema_version)rr�PARSE_COLNAMESr
rrr�rr
rs   r�test_pragma_schema_versionz*RegressionTests.test_pragma_schema_version.s����n�Z�f�6K�L�L�L��	��(�/�/�#�#�C��K�K�/�0�0�0��I�I�K�K�K��I�I�K�K�K�K�K��
�I�I�K�K�K��I�I�K�K�K�K���s�.A:�:*B$c���tjdd�����fd�td��D��}|d�d��td��D]5}|d�dd	�td��D�����6td��D]#}||�d
|zdz���$����dS)Nr
�)�cached_statementsc�8��g|]}������S�)r)�.0�xr
s  �r�
<listcomp>z8RegressionTests.test_statement_reset.<locals>.<listcomp>=s!���2�2�2�A�3�:�:�<�<�2�2�2rrzcreate table test(x)�
�insert into test(x) values (?)c��g|]}|f��Sr'r'�r(r)s  rr*z8RegressionTests.test_statement_reset.<locals>.<listcomp>@s��E^�E^�E^�q�q�d�E^�E^�E^r� zselect x from test)rr�ranger�executemany�rollback)r�cursors�ir
s   @r�test_statement_resetz$RegressionTests.test_statement_reset8s�����n�Z�1�=�=�=��2�2�2�2��q���2�2�2����
���1�2�2�2��r���	`�	`�A��A�J�"�"�#C�E^�E^�TY�Z\�T]�T]�E^�E^�E^�_�_�_�_��q���	?�	?�A��A�J���s�Q�w�)=�=�>�>�>�>��������rc�(�|j���}|�d��|�|jddd��|�d��|�|jddd��dS)Nz select 1 as "foo bar [datetime]"rzfoo bar [datetime]zselect 1 as "foo baz"zfoo baz)r
rr�assertEqual�descriptionrs  r�test_column_name_with_spacesz,RegressionTests.test_column_name_with_spacesGs����h�o�o�������6�7�7�7�������+�A�.�0D�E�E�E����+�,�,�,�������+�A�.�	�:�:�:�:�:rc��tjd��}g}td��D]P}|���}|�|��|�dt
|��z���Q|���dS)Nr
�izselect 1 x union select )rrr0r�appendr�strr)rr
r3r4rs     r�'test_statement_finalization_on_close_dbz7RegressionTests.test_statement_finalization_on_close_dbOs~��
�n�Z�(�(�����s���	=�	=�A��*�*�,�,�C��N�N�3�����K�K�2�S��V�V�;�<�<�<�<��	�	�����rc��tjd��}|�d��|�d��	|�d��n#tj$rYnwxYw|�d��	|���dS#tj$r|�d��YdSwxYw)Nr
z3create table foo(x, unique(x) on conflict rollback)zinsert into foo(x) values (1)zinsert into foo(x) values (2)z1pysqlite knew nothing about the implicit ROLLBACK)rrr�
DatabaseError�commit�OperationalError�fail�rr
s  r�test_on_conflict_rollbackz)RegressionTests.test_on_conflict_rollback]s����n�Z�(�(�����I�J�J�J����3�4�4�4�	��K�K�7�8�8�8�8���#�	�	�	��D�	�������3�4�4�4�	K��J�J�L�L�L�L�L���&�	K�	K�	K��I�I�I�J�J�J�J�J�J�	K���s$�A�A(�'A(�B�$B?�>B?c��|j�d��|j�d��|j�d��dS)zm
        pysqlite would crash with older SQLite versions unless
        a workaround is implemented.
        �create table foo(bar)�drop table fooN�r
rrs r�2test_workaround_for_buggy_sqlite_transfer_bindingszBRegressionTests.test_workaround_for_buggy_sqlite_transfer_bindingsksO��
	
����0�1�1�1�����)�*�*�*�����0�1�1�1�1�1rc�:�|j�d��dS)z
        pysqlite used to segfault with SQLite versions 3.5.x. These return NULL
        for "no-operation" statements
        �NrIrs r�test_empty_statementz$RegressionTests.test_empty_statementts ��
	
���������rc���d}tjdtj���}|���}|�d��|�dt
j���f��|�|��|�d��|�d��|�d��|�|��d	S)
z�
        pysqlite until 2.4.1 did not rebuild the row_cast_map when recompiling
        a statement. This test exhibits the problem.
        zselect * from foor
rzcreate table foo(bar timestamp)zinsert into foo(bar) values (?)rHzcreate table foo(bar integer)�insert into foo(bar) values (5)N)rr�PARSE_DECLTYPESrr�datetime�now)r�SELECTr
rs    r�test_type_map_usagez#RegressionTests.test_type_map_usage{s���
%���n�Z�V�5K�L�L�L���j�j�l�l�����5�6�6�6����5��8I�8M�8M�8O�8O�7Q�R�R�R����F�������$�%�%�%����3�4�4�4����5�6�6�6����F�����rc�:��G�fd�d��}|��dg�tjdtj���}|�d��|�t
��5|�d���ddd��dS#1swxYwYdS)Nc���eZdZ�fd�ZdS)�2RegressionTests.test_bind_mutating_list.<locals>.Xc�0������dS)Nz...)�clear)r�protocol�
parameterss  �r�__conform__z>RegressionTests.test_bind_mutating_list.<locals>.X.__conform__�s���� � �"�"�"��urN)�__name__�
__module__�__qualname__r\)r[s�r�XrW�s.�������
�
�
�
�
�
�
rr`rr
rz$create table foo(bar X, baz integer)z'insert into foo(bar, baz) values (?, ?))rrrPr�assertRaises�
IndexError)rr`r
r[s   @r�test_bind_mutating_listz'RegressionTests.test_bind_mutating_list�s���	�	�	�	�	�	�	�	�	�	��a�c�c�1�X�
��n�Z�V�5K�L�L�L�����:�;�;�;�
�
�
�z�
*�
*�	O�	O��K�K�A�:�N�N�N�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O����	O�	O�	O�	O�	O�	Os�,B�B�Bc	�Z�|�tj��5}|j�dtt
dg����f�����ddd��n#1swxYwYd}|�|t|j
����dS)Nz"select 'xxx' || ? || 'yyy' colname�z9Could not decode to UTF-8 column 'colname' with text 'xxx)rarrBr
r�bytes�	bytearray�fetchone�assertInr=�	exception)r�cm�msgs   r�test_error_msg_decode_errorz+RegressionTests.test_error_msg_decode_error�s����
�
�v�6�
7�
7�	D�2��H���A�#�I�s�e�$4�$4�5�5�7�
9�
9�9A�����	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D�J���
�
�c�3�r�|�,�,�-�-�-�-�-s�A
A6�6A:�=A:c�T�|�ttjid��dS)z!
        See issue 3312.
        N)ra�	TypeErrorr�register_adapterrs r�test_register_adapterz%RegressionTests.test_register_adapter�s'��	
���)�V�%<�b�$�G�G�G�G�Grc����G�fd�dt��}tjd���d�_dD]y}|�|���5|�_|����_|����_||���_ddd��n#1swxYwY�zd�_d�_dtfdtfd	tfd
tfdtfg}|D]�\}}|�|���5|�	|��5|�_ddd��n#1swxYwY|�
�jd��ddd��n#1swxYwY��dS)Nc� ��eZdZd�Z�fd�ZdS)�;RegressionTests.test_set_isolation_level.<locals>.CustomStrc��dSrr'rs r�upperzARegressionTests.test_set_isolation_level.<locals>.CustomStr.upper�s���trc���d�_dS)NrL��isolation_levelrDs �r�__del__zCRegressionTests.test_set_isolation_level.<locals>.CustomStr.__del__�s���&(��#�#�#rN)r]r^r_rvrz)r
s�r�	CustomStrrt�s=�������
�
�
�
)�
)�
)�
)�
)�
)�
)rr{r
)rL�DEFERRED�	IMMEDIATE�	EXCLUSIVE)�levelr|�r�abczIMMEDIATEEXCLUSIVE�é)r=rrry�subTest�lower�
capitalizero�
ValueErrorrar7)rr{r�pairs�value�excr
s      @r�test_set_isolation_levelz(RegressionTests.test_set_isolation_level�sl���	)�	)�	)�	)�	)�	)�	)��	)�	)�	)��n�Z�(�(��"���=�	7�	7�E����E��*�*�
7�
7�&+��#�&+�k�k�m�m��#�&+�&6�&6�&8�&8��#�&/�i��&6�&6��#�	
7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7����
7�
7�
7�
7��#���(���
�	�N�S�)�,�u�j�.A�
#�Z�0�6�:�2F�
�� �	B�	B�J�E�3����E��*�*�
B�
B��&�&�s�+�+�0�0�*/�C�'�0�0�0�0�0�0�0�0�0�0�0����0�0�0�0�� � ��!4�j�A�A�A�
B�
B�
B�
B�
B�
B�
B�
B�
B�
B�
B����
B�
B�
B�
B��	B�	BsI�A
B"�"B&	�)B&	�E�D-�!E�-D1�1E�4D1�5E�E#	�&E#	c���Gd�dtj��}tjd��}||��}|�tj��5|�d�����ddd��n#1swxYwY|�tjd��5|���ddd��dS#1swxYwYdS)zd
        Verifies that cursor methods check whether base class __init__ was
        called.
        c��eZdZd�ZdS)�BRegressionTests.test_cursor_constructor_call_check.<locals>.Cursorc��dSrr'rDs  r�__init__zKRegressionTests.test_cursor_constructor_call_check.<locals>.Cursor.__init__�����rN�r]r^r_r�r'rr�Cursorr���#������
�
�
�
�
rr�r
z
select 4+5Nz$^Base Cursor\.__init__ not called\.$)	rr�rra�ProgrammingErrorr�fetchall�assertRaisesRegexr)rr�r
rs    r�"test_cursor_constructor_call_checkz2RegressionTests.test_cursor_constructor_call_check�sg��
	�	�	�	�	�V�]�	�	�	��n�Z�(�(���f�S�k�k��
�
�
�v�6�
7�
7�	1�	1��K�K��%�%�.�.�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�
�
#�
#�F�$;�$K�M�M�	�	��I�I�K�K�K�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s$�(B�B�B�6C�C�Cc�v�Gd�dt��}|j�d|d��f��dS)za
        The Python 3.0 port of the module didn't cope with values of subclasses of str.
        c��eZdZdS)�0RegressionTests.test_str_subclass.<locals>.MyStrN)r]r^r_r'rr�MyStrr��s�������rr�zselect ?r�N)r=r
r)rr�s  r�test_str_subclassz!RegressionTests.test_str_subclass�sF��	�����C���������e�e�E�l�l�_�5�5�5�5�5rc���Gd�dtj��}|d��}|�tj��5|���}ddd��dS#1swxYwYdS)zh
        Verifies that connection methods check whether base class __init__ was
        called.
        c��eZdZd�ZdS)�JRegressionTests.test_connection_constructor_call_check.<locals>.Connectionc��dSrr')r�names  rr�zSRegressionTests.test_connection_constructor_call_check.<locals>.Connection.__init__�r�rNr�r'rr�
Connectionr��r�rr�r
N)rr�rar�r)rr�r
rs    r�&test_connection_constructor_call_checkz6RegressionTests.test_connection_constructor_call_check�s���
	�	�	�	�	��*�	�	�	��j��$�$��
�
�
�v�6�
7�
7�	�	��*�*�,�,�C�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�A%�%A)�,A)c�2�tjdd���}dS)z�
        Verifies that creating a connection in autocommit mode works.
        2.5.3 introduced a regression so that these could no longer
        be created.
        r
Nrx)rrrDs  r�test_auto_commitz RegressionTests.test_auto_commit�s���n�Z��>�>�>���rc���|j���}|�d��|�d��|�d��|���}dS)z�
        Verifies that running a PRAGMA statement that does an autocommit does
        work. This did not work in 2.5.3/2.5.4.
        rGrOzpragma page_sizeN)r
rrrh)rr�rows   r�test_pragma_autocommitz&RegressionTests.test_pragma_autocommit�s_��
�h�o�o�������+�,�,�,����5�6�6�6����&�'�'�'��l�l�n�n���rc�H�|�t|jd��dS)z}
        Call a connection with a non-string SQL request: check error handling
        of the statement constructor.
        sselect 1N)raror
rs r�test_connection_callz$RegressionTests.test_connection_call�s$��
	
���)�T�X�{�;�;�;�;�;rc�Z�d�}|�t|jjd|��dS)Nc��dS)Nr�r')�a�bs  r�collation_cbz4RegressionTests.test_collation.<locals>.collation_cbs���1ru�)ra�UnicodeEncodeErrorr
�create_collation)rr�s  r�test_collationzRegressionTests.test_collationsB��	�	�	����,�d�h�.G��l�	$�	$�	$�	$�	$rc�v��tjd��}|������d����d���fd�}|�tj��5��dd�|��D����ddd��dS#1swxYwYdS)z�
        http://bugs.python.org/issue10811

        Recursively using a cursor, such as when reusing it from a generator led to segfaults.
        Now we catch recursive cursor usage and raise a ProgrammingError.
        r
zcreate table a (bar)zcreate table b (baz)c3�@�K���dd��dV�dS)Nzinsert into a (bar) values (?))r�r��r)rs�r�fooz6RegressionTests.test_recursive_cursor_use.<locals>.foos)������K�K�8�$�?�?�?��G�G�G�G�Grzinsert into b (baz) values (?)c3�K�|]}|fV��dSrr')r(r4s  r�	<genexpr>z<RegressionTests.test_recursive_cursor_use.<locals>.<genexpr>s$����1�1�a�a�T�1�1�1�1�1�1rN)rrrrrar�r1)rr
r�rs   @r�test_recursive_cursor_usez)RegressionTests.test_recursive_cursor_uses
����n�Z�(�(���j�j�l�l�����*�+�+�+����*�+�+�+�	�	�	�	�	��
�
�v�6�
7�
7�	3�	3��O�O�<�1�1�3�3�5�5�1�1�1�
3�
3�
3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�	3�	3s�8)B.�.B2�5B2c
���tjdtj���}|���}|�d��|�d��|�d��|�d��d�|���D��}|�|tjdd	d	d
ddd
��tjdd	d	d
ddd��g��dS)z�
        http://bugs.python.org/issue14720

        The microsecond parsing of convert_timestamp() should pad with zeros,
        since the microsecond string "456" actually represents "456000".
        r
rzCREATE TABLE t (x TIMESTAMP)z4INSERT INTO t (x) VALUES ('2012-04-04 15:06:00.456')z:INSERT INTO t (x) VALUES ('2012-04-04 15:06:00.123456789')zSELECT * FROM tc��g|]
}|d��S)rr'r.s  rr*zNRegressionTests.test_convert_timestamp_microsecond_padding.<locals>.<listcomp>4s��/�/�/�1�!�A�$�/�/�/ri����ri@�i@�N)rrrPrrr�r7rQ)rr
r�valuess    r�*test_convert_timestamp_microsecond_paddingz:RegressionTests.test_convert_timestamp_microsecond_padding!s����n�Z�f�6L�M�M�M���j�j�l�l�����2�3�3�3�	���J�K�K�K�	���P�Q�Q�Q����%�&�&�&�/�/������/�/�/��������d�A�q�"�a��F�;�;���d�A�q�"�a��F�;�;�"
�	�	�	�	�	rc�V�|�ttjdd���dS)Nr
�{rx)rarorrrs r�!test_invalid_isolation_level_typez1RegressionTests.test_invalid_isolation_level_type;s9�����)� �.�*�c�	�	K�	K�	K�	K�	Krc��|j���}ddg}|D]�}|�|���5|�tjd|jj|��ddd��n#1swxYwY|�|���5|�tjd|j|��ddd��n#1swxYwY��dS)Nz	select 1z	select 1)�queryz	null char)r
rr�r�rr�r)rr�queriesr�s    r�test_null_characterz#RegressionTests.test_null_characterAsn���h�o�o������.���	;�	;�E����E��*�*�
@�
@��&�&�v�'>��'+�x�'7��@�@�@�
@�
@�
@�
@�
@�
@�
@�
@�
@�
@�
@����
@�
@�
@�
@����E��*�*�
;�
;��&�&�v�'>��'*�{�E�;�;�;�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;����
;�
;�
;�
;��		;�	;s#�-A1�1A5	�8A5	�(C�C
	�
C
	c�J�tjd��}|�t|d��|�t|d��|���}|�t|jd��|�t|jd��dS)Nr
uselect '�'uselect '�')rrrar�rrr!s   r�test_surrogateszRegressionTests.test_surrogatesMs����n�Z�(�(�����,�c�3D�E�E�E����,�c�3D�E�E�E��j�j�l�l�����,�c�k�;L�M�M�M����,�c�k�;L�M�M�M�M�Mrc��d}t��5}t|��5}|���}|d�|����|�d�|����d�|dz��}|�tj|||��|�tj||j|��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nzquery string is too large�select 1zselect 2zselect 3r�)rrr�ljustrr�r�	DataError)rrl�cx�lim�cu�sqls      r�test_large_sqlzRegressionTests.test_large_sqlUs���)��
�
�
�		K�"�h�r�l�l�		K�c������B��B�z����$�$�%�%�%��J�J�z�'�'��,�,�-�-�-��"�"�3�q�5�)�)�C��"�"�6�#3�S�"�c�B�B�B��"�"�6�#3�S�"�*�c�J�J�J�		K�		K�		K�		K�		K�		K�		K�		K�		K�		K�		K����		K�		K�		K�		K�		K�		K�		K�		K�		K�		K�		K�		K�		K�		K�		K�		K����		K�		K�		K�		K�		K�		Ks5�D�B<C)�D�)C-	�-D�0C-	�1D�D�Dc��tjd��}|�d��|�|jd��d}t|�d����D]�\}}|�||���5|�d|f��|���|dkr|�|dd��nE|dkr|�|dd��n"|d	kr|�|dd	��|dz
}d
d
d
��n#1swxYwY��|�|dd��d
S)
z�
        Connection.commit() did reset cursors, which made sqlite3
        to return rows multiple times when fetched from cursors
        after commit. See issues 10513 and 23129 for details.
        r
z�
        create table t(c);
        create table t2(c);
        insert into t values(0);
        insert into t values(1);
        insert into t values(2);
        rLrzselect c from t)r4r�zinsert into t2(c) values (?)r��N�z'should have returned exactly three rows)	rr�
executescriptr7ry�	enumeraterr�rA)rr
�counterr4r�s     r�test_commit_cursor_resetz(RegressionTests.test_commit_cursor_resetbs����n�Z�(�(������	
�	
�	
�	
����,�b�1�1�1�������,=� >� >�?�?�
	�
	�F�A�s�����s��+�+�	
�	
����:�Q�D�A�A�A��
�
�����a�<�0��$�$�S��V�Q�/�/�/�/���\�0��$�$�S��V�Q�/�/�/�/���\�0��$�$�S��V�Q�/�/�/��1���	
�	
�	
�	
�	
�	
�	
�	
�	
�	
�	
����	
�	
�	
�	
��	
����!�%N�O�O�O�O�Os�BD*�*D.	�1D.	c���d�}tjd��}tj|��}tj||��}|�|��~~t
j��dS)zm
        The interpreter shouldn't crash in case Cursor.__init__() is called
        more than once.
        c��dSrr')�argss r�callbackz/RegressionTests.test_bpo31770.<locals>.callback�s���Drr
N)rrr��weakref�refr�r�
gc_collect)rr�r
rr�s     r�
test_bpo31770zRegressionTests.test_bpo31770�sm��
	�	�	��n�Z�(�(���m�C� � ���k�#�x�(�(�����S������������rc�z�|�t��5|j`ddd��dS#1swxYwYdSr)ra�AttributeErrorr
ryrs r�!test_del_isolation_level_segfaultz1RegressionTests.test_del_isolation_level_segfault�s���
�
�
�~�
.�
.�	)�	)���(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�	)�	)s�0�4�4c�2�Gd�d��}|jjtj|jjd���|jjfD]Q}|��}||j��||j��|j�d��|d���RdS)Nc��eZdZd�ZdS)�.RegressionTests.test_bpo37347.<locals>.Printerc��tjSr)r�	SQLITE_OK)rr�s  r�logz2RegressionTests.test_bpo37347.<locals>.Printer.log�s���'�'rN)r]r^r_r�r'rr�Printerr��s#������
(�
(�
(�
(�
(rr�r�)�nr�)r
�set_trace_callback�	functools�partial�set_progress_handler�set_authorizerr�r)rr��method�printer_instances    r�
test_bpo37347zRegressionTests.test_bpo37347�s���	(�	(�	(�	(�	(�	(�	(�	(��x�2� �(���)F�!�L�L�L��x�.�0�	�	�F� '�w�y�y���F�#�'�(�(�(��F�#�'�(�(�(��H���Z�(�(�(��F�4�L�L�L�L�	�	rc��|j�d��}|���d}|�|d��dS)Nz
select X''rr)r
rrhr7)rr�vals   r�test_return_empty_bytestringz,RegressionTests.test_return_empty_bytestring�sE���h���|�,�,���l�l�n�n�Q�������c�"�"�"�"�"rc��t��5}|���}|�d��|�dd�t	d��D����|���|�d��|�d��|���ddd��dS#1swxYwYdS)N�create table t(t)�insert into t values(?)c3�K�|]}|fV��dSrr'�r(�vs  rr�zFRegressionTests.test_table_lock_cursor_replace_stmt.<locals>.<genexpr>��$����4�4�a�a�T�4�4�4�4�4�4rr$�select t from t�drop table t)rrrr1r0rAr!s   r�#test_table_lock_cursor_replace_stmtz3RegressionTests.test_table_lock_cursor_replace_stmt�s���
�
�
�	�#��*�*�,�,�C��K�K�+�,�,�,��O�O�5�4�4�5��8�8�4�4�4�
6�
6�
6��J�J�L�L�L��K�K�)�*�*�*��K�K��'�'�'��J�J�L�L�L�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�B)C�C	�C	c�~�t��5}|�d��|�dd�td��D����|���|�d��}~|�d��|���ddd��dS#1swxYwYdS)Nr�r�c3�K�|]}|fV��dSrr'r�s  rr�zARegressionTests.test_table_lock_cursor_dealloc.<locals>.<genexpr>�r�rr$r�r)rrr1r0rAr!s   r�test_table_lock_cursor_deallocz.RegressionTests.test_table_lock_cursor_dealloc�s���
�
�
�	�#��K�K�+�,�,�,��O�O�5�4�4�5��8�8�4�4�4�
6�
6�
6��J�J�L�L�L��+�+�/�0�0�C���K�K��'�'�'��J�J�L�L�L�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�BB2�2B6�9B6c���t��5���d����dd�td��D���������fd�}��dd|����d��}~��d	������ddd��dS#1swxYwYdS)
Nr�r�c3�K�|]}|fV��dSrr'r�s  rr�zMRegressionTests.test_table_lock_cursor_non_readonly_select.<locals>.<genexpr>�r�rr$c�6����d|f��dS)Nr�r�)r�r
s �r�dupzGRegressionTests.test_table_lock_cursor_non_readonly_select.<locals>.dup�s������5��t�<�<�<��rrr�zselect dup(t) from tr)rrr1r0rA�create_function)rrrr
s   @r�*test_table_lock_cursor_non_readonly_selectz:RegressionTests.test_table_lock_cursor_non_readonly_select�s'���
�
�
�	�#��K�K�+�,�,�,��O�O�5�4�4�5��8�8�4�4�4�
6�
6�
6��J�J�L�L�L�
�
�
�
�
�
����q�#�.�.�.��+�+�4�5�5�C���K�K��'�'�'��J�J�L�L�L�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�B2C�C�Cc���t��5}d�td��D��}|5|�d��|�d|��ddd��n#1swxYwYg�|�dd�fd���|�d��|��|��ddd��dS#1swxYwYdS)	Nc��g|]}|f��Sr'r'r�s  rr*zJRegressionTests.test_executescript_step_through_select.<locals>.<listcomp>�s��-�-�-�q�q�d�-�-�-rr$r�r��stepr�c�0����|f��Sr)r<)r)�stepss �r�<lambda>zHRegressionTests.test_executescript_step_through_select.<locals>.<lambda>�s���U�\�\�1�$�5G�5G�rzselect step(t) from t)rr0rr1r	r�r7)rr
r�rs   @r�&test_executescript_step_through_selectz6RegressionTests.test_executescript_step_through_select�sq���
�
�
�	,�#�-�-�E�!�H�H�-�-�-�F��
C�
C����/�0�0�0���� 9�6�B�B�B�
C�
C�
C�
C�
C�
C�
C�
C�
C�
C�
C����
C�
C�
C�
C��E������+G�+G�+G�+G�H�H�H����5�6�6�6����U�F�+�+�+�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	,�	,s5�C�,A$�C�$A(	�(C�+A(	�,A
C�C�
CN)(r]r^r_rrrr"r5r9r>rErJrMrTrcrmrqr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr
rr'rrrr"sW������.�.�.����+�+�+�
���
�
�
�;�;�;����K�K�K�2�2�2������� O�O�O�.�.�.�H�H�H�B�B�B�<���"6�6�6����?�?�?�
�
�
�<�<�<�$�$�$�3�3�3�*���4K�K�K�
;�
;�
;�N�N�N�K�K�K�P�P�P�>��� )�)�)����#�#�#�
	�	�	�	�	�	�
�
�
�	,�	,�	,�	,�	,rrc�0�eZdZdZd�Zd�Zd�Zd�Zd�ZdS)�RecursiveUseOfCursorsz$Recursive use of cursors not allowedc��tjdtj���|_|j���|_|j�d��|j�dddg��dS)Nr
rzcreate table test(x foo)r,)r�)�bar)rrr r
rrrr1rs rrzRecursiveUseOfCursors.setUp�s~���>�*�/5�/D�F�F�F����8�?�?�$�$�������3�4�4�4�����=�&��1�	3�	3�	3�	3�	3rc�j�|j���|j���dSr)rrr
rs rrzRecursiveUseOfCursors.tearDown�s,�����������������rc����fd�}tjtjd|i��5�j�d����tj�j�jj	��ddd��dS#1swxYwYdS)Nc�B���j��j��Sr)rr�r
�r)rs �rrzBRecursiveUseOfCursors.test_recursive_cursor_init.<locals>.<lambda>�s�����*�*�4�8�4�4�r�INITz#select x as "x [INIT]", x from test�
r�dictr�
convertersrrr�r�rlr��r�convs` r�test_recursive_cursor_initz0RecursiveUseOfCursors.test_recursive_cursor_init�s����4�4�4�4��
�Z��)�F�D�>�
:�
:�	6�	6��H���C�D�D�D��"�"�6�#:�D�H�#'�8�#4�
6�
6�
6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6�	6�	6��AB�B�Bc����fd�}tjtjd|i��5�j�d����tj�j�jj	��ddd��dS#1swxYwYdS)Nc�6���j���Sr)rrrs �rrzCRecursiveUseOfCursors.test_recursive_cursor_close.<locals>.<lambda>�s�������)�)�r�CLOSEz$select x as "x [CLOSE]", x from testrrs` r�test_recursive_cursor_closez1RecursiveUseOfCursors.test_recursive_cursor_close�s����)�)�)�)��
�Z��)�G�T�?�
;�
;�	6�	6��H���D�E�E�E��"�"�6�#:�D�H�#'�8�#4�
6�
6�
6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6�	6�	6r!c���gf�fd�	}tjtjd|i��5�j�d����tj�j�jj	��ddd��dS#1swxYwYdS)Nc�d��|r�j���n|�d��Sr)rrhr<)r)�lrs  �rrzBRecursiveUseOfCursors.test_recursive_cursor_iter.<locals>.<lambda>�s)���a�K�t�x�0�0�2�2�2�Q�X�X�d�^�^�r�ITERz#select x as "x [ITER]", x from testrrs` r�test_recursive_cursor_iterz0RecursiveUseOfCursors.test_recursive_cursor_iter�s�����K�K�K�K�K��
�Z��)�F�D�>�
:�
:�	6�	6��H���C�D�D�D��"�"�6�#:�D�H�#'�8�#4�
6�
6�
6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6�	6�	6s�AB�B�	BN)	r]r^r_rlrrr r%r*r'rrrr�sd������
0�C�3�3�3����6�6�6�6�6�6�6�6�6�6�6rr�__main__)rQ�unittest�sqlite3rr�r��testr�
unittest.mockr�test.test_sqlite3.test_dbapirr�TestCaserrr]�mainr'rr�<module>r3s��.��������������������������������B�B�B�B�B�B�B�B�t,�t,�t,�t,�t,�h�'�t,�t,�t,�n
#6�#6�#6�#6�#6�H�-�#6�#6�#6�L�z����H�M�O�O�O�O�O��r