HEX
Server: Apache
System: Linux pdx1-shared-a1-38 6.6.104-grsec-jammy+ #3 SMP Tue Sep 16 00:28:11 UTC 2025 x86_64
User: mmickelson (3396398)
PHP: 8.1.31
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/django/db/backends/postgresql/__pycache__/introspection.cpython-310.pyc
o

3�ai(�@s4ddlmZmZmZddlmZGdd�de�ZdS)�)�BaseDatabaseIntrospection�	FieldInfo�	TableInfo)�Indexcs�eZdZidd�dd�dd�dd�d	d
�dd�d
d�dd�dd�dd�dd�dd�dd�dd�dd�dd�dd�dd d!d"��Zd#ZgZ�fd$d%�Zd&d'�Zd(d)�Zd3d+d,�Z	d-d.�Z
d/d0�Zd1d2�Z�Z
S)4�DatabaseIntrospection��BooleanField��BinaryField��BigIntegerField��SmallIntegerField��IntegerField��	TextFieldi��
FloatFieldi�ie�GenericIPAddressFieldi�	CharFieldii:�	DateFieldi;�	TimeFieldiZ�
DateTimeFieldi�i��
DurationFieldi��DecimalField�	UUIDField�	JSONField)i�i�i��btreecsFt��||�}|jr!d|jvr!|dkrdS|dkrdS|dkr!dS|S)N�nextvalr�	AutoFieldr�BigAutoFieldr�SmallAutoField)�super�get_field_type�default)�self�	data_type�description�
field_type��	__class__��M/usr/lib/python3/dist-packages/django/db/backends/postgresql/introspection.pyr#$sz$DatabaseIntrospection.get_field_typecs4|�d��jjjrdnd���fdd�|��D�S)z>Return a list of table and view names in the current database.a�
            SELECT c.relname,
            CASE WHEN {} THEN 'p' WHEN c.relkind IN ('m', 'v') THEN 'v' ELSE 't' END
            FROM pg_catalog.pg_class c
            LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
            WHERE c.relkind IN ('f', 'm', 'p', 'r', 'v')
                AND n.nspname NOT IN ('pg_catalog', 'pg_toast')
                AND pg_catalog.pg_table_is_visible(c.oid)
        zc.relispartition�FALSEcs"g|]
}|d�jvrt|��qS)r)�ignored_tablesr��.0�row�r%r+r,�
<listcomp>:�"z8DatabaseIntrospection.get_table_list.<locals>.<listcomp>)�execute�format�
connection�features�supports_table_partitions�fetchall)r%�cursorr+r2r,�get_table_list/s�	z$DatabaseIntrospection.get_table_listcsL|�d|g�dd�|��D��|�d|jj�|���fdd�|jD�S)zi
        Return a description of the table with the DB-API cursor.description
        interface.
        ag
            SELECT
                a.attname AS column_name,
                NOT (a.attnotnull OR (t.typtype = 'd' AND t.typnotnull)) AS is_nullable,
                pg_get_expr(ad.adbin, ad.adrelid) AS column_default,
                CASE WHEN collname = 'default' THEN NULL ELSE collname END AS collation
            FROM pg_attribute a
            LEFT JOIN pg_attrdef ad ON a.attrelid = ad.adrelid AND a.attnum = ad.adnum
            LEFT JOIN pg_collation co ON a.attcollation = co.oid
            JOIN pg_type t ON a.atttypid = t.oid
            JOIN pg_class c ON a.attrelid = c.oid
            JOIN pg_namespace n ON c.relnamespace = n.oid
            WHERE c.relkind IN ('f', 'm', 'p', 'r', 'v')
                AND c.relname = %s
                AND n.nspname NOT IN ('pg_catalog', 'pg_toast')
                AND pg_catalog.pg_table_is_visible(c.oid)
        cSsi|]}|d|dd��qS)r�Nr+�r0�liner+r+r,�
<dictcomp>Usz?DatabaseIntrospection.get_table_description.<locals>.<dictcomp>zSELECT * FROM %s LIMIT 1c	s8g|]}t|j|j|j|j|j|jg�|j�R��qSr+)r�name�	type_code�display_size�
internal_size�	precision�scaler>��	field_mapr+r,r3Ws
����z?DatabaseIntrospection.get_table_description.<locals>.<listcomp>)r5r:r7�ops�
quote_namer'�r%r;�
table_namer+rGr,�get_table_description<s�

�z+DatabaseIntrospection.get_table_descriptionr+cs$|�d�g��fdd�|��D�S)Na�
            SELECT s.relname as sequence_name, col.attname
            FROM pg_class s
                JOIN pg_namespace sn ON sn.oid = s.relnamespace
                JOIN pg_depend d ON d.refobjid = s.oid AND d.refclassid = 'pg_class'::regclass
                JOIN pg_attrdef ad ON ad.oid = d.objid AND d.classid = 'pg_attrdef'::regclass
                JOIN pg_attribute col ON col.attrelid = ad.adrelid AND col.attnum = ad.adnum
                JOIN pg_class tbl ON tbl.oid = ad.adrelid
            WHERE s.relkind = 'S'
              AND d.deptype in ('a', 'n')
              AND pg_catalog.pg_table_is_visible(tbl.oid)
              AND tbl.relname = %s
        cs g|]}|d�|dd��qS)rr=)rA�table�columnr+r/�rLr+r,r3rs��z7DatabaseIntrospection.get_sequences.<locals>.<listcomp>�r5r:)r%r;rL�table_fieldsr+rPr,�
get_sequencesds�

�z#DatabaseIntrospection.get_sequencescCsdd�|�||�D�S)z�
        Return a dictionary of {field_name: (field_name_other_table, other_table)}
        representing all relationships to the given table.
        cSs"i|]
}|d|d|df�qS)r�r=r+r/r+r+r,r@|r4z7DatabaseIntrospection.get_relations.<locals>.<dictcomp>)�get_key_columnsrKr+r+r,�
get_relationswsz#DatabaseIntrospection.get_relationscCs|�d|g�|��S)Na[
            SELECT a1.attname, c2.relname, a2.attname
            FROM pg_constraint con
            LEFT JOIN pg_class c1 ON con.conrelid = c1.oid
            LEFT JOIN pg_class c2 ON con.confrelid = c2.oid
            LEFT JOIN pg_attribute a1 ON c1.oid = a1.attrelid AND a1.attnum = con.conkey[1]
            LEFT JOIN pg_attribute a2 ON c2.oid = a2.attrelid AND a2.attnum = con.confkey[1]
            WHERE
                c1.relname = %s AND
                con.contype = 'f' AND
                c1.relnamespace = c2.relnamespace AND
                pg_catalog.pg_table_is_visible(c1.oid)
        rQrKr+r+r,rU~s�
z%DatabaseIntrospection.get_key_columnscCsi}|�d|g�|��D]&\}}}}}||dk|dv|dkr't|�dd��nd|dkd	d|d
�||<q
|�d|j|g�|��D]?\}	}}
}}}
}}|	|vr�|
|jko]|	�d�o]|du}|dgkre|ng|dgkrm|ng||
dd	d
|rxtjn|
||d�
||	<qA|S)z�
        Retrieve any constraints or keys (unique, pk, fk, check, index) across
        one or more columns. Also retrieve the definition of expression-based
        indexes.
        aH
            SELECT
                c.conname,
                array(
                    SELECT attname
                    FROM unnest(c.conkey) WITH ORDINALITY cols(colid, arridx)
                    JOIN pg_attribute AS ca ON cols.colid = ca.attnum
                    WHERE ca.attrelid = c.conrelid
                    ORDER BY cols.arridx
                ),
                c.contype,
                (SELECT fkc.relname || '.' || fka.attname
                FROM pg_attribute AS fka
                JOIN pg_class AS fkc ON fka.attrelid = fkc.oid
                WHERE fka.attrelid = c.confrelid AND fka.attnum = c.confkey[1]),
                cl.reloptions
            FROM pg_constraint AS c
            JOIN pg_class AS cl ON c.conrelid = cl.oid
            WHERE cl.relname = %s AND pg_catalog.pg_table_is_visible(cl.oid)
        �p)rW�u�f�.r=N�cF)�columns�primary_key�unique�foreign_key�check�index�
definition�optionsa�
            SELECT
                indexname, array_agg(attname ORDER BY arridx), indisunique, indisprimary,
                array_agg(ordering ORDER BY arridx), amname, exprdef, s2.attoptions
            FROM (
                SELECT
                    c2.relname as indexname, idx.*, attr.attname, am.amname,
                    CASE
                        WHEN idx.indexprs IS NOT NULL THEN
                            pg_get_indexdef(idx.indexrelid)
                    END AS exprdef,
                    CASE am.amname
                        WHEN %s THEN
                            CASE (option & 1)
                                WHEN 1 THEN 'DESC' ELSE 'ASC'
                            END
                    END as ordering,
                    c2.reloptions as attoptions
                FROM (
                    SELECT *
                    FROM pg_index i, unnest(i.indkey, i.indoption) WITH ORDINALITY koi(key, option, arridx)
                ) idx
                LEFT JOIN pg_class c ON idx.indrelid = c.oid
                LEFT JOIN pg_class c2 ON idx.indexrelid = c2.oid
                LEFT JOIN pg_am am ON c2.relam = am.oid
                LEFT JOIN pg_attribute attr ON attr.attrelid = c.oid AND attr.attnum = idx.key
                WHERE c.relname = %s AND pg_catalog.pg_table_is_visible(c.oid)
            ) s2
            GROUP BY indexname, indisunique, indisprimary, amname, exprdef, attoptions;
        �_btreeT)
r\�ordersr]r^r_r`ra�typerbrc)r5r:�tuple�split�index_default_access_method�endswithr�suffix)r%r;rL�constraints�
constraintr\�kind�	used_colsrcrar^�primaryre�type_rb�basic_indexr+r+r,�get_constraints�sJ���

��
��z%DatabaseIntrospection.get_constraints)r+)�__name__�
__module__�__qualname__�data_types_reverserir.r#r<rMrSrVrUrs�
__classcell__r+r+r)r,rsb��������	�
���
������
(rN)�%django.db.backends.base.introspectionrrr�django.db.modelsrrr+r+r+r,�<module>s