
v^                 @   s   d  d l  Z  d  d l Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z e  j	   d d    Z
 e  j	   d d	    Z d
 d   Z d S)    N)ProgrammingError)register_hstore)connections)NO_DB_ALIASc             C   s   t  |  j   i } | j d  g  } g  } x0 | D]( } | j | d  | j | d  q3 Wt |  t |  f SWd QRXd S)z$Return hstore and hstore array OIDs.zlSELECT t.oid, typarray FROM pg_type t JOIN pg_namespace ns ON typnamespace = ns.oid WHERE typname = 'hstore'r      N)r   cursorexecuteappendtuple)connection_aliasr   oids
array_oidsrow r   A/tmp/pip-build-8lau8j11/django/django/contrib/postgres/signals.pyget_hstore_oids   s    r   c          
   C   sB   t  |  j   + } | j d  t d d   | D  SWd QRXd S)zReturn citext array OIDs.z5SELECT typarray FROM pg_type WHERE typname = 'citext'c             s   s   |  ] } | d  Vq d S)r   Nr   ).0r   r   r   r   	<genexpr>"   s    z"get_citext_oids.<locals>.<genexpr>N)r   r   r   r
   )r   r   r   r   r   get_citext_oids   s    r   c             K   s   |  j  d k s |  j t k r" d  Sy8 t |  j  \ } } t |  j d d d | d | Wn t k
 rn Yn XyA t |  j  } t j	 j
 | d t j  } t j	 j | d   Wn t k
 r Yn Xd  S)NZ
postgresqlZgloballyToidZ	array_oidzcitext[])vendoraliasr   r   r   
connectionr   r   psycopg2
extensionsZnew_array_typeSTRINGZregister_type)r   kwargsr   r   Zcitext_oidsZ
array_typer   r   r   register_type_handlers%   s    #	r   )	functoolsr   r   Zpsycopg2.extrasr   Z	django.dbr   Zdjango.db.backends.base.baser   	lru_cacher   r   r   r   r   r   r   <module>   s   