B
    ¦0H[Å  ã               @   sl   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  	¡ dd„ ƒZ
e  	¡ dd	„ ƒZd
d„ ZdS )é    N)ÚProgrammingError)Úregister_hstore)Úconnections)ÚNO_DB_ALIASc          	   C   sd   t |   ¡ �N}| d¡ g }g }x(|D ] }| |d ¡ | |d ¡ q&W t|ƒt|ƒf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   úcC:\Users\HIRONO~1\AppData\Local\Temp\pip-install-6bm3nxem\django\django\contrib\postgres\signals.pyÚget_hstore_oids   s    
r   c          	   C   s4   t |   ¡ �}| d¡ tdd„ |D ƒƒ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 y$t| jƒ\}}t| jd||d� W n tk
rP   Y nX y.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   