Ë
    S>{i=  ã                   óN   — d dl mZ d dlmZmZ erd dlmZ d dlmZ d dlm	Z	 d„ Z
y)é    )ÚTYPE_CHECKING)Úcache_statementÚshould_run_explain_plan)ÚAny)ÚCallable)ÚSpanc                 óÎ  — |j                  «       j                  «       j                  d«      syt        ||«      sy|j	                  dd«      rdnd}d|z   |||«      j                  d«      z   }|j                  «       5 }|j                  |«       |j                  «       D �	cg c]  }	|	‘Œ }
}	| j                  d	|
«       t        ||«       ddd«       yc c}	w # 1 sw Y   yxY w)
aB  
    Run EXPLAIN or EXPLAIN ANALYZE on the given statement and attach the explain plan to the span data.

    Usage:
    ```
    sentry_sdk.init(
        dsn="...",
        _experiments={
            "attach_explain_plans": {
                "explain_cache_size": 1000,  # Run explain plan for the 1000 most run queries
                "explain_cache_timeout_seconds": 60 * 60 * 24,  # Run the explain plan for each statement only every 24 hours
                "use_explain_analyze": True,  # Run "explain analyze" instead of only "explain"
            }
        }
    ```
    ÚSELECTNÚuse_explain_analyzeFÚANALYZEÚ zEXPLAIN %s zutf-8zdb.explain_plan)ÚstripÚupperÚ
startswithr   ÚgetÚdecodeÚcursorÚexecuteÚfetchallÚset_datar   )ÚspanÚ
connectionÚ	statementÚ
parametersÚmogrifyÚoptionsÚanalyzeÚexplain_statementr   ÚrowÚexplain_plans              ú_/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sentry_sdk/db/explain_plan/django.pyÚattach_explain_plan_to_spanr"      sÙ   € ð( �?‰?Ó×"Ñ"Ó$×/Ñ/°Ô9Øä" 9¨gÔ6Øà"Ÿ;™;Ð'<¸eÔD‰iÈ"€GØ&¨Ñ0±GØ�:ó5ç�fˆWƒoñÐð 
×	Ñ	Ó	ð , Ø�‰Ð(Ô)Ø'-§¡Ó'8Ö9 šÐ9ˆÐ9à�‰Ð'¨Ô6Ü˜	 7Ô+÷,ð ,ùâ9÷,ð ,ús   Â $CÂ$	CÂ- CÃCÃC$N)Úsentry_sdk.constsr   Úsentry_sdk.db.explain_planr   r   Útypingr   r   Úsentry_sdk.tracingr   r"   © ó    r!   ú<module>r)      s   ðÝ +ß OáÝÝå'ó$,r(   