
    +h~+                        d dl mZ d dl mZ d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 dd	l m
Z
 dd
l mZ ddl mZ ddl mZ ddl mZ  G d dej                        Z G d dej                        Z G d dej                        ZdZy)   )config)engines)fixtures)eq_)requirements)Column)Table   )Integer)literal)literal_column)select)Stringc                   f    e Zd ZdZdZdZddiZed        Zd Z	d Z
d	 Zej                  d
        Zy)LastrowidTesteachT)implements_get_lastrowidautoincrement_insertimplicit_returningFc                     t        d|t        dt        dd      t        dt        d                   t        d|t        dt        dd	      t        dt        d                   y )
N
autoinc_pkidTprimary_keytest_needs_autoincrementdata2   	manual_pkFr   autoincrementr	   r   r   r   clsmetadatas     W/var/www/html/venv/lib/python3.12/site-packages/sqlalchemy/testing/suite/test_insert.pydefine_tableszLastrowidTest.define_tables   s]    g4$ 66":&	
 	4d%H66":&		
    c                     |j                  |j                               j                         }t        ||j                  j
                  df       y N	some dataexecuter   firstr   dialectdefault_sequence_baseselftableconnrows       r%   _assert_round_tripz LastrowidTest._assert_round_trip*   ?    ll5<<>*00222	
r'   c                     |j                  | j                  j                  j                         t	        d             | j                  | j                  j                  |       y Nr*   r   r,   tablesr   insertdictr5   r1   
connections     r%   test_autoincrement_on_insertz*LastrowidTest.test_autoincrement_on_insert4   I    KK""))+T{-C	
 	 6 6
Cr'   c                 2   |j                  | j                  j                  j                         t	        d            }|j                  t        | j                  j                  j                  j                              }t        |j                  |f       y r8   r,   r;   r   r<   r=   scalarr   cr   r   inserted_primary_keyr1   r?   rpks       r%   test_last_inserted_idz#LastrowidTest.test_last_inserted_id;   n    KK""))+T{-C
 vdkk&<&<&>&>&A&ABCA""RE*r'   c                 4   |j                  | j                  j                  j                         t	        d            }|j
                  }|j                  t        | j                  j                  j                  j                              }t        ||       y r8   )r,   r;   r   r<   r=   	lastrowidrD   r   rE   r   r   )r1   r?   rH   rM   rI   s        r%   test_native_lastrowid_autoincz+LastrowidTest.test_native_lastrowid_autoincC   so    KK""))+T{-C
 KK	vdkk&<&<&>&>&A&ABCIrr'   N)__name__
__module____qualname__run_deletes__backend____requires____engine_options__classmethodr&   r5   r@   rJ   r   dbapi_lastrowidrN    r'   r%   r   r      sX    KKEL.6
 
"
D+ !! "r'   r   c                   D   e Zd ZdZdZed        Zej                  d        Z	ej                  d        Zej                  d        Zej                  d        Zej                   d        Zej                   d	        Zej                   d
        Zej                   d        Zy)InsertBehaviorTestr   Tc                    t        d|t        dt        dd      t        dt        d                   t        d|t        dt        dd	      t        dt        d                   t        d
|t        dt        dd      t        dt        d            t        dt        d      t        dt        t	        dt              t        d      z                y )Nr   r   Tr   r   r   r   Fr   includes_defaultsx   )defaulty2)type_r   )r	   r   r   r   r   r   r"   s     r%   r&   z InsertBehaviorTest.define_tablesQ   s    g4$ 66":&	
 	4d%H66":&		
 	g4$ 66":&3+&s':WQZG	
r'   c                    t         j                  j                  rt        j                  ddi      }nt
        j                  }|j                         5 }|j                  | j                  j                  j                         t        d            }d d d        j                  sJ |j                  rJ |j                  sJ |j                   r|j#                         J y y # 1 sw Y   SxY w)Nr   F)optionsr*   r9   )r   	returningenabledr   testing_enginer   dbbeginr,   r;   r   r<   r=   _soft_closedclosed	is_insertreturns_rowsfetchone)r1   enginer3   rH   s       r%   test_autoclose_on_insertz+InsertBehaviorTest.test_autoclose_on_insertp   s    !!))++-u5F YYF\\^ 	t&&--/;1GA	 ~~~88|{{{ >>QZZ\%999%9>	 	s   ?C%%C.c                 Z   |j                  | j                  j                  j                         t	        d            }|j
                  sJ |j                  rJ |j                  sJ |j                  sJ t        |j                         d        t        |j                         dg       y )Nr*   r9   r   )r,   r;   r   r<   r=   rj   rk   rl   rm   r   rn   keysr1   r?   rH   s      r%   +test_autoclose_on_insert_implicit_returningz>InsertBehaviorTest.test_autoclose_on_insert_implicit_returning   s    KK""))+T{-C
 ~~~88|{{{ ~~~ 	AJJL$ 	AFFHtfr'   c                    |j                  | j                  j                  j                               }|j                  sJ |j
                  rJ |j                  | j                  j                  j                         j                  | j                  j                  j                  j                  d k7              }t        t        |j                               d       y )N   r,   r;   r   r<   rj   rk   r   whererE   r   r   lenallrs   s      r%   test_empty_insertz$InsertBehaviorTest.test_empty_insert   s    t{{55<<>?~~~88|KK""))+11&&((++t3

 	CL!r'   c                    |j                  | j                  j                  j                         i i i g      }|j                  sJ |j
                  rJ |j                  | j                  j                  j                         j                  | j                  j                  j                  j                  d k7              }t        t        |j                               d       y )Nr
   rw   rs   s      r%   test_empty_insert_multiplez-InsertBehaviorTest.test_empty_insert_multiple   s    t{{55<<>RM~~~88|KK""))+11&&((++t3
 	CL!r'   c                    | j                   j                  }| j                   j                  }|j                  |j	                         t        dd      t        dd      t        dd      g       |j                  |j	                         j                  dt        |j                  j                        j                  |j                  j                  j                  ddg                        }t        |j                  d	       |j                  t        |j                  j                        j                  |j                  j                              }t        |j                         d
dg       y )Nrv   data1r   r   r   data2r
   data3r9   Nr   r   )r;   r   r   r,   r<   r=   from_selectr   rE   r   rx   in_r   rF   order_byfetchallr1   r?   	src_table
dest_tableresults        r%   test_insert_from_select_autoincz2InsertBehaviorTest.test_insert_from_select_autoinc   s$   KK))	[[++
(((	
 ##++y{{''(..KK$$(('7);<
 	F''1##:<<$$%..z||/@/@A
 	FOO
J78r'   c                 ^   | j                   j                  }| j                   j                  }|j                  |j	                         j                  dt        |j                  j                        j                  |j                  j                  j                  ddg                        }t        |j                  d       |j                  t        |j                  j                        j                  |j                  j                              }t        |j                         g        y )Nr9   r   r   r   )r;   r   r   r,   r<   r   r   rE   r   rx   r   r   rF   r   r   r   s        r%   'test_insert_from_select_autoinc_no_rowsz:InsertBehaviorTest.test_insert_from_select_autoinc_no_rows   s    KK))	[[++
##++y{{''(..KK$$(('7);<
 	F''1##:<<$$%..z||/@/@A
 	FOOr"r'   c                    | j                   j                  }|j                  |j                         t	        dd      t	        dd      t	        dd      g       |j                  |j                         j                         j                  dt        |j                  j                  dz   |j                  j                        j                  |j                  j                  j                  ddg                         t        |j                  t        |j                  j                        j                  |j                  j                              j                         g d	       y )
Nrv   r   r   r   r   r
   r   r^   ))r   r   r   r   r   )r;   r   r,   r<   r=   inliner   r   rE   r   r   rx   r   r   r   r   r1   r?   r2   s      r%   test_insert_from_selectz*InsertBehaviorTest.test_insert_from_select   s   %%LLN(((	
 	LLNVX[uwwzzA~uww||4::GGLL$$gw%78		
 	uww||$--eggll;hjH		
r'   c                    | j                   j                  }|j                  |j                         t	        dd      t	        dd      t	        dd      g       |j                  |j                         j                         j                  dt        |j                  j                  dz   |j                  j                        j                  |j                  j                  j                  ddg                         t        |j                  t        |      j                  |j                  j                  |j                  j                              j                         g d	       y )
Nrv   r   r   r   r   r
   r   r^   ))rv   r   r^      )r   r   r^   r   )   r   r^   r   )r
   r   r^   r   )   r   r^   r   )r;   r\   r,   r<   r=   r   r   r   rE   r   r   rx   r   r   r   r   r   s      r%   %test_insert_from_select_with_defaultsz8InsertBehaviorTest.test_insert_from_select_with_defaults  s   --LLN(((	
 	LLNVX[uwwzzA~uww||4::GGLL$$gw%78		
 	u&&uww||UWWZZ@hj		
r'   N)rO   rP   rQ   rR   rS   rV   r&   r   r   rp   re   rt   empty_insertsr{   empty_inserts_executemanyr}   insert_from_selectr   r   r   r   rX   r'   r%   rZ   rZ   M   s    KK
 
< &&: ':.  . 
  
 ++ , $$9 %98 $$# %#( $$
 %
: $$!
 %!
r'   rZ   c                   l    e Zd ZdZdZdZddiZd Zed        Z	e
j                  d        Zd Zd	 Zd
 Zy)ReturningTestr   )re   r   Tr   c                     |j                  |j                               j                         }t        ||j                  j
                  df       y r)   r+   r0   s       r%   r5   z ReturningTest._assert_round_trip7  r6   r'   c                 h    t        d|t        dt        dd      t        dt        d                   y )Nr   r   Tr   r   r   r!   r"   s     r%   r&   zReturningTest.define_tablesA  s1    g4$ 66":&	
r'   c                 d   | j                   j                  }|j                  |j                         j	                  |j
                  j                        t        d            }|j                         d   }|j                  t        |j
                  j                              }t        ||       y Nr*   r9       r;   r   r,   r<   re   rE   r   r=   r-   rD   r   r   r1   r?   r2   rH   rI   
fetched_pks         r%   %test_explicit_returning_pk_autocommitz3ReturningTest.test_explicit_returning_pk_autocommitL  s|    &&LLN$$UWWZZ0$K2H
 WWYq\&&veggjj'9:
Jr'   c                 d   | j                   j                  }|j                  |j                         j	                  |j
                  j                        t        d            }|j                         d   }|j                  t        |j
                  j                              }t        ||       y r   r   r   s         r%   (test_explicit_returning_pk_no_autocommitz6ReturningTest.test_explicit_returning_pk_no_autocommitV  s|    &&LLN$$UWWZZ0$K2H
 WWYq\&&veggjj'9:
Jr'   c                     |j                  | j                  j                  j                         t	        d             | j                  | j                  j                  |       y r8   r:   r>   s     r%   /test_autoincrement_on_insert_implicit_returningz=ReturningTest.test_autoincrement_on_insert_implicit_returning_  rA   r'   c                 2   |j                  | j                  j                  j                         t	        d            }|j                  t        | j                  j                  j                  j                              }t        |j                  |f       y r8   rC   rG   s       r%   (test_last_inserted_id_implicit_returningz6ReturningTest.test_last_inserted_id_implicit_returningf  rK   r'   N)rO   rP   rQ   run_create_tablesrT   rS   rU   r5   rV   r&   r   fetch_rows_post_commitr   r   r   r   rX   r'   r%   r   r   0  s`    6LK.5
 
 
 (( )D+r'   r   )r   rZ   r   N) r   r   r   
assertionsr   r   schemar   r	   r   r   r   r   r   
TablesTestr   rZ   r   __all__rX   r'   r%   <module>r      sl        !       ;H'' ;|`
,, `
F<+H'' <+~ Cr'   