U
    d                     @   sh   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   sl   t |   V}|d g }g }|D ] }||d  ||d  q$t|t|fW  5 Q R  S Q R X d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   C/tmp/pip-unpacked-wheel-7vj2equ7/django/contrib/postgres/signals.pyget_hstore_oids   s    r   c              
   C   s@   t |   *}|d tdd |D W  5 Q R  S Q R X d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 S z$t| j\}}t| jd||d W n tk
rP   Y nX z.t| j}tj	
|dtj}tj	|d  W n tk
r   Y nX d S )NZ
postgresqlT)Zglobally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   

