https://t.me/RX1948
Server : Apache
System : Linux iad1-shared-b8-43 6.6.49-grsec-jammy+ #10 SMP Thu Sep 12 23:23:08 UTC 2024 x86_64
User : dh_edsupp ( 6597262)
PHP Version : 8.2.26
Disable Function : NONE
Directory :  /lib/python3/dist-packages/trac/db/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //lib/python3/dist-packages/trac/db/__pycache__/postgres_backend.cpython-310.pyc
o

�k�`A�@snddlmZddlZddlZddlZddlmZddlmZm	Z	ddl
TddlmZddl
mZmZmZddlmZmZdd	lmZmZdd
lmZddlmZddlmZmZmZdd
lm Z z ddl!Z"ddl#Z!ddl!m$Z$m%Z%ddl#m&Z&m'Z'm(Z(m)Z)m*Z*Wn
e+y�eddg��we&e'�e(edd��e(e,e�dd��ee"��-de"j.�Z/dZ0e1e"d��sdZ2Z3zDe4e"j5j6d��3Z2ej7dkr�e�8d�9d�e2�:�ej;�Z3e3r�e3�<d�Z0ne�8d�9d�e2�:�ej=�r�ed�Z0Wd�n1s�wYWn
e>�yYnw[2[3e�?d�Z@dd iZAd!ZBd.d"d#�ZCd$d%�ZDd&d'�ZEd(d)�ZFGd*d+�d+eG�ZHGd,d-�d-ee�ZIdS)/�)�find_libraryN)�DistributionNotFound)�Popen�PIPE)�*)�Option)�ConnectionBase�IDatabaseConnector�parse_connection_uri)�ConnectionWrapper�IterableCursor)�get_pkginfo�lazy)�	close_fds)�Markup)�empty�exception_to_unicode�
to_unicode)�_)�	DataError�ProgrammingError)�
register_type�UNICODE�register_adapter�AsIs�QuotedStringz psycopg2>=2.0 or psycopg2-binary�TraccCstt|��S�N)r�str)�markup�r �:/usr/lib/python3/dist-packages/trac/db/postgres_backend.py�<lambda>-sr"cCstd�S)Nz'')r)rr r r!r".s�version�
libpq_version�rb�ntz�
                            \0(
                            (?:/[^/\0]+)*/?
                            libpq\.(?:so\.[0-9]+|[0-9]+\.dylib)
                            )\0
                        zutf-8�z\0libpq\.dll\0�libpqz([/_%])�int64�bigint)�	r'rcs4dd��|||||d�}d��fdd�|��D��S)z*Quote the parameters and assemble the DSN.cSs*t|t�s	t|�}d|�dd��dd�S)Nz'%s'�\z\\�'z\')�
isinstancer�replace)�valuer r r!�quoteVs
zassemble_pg_dsn.<locals>.quote)�dbname�user�password�host�port� c3s(�|]\}}|rd|�|�fVqdS)z%s=%sNr )�.0�namer0�r1r r!�	<genexpr>]s��z"assemble_pg_dsn.<locals>.<genexpr>)�join�items)�pathr3r4r5r6�dsnr r:r!�assemble_pg_dsnTs��r@cCsd|�dd�S)N�"%s"�"z"")r/)�
identifierr r r!�_quoteasrDcCs>|rt|d�\}}|dkr||fSt|d�\}}|||fSdS)Ni'�
�d)�divmod)�ver�major�minor�patchr r r!�_version_tuplees
�rLcCs.|rt|t�st|�}|rd�tt|��SdS)N�.z	(unknown))r.�tuplerLr<�mapr)rHr r r!�_version_stringqs
rPc@s�eZdZdZee�dZedddd�Zdd�Z	d	d
�Z
dddddifdd
�Zdd�Zddddddifdd�Z
dddddifdd�Zdddddifdd�Zdd�Zdd�Zdd�Zdd�Zedd��Zd d!�ZdS)"�PostgreSQLConnectorz�Database connector for PostgreSQL.

    Database URLs should be of the form:
    {{{
    postgres://user[:password]@host[:port]/database[?schema=my_schema]
    }}}
    F�trac�pg_dump_path�pg_dumpz1Location of pg_dump for Postgres database backupscCsdt|j�|_dS)Nz#server: (not-connected), client: %s)rP�_client_version�_postgresql_version��selfr r r!�__init__�s��zPostgreSQLConnector.__init__ccs�dVdS)N)�postgresr'r rWr r r!�get_supported_schemes�s�
z)PostgreSQLConnector.get_supported_schemesNcCsv|�dd�t|||||||�}t|j�}	t|j�}
|js9|jtkr/td|	tt�d�}t|��d|	|
f|_	d|_|S)N�schema�publiczOPostgreSQL version is %(version)s. Minimum required version is %(min_version)s.)r#�min_versionzserver: %s, client: %sT)
�
setdefault�PostgreSQLConnectionrP�server_versionrU�required�min_postgresql_versionr�	TracErrorrV)rXr>�logr3r4r5r6�params�cnx�
server_ver�
client_ver�errorr r r!�get_connection�s$�


�
�z"PostgreSQLConnector.get_connectioncCstSr)�psycopgrWr r r!�get_exceptions��z"PostgreSQLConnector.get_exceptionsc	
	Cs�|�|||||||�}	|	��}
|	jr)|	jdkr)|
�dt|	j��|
�d|	jf�|dur3ddlm}|D]}|�|�D]}|
�|�q<q5|	��dS)Nr]zCREATE SCHEMA �SET search_path TO %sr)r\)rk�cursorr\�executerD�trac.db_default�to_sql�commit)
rXr>r\rer3r4r5r6rfrgrp�table�stmtr r r!�init_db�s��zPostgreSQLConnector.init_dbc
	Csh|�|||||||�}|jr|jdkr|�dt|j��n|��D]}	|�dt|	��q"|��dS)Nr]zDROP SCHEMA %s CASCADEz
DROP TABLE %s)rkr\rqrD�get_table_namesrt)
rXr>rer3r4r5r6rfrgrur r r!�
destroy_db�s�zPostgreSQLConnector.destroy_dbc
	Cs:|�|||||||�}|��}	|	�d|jf�|	��dS)NzU
            SELECT EXISTS(SELECT 1 FROM pg_namespace WHERE nspname=%s);
            r)rkrprqr\�fetchone)
rXr>rer3r4r5r6rfrgrpr r r!�	db_exists�s��zPostgreSQLConnector.db_existsc	cs2�dt|j�g}g}|jD]-}|j}t�||�}|jrd}t|j�dkr/|j|jvr/|d7}|�	dt|j�|f�qt|j�dkrZ|�	dt|jd�d�
d	d
�|jD��f�|�	d�
|�d�d
�
|�V|jD])}|jrtdnd}d|td|jd�
|j�f�t|j�d�
dd
�|jD��fVqmdS)NzCREATE TABLE %s (�SERIALr'z PRIMARY KEYz	    %s %sz"    CONSTRAINT %s PRIMARY KEY (%s)�_pk�,cs��|]}t|�VqdSr�rD�r8�colr r r!r;���z-PostgreSQLConnector.to_sql.<locals>.<genexpr>z,
z
)�
�UNIQUE�zCREATE %s INDEX %s ON %s (%s)z	%s_%s_idxrcsrrr�r�r r r!r;�r�)
rDr9�columns�type�	_type_map�get�auto_increment�len�key�appendr<�indices�unique)rXru�sql�coldefs�column�ctype�indexr�r r r!rs�s:�
��
���zPostgreSQLConnector.to_sqlccsx�g}t|���D]\}\}}t�||�}|t�||�kr$|�||f�q	|r:dt|�d�dd�|D��fVdSdS)z�Yield SQL statements altering the type of one or more columns of
        a table.

        Type changes are specified as a `columns` dict mapping column names
        to `(from, to)` SQL type tuples.
        zALTER TABLE %s %sz, css$�|]
\}}dt|�|fVqdS)zALTER COLUMN %s TYPE %sNr�)r8r9�type_r r r!r;�s��z9PostgreSQLConnector.alter_column_types.<locals>.<genexpr>N)�sortedr=r�r�r�rDr<)rXrur��alterationsr9�from_�tor r r!�alter_column_types�s ��
��
��z&PostgreSQLConnector.alter_column_typesc

Cs�|jj�dd�}t|�\}}|�di�}|�dd�tj�|d�}|jddd	d
dg}d|vr8|�	d
|dg�|�d|�d��}|r[|�	d|g�d|vr[|�	dt
|�dd��g�|�	dd|dg�|d7}|�	d||g�tj��}	d|vr�t
|d�|	d<z
t
||	ttd�}
Wnty�}zttd|jt|�d���d}~ww|
��d}|
jdkr�ttdt|���d ���tj�|�s�ttd!���|S)"NrR�databaserfr\r]r>z-Cz	--insertsz-xz-Z�8r3z-Ur5z-h�/z-pr6�5432z-nrAz.gzz-fr4�
PGPASSWORD)�env�stderrr�Unable to run %(path)s: %(msg)s�r>�msgr'rzpg_dump failed: %(msg)s)r�zNo destination file created)r��configr�r
r_�osr>�basenamerS�extendr�environ�copyrrr�OSErrorrdrr�communicate�
returncoder�strip�exists)
rX�	dest_file�db_url�scheme�db_prop�	db_params�db_name�argsr5r��p�e�errmsgr r r!�backup�sH
���

�zPostgreSQLConnector.backupccs�d|jfVdtfVdS)N�
PostgreSQL�psycopg2)rV�psycopg2_versionrWr r r!�get_system_info s�z#PostgreSQLConnector.get_system_infoc
Cs�d}ttd�rt��}t|�Str@zt�t�}|��}Wt|�Sty?}z|j�	dt
|dd��WYd}~t|�Sd}~wwt|�S)Nr$z3Exception caught while retrieving libpq's version%sT)�	traceback)�hasattrrlr$�_libpq_pathname�ctypes�CDLL�PQlibVersion�	Exceptionre�warningrrL)rXr#�libr�r r r!rU$s"
	�

�
���z#PostgreSQLConnector._client_versionc
CsVzt|jdgttd�}Wnty$}zttd|jt|�d���d}~ww|��dS)Nz	--version)�stdoutrr�r�r)	rrSrrr�rdrrr�)rXr�r�r r r!�_pgdump_version3s
����z#PostgreSQLConnector._pgdump_version)�__name__�
__module__�__qualname__�__doc__�
implementsr	rbrrSrYr[rkrmrwryr{rsr�r�r�rrUr�r r r r!rQzs:�
�
�
�
�
'
rQc@s�eZdZdZdZdddddifdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zd/dd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd/d)d*�Zd+d,�Zed-d.��ZdS)0r`z"Connection wrapper for PostgreSQL.TNc		Cs�|�d�r|dd�}d|vr|d}t�t|||||��}|�d�|�dd�|_|jdkrOz|���d|jf�|�	�Wnt
tfyN|��Ynwt
�|||�dS)Nr�r'r5rr\r]ro)�
startswithrl�connectr@�set_client_encodingr�r\rprqrtrr�rollbackrrY)	rXr>rer3r4r5r6rfrgr r r!rYCs"
�

�zPostgreSQLConnection.__init__cCst|j��|j�Sr)rrgrprerWr r r!rpXszPostgreSQLConnection.cursorcCsd|t�||�fS)NzCAST(%s AS %s))r�r�)rXr�r�r r r!�cast[szPostgreSQLConnection.castcGs
d�|�S)Nz||)r<)rXr�r r r!�concat_s
zPostgreSQLConnection.concatcCs"|�d|�|�|�|�f�dS)NzA
            ALTER TABLE %s DROP COLUMN IF EXISTS %s
            �rqr1�rXrur�r r r!�drop_columnbs
�z PostgreSQLConnection.drop_columncCs|�d|�|��dS)NzDROP TABLE IF EXISTS r�)rXrur r r!�
drop_tablegszPostgreSQLConnection.drop_tablecCs|�d|f�}dd�|D�S)Nz�
            SELECT column_name FROM information_schema.columns
            WHERE table_schema=current_schema() AND table_name=%s
            ORDER BY ordinal_position
            cS�g|]}|d�qS�rr �r8�rowr r r!�
<listcomp>p�z9PostgreSQLConnection.get_column_names.<locals>.<listcomp>�rq�rXru�rowsr r r!�get_column_namesjs�z%PostgreSQLConnection.get_column_names�idc	Cs(|�d|�|�||��f�|��dS)NzSELECT CURRVAL(%s)r)rqr1�_sequence_namerz�rXrprur�r r r!�get_last_idrs�z PostgreSQLConnection.get_last_idcs,dd���dd�D�}t�fdd�|D��S)NcSs g|]\}|dtd���qS)N�_id_seq)r��r8r9r r r!r�xs z;PostgreSQLConnection.get_sequence_names.<locals>.<listcomp>a
                SELECT c.relname
                FROM pg_class c
                INNER JOIN pg_namespace n ON c.relnamespace = n.oid
                WHERE n.nspname = ANY (current_schemas(false))
                AND c.relkind='S' AND c.relname LIKE %s ESCAPE '!'
                )z
%!_id!_seqc3s �|]}|���vr|VqdSr)rxr�rWr r!r;s�z:PostgreSQLConnection.get_sequence_names.<locals>.<genexpr>)rqr�)rX�seqsr rWr!�get_sequence_namesws�z'PostgreSQLConnection.get_sequence_namescCs|�d�}dd�|D�S)Nzm
            SELECT table_name FROM information_schema.tables
            WHERE table_schema=current_schema()cSr�r�r r�r r r!r��r�z8PostgreSQLConnection.get_table_names.<locals>.<listcomp>r�)rXr�r r r!rx�s
z$PostgreSQLConnection.get_table_namescCs|�d|f�}|ddS)Nz�
            SELECT EXISTS (SELECT * FROM information_schema.columns
                           WHERE table_schema=current_schema()
                           AND table_name=%s)
            rr�r�r r r!�	has_table�s�zPostgreSQLConnection.has_tablecC�dS)NzILIKE %s ESCAPE '/'r rWr r r!�like�rnzPostgreSQLConnection.likecCst�d|�S)Nz/\1)�_like_escape_re�sub)rX�textr r r!�like_escape��z PostgreSQLConnection.like_escapecCs|j��}|�d�dS)NzSELECT 1)rgrprq)rXrpr r r!�ping�s
zPostgreSQLConnection.pingcCr�)NzLIKE %s ESCAPE '/'r rWr r r!�prefix_match�rnz!PostgreSQLConnection.prefix_matchcCs|�|�dS)N�%)r�)rX�prefixr r r!�prefix_match_value�sz'PostgreSQLConnection.prefix_match_valuecCst|�Srr�)rXrCr r r!r1�szPostgreSQLConnection.quotecCs`|��}|�d|jf�|��D]
\}|�d|�q|��}|D]}|�d|�|��q!|S)Nzu
            SELECT sequence_name FROM information_schema.sequences
            WHERE sequence_schema=%s
            z ALTER SEQUENCE %s RESTART WITH 1zDELETE FROM )rprqr\�fetchallrxr1)rXrp�seq�table_namesr9r r r!�reset_tables�s�z!PostgreSQLConnection.reset_tablesc	Cs4|�d|�|�|�|�f|�|�||��f�dS)Nz,SELECT SETVAL(%%s, (SELECT MAX(%s) FROM %s)))rqr1r�r�r r r!�update_sequence�s
��z$PostgreSQLConnection.update_sequencecCsd||fS)Nz	%s_%s_seqr r�r r r!r��r�z#PostgreSQLConnection._sequence_namecCst|jj�Sr)rLrgrarWr r r!ra�sz#PostgreSQLConnection.server_version)r�)r�r�r�r��poolablerYrpr�r�r�r�r�r�r�rxr�r�r�r�r�r�r1r�r�r�rrar r r r!r`>s6
�


r`)NNNN)J�ctypes.utilrr�r��re�
pkg_resourcesr�
subprocessrr�	trac.core�trac.configr�trac.db.apirr	r
�trac.db.utilrr�	trac.utilr
r�trac.util.compatr�trac.util.htmlr�trac.util.textrrr�trac.util.translationrr�rl�psycopg2.extensionsrrrrrrr�ImportErrorr�r��__version__r�r�r��_f�_match�open�_psycopg�__file__r9�search�encode�read�VERBOSE�group�
IGNORECASE�AttributeError�compiler�r�rcr@rDrLrP�	ComponentrQr`r r r r!�<module>s� �
�

�
������
�

	E

https://t.me/RX1948 - 2025