
    -hF                     F   S r SSKrSSKrSSK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J
r
  S	SKJr  \R                  " SS5      rS r S$S jrS rS rS rS rS rS rS rS rS rS r S%S jr S%S jr " S S\R8                  5      rS rS rS  r S! r!S" r"S# r#g)&ziFunctions used by compiler.py to determine the parameters rendered
within INSERT and UPDATE statements.

    N   )	coercions)dml)elements)roles)Select   )exc)utilREQUIREDa8  
Placeholder for the value within a :class:`.BindParameter`
which is required to be present when the statement is passed
to :meth:`_engine.Connection.execute`.

This symbol is typically used when a :func:`_expression.insert`
or :func:`_expression.update` statement is compiled without parameter
values present.

c                 X  ^^ / U l         / U l        / U l        / U l        [	        XU5      =u  mnnnX`l        U R
                  c]  UR                  (       aL  UR                  R                   Vs/ s H*  nUU R                  R                  U5      [        XSSS94PM,     sn$ UR                  (       aB  UR                  S   n[        UR                  5       5      n	U V
s1 s H  n
T" U
5      iM     sn
mOUR                   (       a2  UR"                  nUR                   n	U V
s1 s H  n
T" U
5      iM     sn
mOVUR"                  (       a?  UR"                  n[        UR                  5       5      n	U V
s1 s H  n
T" U
5      iM     sn
mOS=n	=nmU R
                  c  0 nOGU	(       a!  [%        UU4S jU R
                   5       5      nO[%        U4S jU R
                   5       5      n/ nU	b  ['        U UUU	TUU5        0 nUR(                  (       a$  UR*                  (       a  [-        U UUU	UUUUU5	        UR.                  (       a&  UR0                  (       a  [3        U UUUUTUUUU5
        O[5        U UUUUTUUUU5
        U(       ap  U	(       ai  [7        U5      R9                  U4S jU	 5       5      R;                  U5      nU(       a/  [<        R>                  " SS	RA                  S
 U 5       5      -  5      eUR                  (       a  [C        U UUUTU5      nU$ U(       dy  U RD                  (       ah  U RF                  RH                  (       aM  UR                  R                  S   U R                  R                  UR                  R                  S   5      S4/nU$ s  snf s  sn
f s  sn
f s  sn
f )a9  create a set of tuples representing column/string pairs for use
in an INSERT or UPDATE statement.

Also generates the Compiled object's postfetch, prefetch, and
returning column collections, used for default handling and ultimately
populating the CursorResult's prefetch_cols() and postfetch_cols()
collections.

NT)requiredr   c              3   P   >#    U  H  nUT;  d  M  T" U5      [         4v   M     g 7fNr   ).0key_column_as_keyspd_str_keys     hC:\Users\ROHAN GUPTA\OneDrive\Desktop\mathbuddy-assessment\venv\Lib\site-packages\sqlalchemy/sql/crud.py	<genexpr>#_get_crud_params.<locals>.<genexpr>a   s,      
++% ,^C (++s   
&&c              3   @   >#    U  H  nT" U5      [         4v   M     g 7fr   r   )r   r   r   s     r   r   r   g   s      
7K^C (+7Ks   c              3   8   >#    U  H  u  pT" U5      v   M     g 7fr    )r   kvr   s      r   r   r      s     N8M.++8Ms   zUnconsumed column names: %s, c              3   (   #    U  H  o< v   M
     g 7fr   r   )r   cs     r   r   r      s     8%QQ[%s   DEFAULT)%	postfetchinsert_prefetchupdate_prefetch	returning_key_getters_for_crud_columncolumn_keys_no_parameterstablecolumnspreparerformat_column_create_bind_param_has_multi_parameters_multi_parameterslistitems_ordered_values_dict_parametersdict!_get_stmt_parameter_tuples_paramsisupdateis_multitable_get_update_multitable_paramsisinsert_select_names_scan_insert_from_select_cols
_scan_colssetintersection
differencer
   CompileErrorjoin_extend_values_for_multiparamsfor_executemanydialectsupports_default_metavalue)compilerstmtcompile_statekw_getattr_col_key_col_bind_namegettersr    spdstmt_parameter_tuplesr   
parametersvaluescheck_columnscheckr   r   s                  @@r   _get_crud_paramsrS   &   s    H!H!HH /x}M	N ,3) #(D(D ZZ''
 (	 !!//2"8tD
 (
 	
 **--a0 $SYY[ 169:cs~c*c:		&	&,, - = =69:cs~c*c:		'	',, $SYY[ 169:cs~c*c:4888k #
	 
++
 

  
7?7K7K
 


 F()!	
 M -"="=%!
	
 $"4"4%	
 		
 +
O\N8MNNZ& 	
 ""-998%88: 
 **/
2 M! $$77 

""1%!!//

0B0B10EF
 MO
 ; ; ;s   -1NN!N"1N'c                     Uc  UR                   n[        R                  " XRUR                  US9nSUl        U(       a  UR
                  " U 40 UD6nU$ )N)type_r   T)r   r   BindParametertype_is_crud_compiler_dispatch)rF   colvalueprocessr   namerI   	bindparams           r   r-   r-      sU     |ww&&388hI I00@R@	    c                 T   SU;   nU(       dT  UR                   (       aC  [        UR                  [        R                  5      (       a  X0R
                  SUR                  4'   UR                  R                  (       a  UR                  UR                  5      nUR                  " U 40 UD6$ )Nvisiting_cter^   )
unique
isinstancer   r   _truncated_labeltruncated_namesrW   _isnull_with_binary_element_typerY   )rF   rZ   r[   r]   rI   is_ctes         r   _handle_values_anonymous_paramri      s    ( r!F LLuyy(";";<<=A  +uyy!9:zz //9##H333r_   c                   ^^ UR                   (       am  UR                  (       a\  [        UR                  5      m[        R                  " [
        R                  [        R                  5      mUU4S jnU4S jnU4S jnOJ[        R                  " [
        R                  [        R                  5      n[        R                  " S5      =pEX4U4$ )Nc                    > T" U 5      n[        U S5      (       a(  U R                  T;   a  U R                  R                  U4$ U$ )Nr)   )hasattrr)   r]   )r   str_key_et
c_key_roles     r   r   4_key_getters_for_crud_column.<locals>._column_as_key  s<     oGsG$$c)9		00r_   c                    > U R                   T;   a"  U R                   R                  U R                  4$ U R                  $ r   r)   r]   r   rZ   rn   s    r   rJ   6_key_getters_for_crud_column.<locals>._getattr_col_key  s/    yyC		00wwr_   c                    > U R                   T;   a'  U R                   R                  < SU R                  < 3$ U R                  $ )N_rr   rs   s    r   rK   4_key_getters_for_crud_column.<locals>._col_bind_name  s/    yyC"%))..#''::wwr_   r   )r6   _extra_fromsr=   	functoolspartialr   expect_as_keyr   DMLColumnRoleoperator
attrgetter)rF   rG   rH   r   rJ   rK   rn   ro   s         @@r   r&   r&     s    -"<"< -,,-&&##U%8%8

			 #**##U%8%8
 -5,?,?,FF^;;r_   c
           	      J   [        XU5      u  n
nnnUR                   Vs/ s H!  oR                  R                  U" U5         PM#     nnU R                  S   S   UL d   eUR
                  U R                  S   S'   / nUR                  (       aT  [        U5      nUR                  R                   H/  nUU;  d  M  UR                  (       d  M  UR                  U5        M1     U He  nU" U5      nUU;   aF  UU;  a@  UR                  U5        UR                  UU R                  R                  U5      S 45        MW  [        XUUU	5        Mg     U(       a  UR                  U5        U R                  S   S   n[!        U["        5      (       d1  [$        R&                  " SSR)                  S U 5       5      < S35      eUR+                  5       n[-        UR.                  5      U VVVs/ s H	  u  nnnUPM     snnn-   Ul        UU R                  S   S'   g g s  snf s  snnnf )N
selectableinsert_from_selectz_Can't extend statement for INSERT..FROM SELECT to include additional default-holding column(s) r   c              3   >   #    U  H  u  pn[        U5      v   M     g 7fr   )repr)r   rv   r   s      r   r   0_scan_insert_from_select_cols.<locals>.<genexpr>a  s     H911T#YYs   z~.  Convert the selectable to a subquery() first, or pass include_defaults=False to Insert.from_select() to skip these columns.)_get_returning_modifiersr:   r)   r    stackselect#include_insert_from_select_defaultsr=   r*   defaultappendpopr+   r,   &_append_param_insert_select_hasdefaultextendrc   r   r
   r@   rA   	_generater0   _raw_columns)rF   rG   rH   rO   rJ   r   rK   rQ   rP   rI   need_pksimplicit_returningimplicit_return_defaultspostfetch_lastrowidr]   colsadd_select_colscol_setrZ   r    col_keyins_from_selectcol_exprexprs                           r   r;   r;   ,  s   $ 	!?  <@;M;MN;M4JJLL-.;MDN>>"l+t333/3{{HNN2+,O//d)::%%C'!ckkkC  & "1%j WM%ANN7#MM1h//==a@$GH2?B  o&"..,-AB/622"" 99HHHK  *335'+O,H,H'I,;M
,;(S(DDOM
 (
$ 4Cr/0# / OJM
s   (H)H
c
                    [        XU5      u  n
nnnUR                  (       a  UR                   Vs/ s H
  o" U5      PM     nn[        U5      nU Vs/ s HX  n[        U[        R
                  5      (       d  M$  XR                  R                  ;   d  M?  UR                  R                  U   PMZ     snUR                  R                   Vs/ s H  nUR                  U;  d  M  UPM     sn-   nOUR                  R                  nU GH  nU" U5      nUU;   a  UU;  a  [        U UUUUUUUUUU	5        M/  UR                  (       Ga@  UR                  (       a,  U
(       a%  U(       a  [        XUX5        Mo  [        XUX5        M~  UR                  b  [!        XUXU	5        M  UR"                  b\  U(       a#  UU;   a  U R$                  R'                  U5        M  UR                  (       d  U R(                  R'                  U5        GM  GM  U(       a$  UU;   a  U R$                  R'                  U5        GM/  UR                  (       a>  UUR                  R*                  La"  UR,                  (       d  [/        U5        GMx  GM{  GM~  GM  UR0                  (       d  GM  [3        U UUUUUU	5        GM     g s  snf s  snf s  snf r   )r   _parameter_orderingr=   rc   r   string_typesr)   r    r   r*   _append_param_parameterr9   primary_key!_append_param_insert_pk_returning$_append_param_insert_pk_no_returningr   _append_param_insert_hasdefaultserver_defaultr%   r   r"   _autoincrement_columnnullable"_warn_pk_with_no_anticipated_valuer6   _append_param_update)rF   rG   rH   rO   rJ   r   rK   rQ   rP   rI   r   r   r   r   r   parameter_orderingordered_keysr    r   r   s                       r   r<   r<   k  s   " 	!?  ((+8+L+L
+LCN3+L 	 
 -. *
)#t001 69ZZ\\6I DJJLL)
 

B1\(AQB	C zz!! #1%j WM%A $"( ### }}
 &
 6 6 9 6 & 0A'? !!- ,5M0M&&--a0&&--a0 ')a3K.K""))!,TZZ===

215 # >  ### !(Y 

 Cs#   J4#J9:J9J9J>$J>c                    UR                  U5      nU R                  R                  X2R                  S9n[        R
                  " U5      (       a;  [        U UU4U[        L UR                  (       d  U" U5      O
SU" U5      -  S.U
D6nGOUUR                  (       a4  [        U UU4SUR                  (       d  U" U5      O
SU" U5      -  0U
D6nGOU R                  " UR                  5       40 U
D6nUR                  (       aD  U(       a!  X8;   a  U R                  R                  U5        OU R                   R                  U5        OUR"                  (       aF  U(       a  U R                  R                  U5        OfU R$                  R&                  (       a  SU l        OCU(       a!  X8;   a  U R                  R                  U5        OU R                   R                  U5        U	R                  X<U45        g )N	use_tablez%s_m0r   r]   r]   T)r   r+   r,   include_table_with_column_exprsr   _is_literalr-   r   r.   _is_bind_parameterri   r\   
self_groupr6   r%   r   r"   r   rD   r   )rF   rG   rH   r    r   rO   rK   r   r   rP   rI   r[   	col_values                r   r   r     s    NN7#E!!//	BB 0 I U##"	
 h& 66  ">!,,	
 	
 
	!	!.

 !66  ">!,,
 
   !1!1!3:r:!!'A,I""))!, ""))!,}}%&&--a0%%9937H0)a.K""))!, ""))!,
MM1'(r_   c           	         UR                   Gb  UR                   R                  (       a  U R                  R                  (       a~  UR                   R                  (       a  U R                  R
                  (       dH  UR                  UU R                  R                  U5      U R                  " UR                   40 UD645        U R                  R                  U5        gUR                   R                  (       a|  UR                  UU R                  R                  U5      U R                  " UR                   R                  R                  5       40 UD645        U R                  R                  U5        gUR                  UU R                  R                  U5      [        X40 UD645        gX!R                  R                   L d  UR"                  b  U R                  R                  U5        gUR$                  (       d  ['        U5        gg)zCreate a primary key expression in the INSERT statement where
we want to populate result.inserted_primary_key and RETURNING
is available.

N)r   is_sequencerD   supports_sequencesoptionalsequences_optionalr   r+   r,   r\   r%   is_clause_elementargr   "_create_insert_prefetch_bind_paramr)   r   r   r   r   rF   rG   r    rP   rI   s        r   r   r   ,  s    	yy99  22II&&'':: ))77: ((9b9 %%a(YY((MM%%33A6$$QYY]]%=%=%?F2F %%a(
 MM%%33A66xIbI 
jj..	.!2B2B2N!!!$ZZ 	+1- r_   c           	         UR                   bl  UR                   R                  (       a  U R                  R                  (       a6  UR                   R                  (       a  U R                  R
                  (       a  X!R                  R                  L a  U R                  R                  (       d  UR                   b6  UR                   R                  (       a  U R                  R                  (       d(  UR                   cS  U R                  R                  (       a8  UR                  UU R                  R                  U5      [        X40 UD645        gUR                   cB  UR                  c5  UR                  (       d$  X!R                  R                  La  [!        U5        gU R                  R                  (       a  SU l        gg)aW  Create a primary key expression in the INSERT statement where
we want to populate result.inserted_primary_key and we cannot use
RETURNING.

Depending on the kind of default here we may create a bound parameter
in the INSERT statement and pre-execute a default generation function,
or we may use cursor.lastrowid if supported by the dialect.


NT)r   r   rD   r   r   r   r)   r   r   "preexecute_autoincrement_sequencesr   r+   r,   r   r   r   r   r   s        r   r   r   \  s<    	
		 		%%  33		**#++>> 	
ZZ---   44 II)		-- ((;; II% ((KK 	!!//228E"E	
 	
		$

ZZ555 	+1-				-	-
 (,$ 
.r_   c           	      ,   UR                   R                  (       a  U R                  R                  (       a  UR                   R                  (       a  U R                  R
                  (       d  UR                  UU R                  R                  U5      U R                  " UR                   40 UD645        U(       a!  X#;   a  U R                  R                  U5        g UR                  (       d  U R                  R                  U5        g g g g UR                   R                  (       a  UR                  UU R                  R                  U5      U R                  " UR                   R                  R                  5       40 UD645        U(       a!  X#;   a  U R                  R                  U5        g UR                  (       d  U R                  R                  U5        g g UR                  UU R                  R                  U5      [!        X40 UD645        g r   )r   r   rD   r   r   r   r   r+   r,   r\   r%   r   r"   r   r   r   r   )rF   rG   r    r   rP   rI   s         r   r   r     s    	yy..		""(*:*:*M*MMM%%33A6$$QYY5"5 (A,I""))!,]]""))!, # +N / 
	$	$!!//2  !9!9!;BrB	
 $(E%%a(%%a(  	!!//228E"E	
r_   c           	         UR                   R                  (       a  U R                  R                  (       a|  UR                   R                  (       a  U R                  R
                  (       dE  UR                  X R                  R                  U5      UR                   R                  5       45        g g g UR                   R                  (       aO  UR                  X R                  R                  U5      UR                   R                  R                  5       45        g UR                  UU R                  R                  U5      [        X4SS0UD645        g )Nr\   F)r   r   rD   r   r   r   r   r+   r,   
next_valuer   r   r   r   r   s        r   r   r     s    yy..		""(*:*:*M*MMM%%33A6		8L8L8NO +N / 
	$	$!!//2AIIMM4L4L4NO	
 	!!//22).24	
r_   c           	         UR                   nUR                  Gb  UR                  R                  (       d  UR                  R                  (       a  UR	                  UU R
                  R                  UUS9U R                  " UR                  R                  R                  5       40 UD645        U(       a!  X4;   a  U R                  R	                  U5        g U R                  R	                  U5        g UR	                  UU R
                  R                  UUS9[        X40 UD645        g UR                  bD  U(       a!  X4;   a  U R                  R	                  U5        g U R                  R	                  U5        g U(       aE  UR                  (       d  UR                  (       d"  X4;   a  U R                  R	                  U5        g g g g )Nr   )r   onupdater   r   r   r+   r,   r\   r   r   r%   r"   "_create_update_prefetch_bind_paramserver_onupdate_return_defaults_columns_return_defaults)rF   rH   rG   r    r   rP   rI   include_tables           r   r   r     s{    "AAMzzajj&<&<::''MM%%33"/ 4  $$QZZ^^%>%>%@GBG	 (A,I""))!,""))!,MM%%33"/ 4  7xIbI	 
			&#(E%%a(%%a( **$2G2G)!!!$ * 3H 	!r_   c                 Z    [        XS 4X#S.UD6nU R                  R                  U5        U$ N)r\   r]   )r-   r#   r   rF   r    r\   r]   rI   params         r   r   r     s>     T#*9;E ##A&Lr_   c                 Z    [        XS 4X#S.UD6nU R                  R                  U5        U$ r   )r-   r$   r   r   s         r   r   r   #  s>     T#*9;E ##A&Lr_   c                   0    \ rS rSrSrS rS rS rS rSr	g)	_multiparam_columni-  Tc                     X l         SUR                  US-   4-  U l        Xl        UR                  U l        UR                  U l        g )N%s_m%dr   )indexr   originalr   rW   )selfr   r   s      r   __init___multiparam_column.__init__0  s=    
x||UQY77 ''MM	r_   c                     [        5       er   NotImplementedErrorr   otherrI   s      r   compare_multiparam_column.compare7      !##r_   c                     [        5       er   r   r   s      r   _copy_internals"_multiparam_column._copy_internals:  r   r_   c                     [        U[        5      =(       a9    UR                  U R                  :H  =(       a    UR                  U R                  :H  $ r   )rc   r   r   r   )r   r   s     r   __eq___multiparam_column.__eq__=  s<    u01 0		TXX%0$--/	
r_   )r   r   r   r   rW   N)
__name__
__module____qualname____firstlineno___is_multiparam_columnr   r   r   r   __static_attributes__r   r_   r   r   r   -  s     "$$
r_   r   c                    UR                   (       d  [        R                  " SU-  5      eUR                   R                  (       a5  U R                  " UR                   R
                  R                  5       40 UD6$ UR                   R                  (       a  U R                  " UR                   40 UD6$ [        X#5      n[        U[        R                  5      (       a  [        X40 UD6$ [        X40 UD6$ )NzINSERT value for column %s is explicitly rendered as a boundparameter in the VALUES clause; a Python-side value or SQL expression is required)r   r
   r@   r   r\   r   r   r   r   rc   r   Insertr   r   )rF   rG   r    r   rI   rZ   s         r    _process_multiparam_default_bindr   E  s    99@BCD
 	

 
	$	$		 8 8 :AbAA	
		 		0R00 *dCJJ''5hJrJJ5hJrJJr_   c	                    [        S U 5       5      n	UR                  n
[        5       nUR                   H  nUR                   H  nX;   d  M
  UR                  U5        XU" U5      '   X   nU R                  XS9n[        R                  " U5      (       a  [        U UU4U[        L U" U5      S.UD6nOcUR                  (       a  [        XU4SU" U5      0UD6nO<U R                  R                  U5        U R                  " UR                  5       40 UD6nUR                  XU45        M     M     U GH4  nUR                   GH  nX;   a  M  UR                   b  UR                   R"                  (       d  UR                   R$                  (       aq  UR                  UU R                  XS9U R                  " UR                   R&                  R                  5       40 UD645        U R                  R                  U5        M  UR                  UU R                  XS9[)        X4SU" U5      0UD645        M  UR*                  c  GM  U R                  R                  U5        GM"     GM7     g )Nc              3   t   #    U  H.  u  p[         R                  " [        R                  U5      U4v   M0     g 7fr   )r   expectr   r|   )r   r    r   s      r   r   0_get_update_multitable_params.<locals>.<genexpr>k  s1      -HA 
		%--q	159-s   68r   r   r]   )r4   r   r=   rx   r    addr\   r   r   r-   r   r   ri   r"   r   r   r   r   r   r   r   r   )rF   rG   rH   rN   rQ   rK   rJ   rP   rI   normalized_paramsr   affected_tablestr    r[   r   s                   r   r8   r8   `  sV     - 
 "AAMeO''A%##A&56.q12),$,,Q,L	((//.  "'(!2+A. E --: U1?1BFHE &&--a0$,,U-=-=-?F2FEqU34/  (6 A%'

0F0F:://MM$,,Q,L$,, !

 9 9 ;?A &&--a0MM$,,Q,L> (2@2CGI "".""))!,5  r_   c           
      6   UnU/n[        UR                  SS  5       H  u  px/ n	UR                  5        V
Vs0 s H  u  pU" U
5      U_M     nn
nU H  u  pnUR                  U;   ar  UR                  n
[        R
                  " X   5      (       a%  [        U UX   4SSUR                  US-   4-  0UD6nO1U R                  " X   R                  5       40 UD6nO[        XXU5      nU	R                  XU45        M     UR                  U	5        M     U$ s  snn
f )Nr   r]   r   )	enumerater/   r1   r   r   r   r-   r\   r   r   r   )rF   rG   rH   rP   r   rI   values_0irow	extensionr   r   rZ   r   r   	new_params                   r   rB   rB     s.    HXFM;;AB?@	47IIK@K&#~c"A%K@&."SEww#~gg((22 2 ! &!a%(88	!
 !I !) 0 01D1D1F M" MI<CB	 cY78' '/* 	i 5 A8 M3 As   Dc           	         U GH  u  pxU" U5      n	U	b  UR                  X5        M$  U R                  XqR                  S9n
[        R                  " U5      (       a1  U R                  " [
        R                  " S XR                  S940 UD6nOhUR                  (       a6  UR                  R                  (       a  UR                  UR                  5      nU R                  " UR                  5       40 UD6nUR                  XzU45        GM     g )Nr   )rU   )
setdefaultr\   r   r   r   r   rV   rW   r   rf   rg   r   r   )rF   rH   rO   rN   r   rP   rI   r   r   colkeyr   s              r   r5   r5     s     &"!!&,  ''!N!N ( H $$Q''$$**4&&AEG ''AFFNN 33AFF;A$$Q\\^:r:MM1*+; &r_   c                    UR                   =(       a    UR                  (       + =(       aq    U R                  (       + =(       d)    U R                  R                  =(       a    UR
                  =(       a)    UR                  (       + =(       a    UR                  (       + nU=(       a3    U R                  R                  =(       a    UR                  R                  nUR                   (       a  U=(       a    UR
                  nOZUR                  (       aG  U R                  R                  =(       a)    UR                  R                  =(       a    UR
                  nOSnU(       aF  UR                  (       d   [        UR                  R                  5      nO[        UR                  5      nU=(       a    U R                  R                  nUUUU4$ )NF)r9   _inlinerC   rD   insert_executemany_returningr   
_returningr.   r   r)   r6   r   r=   r    r   )rF   rG   rH   r   r   r   r   s          r   r   r      sj    	 
	4
	4 (((   == *))
	4 
	4 333  	 	*//	*JJ))  #5#O$:O:O 			// &

--&%% 	! $) ,,'*4::<<'8$'*4+H+H'I$"Kx'7'7'K'K 	 	 r_   c                    SU R                   R                  < SU R                  < SU R                   R                  < S3n[        U R                   R                  5      S:  a  US-  n[
        R                  " U5        g )NzColumn '.z6' is marked as a member of the primary key for table 'z', but has no Python-side or server-side default generator indicated, nor does it indicate 'autoincrement=True' or 'nullable=True', and no explicit value is passed.  Primary key columns typically may not store NULL.r   a0   Note that as of SQLAlchemy 1.1, 'autoincrement=True' must be indicated explicitly for composite (e.g. multicolumn) primary keys if AUTO_INCREMENT/SERIAL/IDENTITY behavior is expected for one of the columns in the primary key. CREATE TABLE statements are impacted by this change as well on most backends.)r)   fullnamer]   lenr   r   warn)r    msgs     r   r   r   3  sb     77QVVQWW%5%5	7  177!#	
 	IIcNr_   )TFN)TN)$__doc__ry   r}    r   r   r   r   r   r   r
   r   symbolr   rS   r-   ri   r&   r;   r<   r   r   r   r   r   r   r   r   ColumnElementr   r   r8   rB   r5   r   r   r   r_   r   <module>r     s            ;;	eR >B#4L'<T<C~upF)R-.`I,X'
T
2*%\ %) %)
// 
0K6I-X'T',T0fr_   