σ
Ώb]c           @   s  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 d e j f d     YZ d e j f d     YZ d e j f d     YZ d Z d S(   i   (   t   config(   t   engines(   t   fixtures(   t   eq_(   t   requirements(   t   Column(   t   Tablei   (   t   Integer(   t   literal(   t   literal_column(   t   select(   t   Stringt   LastrowidTestc           B   sc   e  Z d  Z e Z d	 Z i e d 6Z e d    Z	 d   Z
 d   Z d   Z e j d    Z RS(
   t   eacht   implements_get_lastrowidt   autoincrement_insertt   implicit_returningc      
   C   sr   t  d | t d t d t d t t d t d    t  d | t d t d t d t t d t d    d  S(	   Nt
   autoinc_pkt   idt   primary_keyt   test_needs_autoincrementt   datai2   t	   manual_pkt   autoincrement(   R   R   R   t   TrueR   t   False(   t   clst   metadata(    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_insert.pyt   define_tables   s    c         C   s;   | j  | j    j   } t | t j j j d f  d  S(   Ns	   some data(   t   executeR
   t   firstR   R    t   dbt   dialectt   default_sequence_base(   t   selft   tablet   connt   row(    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_insert.pyt   _assert_round_trip*   s    c         C   s?   t  j j |  j j j   d d |  j |  j j t  j  d  S(   NR   s	   some data(   R    R   R   t   tablesR   t   insertR&   (   R"   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_insert.pyt   test_autoincrement_on_insert.   s    "c         C   sb   t  j j |  j j j   d d } t  j j t |  j j j j	 g   } t
 | j | g  d  S(   NR   s	   some data(   R    R   R   R'   R   R(   t   scalarR
   t   cR   R   t   inserted_primary_key(   R"   t   rt   pk(    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_insert.pyt   test_last_inserted_id3   s    	'c         C   se   t  j j |  j j j   d d } | j } t  j j t |  j j j	 j
 g   } t | |  d  S(   NR   s	   some data(   R    R   R   R'   R   R(   t	   lastrowidR*   R
   R+   R   R   (   R"   R-   R0   R.   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_insert.pyt   test_native_lastrowid_autoinc?   s
    		'(   R   R   (   t   __name__t
   __module__t   run_deletesR   t   __backend__t   __requires__R   t   __engine_options__t   classmethodR   R&   R)   R/   R   t   dbapi_lastrowidR1   (    (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_insert.pyR      s   			t   InsertBehaviorTestc           B   s   e  Z d  Z e Z e d    Z 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 RS(	   R   c         C   sγ   t  d | t d t d t d t t d t d    t  d | t d t d t d t t d t d    t  d	 | t d t d t d t t d t d   t d
 t d d t d t d t d d t t d   d  S(   NR   R   R   R   R   i2   R   R   t   includes_defaultst   xt   defaulti   t   yt   2t   type_i   (   R   R   R   R   R   R   R	   R   (   R   R   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_insert.pyR   M   s,    c         C   s   t  j j r( t j d i t d 6 } n	 t j } | j |  j	 j
 j   d d } | j sa t  | j sq t  | j s t  | j s t  d  S(   Nt   optionsR   R   s	   some data(   R   t	   returningt   enabledR   t   testing_engineR   R    R   R   R'   R   R(   t   _soft_closedt   AssertionErrort   closedt	   is_insertt   returns_rows(   R"   t   engineR-   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_insert.pyt   test_autoclose_on_insertl   s    		!c         C   sf   t  j j |  j j j   d d } | j s3 t  | j sC t  | j	 sR t  | j
 sb t  d  S(   NR   s	   some data(   R    R   R   R'   R   R(   RE   RF   RG   RH   RI   (   R"   R-   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_insert.pyt+   test_autoclose_on_insert_implicit_returningz   s    	c         C   s   t  j j |  j j j    } | j s- t  | j s= t  t  j j |  j j j	   j
 |  j j j j d  k   } t | j    s t  d  S(   N(   R    R   R   R'   R   R(   RE   RF   RG   R
   t   whereR+   R   t   Nonet   lent   fetchall(   R"   R-   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_insert.pyt   test_empty_insert   s    	c      	   C   s  |  j  j } |  j  j } t j j | j   t d d d d  t d d d d  t d d d d  g  t j j | j   j d	 t	 | j
 j g  j | j
 j j d d g     } t | j d  g  t j j t	 | j
 j g  j | j
 j   } t | j   d
 d g  d  S(   NR   i   R   t   data1i   t   data2i   t   data3(   R   (   RS   (   RT   (   R'   R   R   R    R   R   R(   t   dictt   from_selectR
   R+   R   RM   t   in_R   R,   RN   t   order_byRP   (   R"   t	   src_tablet
   dest_tablet   result(    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_insert.pyt   test_insert_from_select_autoinc   s     			$	'c         C   sΓ   |  j  j } |  j  j } t j j | j   j d t | j	 j
 g  j | j	 j
 j d d g     } t | j d  g  t j j t | j	 j
 g  j | j	 j
   } t | j   g   d  S(   NR   RS   RT   (   R   (   R'   R   R   R    R   R   R(   RV   R
   R+   R   RM   RW   R   R,   RN   RX   RP   (   R"   RY   RZ   R[   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_insert.pyt'   test_insert_from_select_autoinc_no_rows―   s    	$	'c      	   C   s  |  j  j } t j j | j   t d d d d  t d d d d  t d d d d  g  t j j | j d	 t  j d t	 | j
 j d
 | j
 j g  j | j
 j j d d g     t t j j t	 | j
 j g  j | j
 j   j   d d d d d g  d  S(   NR   i   R   RR   i   RS   i   RT   t   inlinei   (   R   R   (   RR   (   RS   (   RS   (   RT   (   RT   (   R'   R   R    R   R   R(   RU   R   RV   R
   R+   R   R   RM   RW   R   RX   RP   (   R"   R#   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_insert.pyt   test_insert_from_selectΔ   s    			""	*c      
   C   s  |  j  j } t j j | j   t d d d d  t d d d d  t d d d d  g  t j j | j d	 t  j d t	 | j
 j d
 | j
 j g  j | j
 j j d d g     t t j j t	 | g  j | j
 j | j
 j   j   d d d d d g  d  S(   NR   i   R   RR   i   RS   i   RT   R^   i   i   i   i   (   R   R   (   i   RR   i   i   (   i   RS   i   i   (   i   RS   i   i   (   i   RT   i   i   (   i   RT   i   i   (   R'   R;   R    R   R   R(   RU   R   RV   R
   R+   R   R   RM   RW   R   RX   RP   (   R"   R#   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_insert.pyt%   test_insert_from_select_with_defaultsΰ   s&    			""	-(   R2   R3   R4   R   R5   R8   R   RK   R   RB   RL   t   empty_insertsRQ   t   insert_from_selectR\   R]   R_   R`   (    (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_insert.pyR:   I   s   	
t   ReturningTestc           B   sl   e  Z d  Z d
 Z e Z i e d 6Z d   Z e d    Z	 e
 j d    Z d   Z d   Z d	   Z RS(   R   RB   R   R   c         C   s;   | j  | j    j   } t | t j j j d f  d  S(   Ns	   some data(   R   R
   R   R   R    R   R    R!   (   R"   R#   R$   R%   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_insert.pyR&   
  s    c      
   C   s;   t  d | t d t d t d t t d t d    d  S(   NR   R   R   R   R   i2   (   R   R   R   R   R   (   R   R   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_insert.pyR     s    c         C   s   t  j } |  j j } | j | j   j | j j  d d } | j	   d } t  j j
 t | j j g   } t | |  d  S(   NR   s	   some datai    (   R    R   R'   R   R   R(   RB   R+   R   R   R*   R
   R   (   R"   RJ   R#   R-   R.   t
   fetched_pk(    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_insert.pyt%   test_explicit_returning_pk_autocommit  s    	$!c         C   s   t  j } |  j j } | j   A } | j | j   j | j j	  d d } | j
   d } Wd  QXt  j j t | j j	 g   } t | |  d  S(   NR   s	   some datai    (   R    R   R'   R   t   beginR   R(   RB   R+   R   R   R*   R
   R   (   R"   RJ   R#   R$   R-   R.   Rd   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_insert.pyt(   test_explicit_returning_pk_no_autocommit$  s    	$!c         C   s?   t  j j |  j j j   d d |  j |  j j t  j  d  S(   NR   s	   some data(   R    R   R   R'   R   R(   R&   (   R"   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_insert.pyt/   test_autoincrement_on_insert_implicit_returning/  s    "c         C   sb   t  j j |  j j j   d d } t  j j t |  j j j j	 g   } t
 | j | g  d  S(   NR   s	   some data(   R    R   R   R'   R   R(   R*   R
   R+   R   R   R,   (   R"   R-   R.   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_insert.pyt(   test_last_inserted_id_implicit_returning4  s    	'(   RB   R   (   R2   R3   t   run_create_tablesR6   R   R5   R7   R&   R8   R   R   t   fetch_rows_post_commitRe   Rg   Rh   Ri   (    (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_insert.pyRc     s   			N(   R   R:   Rc   (   t    R    R   R   t
   assertionsR   R   t   schemaR   R   R   R   R	   R
   R   t
   TablesTestR   R:   Rc   t   __all__(    (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_insert.pyt   <module>   s   :Ί: