U 췀gx@snddlZddlmZmZddlmZmZddlmZddl m Z ddl m Z m Z ddlmZmZervddlmZmZn"Gd d d ZGd d d ZeZz ddlZWnek red YnXejdkredGdddeZedZedZeeefeeefdddZeeefeeefdddZeeefeeefdddZeejjddddZdS)N)OPSPANDATA) Integration DidNotEnable)Span)should_send_default_pii)capture_internal_exceptionsensure_integration_enabled) TYPE_CHECKINGTypeVar) ParamSpecCallablec@seZdZddZdS)r cCsd|_d|_dSN)argskwargsself_rW/opt/hc_python/lib/python3.8/site-packages/sentry_sdk/integrations/clickhouse_driver.py__init__szParamSpec.__init__N)__name__ __module__ __qualname__rrrrrr sr c@seZdZddZdS) _CallablecCsdSrrrrrr __getitem__sz_Callable.__getitem__N)rrrrrrrrrsrz clickhouse-driver not installed.)rrz#clickhouse-driver >= 0.2.0 requiredc@s,eZdZdZdeZeddddZdS)ClickhouseDriverIntegrationclickhouse_driverzauto.db.N)returncCsvttjjjtjj_ttjjjtjj_t tjjj tjj_ t tjjdr^t tjjj tjj_ t tjjj tjj_ dS)Nreceive_end_of_insert_query) _wrap_startr connection ConnectionZ send_query_wrap_send_dataclientZClientZ send_data _wrap_endZreceive_end_of_queryhasattrr Zreceive_resultrrrr setup_once-s     z&ClickhouseDriverIntegration.setup_once)rrr identifierorigin staticmethodr(rrrrr)s rPT)frcs(tttjtjtdfdd }|S)Nrrrcs|d}|d}t|dkr$|dn|d}t|dkrB|dn|d}tjtj|tjd}||_t ||| d||r| d ||rt r| d |||}|S) Nrrquery_idparams)opnamer*queryz db.query_id db.params) lenget sentry_sdkZ start_spanrZDBrr* _sentry_span _set_db_dataset_datar)rrr"r6r1r3spanretr.rr_innerMs$      z_wrap_start.._inner)r rr,rrr-)r.rArr@rr!Lsr!cstjtjtdfdd }|S)Nr/c s|||}|d}t|jdd}|dk rx|dk rBtrB|d|t"|jj|jdd|jdW5QRX| |S)Nrr;z db.resultr6)messagecategorydata) getattrr"rr=rscopeZadd_breadcrumb_datapopfinish)rrresinstancer>r@rr _inner_endos   z_wrap_end.._inner_endr,rrr-)r.rLrr@rr&nsr&cstjtjtdfdd }|S)Nr/csf|d}|d}t|jdd}|dk r\t||jtr\|jdg}|||d|||S)Nrrr;r7)rEr"r<rrGr9extendr=)rrrKrDr>Z db_paramsr@rr_inner_send_datas   z)_wrap_send_data.._inner_send_datarM)r.rOrr@rr$sr$)r>r"rcCsR|tjd|tj|j|tj|j|tj|j|tj |j dS)NZ clickhouse) r=rZ DB_SYSTEMZSERVER_ADDRESShostZ SERVER_PORTportZDB_NAMEZdatabaseZDB_USERuser)r>r"rrrr<s r<) r:Zsentry_sdk.constsrrZsentry_sdk.integrationsrrZsentry_sdk.tracingrZsentry_sdk.scoperZsentry_sdk.utilsrr typingr r r r rr ImportErrorVERSIONrr,r-r!r&r$r"r#r<rrrrs6     "