
v^                 @   s   d  d l  m Z d  d l m Z d  d l m Z d d d d d d	 g Z Gd
 d   d e  Z Gd d   d e  Z Gd d   d e  Z	 Gd d   d e  Z
 Gd d   d e  Z Gd d   d e  Z Gd d	   d	 e  Z d S)    )Index)NotSupportedError)cached_property	BrinIndex
BTreeIndexGinIndex	GistIndex	HashIndexSpGistIndexc                   sO   e  Z d  Z e d d    Z d   f d d  Z d d   Z d d	   Z   S)
PostgresIndexc             C   s!   t  j t t  j  t |  j  S)N)r   max_name_lengthlensuffix)self r   A/tmp/pip-build-8lau8j11/django/django/contrib/postgres/indexes.pyr      s    zPostgresIndex.max_name_length c                so   |  j  |  t   j | | d d |  j | } |  j   } | rk d d j |  | j d f | j d <| S)Nusingz	 USING %szWITH (%s) %sz, extra)check_supportedsuper
create_sqlr   get_with_paramsjoinparts)r   modelschema_editorr   kwargsZ	statementwith_params)	__class__r   r   r      s    %zPostgresIndex.create_sqlc             C   s   d  S)Nr   )r   r   r   r   r   r       s    zPostgresIndex.check_supportedc             C   s   g  S)Nr   )r   r   r   r   r   #   s    zPostgresIndex.get_with_params)__name__
__module____qualname__r   r   r   r   r   r   r   )r   r   r      s   r   c                   s^   e  Z d  Z d Z d d d d   f d d  Z   f d d   Z d	 d
   Z d d   Z   S)r   ZbrinautosummarizeNpages_per_rangec               sJ   | d  k	 r$ | d k r$ t  d   | |  _ | |  _ t   j |   d  S)Nr   z2pages_per_range must be None or a positive integer)
ValueErrorr#   r$   r   __init__)r   r#   r$   r   )r   r   r   r&   *   s
    		zBrinIndex.__init__c                s]   t    j   \ } } } |  j d  k	 r4 |  j | d <|  j d  k	 rP |  j | d <| | | f S)Nr#   r$   )r   deconstructr#   r$   )r   pathargsr   )r   r   r   r'   1   s    zBrinIndex.deconstructc             C   s)   |  j  r% | j j j r% t d   d  S)Nz2BRIN option autosummarize requires PostgreSQL 10+.)r#   
connectionfeaturesZhas_brin_autosummarizer   )r   r   r   r   r   r   9   s    zBrinIndex.check_supportedc             C   s\   g  } |  j  d  k	 r5 | j d |  j  r- d n d  |  j d  k	 rX | j d |  j  | S)Nzautosummarize = %sonoffzpages_per_range = %d)r#   appendr$   )r   r   r   r   r   r   =   s     zBrinIndex.get_with_params)r    r!   r"   r   r&   r'   r   r   r   r   )r   r   r   '   s
   c                   sL   e  Z d  Z d Z d d   f d d  Z   f d d   Z d d	   Z   S)
r   Zbtree
fillfactorNc               s   | |  _  t   j |   d  S)N)r/   r   r&   )r   r/   r   )r   r   r   r&   I   s    	zBTreeIndex.__init__c                sA   t    j   \ } } } |  j d  k	 r4 |  j | d <| | | f S)Nr/   )r   r'   r/   )r   r(   r)   r   )r   r   r   r'   M   s    zBTreeIndex.deconstructc             C   s-   g  } |  j  d  k	 r) | j d |  j   | S)Nzfillfactor = %d)r/   r.   )r   r   r   r   r   r   S   s    zBTreeIndex.get_with_params)r    r!   r"   r   r&   r'   r   r   r   )r   r   r   F   s   c                   sR   e  Z d  Z d Z d d d d   f d d  Z   f d d   Z d	 d
   Z   S)r   Zgin
fastupdateNgin_pending_list_limitc               s&   | |  _  | |  _ t   j |   d  S)N)r0   r1   r   r&   )r   r0   r1   r   )r   r   r   r&   ]   s    		zGinIndex.__init__c                s]   t    j   \ } } } |  j d  k	 r4 |  j | d <|  j d  k	 rP |  j | d <| | | f S)Nr0   r1   )r   r'   r0   r1   )r   r(   r)   r   )r   r   r   r'   b   s    zGinIndex.deconstructc             C   s\   g  } |  j  d  k	 r) | j d |  j   |  j d  k	 rX | j d |  j rP d n d  | S)Nzgin_pending_list_limit = %dzfastupdate = %sr,   r-   )r1   r.   r0   )r   r   r   r   r   r   j   s     zGinIndex.get_with_params)r    r!   r"   r   r&   r'   r   r   r   )r   r   r   Z   s   c                   sR   e  Z d  Z d Z d d d d   f d d  Z   f d d   Z d	 d
   Z   S)r   Zgist	bufferingNr/   c               s&   | |  _  | |  _ t   j |   d  S)N)r2   r/   r   r&   )r   r2   r/   r   )r   r   r   r&   v   s    		zGistIndex.__init__c                s]   t    j   \ } } } |  j d  k	 r4 |  j | d <|  j d  k	 rP |  j | d <| | | f S)Nr2   r/   )r   r'   r2   r/   )r   r(   r)   r   )r   r   r   r'   {   s    zGistIndex.deconstructc             C   s\   g  } |  j  d  k	 r5 | j d |  j  r- d n d  |  j d  k	 rX | j d |  j  | S)Nzbuffering = %sr,   r-   zfillfactor = %d)r2   r.   r/   )r   r   r   r   r   r      s     zGistIndex.get_with_params)r    r!   r"   r   r&   r'   r   r   r   )r   r   r   s   s   c                   sL   e  Z d  Z d Z d d   f d d  Z   f d d   Z d d	   Z   S)
r	   hashr/   Nc               s   | |  _  t   j |   d  S)N)r/   r   r&   )r   r/   r   )r   r   r   r&      s    	zHashIndex.__init__c                sA   t    j   \ } } } |  j d  k	 r4 |  j | d <| | | f S)Nr/   )r   r'   r/   )r   r(   r)   r   )r   r   r   r'      s    zHashIndex.deconstructc             C   s-   g  } |  j  d  k	 r) | j d |  j   | S)Nzfillfactor = %d)r/   r.   )r   r   r   r   r   r      s    zHashIndex.get_with_params)r    r!   r"   r   r&   r'   r   r   r   )r   r   r	      s   c                   sL   e  Z d  Z d Z d d   f d d  Z   f d d   Z d d	   Z   S)
r
   Zspgistr/   Nc               s   | |  _  t   j |   d  S)N)r/   r   r&   )r   r/   r   )r   r   r   r&      s    	zSpGistIndex.__init__c                sA   t    j   \ } } } |  j d  k	 r4 |  j | d <| | | f S)Nr/   )r   r'   r/   )r   r(   r)   r   )r   r   r   r'      s    zSpGistIndex.deconstructc             C   s-   g  } |  j  d  k	 r) | j d |  j   | S)Nzfillfactor = %d)r/   r.   )r   r   r   r   r   r      s    zSpGistIndex.get_with_params)r    r!   r"   r   r&   r'   r   r   r   )r   r   r
      s   N)Zdjango.db.modelsr   Zdjango.db.utilsr   Zdjango.utils.functionalr   __all__r   r   r   r   r   r	   r
   r   r   r   r   <module>   s   	