HEX
Server: Apache
System: Linux 185.122.168.184.host.secureserver.net 5.14.0-570.60.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Nov 5 05:00:59 EST 2025 x86_64
User: barbeatleanalyti (1024)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //var/opt/nydus/ops/mysql/connector/django/__pycache__/introspection.cpython-39.pyc
a

�,�h�J�@s�dZddlmZddlmZmZmZmZmZm	Z	m
Z
ddlZddlm
ZddlmZmZmZddlmZddlmZdd	lmZer�dd
lmZedejd�Zed
kr�edd�Zn
edd�ZGdd�de�ZdS)zDatabase Introspection.�)�
namedtuple)�
TYPE_CHECKING�Any�Dict�List�Optional�Set�TupleN)�VERSION)�BaseDatabaseIntrospection�	FieldInfo�	TableInfo)�Index)�
OrderedSet)�	FieldType)�
CursorWrapperr)�extra�is_unsigned�has_json_constraint���r�InfoLinezNcol_name data_type max_len num_prec num_scale extra column_default is_unsignedzXcol_name data_type max_len num_prec num_scale extra column_default collation is_unsignedc&s�eZdZdZejdejdejdejdej	dej
dejdejdej
dejdejd	ejd
ejdejdejdejdejdejdejd
iZeeed��fd
d�Zdeed�dd�Zdeeed�dd�Zdee e!e ee"ffd�dd�Z#dee$e!d�dd�Z%d)dee&ee eefd�dd�Z'dee ee(eeffd�dd�Z)deee(eeefd�d d!�Z*deed�d"d#�Z+e&e,ee-d$�d%d&�Z.dee ee&fd�d'd(�Z/�Z0S)*�DatabaseIntrospectionz5Encapsulate backend-specific introspection utilities.Z	TextFieldZDecimalFieldZ	DateFieldZ
DateTimeFieldZ
FloatField�IntegerField�BigIntegerField�SmallIntegerFieldZ	CharFieldZ	TimeField)�	data_type�description�returncstt��||�}d|jvr<|dkr$dS|dkr0dS|dkr<dS|jrf|dkrNdS|dkrZd	S|dkrfd
S|jrpdS|S)N�auto_incrementrZ	AutoFieldrZBigAutoFieldrZSmallAutoFieldZPositiveBigIntegerFieldZPositiveIntegerFieldZPositiveSmallIntegerFieldZ	JSONField)�super�get_field_typerrr)�selfrrZ
field_type��	__class__��W/opt/nydus/tmp/pip-target-wkfpz8uv/lib64/python/mysql/connector/django/introspection.pyr"ls$
z$DatabaseIntrospection.get_field_typer)�cursorrcCs|�d�dd�|��D�S)z>Return a list of table and view names in the current database.zSHOW FULL TABLEScSs*g|]"}t|dddd��|d���qS)r�t�v)z
BASE TABLEZVIEW�)r
�get)�.0�rowr&r&r'�
<listcomp>�s�z8DatabaseIntrospection.get_table_list.<locals>.<listcomp>)�execute�fetchall)r#r(r&r&r'�get_table_list�s
�z$DatabaseIntrospection.get_table_list)r(�
table_namercCs�i}|�d|g�|��}|r&|dnd}tdkrB|�d|g�n|�d||g�dd�|��D�}|�d	|jj�|��d
��ttt	d�dd
�}g}|j
D�]}	||	d}
tdk�r6|�tg|	dd��||
j
�p�|	d�||
j�p�|	d�||
j��p|	d�|	d�|
j�|
j�|
j�|	d|v�R��q�|�tg|	dd��||
j
��p\|	d�||
j��pp|	d�||
j��p�|	d�|	d�|
j�|
j�|
j�|
j�|	d|v�R��q�|S)zj
        Return a description of the table with the DB-API cursor.description
        interface."
        z�
            SELECT  table_collation
            FROM    information_schema.tables
            WHERE   table_schema = DATABASE()
            AND     table_name = %s
        r�ra�
                SELECT
                    column_name, data_type, character_maximum_length,
                    numeric_precision, numeric_scale, extra, column_default,
                    CASE
                        WHEN column_type LIKE '%% unsigned' THEN 1
                        ELSE 0
                    END AS is_unsigned
                FROM information_schema.columns
                WHERE table_name = %s AND table_schema = DATABASE()
            ax
                SELECT
                    column_name, data_type, character_maximum_length,
                    numeric_precision, numeric_scale, extra, column_default,
                    CASE
                        WHEN collation_name = %s THEN NULL
                        ELSE collation_name
                    END AS collation_name,
                    CASE
                        WHEN column_type LIKE '%% unsigned' THEN 1
                        ELSE 0
                    END AS is_unsigned
                FROM information_schema.columns
                WHERE table_name = %s AND table_schema = DATABASE()
            cSsi|]}|dt|��qS)r)r)r-�liner&r&r'�
<dictcomp>��z?DatabaseIntrospection.get_table_description.<locals>.<dictcomp>zSELECT * FROM z LIMIT 1)�ircSs|durt|�S|S�N)�int)r8r&r&r'�to_int�sz;DatabaseIntrospection.get_table_description.<locals>.to_intNr���)r0�fetchone�DJANGO_VERSIONr1�
connection�ops�
quote_namerrr:r�appendr�max_lenZnum_precZ	num_scaleZcolumn_defaultrrZ	collation)r#r(r3Zjson_constraintsr.Zdefault_column_collation�
field_infor;�fieldsr5�infor&r&r'�get_table_description�s��	���

��������	
��
��������	�

��z+DatabaseIntrospection.get_table_descriptioncCs�|�d|jj�|����t|���}t�}|D]}|ddkr0|�|d�q0i}|D]d}|d|vrjqX|d|vr�ddd�||d<|ddkr�d	||dd
<|dsXd	||dd<qX|S)zReturn indexes from table.�SHOW INDEX FROM rr+rr<F)�primary_key�uniqueZPRIMARYTrKrL)r0rArBrC�listr1�set�add)r#r(r3�rowsZmulticol_indexesr.�indexesr&r&r'�get_indexes�s"z!DatabaseIntrospection.get_indexescCs2|�||���D]}|ddr|dSqdS)zP
        Returns the name of the primary key column for the given table
        r+rKrN)rR�items)r#r(r3�columnr&r&r'�get_primary_key_columnsz,DatabaseIntrospection.get_primary_key_columnr&)r(r3�table_fieldsrcCs2|�||�D] }d|jvr||jd�gSqgS)Nr )�tablerT)rIr�name)r#r(r3rVrFr&r&r'�
get_sequencess
z#DatabaseIntrospection.get_sequencescCs0|�||�}i}|D]\}}}||f||<q|S)z�
        Return a dictionary of {field_name: (field_name_other_table, other_table)}
        representing all relationships to the given table.
        )�get_key_columns)r#r(r3�constraintsZ	relationsZmy_fieldnameZother_tableZother_fieldr&r&r'�
get_relationss
z#DatabaseIntrospection.get_relationscCs$g}|�d|g�|�|���|S)z�
        Return a list of (column_name, referenced_table_name, referenced_column_name)
        for all key columns in the given table.
        a@
            SELECT column_name, referenced_table_name, referenced_column_name
            FROM information_schema.key_column_usage
            WHERE table_name = %s
                AND table_schema = DATABASE()
                AND referenced_table_name IS NOT NULL
                AND referenced_column_name IS NOT NULL)r0�extendr1)r#r(r3Zkey_columnsr&r&r'rZ,s�
z%DatabaseIntrospection.get_key_columnscCs,|�d|g�|��}|s$|jjjS|dS)z�
        Retrieve the storage engine for a given table. Return the default
        storage engine if the table doesn't exist.
        zBSELECT engine FROM information_schema.tables WHERE table_name = %sr)r0r?rA�featuresZ_mysql_storage_engine)r#r(r3�resultr&r&r'�get_storage_engineAs�
z(DatabaseIntrospection.get_storage_engine)�check_clause�columnsrcCs~t�}t�|�d}dd�|��D�}|D]N}|jtjjkr*|jj�	|j
�|j
kr*|j
dd�|vr*|�|j
dd��q*|S)Nrcss|]}|js|VqdSr9)Z
is_whitespace)r-�tokenr&r&r'�	<genexpr>Vr7zBDatabaseIntrospection._parse_constraint_columns.<locals>.<genexpr>r+���)r�sqlparse�parse�flatten�ttype�tokens�NamerArBrC�valuerO)r#rarbZ
check_columns�	statementrjrcr&r&r'�_parse_constraint_columnsQs���z/DatabaseIntrospection._parse_constraint_columnscCs|i}d}|�||g�|��D]`\}}}}||vrlt�dddd|rJ||fndd�||<|jjjrlg||d<||d�|�qd}	|�|	|g�|��D]F\}}
|
��dkr�d	||d
<d	||d<q�|
��dkr�d	||d<q�|jjj�rtd}d
d�|�	||�D�}d}	|�|	|g�|��D]P\}}
|�
|
|�}t|�|hk�rZ|d7}d|�d�}|dddd	dd�||<�q"|�d|jj�
|����dd�|��D�D]�\}}}}}}}||v�r�t�ddddd�||<|jjj�r�g||d<d	||d<|dk�rtjn|��||d<||d�|�|jjj�r�||d�|dk�rNdnd��q�|��D]}t|d�|d<�q`|S)zu
        Retrieve any constraints or keys (unique, pk, fk, check, index) across
        one or more columns.
        aX
            SELECT kc.`constraint_name`, kc.`column_name`,
                kc.`referenced_table_name`, kc.`referenced_column_name`
            FROM information_schema.key_column_usage AS kc
            WHERE
                kc.table_schema = DATABASE() AND
                kc.table_name = %s
            ORDER BY kc.`ordinal_position`
        FN)rbrKrL�index�check�foreign_keyZordersrbz�
            SELECT c.constraint_name, c.constraint_type
            FROM information_schema.table_constraints AS c
            WHERE
                c.table_schema = DATABASE() AND
                c.table_name = %s
        zprimary keyTrKrLrcSsh|]
}|j�qSr&)rX)r-rHr&r&r'�	<setcomp>�sz8DatabaseIntrospection.get_constraints.<locals>.<setcomp>a
                SELECT cc.constraint_name, cc.check_clause
                FROM
                    information_schema.check_constraints AS cc,
                    information_schema.table_constraints AS tc
                WHERE
                    cc.constraint_schema = DATABASE() AND
                    tc.table_schema = cc.constraint_schema AND
                    cc.constraint_name = tc.constraint_name AND
                    tc.constraint_type = 'CHECK' AND
                    tc.table_name = %s
            r+Z__unnamed_constraint_�__rJcSs"g|]}|dd�|df�qS)Nr>�
r&)r-�xr&r&r'r/�sz9DatabaseIntrospection.get_constraints.<locals>.<listcomp>)rbrKrLrprqroZBTREE�type�DZDESC�ASC)r0r1rrAr^Zsupports_index_column_orderingrO�lowerZ can_introspect_check_constraintsrIrnrNrBrCr�suffixrD�valuesrM)r#r(r3r[Z
name_query�
constraintrTZ	ref_tableZ
ref_columnZ
type_query�kindZunnamed_constraints_indexrbraZconstraint_columns�_ro�order�type_r&r&r'�get_constraints`s�	�


���	�
�
�
$z%DatabaseIntrospection.get_constraints)r&)1�__name__�
__module__�__qualname__�__doc__rZBLOBZDECIMALZ
NEWDECIMALZDATEZDATETIMEZDOUBLE�FLOATZINT24�LONGZLONGLONGZSHORT�STRINGZTIME�	TIMESTAMPZTINYZ	TINY_BLOBZMEDIUM_BLOBZ	LONG_BLOBZ
VAR_STRINGZdata_types_reverse�strrr"rr
r2rIrr:�boolrRrrUrrYr	r\rZr`rrrnr��
__classcell__r&r&r$r'rSsd�	�g����
���
�r)r��collectionsr�typingrrrrrrr	rfZdjangor
r@Z%django.db.backends.base.introspectionrrZ
BaseFieldInfor
Zdjango.db.modelsrZdjango.utils.datastructuresrZmysql.connector.constantsrZmysql.connector.django.baser�_fieldsrrr&r&r&r'�<module>s0$	���