ó
    ¼Rj,\ ã                   óœ  • S SK r S SKrS SK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  S SKJr  S SKJrJrJrJr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 J!r!J"r"J#r#  S SK$J%r%J&r&  S SK'J(r(  S SK)J*r*  S SK+J,r,  S SK-J.r.  S SK/J0r0   " S S\5      r1 " S S5      r2 " S S\25      r3 " S S\25      r4 " S S\25      r5 " S S\25      r6S r7g)é    N)Úpartial)Úchain)ÚEmptyResultSetÚ
FieldErrorÚFullResultSet)ÚDatabaseErrorÚNotSupportedError)Ú
LOOKUP_SEP)ÚFÚOrderByÚRawSQLÚRefÚValue)ÚCastÚRandom)ÚLookup)Úselect_related_descend)ÚCURSORÚGET_ITERATOR_CHUNK_SIZEÚMULTIÚ
NO_RESULTSÚ	ORDER_DIRÚSINGLE)ÚQueryÚget_order_dir)ÚAND)ÚTransactionManagementError)Úcached_property)Úmake_hashable)Ú_lazy_re_compilec                   ó.   ^ • \ rS rSrU 4S jrS rSrU =r$ )ÚPositionRefé   c                 ó0   >• Xl         [        TU ]	  X#5        g ©N)ÚordinalÚsuperÚ__init__)Úselfr&   ÚrefsÚsourceÚ	__class__s       €ÚID:\diplom_project\venv\Lib\site-packages\django/db/models/sql/compiler.pyr(   ÚPositionRef.__init__   s   ø€ ØŒÜ‰Ñ˜Õ&ó    c                 ó0   • [        U R                  5      S4$ )N© )Ústrr&   )r)   ÚcompilerÚ
connections      r-   Úas_sqlÚPositionRef.as_sql#   s   € Ü�4—<‘<Ó  "Ð$Ð$r/   )r&   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r(   r5   Ú__static_attributes__Ú__classcell__©r,   s   @r-   r"   r"      s   ø† õ'÷%ð %r/   r"   c                   óF  • \ rS rSr\" S\R                  \R                  -  5      rS#S jr	S r
S$S jrS$S jrS rS	 rS$S
 jrS rS rS rS rS rS rS rS%S jr S&S jrS r S'S jrS rS r     S(S jrS rS rS r SSS\!4S jr"S r#\$S\!4S jr%S  r&S! r'S"r(g))ÚSQLCompileré'   z^(.*)\s(?:ASC|DESC).*c                 ó~   • Xl         X l        X0l        X@l        SS0U l        S U l        S U l        S U l        S U l        g )NÚ*)	Úqueryr4   ÚusingÚelide_emptyÚquote_cacheÚselectÚannotation_col_mapÚ
klass_infoÚ_meta_ordering)r)   rC   r4   rD   rE   s        r-   r(   ÚSQLCompiler.__init__.   sE   € ØŒ
Ø$ŒØŒ
ð 'ÔØ ˜:ˆÔð
 ˆŒØ"&ˆÔØˆŒØ"ˆÕr/   c           	      ó°   • SU R                   R                   SU R                  R                  R                   SU R                  < SU R
                  < S3	$ )NÚ<z model=z connection=z using=Ú>)r,   r9   rC   Úmodelr4   rD   ©r)   s    r-   Ú__repr__ÚSQLCompiler.__repr__?   sU   € à�—‘×+Ñ+Ð,ð -Ø—Z‘Z×%Ñ%×2Ñ2Ð3ð 4ØŸ/™/Ñ,¨G°D·J±J±>ÀðDð	
r/   Fc                 ó  ^ • [        U 4S jT R                  R                   5       5      (       a  T R                  R                  5         T R	                  US9u  T l        T l        T l        [        T R
                  5      T l	        g )Nc              3   ó\   >#   • U  H!  nTR                   R                  U   S :H  v •  M#     g7f©r   N©rC   Úalias_refcount)Ú.0Úar)   s     €r-   Ú	<genexpr>Ú*SQLCompiler.setup_query.<locals>.<genexpr>G   s'   øé € ÐOÒ:N°Qˆt�z‰z×(Ñ(¨Ñ+¨qÖ0Ò:Nùó   ƒ),©Úwith_col_aliases)
ÚallrC   Ú	alias_mapÚget_initial_aliasÚ
get_selectrG   rI   rH   ÚlenÚ	col_count)r)   r^   s   ` r-   Úsetup_queryÚSQLCompiler.setup_queryF   sg   ø€ ÜÔO¸$¿*¹*×:NÒ:NÓO×OÑOØ�J‰J×(Ñ(Ô*Ø@DÇÁØ-ð APð A
Ñ=ˆŒ�T”_ dÔ&=ô ˜TŸ[™[Ó)ˆ�r/   c                 ót  • U R                  US9  U R                  5       nU R                  R                  R	                  U R                  R
                  SLS9u  U l        U l        U l        U R                  X R                  5      n[        U5      U l        U R                  U R                  U-   U5      nX2U4$ )zÀ
Do any necessary class setup immediately prior to producing SQL. This
is for things that can't necessarily be done in __init__ because we
might not have all the pieces in place at that time.
r]   N)Úmust_group_by)re   Úget_order_byrC   ÚwhereÚsplit_having_qualifyÚgroup_byÚhavingÚqualifyÚget_extra_selectrG   ÚboolÚhas_extra_selectÚget_group_by)r)   r^   Úorder_byÚextra_selectrl   s        r-   Úpre_sql_setupÚSQLCompiler.pre_sql_setupN   s¬   € ð 	×ÑÐ*:ÐÑ;Ø×$Ñ$Ó&ˆØ04·
±
×0@Ñ0@×0UÑ0UØŸ*™*×-Ñ-°TÐ9ð 1Vð 1
Ñ-ˆŒ
�D”K ¤ð ×,Ñ,¨X·{±{ÓCˆÜ $ \Ó 2ˆÔØ×$Ñ$ T§[¡[°<Ñ%?ÀÓJˆØ xÐ/Ð/r/   c                 ót  • U R                   R                  c  / $ / n[        5       nU R                   R                  SLa¹  U R                   R                   HŸ  n[        US5      (       d  U R                   R	                  U5      n[        U[        5      (       aJ  UR                  U;  a8  UR                  UR                  5        UR                  UR                  5        MŒ  MŽ  UR                  U5        M¡     0 n[        USS9 H:  u  nu  pXn	U	(       a  XvU'   X”;   a  M  UR                  UR                  5       5        M<     U R                  (       d7  U H1  u  nu  p«nU(       a  M  UR                  UR                  5       5        M3     U R                  (       a  U R                  R                  5       OSnU H  nUR                  U5        M     / n[        5       nU R!                  X=5      nU R"                  R$                  R&                  nU H�  n U R)                  U5      u  p«U(       a!  UR/                  U5      =nb  [1        U5      SpºOUR3                  X
U5      u  p«[5        U5      nU
U4U;  d  Mh  UR                  X«45        UR                  U
U45        M�     U$ ! [*        [,        4 a     M¦  f = f)zÅ
Return a list of 2-tuples of form (sql, params).

The logic of what exactly the GROUP BY clause contains is hard
to describe in other words than "if it passes the test suite,
then it is correct".
Tr5   é   ©Ústartr1   )rC   rl   ÚsetÚhasattrÚresolve_refÚ
isinstancer   r*   ÚaddÚappendr+   Ú	enumerateÚextendÚget_group_by_colsrJ   rm   Úcollapse_group_byr4   ÚfeaturesÚallows_group_by_select_indexÚcompiler   r   Úgetr2   Úselect_formatr   )r)   rG   rs   ÚexpressionsÚgroup_by_refsÚexprÚselected_expr_indicesÚindexÚ_ÚaliasÚsqlÚparamsÚis_refÚhaving_group_byÚresultÚseenr†   Úselect_indexÚparams_hashs                      r-   rr   ÚSQLCompiler.get_group_by^   sl  € ðL �:‰:×ÑÑ&ØˆIØˆÜ›ˆØ�:‰:×Ñ dÒ*ð Ÿ
™
×+Ô+�Ü˜t X×.Ñ.ØŸ:™:×1Ñ1°$Ó7�DÜ˜d¤C×(Ñ(Ø—y‘y¨Ó5Ø%×)Ñ)¨$¯)©)Ô4Ø#×*Ñ*¨4¯;©;Ö7ñ 6ð  ×&Ñ& tÖ,ñ ,ð !#ÐÜ'0°¸qÔ'AÑ#ˆEÑ#�D˜UÞØ.3 dÑ+ð Ó%ÙØ×Ñ˜t×5Ñ5Ó7Ö8ñ (Bð ×"×"Û/7Ñ+�Ñ+�s F÷ �vØ×&Ñ& t×'=Ñ'=Ó'?Ö@ñ	 08ð
 >B¿[¿[˜$Ÿ+™+×7Ñ7Ô9ÈbˆÛ#ˆDØ×Ñ˜tÖ$ñ $àˆÜ‹uˆØ×,Ñ,¨[ÓJˆð �O‰O×$Ñ$×AÑAð 	%ó  ˆDðØ"Ÿl™l¨4Ó0‘�ö -Ø%:×%>Ñ%>¸tÓ%DÐD�\ÑQä! ,Ó/°‘Và"×0Ñ0°¸FÓC‘�Ü'¨Ó/ˆKØ�[Ð!¨Õ-Ø—‘˜s˜mÔ,Ø—‘˜#˜{Ð+Ö,ñ  ð  ˆøô #¤MÐ2ó Úðús   ÈJ#Ê#J7Ê6J7c                 ó  • U R                   R                  R                  (       aÌ  U Vs1 s Hu  n[        US5      (       d  M  UR                  R
                  (       d  M3  U R                   R                  R                  UR                  R                  5      (       d  Ms  UiMw     nnU Vs1 s H  o3R                  iM     nnU Vs/ s H"  nX4;   d  X2;   d  [        USS 5      U;  d  M   UPM$     nnU$ s  snf s  snf s  snf )NÚtargetr�   )
r4   r…   Úallows_group_by_selected_pksr|   r›   Úprimary_keyÚ%allows_group_by_selected_pks_on_modelrO   r�   Úgetattr)r)   rŠ   rm   rŒ   ÚpksÚaliasess         r-   r„   ÚSQLCompiler.collapse_group_byÅ   sï   € ð �?‰?×#Ñ#×@×@ñ (ó
â'�Dä˜D (×+ó ð Ÿ™×/Õ/ó	 ð
 Ÿ™×0Ñ0×VÑVØŸ™×)Ñ)÷÷ Ù'ð ð 
ñ /2Ó2ªc d—z”z©cˆGÐ2ñ (óâ'�DØ“;Ø“>Ü˜4 ¨$Ó/°wÑ>÷	 Ù'ð ð ð Ðùò'
ùò 3ùòs)   ªC4ÁC4Á <C4Â C4Â,C9ÃC>Ã*C>c                 óJ  ^• / nSn0 nSnU R                   R                  R                  5        H-  u  nu  pxXTU'   UR                  [	        Xx5      U45        US-  nM/     U R                   R
                  (       a  U R                   R                  (       a   eU R                   R                  5       n	U R                   R                  (       a  U R                  U	5      n
OU R                   R
                  n
U
(       aM  / nU
 H,  nUR                  U5        UR                  US45        US-  nM.     U R                   R                  US.nU R                   R                  R                  5        H   u  pmXTU'   UR                  XÖ45        US-  nM"     U R                   R                  (       a#  U R                  X)5      nXãS'   U4S jmT" U5        / nSnU HV  u  pÆ U R                  U5      u  pxUR                  XU5      u  pxUc  U(       a
  S
U 3nUS-  nUR                  XÇU4U45        MX     XóU4$ ! [         a?    [!        US["        5      nU["        L a  Su  px N[U R                  [%        U5      5      u  px Ny[&         a    U R                  [%        S	5      5      u  px N f = f)a8  
Return three values:
- a list of 3-tuples of (expression, (sql, params), alias)
- a klass_info structure,
- a dictionary of annotations

The (sql, params) is what the expression will produce, and alias is the
"AS alias" for the column (possibly None).

The klass_info structure contains the following information:
- The base model of the query.
- Which columns for that model are present in the query (by
  position of the select clause).
- related_klass_infos: [f, klass_info] to descent into

The annotations is a dictionary of {'attname': column position} values.
Nr   rx   )rO   Úselect_fieldsÚrelated_klass_infosc                 ó^   >• U S    H#  nUS   (       a  U S   US   -   US'   T" U5        M%     g )Nr¥   Úfrom_parentr¤   r1   )rI   ÚkiÚget_select_from_parents     €r-   r©   Ú6SQLCompiler.get_select.<locals>.get_select_from_parent  sA   ø€ Ø$Ð%:Ô;�BØ˜-×(à& Ñ7¸"¸_Ñ:MÑMð ˜?Ñ+ñ +¨2Ö.ò <r/   Úempty_result_set_value)Ú0r1   TÚcol)rC   rt   Úitemsr€   r   rG   Údefault_colsÚget_select_maskÚget_default_columnsrO   Úannotation_selectÚselect_relatedÚget_related_selectionsr‡   r‰   r   rŸ   ÚNotImplementedr   r   )r)   r^   rG   rI   ÚannotationsÚ
select_idxr�   r‘   r’   Úselect_maskÚcolsÚselect_listr­   Ú
annotationr¥   ÚretÚcol_idxr«   r©   s                     @r-   rb   ÚSQLCompiler.get_selectå   s�  ø€ ð$ ˆØˆ
ØˆØˆ
Ø$(§J¡J×$;Ñ$;×$AÑ$AÖ$CÑ ˆE‘=�CØ!+˜ÑØ�M‰Mœ6 #Ó.°Ð6Ô7Ø˜!‰OŠJñ %Dð —J‘J×%×%¨$¯*©*×*A×*AÐBÐBØ—j‘j×0Ñ0Ó2ˆØ�:‰:×"×"Ø×+Ñ+¨KÓ8‰Dð —:‘:×$Ñ$ˆDÞØˆKÛ�Ø×"Ñ" :Ô.Ø—‘˜s D˜kÔ*Ø˜a‘’
ñ ð
 Ÿ™×)Ñ)Ø!,ñˆJð "&§¡×!=Ñ!=×!CÑ!CÖ!EÑˆEØ!+˜ÑØ�M‰M˜:Ð-Ô.Ø˜!‰OŠJñ "Fð
 �:‰:×$×$Ø"&×"=Ñ"=¸fÓ"RÐØ0CÐ,Ñ-õ/ñ # :Ô.àˆØˆÛ ‰JˆCðCØ"Ÿl™l¨3Ó/‘�ð "×/Ñ/°¸6ÓB‘�Ø‰}Ö!1Ø˜g˜Y˜�Ø˜1‘�Ø�J‰J˜ 6˜]¨EÐ2Ö3ñ' !ð(  Ð+Ð+øô# "ó NÜ)0ØÐ1´>ó*Ð&ð *¬^Ò;à")‘K�C™à"&§,¡,¬uÐ5KÓ/LÓ"M‘K�C™Ü ó 8Ø"Ÿl™l¬5°«;Ó7‘�‘Vð8ús   ÇH2È2(J"ÉJ"É:%J"Ê!J"c           
   #   ó<  #   • U R                   R                  (       a  U R                   R                  nO«U R                   R                  (       d  U R                   R                  nOyU R                   R                  (       a  U R                   R                  nOGU R                   R	                  5       =n(       a$  UR
                  (       a  UR
                  nXl        O/ nU R                   R                  (       a  [        S   u  p4O[        S   u  p40 nU(       aE  U R                  =n(       a2  [        USS9 H$  u  nu  p„n	[        XyU5      n
U	(       a  X¥U	'   X¥U'   M&     U GH2  n[        US5      (       Ga§  [        U[        5      (       a  [        X»R                   5      n[        U["        5      (       d  UR%                  5       nU R                   R                  (       d   UR'                  5       nUR)                  5         UR+                  UR,                  5      nU(       dK  [        UR,                  [.        5      (       aÒ  UR+                  UR,                  R0                  5      =n(       a¦  UR2                  c  UR4                  b%  U R6                  R8                  R:                  (       a  UR'                  5       nXËl        OPU R                   R<                  (       a5  UR'                  5       n[?        UR@                  URB                  5      Ul        X¼S L4v •  GM½  US:X  a  [#        [E        5       5      S4v •  GMÝ  [G        X³5      u  pÞUS:H  nUR+                  U5      =n(       a  [#        UUS9S	4v •  GM  XÐR                   RH                  ;   a‹  U R                   R<                  (       a  U R                  (       a  [/        U5      nOCU R                   RH                  U   n[        U[        5      (       a  [        XˆR                   5      n[#        X�S9S4v •  GM¼  S
U;   aF  URK                  S
S5      u  nn[#        [M        U RO                  U5      < S
U< 3/ 5      US9S4v •  GM  U R                   RP                  (       a˜  XÐR                   RP                  ;   a  XÐR                   RR                  ;   a8  [#        [?        U[M        U R                   RP                  U   6 5      US9S	4v •  GM�  [#        [M        U R                   RP                  U   6 US9S4v •  GM»  U R                   R<                  (       a+  U R                  (       a  [#        [/        U5      US9S4v •  GM  U RU                  UU R                   R	                  5       US9 S h  v•N   GM5     g  N
7f)NÚASCÚDESCrx   ry   Úresolve_expressionÚ?F©Ú
descendingTÚ.)Údefault_order)+rC   Úextra_order_byÚdefault_orderingrs   Úget_metaÚorderingrJ   Ústandard_orderingr   rG   r�   r"   r|   r~   r   r   Úoutput_fieldr   ÚascÚcopyÚreverse_orderingrˆ   Ú
expressionr   ÚnameÚnulls_firstÚ
nulls_lastr4   r…   Ú supports_order_by_nulls_modifierÚ
combinatorr   r*   r+   r   r   r¶   Úsplitr   Úquote_name_unless_aliasÚextrart   Úfind_ordering_name)r)   rË   ÚmetarÇ   r�   Úselected_exprsrG   r&   rŒ   r�   Úpos_exprÚfieldÚ
select_refr­   ÚorderrÅ   Útables                    r-   Ú_order_by_pairsÚSQLCompiler._order_by_pairs<  s~  é € Ø�:‰:×$×$Ø—z‘z×0Ñ0‰HØ—‘×,×,Ø—z‘z×*Ñ*‰HØ�Z‰Z× × Ø—z‘z×*Ñ*‰HØ—j‘j×)Ñ)Ó+Ð+ˆdÕ+°··Ø—}‘}ˆHØ"*ÕàˆHØ�:‰:×'×'Ü(¨Ñ/ÑˆM˜1ä(¨Ñ0ÑˆMàˆö  4§;¡;Ð.˜Õ.Ü-6°vÀQÔ-GÑ)�Ñ)˜$ 5Ü& w°tÓ<�ÞØ,4 5Ñ)Ø'/˜tÓ$ñ	 .Hô ˆEÜ�uÐ2×3Ò3Ü˜e¤U×+Ñ+ä  ×(:Ñ(:Ó;�EÜ! %¬×1Ñ1Ø!ŸI™I›K�EØ—z‘z×3×3Ø!ŸJ™J›L�EØ×*Ñ*Ô,Ø+×/Ñ/°×0@Ñ0@ÓA�
ÞÜ˜u×/Ñ/´×3Ñ3Ø'5×'9Ñ'9¸%×:JÑ:J×:OÑ:OÓ'PÐP˜ÕPð
 ×)Ñ)Ñ1°e×6FÑ6FÑ6NØŸ™×1Ñ1×R×RØ %§
¡
£˜Ø+5Õ(ð Ÿ™×.×.Ø %§
¡
£˜Ü+.¨z¯©À
×@QÑ@QÓ+R˜Ô(Ø¨tÐ3Ð3Ò3ÚØ˜‹|Üœf›hÓ'¨Ð.Ò.Úä& uÓ<‰JˆCØ &™ˆJà+×/Ñ/°Ó4Ð4ˆzÕ4ô Ø"Ø#-ñð ðò ò Ø—j‘j×,Ñ,Ó,ð —:‘:×(×(¨T¯[¯[ô ˜S›6‘DàŸ:™:×1Ñ1°#Ñ6�DÜ! $¬×.Ñ.ä# D×*;Ñ*;Ó<˜Ü˜dÑ:¸EÐAÒAÚà�e‹|ð !ŸY™Y s¨AÓ.‘
��säÜØ'+×'CÑ'CÀEÖ'JÊCÐPÐRTóð $.ñ	ð ðò ò à�z‰z×× C¯:©:×+;Ñ+;Ó$;ØŸ*™*×1Ñ1Ó1äÜ ¤V¨T¯Z©Z×-=Ñ-=¸cÑ-BÐ%CÓDØ'1ñð ðõ ô  ¤¨¯
©
×(8Ñ(8¸Ñ(=Ð >È:ÑVØðõ ð
 —:‘:×(×(¨T¯[¯[ô "¤! C£&°ZÑ@À%ÐGÕGð  $×6Ñ6ØØŸ
™
×+Ñ+Ó-Ø&3ð  7ð  ÷ ó òG ñFùs   ‚VVÖVÖVc                 ó°  • / n[        5       nU R                  5        GH4  u  p4UR                  U R                  SSS9nU(       Gd�  U R                  R                  (       Ga�  U R
                  (       Gao  UR                  nUR                  nU R
                   H   u  p‰n
Xh:X  d  M  U R                  R                  (       a?  X R                  R                  ;   a&  [        U[        5      (       a  X§R                  :X  d  Mg  UR                  [        U
(       a  U
OUR                  R                  U5      /5          O©   [!        U R                  R
                  5      S-   nSU 3n
U R                  R"                   H0  nUR                  (       a  [%        S5      eUR'                  Xz5        M2     U R                  R)                  XZ5        UR                  [        X¦5      /5        U R+                  U5      u  pÞU R,                  R/                  U5      S   n[1        U5      nUU4U;   a  GM  UR3                  UU45        UR5                  X]Xä445        GM7     U$ )zÿ
Return a list of 2-tuples of the form (expr, (sql, params, is_ref)) for
the ORDER BY clause.

The order_by clause can alter the select clause (for example it can add
aliases to clauses that do not yet have one, or it can add totally new
select clauses).
TN)Úallow_joinsÚreuserx   Ú__orderbycolz:ORDER BY term does not match any column in the result set.)r{   râ   rÂ   rC   rÖ   rG   rÑ   Úhas_select_fieldsr²   r~   r   rÒ   Úset_source_expressionsr   r›   Úcolumnrc   Úcombined_queriesr   Úadd_annotationÚadd_select_colr‡   Úordering_partsÚsearchr   r   r€   )r)   r•   r–   rŒ   r“   ÚresolvedÚsrcÚexpr_srcÚsel_exprr�   Ú	col_aliasÚorder_by_idxÚqr‘   r’   Úwithout_orderingr˜   s                    r-   ri   ÚSQLCompiler.get_order_byÀ  sù  € ð ˆÜ‹uˆØ ×0Ñ0×2‰LˆDØ×.Ñ.¨t¯z©zÀtÐSWÐ.ÐXˆHß˜dŸj™j×3×3Ð3¸¿¿¸Ø×)Ñ)�ØŸ?™?�Ø.2¯k¬kÑ*�H Ø•ð !ŸJ™J×8×8Ø )¯Z©Z×-IÑ-IÓ Iä *¨8´Q× 7Ñ 7¸IÏÉÓ<Vñ %Ø ×7Ñ7Ü ®i¡¸S¿Z¹Z×=NÑ=NÐPSÓTÐUôñ ñ /:ô& $' t§z¡z×'8Ñ'8Ó#9¸AÑ#=�LØ".¨|¨nÐ =�IØ!ŸZ™Z×8Ô8˜ð ×.×.Ü"/ð!2ó#ð ð ×(Ñ(¨Ö=ñ 9ð —J‘J×-Ñ-¨hÔBØ×3Ñ3´S¸Ó5HÐ4IÔJØŸ,™, xÓ0‰KˆCð
  $×2Ñ2×9Ñ9¸#Ó>¸qÑAÐÜ'¨Ó/ˆKØ  +Ð.°$Ó6ÚØ�H‰HÐ&¨Ð4Ô5Ø�M‰M˜8¨6Ð%:Ð;×<ñ_ 3ð` ˆr/   c                 óP  • / nU R                   R                  (       aƒ  U R                   R                  (       dh  U Vs/ s H  oDS   PM	     nnU HN  u  nu  pxn	U R                  R	                  U5      S   n
U	(       a  M0  X¨4U;  d  M9  UR                  XjU4S 45        MP     U$ s  snf ©Nrx   )rC   ÚdistinctÚdistinct_fieldsrî   rï   r€   )r)   rs   rG   rt   ÚtÚ
select_sqlrŒ   r‘   r’   r“   r÷   s              r-   ro   ÚSQLCompiler.get_extra_selectý  s›   € ØˆØ�:‰:×× t§z¡z×'A×'AÙ(.Ó/ª 1˜Aœ$©ˆJÐ/Û/7Ñ+�Ñ+�s FØ#'×#6Ñ#6×#=Ñ#=¸cÓ#BÀ1Ñ#EÐ ß�vÐ#3Ð"<ÀJÕ"NØ ×'Ñ'¨À&Ð/IÈ4Ð(PÖQñ 08ð Ðùò 0s   ½B#c                 óä  • XR                   ;   a  U R                   U   $ XR                  R                  ;   a  XR                  R                  ;  d\  XR                  R                  ;   dC  U R                  R
                  R                  U5      (       a)  XR                  R                  ;  a  XR                   U'   U$ U R                  R                  R                  U5      nX R                   U'   U$ )z»
A wrapper around connection.ops.quote_name that doesn't quote aliases
for table names. This avoids problems with some SQL dialects that treat
quoted strings specially (e.g. PostgreSQL).
)
rF   rC   r`   Ú	table_maprt   Úexternal_aliasesrˆ   r4   ÚopsÚ
quote_name)r)   rÒ   Úrs      r-   rØ   Ú#SQLCompiler.quote_name_unless_alias  s½   € ð ×#Ñ#Ó#Ø×#Ñ# DÑ)Ð)à—Z‘Z×)Ñ)Ó)¨d¿*¹*×:NÑ:NÓ.NØ—z‘z×.Ñ.Ó.à—
‘
×+Ñ+×/Ñ/°×5Ñ5Ø§
¡
× 4Ñ 4Ó4ð &*×Ñ˜TÑ"ØˆKØ�O‰O×Ñ×*Ñ*¨4Ó0ˆØ!"×Ñ˜ÑØˆr/   c                 óÆ   • [        USU R                  R                  -   S 5      nU(       a  U" X R                  5      u  p4X44$ UR                  X R                  5      u  p4X44$ )NÚas_)rŸ   r4   Úvendorr5   )r)   ÚnodeÚvendor_implr‘   r’   s        r-   r‡   ÚSQLCompiler.compile  sZ   € Ü˜d E¨D¯O©O×,BÑ,BÑ$BÀDÓIˆÞÙ% d¯O©OÓ<‰KˆCð ˆ{Ðð Ÿ+™+ d¯O©OÓ<‰KˆCØˆ{Ðr/   c                 ó  ^• U R                   R                  nU R                  R                   Vs/ s H4  nUR	                  U R
                  U R                   U R                  5      PM6     nnUR                  (       dP  U HI  nUR                  R                  (       a  [        S5      eUR                  5       (       d  M@  [        S5      e   O1U R                  R                  (       a  US:X  a  U H
  nSUl        M     SnU GH‰  n UR                  R                  (       d˜  U R                  R                  (       a}  UR                  R                  5       Ul        UR                  R                  / U R                  R                  QU R                  R                  QU R                  R                  Q75        UR!                  SS9u  p‰UR                  R"                  (       aa  UR$                  (       d  SR'                  U5      nO{U R                  R(                  (       d  UR                  (       d  S	R'                  U5      nO=U R                  R(                  (       a"  UR                  (       a  S	R'                  U5      nXxU	44-  nGMŒ     U(       d  [*        eU R                   R,                  R.                  U   n
U(       a  US:X  a  U
S-  n
SmU R                  R(                  (       d  UR                  (       a  S	m[1        U4S jU 5       6 u  p¼SR'                  U
5      R3                  U5      /n/ nU H  nUR5                  U5        M     XÞ4$ s  snf ! [*         a    US:X  d  US
:X  a  U(       a   GMz  e f = f)Nz>LIMIT/OFFSET not allowed in subqueries of compound statements.z:ORDER BY not allowed in subqueries of compound statements.ÚunionFr1   Tr]   zSELECT * FROM ({})z({})Ú
differencez ALLz{}c              3   óN   >#   • U  H  u  pTR                  U5      U4v •  M     g 7fr%   )Úformat)rX   r‘   ÚargsÚbracess      €r-   rZ   Ú1SQLCompiler.get_combinator_sql.<locals>.<genexpr>m  s!   øé € Ð@º%©Y¨Sˆv�}‰}˜SÓ! 4Õ(º%ùs   ƒ"%z {} )r4   r…   rC   rë   Úget_compilerrD   rE   Ú%supports_slicing_ordering_in_compoundÚ	is_slicedr   ri   Úvalues_selectÚcloneÚ
set_valuesrt   r²   r5   rÖ   Ú supports_parentheses_in_compoundr  Úsubqueryr   r  Úset_operatorsÚzipÚjoinr‚   )r)   rÖ   r_   r…   rC   Ú	compilersr3   ÚpartsÚpart_sqlÚ	part_argsÚcombinator_sqlÚ	sql_partsÚ
args_partsr•   r’   Úpartr  s                   @r-   Úget_combinator_sqlÚSQLCompiler.get_combinator_sql%  så  ø€ Ø—?‘?×+Ñ+ˆð Ÿ™×4Ò4ó
â4�ð ×Ñ˜tŸz™z¨4¯?©?¸D×<LÑ<LÖMÙ4ð 	ð 
ð ×=×=Û%�Ø—>‘>×+×+Ü'ØXóð ð ×(Ñ(×*Ó*Ü'ØTóð ò &ð �Z‰Z×!×! j°GÓ&;Û%�ð
 (-�Ö$ñ &ð ˆÜ!ˆHð%ð  —~‘~×3×3¸¿
¹
×8P×8PØ%-§^¡^×%9Ñ%9Ó%;�H”NØ—N‘N×-Ñ-ðØ!ŸZ™Z×4Ñ4ðà!ŸZ™Z×5Ñ5ðð "ŸZ™Z×9Ñ9ñôð '/§o¡oÀt oÐ&LÑ#�Ø—>‘>×,×,ð $×D×DØ#7×#>Ñ#>¸xÓ#H™ð Ÿ
™
×+×+Ø'×M×Mà#)§=¡=°Ó#:˜øà—J‘J×'×'Ø ×F×Fà%Ÿ}™}¨XÓ6�HØ YÐ/Ð1Ñ1“ñA "öN Ü Ð ØŸ™×,Ñ,×:Ñ:¸:ÑFˆÞ�: Ó(Ø˜fÑ$ˆNØˆØ�z‰z×"×" x×'U×'UØˆFÜ #Ü@¹%Ó@ð!
Ñˆ	ð —-‘- Ó/×4Ñ4°YÓ?Ð@ˆØˆÛˆDØ�M‰M˜$Öñ àˆ~ÐùòY
øôn "ó ð  Ó(¨Z¸<Ó-GÎEÛØðús   °;MÄFMÍM?Í=M?c                 ó  ^^^^^• / nU R                   (       a  UR                  U R                   5        U R                  (       a  UR                  U R                  5        U R                  R	                  5       mSTl        TR                   R                  U5      Tl         U R                  SS9S    VVVs0 s H  u  p#oBU_M
     snnnm[        TR                  5       5      m[        5       m0 mUUUUU4S jnU" [        U R                  R                  5       5      5        U R                  R                  TR                  5        VVs0 s H  u  p$U[        XB5      _M     snn5      U l        / nU R!                  5        Hg  tpsU" UR#                  5       5        UR                  UR                  TR                  5        VVs0 s H  u  p$U[        XB5      _M     snn5      5        Mi     TR%                  U R&                  U R(                  U R*                  S9nUR-                  SSS9u  pšU R/                  U R                  5      u  p¼SU	S	U R(                  R0                  R3                  S
5      SU/nT(       a  TR                  5        Vs/ s H'  o@R(                  R0                  R3                  U5      PM)     nnSSR5                  U5      S/UQS	PU R(                  R0                  R3                  S5      Pn[        U
5      U-   nU(       ac  / nU H9  nU R/                  U5      u  nnUR                  U5        UR7                  U5        M;     UR7                  SSR5                  U5      /5        Xß4$ s  snnnf s  snnf s  snnf s  snf )NTr]   r   c                 óö  >• U (       añ  U R                  5       nUT;   a  M  TR                  U5      =n(       a  UTU'   O±[        U[        5      (       a   U R	                  UR                  5       5        O|[        U[        5      (       a0  UR                  T;  a  U R	                  UR                  5       5        O7[        T5      nSU 3nTR                  U5        TR                  X5        UTU'   U (       a  Mð  g g )NÚqual)Úpoprˆ   r~   r   r‚   Úget_source_expressionsr   r*   rc   r   rì   )	rŠ   rŒ   Úselect_aliasÚnum_qual_aliasÚinner_queryÚqual_aliasesÚreplacementsrG   Úselect_aliasess	       €€€€€r-   Úcollect_replacementsÚ9SQLCompiler.get_qualify_sql.<locals>.collect_replacements‰  sÔ   ø€ ÞØ"—‘Ó(�Ø˜<Ó'ÙØ%+§Z¡Z°Ó%5Ð5�\Õ5Ø)5�L Ò&Ü ¤f×-Ñ-Ø×&Ñ& t×'BÑ'BÓ'DÕEÜ ¤c×*Ñ*Ø—y‘y¨Ó6Ø#×*Ñ*¨4×+FÑ+FÓ+HÔIøä%(¨Ó%6�NØ%)¨.Ð)9Ð#:�LØ ×$Ñ$ \Ô2Ø×.Ñ.¨tÔBØ)5�L Ñ&÷! ’+r/   )r4   rE   F)Úwith_limitsr^   úSELECT * FROM (Ú)rn   ÚWHEREÚSELECTú, zFROM (Úqualify_maskzORDER BY)rj   r€   rm   rC   r  r  r,   rb   r{   ÚvaluesÚlistrn   ÚleavesÚreplace_expressionsr®   r   ri   r.  r  rD   r4   rE   r5   r‡   r  r  r  r‚   )r)   Úwhere_partsrŒ   r�   r�   r5  rs   Úorder_by_exprÚinner_query_compilerÚ	inner_sqlÚinner_paramsÚqualify_sqlÚqualify_paramsr•   r¹   r’   Úordering_sqlsrË   Úordering_sqlÚordering_paramsr1  r2  r3  rG   r4  s                       @@@@@r-   Úget_qualify_sqlÚSQLCompiler.get_qualify_sqlu  s9  ü€ ØˆØ�:�:Ø×Ñ˜tŸz™zÔ*Ø�;�;Ø×Ñ˜tŸ{™{Ô+Ø—j‘j×&Ñ&Ó(ˆØ#ˆÔØ'×-Ñ-×7Ñ7¸ÓDˆÔð /3¯o©oÈt¨oÐ.TÐUVÒ.Wõ
Ú.W™N˜D U�%ŠKÑ.Wó
ˆô ˜VŸ]™]›_Ó-ˆÜ“uˆØˆ÷	6ñ 	6ñ& 	œT $§,¡,×"5Ñ"5Ó"7Ó8Ô9Ø—|‘|×7Ñ7Ø7C×7IÑ7IÔ7KÔLÒ7K©¨ˆT”3�uÓ#Ò#Ñ7KÒLó
ˆŒð ˆØ!%×!2Ñ!2Ö!4ÐˆMÙ  ×!EÑ!EÓ!GÔHØ�O‰OØ×1Ñ1Ø?K×?QÑ?QÔ?SÔTÒ?S±°�Tœ3˜uÓ+Ò+Ñ?SÒTóöñ "5ð  +×7Ñ7Ø�J‰J 4§?¡?À×@PÑ@Pð  8ð  
Ðð #7×"=Ñ"=ð ð "ð #>ð #
Ñˆ	ð '+§l¡l°4·<±<Ó&@Ñ#ˆàØØØ�O‰O×Ñ×*Ñ*¨9Ó5ØØð
ˆö ð HNÇ}Á}ÄÓWÂ¸e—O‘O×'Ñ'×2Ñ2°5Ö9ÁˆDÐWàØ—	‘	˜$“Øðð ð	ð
 ðð —‘×#Ñ#×.Ñ.¨~Ó>ðˆFô �lÓ# nÑ4ˆö ØˆMÛ$�Ø04·±¸XÓ0FÑ-�˜oØ×$Ñ$ \Ô2Ø—‘˜oÖ.ñ %ð �M‰M˜: t§y¡y°Ó'?Ð@ÔAØˆ~Ðùôc
ùó8 Mùó Uùò4 Xs   Â7M7ÅM>
ÇNÊ.N
c                 óð  • U R                   R                  R                  5       n U R                   R                  nU R	                  U=(       d    [        U5      S9u  pVnSnU=(       a    U R                   R                  n	U R                   R                  nU R                  R                  n
U(       ac  [        U
SR                  U5      5      (       d  [        SR                  U5      5      eU R                  X@R                   R                  5      u  p¼GOÁU R                  (       a  U R                  5       u  p¼SnGOšU R!                  5       u  pÞU R#                  5       u  nn U R$                  b  U R'                  U R$                  5      OS/ 4u  nn U R.                  b  U R'                  U R.                  5      OS/ 4u  nnS/n/ nU R                   R0                  (       a2  U R                  R2                  R5                  UU5      u  nnUU-  nXÎ-  n/ nU R6                  U-    H_  u  nu  nnnU(       a,  U< SU R                  R2                  R9                  U5      < 3nUR;                  U5        UR=                  U5        Ma     US	R?                  U5      /-  nU(       a	  US
/UQ-  nOHU R                  R                  R@                  (       a#  X°R                  R                  R@                  /-  nUR;                  U5        U R                   RB                  (       Gaˆ  U
RD                  (       Gav  U R                  RG                  5       (       a  U
RH                  (       a  [K        S5      eU	(       a  U
RL                  (       d  [        S5      eU R                   RN                  nU R                   RP                  nU R                   RR                  nU R                   RT                  nU(       a  U
RV                  (       d  [        S5      eU(       a  U
RX                  (       d  [        S5      eU(       a  U
RZ                  (       d  [        S5      eU(       a  U
R\                  (       d  [        S5      eU R                  R2                  R_                  UUU Ra                  5       US9nU(       a"  U
Rb                  (       a  UR=                  U5        U(       a%  UR=                  SU-  5        UR;                  U5        / nU H(  u  n n!UR=                  U 5        UR;                  U!5        M*     U(       au  U(       a  [e        S5      eU=(       d$    U R                  R2                  Rg                  5       nUR=                  SS	R?                  U5      -  5        U Rh                  (       a  SnU(       a%  UR=                  SU-  5        UR;                  U5        U R                   Rj                  (       as  URm                  SU R                  R2                  Rn                  " U R                   Rj                  R                  40 U R                   Rj                  Rp                  D65        U(       a{  / n"U H,  u  nu  n#n$nU"R=                  U#5        UR;                  U$5        M.     SS	R?                  U"5      -  n%U(       a  U
Rr                  (       a
  S/UQSPU%PnOUR=                  U%5        U	(       a]  UR=                  U R                  R2                  Ru                  U R                   Rv                  U R                   Rx                  5      5        U(       a"  U
Rb                  (       d  UR=                  U5        U R                   Rz                  (       GaD  U(       Ga<  / n&/ n'[}        U R6                  SS9 HÎ  u  n(u  n)nnU(       a`  U&R=                  U R                  R2                  R9                  S5      < SU R                  R2                  R9                  U5      < 35        Mq  U)R                  U)R€                  S05      n*U*Rƒ                  X R                  5      u  n+n,U&R=                  U+5        U'R;                  U,5        MÐ     SS	R?                  U&5      < SS R?                  U5      < S!3[…        U'U-   5      4U R                   R‡                  U5        $ S R?                  U5      […        U5      4U R                   R‡                  U5        $ ! [(         a    U R*                  (       a  e S/ nn GNœ[,         a    S/ nn GN¬f = f! [,         a    S/ nn GN‘f = f! U R                   R‡                  U5        f = f)"z¥
Create the SQL for this query. Return the SQL string and list of
parameters.

If 'with_limits' is False, any limit/offset information is not included
in the query.
r]   Nzsupports_select_{}z-{} is not supported on this database backend.Ú z0 = 1r;  z AS r<  ÚFROMz:select_for_update cannot be used outside of a transaction.zNLIMIT/OFFSET is not supported with select_for_update on this database backend.z1NOWAIT is not supported on this database backend.z6SKIP LOCKED is not supported on this database backend.z8FOR UPDATE OF is not supported on this database backend.z<FOR NO KEY UPDATE is not supported on this database backend.)ÚnowaitÚskip_lockedÚofÚno_keyúWHERE %sz1annotate() + distinct(fields) is not implemented.zGROUP BY %sz	HAVING %sr   zORDER BY %sr8  r9  rx   ry   r  rÆ   úSELECT ú FROM (Ú ú
) subquery)DrC   rW   rÏ   rÖ   ru   rp   r  r4   r…   rŸ   r  r	   r(  Úcombinator_allrn   rL  Úget_distinctÚget_from_clauserj   r‡   r   rE   r   rm   rû   r  Údistinct_sqlrG   r  r‚   r€   r  Úbare_select_suffixÚselect_for_updateÚhas_select_for_updateÚget_autocommitÚsupports_transactionsr   Ú%supports_select_for_update_with_limitÚselect_for_update_nowaitÚselect_for_update_skip_lockedÚselect_for_update_ofÚselect_for_no_key_updateÚhas_select_for_update_nowaitÚ!has_select_for_update_skip_lockedÚhas_select_for_update_ofÚhas_select_for_no_key_updateÚfor_update_sqlÚ"get_select_for_update_of_argumentsÚfor_update_after_fromÚNotImplementedErrorÚforce_no_orderingrJ   Úexplain_infoÚinsertÚexplain_query_prefixÚoptionsÚ#requires_compound_order_by_subqueryÚlimit_offset_sqlÚlow_markÚ	high_markr  r�   Úrelabeled_cloner�   r5   ÚtupleÚreset_refcounts)-r)   r7  r^   Úrefcounts_beforerÖ   rt   rs   rl   Úfor_update_partÚwith_limit_offsetr…   r•   r’   rü   Údistinct_paramsÚfrom_Úf_paramsrj   Úw_paramsrm   Úh_paramsÚdistinct_resultÚout_colsr�   Ús_sqlÚs_paramsr�   rQ  rR  rS  rT  ÚgroupingÚg_sqlÚg_paramsrË   Úo_sqlÚo_paramsÚorder_by_sqlÚsub_selectsÚ
sub_paramsrŽ   rG   Úselect_cloneÚ	subselectÚ	subparamss-                                                r-   r5   ÚSQLCompiler.as_sqlÕ  så  € ð  Ÿ:™:×4Ñ4×9Ñ9Ó;ÐðV	9ØŸ™×.Ñ.ˆJØ/3×/AÑ/AØ!1×!E´T¸*Ó5Eð 0Bð 0Ñ,ˆL Hð #ˆOà +× D°·
±
×0DÑ0DÐØŸ™×.Ñ.ˆJØ—‘×/Ñ/ˆHÞÜ˜xÐ)=×)DÑ)DÀZÓ)P×QÑQÜ+ØG×NÑNØ&óóð ð
 "&×!8Ñ!8Ø§
¡
× 9Ñ 9ó"‘�™ð ——Ø!%×!5Ñ!5Ó!7‘�Ø’à37×3DÑ3DÓ3FÑ0�ð #'×"6Ñ"6Ó"8‘��xð
-à48·J±JÑ4J˜Ÿ™ T§Z¡ZÔ0ÐQSÐUWÐPXñ $�E˜8ð.ð  Ÿ;™;Ñ2ð Ÿ™ T§[¡[Ô1à  "˜Xñ %�F˜Hð #˜�Ø�à—:‘:×&×&Ø7;·±×7JÑ7J×7WÑ7WØ'Ø'ó8Ñ4�O _ð ˜oÑ-�FØÑ-�Fà�Ø37·;±;ÀÔ3MÑ/�AÑ(˜˜x¨%Þã!Ø ŸO™O×/Ñ/×:Ñ:¸5ÕAð!˜ð —M‘M (Ô+Ø—O‘O EÖ*ñ 4Nð ˜4Ÿ9™9 XÓ.Ð/Ñ/�ÞØ˜vÐ.¨Ð.Ñ.‘FØ—_‘_×-Ñ-×@×@ØŸ™×7Ñ7×JÑJÐKÑK�FØ—‘˜hÔ'à—:‘:×/×/Ð/°H×4R×4RÐ4RàŸ™×6Ñ6×8Ñ8ð %×:×:ä8ØXóð ö
 *Ø (× N× Nä/ðJóð ð "ŸZ™Z×@Ñ@�FØ"&§*¡*×"JÑ"J�KØŸ™×8Ñ8�BØ!ŸZ™Z×@Ñ@�Fö  h×&K×&KÜ/ØOóð ö %¨X×-W×-WÜ/ØTóð ö  H×$E×$EÜ/ØVóð ö  ¨×(M×(MÜ/ð0óð ð '+§o¡o×&9Ñ&9×&HÑ&HØ%Ø$/Ø×BÑBÓDØ%ð	 'Ið '�Oö # x×'E×'EØ—M‘M /Ô2æØ—M‘M *¨uÑ"4Ô5Ø—M‘M (Ô+à�Û'/‘O�E˜8Ø—O‘O EÔ*Ø—M‘M (Ö+ñ (0ö Þ&Ü1ØOóð ð  (×R¨4¯?©?×+>Ñ+>×+PÑ+PÓ+R�HØ—M‘M -°$·)±)¸HÓ2EÑ"EÔFØ×*×*Ø#'˜ÞØ—M‘M +°Ñ"6Ô7Ø—M‘M (Ô+à�z‰z×&×&Ø—‘ØØ—O‘O×'Ñ'×<Ò<ØŸ
™
×/Ñ/×6Ñ6ñàŸ*™*×1Ñ1×9Ñ9ñôö Ø�Û/7Ñ+�AÑ+˜˜x¨Ø—O‘O EÔ*Ø—M‘M (Ö+ñ 08ð  -¨t¯y©y¸Ó/BÑB�Þ (×"N×"NØ/ÐL°&ÐL¸#ÐL¸|ÐL‘Fà—M‘M ,Ô/æ Ø—‘Ø—O‘O×'Ñ'×8Ñ8ØŸ
™
×+Ñ+¨T¯Z©Z×-AÑ-Aóôö  x×'E×'EØ—‘˜oÔ.à�z‰z×"×"Ð"§|ð !�Ø�
Ü1:¸4¿;¹;ÈaÔ1PÑ-�EÑ-˜F A uÞØ#×*Ñ*ð !%§¡× 3Ñ 3× >Ñ >¸zÖ JØ $§¡× 3Ñ 3× >Ñ >¸uÕ Eðöð (.×'=Ñ'=Ø#Ÿ\™\¨:Ð6ó(˜ð 0<×/BÑ/BØ §/¡/ó0Ñ,˜	 9ð $×*Ñ*¨9Ô5Ø"×)Ñ)¨)Ö4ò# 2Qð& —I‘I˜kÖ*Ø—H‘H˜VÖ$ðô ˜ fÑ,Ó-ð.ð �J‰J×&Ñ&Ð'7Õ8ð —8‘8˜FÓ#¤U¨6£]Ð2ð �J‰J×&Ñ&Ð'7Õ8øôm &ó 2Ø×'×'Øà&-¨r˜8�Eš8Ü$ó -Ø&(¨"˜8�Eš8ð-ûô %ó .Ø')¨2˜H�FšHð.ûðR �J‰J×&Ñ&Ð'7Õ8úsa   ¦D=e Å$/d Æ/e Ç[6e ãe ä e ä,e ä/e ä<e ä?e å e åeåe åeåe åe5Nc                 óF  • / nUc  U R                   R                  5       =nc  U$ U=(       d    U R                   R                  5       nSU0nUR                   HÅ  nUR                  R
                  R                  nXƒR                  :X  a  SnU(       a>  Ub;  [        UR
                  R                  UR
                  R                  5      (       a  My  U(       a  Xq;  a  M‡  U R                   R                  X8X&5      n	UR                  U	5      n
UR                  U
5        MÇ     U$ )a  
Compute the default columns for selecting every field in the base
model. Will sometimes be called to pull in related models (e.g. via
select_related), in which case "opts" and "start_alias" will be given
to provide a starting point for the traversal.

Return a list of strings, quoted appropriately for use in SQL
directly, as well as a set of aliases used in the select statement (if
'as_pairs' is True, return a list of (alias, col_name) pairs instead
of strings as the first component and None as the second component).
N)rC   rÊ   ra   Úconcrete_fieldsrO   Ú_metaÚconcrete_modelÚ
issubclassÚjoin_parent_modelÚget_colr€   )r)   r¸   Ústart_aliasÚoptsr§   r•   Úseen_modelsrÞ   rO   r�   rê   s              r-   r±   ÚSQLCompiler.get_default_columns¶  sü   € ð ˆØ‰<ØŸ
™
×+Ñ+Ó-Ð-�Ñ6Ø�Ø!×C T§Z¡Z×%AÑ%AÓ%Cˆð ˜[Ð)ˆà×)Ô)ˆEØ—K‘K×%Ñ%×4Ñ4ˆEð Ÿ
™
Ó"Ø�æØÑ%ÜØ×%Ñ%×4Ñ4°e·k±k×6PÑ6P÷ñ ñ Þ˜uÓ7ÙØ—J‘J×0Ñ0°¸kÓWˆEØ—]‘] 5Ó)ˆFØ�M‰M˜&Ö!ñ/ *ð0 ˆr/   c                 ó:  • / n/ nU R                   R                  5       nU R                   R                   Há  nUR                  [        5      nU R                  XSS5      u  pgp‰p¦nU R                   R                  XyU
5      u  pxnU H�  nX@R                   R                  ;   a6  UR                  U R                  R                  R                  U5      5        MR  U R                  U" XÈ5      5      u  pÞUR                  U5        UR                  U5        M�     Mã     X4$ )z®
Return a quoted list of fields to use in DISTINCT ON part of the query.

This method can alter the tables in the query, and thus it must be
called before get_from_clause().
N)rC   rÊ   rü   r×   r
   Ú_setup_joinsÚ
trim_joinsr²   r€   r4   r  r  r‡   )r)   r•   r’   rœ  rÒ   r!  r�   Útargetsr�   ÚjoinsÚpathÚtransform_functionr›   r  Úps                  r-   r[  ÚSQLCompiler.get_distinctè  sò   € ð ˆØˆØ�z‰z×"Ñ"Ó$ˆà—J‘J×.Ô.ˆDØ—J‘JœzÓ*ˆEØDH×DUÑDUØ˜TóEÑAˆA˜ dÐ/Að !%§
¡
× 5Ñ 5°gÀdÓ KÑˆG˜AÛ!�ØŸ:™:×7Ñ7Ó7Ø—M‘M $§/¡/×"5Ñ"5×"@Ñ"@ÀÓ"FÖGàŸ<™<Ñ(:¸6Ó(IÓJ‘D�AØ—M‘M !Ô$Ø—M‘M !Ö$ó "ñ /ð ˆ~Ðr/   c                 óö  ^ ^• [        TU5      u  mnUS:H  nTR                  [        5      nT R                  X‚U5      u  n	n
nnnnnU	R                  (       Ga[  UR
                  (       GaI  [        U	SS5      US   :w  Ga4  TS:w  Ga-  [        USS5      (       Gd  U=(       d
    [        5       n[        U 4S jU 5       5      nXå;   a  [        S	5      eUR                  U5        / nUR
                   H½  n[        US
5      (       a<  [        U[        5      (       d'  U(       a  UR                  5       OUR                  5       n[        U[        5      (       a,  UR!                  UR#                  T [         35      S45        M‘  UR%                  U4S jT R'                  UX#Xe5       5       5        M¿     U$ T R(                  R+                  X«U5      u  p£nU
 Vs/ s H  n[        U" UU5      US9S4PM     sn$ s  snf )zÂ
Return the table alias (the name might be ambiguous, the alias will
not be) and column name for ordering by the given 'name' parameter.
The 'name' is of the form 'field1__field2__...__fieldN'.
rÁ   ÚattnameNéÿÿÿÿÚpkÚhas_transformsFc              3   ól   >#   • U  H)  n[        TR                  R                  U   S S5      v •  M+     g7f)Ú	join_colsN)rŸ   rC   r`   )rX   Újr)   s     €r-   rZ   Ú1SQLCompiler.find_ordering_name.<locals>.<genexpr>$  s/   øé € ð ÚMRÈ”˜Ÿ
™
×,Ñ,¨QÑ/°¸d×CÐCÊUùs   ƒ14z!Infinite loop caused by ordering.rÂ   c              3   ó^   >#   • U  H"  u  pUR                  T [         35      U4v •  M$     g 7fr%   )Úprefix_referencesr
   )rX   rŒ   r“   rÒ   s      €r-   rZ   r°  6  s7   øé € ð ò)™˜ð ×+Ñ+¨t¨f´Z°LÐ,AÓBÀFÕKò)ùs   ƒ*-rÄ   )r   r×   r
   r   Úis_relationrË   rŸ   r{   rz  r   r   r|   r~   r   ÚdescrÎ   r€   r²  r‚   rÚ   rC   r¡  )r)   rÒ   rœ  r�   rÇ   Úalready_seenrà   rÅ   ÚpiecesrÞ   r¢  r£  r¤  r¥  Ú
join_tupleÚresultsÚitemr�   rý   s   ``                 r-   rÚ   ÚSQLCompiler.find_ordering_name  sð  ù€ ô $ D¨-Ó8‰ˆˆeØ˜f‘_ˆ
Ø—‘œJÓ'ˆð ×Ñ˜f¨EÓ2ñ	
ØØØØØØØð ××ÐØ——�Ü˜˜y¨$Ó/°6¸"±:Ô=Ø˜”ÜÐ.Ð0@À%×HÒHð (×0¬3«5ˆLÜô ÙMRóó ˆJð Ó)Ü Ð!DÓEÐEØ×Ñ˜ZÔ(àˆGØŸœ�Ü˜4Ð!5×6Ñ6¼zØœ'÷@ñ @ö +5˜4Ÿ9™9œ;¸$¿(¹(»*�DÜ˜d¤G×,Ñ,Ø—N‘NØ×/Ñ/°4°&¼¸Ð0EÓFÈÐNôñ Ø—‘ô à(,×(?Ñ(?Ø˜d¨5ô)óö ñ &ð  ˆNØ ŸJ™J×1Ñ1°'À$ÓGÑˆ˜ñ ó
â�ô Ñ'¨¨5Ó1¸jÑIÈ5ÓQÙñ
ð 	
ùò 
s   ÇG6c                 óž   • U=(       d    U R                   R                  5       nU R                   R                  XU5      u  pEp&pxUS   nXEX6XrU4$ )zü
Helper method for get_order_by() and get_distinct().

get_ordering() and get_distinct() must produce same target columns on
same input, as the prefixes of get_ordering() and get_distinct() must
match. Executing SQL where this is not true is an error.
rª  )rC   ra   Úsetup_joins)	r)   r¶  rœ  r�   rÞ   r¢  r£  r¤  r¥  s	            r-   r   ÚSQLCompiler._setup_joinsC  sW   € ð ×7˜Ÿ™×5Ñ5Ó7ˆØ@DÇ
Á
×@VÑ@VØ˜%óA
Ñ=ˆ˜ Tð �b‘	ˆØ˜u¨TÐ9KÐKÐKr/   c                 óˆ  • / n/ n[        U R                  R                  5       Hr  nU R                  R                  U   (       d  M#   U R                  R                  U   nU R                  U5      u  pVUR                  U5        UR                  U5        Mt     U R                  R                   H{  nU R                  R                  U5      u  p8X0R                  R                  ;  d  U R                  R                  U   S:X  d  MX  UR                  SU R                  U5      -  5        M}     X4$ ! [         a     GM  f = f)a›  
Return a list of strings that are joined together to go after the
"FROM" part of the query, as well as a list any extra parameters that
need to be included. Subclasses, can override this to create a
from-clause via a "select".

This should only be called after any SQL construction methods that
might change the tables that are needed. This means the select columns,
ordering, and distinct must be done first.
rx   z, %s)rz  rC   r`   rW   ÚKeyErrorr‡   r€   r‚   Úextra_tablesÚtable_aliasrØ   )	r)   r•   r’   r�   Úfrom_clauseÚ
clause_sqlÚclause_paramsrý   r�   s	            r-   r\  ÚSQLCompiler.get_from_clauseR  s  € ð ˆØˆÜ˜4Ÿ:™:×/Ñ/Ö0ˆEØ—:‘:×,Ñ,¨U×3ÙðØ"Ÿj™j×2Ñ2°5Ñ9�ð
 )-¯©°[Ó(AÑ%ˆJØ�M‰M˜*Ô%Ø�M‰M˜-Ö(ñ 1ð —‘×(Ô(ˆAØ—z‘z×-Ñ-¨aÓ0‰HˆEð
 ŸZ™Z×1Ñ1Ó1Ø—:‘:×,Ñ,¨UÑ3°qÕ8à—‘˜f t×'CÑ'CÀEÓ'JÑJÖKñ )ð ˆ~Ðøô# ó ó ðús   ÁD2Ä2
EÅ Ec                 ó  ^ ^• UU 4S jn/ n	U(       d  UT R                   R                  :”  a  U	$ T(       d4  T R                   R                  5       mT R                   R                  5       n[	        5       n
UcA  [        T R                   R                  [        5      nU(       a  T R                   R                  nS nTR                   GH  nU
R                  UR                  5        U(       a  UR                  UR                  0 5      nUR                  (       dQ  U(       d  UR                  U;   a:  [        SUR                  < SSR                  U" 5       5      =(       d    S< 35      eOSn[        XÇXb5      (       d  Mº  UR                  U5      =(       d    0 nUR                   R"                  USUR$                  UR&                  (       a  UR                   R$                  OS	 SS
.nU	R)                  U5        / nT R                   R+                  UR                  /TU5      u      nn  nUS   nT R-                  UUUR                   R"                  R.                  S9nU H0  nUR)                  [1        U5      5        UR)                  US45        M2     UUS'   T R3                  UUUR                   R"                  R.                  UUS-   UU5      nU" UU5        GM     U(       Ga  TR4                   Vs/ s HK  nUR6                  R&                  (       d  M   UR8                  (       a  M3  UR6                  UR:                  4PMM     nnU GH–  u  nnUR                  U5      =(       d    0 n[        UUUUSS9(       d  M5  UR=                  5       nU
R                  U5        T R                   R+                  U/TU5      nUR>                  S   n[A        UTR"                  5      =(       a    UTR"                  LnUUSUR                   R$                  UR$                  US
.nU	R)                  U5        / nT R-                  UUUR.                  TR"                  S9nU H0  nUR)                  [1        U5      5        UR)                  US45        M2     UUS'   UR                  UR=                  5       0 5      nT R3                  UUUR.                  UUS-   UU5      nU" UU5        GM™     S nS nS n [C        U5       GH–  n!US:”  a    GOŽU!T R                   RD                  ;   d  M)  U
R                  U!5        T R                   R+                  U!/TU5      u  n"nn#n  nU#R"                  nUS   n[A        UTR"                  5      =(       a    UTR"                  LnUU"S[1        U5      S::  a  [G        UU"5      OU[G        U U!5      US
.nU	R)                  U5        / nUR                  U!U"45      =(       d    0 n$T R-                  U$UUR.                  TR"                  S9nU H0  nUR)                  [1        U5      5        UR)                  US45        M2     UUS'   UR                  U!0 5      n%T R3                  UU$UR.                  UUS-   U%US9nU" UU5        GM™     [	        U5      RI                  U
5      n&U&(       aH  S U& 5       n'[        SSR                  U'5      < SSR                  U" 5       5      =(       d    S< 35      eU	$ s  snf )zõ
Fill in the information needed for a select_related query. The current
depth is measured as the number of connections away from the root model
(for example, cur_depth=1 means we are looking at models with direct
connections to the root model).
c                  ó�   >• S TR                    5       n S TR                   5       n[        XTR                  R                  5      $ )Nc              3   ó^   #   • U  H#  oR                   (       d  M  UR                  v •  M%     g 7fr%   )r³  rÒ   ©rX   Úfs     r-   rZ   ÚQSQLCompiler.get_related_selections.<locals>._get_field_choices.<locals>.<genexpr>‰  s   é € ÐKªk¨¿]½]›f˜aŸfžfªkùs   ‚-š-c              3   ó�   #   • U  H<  nUR                   R                  (       d  M   UR                   R                  5       v •  M>     g 7fr%   )rÞ   ÚuniqueÚrelated_query_namerÉ  s     r-   rZ   rË  Š  s4   é € ð â-�AØ—7‘7—>•>ó -�—‘×*Ñ*×,Ð,Ú-ùs
   ‚A¥!A)ÚfieldsÚrelated_objectsr   rC   Ú_filtered_relations)Údirect_choicesÚreverse_choicesrœ  r)   s     €€r-   Ú_get_field_choicesÚ>SQLCompiler.get_related_selections.<locals>._get_field_choicesˆ  sD   ø€ ÙK¨d¯kªkÓKˆNñà×-Ò-óˆOô
 Ø°·±×1OÑ1Oóð r/   Nc                 ó   • XS'   g )Nr¥   r1   )rI   r¥   s     r-   Úget_related_klass_infosÚCSQLCompiler.get_related_selections.<locals>.get_related_klass_infos¤  s   € Ø0CÐ,Ò-r/   z/Non-relational field given in select_related: 'z'. Choices are: r<  z(none)Fc                 ó   • g r%   r1   )ÚxÚys     r-   Ú<lambda>Ú4SQLCompiler.get_related_selections.<locals>.<lambda>Å  s   €  $r/   )rO   rÞ   ÚreverseÚlocal_setterÚremote_setterr§   rª  )r›  rœ  r¤   rx   T)rÞ  )r›  rœ  r§   c                 óJ   • U(       a  U R                   R                  X!5        g g r%   )Úremote_fieldÚset_cached_value)Úfinal_fieldÚobjÚfrom_objs      r-   rß  Ú8SQLCompiler.get_related_selections.<locals>.local_setter  s   € æØ×,Ñ,×=Ñ=¸hÕLð r/   c                 ó   • g r%   r1   )rå  ræ  s     r-   Úlocal_setter_noopÚ=SQLCompiler.get_related_selections.<locals>.local_setter_noop  s   € Ør/   c                 ó   • [        X U5        g r%   )Úsetattr)rÒ   rå  ræ  s      r-   rà  Ú9SQLCompiler.get_related_selections.<locals>.remote_setter  s   € Ü˜¨Õ,r/   é   )rœ  Ú
root_aliasÚ	cur_depthÚ	requestedÚ
restrictedc              3   ó,   #   • U  H
  nS U-  v •  M     g7f)z'%s'Nr1   )rX   Úss     r-   rZ   Ú5SQLCompiler.get_related_selections.<locals>.<genexpr>V  s   é € Ð!GÒ6F° &¨1¦*Ò6Fùs   ‚z/Invalid field name(s) given in select_related: z. Choices are: )%rC   Ú	max_depthrÊ   ra   r{   r~   r³   ÚdictrÏ  r   rÒ   rˆ   r³  r   r  r   râ  rO   rã  rÍ  r€   r¼  r±   r–  rc   r´   rÐ  rÞ   Úmany_to_manyÚrelated_modelrÎ  r£  r˜  r?  rÑ  r   r  )(r)   rG   r¸   rœ  rï  rð  rñ  rò  rÔ  r¥   Úfields_foundr×  rÊ  ÚnextÚrelated_select_maskrI   r¤   r�   r£  r�   Úcolumnsr­   Únext_klass_infosÚoÚrelated_fieldsÚrelated_fieldrO   Úrelated_field_nameÚ	join_infor§   rß  ré  rà  rÒ   rä  Ú	join_optsÚfield_select_maskÚnext_requestedÚfields_not_foundÚinvalid_fieldss(   `  `                                    r-   r´   Ú"SQLCompiler.get_related_selectionsw  s   ù€ ö"		ð !ÐÞ˜i¨$¯*©*×*>Ñ*>Ó>à&Ð&æØ—:‘:×&Ñ&Ó(ˆDØŸ™×5Ñ5Ó7ˆJô “uˆØÑÜ# D§J¡J×$=Ñ$=¼tÓDˆJÞØ ŸJ™J×5Ñ5�	ò	Dð —•ˆAØ×Ñ˜QŸV™VÔ$æØ —}‘} Q§V¡V¨RÓ0�Ø—}—}ö ˜qŸv™v¨Ó2Ý(ð !"§¤Ø $§	¡	Ñ*<Ó*>Ó ?× KÀ8Ñ Kð	óð øð �ä)¨!¸×PÑPÙØ"-§/¡/°!Ó"4×":¸ÐàŸ™×-Ñ-ØØ Ø !× 2Ñ 2à—8—8ð "#§¡×!@Ò!@á&Ø$ñ	ˆJð  ×&Ñ& zÔ2ØˆMØ#'§:¡:×#9Ñ#9¸1¿6¹6¸(ÀDÈ*Ó#UÑ ˆAˆq�!�U˜A˜qØ˜"‘IˆEØ×.Ñ.Ø#°¸Q¿^¹^×=QÑ=Q×=WÑ=Wð /ð ˆGó �Ø×$Ñ$¤S¨£[Ô1Ø—‘˜s D˜kÖ*ñ ð +8ˆJ�Ñ'Ø#×:Ñ:ØØ#Ø—‘×$Ñ$×*Ñ*ØØ˜A‘ØØó Ðñ $ JÐ0@×Añk ÷n ð ×-Ò-óâ-�AØ—7‘7—>•>ó +à*+¯.­.ó +�—‘˜!Ÿ/™/Ó*Ù-ð ð ô
 )7Ñ$�˜uØ&1§o¡o°mÓ&D×&JÈÐ#Ü-Ø!ØØØ'Ø ÷ñ à%2×%EÑ%EÓ%GÐ"Ø× Ñ Ð!3Ô4à ŸJ™J×2Ñ2Ø'Ð(¨$°
ó�	ð "Ÿ™¨Ñ+�Ü(¨°·
±
Ó;×WÀÈTÏZÉZÐ@W�à"Ø*Ø#Ø$1×$>Ñ$>×$OÑ$OØ%2×%CÑ%CØ#.ñ�
ð $×*Ñ*¨:Ô6Ø "�Ø×2Ñ2Ø'Ø %ØŸ™Ø $§
¡
ð	 3ð �ó #�CØ!×(Ñ(¬¨V«Ô5Ø—M‘M 3¨ +Ö.ñ #ð /<�
˜?Ñ+Ø —}‘} ]×%EÑ%EÓ%GÈÓL�Ø#'×#>Ñ#>ØØ'Ø—K‘KØØ ‘MØØó$Ð ñ (¨
Ð4D×Eñc )7òfMò
ò-ô ˜YŸ�à˜q“=ÚØ˜4Ÿ:™:×9Ñ9Õ9Ø ×$Ñ$ TÔ*Ø=A¿Z¹Z×=SÑ=SØ˜  jó>Ñ:�K  I¨u°a¸ð &ŸO™O�EØ! "™I�Eä" 5¨$¯*©*Ó5×Q¸%ÀtÇzÁzÐ:Qð  ð "'Ø!,Ø#'ô  # 5›z¨Q›ô $ L°+Ô>à!2ä)0°ÀÓ)EØ'2ñ"�Jð (×.Ñ.¨zÔ:Ø$&�MØ(3¯©¸¸{Ð8KÓ(L×(RÐPRÐ%Ø"×6Ñ6Ø)Ø$)Ø"Ÿ[™[Ø$(§J¡Jð	 7ð �Gó  '˜Ø%×,Ñ,¬S°«[Ô9ØŸ™ s¨D kÖ2ñ  'ð 3@�J˜Ñ/Ø%.§]¡]°4¸Ó%<�NØ'+×'BÑ'BØØ)Ø"Ÿ[™[Ø#(Ø"+¨a¡-Ø"0Ø#-ð (Cð (Ð$ñ ,¨JÐ8H×Iñc (ôd  # 9›~×8Ñ8¸ÓFÐÞÙ!GÑ6FÓ!G�Ý ð Ÿ	™	 .Ö1ØŸ	™	Ñ"4Ó"6Ó7×C¸8ÑCð	óð ð #Ð"ùòAs   Ë7\Ì\Ì-\c           	      óf  ^ ^• U 4S jmU 4S jnUU 4S jnT R                   (       d  / $ / n/ nT R                  R                   GH+  nT R                   nUS:X  a	  U" U5      nO’UR                  [        5       H[  n/ UR                  S/ 5      QT" U5      Q7n	U	 H3  n
U
S   nU
S   (       a  UR                  nUR                  U:X  d  M0  U
n  MW     Sn  O   Uc  UR                  U5        M©  U" U5      nUc  M¶  T R                  R                  R                  (       a&  UR                  T R                  U5      S	   5        GM  UR                  T R                  UR                  5      5        GM.     U(       a7  [        S
SR!                  U5      < SSR!                  U" 5       5      < S35      eU$ )zS
Return a quoted list of arguments for the SELECT FOR UPDATE OF part of
the query.
c           	   3   ó¾  >#   • U S   R                   R                  nUR                   R                  R                  5        H’  u  p#UR                   R	                  5       nUUSU S    Vs/ s H[  nTR
                  U   S   R                  R                  U:X  d,  TR
                  U   S   R                  R                  U;   d  MY  UPM]     snS.v •  M”     g s  snf 7f)NrO   Fr¤   r   )rO   rÞ   rÞ  r¤   )r–  r—  Úparentsr®   Úget_parent_listrG   r›   rO   )rI   r—  Úparent_modelÚparent_linkÚparent_listr—   r)   s         €r-   Ú_get_parent_klass_infoÚNSQLCompiler.get_select_for_update_of_arguments.<locals>._get_parent_klass_infog  sÓ   øé € Ø'¨Ñ0×6Ñ6×EÑEˆNØ-;×-AÑ-A×-IÑ-I×-OÑ-OÖ-QÑ)�Ø*×0Ñ0×@Ñ@ÓB�à)Ø(Ø$ð -7°Ò,Gó&â,G˜Lð !ŸK™K¨Ñ5°aÑ8×?Ñ?×EÑEÈÓUØ#Ÿ{™{¨<Ñ8¸Ñ;×BÑB×HÑHÈKÑW÷ %Ù,Gñ&ñ	ô ò .Rùò&ùs   ƒA'CÁ*ACÃCÃCc                 óÌ   >• U S   R                   R                  nU S    HA  nTR                  U   S   R                  R                  U:X  d  M/  TR                  U   S   s  $    g)z°
Find the first selected column from a model. If it doesn't exist,
don't lock a model.

select_fields is filled recursively, so it also contains fields
from the parent models.
rO   r¤   r   N)r–  r—  rG   r›   rO   )rI   r—  r—   r)   s      €r-   Ú"_get_first_selected_col_from_modelÚZSQLCompiler.get_select_for_update_of_arguments.<locals>._get_first_selected_col_from_modelz  s`   ø€ ð (¨Ñ0×6Ñ6×EÑEˆNØ *¨?Ô ;�Ø—;‘;˜|Ñ,¨QÑ/×6Ñ6×<Ñ<ÀÕNØŸ;™; |Ñ4°QÑ7Ò7ò !<r/   c               3   óÌ  >^#   • [         R                  " STR                  4/5      n U (       a´  U R                  5       u  pUc  / mSv •  OBUS   nUS   (       a  UR                  nXR
                  /-   m[        R                  " T5      v •  U R                  U4S jT" U5       5       5        U R                  U4S jUR                  S/ 5       5       5        U (       a  M³  gg7f)z<Yield all allowed field paths in breadth-first search order.Nr)   rÞ   rÞ  c              3   ó,   >#   • U  H	  nTU4v •  M     g 7fr%   r1   ©rX   rI   r¤  s     €r-   rZ   Ú]SQLCompiler.get_select_for_update_of_arguments.<locals>._get_field_choices.<locals>.<genexpr>•  s   øé € ð â&H˜
ð ˜:Õ&Ú&Hùó   ƒc              3   ó,   >#   • U  H	  nTU4v •  M     g 7fr%   r1   r  s     €r-   rZ   r  ™  s   øé € ð â&O˜
ð ˜:Õ&Ú&Oùr  r¥   )
ÚcollectionsÚdequerI   Úpopleftrâ  rÒ   r
   r  r‚   rˆ   )ÚqueueÚparent_pathrI   rÞ   r¤  r  r)   s       @€€r-   rÔ  ÚJSQLCompiler.get_select_for_update_of_arguments.<locals>._get_field_choices‡  sÉ   ùé € ä×%Ò%¨¨d¯o©oÐ'>Ð&?Ó@ˆEÞØ*/¯-©-«/Ñ'�ØÑ&Ø�DØ “Là& wÑ/�EØ! )×,Ø %× 2Ñ 2˜Ø&¯*©*¨Ñ5�DÜ$Ÿ/š/¨$Ó/Ò/Ø—‘ô á&<¸ZÔ&Hóô ð —‘ô à&0§n¡nÐ5JÈBÔ&Oóô ÷ ’%ùs   „CC$Ã"C$r)   r¥   rÞ   rÞ  Nr   z<Invalid field name(s) given in select_for_update(of=(...)): r<  zI. Only relational fields followed in the query are allowed. Choices are: rÆ   )rI   rC   rf  r×   r
   rˆ   râ  rÒ   r€   r4   r…   Úselect_for_update_of_columnr‡   rØ   r�   r   r  )r)   r  rÔ  r•   Úinvalid_namesrÒ   rI   r­   r'  Úklass_infosÚrelated_klass_inforÞ   r  s   `           @r-   rm  Ú.SQLCompiler.get_select_for_update_of_argumentsa  s‡  ù€ õ	õ&	8ö	ð. ��ØˆIØˆØˆØ—J‘J×3Õ3ˆDØŸ™ˆJØ�v‹~Ù8¸ÓD‘à ŸJ™J¤zÖ2�Dð#Ø#Ÿ™Ð(=¸rÓBð#á/°
Ó;ñ#�Kó /:Ð*Ø 2°7Ñ ;˜Ø-¨i×8Ø$)×$6Ñ$6˜EØ Ÿ:™:¨Õ-Ø);˜JÚ!ñ /:ð &*˜
Ùñ 3ð Ñ%Ø!×(Ñ(¨Ô.ÙÙ8¸ÓD�Ø‹Ø—?‘?×+Ñ+×G×GØ—M‘M $§,¡,¨sÓ"3°AÑ"6×7à—M‘M $×">Ñ">¸s¿y¹yÓ"I×Jñ9 4ö: Ýð
 —I‘I˜mÖ,Ø—I‘IÑ0Ó2Ö3ðóð ð ˆr/   c                 óô   • 0 n[        U5       Hf  u  p4U(       d  M  U R                  R                  R                  U5      nUR                  U R                  5      nU(       d	  U(       d  M^  XV-   U4X#'   Mh     U$ r%   )r�   r4   r  Úget_db_converters)r)   rŠ   Ú
convertersÚirÑ   Úbackend_convertersÚfield_converterss          r-   Úget_convertersÚSQLCompiler.get_convertersË  sm   € Øˆ
Ü& {Ö3‰MˆAßˆzØ%)§_¡_×%8Ñ%8×%JÑ%JÈ:Ó%VÐ"Ø#-×#?Ñ#?ÀÇÁÓ#PÐ Þ%×)9Ð)9Ø%7Ñ%JÈJÐ$W�J“Mñ 4ð Ðr/   c              #   óÜ   #   • U R                   n[        UR                  5       5      n[        [        U5       H/  nU H"  u  nu  pgXE   nU H  n	U	" X‡U5      nM     X„U'   M$     Uv •  M1     g 7fr%   )r4   r?  r®   Úmap)
r)   Úrowsr)  r4   ÚrowÚposÚconvsrÑ   ÚvalueÚ	converters
             r-   Úapply_convertersÚSQLCompiler.apply_convertersÕ  sn   é € Ø—_‘_ˆ
Ü˜*×*Ñ*Ó,Ó-ˆ
Ü”t˜T–?ˆCÛ,6Ñ(�Ñ(�eØ™�Û!&�IÙ% e¸ÓD’Eñ "'à �C“ñ	 -7ð
 ŒIò #ùs   ‚A*A,c                 ó@  • Uc  U R                  [        X4S9nU R                  SU R                    Vs/ s H  oUS   PM	     nnU R	                  U5      n[
        R                  " U5      nU(       a(  U R                  X‡5      nU(       a  [        [        U5      nU$ s  snf )z>Return an iterator over the results from executing this query.)Úchunked_fetchÚ
chunk_sizer   )
Úexecute_sqlr   rG   rd   r-  r   Úfrom_iterabler7  r0  rz  )	r)   r¸  Útuple_expectedr:  r;  rô  rÏ  r)  r1  s	            r-   Úresults_iterÚSQLCompiler.results_iterà  s™   € ð ‰?Ø×&Ñ&Ü ]ð 'ð ˆGð !%§¡¨A°·±Ñ ?Ó@Ò ?˜1�A”$Ñ ?ˆÐ@Ø×(Ñ(¨Ó0ˆ
Ü×"Ò" 7Ó+ˆÞØ×(Ñ(¨Ó:ˆDÞÜœ5 $Ó'�Øˆùò As   ³Bc                 ó>   • [        U R                  [        5      5      $ )zh
Backends (e.g. NoSQL) can override this in order to use optimized
versions of "query has any results."
)rp   r<  r   rP   s    r-   Úhas_resultsÚSQLCompiler.has_resultsõ  s   € ô
 �D×$Ñ$¤VÓ,Ó-Ð-r/   c                 ó¬  • U=(       d    [         n U R                  5       u  pEU(       d  [        e U(       a  U R
                  R                  5       nOU R
                  R                  5       n UR                  XE5        U[        :X  a  U$ U[        :X  aI   UR                  5       nU(       a  USU R                   UR                  5         $ UUR                  5         $ U[         :X  a  UR                  5         g[        UU R
                  R                   R"                  U R$                  (       a  U R                  OSU5      nU(       a%  U R
                  R                   R&                  (       d  [)        U5      $ U$ ! [         a    U[        :X  a  [	        / 5      s $  gf = f! [         a    UR                  5         e f = f! UR                  5         f = f)aM  
Run the query against the database and return the result(s). The
return value is a single data item if result_type is SINGLE, or an
iterator over the results if the result_type is MULTI.

result_type is either MULTI (use fetchmany() to retrieve all rows),
SINGLE (only retrieve a single row), or None. In this last case, the
cursor is returned if any query is executed, since it's used by
subclasses such as InsertQuery). It's possible, however, that no query
is needed, as the filters describe an empty set. In that case, None is
returned, to avoid any unnecessary database interaction.
Nr   )r   r5   r   r   Úiterr4   Úchunked_cursorÚcursorÚexecuteÚ	ExceptionÚcloser   r   Úfetchonerd   Úcursor_iterr…   Úempty_fetchmany_valuerq   Úcan_use_chunked_readsr?  )	r)   Úresult_typer:  r;  r‘   r’   rG  Úvalr•   s	            r-   r<  ÚSQLCompiler.execute_sqlü  sz  € ð "×/¤Zˆð	ØŸ+™+›-‰KˆCÞÜ$Ð$ð ö Ø—_‘_×3Ñ3Ó5‰Fà—_‘_×+Ñ+Ó-ˆFð	Ø�N‰N˜3Ô'ð œ&Ó àˆMØœ&Ó ðØ—o‘oÓ'�ÞØ˜q 4§>¡>Ð2ð —‘•ð ð —‘•Øœ*Ó$Ø�L‰LŒNØäØØ�O‰O×$Ñ$×:Ñ:Ø"×3×3ˆD�NŠN¸Øó	
ˆö  D§O¡O×$<Ñ$<×$R×$Rô
 ˜“<ÐØˆøôY ó 	ØœeÓ#Ü˜B“x’áð		ûô ó 	à�L‰LŒNØð	ûð  —‘•ús/   ‘E; Á.F" Â%G ÃG Å;FÆFÆ"F>ÇGc                 ó¦  • UR                   nU R                  R                  R                  n[	        U R
                  R                  5       Hj  u  pgU R                  U5      u  p‰U" U5      < SU" X&   5      < 3n
U R
                  R                  R                  [        U< SU
< 3U	5      [        5        Ml     U R                  5       u  p¼SU-  U4$ )NrÆ   ú = zEXISTS (%s))rØ   r4   r  r  r�   rC   rG   r‡   rj   r   r   r   r5   )r)   r�   rý  r3   ÚqnÚqn2rŽ   Ú
select_colÚlhs_sqlÚ
lhs_paramsÚrhsr‘   r’   s                r-   Úas_subquery_conditionÚ!SQLCompiler.as_subquery_condition>  sª   € Ø×-Ñ-ˆØ�o‰o×!Ñ!×,Ñ,ˆä!*¨4¯:©:×+<Ñ+<Ö!=ÑˆEØ"&§,¡,¨zÓ":ÑˆGÙ žY©¨G©NÕ(;Ð<ˆCØ�J‰J×Ñ× Ñ ¤³WºcÐ(BÀJÓ!OÔQTÖUñ ">ð
 —k‘k“m‰ˆØ˜sÑ" FÐ*Ð*r/   c              #   ój  ^#   • [        U R                  5       5      nU R                  R                  R                  nU(       a$  UR                  5       S:X  a  [        R                  O[        mUS    H;  n[        U[        5      (       d  SR                  U4S jU 5       5      v •  M7  Uv •  M=     g 7f)NÚjsonr   rX  c              3   ó4   >#   • U  H  nT" U5      v •  M     g 7fr%   r1   )rX   ÚcÚoutput_formatters     €r-   rZ   Ú,SQLCompiler.explain_query.<locals>.<genexpr>R  s   øé € Ð@ºC°qÑ/°×2Ð2ºCùs   ƒ)r?  r<  rC   rq  r  Úlowerr]  Údumpsr2   r~   r  )r)   r•   Úformat_r2  r`  s       @r-   Úexplain_queryÚSQLCompiler.explain_queryJ  s�   øé € Ü�d×&Ñ&Ó(Ó)ˆð —*‘*×)Ñ)×0Ñ0ˆÞ)0°W·]±]³_ÈÓ5Nœ4Ÿ:š:ÔTWÐØ˜!”9ˆCÜ˜c¤3×'Ñ'Ø—h‘hÔ@¹CÓ@Ó@Ô@à”	ò	 ùs   ƒB0B3)rJ   rH   rd   r4   rE   rq   rm   rI   rn   rC   rF   rG   rD   rj   )T)F)TF)NNN)NrÀ   N)NNrx   NN))r7   r8   r9   r:   r    ÚreÚ	MULTILINEÚDOTALLrî   r(   rQ   re   ru   rr   r„   rb   râ   ri   ro   rØ   r‡   r(  rL  r5   r±   r[  rÚ   r   r\  r´   rm  r-  r7  r   r?  rB  r   r<  rZ  re  r;   r1   r/   r-   r?   r?   '   sÿ   † á%Ø Ø
�‰�r—y‘yÑ ó€Nô
#ò"
ô*ô0ò eòNô@U,ònBòH;òzòò,òNò`^ô@_9ðD EIô0òdð6 IMô?
òBLò#ðR ØØØØôh#òThòTò	ð ØØØ*ôò*.ð  ¨uÐAXô@òD
+õ
r/   r?   c                   óD   • \ rS rSrSrSrS rS rS rS r	S r
SS	 jrS
rg)ÚSQLInsertCompileriW  Nr1   c                 ó  • Uc  U/ pCOY[        US5      (       a  U R                  U5      u  p4O4[        US5      (       a  UR                  X U R                  5      U/pCOSU/pCU R                  R                  R                  X45      nX44$ )aD  
Take a field and a value intended to be saved on that field, and
return placeholder SQL and accompanying params. Check for raw values,
expressions, and fields with get_placeholder() defined in that order.

When field is None, consider the value raw and use it as the
placeholder, with no corresponding parameters returned.
r5   Úget_placeholderú%s)r|   r‡   rm  r4   r  Úmodify_insert_params)r)   rÞ   rP  r‘   r’   s        r-   Úfield_as_sqlÚSQLInsertCompiler.field_as_sql[  sˆ   € ð ‰=à˜r‘Ü�S˜(×#Ñ#àŸ,™, sÓ+‰KˆC�Ü�UÐ-×.Ñ.ð  ×/Ñ/°¸4¿?¹?ÓKÈcÈU‘ð   �ð —‘×$Ñ$×9Ñ9¸#ÓFˆàˆ{Ðr/   c                 ó’  • [        US5      (       až  UR                  U R                  SSS9nUR                  (       a  [	        SU< SU< S35      eUR
                  (       a  [        SUR                  < S	U< S
35      eUR                  (       a  [        SUR                  < S	U< S
35      eUR                  X R                  S9$ )z„
Prepare a value to be used in a query by resolving it if it is an
expression and otherwise calling the field's get_db_prep_save().
rÂ   FT©rå   Úfor_savezFailed to insert expression "z" on z<. F() expressions can only be used to update, not to insert.ú3Aggregate functions are not allowed in this query (Ú=ú).ú2Window expressions are not allowed in this query (©r4   )r|   rÂ   rC   Úcontains_column_referencesÚ
ValueErrorÚcontains_aggregater   rÒ   Úcontains_over_clauseÚget_db_prep_saver4   )r)   rÞ   r5  s      r-   Úprepare_valueÚSQLInsertCompiler.prepare_value{  s»   € ô
 �5Ð.×/Ñ/Ø×,Ñ,Ø—
‘
¨¸ð -ð ˆEð ×/×/Ý ãDIË5ðRóð ð ×'×'Ý à"'§*¤*«eð5óð ð ×)×)Ý à—z”z£5ð*óð ð ×%Ñ% e¿¹Ð%ÐHÐHr/   c                 ó‚   • U R                   R                  (       a  [        X!R                  5      $ UR	                  USS9$ )zŽ
Get the given field's value off the given obj. pre_save() is used for
things like auto_now on DateTimeField. Skip it if this is a raw query.
T)r   )rC   ÚrawrŸ   r©  Úpre_save)r)   rÞ   rå  s      r-   Úpre_save_valÚSQLInsertCompiler.pre_save_val˜  s1   € ð
 �:‰:�>�>Ü˜3§¡Ó.Ð.Ø�~‰~˜c tˆ~Ð,Ð,r/   c                 óÜ   ^ ^• U(       d  / / 4$ UU 4S jU 5       nS U 5       n[        U6 u  pVU VVV	s/ s H  ow VV	s/ s H  oˆ  H  o™PM     M     sn	nPM!     nnnn	XV4$ s  sn	nf s  sn	nnf )aã  
Take a sequence of N fields and a sequence of M rows of values, and
generate placeholder SQL and parameters for each field and value.
Return a pair containing:
 * a sequence of M rows of N SQL placeholder strings, and
 * a sequence of M rows of corresponding parameter values.

Each placeholder string may contain any number of '%s' interpolation
strings, and each parameter row will contain exactly as many params
as the total number of '%s's in the corresponding placeholder row.
c              3   óP   >#   • U  H  nU4S  j[        TU5       5       v •  M     g7f)c              3   óJ   >#   • U  H  u  pTR                  X5      v •  M     g 7fr%   )rp  )rX   rÞ   Úvr)   s      €r-   rZ   Ú>SQLInsertCompiler.assemble_as_sql.<locals>.<genexpr>.<genexpr>³  s#   øé € ÐJÒ9I©X¨UˆT×Ñ˜u×(Ð(Ò9Iùs   ƒ #N©r  )rX   r2  rÏ  r)   s     €€r-   rZ   Ú4SQLInsertCompiler.assemble_as_sql.<locals>.<genexpr>²  s(   øé € ð !
â!�ô K¼¸VÀSÔ9I×JÐJÚ!ùs   ƒ#&c              3   ó2   #   • U  H  n[        U6 v •  M     g 7fr%   r‹  )rX   r2  s     r-   rZ   rŒ  ¹  s   é € Ð"NÒ8M°¤3¨¥9Ò8Mùs   ‚r‹  )
r)   rÏ  Ú
value_rowsÚrows_of_fields_as_sqlÚsql_and_param_pair_rowsÚplaceholder_rowsÚ
param_rowsr2  Úpsr¦  s
   ``        r-   Úassemble_as_sqlÚ!SQLInsertCompiler.assemble_as_sql¡  s�   ù€ ö Ø�r�6ˆMõ!
á!ó!
Ðñ #OÑ8MÓ"NÐô (+Ð,CÐ'DÑ$Ðñ @JÕJºz¸ 3Ô3¢3˜R³¨1’q±‘q¡3Õ3¹zˆ
ÒJàÐ+Ð+ùó 4ùÔJs   ´
A'¾A!ÁA'Á!A'c                 ód	  ^• U R                   R                  R                  mU R                  R	                  5       nU R                   R                  R                  U R                  R                  S9nU< ST" UR                  5      < 3/nU R                  R                  =(       d    UR                  /nUR                  SSR                  U4S jU 5       5      -  5        U R                  R                  (       aX  U R                  R                   VVs/ s H4  nU Vs/ s H#  nU R                  X`R                  Xe5      5      PM%     snPM6     nnnOKU R                  R                   Vs/ s H'  o€R                   R                  R                  5       /PM)     nnS /nU R                   (       + =(       a     U R                   R"                  R$                  n	U R'                  XG5      u  p«U R                   R                  R)                  UU R                  R                  S U R                  R*                   5       S U R                  R,                   5       5      nU R                   (       GaT  U R                   R"                  R.                  (       Ga.  U R                   R"                  R0                  (       a7  UR                  U R                   R                  R3                  XJ5      5        UnO,UR                  SSR                  U
S	   5      -  5        US	   /nU(       a  UR                  U5        U R                   R                  R5                  U R                   5      u  oàl        U(       a   UR                  U5        XÐR6                  /-  nSR                  U5      [9        [:        R<                  " U5      5      4/$ U	(       ap  UR                  U R                   R                  R3                  XJ5      5        U(       a  UR                  U5        SR                  U5      [9        S
 U 5       5      4/$ U(       a  UR                  U5        [?        X«5       VVs/ s H/  u  nnSR                  USSR                  U5      -  /-   5      U4PM1     snn$ s  snf s  snnf s  snf s  snnf )N)Úon_conflictrX  z(%s)r<  c              3   óH   >#   • U  H  nT" UR                   5      v •  M     g 7fr%   ©rê   )rX   rÊ  rT  s     €r-   rZ   Ú+SQLInsertCompiler.as_sql.<locals>.<genexpr>Î  s   øé € Ð(Fºv¸!©¨A¯H©H¯¨ºvùó   ƒ"c              3   ó8   #   • U  H  oR                   v •  M     g 7fr%   r™  rÉ  s     r-   rZ   rš  ì  ó   é € Ð8Ò7˜!�XŽXÒ7ùó   ‚c              3   ó8   #   • U  H  oR                   v •  M     g 7fr%   r™  rÉ  s     r-   rZ   rš  í  r�  rž  zVALUES (%s)r   c              3   ó6   #   • U  H  o  H  o"v •  M     M     g 7fr%   r1   )rX   r“  r¦  s      r-   rZ   rš    s   é € Ð,Pº°2ËRÈ¬QÉR©Qºùs   ‚) r4   r  r  rC   rÊ   Úinsert_statementr—  Údb_tablerÏ  r«  r€   r  Úobjsr  r„  Úpk_default_valueÚreturning_fieldsr…   Úhas_bulk_insertr”  Úon_conflict_suffix_sqlÚupdate_fieldsÚunique_fieldsÚcan_return_columns_from_insertÚ can_return_rows_from_bulk_insertÚbulk_insert_sqlÚreturn_insert_columnsÚreturning_paramsrz  r   r=  r  )r)   rœ  r¡  r•   rÏ  rå  rÞ   rŽ  r�   Úcan_bulkr‘  r’  r§  r’   Úr_sqlr¦  ÚvalsrT  s                    @r-   r5   ÚSQLInsertCompiler.as_sqlÄ  sÅ  ø€ ð �_‰_× Ñ ×+Ñ+ˆØ�z‰z×"Ñ"Ó$ˆØŸ?™?×.Ñ.×?Ñ?ØŸ
™
×.Ñ.ð @ð 
Ðó .©r°$·-±-Õ/@ÐAÐBˆØ—‘×"Ñ"×/ t§w¡w iˆØ�‰�f˜tŸy™yÔ(F¹vÓ(FÓFÑFÔGà�:‰:××ð  Ÿ:™:Ÿ?š?ôò
 +�Cñ "(óâ!'˜ð ×&Ñ& u×.?Ñ.?ÀÓ.KÖLÙ!'ôñ +ð ñ ˆJð CGÇ*Á*Ç/Â/óÚBQ¸Q—‘×$Ñ$×5Ñ5Ó7Ó8Á/ð ð ð �VˆFð ×%Ñ%Ô%×R¨$¯/©/×*BÑ*B×*RÑ*Rð 	ð (,×';Ñ';¸FÓ'OÑ$Ðà!%§¡×!4Ñ!4×!KÑ!KØØ�J‰J×"Ñ"Ù8˜tŸz™z×7Ò7Ó8Ù8˜tŸz™z×7Ò7Ó8ó	"
Ðð ×!×!Ð!Ø—‘×(Ñ(×G×GÐGà�‰×'Ñ'×H×HØ—‘Ø—O‘O×'Ñ'×7Ñ7¸ÓQôð $‘à—‘˜m¨d¯i©iÐ8HÈÑ8KÓ.LÑLÔMØ$ Q™-˜�Þ%Ø—‘Ð4Ô5ð ,0¯?©?×+>Ñ+>×+TÑ+TØ×%Ñ%ó,Ñ(ˆEÔ(ö Ø—‘˜eÔ$Ø×0Ñ0Ð1Ñ1�Ø—X‘X˜fÓ%¤u¬U×-@Ò-@ÀÓ-HÓ'IÐJÐKÐKæØ�M‰M˜$Ÿ/™/×-Ñ-×=Ñ=¸fÓWÔXÞ%Ø—‘Ð4Ô5Ø—X‘X˜fÓ%¤uÑ,P¹Ó,PÓ'PÐQÐRÐRæ%Ø—‘Ð4Ô5ô  #Ð#3Ô@ôâ@‘G�A�tð —‘˜& M°D·I±I¸a³LÑ$@Ð#AÑAÓBÀDÓIÙ@òð ùò{ùóùòùójs$   Ä
R!Ä"*RÅR!Å/.R'Ñ"6R,ÒR!c                 ó  • U(       aJ  [        U R                  R                  5      S:w  a'  U R                  R                  R
                  (       d   eU R                  R                  5       nXl        U R                  R                  5        nU R                  5        H  u  pEUR                  XE5        M     U R                  (       d  / sS S S 5        $ U R                  R                  R
                  (       aI  [        U R                  R                  5      S:”  a&  U R                  R                  R                  U5      nOÃU R                  R                  R                  (       aW  [        U R                  R                  5      S:X  d   eU R                  R                  R                  UU R                  5      /nOGU R                  R                  R!                  UUR"                  UR$                  R&                  5      4/nS S S 5        U R                   Vs/ s H  owR)                  UR"                  5      PM     nnU R+                  U5      n	U	(       a  [-        U R/                  WU	5      5      nW$ ! , (       d  f       Nw= fs  snf rú   )rc   rC   r£  r4   r…   r«  rÊ   r¥  rG  r5   rH  r  Úfetch_returned_insert_rowsrª  Úfetch_returned_insert_columnsr®  Úlast_insert_idr¢  r«  rê   rš  r-  r?  r7  )
r)   r¥  rœ  rG  r‘   r’   r1  rÞ   r¹   r)  s
             r-   r<  ÚSQLInsertCompiler.execute_sql  sÙ  € æÜ�D—J‘J—O‘OÓ$¨Ó)Ø—O‘O×,Ñ,×M×Mð	
ð 
ð
 �z‰z×"Ñ"Ó$ˆØ 0ÔØ�_‰_×#Ñ#Ô%¨Ø#Ÿ{™{ž}‘�Ø—‘˜sÖ+ñ  -à×(×(Ø÷	 &Ñ%ð —‘×(Ñ(×I×IÜ˜Ÿ
™
Ÿ™Ó(¨1Ó,à—‘×*Ñ*×EÑEÀfÓM‘Ø—‘×)Ñ)×H×HÜ˜4Ÿ:™:Ÿ?™?Ó+¨qÓ0Ð0Ð0à—O‘O×'Ñ'×EÑEØØ×-Ñ-óð‘ð Ÿ™×+Ñ+×:Ñ:Ø"Ø ŸM™MØ ŸG™GŸN™Nóðð�÷' &ð8 ;?×:OÒ:OÓPÒ:O°—‘˜dŸm™mÖ,Ñ:OˆÐPØ×(Ñ(¨Ó.ˆ
ÞÜ˜×-Ñ-¨d°JÓ?Ó@ˆDØˆ÷A &Õ%üò8 Qs   Â=I5ÃD1I5È$JÉ5
J)r¥  r®  r%   )r7   r8   r9   r:   r¥  r®  rp  r  r„  r”  r5   r<  r;   r1   r/   r-   rk  rk  W  s1   † ØÐØÐòò@Iò:-ò!,òFN÷`(r/   rk  c                   óP   • \ rS rSr\S 5       r\S 5       r\S 5       rS r	S r
Srg)	ÚSQLDeleteCompileri?  c                 ó�   ^ • T R                   R                  5         [        U 4S jT R                   R                   5       5      S:H  $ )Nc              3   ó\   >#   • U  H!  nTR                   R                  U   S :„  v •  M#     g7frU   rV   )rX   rý   r)   s     €r-   rZ   Ú1SQLDeleteCompiler.single_alias.<locals>.<genexpr>D  s'   øé € ÐRÒ=Q¸�4—:‘:×,Ñ,¨QÑ/°!Ö3Ò=Qùr\   rx   )rC   ra   Úsumr`   rP   s   `r-   Úsingle_aliasÚSQLDeleteCompiler.single_alias@  s6   ø€ ð 	�
‰
×$Ñ$Ô&ÜÔR¸T¿Z¹Z×=QÒ=QÓRÓRÐVWÑWÐWr/   c                 óº   ^ ^• [        U[        5      (       a  UR                  T:H  $ [        US5      (       d  g[	        UU 4S jUR                  5        5       5      $ )Nr.  Fc              3   óH   >#   • U  H  nTR                  UT5      v •  M     g 7fr%   )Ú_expr_refs_base_model)rX   Úsource_exprÚ
base_modelÚclss     €€r-   rZ   Ú:SQLDeleteCompiler._expr_refs_base_model.<locals>.<genexpr>L  s(   øé € ð 
â<�ð ×%Ñ% k°:×>Ð>Ú<ùr›  )r~   r   rO   r|   Úanyr.  )rÅ  rŒ   rÄ  s   ` `r-   rÂ  Ú'SQLDeleteCompiler._expr_refs_base_modelF  sS   ù€ ä�dœE×"Ñ"Ø—:‘: Ñ+Ð+Ü�tÐ5×6Ñ6ØÜõ 
à#×:Ñ:Ô<ó
ó 
ð 	
r/   c                 óÂ   ^ • [        U 4S j[        T R                  R                  R	                  5       T R                  R
                  R                  5       5       5      $ )Nc              3   óp   >#   • U  H+  nTR                  UTR                  R                  5      v •  M-     g 7fr%   )rÂ  rC   rO   )rX   rŒ   r)   s     €r-   rZ   ÚESQLDeleteCompiler.contains_self_reference_subquery.<locals>.<genexpr>S  s6   øé € ð 
ò�ð ×&Ñ& t¨T¯Z©Z×-=Ñ-=×>Ð>òùs   ƒ36)rÇ  r   rC   r¶   r>  rj   ÚchildrenrP   s   `r-   Ú contains_self_reference_subqueryÚ2SQLDeleteCompiler.contains_self_reference_subqueryQ  sJ   ø€ äô 
äØ—
‘
×&Ñ&×-Ñ-Ó/°·±×1AÑ1A×1JÑ1Jôó
ó 
ð 	
r/   c                 óÆ   • SU R                  UR                  5      -  n U R                  UR                  5      u  p4U SU 3[        U5      4$ ! [         a    US4s $ f = f)NzDELETE FROM %sr1   z WHERE )rØ   Ú
base_tabler‡   rj   r   rz  )r)   rC   Údeleterj   r’   s        r-   Ú_as_sqlÚSQLDeleteCompiler._as_sqlZ  sm   € Ø! D×$@Ñ$@À×AQÑAQÓ$RÑRˆð	Ø ŸL™L¨¯©Ó5‰MˆEð �˜  Ð(¬%°«-Ð7Ð7øô ó 	Ø˜2�:Òð	ús    A ÁA ÁA c                 óÖ  • U R                   (       a,  U R                  (       d  U R                  U R                  5      $ U R                  R	                  5       n[
        Ul        UR                  5         U R                  R                  R                  R                  nUR                  U R                  R                  5       5      /Ul        [        U R                  R                  5      nU R                  R                  R                   (       d8  UR#                  U R                  S9R%                  5       u  pE['        SU-  U5      nUR)                  SU5        U R                  U5      $ )úN
Create the SQL for this query. Return the SQL string and list of
parameters.
ry  zSELECT * FROM (%s) subqueryÚpk__in)r¾  rÍ  rÒ  rC   r  r   r,   Úclear_select_clauserO   r–  r«  rš  ra   rG   r4   r…   Úupdate_can_self_selectr  r5   r   Ú
add_filter)r)   Úinnerqr«  Úouterqr‘   r’   s         r-   r5   ÚSQLDeleteCompiler.as_sqlb  s  € ð
 ×× T×%J×%JØ—<‘< §
¡
Ó+Ð+Ø—‘×!Ñ!Ó#ˆÜ ˆÔØ×"Ñ"Ô$Ø�Z‰Z×Ñ×#Ñ#×&Ñ&ˆØŸ™ D§J¡J×$@Ñ$@Ó$BÓCÐDˆŒÜ�t—z‘z×'Ñ'Ó(ˆØ�‰×'Ñ'×>×>ð !×-Ñ-¸¿¹Ð-ÐI×PÑPÓR‰KˆCÜÐ9¸CÑ?ÀÓHˆFØ×Ñ˜( FÔ+Ø�|‰|˜FÓ#Ð#r/   r1   N)r7   r8   r9   r:   r   r¾  ÚclassmethodrÂ  rÍ  rÒ  r5   r;   r1   r/   r-   r¹  r¹  ?  sH   † ØñXó ðXð
 ñ
ó ð
ð ñ
ó ð
ò8õ$r/   r¹  c                   ó:   ^ • \ rS rSrS rU 4S jrU 4S jrSrU =r$ )ÚSQLUpdateCompilerix  c           
      óÆ  • U R                  5         U R                  R                  (       d  gU R                  n/ / p2U R                  R                   GHî  u  pEn[	        US5      (       az  UR                  U R                  SSS9nUR                  (       a  [        SUR                  < SU< S35      eUR                  (       a  [        S	UR                  < SU< S35      eO`[	        US
5      (       aO  UR                  (       a  UR                  U5      nO,[        SU< SU< SUR                  R                  < S35      eUR                  X`R                   S9n[	        US5      (       a  UR#                  X`U R                   5      nOSnUR$                  n[	        US5      (       aG  U R'                  U5      u  pšUR)                  U" U5      < SXy-  < 35        UR+                  U
5        GMŸ  Ub2  UR)                  U" U5      < SU< 35        UR)                  U5        GMÔ  UR)                  SU" U5      -  5        GMñ     U R                  R,                  nSU" U5      -  SR/                  U5      /n U R'                  U R                  R0                  5      u  pÚUR)                  SU-  5        SR/                  U5      [5        X:-   5      4$ ! [2         a    / n
 N,f = f)rÕ  )rO  r1   rÂ   FTrs  ru  rv  rw  rx  Úprepare_database_savezTried to update field z with a model instance, z. Use a value compatible with rÆ   ry  rm  rn  r5   rS  z	%s = NULLzUPDATE %s SETr<  rU  rX  )ru   rC   r>  rØ   r|   rÂ   r|  r   rÒ   r}  râ  rá  Ú	TypeErrorr,   r7   r~  r4   rm  rê   r‡   r€   r‚   rÐ  r  rj   r   rz  )r)   rT  r>  Úupdate_paramsrÞ   rO   rP  ÚplaceholderrÒ   r‘   r’   rá   r•   rj   s                 r-   r5   ÚSQLUpdateCompiler.as_sqly  s|  € ð
 	×ÑÔØ�z‰z× × ØØ×)Ñ)ˆØ " B�Ø!%§¡×!2Õ!2ÑˆE˜#Ü�sÐ0×1Ñ1Ø×,Ñ,Ø—J‘J¨E¸Dð -ð �ð ×)×)Ý$à&+§j¤j³#ð7óð ð ×+×+Ý$à&+§j¤j³#ð7óð ð ,ô
 ˜Ð5×6Ñ6Ø×%×%Ø×3Ñ3°EÓ:‘Cå#ó !£# u§¡×'?Ô'?ðAóð ð
 ×(Ñ(¨¿¹Ð(ÐIˆCô �uÐ/×0Ñ0Ø#×3Ñ3°C¸t¿¹ÓO‘à"�Ø—<‘<ˆDÜ�s˜H×%Ñ%Ø"Ÿl™l¨3Ó/‘�Ø—‘©2¨d®8°[Ó5FÐGÔHØ×$Ñ$ V×,Ø‘Ø—‘©2¨d®8²[ÐAÔBØ×$Ñ$ S×)à—‘˜k©B¨t«HÑ4×5ñQ "3ðR —
‘
×%Ñ%ˆà™b ›iÑ'Ø�I‰I�fÓð
ˆð	.Ø ŸL™L¨¯©×)9Ñ)9Ó:‰MˆEð �M‰M˜* uÑ,Ô-Ø�x‰x˜Ó¤ }Ñ'=Ó!>Ð>Ð>øô	 ó 	ØŠFð	ús   É8'K ËK ËK c                 ó„  >• [         TU ]  U5      n U(       a  UR                  OSnUSL nU(       a  UR                  5         U R                  R                  5        HC  nUR                  U R                  5      R                  U5      nU(       d  M6  U(       d  M?  UnSnME     U$ ! U(       a  UR                  5         f f = f)zë
Execute the specified update. Return the number of rows affected by
the primary update query. The "primary update query" is the first
non-empty query that is executed. Row counts for any subsequent,
related queries are not available.
r   NF)r'   r<  ÚrowcountrJ  rC   Úget_related_updatesr  rD   )r)   rO  rG  r1  Úis_emptyrC   Úaux_rowsr,   s          €r-   r<  ÚSQLUpdateCompiler.execute_sql¹  s    ø€ ô ‘Ñ$ [Ó1ˆð	Þ&,�6—?’?°!ˆDØ �~ˆHæØ—‘”Ø—Z‘Z×3Ñ3Ö5ˆEØ×)Ñ)¨$¯*©*Ó5×AÑAÀ+ÓNˆHßˆxŸH˜HØ�Ø ’ñ	 6ð
 ˆøö Ø—‘•ð ús   ’B% Â%B?c                 ó  >^• U R                   R                  R                  5       nU R                   R                  5         U R                   R	                  5       nU R                   R
                  (       d  US:X  a  gU R                   R                  [        S9nSUl        UR                  SS9  0 Ul
        / Ul        UR                  5       nUR                  R                  /n/ nU R                   R
                   H‰  n[        S UR!                  U5       5       5      (       a  UR#                  US45        M>  UR#                  U[%        U5      45        UR#                  UR&                  R                  R                  5        M‹     UR)                  U5        [*        TU ]Y  5         US:„  =(       a%    U R.                  R0                  R2                  (       + nU R                   R5                  5         U R                   R
                  (       d  U(       a¿  / n	[6        R8                  " [:        5      n
UR=                  U R>                  5      RA                  [B        5       HD  nU	RE                  S	 U 5       5        U H#  u  nmX¬   RE                  U4S
 jU 5       5        M%     MF     U R                   RG                  SU	5        X R                   l$        OU R                   RG                  SU5        U R                   RK                  U5        g)a  
If the update depends on results from other tables, munge the "where"
conditions to match the format required for (portable) SQL updates.

If multiple updates are required, pull out the id values to update at
this point so that they don't change as a result of the progressive
updates.
rx   N)ÚklassFT)Úforcec              3   óL   #   • U  H  oR                   R                  v •  M     g 7fr%   )Ú
join_fieldr�   )rX   r¤  s     r-   rZ   Ú2SQLUpdateCompiler.pre_sql_setup.<locals>.<genexpr>æ  s   é € ð Ú8X°—‘×+Ö+Ò8Xùs   ‚"$r   c              3   ó*   #   • U  H	  oS    v •  M     g7frU   r1   )rX   r  s     r-   rZ   rñ    s   é € Ð1ªD q ždªDùs   ‚c              3   ó,   >#   • U  H	  oT   v •  M     g 7fr%   r1   )rX   r  rŽ   s     €r-   rZ   rñ    s   øé € Ð.FÂ¸A°®xÂùr  rÖ  )&rC   rW   rÏ   ra   Úcount_active_tablesÚrelated_updatesr   r   r³   Úclear_orderingrÙ   rG   rÊ   r«  rÒ   r_   Úget_path_to_parentr€   rc   r–  Ú
add_fieldsr'   ru   r4   r…   rØ  Úclear_wherer  Údefaultdictr?  r  rD   r<  r   r‚   rÙ  Úrelated_idsr{  )r)   r|  ÚcountrC   rÛ   rÏ  Úrelated_ids_indexÚrelatedÚmust_pre_selectÚidentsrû  r1  ÚparentrŽ   r,   s                @€r-   ru   ÚSQLUpdateCompiler.pre_sql_setupÎ  sV  ù€ ð  Ÿ:™:×4Ñ4×9Ñ9Ó;Ðà�
‰
×$Ñ$Ô&Ø—
‘
×.Ñ.Ó0ˆØ�z‰z×)×)¨e°q«jØØ—
‘
× Ñ ¤uÐ Ð-ˆØ$ˆÔØ×Ñ 4ÐÑ(ØˆŒØˆŒØ�~‰~ÓˆØ—'‘'—,‘,�ˆØÐØ—z‘z×1Ô1ˆGÜñ Ø8<×8OÑ8OÐPWÔ8Xó÷ ñ ð
 "×(Ñ(¨'°1¨Ö6ð
 "×(Ñ(¨'´3°v³;Ð)?Ô@Ø—‘˜gŸm™m×.Ñ.×3Ñ3Ö4ñ 2ð 	×Ñ˜Ô Ü‰ÑÔð �A‰I×M˜dŸo™o×6Ñ6×MÑMÔMð 	ð 	�
‰
×ÑÔ Ø�:‰:×%×%®ð ˆFÜ%×1Ò1´$Ó7ˆKØ×*Ñ*¨4¯:©:Ó6×BÑBÄ5ÖI�Ø—‘Ñ1©DÓ1Ô1Û%6‘M�F˜EØÑ'×.Ñ.Ô.FÁÓ.FÖFó &7ñ Jð �J‰J×!Ñ! (¨FÔ3Ø%0�J‰JÕ"ð �J‰J×!Ñ! (¨EÔ2Ø�
‰
×"Ñ"Ð#3Õ4r/   r1   )	r7   r8   r9   r:   r5   r<  ru   r;   r<   r=   s   @r-   rß  rß  x  s   ø† ò>?õ@÷*=5ó =5r/   rß  c                   ó   • \ rS rSrS rSrg)ÚSQLAggregateCompileri  c                 ó"  • / / p!U R                   R                  R                  5        HL  nU R                  U5      u  pEUR	                  XU5      u  pEUR                  U5        UR                  U5        MN     [        U R                   R                  5      U l        SR                  U5      n[        U5      nU R                   R                  R                  U R                  U R                  S9R                  SS9u  pgSU< SU< S3nX'-  nX4$ )rÕ  r<  )rE   Tr]   rV  rW  rY  )rC   r²   r>  r‡   r‰   r€   r‚   rc   rd   r  rz  r1  r  rD   rE   r5   )r)   r‘   r’   r»   Úann_sqlÚ
ann_paramsÚinner_query_sqlÚinner_query_paramss           r-   r5   ÚSQLAggregateCompiler.as_sql  s÷   € ð
 ˜"ˆVØŸ*™*×6Ñ6×=Ñ=Ö?ˆJØ"&§,¡,¨zÓ":ÑˆGØ",×":Ñ":¸4È*Ó"UÑˆGØ�J‰J�wÔØ�M‰M˜*Ö%ñ	 @ô
 ˜TŸZ™Z×9Ñ9Ó:ˆŒØ�i‰i˜‹nˆÜ�v“ˆà.2¯j©j×.DÑ.D×.QÑ.QØ�J‰JØ×(Ñ(ð /Rð /
÷ ‰& $ˆ&Ð
'ñ 	,ˆÐ+ó 14³_ÐEˆØÑ$ˆØˆ{Ðr/   )rd   N)r7   r8   r9   r:   r5   r;   r1   r/   r-   r  r    s   † õr/   r  c              #   óÎ   ^ ^#   •  [        U U4S jU5       H  nUc  UOU Vs/ s H  oUSU PM	     snv •  M!     T R                  5         gs  snf ! T R                  5         f = f7f)zO
Yield blocks of rows from a cursor and ensure the cursor is closed when
done.
c                  ó&   >• T R                  T5      $ r%   )Ú	fetchmany)rG  Úitersizes   €€r-   rÜ  Úcursor_iter.<locals>.<lambda>-  s   ø€  &×"2Ñ"2°8Ô"<r/   N)rE  rJ  )rG  Úsentinelrd   r  r1  r  s   `  `  r-   rL  rL  '  sY   ùé € ð
ÜÕ<¸xÖHˆDØ#Ñ+‘$ÉÓ1NÊÀA°J°Y³-ÉÑ1NÔNñ Ið 	�‰�ùò 2Oøà�‰�üs+   „A%†A £A±	A ºA%ÁA ÁA"Á"A%)8r  r]  rg  Ú	functoolsr   Ú	itertoolsr   Údjango.core.exceptionsr   r   r   Ú	django.dbr   r	   Údjango.db.models.constantsr
   Údjango.db.models.expressionsr   r   r   r   r   Údjango.db.models.functionsr   r   Údjango.db.models.lookupsr   Údjango.db.models.query_utilsr   Údjango.db.models.sql.constantsr   r   r   r   r   r   Údjango.db.models.sql.queryr   r   Údjango.db.models.sql.wherer   Údjango.db.transactionr   Údjango.utils.functionalr   Údjango.utils.hashabler   Údjango.utils.regex_helperr    r"   r?   rk  r¹  rß  r  rL  r1   r/   r-   Ú<module>r!     s¢   ðÛ Û Û 	Ý Ý ç LÑ Lß 6Ý 1ß GÕ Gß 3Ý +Ý ?÷÷ ÷ <Ý *Ý <Ý 3Ý /Ý 6ô%�#ô %÷mñ mô`1e˜ô eôP6$˜ô 6$ôrS5˜ô S5ôl˜;ô ó2	r/   