ó
¿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 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 e j f d „  ƒ  YZ d e j f d „  ƒ  YZ d  e j f d! „  ƒ  YZ d" S(#   i   (   t   config(   t   fixtures(   t   eq_(   t   in_(   t   Column(   t   Tablei   (   t	   bindparam(   t   case(   t   false(   t   func(   t   Integer(   t   literal_column(   t   null(   t   select(   t   String(   t   testing(   t   true(   t   tuple_(   t   union(   t   utilt   CollateTestc           B   sJ   e  Z e Z e d  „  ƒ Z e d „  ƒ Z d „  Z e j	 j
 d „  ƒ Z RS(   c         C   s5   t  d | t d t d t ƒt d t d ƒ ƒ ƒ d  S(   Nt
   some_tablet   idt   primary_keyt   dataid   (   R   R   R
   t   TrueR   (   t   clst   metadata(    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   define_tables   s
    c         C   sE   t  j j |  j j j ƒ  i d d 6d d 6i d d 6d d 6g ƒ d  S(   Ni   R   s   collate data1R   i   s   collate data2(   R    t   dbt   executet   tablesR   t   insert(   R   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   insert_data#   s    	c         C   s#   t  t j j | ƒ j ƒ  | ƒ d  S(   N(   R   R    R   R   t   fetchall(   t   selfR   t   result(    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   _assert_result-   s    c         C   sb   t  j j t  j ƒ } |  j t |  j j g ƒ j |  j j j	 j
 j | ƒ j ƒ  ƒ d d g ƒ d  S(   Ni   s   collate data1i   s   collate data2(   i   s   collate data1(   i   s   collate data2(   R   t   requirest   get_order_by_collationR    R%   R   R   R   t   order_byt   cR   t   collatet   asc(   R#   t	   collation(    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_collate_order_by0   s
    !(   t   __name__t
   __module__R   t   __backend__t   classmethodR   R!   R%   R   R&   t   order_by_collationR-   (    (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyR      s
   	
	t   OrderByLabelTestc           B   s}   e  Z d  Z e Z e d „  ƒ Z e d „  ƒ Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d „  Z e j j d	 „  ƒ Z RS(
   s©   Test the dialect sends appropriate ORDER BY expressions when
    labels are used.

    This essentially exercises the "supports_simple_order_by_label"
    setting.

    c         C   s_   t  d | t d t d t ƒt d t ƒ t d t ƒ t d t d ƒ ƒ t d t d ƒ ƒ ƒ d  S(	   NR   R   R   t   xt   yt   qi2   t   p(   R   R   R
   R   R   (   R   R   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyR   G   s    c         C   s•   t  j j |  j j j ƒ  i d d 6d d 6d d 6d d 6d d	 6i d d 6d d 6d
 d 6d d 6d d	 6i d
 d 6d
 d 6d d 6d d 6d d	 6g ƒ d  S(   Ni   R   R4   i   R5   t   q1R6   t   p3R7   i   t   q2t   p2i   t   q3t   p1(   R    R   R   R   R   R    (   R   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyR!   S   s
    	&&c         C   s#   t  t j j | ƒ j ƒ  | ƒ d  S(   N(   R   R    R   R   R"   (   R#   R   R$   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyR%   ^   s    c         C   sP   |  j  j } | j j j d ƒ } |  j t | g ƒ j | ƒ d d d g ƒ d  S(   Nt   lxi   i   i   (   i   (   i   (   i   (   R   R   R)   R4   t   labelR%   R   R(   (   R#   t   tableR>   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt
   test_plaina   s    c         C   sZ   |  j  j } | j j | j j j d ƒ } |  j t | g ƒ j | ƒ d d d g ƒ d  S(   NR>   i   i   i   (   i   (   i   (   i   (	   R   R   R)   R4   R5   R?   R%   R   R(   (   R#   R@   R>   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_composed_intf   s    c         C   s»   |  j  j } | j j | j j j d ƒ } t j | j j ƒ | j j	 j d ƒ } |  j
 t | | g ƒ j | | j ƒ  ƒ d t j d ƒ f d t j d ƒ f d t j d ƒ f g ƒ d  S(	   NR>   t   lyi   t   q1p3i   t   q2p2i   t   q3p1(   R   R   R)   R4   R5   R?   R	   t   lowerR6   R7   R%   R   R(   t   descR   t   u(   R#   R@   R>   RC   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_composed_multiplek   s    (!c         C   sV   |  j  j } | j j j d ƒ } |  j t | g ƒ j | j ƒ  ƒ d d d g ƒ d  S(   NR>   i   i   i   (   i   (   i   (   i   (	   R   R   R)   R4   R?   R%   R   R(   RH   (   R#   R@   R>   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_plain_desct   s    c         C   s`   |  j  j } | j j | j j j d ƒ } |  j t | g ƒ j | j	 ƒ  ƒ d d d g ƒ d  S(   NR>   i   i   i   (   i   (   i   (   i   (
   R   R   R)   R4   R5   R?   R%   R   R(   RH   (   R#   R@   R>   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_composed_int_desc{   s    c         C   s{   |  j  j } | j j | j j j d ƒ } t t j | j j	 ƒ | g ƒ j
 | ƒ j | ƒ } |  j | d d d g ƒ d  S(	   NR>   i   i   i   i   (   i   i   (   i   i   (   i   i   (   R   R   R)   R4   R5   R?   R   R	   t   countR   t   group_byR(   R%   (   R#   R@   t   exprt   stmt(    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_group_by_composed‚   s    !		(   R.   R/   t   __doc__R   R0   R1   R   R!   R%   RA   RB   RJ   RK   RL   R   R&   t   group_by_complex_expressionRQ   (    (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyR3   <   s   							t   LimitOffsetTestc           B   s¿   e  Z e Z e d  „  ƒ Z e d „  ƒ Z d
 d „ Z d „  Z e	 j
 j d „  ƒ Z e	 j
 j d „  ƒ Z e	 j
 j d „  ƒ Z e	 j
 j d „  ƒ Z e	 j
 j d „  ƒ Z e	 j
 j d	 „  ƒ Z RS(   c         C   s;   t  d | t d t d t ƒt d t ƒ t d t ƒ ƒ d  S(   NR   R   R   R4   R5   (   R   R   R
   R   (   R   R   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyR   ‘   s    c         C   sƒ   t  j j |  j j j ƒ  i d d 6d d 6d d 6i d d 6d d 6d d 6i d d 6d d 6d d 6i d d 6d d 6d d 6g ƒ d  S(	   Ni   R   R4   i   R5   i   i   i   (   R    R   R   R   R   R    (   R   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyR!   ›   s    	c         C   s&   t  t j j | | ƒ j ƒ  | ƒ d  S(   N(   R   R    R   R   R"   (   R#   R   R$   t   params(    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyR%   §   s    c         C   sG   |  j  j } |  j t | g ƒ j | j j ƒ j d ƒ d d g ƒ d  S(   Ni   i   i   (   i   i   i   (   i   i   i   (   R   R   R%   R   R(   R)   R   t   limit(   R#   R@   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_simple_limitª   s    $c         C   sG   |  j  j } |  j t | g ƒ j | j j ƒ j d ƒ d d g ƒ d  S(   Ni   i   i   i   (   i   i   i   (   i   i   i   (   R   R   R%   R   R(   R)   R   t   offset(   R#   R@   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_simple_offset±   s    $c         C   sP   |  j  j } |  j t | g ƒ j | j j ƒ j d ƒ j d ƒ d d g ƒ d  S(   Ni   i   i   i   (   i   i   i   (   i   i   i   (	   R   R   R%   R   R(   R)   R   RV   RX   (   R#   R@   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_simple_limit_offset¹   s    -c         C   s‡   |  j  j } t | g ƒ j | j j ƒ j d ƒ j d ƒ } | j d t	 j
 j d i t d 6ƒ } t | ƒ } |  j | d	 d
 g ƒ d S(   s7   test that 'literal binds' mode works - no bound params.i   i   t   dialectt   compile_kwargst   literal_bindsi   i   N(   i   i   i   (   i   i   i   (   R   R   R   R(   R)   R   RV   RX   t   compileR    R   R[   R   t   strR%   (   R#   R@   RP   t   sql(    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_limit_offset_nobindsÁ   s    0	c         C   sZ   |  j  j } |  j t | g ƒ j | j j ƒ j t d ƒ ƒ d d g d i d d 6ƒd  S(   Nt   li   i   i   RU   (   i   i   i   (   i   i   i   (	   R   R   R%   R   R(   R)   R   RV   R   (   R#   R@   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_bound_limitÎ   s
    *c         C   sZ   |  j  j } |  j t | g ƒ j | j j ƒ j t d ƒ ƒ d d g d i d d 6ƒd  S(	   Nt   oi   i   i   RU   i   (   i   i   i   (   i   i   i   (	   R   R   R%   R   R(   R)   R   RX   R   (   R#   R@   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_bound_offset×   s
    *c         C   sp   |  j  j } |  j t | g ƒ j | j j ƒ j t d ƒ ƒ j	 t d ƒ ƒ d d	 g d i d d 6d d 6ƒd  S(
   NRb   Rd   i   i   i   RU   i   (   i   i   i   (   i   i   i   (
   R   R   R%   R   R(   R)   R   RV   R   RX   (   R#   R@   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_bound_limit_offsetà   s    (    (   R.   R/   R   R0   R1   R   R!   R%   RW   R   R&   RX   RY   RZ   Ra   t   bound_limit_offsetRc   Re   Rf   (    (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyRT   Ž   s   
			t   CompoundSelectTestc           B   s§   e  Z e Z e d  „  ƒ Z e d „  ƒ Z d
 d „ Z d „  Z d „  Z	 e
 j j e
 j j d „  ƒ ƒ Z e
 j j d „  ƒ Z d „  Z e
 j j d „  ƒ Z d	 „  Z RS(   c         C   s;   t  d | t d t d t ƒt d t ƒ t d t ƒ ƒ d  S(   NR   R   R   R4   R5   (   R   R   R
   R   (   R   R   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyR   ð   s    c         C   sƒ   t  j j |  j j j ƒ  i d d 6d d 6d d 6i d d 6d d 6d d 6i d d 6d d 6d d 6i d d 6d d 6d d 6g ƒ d  S(	   Ni   R   R4   i   R5   i   i   i   (   R    R   R   R   R   R    (   R   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyR!   ú   s    	c         C   s&   t  t j j | | ƒ j ƒ  | ƒ d  S(   N(   R   R    R   R   R"   (   R#   R   R$   RU   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyR%     s    c         C   sŒ   |  j  j } t | g ƒ j | j j d k ƒ } t | g ƒ j | j j d k ƒ } t | | ƒ } |  j | j | j j ƒ d d g ƒ d  S(   Ni   i   i   (   i   i   i   (   i   i   i   (	   R   R   R   t   whereR)   R   R   R%   R(   (   R#   R@   t   s1t   s2t   u1(    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_plain_union	  s
    $$c         C   s˜   |  j  j } t | g ƒ j | j j d k ƒ } t | g ƒ j | j j d k ƒ } t | | ƒ j ƒ  j ƒ  } |  j | j	 | j j ƒ d d g ƒ d  S(   Ni   i   i   (   i   i   i   (   i   i   i   (
   R   R   R   Ri   R)   R   R   t   aliasR%   R(   (   R#   R@   Rj   Rk   Rl   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_select_from_plain_union  s
    $$c         C   sÅ   |  j  j } t | g ƒ j | j j d k ƒ j d ƒ j | j j ƒ } t | g ƒ j | j j d k ƒ j d ƒ j | j j ƒ } t | | ƒ j d ƒ } |  j	 | j | j j ƒ d d g ƒ d  S(   Ni   i   i   i   (   i   i   i   (   i   i   i   (
   R   R   R   Ri   R)   R   RV   R(   R   R%   (   R#   R@   Rj   Rk   Rl   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt&   test_limit_offset_selectable_in_unions  s    		c         C   s³   |  j  j } t | g ƒ j | j j d k ƒ j | j j ƒ } t | g ƒ j | j j d k ƒ j | j j ƒ } t | | ƒ j d ƒ } |  j	 | j | j j ƒ d d g ƒ d  S(   Ni   i   i   (   i   i   i   (   i   i   i   (
   R   R   R   Ri   R)   R   R(   R   RV   R%   (   R#   R@   Rj   Rk   Rl   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt"   test_order_by_selectable_in_unions-  s
    33c         C   s¡   |  j  j } t | g ƒ j | j j d k ƒ j ƒ  } t | g ƒ j | j j d k ƒ j ƒ  } t | | ƒ j d ƒ } |  j	 | j
 | j j ƒ d d g ƒ d  S(   Ni   i   i   (   i   i   i   (   i   i   i   (   R   R   R   Ri   R)   R   t   distinctR   RV   R%   R(   (   R#   R@   Rj   Rk   Rl   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt"   test_distinct_selectable_in_unions6  s
    **c         C   sÑ   |  j  j } t | g ƒ j | j j d k ƒ j d ƒ j | j j ƒ } t | g ƒ j | j j d k ƒ j d ƒ j | j j ƒ } t | | ƒ j	 ƒ  } |  j
 | j ƒ  j d ƒ j | j j ƒ d d g ƒ d  S(   Ni   i   i   i   (   i   i   i   (   i   i   i   (   R   R   R   Ri   R)   R   RV   R(   R   Rn   R%   (   R#   R@   Rj   Rk   Rl   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt&   test_limit_offset_in_unions_from_alias>  s    		c         C   sÝ   |  j  j } t | g ƒ j | j j d k ƒ j d ƒ j | j j ƒ j ƒ  j ƒ  } t | g ƒ j | j j d k ƒ j d ƒ j | j j ƒ j ƒ  j ƒ  } t	 | | ƒ j d ƒ } |  j
 | j | j j ƒ d d g ƒ d  S(   Ni   i   i   i   (   i   i   i   (   i   i   i   (   R   R   R   Ri   R)   R   RV   R(   Rn   R   R%   (   R#   R@   Rj   Rk   Rl   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt.   test_limit_offset_aliased_selectable_in_unionsT  s    		(    (   R.   R/   R   R0   R1   R   R!   R%   Rm   Ro   R   R&   t   order_by_col_from_uniont/   parens_in_union_contained_select_w_limit_offsetRp   t0   parens_in_union_contained_select_wo_limit_offsetRq   Rs   Rt   Ru   (    (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyRh   í   s   
					t   ExpandingBoundInTestc           B   sË   e  Z e Z e d  „  ƒ Z e d „  ƒ Z d d „ Z d „  Z e	 j
 j d „  ƒ Z e	 j
 j d „  ƒ Z d „  Z e	 j
 j d „  ƒ Z e	 j
 j d „  ƒ Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z RS(   c      
   C   sM   t  d | t d t d t ƒt d t ƒ t d t ƒ t d t d ƒ ƒ ƒ d  S(   NR   R   R   R4   R5   t   zi2   (   R   R   R
   R   R   (   R   R   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyR   n  s    c         C   sŸ   t  j j |  j j j ƒ  i d d 6d d 6d d 6d d 6i d d 6d d 6d d 6d	 d 6i d d 6d d 6d
 d 6d d 6i d
 d 6d
 d 6d d 6d d 6g ƒ d  S(   Ni   R   R4   i   R5   t   z1Rz   i   t   z2i   t   z3i   t   z4(   R    R   R   R   R   R    (   R   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyR!   y  s    	c         C   s&   t  t j j | | ƒ j ƒ  | ƒ d  S(   N(   R   R    R   R   R"   (   R#   R   R$   RU   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyR%   …  s    c         C   s    |  j  j } t | j j g ƒ j | j j j t d d t	 ƒƒ ƒ j | j j
 j t d d t	 ƒƒ ƒ j | j j ƒ } |  j | g  d i g  d 6g  d 6ƒd  S(   NR6   t	   expandingR7   RU   (   R   R   R   R)   R   Ri   R4   R   R   R   R5   R(   R%   (   R#   R@   RP   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_multiple_empty_setsˆ  s    $$c         C   s„   |  j  j } t | j j g ƒ j t | j j | j j ƒ j	 t
 d d t ƒƒ ƒ j | j j ƒ } |  j | g  d i g  d 6ƒd  S(   NR6   R   RU   (   R   R   R   R)   R   Ri   R   R4   Rz   R   R   R   R(   R%   (   R#   R@   RP   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_empty_heterogeneous_tuples–  s    c         C   s„   |  j  j } t | j j g ƒ j t | j j | j j ƒ j	 t
 d d t ƒƒ ƒ j | j j ƒ } |  j | g  d i g  d 6ƒd  S(   NR6   R   RU   (   R   R   R   R)   R   Ri   R   R4   R5   R   R   R   R(   R%   (   R#   R@   RP   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_empty_homogeneous_tuples¦  s    c         C   s‡   |  j  j } t | j j g ƒ j | j j j t d d t	 ƒƒ ƒ j
 | j j ƒ } |  j | d d d	 g d i d d d g d 6ƒd  S(
   NR6   R   i   i   i   RU   (   i   (   i   (   i   (   R   R   R   R)   R   Ri   R4   R   R   R   R(   R%   (   R#   R@   RP   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_bound_in_scalar¶  s
    $c      	   C   s–   |  j  j } t | j j g ƒ j t | j j | j j ƒ j	 t
 d d t ƒƒ ƒ j | j j ƒ } |  j | d d	 d
 g d i d d d g d 6ƒd  S(   NR6   R   i   i   i   RU   i   (   i   (   i   (   i   (   i   i   (   i   i   (   i   i   (   R   R   R   R)   R   Ri   R   R4   R5   R   R   R   R(   R%   (   R#   R@   RP   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_bound_in_two_tupleÁ  s    c      	   C   s–   |  j  j } t | j j g ƒ j t | j j | j j ƒ j	 t
 d d t ƒƒ ƒ j | j j ƒ } |  j | d
 d d g d i d d d g d 6ƒd  S(   NR6   R   i   i   i   RU   R|   R}   R~   (   i   (   i   (   i   (   i   R|   (   i   R}   (   i   R~   (   R   R   R   R)   R   Ri   R   R4   Rz   R   R   R   R(   R%   (   R#   R@   RP   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt%   test_bound_in_heterogeneous_two_tupleÓ  s    c         C   su   |  j  j } t | j j g ƒ j | j j j t d d t	 ƒƒ ƒ j
 | j j ƒ } |  j | g  d i g  d 6ƒd  S(   NR6   R   RU   (   R   R   R   R)   R   Ri   R4   R   R   R   R(   R%   (   R#   R@   RP   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_empty_set_against_integerç  s
    $c         C   s   |  j  j } t | j j g ƒ j | j j j t d d t	 ƒƒ ƒ j
 | j j ƒ } |  j | d d	 d
 d g d i g  d 6ƒd  S(   NR6   R   i   i   i   i   RU   (   i   (   i   (   i   (   i   (   R   R   R   R)   R   Ri   R4   t   notin_R   R   R(   R%   (   R#   R@   RP   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt'   test_empty_set_against_integer_negationò  s
    $c         C   su   |  j  j } t | j j g ƒ j | j j j t d d t	 ƒƒ ƒ j
 | j j ƒ } |  j | g  d i g  d 6ƒd  S(   NR6   R   RU   (   R   R   R   R)   R   Ri   Rz   R   R   R   R(   R%   (   R#   R@   RP   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_empty_set_against_stringý  s
    $c         C   s   |  j  j } t | j j g ƒ j | j j j t d d t	 ƒƒ ƒ j
 | j j ƒ } |  j | d d	 d
 d g d i g  d 6ƒd  S(   NR6   R   i   i   i   i   RU   (   i   (   i   (   i   (   i   (   R   R   R   R)   R   Ri   Rz   R‡   R   R   R(   R%   (   R#   R@   RP   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt&   test_empty_set_against_string_negation  s
    $c      	   C   su   t  t t ƒ  j t d d d d t ƒƒ t ƒ  f g d t ƒ  ƒg ƒ } t t j	 j
 | ƒ j ƒ  d t d f ƒ d  S(   Nt   foot   valueR   t   else_i    (    (   R   R   R   R   R   R   R   R   R    R   R   t   fetchonet   False(   R#   RP   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_null_in_empty_set_is_false  s    	(    (   R.   R/   R   R0   R1   R   R!   R%   R€   R   R&   t   tuple_inR   R‚   Rƒ   R„   R…   R†   Rˆ   R‰   RŠ   R   (    (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyRy   k  s   						t   LikeFunctionsTestc           B   s¿   e  Z e Z d  Z d Z e d „  ƒ Z e d „  ƒ Z	 d „  Z
 d „  Z d „  Z d „  Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   t   oncec         C   s5   t  d | t d t d t ƒt d t d ƒ ƒ ƒ d  S(   NR   R   R   R   i2   (   R   R   R
   R   R   (   R   R   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyR   ,  s
    c         C   sÍ   t  j j |  j j j ƒ  i d d 6d d 6i d d 6d d 6i d d 6d d 6i d	 d 6d
 d 6i d d 6d d 6i d d 6d d 6i d d 6d d 6i d d 6d d 6i d d 6d d 6i d d 6d d 6g
 ƒ d  S(   Ni   R   t   abcdefgR   i   s   ab/cdefgi   s   ab%cdefgi   t   ab_cdefgi   s   abcde/fgi   s   abcde%fgi   s   ab#cdefgi   t   ab9cdefgi	   s   abcde#fgi
   t   abcd9fg(   R    R   R   R   R   R    (   R   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyR!   5  s    	c         C   sf   |  j  j } t j j ƒ  8 } d „  | j t | j j g ƒ j	 | ƒ ƒ Dƒ } Wd  QXt
 | | ƒ d  S(   Nc         S   s   h  |  ] \ } | ’ q S(    (    (   t   .0RŒ   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pys	   <setcomp>L  s   	(   R   R   R    R   t   connectR   R   R)   R   Ri   R   (   R#   RO   t   expectedR   t   connt   rows(    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   _testG  s    +c         C   sM   |  j  j j j } |  j | j d ƒ d d d d d d d d	 d
 d h
 ƒ d  S(   Ns   ab%ci   i   i   i   i   i   i   i   i	   i
   (   R   R   R)   R   R   t
   startswith(   R#   t   col(    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_startswith_unescapedT  s    c         C   s8   |  j  j j j } |  j | j d d t ƒd h ƒ d  S(   Ns   ab%ct
   autoescapei   (   R   R   R)   R   R   Rž   R   (   R#   RŸ   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_startswith_autoescapeX  s    c         C   sS   |  j  j j j } |  j | j t d ƒ ƒ d d d d d d d d	 d
 d h
 ƒ d  S(   Ns   'ab%c'i   i   i   i   i   i   i   i   i	   i
   (   R   R   R)   R   R   Rž   R   (   R#   RŸ   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_startswith_sqlexpr\  s    c         C   s8   |  j  j j j } |  j | j d d d ƒd h ƒ d  S(   Ns   ab##ct   escapet   #i   (   R   R   R)   R   R   Rž   (   R#   RŸ   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_startswith_escapec  s    c         C   sf   |  j  j j j } |  j | j d d t d d ƒd h ƒ |  j | j d d t d d ƒd h ƒ d  S(   Ns   ab%cR¡   R¤   R¥   i   s   ab#ci   (   R   R   R)   R   R   Rž   R   (   R#   RŸ   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt!   test_startswith_autoescape_escapeg  s    (c         C   sJ   |  j  j j j } |  j | j d ƒ d d d d d d d d	 d
 h	 ƒ d  S(   Ns   e%fgi   i   i   i   i   i   i   i   i	   (   R   R   R)   R   R   t   endswith(   R#   RŸ   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_endswith_unescapedl  s    c         C   sP   |  j  j j j } |  j | j t d ƒ ƒ d d d d d d d d	 d
 h	 ƒ d  S(   Ns   'e%fg'i   i   i   i   i   i   i   i   i	   (   R   R   R)   R   R   R¨   R   (   R#   RŸ   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_endswith_sqlexprp  s    c         C   s8   |  j  j j j } |  j | j d d t ƒd h ƒ d  S(   Ns   e%fgR¡   i   (   R   R   R)   R   R   R¨   R   (   R#   RŸ   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_endswith_autoescapev  s    c         C   s8   |  j  j j j } |  j | j d d d ƒd h ƒ d  S(   Ns   e##fgR¤   R¥   i	   (   R   R   R)   R   R   R¨   (   R#   RŸ   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_endswith_escapez  s    c         C   sf   |  j  j j j } |  j | j d d t d d ƒd h ƒ |  j | j d d t d d ƒd h ƒ d  S(   Ns   e%fgR¡   R¤   R¥   i   s   e#fgi	   (   R   R   R)   R   R   R¨   R   (   R#   RŸ   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_endswith_autoescape_escape~  s    (c         C   sJ   |  j  j j j } |  j | j d ƒ d d d d d d d d	 d
 h	 ƒ d  S(   Ns   b%cdei   i   i   i   i   i   i   i   i	   (   R   R   R)   R   R   t   contains(   R#   RŸ   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_contains_unescapedƒ  s    c         C   s8   |  j  j j j } |  j | j d d t ƒd h ƒ d  S(   Ns   b%cdeR¡   i   (   R   R   R)   R   R   R®   R   (   R#   RŸ   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_contains_autoescape‡  s    c         C   s8   |  j  j j j } |  j | j d d d ƒd h ƒ d  S(   Ns   b##cdeR¤   R¥   i   (   R   R   R)   R   R   R®   (   R#   RŸ   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_contains_escape‹  s    c         C   sf   |  j  j j j } |  j | j d d t d d ƒd h ƒ |  j | j d d t d d ƒd h ƒ d  S(   Ns   b%cdR¡   R¤   R¥   i   s   b#cdi   (   R   R   R)   R   R   R®   R   (   R#   RŸ   (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   test_contains_autoescape_escape  s    (N(   R.   R/   R   R0   t   run_insertst   Nonet   run_deletesR1   R   R!   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_select.pyR’   &  s(   															N(   t    R    R   t
   assertionsR   R   t   schemaR   R   R   R   R   R	   R
   R   R   R   R   R   R   R   R   R   t
   TablesTestR   R3   RT   Rh   Ry   R’   (    (    (    sC   lib/python2.7/site-packages/sqlalchemy/testing/suite/test_select.pyt   <module>   s2   %R_~»