
    R
h
                       d Z ddlmZ ddlZddlmZ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 erddlmZ  G d d          Z G d deee                   Z G d deee                   Z G d de          ZdS )z#
CockroachDB-specific connections.
    )annotationsN)TYPE_CHECKINGAny   )errors)Row   )adapters)
Connection)AdaptersMap)ConnectionInfo)AsyncConnection)PGconnc                  t    e Zd ZU ded<   ded<   edd	            Zedd            Zedd            ZddZ	dS )_CrdbConnectionMixinzAdaptersMap | None	_adaptersr   pgconnconn/Connection[Any] | AsyncConnection[Any] | PGconnreturnboolc                    t          |t          t          f          r|j        }t	          |                    d                    S )zS
        Return `!True` if the server connected to `!conn` is CockroachDB.
        s   crdb_version)
isinstancer   r   r   r   parameter_status)clsr   s     b/var/www/html/01_SiteInternet/03_Maps/venv/lib/python3.11/site-packages/psycopg/crdb/connection.pyis_crdbz_CrdbConnectionMixin.is_crdb   s>    
 dZ9:: 	;DD))/::;;;    r   c                P    | j         st          t                    | _         | j         S N)r   r   r
   selfs    r   r
   z_CrdbConnectionMixin.adapters&   s#    ~ 	3(22DN~r   CrdbConnectionInfoc                *    t          | j                  S r    )r#   r   r!   s    r   infoz_CrdbConnectionMixin.info.   s    !$+...r   Nonec                b    |                      | j                  rt          j        d          d S )Nz/CockroachDB doesn't support prepared statements)r   r   eNotSupportedErrorr!   s    r   
_check_tpcz_CrdbConnectionMixin._check_tpc2   s7    <<$$ 	Y%&WXXX	Y 	Yr   N)r   r   r   r   )r   r   )r   r#   )r   r&   )
__name__
__module____qualname____annotations__classmethodr   propertyr
   r%   r*    r   r   r   r      s         !!!!NNN< < < [<    X / / / X/Y Y Y Y Y Yr   r   c                      e Zd ZdZdZdS )CrdbConnectionz=
    Wrapper for a connection to a CockroachDB database.
    psycopg.crdbNr+   r,   r-   __doc__r1   r   r   r3   r3   7              JJJr   r3   c                      e Zd ZdZdZdS )AsyncCrdbConnectionzD
    Wrapper for an async connection to a CockroachDB database.
    r4   Nr5   r1   r   r   r9   r9   ?   r7   r   r9   c                  ^    e Zd ZdZdZedd            Zedd            Zedd
            ZdS )r#   zV
    `~psycopg.ConnectionInfo` subclass to get info about a CockroachDB database.
    r4   r   strc                    dS )NCockroachDBr1   r!   s    r   vendorzCrdbConnectionInfo.vendorN   s    }r   intc                    |                      d          }|st          j        d          |                     |          }|t          j        d|          |S )z
        Return the CockroachDB server version connected.

        Return a number in the PostgreSQL format (e.g. 21.2.10 -> 210210).
        crdb_versionz''crdb_version' parameter status not setNz)couldn't parse CockroachDB version from: )r   r(   InternalErrorparse_crdb_versionInterfaceError)r"   sververs      r   server_versionz!CrdbConnectionInfo.server_versionR   sh     $$^44 	M/"KLLL%%d++;"#Wt#W#WXXX
r   rE   
int | Nonec                   t          j        d|          }|sd S t          |                    d                    dz  t          |                    d                    dz  z   t          |                    d                    z   S )Nz\bv(\d+)\.(\d+)\.(\d+)r	   i'  r   d      )researchr?   group)r"   rE   ms      r   rC   z%CrdbConnectionInfo.parse_crdb_versionc   sk    I/66 	41771::&QWWQZZ3)>>QWWQZZPPr   N)r   r;   )r   r?   )rE   r;   r   rH   )	r+   r,   r-   r6   r0   r>   rG   r/   rC   r1   r   r   r#   r#   G   s           J   X    X  Q Q Q [Q Q Qr   r#   )r6   
__future__r   rL   typingr   r    r   r(   rowsr   _typesr
   
connectionr   _adapters_mapr   _connection_infor   connection_asyncr   pq.abcr   r   r3   r9   r#   r1   r   r   <module>rZ      s    # " " " " " 				 % % % % % % % %                   # # # # # # ' ' ' ' ' ' - - - - - - . . . . . .  Y Y Y Y Y Y Y Y>         ):c?               .0D      "Q "Q "Q "Q "Q "Q "Q "Q "Q "Qr   