o
    8DiQ                     @  s0  d dl mZ d dlZd dlmZmZmZmZm	Z	 d dl
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z  d dl!m"Z" d dl#m$Z$ d dl%m&Z& d5ddZ'd6ddZ(h dZ)d7ddZ*d8ddZ+d9d d!Z,d:d#d$Z-d;d'd(Z.d<d*d+Z/		,d=d>d1d2Z0G d3d4 d4eZ1dS )?    )annotationsN)exp	generatorparsertokens
transforms)DialectNormalizationStrategyarrow_json_extract_sqldate_add_interval_sqldatestrtodate_sqlbuild_formatted_timeisnull_to_is_nulllength_or_char_length_sqlmax_or_greatestmin_or_leastno_ilike_sqlno_paren_current_date_sqlno_pivot_sqlno_tablesample_sqlno_trycast_sqlbuild_date_deltabuild_date_delta_with_intervalrename_funcstrposition_sqlunit_to_vartrim_sqltimestrtotime_sql)unsupported_args)seq_get)	TokenTypeargst.Anykwargsreturn$t.Callable[[MySQL.Parser], exp.Show]c                    s   d fdd}|S )NselfMySQL.Parserr$   exp.Showc                   s   | j  i S N)_parse_show_mysqlr&   r!   r#    O/var/www/Datamplify/venv/lib/python3.10/site-packages/sqlglot/dialects/mysql.py_parse$   s   z_show_parser.<locals>._parse)r&   r'   r$   r(   r-   )r!   r#   r/   r-   r,   r.   _show_parser#   s   r0   r&   MySQL.Generator
expressionexp.DateTruncstrc                 C  s   |  |d}|d }|dkrd| d| d}d}n?|dkr-d| d	| d
}d}n/|dkr=d| d| d}d}n|dkrJd| d}d}n|dkrV| d|  | d|S | d|d| dS )NthisunitWEEKzCONCAT(YEAR(z), ' ', WEEK(z, 1), ' 1')z%Y %u %wMONTHz), ' ', MONTH(z), ' 1')z%Y %c %eQUARTERz), ' ', QUARTER(z) * 3 - 2, ' 1')YEARz
), ' 1 1')DAYzUnexpected interval unit: DATESTR_TO_DATE')sqltextupperunsupportedfunc)r&   r2   exprr6   concatdate_formatr-   r-   r.   _date_trunc_sql*   s$   rG   >   HISTfhiklprsrF   boolc                 C  sT   d}t | }||k r(| | dkr |d7 }||k r | | tv r dS |d7 }||k s
dS )Nr   %   TF)lenTIME_SPECIFIERS)rF   rN   lengthr-   r-   r.   _has_time_specifierG   s   rZ   t.Listexp.StrToDate | exp.StrToTimec                 C  sH   t | d}t|}t | d}|rt|jrtj||dS tj||dS )NrV   r   r5   format)r   MySQLformat_timerZ   namer   	StrToTime	StrToDate)r!   mysql_date_formatrF   r5   r-   r-   r.   _str_to_dateT   s   


re   0exp.StrToDate | exp.StrToTime | exp.TsOrDsToDatec                 C     |  d|j| |S )Nr=   rC   r5   r`   r&   r2   r-   r-   r.   _str_to_date_sql_   s   rj   exp.UnixToTimec              
   C  s^   |j d}|j}|d tjjfv r| d|| |S | dtj|tdd|d| |S )NscaleFROM_UNIXTIMEPOW
   r5   r2   )	r!   getr5   r   
UnixToTimeSECONDSrC   r`   Div)r&   r2   rl   	timestampr-   r-   r.   _unix_to_time_sqle   s   rv   kind6t.Callable[[generator.Generator, exp.Expression], str]c                   s   d	 fdd}|S )
Nr&   generator.Generatorr2   exp.Expressionr$   r4   c                   s&   |  d  |jtj|jt|dS )NDATE_r5   r6   )rC   r5   r   Intervalr2   r   ri   rw   r-   r.   rC   v   s
   zdate_add_sql.<locals>.func)r&   ry   r2   rz   r$   r4   r-   )rw   rC   r-   r~   r.   date_add_sqls   s   r   exp.TsOrDsToDatec                 C  s(   |j d}|rt| |S | d|jS )Nr^   r<   )r!   rq   rj   rC   r5   )r&   r2   time_formatr-   r-   r.   _ts_or_ds_to_date_sql   s   r   r5   to_sql>t.Optional[t.Callable[[MySQL.Generator, exp.Expression], str]]t.Tuple[str, ...],t.Callable[[MySQL.Generator, exp.Func], str]c                   s   d	 fdd}|S )
Nr&   r1   r2   exp.Funcr$   r4   c                   sT    D ]}|j |}t|tjr|j ds|||j qr%| |S | |S )Nr^   )r!   rq   
isinstancer   TsOrDsToDatesetr5   function_fallback_sql)r&   r2   arg_keyargr!   r   r-   r.   rC      s   z&_remove_ts_or_ds_to_date.<locals>.func)r&   r1   r2   r   r$   r4   r-   )r   r!   rC   r-   r   r.   _remove_ts_or_ds_to_date   s   r   c                   @  s   e Zd ZdZdZejZdZdZ	dZ
dZdZdddddd	d
dddddZG dd dejZG dd dejZG dd dejZdS )r_   Tz'%Y-%m-%d %T'F%Bz%-mz%-dz%I%Mz%S%Wz%-Hz%-Iz%H:%M:%Sz%A)r   z%cz%ez%hz%iz%sz%uz%kz%lz%Tr   c                   @  s  e Zd ZddgZg dZdgZg dZg dZg dZdZ	i e
jji d	ejd
ejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdeji dejdej dej dej!dejdej"d ej"d!ej#d"ej$d#ej$d$ej$d%ej$d&ej$d'ej$d(ej$d)ej$d*ej$i d+ej$d,ej$d-ej$d.ej$d/ej$d0ej$d1ej$d2ej$d3ej$d4ej$d5ej$d6ej$d7ej$d8ej$d9ej$d:ej$d;ej$i d<ej$d=ej$d>ej$d?ej$d@ej$dAej$dBej$dCej$dDej$dEej$dFej$dGej$dHej$dIej$dJej$dKej$dLej%Zh e
jj&ej'ej(h Z&dMS )NzMySQL.Tokenizerr>   ")z--#)z/*z*/`)r>   r   \))zb'r>   )zB'r>   )0b ))zx'r>   )zX'r>   )0xr   FCHARSETBLOBEXPLAINFORCEIGNOREKEYzLOCK TABLESLONGBLOBLONGTEXT
MEDIUMBLOBTINYBLOBTINYTEXT
MEDIUMTEXT	MEDIUMINTz	MEMBER OF	SEPARATORSERIALSTARTSIGNEDzSIGNED INTEGER	TIMESTAMPzUNLOCK TABLESUNSIGNEDzUNSIGNED INTEGERr:   	_ARMSCII8_ASCII_BIG5_BINARY_CP1250_CP1251_CP1256_CP1257_CP850_CP852_CP866_CP932_DEC8_EUCJPMS_EUCKR_GB18030_GB2312_GBK_GEOSTD8_GREEK_HEBREW_HP8_KEYBCS2_KOI8R_KOI8U_LATIN1_LATIN2_LATIN5_LATIN7_MACCE	_MACROMAN_SJIS_SWE7_TIS620_UCS2_UJIS_UTF8_UTF16_UTF16LE_UTF32_UTF8MB3_UTF8MB4z@@N))__name__
__module____qualname__QUOTESCOMMENTSIDENTIFIERSSTRING_ESCAPESBIT_STRINGSHEX_STRINGSNESTED_COMMENTSr   	TokenizerKEYWORDSr    CHARACTER_SETr   DESCRIBEr   r   r   COMMANDr   r   r   r   r   r   r   	MEMBER_OFr   r   BEGINBIGINTTIMESTAMPTZUBIGINTr:   
INTRODUCERSESSION_PARAMETERCOMMANDSREPLACESHOWr-   r-   r-   r.   r      s(   	
 !"#$%&'()*+,-./0123456789:;<=>?@BCDEFGHKr   c                
      s  e Zd ZU h ejjejejej	Zi ejj
ejejejejiZ
i ejjejejiZejjejj Zi ejjejdd iZi ejji ddd dejjddd deejd	eejd
deejddd ddd ddd ddd dejjdeej d
de!ddd dej"jddd ddd ej#jej#je$e%ej&dd dd d d d!d d"Zi ejj'd#d d$d d%d d&d d'Z'i ejj(ej)d(d iZ(i d)e*d)d*e*d)d+e*d+d,e*d,d-e*d,d.e*d.d/e*d0d1d2d3d0e*d0d1d4d5e*d5d2d4d6e*d6d2d4d7e*d7d2d4d8e*d8d2d4d9e*d9d2d4d:e*d:d2d4d;e*d;d2d4d<e*d<d=e*d<i d>e*d>d2d4d?e*d@d@e*d@dAe*dAdBe*dBdCe*dCd2d4dDe*dDdEe*dEdFd4dGe*dGd1d4dHe*dHdIe*dIdJe*dJdKe*dKd2d4dLe*dLdMe*dMdNe*dOd2dPdOe*dOi dQe*dQdRe*dRdSe*dSdTe*dTdUe*dTdVe*dVdWe*dVdXe*dYd2dZd[e*dYdYe*dYd\e*d\d]e*d^d2dPd^e*d^d_e*d_d`e*dad2dZdbe*dadae*dadce*dciZ+i ejj,ddded iZ,i ejj-dfd dgd dhd did djd dkZ-i ejj.dld dmd dnd dod dpZ.i ejj/dqdrd iZ/i ejj0dGdsd iZ0h ejj1dtdGdudvZ1i e23dwe4 dxdydzd{Z5d|e6d}< h ejj7ej8Z7h ejj9ej8Z9h d~Z:d2Z;d2Z<dZ=d2Z>d fddZ?dddZ@	ddddZA			ddddZBdddZCdddZDdddZE	dd fddZFdddZGdddZHdddZI  ZJS )r'   c                 C  s   | j tj|| | jdS Nrp   )r2   r   JSONArrayContains_parse_wrapped_parse_expression)r&   r5   r-   r-   r.   <lambda>&  s
    
zMySQL.Parser.<lambda>
CONVERT_TZc                 C  s"   t jt| dt| dt| ddS )NrV      r   )	source_tz	target_tzru   )r   ConvertTimezoner   r!   r-   r-   r.   r   /      CURDATEr<   c                 C  s   t jt| ddS Nr   r   )r   r   r   r   r-   r-   r.   r   3      DATE_ADDDATE_FORMATmysqlDATE_SUBr;   c                 C     t jt jt| dddS r   )r   Dayr   r   r   r-   r-   r.   r   7      
DAYOFMONTHc                 C  r  r   )r   
DayOfMonthr   r   r   r-   r-   r.   r   8  r  	DAYOFWEEKc                 C  r  r   )r   	DayOfWeekr   r   r   r-   r-   r.   r   9  r  	DAYOFYEARc                 C  r  r   )r   	DayOfYearr   r   r   r-   r-   r.   r   :  r  FORMATrm   ISNULLLENGTHc                 C  s   t jt| dddS )Nr   T)r5   binary)r   Lengthr   r   r-   r-   r.   r   >      MAKETIMEr8   c                 C  r  r   )r   Monthr   r   r   r-   r-   r.   r   @  r  	MONTHNAMEc                 C  s$   t jt jt| ddt jddS )Nr   r   r   r]   )r   	TimeToStrr   r   Literalstringr   r-   r-   r.   r   A  s    
c                 C  s>   t t jt jt| ddt jt jddt ddd S )Nr   r   z
0000-01-01r;   )r5   r2   r6   rV   )r   parenDateDiffr   r   r  r  varr   r-   r-   r.   r   I  s    c                 C  s"   t jt jt| ddt| ddS )Nr   r   rV   )r5   mode)r   Weekr   r   r   r-   r-   r.   r   Q  r   c                 C  r  r   )r   
WeekOfYearr   r   r   r-   r-   r.   r   T  r  c                 C  r  r   )r   Yearr   r   r   r-   r-   r.   r   U  r  )SCHEMADATABASEr=   TIMESTAMPDIFFTO_DAYSr7   
WEEKOFYEARr:   c                 C  s*   | j tj| | j| tjo|  dS )N)expressionscharset)	r2   r   Chr
_parse_csv_parse_assignment_matchr    USING
_parse_varr+   r-   r-   r.   r   Z  s
    
c                 C     |   S r)   )_parse_group_concatr+   r-   r-   r.   r   _      c                 C  s   | j tjd|  gdS )NVALUES)r5   r%  )r2   r   	Anonymous_parse_id_varr+   r-   r-   r.   r   a  s    c                 C  r-  r)   )_parse_json_valuer+   r-   r-   r.   r   d  r/  )CHARGROUP_CONCATr0  
JSON_VALUEc                 C  r-  r)   )_parse_showr+   r-   r-   r.   r   i  r/  zBINARY LOGSzMASTER LOGSBINLOG EVENTSCHARACTER SETr   	COLLATIONzFULL COLUMNSCOLUMNSFROMT)targetfull)r=  zCREATE DATABASEzCREATE EVENTzCREATE FUNCTIONzCREATE PROCEDUREzCREATE TABLEzCREATE TRIGGERzCREATE VIEW	DATABASESSCHEMASENGINEzSTORAGE ENGINESENGINESERRORSEVENTSzFUNCTION CODEzFUNCTION STATUSGRANTSFORINDEXzMASTER STATUSzOPEN TABLESPLUGINSzPROCEDURE CODEzPROCEDURE STATUS
PRIVILEGESzFULL PROCESSLISTPROCESSLIST)r>  PROFILEPROFILESRELAYLOG EVENTSREPLICASzSLAVE HOSTSzREPLICA STATUSzSLAVE STATUSzGLOBAL STATUSSTATUS)global_zSESSION STATUSzTABLE STATUSzFULL TABLESTABLESTRIGGERSzGLOBAL VARIABLES	VARIABLESzSESSION VARIABLESWARNINGSLOCKc                 C  s   |  tjS r)   )_parse_property_assignmentr   LockPropertyr+   r-   r-   r.   r         c                 C  
   |  dS )NPERSIST_parse_set_item_assignmentr+   r-   r-   r.   r        
 c                 C  rY  )NPERSIST_ONLYr[  r+   r-   r-   r.   r     r]  c                 C  rY  Nr9  _parse_set_item_charsetr+   r-   r-   r.   r     r]  c                 C  rY  r_  r`  r+   r-   r-   r.   r     r]  c                 C  r-  r)   )_parse_set_item_namesr+   r-   r-   r.   r     r/  )rZ  r^  r9  r   NAMESc                 C     | j ddS )NFULLTEXTr~   _parse_index_constraintr+   r-   r-   r.   r     rX  c                 C  r-  r)   rf  r+   r-   r-   r.   r     r/  c                 C  r-  r)   rf  r+   r-   r-   r.   r     r/  c                 C  rd  )NSPATIALr~   rf  r+   r-   r-   r.   r     rX  )re  rG  r   rh  MODIFYc                 C  r-  r)   )_parse_alter_table_alterr+   r-   r-   r.   r     r/  c                 C  r-  r)   )_parse_alter_table_alter_indexr+   r-   r-   r.   r     r/  re  r   rh  )ALLCPUIPCMEMORYSOURCESWAPS)IO)SWITCHES)FAULTS)BLOCKCONTEXTPAGEzparser.OPTIONS_TYPEPROFILE_TYPES>   SQL_NO_CACHEHIGH_PRIORITYSTRAIGHT_JOINSQL_BIG_RESULTSQL_SMALL_RESULTSQL_BUFFER_RESULTSQL_CALC_FOUND_ROWSFr$   kexp.GeneratedAsIdentityColumnConstraint | exp.ComputedColumnConstraint | exp.GeneratedAsRowColumnConstraintc                   sd   t   }| dr0| jj dk}t|tjr |	d| |S t|tj
r0| jtj|j|d}|S )N)STOREDVIRTUALr  	persisted)r5   r  )super_parse_generated_as_identity_match_texts_prevr@   rA   r   r   ComputedColumnConstraintr   #GeneratedAsIdentityColumnConstraintr2   )r&   r5   r  	__class__r-   r.   r    s   


z)MySQL.Parser._parse_generated_as_identityt.Optional[exp.Expression]c                 C  s:   |   }| tjs|S |  }|   | jtj||dS r   )	r2  r*  r    L_PAREN_parse_number_match_r_parenr2   r   ColumnPrefix)r&   r5   r2   r-   r-   r.   _parse_primary_key_part  s   z$MySQL.Parser._parse_primary_key_partNrw   t.Optional[str]exp.IndexColumnConstraintc                 C  s  |r|  d | jdd}| tjo|  o| jj}| | j	}g }	 | 
dr8| tj tj|  d}nu| tjrKtj|  oG| jjd}nb| 
dd	r\tj| jddd
}nQ| tjrktj|  d}nB| 
drwtjdd}n6| 
drtjdd}n*| 
dr| tj tj|  d}n| 
dr| tj tj|  d}nd }|sn|| q$| jtj|||||dS )N)rG  r   F	any_tokenTKEY_BLOCK_SIZE)key_block_size)usingWITHPARSER)r   )commentVISIBLE)visible	INVISIBLEENGINE_ATTRIBUTE)engine_attrSECONDARY_ENGINE_ATTRIBUTE)secondary_engine_attr)r5   r%  rw   
index_typeoptions)r  r2  r*  r    r+  _advance_anyr  r@   _parse_wrapped_csv_parse_ordered_match_text_seqEQr   IndexConstraintOptionr  r,  COMMENT_parse_stringappendr2   IndexColumnConstraint)r&   rw   r5   r  r%  r  optr-   r-   r.   rg  
  sN   






z$MySQL.Parser._parse_index_constraintr5   r4   r=  
bool | strr>  t.Optional[bool]rP  r(   c                   s  |rt |tr |   }nd } dr  nd }|dv r0 dr+  nd }d }nd }d } tjr?  }n tj	rK|}  } ddrU  nd }	 dr`  nd }
 
 }|dkr  fdd	} dd
r}  nd } dr  nd } dr  nd }n
d\}}  \}} drdnd } drdn|} jtjf|||||||	|
||||||dd|iS )NIN)r8  rM  r<  rF  CHANNELLIKErK  c                     s      jS r)   )_parse_var_from_optionsrx  r-   r+   r-   r.   r   ]  rX  z0MySQL.Parser._parse_show_mysql.<locals>.<lambda>QUERYOFFSETLIMIT)NNMUTEXTrO  F)r5   r=  r>  logpositiondbchannellikewheretypesqueryoffsetlimitmutexglobal)r   r4   r  r2  r  r  r*  r    r<  DOT_parse_wherer(  _parse_oldstyle_limitr2   r   Show)r&   r5   r=  r>  rP  	target_idr  r  r  r  r  r  r  r  r  r  r  r-   r+   r.   r*   :  s`   



zMySQL.Parser._parse_show_mysql?t.Tuple[t.Optional[exp.Expression], t.Optional[exp.Expression]]c                 C  s^   d }d }|  dr+| | j}t|dkr|d }||fS t|dkr+|d }|d }||fS )Nr  rV   r   r   )r  r(  r  rW   )r&   r  r  partsr-   r-   r.   r  {  s   
z"MySQL.Parser._parse_oldstyle_limitrz   c                 C  s"   |   p|  }| jtj||dS )N)r5   rw   )r  _parse_unquoted_fieldr2   r   SetItem)r&   rw   r5   r-   r-   r.   ra    s   z$MySQL.Parser._parse_set_item_charsetc                 C  sD   |   p|  }| dr|   p|  }nd }| jtj||ddS )NCOLLATErc  )r5   collaterw   )r  r  r  r2   r   r  )r&   r&  r  r-   r-   r.   rb    s
   
z"MySQL.Parser._parse_set_item_namesparse_intervalrT   fallback_to_identifierc                   sP   | j tjddr | jddd}t|tjr | jtj| 	 |dS t
 j||dS )NF)advanceT)
check_funcallow_identifiers)r5   to)r  r  )r*  r    BINARY_parse_typesr   r   DataTyper2   Cast_parse_columnr  _parse_type)r&   r  r  	data_typer  r-   r.   r    s   zMySQL.Parser._parse_typec                   s   d fdd} j  r9t d	 tjr d	 nd }|r/|j d	< |d
||j  |p7| d  }nd }tj	rE
 nd }jtj||dS )Nnoder  exprst.List[exp.Expression]r$   rz   c                   sf   t | tjr t| jdkr jtj| jddg}| d| | S t|dkr*|d S jtj ddS )NrV   T)r%  safer%  r   )r   r   DistinctrW   r%  r2   Concatr   )r  r  concat_exprsr!   r&   r-   r.   r    s   z6MySQL.Parser._parse_group_concat.<locals>.concat_exprsr5   r   )r5   	separator)r  r  r  r  r$   rz   )r(  _parse_lambdar   r   Orderr5   r   r*  r    r   _parse_fieldr2   GroupConcat)r&   r  orderr5   r  r-   r  r.   r.    s   
z MySQL.Parser._parse_group_concatexp.JSONValuec                 C  sR   |   }| tj |   }| tjo|  }| jtj|| j	
|||  dS )N)r5   path	returningon_condition)_parse_bitwiser*  r    COMMA	RETURNINGr  r2   r   	JSONValuedialectto_json_path_parse_on_condition)r&   r5   r  r  r-   r-   r.   r3    s   
zMySQL.Parser._parse_json_valueexp.AlterIndexc                 C  sB   | j dd}| drd}n
| drd}nd }| jtj||dS )NTr  r  r  F)r5   r  )r  r  r2   r   
AlterIndex)r&   indexr  r-   r-   r.   rk    s   

z+MySQL.Parser._parse_alter_table_alter_index)r$   r  )r$   r  r)   )rw   r  r$   r  )FNN)
r5   r4   r=  r  r>  r  rP  r  r$   r(   )r$   r  )rw   r4   r$   rz   )r$   rz   )TF)r  rT   r  rT   r$   r  )r$   r  )r$   r  )Kr   r   r   r   ParserFUNC_TOKENSr    r!  r   r0  CONJUNCTIONDAMPr   AndXORXorDISJUNCTIONDPIPEOrTABLE_ALIAS_TOKENSTABLE_INDEX_HINT_TOKENSRANGE_PARSERSr   	FUNCTIONSCurrentDatefrom_arg_listr   DateAddr   r  DateSubNumberToStrrr   r   TimeFromPartsCurrentSchemare   r   TimestampDiffFUNCTION_PARSERSSTATEMENT_PARSERSr   r0   SHOW_PARSERSPROPERTY_PARSERSSET_PARSERSCONSTRAINT_PARSERSALTER_PARSERSALTER_ALTER_PARSERSSCHEMA_UNNAMED_CONSTRAINTSdictfromkeystuplerx  __annotations__TYPE_TOKENSSETENUM_TYPE_TOKENSOPERATION_MODIFIERSLOG_DEFAULTS_TO_LNSTRING_ALIASESVALUES_FOLLOWED_BY_PARENSUPPORTS_PARTITION_SELECTIONr  r  rg  r*   r  ra  rb  r  r.  r3  rk  __classcell__r-   r-   r  r.   r    s"  
 
	

	
+
	
 !"#$%&'()*+,-./012347	


3
A




!r  c                      sV  e Zd ZU dZdZdZdZdZdZdZ	dZ
dZdZdZdZdZdZdZded< dZdZdZdZi ejji ejedejeeje d	d
 dej!e e"dej#e$ej%e e"dej&e'ej(e  ej)e edej*e edej+e edej,dd
 ej-e.ej/e0ej1e2ej3edej4edi ej5e6ej7e8ej9e  ej:dd
 ej;dd
 ej<edej=e>ej?e@Ae@jBe@jCe@jDe@jEe@jFgejGdd
 ejHeIejJeIejKedejLeMejNedejOePddejQdd
 ejRePddejSedejTdd
 ejUe dd
 ejVeWejXeYejZe"dej[dd
 ej\e]ej^d d
 ej_e`ejae  ejbe ed!ejce  iZejdjejfd"ejdjejgd#ejdjejhd$ejdjejid%ejdjejjd&ejdjejkd'ejdjejld(iZmejdjejnd)ejdjejod)ejdjejpd)ejdjejqd)ejdjejrd*ejdjejsd*iZti ejjuemetZueuvejdjejw euvejdjejx euvejdjejy euvejdjejz euvejdjej{ euvejdjej| euvejdjej} i ejj~ejejjjejejjjiZ~d+ZdZeejdjejxejdjej|ejdjej{ejdjejwejdjejejdjej}ejdjejyejdjejfd,Zeejdjejejdjejejdjejejdjejejdjejejdjejfd-Zi eeejdjejfd.iZejdjejrejdjejshZh d/Zdld4d5Zdmd7d8Zdnd:d;Zdod=d>Zdp fd@dAZdq fdCdDZdrdFdGZdsdt fdJdKZdudMdNZdv fdPdQZdwdUdVZdudWdXZdxdZd[Zdyd]d^Zdzd`daZd{dcddZd|dfdgZedhd}djdkZ  ZS )~r1   FTN ,r  PARSE_JSON_NAMEr5  c                 C     |  d|j|jS NDATEDIFFrC   r5   r2   r&   er-   r-   r.   r     r   zMySQL.Generator.<lambda>rp   ADDSUBr  r	  r  c                 C  s&   d|  |d d|  |dpd dS )NzGROUP_CONCAT(r5   z SEPARATOR r  z',')r?   r.  r-   r-   r.   r     s   &MAXMINc                 C  s   |  |dS )N<=>r  r.  r-   r-   r.   r     rX  c                 C  s   d|  |d S )NzNOT r6  r7  r.  r-   r-   r.   r     r   r  c                 C  s   t | |dddS )NLOCATET)	func_namesupports_position)r   r.  r-   r-   r.   r     s    INSERTr  r<   c                 C  s   |  dt||j|jS )Nr"  )rC   r   r2   r5   r.  r-   r-   r.   r   &  s    UNIX_TIMESTAMPc                 C  s   t | ||jd dS )Nzone)include_precision)r   r!   rq   r.  r-   r-   r.   r   +  s
    c                 C  rg   )Nr  rh   r.  r-   r-   r.   r   1  s    c                 C  r*  r+  r-  r.  r-   r-   r.   r   6  r   c                 C     d|  |j dS )NzORD(CONVERT(z USING utf32))r?   r5   r.  r-   r-   r.   r   8  r  r$  r   INTr   SMALLINTTINYINTDECIMALDOUBLEDATETIMEr   r  r4  r   r   >  asbyifinisofonorr  addallandascdecdivforrq   intkeylagmodnotoutrowr   r?   sslusexorblobbothcallcasecharcubedescdropdualeachelseexitfromint1int2int3int4int8intojoinkeyskillleadleftr  loadlocklongloopnulloverrankreadrealrowsshowthentrueundowhenwithaltercheckcrossemptyfalsefetchfloatforcegrantgroupr  innerinoutleaver  linesmatchntiler  outerpurgerangereadsrightrliketableunionusager  r  whilewritebeforebigintr  changecolumncreatecursordeletedoubleelseifexceptexistsfloat4float8groupshavingignoreinfileinsertlinearoptionregexprenamerepeatr$   revokeschemaselectsignalstoredsystemuniqueunlockupdatevalueswindowanalyzebetweencascader  convertdecimaldeclaredefaultdelayedescapedexplainforeignintegeriteratelateralleadingnaturalnumericoutfileprimaryreleasereplacerequireschemasspatialtinyinttriggervarcharvaryingvirtualcontinuedatabaseday_hourdescribedistinctenclosedfulltextfunctiongroupingintervallongbloblongtextmaxvaluemodifiesoptimizeresignalrestrictsmallintspecificsqlstatestartingtinyblobtinytexttrailingunsignedutc_dateutc_timezerofill	character	condition	cume_dist	databases	generated	intersect	localtime	mediumint	middleint	nth_value	partition	precision	procedure	recursive	sensitiver  	varbinary
accessible
asensitive
constraint
day_minute
day_second
dense_rank
json_table
last_value
mediumblob
mediumtext
optionally
read_write
references
row_number
sqlwarning
terminated
year_monthdistinctrowfirst_valuehour_minutehour_secondinsensitivemaster_bindcurrent_datecurrent_timecurrent_userlow_prioritypercent_ranksqlexceptionvarcharacterdeterministichigh_priorityminute_secondstraight_joinutc_timestampio_after_gtidslocaltimestampsql_big_resultday_microsecondio_before_gtidsoptimizer_costshour_microsecondsql_small_resultcurrent_timestampminute_microsecondno_write_to_binlogsecond_microsecondsql_calc_found_rowsmaster_ssl_verify_server_certr2   exp.ComputedColumnConstraintr$   r4   c                 C  s0   |j drdnd}d| |j  d| S )Nr  r  r  zGENERATED ALWAYS AS (z) )r!   rq   r?   r5   unnest)r&   r2   r  r-   r-   r.   computedcolumnconstraint_sql  s   z,MySQL.Generator.computedcolumnconstraint_sql	exp.Arrayc                 C     |  d | |S )Nz!Arrays are not supported by MySQLrB   r   ri   r-   r-   r.   	array_sql     

zMySQL.Generator.array_sqlexp.ArrayContainsAllc                 C  rC  )Nz+Array operations are not supported by MySQLrD  ri   r-   r-   r.   arraycontainsall_sql  rF  z$MySQL.Generator.arraycontainsall_sql	exp.DPipec                 C  s   | j dg| R  S )NCONCAT)rC   flattenri   r-   r-   r.   	dpipe_sql  s   zMySQL.Generator.dpipe_sqlexp.Extractc                   s0   |j }|r| dkr| d|jS t |S )Nepochr<  )ra   lowerrC   r2   r  extract_sql)r&   r2   r6   r  r-   r.   rP    s   zMySQL.Generator.extract_sqlexp.DataTypec                   sF   | j r|tjjjr|jsdS t |}|j	| j
v r!| d}|S )NTEXTz	 UNSIGNED)VARCHAR_REQUIRES_SIZEis_typer   r  TypeVARCHARr%  r  datatype_sqlr5   UNSIGNED_TYPE_MAPPING)r&   r2   resultr  r-   r.   rW    s   
zMySQL.Generator.datatype_sqlexp.JSONArrayContainsc                 C  s    |  |d d|  |d dS )Nr5   z MEMBER OF(r2   r2  r3  ri   r-   r-   r.   jsonarraycontains_sql  s    z%MySQL.Generator.jsonarraycontains_sqlexp.Castsafe_prefixc                   sJ   |j j| jv r| d|jS | j|j j}|r|j d| t |S )Nr   r5   )	r  r5   TIMESTAMP_FUNC_TYPESrC   CAST_MAPPINGrq   r   r  cast_sql)r&   r2   r]  r  r  r-   r.   r`    s   zMySQL.Generator.cast_sqlr(   c                 C  s  d|j  }|jdrdnd}|jdrdnd}| |d}|r'd| nd}|j dv r4d	| }n
|j d
kr>d| }| d|d}| d|d}| |d}| j|dd}	|	r`d|	 n|	}	| d|d}
|j dkr}| d|d}| d|d}nd}| |}| d|d}| d|d}| d|d}|j dkr|jd rd!nd"}nd}d#| | | | |	 | |
 | | | | | | | | S )$Nr'  r>  z FULLr   r  z GLOBALr=  )r;  rG  z FROMrE  z FORr<  r  r  r  r  r  )rW  z	FOR QUERYr  rK  r  r  r  r  r  r  r  zFOR CHANNELr  rA  r  z MUTEXz STATUSr   )ra   r!   rq   r?   _prefixed_sqlr%  _oldstyle_limit_sql)r&   r2   r5   r>  rP  r=  r  r  r  r  r  r  r  r  r  r  mutex_or_statusr-   r-   r.   show_sql  s6   





BzMySQL.Generator.show_sqlexp.AlterColumnc                   s8   |  |d}|st |S |  |d}d| d| S )Ndtyper5   zMODIFY COLUMN r'  )r?   r  altercolumn_sql)r&   r2   rf  r5   r  r-   r.   rg    s
   zMySQL.Generator.altercolumn_sqlprefixrz   r   c                 C  s$   |  ||}|rd| d| S dS )Nr'  r   r3  )r&   rh  r2   r   r?   r-   r-   r.   ra    s   zMySQL.Generator._prefixed_sqlc                 C  s@   |  |d}|  |d}|r|r| d| n|}d| S dS )Nr  r  z, z LIMIT r   r3  )r&   r2   r  r  limit_offsetr-   r-   r.   rb    s   
z#MySQL.Generator._oldstyle_limit_sqlexp.Chrc                 C  sJ   | j |jg|j  d}|jd}|rd| | nd}d| | dS )N)sqlsr&  z USING r   zCHAR(r2  )r%  r5   r!   rq   r?   )r&   r2   r5   r&  r  r-   r-   r.   chr_sql	  s   zMySQL.Generator.chr_sqlexp.TimestampTruncc                 C  sP   |j d}d}ttj|||jg}tj||d}ttj||g}| 	|S )Nr6   z'0000-01-01 00:00:00'r|   )
r!   rq   r   r   r  r5   r}   r   r  r?   )r&   r2   r6   start_tstimestamp_diffr  dateaddr-   r-   r.   timestamptrunc_sql  s   
z"MySQL.Generator.timestamptrunc_sqlexp.ConvertTimezonec                 C  s4   |j d}|j d}|j d}| d|||S )Nr   r   ru   r   )r!   rq   rC   )r&   r2   from_tzto_tzdtr-   r-   r.   converttimezone_sql  s   z#MySQL.Generator.converttimezone_sqlexp.AtTimeZonec                 C  s   |  d | |jS )Nz&AT TIME ZONE is not supported by MySQL)rB   r?   r5   ri   r-   r-   r.   attimezone_sql#  s   
zMySQL.Generator.attimezone_sqlexp.IsAsciic                 C  r?  )NzREGEXP_LIKE(z, '^[[:ascii:]]*$')r@  ri   r-   r-   r.   isascii_sql'  s   zMySQL.Generator.isascii_sqlr5   exp.CurrentSchemac                 C  rY  )Nr   )rC   ri   r-   r-   r.   currentschema_sql*  s   
z!MySQL.Generator.currentschema_sql)r2   r?  r$   r4   )r2   rB  r$   r4   )r2   rG  r$   r4   )r2   rI  r$   r4   )r2   rM  r$   r4   )r2   rQ  r$   r4   )r2   rZ  r$   r4   r)   )r2   r\  r]  r  r$   r4   )r2   r(   r$   r4   )r2   re  r$   r4   )rh  r4   r2   rz   r   r4   r$   r4   )r2   rj  r$   r4   )r2   rm  r$   r4   )r2   rr  r$   r4   )r2   rw  r$   r4   )r2   ry  r$   r4   )r2   r{  r$   r4   )r   r   r   INTERVAL_ALLOWS_PLURAL_FORMLOCKING_READS_SUPPORTEDNULL_ORDERING_SUPPORTED
JOIN_HINTSTABLE_HINTSDUPLICATE_KEY_UPDATE_WITH_SETQUERY_HINT_SEPVALUES_AS_TABLENVL2_SUPPORTEDLAST_DAY_SUPPORTS_DATE_PART!JSON_TYPE_REQUIRED_FOR_EXTRACTION!JSON_PATH_BRACKETED_KEY_SUPPORTEDJSON_KEY_VALUE_PAIR_SEPSUPPORTS_TO_NUMBERr)  r  PAD_FILL_PATTERN_IS_REQUIREDWRAP_DERIVED_VALUESrS  SUPPORTS_MEDIANr   	Generator
TRANSFORMSr   ArrayAggr   r	  r   r  r   r  r   DateStrToDater   r  	DateTruncrG   r  r  r
  r  r  ILiker   JSONExtractScalarr
   r  r   	LogicalOr
LogicalAndMaxr   Minr   r  
NullSafeEQNullSafeNEQr  Pivotr   Selectr   
preprocesseliminate_distinct_oneliminate_semi_and_anti_joinseliminate_qualifyeliminate_full_outer_join.unnest_generate_date_array_using_recursive_cteStrPositionrc   rj   rb   StuffTableSampler   r  TimestampAddr   r  TimestampSubTimeStrToUnixTimeStrToTimer  Trimr   TryCastr   	TsOrDsAdd
TsOrDsDiffr   r   Unicoderr   rv   r  r  r  r  rU  r   UINT
UMEDIUMINT	USMALLINTUTINYINTUDECIMALUDOUBLErX  	DATETIME2SMALLDATETIMEr   TIMESTAMPNTZr   TIMESTAMPLTZTIMESTAMP_TYPE_MAPPINGTYPE_MAPPINGpopr   r   r   r   r   r   r   PROPERTIES_LOCATIONTransientProperty
PropertiesLocationUNSUPPORTEDVolatilePropertyLIMIT_FETCHLIMIT_ONLY_LITERALSr  r  rR  rV  CHAR_CAST_MAPPINGr   BOOLEANrA  rB  rC  r   SIGNED_CAST_MAPPINGr_  r^  RESERVED_KEYWORDSrA  rE  rH  rL  rP  rW  r[  r`  rd  rg  ra  rb  rl  rq  rv  rx  rz  r   r|  r&  r-   r-   r  r.   r    s  
 
	







&)*
+,
-.
/2
3




I











	

  






(






r  N)r   r   r   !PROMOTE_TO_INFERRED_DATETIME_TYPE IDENTIFIERS_CAN_START_WITH_DIGITr	   CASE_SENSITIVENORMALIZATION_STRATEGYTIME_FORMATDPIPE_IS_STRING_CONCATSUPPORTS_USER_DEFINED_TYPESSUPPORTS_SEMI_ANTI_JOINSAFE_DIVISIONTIME_MAPPINGr   r   r   r  r   r  r-   r-   r-   r.   r_      s6    W   Xr_   )r!   r"   r#   r"   r$   r%   )r&   r1   r2   r3   r$   r4   )rF   r4   r$   rT   )r!   r[   r$   r\   )r&   r1   r2   rf   r$   r4   )r&   r1   r2   rk   r$   r4   )rw   r4   r$   rx   )r&   r1   r2   r   r$   r4   )Nr   )r   r   r!   r   r$   r   )2
__future__r   typingtsqlglotr   r   r   r   r   sqlglot.dialects.dialectr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   sqlglot.generatorr   sqlglot.helperr   sqlglot.tokensr    r0   rG   rX   rZ   re   rj   rv   r   r   r   r_   r-   r-   r-   r.   <module>   s(    `







