
    LKi[                        S SK r S SKrS SKJrJrJrJrJrJrJ	r	J
r
  S SKJr  S SKJr  S SKJrJr  S SKJr  S SKJr  S SKJrJrJr  S S	KJrJrJrJr  S S
KJ r   S SK!J"r"J#r#  S SK$J%r%J&r&J'r'J(r(  S SK)J*r*  S SK+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5  S SK6J7r7J8r8J9r9J:r:J;r;J<r<J=r=J>r>J?r?J@r@JArA  \ R                  " \C5      rD " S S\\ 5      rEg)    N)OptionalSequenceAnyTuplecastDictUnionSet)UUID)override)TableColumn)groupby)Schema)DEFAULT_DATABASEDEFAULT_TENANTSystem)CursorSqlDBParameterValueget_sql)SysDB)NotFoundErrorUniqueConstraintError)add_attributes_to_current_spanOpenTelemetryClientOpenTelemetryGranularitytrace_method)Producer)
CollectionAndSegmentsDatabaseOptionalArgumentSegmentMetadata
CollectionSegmentScopeTenantUnspecifiedUpdateMetadata)CreateCollectionConfigurationUpdateCollectionConfiguration+create_collection_configuration_to_json_str+load_collection_configuration_from_json_strCollectionConfiguration'create_collection_configuration_to_json collection_configuration_to_json$collection_configuration_to_json_str"overwrite_collection_configuration;update_collection_configuration_from_legacy_update_metadataCollectionMetadatac                     ^  \ rS rSr% \\S'   S\4U 4S jjr\" S\	R                  5      \SCU 4S jj5       5       r\\4S	\S
\S\SS4S jj5       r\\4S
\S\S\4S jj5       r\\4S
\S\SS4S jj5       r\SS\4S\\   S\\   S\S\\   4S jj5       r\S
\SS4S j5       r\S
\S\4S j5       rS\S\SS4S jr\" S\	R                  5      \S\SS4S j5       5       r\" S\	R                  5      \SSS\\4S	\S
\S\\    S\!S\\   S\\"   S\\   S\#S\S \S\$\%\#4   4S! jj5       5       r&\" S"\	R                  5      \   SDS#\S	\\   S$\\   S%\\'   S\\   4
S& jj5       5       r(\" S'\	R                  5      \SS\\SS4S	\\   S
\\   S\S \S\\   S\\   S\\%   4S( jj5       5       r)\S)\S\*4S* j5       r+\" S+\	R                  5      \S#\S	\SS4S, j5       5       r,S\S#\SS4S- jr-\" S.\	R                  5      \\\4S	\S\S \SS4S/ jj5       5       r.\" S0\	R                  5      \\/" 5       4S#\S	\S\0\\1      SS4S1 jj5       5       r2\" S2\	R                  5      \\/" 5       \/" 5       \/" 5       \/" 5       4S	\S
\0\   S\0\\      S\0\\1      S\0\\3      SS4S3 jj5       5       r4S\S4\3S	\SS4S5 jr5\" S6\	R                  5      S7\\$\6S84      S\\"   4S9 j5       r7\" S:\	R                  5       SES\S;\8S<\9S	\S\1S=\\:\      SS4S> jj5       r;S)\6S\\"   S\<4S? jr=\S	\S\4S@ j5       r>\\S4S\S \\   S\4SA jj5       r?SBr@U =rA$ )FSqlSysDB5   	_producersystemc                 X   > [         TU ]  U5        UR                  [        5      U l        g N)super__init__requirer   _opentelemetry_client)selfr9   	__class__s     Z/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/chromadb/db/mixins/sysdb.pyr=   SqlSysDB.__init__:   s"     %+^^4G%H"    zSqlSysDB.create_segmentreturnNc                 j   > [         TU ]  5         U R                  R                  [        5      U l        g r;   )r<   start_systeminstancer   r8   )r@   rA   s    rB   rG   SqlSysDB.start>   s$     	..x8rD   idnametenantc                    U R                  5        n[        S5      n[        S5      nU R                  5       R                  U5      R	                  UR
                  UR                  UR                  5      R                  [        U R                  U5      5      [        U5      U R                  5       R                  UR
                  5      R                  U5      R                  UR
                  [        U5      :H  5      5      n[        XpR                  5       5      u  p UR!                  X5         S S S 5        g ! U R#                  5        a  n
[%        SU SU 35      U
eS n
A
ff = f! , (       d  f       g = f)N	databasestenants	Database z already exists for tenant )txr   querybuilderintocolumnsrK   rL   	tenant_idinsertr   
uuid_to_dbselectfrom_wherer   parameter_formatexecuteunique_constraint_errorr   )r@   rK   rL   rM   currO   rP   insert_databasesqlparamses              rB   create_databaseSqlSysDB.create_databaseD   s*    WWY#k*II&G!!#iy~~y7J7JK"4??2#67"4(%%'VGJJ'U7^U7::)??@	  "/3H3H3JKKCC(' Y( //1 +v%@I) Ys*   DE(D::E%E  E%%E((
E6c                    U R                  5        n[        S5      nU R                  5       R                  U5      R	                  UR
                  UR                  5      R                  UR                  [        U5      :H  5      R                  UR                  [        U5      :H  5      n[        XPR                  5       5      u  pgUR                  Xg5      R                  5       nU(       d  [        SU SU S35      eUS   c  [        SU SU S35      e[        [         U R#                  US   5      5      n	[%        U	US   US9sS S S 5        $ ! , (       d  f       g = f)NrO   rQ    not found for tenant z. Are you sure it exists?r      rK   rL   rM   )rR   r   rS   rZ   rY   rK   rL   r[   r   rV   r   r\   r]   fetchoner   r   r   uuid_from_dbr!   )
r@   rL   rM   r_   rO   qra   rb   rowrK   s
             rB   get_databaseSqlSysDB.get_databasea   s2   WWY#k*I!!#y!	inn5y~~)==>y**nV.DDE  "!%:%:%<=KC++c*335C#v%;F8C\]  1v~#v%;F8C\]  D$"3"3CF";<BV) YYs   D3E
Ec                 "   U R                  5        n[        S5      nU R                  5       R                  U5      R	                  UR
                  [        U5      :H  5      R	                  UR                  [        U5      :H  5      R                  5       n[        XPR                  5       5      u  pgUS-   nUR                  Xg5      R                  5       nU(       d  [        SU SU 35      e[        S5      n	U R                  5       R                  U	5      R	                  U	R                  [        US   5      :H  5      R                  5       n[        XPR                  5       5      u  pgUR                  Xg5        S S S 5        g ! , (       d  f       g = f)NrO    RETURNING idrQ   rg   collectionsr   )rR   r   rS   rZ   r[   rL   r   rV   deleter   r\   r]   rj   r   database_id)
r@   rL   rM   r_   rO   rl   ra   rb   resultrr   s
             rB   delete_databaseSqlSysDB.delete_database}   s8   WWY#k*I!!#y!y~~)==>y**nV.DDE  "!%:%:%<=KC'C[[-668F#iv5KF8$TUU  .K!!#{#{...2KKL	  "!%:%:%<=KCKK$3 YYs   E&F  
Flimitoffsetc                    U R                  5        n[        S5      nU R                  5       R                  U5      R	                  UR
                  UR                  5      R                  UR                  [        U5      :H  5      R                  U5      R                  Uc  [        R                  OU5      R                  UR                  5      n[!        X`R#                  5       5      u  pxUR%                  Xx5      R'                  5       n	U	 V
s/ s H1  n
[)        [+        [,        U R/                  U
S   5      5      U
S   US9PM3     sn
sS S S 5        $ s  sn
f ! , (       d  f       g = f)NrO   r   rh   ri   )rR   r   rS   rZ   rY   rK   rL   r[   rV   r   ry   rx   sysmaxsizeorderby
created_atr   r\   r]   fetchallr!   r   r   rk   )r@   rx   ry   rM   r_   rO   rl   ra   rb   rowsrm   s              rB   list_databasesSqlSysDB.list_databases   s    WWY#k*I!!#y!	inn5y**nV.DDE#(=CKKe --.  "!%:%:%<=KC;;s+446D    C D$"3"3CF";<Q!
   Y Ys   C<E8EEE
E$c                    U R                  5        n[        S5      nU R                  5       R                  U5      R	                  UR
                  5      R                  [        U5      5      n[        X@R                  5       5      u  pV UR                  XV5         S S S 5        g ! U R                  5        a  n[        SU S35      UeS nAff = f! , (       d  f       g = f)NrP   Tenant  already exists)rR   r   rS   rT   rU   rK   rW   r   r   r\   r]   r^   r   )r@   rL   r_   rP   insert_tenantra   rb   rc   s           rB   create_tenantSqlSysDB.create_tenant   s    WWY#I&G!!#g$t,-	  "-1F1F1HIKCTC( Y //1 T+gdV?,KLRSST Ys*   A7C	B$$C8CCC
Cc                    U R                  5        n[        S5      nU R                  5       R                  U5      R	                  UR
                  5      R                  UR
                  [        U5      :H  5      n[        X@R                  5       5      u  pVUR                  XV5      R                  5       nU(       d  [        SU S35      e[        US9sS S S 5        $ ! , (       d  f       g = f)NrP   r   
 not found)rL   )rR   r   rS   rZ   rY   rK   r[   r   r   r\   r]   rj   r   r'   )r@   rL   r_   rP   rl   ra   rb   rm   s           rB   
get_tenantSqlSysDB.get_tenant   s    WWY#I&G!!#w

#wzz^D%99:	  "!%:%:%<=KC++c*335C#gdV:$>??t$ YYs   CC
C*r_   segmentc                    [        [        US   5      US   US   R                  [        US   5      S.5        [        S5      nU R	                  5       R                  U5      R                  UR                  UR                  UR                  UR                  5      R                  [        U R                  US   5      5      [        US   5      [        US   R                  5      [        U R                  US   5      5      5      n[        X@R                  5       5      u  pV UR!                  XV5        [        S	5      nUS
   (       a'   U R'                  UUUR(                  US   US
   5        g g ! U R#                  5        a  n[%        SUS    S35      UeS nAff = f! [*         a  n[,        R/                  SU 35        e S nAff = f)NrK   typescope
collection
segment_idsegment_typesegment_scoper   segmentsSegment r   segment_metadatametadataz"Error inserting segment metadata: )r   strvaluer   rS   rT   rU   rK   r   r   r   rW   r   rX   r   r\   r]   r^   r   _insert_metadatar   	Exceptionloggererror)	r@   r_   r   r   insert_segmentra   rb   rc   
metadata_ts	            rB   create_segment_with_txSqlSysDB.create_segment_with_tx   s   &!'$-0 '!(!1!7!7!',"78		
 $T(^W##	 Vtwt}=>wv/ww/556tw|/DEF	 	  n.C.C.EF	KK$ -.
:
%%))DMJ'  ++- 	'74=/9	   A!EFs0   #E1 
%F  1FFF 
G*GGc                 z    U R                  5        nU R                  X!5        S S S 5        g ! , (       d  f       g = fr;   )rR   r   )r@   r   r_   s      rB   create_segmentSqlSysDB.create_segment  s'     WWY#''5 YYs   ,
:zSqlSysDB.create_collectionFschemaconfigurationr   r   	dimensionget_or_createdatabasec                    Uc  U(       d  [        S5      e[        [        U5      US.5        U R                  X)U
S9nU(       a:  U(       a$  US   nU R                  UR                  XS9S   S4$ [        SU S35      e[        UU[        U[        [        U5      5      S UUU	U
SS	9	nU R                  5        n[        S
5      n[        S5      nU R                  5       R                  U5      R                  UR                  UR                  UR                   UR"                  UR$                  5      R'                  [)        U R+                  US   5      5      [)        US   5      [)        [-        U[        [        U5      5      5      [)        US   5      U R                  5       R/                  UR                  5      R1                  U5      R3                  UR                  [)        U
5      :H  5      R3                  UR4                  [)        U	5      :H  5      5      n[7        UU R9                  5       5      u  nn UR;                  UU5        [        S5      nUS   (       a,  U R?                  UUUR@                  UR                  US   5        U H  nU RC                  UU5        M     S S S 5        US4$ ! U R=                  5        a  n[        SUS    S35      UeS nAff = f! , (       d  f       US4$ = f)Nz.id must be specified if get_or_create is Falsecollection_idcollection_name)rL   rM   r   r   )rK   rM   r   FCollection r   	rK   rL   configuration_jsonserialized_schemar   r   rM   r   versionrr   rO   rK   rL   r   collection_metadatar   T)"
ValueErrorr   r   get_collectionsrK   r   r%   r/   r   r4   rR   r   rS   rT   rU   rL   config_json_strr   rt   rW   r   rX   r,   rY   rZ   r[   rV   r   r\   r]   r^   r   r   r   )r@   rK   rL   r   r   r   r   r   r   rM   r   existingr   r_   rr   rO   insert_collectionra   rb   rc   r   r   s                         rB   create_collectionSqlSysDB.create_collection  s    :mMNN&!$R#'	
 ''T8'T%a[
((%== )  	  ,k$,OPPFt$6A  #

 WWY#.Kk*I !!#k"NN$$//))++ "4??:d3C#DE":f#56"C)40BH+M
 #:k#:;%%'VILL)U9%U9>>^H-EEFU9...2HHI 6 ""3T5J5J5LMKCC(
 45J*%%%,,MMz* $++C9 $a f 4# //1 +!*T"2!3?CE Yf 4s2   7E?K 7J1	AK 1KKKK  
K1zSqlSysDB.get_segmentsr   r   r   c                 n   [        [        U5      U(       a  UOSU(       a  UR                  OS[        U5      S.5        [        S5      n[        S5      nU R	                  5       R                  U5      R                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  5	      R!                  U5      R#                  UR                  UR$                  :H  5      R'                  UR                  5      nU(       a6  UR)                  UR                  [+        U R-                  U5      5      :H  5      nU(       a'  UR)                  UR                  [+        U5      :H  5      nU(       a1  UR)                  UR                  [+        UR                  5      :H  5      nU(       a6  UR)                  UR                  [+        U R-                  U5      5      :H  5      nU R/                  5        n[1        XpR3                  5       5      u  pUR5                  X5      R7                  5       n[9        US 5      n/ nU H  u  pU R;                  [        U5      5      n[=        U5      n[        US   S   5      n[?        [        US   S   5      5      nU R;                  US   S	   5      nU RA                  U5      nURC                  [E        [G        [H        U5      UUUU0 S
95        M     UsS S S 5        $ ! , (       d  f       g = f)N r   r   r   c                 (    [        [        U S   5      $ Nr   r   objectrs    rB   <lambda>'SqlSysDB.get_segments.<locals>.<lambda>  s    fad1CrD   r   rh         )rK   r   r   r   r   
file_paths)%r   r   r   r   rS   rZ   rY   rK   r   r   r   key	str_value	int_valuefloat_value
bool_value	left_joinonr   r}   r[   r   rX   rR   r   r\   r]   r   r   rk   listr&   _metadata_from_rowsappendr#   r   r   )r@   r   rK   r   r   
segments_tr   rl   r_   ra   rb   r   
by_segmentr   r   segment_rowsr   s                    rB   get_segmentsSqlSysDB.get_segments}  s    	'!"g(,"052!*o		
 :&
-.
U:V  %%$$$$&&%%
 Yz"R
!6!667WZ]]#! 	
$ 
8K)LLMA
>$+??@A
((N5;;,GGHA%%
8S)TTA WWY#!!%:%:%<=KC;;s+446D 'CDJH,6(
&&s:7L)471:$Sa_5!..tAwqz:
33D9b>!##-!)#%	 -7$ / YYs   #C9L&&
L4zSqlSysDB.get_collectionsc                 H   Ub  Ub  Uc  [        S5      e[        [        U5      U(       a  UOSS.5        [        S5      n[        S5      n[        S5      n	U R	                  5       R                  U5      R                  UR                  UR                  UR                  UR                  U	R                  U	R                  UR                  UR                  UR                  UR                  UR                   5      R#                  U5      R%                  UR                  UR&                  :H  5      R#                  U	5      R%                  UR(                  U	R                  :H  5      R+                  UR                  5      n
U(       a6  U
R-                  UR                  [/        U R1                  U5      5      :H  5      n
U(       a'  U
R-                  UR                  [/        U5      :H  5      n
Uc  U(       a  U(       a  [        S5      n	U
R-                  UR(                  U R	                  5       R                  U	R                  5      R                  U	5      R-                  U	R                  [/        U5      :H  5      R-                  U	R                  [/        U5      :H  5      :H  5      n
U R3                  5        n[5        XR7                  5       5      u  pUR9                  X5      R;                  5       n[=        US 5      n/ nU H  u  nnU R?                  [        U5      5      n[A        U5      n[        US	   S
   5      nU RC                  U5      nUS	   S   (       a  [E        US	   S   5      OSnUS	   S   b  [G        US	   S   5      nOU RI                  UU5      nURK                  [M        [O        [P        U5      U[S        U5      SUU[        US	   S   5      [        US	   S   5      S	S9	5        M     Ub  Uc  S	nUXfU-    nOUUS nUsSSS5        $ ! , (       d  f       g= f)z;Get collections by name, embedding function and/or metadataNzmIf name is specified, tenant and database must also be specified in order to uniquely identify the collectionr   r   rr   r   rO   c                 (    [        [        U S   5      $ r   r   r   s    rB   r   *SqlSysDB.get_collections.<locals>.<lambda>  s    D14FrD   r   rh   r   r         r   )*r   r   r   r   rS   rZ   rY   rK   rL   r   r   rV   r   r   r   r   r   r   r   r   rt   r}   r[   r   rX   rR   r   r\   r]   r   r   rk   r   r   intr-   !_insert_config_from_legacy_paramsr   r%   r   r   r0   )r@   rK   rL   rM   r   rx   ry   collections_tr   databases_trl   r_   ra   rb   r   by_collectionrr   r   collection_rowsr   r   r   s                         rB   r   SqlSysDB.get_collections  s    83C  	'!$R+/4R	
 m,01
K(U=!V  ""--''  %%$$$$&&%% Yz"R  J$<$<<=Y{#R))[^^;<W]%%&) 	
, ((N4??2;N,OOPA**nT.BBCA :&X,K))$$&'{#{''>(+CCD{,,v0FFGHA WWY#!!%:%:%<=KC;;s+446D#D*FGMK2?.&&s='9:O,471:33D9/3AwqzCQ
Ot	71:)$OQ
%M %)$J$J%x%M ""b>!+K), +/!)"+"471:!$T!WQZ !' 3@H  >F)&E>B)&'2a YYs   4EP
P!r   c                     U R                  US9n[        U5      S:X  a  [        SU S35      e[        US   U R	                  US9S9$ )N)rK   r   r   z does not exist.)r   )r   r   )r   lenr   r    r   )r@   r   rr   s      rB   get_collection_with_segments%SqlSysDB.get_collection_with_segments=  s^     **m*<{q +m_<L MNN$"1~&&-&@
 	
rD   zSqlSysDB.delete_segmentc                    [        S[        U5      05        [        S5      nU R                  5       R	                  U5      R                  UR                  [        U R                  U5      5      :H  5      R                  5       nU R                  5        n[        X@R                  5       5      u  pgUS-   nUR                  Xg5      R                  5       nU(       d  [        SU S35      e SSS5        g! , (       d  f       g= f)zDelete a segment from the SysDBr   r   rq   r   r   N)r   r   r   rS   rZ   r[   rK   r   rX   rs   rR   r   r\   r]   rj   r   )	r@   r   rK   trl   r_   ra   rb   ru   s	            rB   delete_segmentSqlSysDB.delete_segmentI  s     	'c"g	

 *U1XU144>$//"*=>>?VX	 	
 WWY#!!%:%:%<=KC'C[[-668F#hrd*$=>>  YYs   AC33
Dc                 4   [        S5      nU R                  5       R                  U5      R                  UR                  [        U R                  U5      5      :H  5      R                  5       n[        X@R                  5       5      u  pVUR                  XV5        g )Nr   )r   rS   rZ   r[   r   r   rX   rs   r   r\   r]   )r@   r_   r   r   rl   ra   rb   s          rB   delete_segments_for_collection'SqlSysDB.delete_segments_for_collectionc  st    :&
U:U:((N4??:;V,WWXVX	 	
 a!6!6!89C rD   zSqlSysDB.delete_collectionc           	         [        S[        U5      05        [        S5      n[        S5      nU R                  5       R	                  U5      R                  UR                  [        U R                  U5      5      :H  5      R                  UR                  U R                  5       R                  UR                  5      R	                  U5      R                  UR                  [        U5      :H  5      R                  UR                  [        U5      :H  5      :H  5      R                  5       nU R                  5        n[        X`R!                  5       5      u  pUS-   nUR#                  X5      R%                  5       n
U
(       d  ['        SU S35      eU R)                  Xq5        SSS5        U R*                  R-                  W
S   5        g! , (       d  f       N-= f)	zsDelete a collection and all associated segments from the SysDB. Deletes
the log stream for this collection as well.r   rr   rO   rq   r   r   Nr   )r   r   r   rS   rZ   r[   rK   r   rX   rt   rY   rL   rV   rs   rR   r   r\   r]   rj   r   r   r8   
delete_log)r@   rK   rM   r   r   r   rl   r_   ra   rb   ru   s              rB   delete_collectionSqlSysDB.delete_collectionn  sp    	'R	

 - K(U1XU144>$//"*=>>?U$$&'{#{''>(+CCD{,,v0FFGH VX 	
 WWY#!!%:%:%<=KC'C[[-668F#k"Z$@AA//8  	!!&), Ys   :A'G
GzSqlSysDB.update_segmentc                     [        [        U5      [        U5      S.5        [        S5      n[        S5      nU R                  5       R	                  U5      R                  UR                  [        U R                  U5      5      :H  5      R                  UR                  [        U R                  U5      5      5      nU R                  5        n[        X`R                  5       5      u  pU(       a  UR                  X5        Uc  U R                  5       R                  U5      R                  UR                   [        U R                  U5      5      :H  5      R#                  5       n[        X`R                  5       5      u  pUR                  X5        OeU[%        5       :w  aW  ['        [(        U5      n['        [(        U5      nU R+                  UUUR                   UU[        UR-                  5       5      5        S S S 5        g ! , (       d  f       g = f)N)r   r   r   r   )r   r   r   rS   updater[   rK   r   rX   setr   rR   r   r\   r]   rZ   r   rs   r(   r   r)   r   keys)
r@   r   rK   r   r   r   rl   r_   ra   rb   s
             rB   update_segmentSqlSysDB.update_segment  s    	'!"g!*o	
 :&
-.
 VJU:==N4??23F$GGHS&&tz7R(ST	 	
 WWY#!!%:%:%<=KCC(%%'U:&U:00N4??SUCV4WWXVX	  &a)>)>)@AC([]*99%%))(# YYs   D*G??
HzSqlSysDB.update_collectionc                    [        S[        U5      05        [        S5      n[        S5      nU R                  5       R	                  U5      R                  UR                  [        U R                  U5      5      :H  5      nU[        5       :X  d%  UR                  UR                  [        U5      5      nU[        5       :X  d%  UR                  UR                  [        U5      5      nU R                  5        n	[        XR                  5       5      u  pU
(       a:  U
S-   n
U	R!                  X5      nUR#                  5       (       d  [%        SU S35      eU[        5       :w  a  U R                  5       R'                  U5      R                  UR(                  [        U R                  U5      5      :H  5      R+                  5       n[        XR                  5       5      u  pU	R!                  X5        UbG  [-        [.        U5      nU R1                  U	UUR(                  UU[        UR3                  5       5      5        U[        5       :w  a#  [-        [4        U5      nU R7                  XU5        O>U[        5       :w  a0  [-        [.        U5      nUb  [9        U5      nU R7                  XU5        S S S 5        g ! , (       d  f       g = f)Nr   rr   r   rq   r   r   )r   r   r   rS   r   r[   rK   r   rX   r(   r   rL   r   rR   r   r\   r]   rj   r   rZ   r   rs   r   r)   r   r   r+   _update_config_json_strr3   )r@   rK   rL   r   r   r   r   r   rl   r_   ra   rb   ru   update_configurations                 rB   update_collectionSqlSysDB.update_collection  sN    	'R	

 m,01
 VM"U=##~doob6I'JJK 	
 {}$m((.*>?AKM)m--~i/HIAWWY#!!%:%:%<=KCO+S1(('+bT(DEE ;=(%%'U:&U"00N4??SUCV4WW VX  &a)>)>)@AC('#NH=H))""00 HMMO, -'+1=($ ,,SK{},#NH=H+W ( -
 44SPRSa YYs   6F1J00
J>r   c                    [        S5      nU R                  5       R                  U5      R                  UR                  5      R                  UR                  [        U R                  U5      5      :H  5      n[        XPR                  5       5      u  pgUR                  Xg5      R                  5       nU(       d  [        SU S35      eUS   n	[        U	5      n
[        X5      nU R                  5       R!                  U5      R#                  UR                  [        [%        U5      5      5      R                  UR                  [        U R                  U5      5      :H  5      n[        XPR                  5       5      u  pgUR                  Xg5        g )Nrr   r   r   r   )r   rS   rZ   rY   r   r[   rK   r   rX   r   r\   r]   rj   r   r-   r2   r   r   r1   )r@   r_   r   rK   r   rl   ra   rb   rm   r   existing_config
new_configs               rB   r    SqlSysDB._update_config_json_str  sG    m,U=!VM112U=##~doob6I'JJK	 	
 a!6!6!89kk#&//1+bT <==a&EoV7

 VM"S--CJOP U=##~doob6I'JJK 	
 a!6!6!89C rD   zSqlSysDB._metadata_from_rowsr   .c                 6   [        S[        U5      05        0 nU Hq  n[        US   5      nUS   b  [        US   5      X$'   M)  US   b  [        US   5      X$'   MA  US   b  [	        US   5      X$'   MY  US   c  Ma  [        US   5      X$'   Ms     U=(       d    S$ )z{Given SQL rows, return a metadata map (assuming that the last four columns
are the key, str_value, int_value & float_value)num_rowsN)r   r   r   r   floatbool)r@   r   r   rm   r   s        rB   r   SqlSysDB._metadata_from_rows<  s     	'CI	

 =?Cc"g,C2w" #CGR$ #CGR$ %c"gR$ $SW  4rD   zSqlSysDB._insert_metadatatableid_col
clear_keysc                    [        S[        U5      05        U(       a  U R                  5       R                  U5      R	                  U[        U R                  U5      5      :H  5      R	                  UR                  R                  U Vs/ s H  n[        U5      PM     sn5      5      R                  5       n[        XR                  5       5      u  pUR                  X5        U R                  5       R                  U5      R                  UUR                  UR                  UR                   UR"                  UR$                  5      nU R                  U5      nUR'                  5        GH6  u  p|[)        U[*        5      (       a<  UR-                  [        U5      [        U5      S S S [        [/        U5      5      5      nMW  [)        U[0        5      (       a3  UR-                  [        U5      [        U5      [        U5      S S S 5      nM  [)        U[.        5      (       a3  UR-                  [        U5      [        U5      S [        U5      S S 5      nM  [)        U[2        5      (       a4  UR-                  [        U5      [        U5      S S [        U5      S 5      nGM0  Ub  GM6  GM9     [        XR                  5       5      u  pU	(       a  UR                  X5        g g s  snf )Nnum_keys)r   r   rS   rZ   r[   r   rX   r   isinrs   r   r\   r]   rT   rU   r   r   r   r   items
isinstancer  rW   r   r   r
  )r@   r_   r  r  rK   r   r  krl   ra   rb   sql_idvs                rB   r   SqlSysDB._insert_metadataT  sX    	'CM	

 !!#uv0C!DDEuyy~~*&M*Q~a'8*&MNO  "!%:%:%<=KCKK$ T%[W		!!   	
 $NN$DA !T""HH"6*"1%"3q6* As##HH"6*"1%"1% As##HH"6*"1%"1% Au%%HH"6*"1%"1% Q %T a!6!6!89KK$ } 'Ns   	Kc                    [        S5      n[        5       n[        U[        [        U5      5      nU R                  5       R                  U5      R                  UR                  [        U5      5      R                  UR                  [        U5      :H  5      n[        X`R                  5       5      u  pxU R                  5        n	U	R                  Xx5        SSS5        [!        U5      $ ! , (       d  f       N= f)zuInsert the configuration from legacy metadata params into the collections table, and return the configuration object.rr   N)r   r*   r,   r   r4   rS   r   r   r   r   r[   rK   r   r\   rR   r]   r-   )
r@   r   r   r   create_collection_configconfiguration_json_strrl   ra   rb   r_   s
             rB   r   *SqlSysDB._insert_config_from_legacy_params  s     m,#@#B !L$d+=x&H"
 VM"S--56 U=##~m'DDE 	
 a!6!6!89WWY#KK$ :;QRR Ys   C''
C5c                     [         er;   )NotImplementedError)r@   rK   s     rB   get_collection_sizeSqlSysDB.get_collection_size  s    !!rD   c                 L    Ub  US:X  a  SOUn[        U R                  XS95      $ )zFGets the number of collections for the (tenant, database) combination.r   )rM   r   )r   r   )r@   rM   r   request_databases       rB   count_collectionsSqlSysDB.count_collections  s0     '/&6(b.h4''v'QRRrD   )r?   r8   )rE   N)NNNr;   )B__name__
__module____qualname____firstlineno__r   __annotations__r   r=   r   r   ALLr   rG   r   r   r   rd   r!   rn   rv   r   r   r   r   r   r'   r   r   r#   r   r   r   r   r*   r$   r  r   r%   r   r&   r   r   r    r   r   r   r   r(   r"   r)   r   r+   r   r   r   r   r   r   r
   r   r.   r   r  r#  __static_attributes____classcell__)rA   s   @rB   r6   r6   5   s$    Iv I +-E-I-IJ9  K9 1?!+.	 8 4B  c x  6 7E %C % %$ % %8   $ $$	}  	
 
(	 < T# T$ T T %s %v % %"0& 07 0t 0f +-E-I-IJ6g 6$ 6  K6 .0H0L0LM (,#'#$(e e  e   	e 
 5e  7#e  8$e  C=e  e  e  e  
z4	 e   Ne N )+C+G+GH ""(,EE TNE sm	E
 %E 
'	E  IEN ,.F.J.JK ""$(# $sTNs sms 	s
 s }s s 
*	s  Lsj 	
!	
		
 	
 +-E-I-IJ? ?4 ?D ?  K?0	!& 	!d 	!t 	! .0H0L0LM %(	'-'- '- 	'-
 
'-  N'-R +-E-I-IJ
 @K}	.. . #8N#;<	.
 
.  K.` .0H0L0LM '2m5@]?J} MNTNT s#NT $HSM2	NT
 #8N#;<NT (23
NT 
NT  NNT`!!1N!TX!	!> 02J2N2NO U38_- 	(	  P . -/G/K/KL *.U%U% U% 	U%
 U% !U% SX&U% 
U% MU%nS S,4X,>S	 S: "d "s " "  %"&SS 3-S 
	S SrD   r6   )Floggingr{   typingr   r   r   r   r   r   r	   r
   uuidr   	overridesr   pypikar   r   	itertoolsr   chromadb.api.typesr   chromadb.configr   r   r   chromadb.db.baser   r   r   r   chromadb.db.systemr   chromadb.errorsr   r    chromadb.telemetry.opentelemetryr   r   r   r   chromadb.ingestr   chromadb.typesr    r!   r"   r#   r$   r%   r&   r'   r(   r)   %chromadb.api.collection_configurationr*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   	getLoggerr%  r   r6    rD   rB   <module>r>     s     
 I I I      % D D C C $  %      
		8	$eSue eSrD   