o
    8Di|                     @  s  d dl mZ d dlZd dlmZ d dlmZ d dlm	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&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, d dl-m.Z.m/Z/m0Z0m1Z1 d d	l2m3Z3 d d
l4m5Z5 d dl6m7Z7 d dl8m9Z9 ddddddZ:dddddZ;dZ<ej=ej>ej?ej@fZAdEdd ZBdFd"d#ZCdGd%d&ZDe7d'dHd)d*ZEdId,d-ZFdJd/d0ZGdKd2d3ZHdLd5d6ZIdMd8d9ZJdNd=d>ZKdOdAdBZLG dCdD dDeZMdS )P    )annotationsN)deepcopy)partial)defaultdict)exp	generatorparsertokens
transforms)DATE_ADD_OR_SUBDialectNormalizationStrategyapprox_count_distinct_sqlarg_max_or_min_no_countdatestrtodate_sqlbuild_formatted_timeif_sqlis_parse_jsonleft_to_substring_sqlmax_or_greatestmin_or_leastno_ilike_sqlno_recursive_cte_sqlno_trycast_sqlregexp_extract_sqlregexp_replace_sqlrename_funcright_to_substring_sqlstrposition_sqlstruct_extract_sqltime_formattimestrtotime_sqlunit_to_strvar_map_sqlsequence_sqlproperty_sqlbuild_regexp_extract)remove_unique_constraints'ctas_with_tmp_tables_to_create_tmp_view
preprocess%move_schema_columns_to_partitioned_by)seq_get)	TokenType)unsupported_args)TypeAnnotator)
ADD_MONTHS   )r/      )r/      )DATE_ADD   r3   r1   )YEARMONTHQUARTERWEEKDAYz * 1000 z / 60z / 3600)MILLISECONDSECONDMINUTEHOUR)r6   r8   r7   selfHive.Generator
expressionr   returnstrc                 C  s   t |tjr|js| d|j|jS |d }t	
|d\}}t |tjr+|d9 }|j}t |tjrI|jr;| nt|j}tj|| }n|dkrU|tj|9 }| ||j|S )Nr3   unitr5   r1   )
isinstancer   	TsOrDsAddrE   functhisrB   textupperDATE_DELTA_INTERVALgetDateSubLiteral	is_numberto_pyintnamenumber)r@   rB   rE   rI   
multiplier	incrementvalue rY   N/var/www/Datamplify/venv/lib/python3.10/site-packages/sqlglot/dialects/hive.py_add_date_sqlL   s   r[   exp.DateDiff | exp.TsOrDsDiffc                 C  s   | d }t|}|d ur1| |d}| |d}d| d| d}|r/d| d| S |S |tv }|r9dnd	}t|d
\}	}
|
dkrLd|
 nd}| d| |j|j	 d}|s`|rhd| | d}|S )NrE   rJ   rB   zUNIX_TIMESTAMP(z) - UNIX_TIMESTAMP()(MONTHS_BETWEENDATEDIFF)r;   r1   r1   z / r;   CAST(z AS INT))
rK   rL   TIME_DIFF_FACTORrN   sqlDIFF_MONTH_SWITCHrM   format_argsrJ   rB   )r@   rB   rE   factorleftrightsec_diffmonths_betweensql_func_rV   multiplier_sqldiff_sqlrY   rY   rZ   _date_diff_sql`   s   
ro   exp.JSONFormatc                 C  s   |j }t|r5|j jr0tjd|j j d}| d|| d|}| d|}| d|ddS | |S | d||j	
d	S )
N[]	FROM_JSONSCHEMA_OF_JSONTO_JSONREGEXP_EXTRACTz
'^.(.*).$'1options)rJ   r   	is_stringr   rP   stringrT   rI   rc   argsrN   )r@   rB   rJ   wrapped_json	from_jsonto_jsonrY   rY   rZ   _json_format_sqlx   s   
r   )rB   z0Hive's SORT_ARRAY does not support a comparator.exp.ArraySortc                 C  s   |  d|jS )N
SORT_ARRAYrI   rJ   r@   rB   rY   rY   rZ   _array_sort_sql   s   r   exp.StrToUnixc                 C     |  d|jtd| |S )NUNIX_TIMESTAMPhiverI   rJ   r    r   rY   rY   rZ   _str_to_unix_sql   s   r   exp.UnixToTimec                 C  sH   |  |d}|jd}|d tjjfv rtd| |S d| d| dS )NrJ   scaleFROM_UNIXTIMEzFROM_UNIXTIME(z / POW(10, )))rc   r{   rN   r   
UnixToTimeSECONDSr   )r@   rB   	timestampr   rY   rY   rZ   _unix_to_time_sql   s
   r   exp.StrToDatec                 C  D   |  |d}| |}|tjtjfvrd| d| d}d| dS )NrJ   FROM_UNIXTIME(UNIX_TIMESTAMP(, r   ra   z	 AS DATE)rc   format_timeHiveTIME_FORMATDATE_FORMATr@   rB   rJ   r    rY   rY   rZ   _str_to_date_sql   
   
r   exp.StrToTimec                 C  r   )NrJ   r   r   r   ra   z AS TIMESTAMP)r   r   rY   rY   rZ   _str_to_time_sql   r   r   exp.TsOrDsToDatec                 C  sT   |  |}|r|tjtjfvr| d|j|S t|jtr#| 	|dS | d|jS )NTO_DATErJ   )
r   r   r   r   rI   rJ   rG   parentTS_OR_DS_EXPRESSIONSrc   )r@   rB   r    rY   rY   rZ   _to_date_sql   s   
r   	exp_classt.Type[exp.Expression]4t.Callable[[t.List[exp.Expression]], exp.Expression]c                   s   d fdd}|S )Nr{   t.List[exp.Expression]rC   exp.Expressionc                   s2    t | dd}t | dt krtj|dS |S )Nr   rJ   r1   )r+   r   trueIgnoreNulls)r{   rJ   r   rY   rZ   _parse   s   z(_build_with_ignore_nulls.<locals>._parse)r{   r   rC   r   rY   )r   r   rY   r   rZ   _build_with_ignore_nulls   s   r   r{   t.Listc                 C  s    t tjd| }|dd |S )Nr   safeT)r   r   TsOrDsToDateset)r{   exprrY   rY   rZ   _build_to_date   s   r   c                   @  s`  e Zd ZdZdZdZdZdZdZe	j
Zi ejejdd ejdd iZeeeejZh ejjejjejjjD ]Zee  ejjO  < q;i dd	d
d	dd	dd	ddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d-d-d.d/d0d1Zd2Zd3Zd4Z G d5d6 d6e!j"Z"G d7d8 d8e#j$Z$G d9d: d:e%j&Z&dS );r   TFNr1   c                 C     | j |ddddS )Nr   falseTpromote_annotate_by_argsr@   erY   rY   rZ   <lambda>       zHive.<lambda>c                 C  r   )NrJ   expressionsTr   r   r   rY   rY   rZ   r      s    yz%YYYYYYyyyyYYz%yyyMMMMz%BMMMz%bMMz%mMz%-mddz%ddz%-dHHz%HHz%-Hhhz%Ihz%-Immz%Mz%-Mz%Sz%-Sz%fz%pz%jz%-jz%az%Az%Zz%z)msssSSSSSSaDDDEEEEEEEEEEzZz'yyyy-MM-dd'z
'yyyyMMdd'z'yyyy-MM-dd HH:mm:ss'c                   @  s   e Zd ZddgZdgZdgZi ejjde	j
iZi ejje	je	je	je	je	je	je	je	je	je	je	je	jdZddd	d
dddZdS )zHive.Tokenizer'"`\$)zADD ARCHIVEzADD ARCHIVESzADD FILEz	ADD FILESzADD JARzADD JARSMINUSzMSCK REPAIRREFRESHzTIMESTAMP AS OFzVERSION AS OFSERDEPROPERTIESBIGINTSMALLINTTINYINTDOUBLEFLOATDECIMAL)LSr   r   FBDN)__name__
__module____qualname__QUOTESIDENTIFIERSSTRING_ESCAPESr	   	TokenizerSINGLE_TOKENSr,   	PARAMETERKEYWORDSCOMMANDEXCEPTr   TIMESTAMP_SNAPSHOTVERSION_SNAPSHOTSERDE_PROPERTIESNUMERIC_LITERALSrY   rY   rY   rZ   r     s@    
r   c                      s  e Zd ZdZdZdZdZi ejj	i de
jjde
jjddd de
jjd	d
d ddd ddd ddd ddd dee
jdee
jdee
jddddd dee
jdee
jdejddd e
jje
jjee
jee
je
jje
jje
jjdd ee
j je
j!je
j"jdd d d d!Z	i ejj#d"d#d iZ#ejj$% Z$e$&e'j( i ejj)d$d%d iZ)d=d(d)Z*	d>d? fd/d0Z+d@ fd2d3Z,dAd5d6Z-dBd;d<Z.  Z/S )CzHive.ParserTFASCIIBASE64COLLECT_LISTc                 C  s   t jt| dddS )Nr   T)rJ   nulls_excluded)r   ArrayAggr+   r{   rY   rY   rZ   r   :      zHive.Parser.<lambda>COLLECT_SETr3   c                 C  s$   t jt| dt| dt jddS )Nr   r1   r:   rJ   rB   rE   )r   rH   r+   rP   rz   r  rY   rY   rZ   r   <  s    r   c                 C  s(   t tjdtjt| ddt| dgS )Nr   r   r   r1   )r   r   	TimeToStrTimeStrToTimer+   r  rY   rY   rZ   r   ?  s
   
 DATE_SUBc                 C  s6   t jt| dt jt| dt jddt jddS )Nr   r1   rF   rJ   rB   r:   r
  )r   rH   r+   MulrP   rU   rz   r  rY   rY   rZ   r   E  s
    
r`   c                 C  s*   t jt jt| ddt jt| dddS )Nr   r   r1   r  )r   DateDiffr   r+   r  rY   rY   rZ   r   J  s    r:   c                 C  s   t jt jt| dddS )Nr   r   )r   Dayr   r+   r  rY   rY   rZ   r   N  s    FIRSTFIRST_VALUEr   r   GET_JSON_OBJECTc                 C  s    t jt| d|t| ddS )Nr   r1   r  )r   JSONExtractScalarr+   to_json_path)r{   dialectrY   rY   rZ   r   R  s    LAST
LAST_VALUEMAPr7   c                 C     t jt j| dS Nr   )r   Monthr   from_arg_listr  rY   rY   rZ   r   X  r  c                 C  s:   t jt| dt| dpt jdt| dpt jddS )Nr   r1   ,   :)rJ   
pair_delimkey_value_delim)r   StrToMapr+   rP   rz   r  rY   rY   rZ   r   `  s
    c                 C  s   t tjdd| pt gS )Nr   T)r   r   	StrToUnixCurrentTimestampr  rY   rY   rZ   r   i  s    c                 C  r  r  )r   Yearr   r  r  rY   rY   rZ   r   l  r  )
PERCENTILEPERCENTILE_APPROXrv   REGEXP_EXTRACT_ALLSEQUENCESIZESPLIT
STR_TO_MAPr   ru   TRUNCUNBASE64r   r6   	TRANSFORMc                 C  s   |   S N)_parse_transformr@   rY   rY   rZ   r   q  s    r   c                 C  s   t j| | jdS )Nr   )r   SerdeProperties_parse_wrapped_csv_parse_propertyr4  rY   rY   rZ   r   y  s    
rC   .t.Optional[exp.Transform | exp.QueryTransform]c              
   C  s   | j tjdds| | jd  d S | | j}| jdd}d }| dr)| 	 }|  tj
s5tj|S | 	 }|  tj |  }| jdd}d }| drT| 	 }| jtj|||||||dS )	NF)advancer1   T)	match_rowRECORDWRITERRECORDREADER)r   command_scriptschemarow_format_beforerecord_writerrow_format_afterrecord_reader)_matchr,   L_PAREN_retreat_indexr7  _parse_lambda_parse_row_format_match_text_seq_parse_stringUSINGr   	Transformr  ALIAS_parse_schemarB   QueryTransform)r@   r{   r@  rA  r>  r?  rB  rC  rY   rY   rZ   r3  ~  s6   

zHive.Parser._parse_transform
check_funcboolr?  allow_identifierst.Optional[exp.Expression]c                   s0   t  j|||d}|r|s|jdd ddS |S )a#  
            Spark (and most likely Hive) treats casts to CHAR(length) and VARCHAR(length) as casts to
            STRING in all contexts except for schema definitions. For example, this is in Spark v3.4.0:

                spark-sql (default)> select cast(1234 as varchar(2));
                23/06/06 15:51:18 WARN CharVarcharUtils: The Spark cast operator does not support
                char/varchar type and simply treats them as string type. Please use string type
                directly to avoid confusion. Otherwise, you can set spark.sql.legacy.charVarcharAsString
                to true, so that Spark treat them as string type as same as Spark 3.0 and earlier

                1234
                Time taken: 4.265 seconds, Fetched 1 row(s)

            This shows that Spark doesn't truncate the value into '12', which is inconsistent with
            what other dialects (e.g. postgres) do, so we need to drop the length to transpile correctly.

            Reference: https://spark.apache.org/docs/latest/sql-ref-datatypes.html
            )rQ  r?  rS  c                 S  s.   t | tjr| ddr| tjdS | S )NcharvarcharrK   )rG   r   DataTypeis_typereplacebuild)noderY   rY   rZ   r     s
   

z*Hive.Parser._parse_types.<locals>.<lambda>F)copy)super_parse_types	transform)r@   rQ  r?  rS  rJ   	__class__rY   rZ   r^    s   	zHive.Parser._parse_types;t.Tuple[t.List[exp.Expression], t.Optional[exp.Expression]]c                   s8   |  tjtjhr| | jng t j| tj	dfS )N)skip_order_token)

_match_setr,   PARTITION_BYDISTRIBUTE_BY
_parse_csv_parse_assignmentr]  _parse_orderrD  SORT_BYr4  r`  rY   rZ   _parse_partition_and_order  s
   z&Hive.Parser._parse_partition_and_orderexp.Parameterc                 C  sV   |  tj |  p|  }|  tjo|  p|  }|  tj | jtj	||dS )Nr  )
rD  r,   L_BRACE_parse_identifier_parse_primary_or_varCOLONR_BRACErB   r   	Parameter)r@   rJ   rB   rY   rY   rZ   _parse_parameter  s   zHive.Parser._parse_parameterrB   r   indexrS   c                 C  sD   |j r|S t|tjr|j}n
td|d  }| jtj||dS )Ncolr1   r  )is_starrG   r   ColumnrJ   to_identifierrB   
PropertyEQ)r@   rB   rt  keyrY   rY   rZ   _to_prop_eq  s   zHive.Parser._to_prop_eq)rC   r9  )FFT)rQ  rR  r?  rR  rS  rR  rC   rT  )rC   rb  )rC   rl  )rB   r   rt  rS   rC   r   )0r   r   r   LOG_DEFAULTS_TO_LNSTRICT_CASTVALUES_FOLLOWED_BY_PARENJOINS_HAVE_EQUAL_PRECEDENCEr   Parser	FUNCTIONSr   Unicoder  ToBase64ArrayUniqueAggr   First
FirstValuer   	UnixToStrLast	LastValuebuild_var_mapQuantileApproxQuantiler&   RegexpExtractRegexpExtractAllGenerateSeries	ArraySizeRegexpSplitr   
JSONFormatTimestampTrunc
FromBase64NO_PAREN_FUNCTION_PARSERSNO_PAREN_FUNCTIONSr\  popr,   CURRENT_TIMEPROPERTY_PARSERSr3  r^  rk  rs  r{  __classcell__rY   rY   r`  rZ   r  0  s    	



 !"#9
%%
	r  c                      s  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ed< dZdZd	ZejejejejhZejejejejhZi ej j!ej"j#j$d
ej"j#j%dej"j#j&dej"j#j'dej"j#j(dej"j#j)dej"j#j*dej"j#j+dej"j#j,dej"j#j-di
Z!i ej j.i ej/e01e0j2gej3e4ej5e6dej7e8ej9e:dej;e:dej<e6dej=dd ej>e?ej@eAejBeCejDeEejFeGejHeCejIdd ejJdd ejKdd i ejLe6dejMeNejOeNejPeQ ejReSejTdd ejUe6dejVdd ejWdd ejXeYejZe[ej\e]ej^e_ej`dd ejaebejcdd ejddd i ejee]ejfe1egeheigejje6d ejke6d!ejlemejnemejoepejqd"d ejre6d#ejsetejud$d ejve6d%ejwd&d eje01e0jxe0jyeze0j{dd'e0j|gej}d(d ej~eejei ejeejeeje6d)eje01e0jgeje6d*ejeeje6d+ejd,d eje6d+eje6d-ejd.d ejeCejeEejeejeeje6d/ejd0d i ejeeje6d1eje6d2ejd3d eje6d4ejd5d ejd6d ejd7d ejd8d ejd9d ejd:d ejd;d ejd<d eje6d=eje6d>eje6d?ejed@dAdBdCe6dDZ.i ej jejejjjejejjjejejjjejejjjiZdzdIdJZd{ fdLdMZd|dOdPZd} fdRdSZd~dUdVZddXdYZdd[d\Zd fd^d_Zd fdadbZddddeZdd fdidjZddldmZddodpZd fdrdsZddudvZddxdyZÇ  ZS )rA   LIMITFzON TABLETTBLPROPERTIESNzt.Optional[str]PARSE_JSON_NAMEr,  BOOLEANBINARY	TIMESTAMPSTRINGr   r  MAX_BYMIN_BYCONCATc                 C     |  d|j|jS )N	CONCAT_WSrI   rB   rJ   r   rY   rY   rZ   r     r   zHive.Generator.<lambda>c                 C     d|  |d dtj dS )NzCAST(DATE_FORMAT(rJ   r   z	) AS INT)rc   r   DATEINT_FORMATr   rY   rY   rZ   r   %     c                 C  r  )NzTO_DATE(CAST(rJ   z AS STRING), r]   r  r   rY   rY   rZ   r   '  r  c                 C     d|  |d S )Nz
STORED BY rJ   rc   r   rY   rY   rZ   r   )  r   r0  c                 C     |  |dS )NDIVbinaryr   rY   rY   rZ   r   /      ISNANc                 C  r  Nr  rI   rJ   rB   r   rY   rY   rZ   r   1  r   c                 C  r  r  r  r   rY   rY   rZ   r   2  s    
c                 C  s   |  d|  d|jS )NUNHEXMD5r   r   rY   rY   rZ   r   9  s    c                 C  r  )Nr_   r  r   rY   rY   rZ   r   ;  r   c                 C  s   |j drdS dS )N
allow_nullr;   zNOT NULL)r{   rN   )rl   r   rY   rY   rZ   r   <     r(  r)  c                 C  r  )NRLIKEr  r   rY   rY   rZ   r   L  r  r-  c                 C  s
   |  |S r2  )naked_propertyr   rY   rY   rZ   r   O  s   
 r	  c              
   C  s   |  d|j|  dd|jdS )Nr-  r  z'\\Q'z'\\E'r  r   rY   rY   rZ   r   Q  s    )unnest_using_arrays_zipc                 C  s   t | |dddS )NLOCATET)	func_namesupports_position)r   r   rY   rY   rZ   r   \  s    r  r   r   c                 C  s   |  d|jt|S )Nr/  )rI   rJ   r"   r   rY   rY   rZ   r   h  r  r  c                 C  s   d|  |d dS )NzCAST(SUBSTR(REPLACE(CAST(rJ   z$ AS STRING), '-', ''), 1, 8) AS INT)r  r   rY   rY   rZ   r   k  r  r  c                 C  r   )Nr   r   r   r   rY   rY   rZ   r   r  s    r   EXPLODEc                 C  r  )NzPARTITIONED BY rJ   r  r   rY   rY   rZ   r   x  r   FORMAT_NUMBERc                 C  s   | j |ddS )Nr;   )prefix)national_sqlr   rY   rY   rZ   r   z  s    c                 C     d| j |ddd dS Nr^   rJ   F)indentr]   r5  r   rY   rY   rZ   r   {     c                 C  r  r  r5  r   rY   rY   rZ   r   }  r  c                  G     dS Nr;   rY   rl   rY   rY   rZ   r         c                  G  r  r  rY   r  rY   rY   rZ   r     r  c                 C  r  )NBUCKETr  r   rY   rY   rZ   r     r   c                 C  r  )NTRUNCATEr  r   rY   rY   rZ   r     r   c                  G  r  )NzPRIMARY KEYrY   r  rY   rY   rZ   r     r  
WEEKOFYEAR
DAYOFMONTH	DAYOFWEEKins_costdel_costsub_costmax_distLEVENSHTEINrB   
exp.UnnestrC   rD   c                 C  s   t d| |S )Nr  )r   r   rY   rY   rZ   
unnest_sql  s   zHive.Generator.unnest_sqlexp.JSONPathKeyc                   s(   t |jtjr| d dS t |S )Nz.Unsupported wildcard in JSONPathKey expressionr;   )rG   rJ   r   JSONPathWildcardunsupportedr]  _jsonpathkey_sqlr   r`  rY   rZ   r    s   
zHive.Generator._jsonpathkey_sqlrl  c                 C  s^   |  |d}|  |d}|j}|r| d| n|}t|tjr)t|jtjr)|S d| dS )NrJ   rB   r!  z${})rc   r   rG   r   EQSetItem)r@   rB   rJ   expression_sqlr   rY   rY   rZ   parameter_sql  s   zHive.Generator.parameter_sql
exp.Schemac                   s:   | tjD ]}|jddu r|dd  qt |S )NdescF)find_allr   Orderedr{   rN   r   r]  
schema_sql)r@   rB   orderedr`  rY   rZ   r    s
   zHive.Generator.schema_sqlexp.Constraintc                 C  sJ   t |tjD ]}|  q| |d}| j|ddd}d| d| S )NrJ    T)sepflatzCONSTRAINT )listr  r   
Propertiesr  rc   r   )r@   rB   proprJ   r   rY   rY   rZ   constraint_sql  s
   
zHive.Generator.constraint_sqlexp.RowFormatSerdePropertyc                 C  s4   |  |d}|rd| nd}d|  |d | S )Nserde_propertiesr  r;   zROW FORMAT SERDE rJ   r  )r@   rB   serde_propsrY   rY   rZ   rowformatserdeproperty_sql  s   z)Hive.Generator.rowformatserdeproperty_sqlexp.ArrayAggc                 C  s&   |  dt|jtjr|jjS |jS )Nr  )rI   rG   rJ   r   Orderr   rY   rY   rZ   arrayagg_sql  s   zHive.Generator.arrayagg_sqlexp.DataTypec                   s   |j | jv r|jr|jd jdkrtjd}nF|tjjj	r-|jr-|
dtjjj n1|j tjjv r<tj|j }n"|dr^|tj}|r^t|j}|dkrXtjdntjd}t |S )Nr   MAXrK   rJ   float    double)rJ   PARAMETERIZABLE_TEXT_TYPESr   rT   r   rW  rZ  rX  TypeTEXTr   VARCHARTEMPORAL_TYPESfindDataTypeParamrS   r]  datatype_sql)r@   rB   size_expressionsizer`  rY   rZ   r    s    

zHive.Generator.datatype_sqlexp.Versionc                   s   t  |}|dddS )NzFOR r;   r1   )r]  version_sqlrY  )r@   rB   rc   r`  rY   rZ   r    s   zHive.Generator.version_sql
exp.Structc                 C  sX   g }t |jD ]\}}t|tjr| d ||j q|| q| jdg|R  S )Nz$Hive does not support named structs.STRUCT)		enumerater   rG   r   ry  r  appendrB   rI   )r@   rB   valuesir   rY   rY   rZ   
struct_sql  s   
zHive.Generator.struct_sqlr  exp.ColumnDefr  c                   s2   t  j|t|jtjr|jdrddS |dS )Nstructz: )r  )r]  columndef_sqlrG   r   r   rW  rX  )r@   rB   r  r`  rY   rZ   r    s   
zHive.Generator.columndef_sqlexp.AlterSetc                 C  s   | j |dd}|rd| nd}| |d}|rd| nd}| j |dddd}|r/d	| nd}| |d
}|r>d| nd}| j |dddd}|rPd| nd}d| | | | | S )NTr  r  r;   locationz
 LOCATION file_format)rz  r  r  z FILEFORMAT serdez SERDE tagz TAGS SET)r   rc   )r@   rB   exprsr  r  r  tagsrY   rY   rZ   alterset_sql  s   zHive.Generator.alterset_sqlexp.SerdePropertiesc                 C  s2   |j drdnd}| j|dd}| d| dS )NwithzWITH r;   Tr  zSERDEPROPERTIES (r]   )r{   rN   r   )r@   rB   r  r  rY   rY   rZ   serdeproperties_sql  s   z"Hive.Generator.serdeproperties_sql
exp.Existsc                   s   |j r| |S t |S r2  )rB   function_fallback_sqlr]  
exists_sqlr   r`  rY   rZ   r     s   
zHive.Generator.exists_sqlexp.TimeToStrc                 C  s,   |j }t|tjr|j }| d|| |S )Nr   )rJ   rG   r   r  rI   r   r@   rB   rJ   rY   rY   rZ   timetostr_sql  s   zHive.Generator.timetostr_sqlexp.FileFormatPropertyc                 C  s0   t |jtjr| |d}n|j }d| S )NrJ   z
STORED AS )rG   rJ   r   InputOutputFormatrc   rT   rL   r"  rY   rY   rZ   fileformatproperty_sql  s   

z%Hive.Generator.fileformatproperty_sql)rB   r  rC   rD   )rB   r  rC   rD   )rB   rl  rC   rD   )rB   r  rC   rD   )rB   r  rC   rD   )rB   r  rC   rD   )rB   r  rC   rD   )rB   r  rC   rD   )rB   r  rC   rD   )rB   r  rC   rD   )r  )rB   r  r  rD   rC   rD   )rB   r  rC   rD   )rB   r  rC   rD   )rB   r  rC   rD   )rB   r!  rC   rD   )rB   r$  rC   rD   )r   r   r   LIMIT_FETCHTABLESAMPLE_WITH_METHOD
JOIN_HINTSTABLE_HINTSQUERY_HINTSINDEX_ONEXTRACT_ALLOWS_QUOTESNVL2_SUPPORTEDLAST_DAY_SUPPORTS_DATE_PARTJSON_PATH_SINGLE_QUOTE_ESCAPESUPPORTS_TO_NUMBERWITH_PROPERTIES_PREFIXr  __annotations__PAD_FILL_PATTERN_IS_REQUIREDSUPPORTS_MEDIANARRAY_SIZE_NAMEr   InsertSelectSubquerySetOperationEXPRESSIONS_WITHOUT_NESTED_CTESJSONPathKeyJSONPathRootJSONPathSubscriptr  SUPPORTED_JSON_PATH_PARTSr   	GeneratorTYPE_MAPPINGrW  r  BITBLOBDATETIME
ROWVERSIONr  TIMETIMESTAMPNTZTIMESTAMPTZUTINYINT	VARBINARY
TRANSFORMSGroupr
   r)   unalias_groupPropertyr%   AnyValuer   ApproxDistinctr   ArgMaxr   ArgMinArrayConcatArrayToString	ArraySortr   Withr   DateAddr[   r  ro   DateStrToDater   rO   DateToDiDiToDateStorageHandlerPropertyr  r  r$   GenerateDateArrayIfr   ILiker   IntDivIsNanJSONExtractr  r  r   Leftr   Mapr#   Maxr   	MD5DigestMinr   MonthsBetweenNotNullColumnConstraintVarMapCreater'   r(   r*   r  r  r  r   r  RegexpReplacer   
RegexpLiker  Rightr   SchemaCommentPropertyr  Spliteliminate_qualifyeliminate_distinct_onr   unnest_to_explodeany_to_existsStrPosition	StrToDater   	StrToTimer   r%  r   StructExtractr   StarMapTableunnest_generate_seriesTimeStrToDater  r!   TimeStrToUnixr  
TimeToUnixr  
TsOrDiToDirH   
TsOrDsDiffr   r   TryCastr   r  r  r   r   UnixToTimeStrUnnestPartitionedByPropertyNumberToStrNationalClusteredColumnConstraintNonClusteredColumnConstraint!NotForReplicationColumnConstraint
OnPropertyPartitionedByBucketPartitionByTruncatePrimaryKeyColumnConstraint
WeekOfYear
DayOfMonth	DayOfWeekLevenshteinr-   PROPERTIES_LOCATIONFileFormatPropertyr  LocationPOST_SCHEMAVolatilePropertyUNSUPPORTEDWithDataPropertyr  r  r  r  r  r  r  r  r  r  r  r  r  r   r#  r&  r  rY   rY   r`  rZ   r@    s  
 














	








 !"#
$%
&
'*+
2
3456
7
89
:
;
<?
GJKLM
NO
PQ
R
S
T
U
VXYZ[
\
]`
a
b
c
d
e
f
h
j
k
l
m
n
o
p
qrw








r@  )'r   r   r   ALIAS_POST_TABLESAMPLE IDENTIFIERS_CAN_START_WITH_DIGITSUPPORTS_USER_DEFINED_TYPESSAFE_DIVISIONARRAY_AGG_INCLUDES_NULLSREGEXP_EXTRACT_DEFAULT_GROUPr   CASE_INSENSITIVENORMALIZATION_STRATEGYr   
ANNOTATORSr   r]  Coalescer   r   r   r.   
COERCES_TOrW  NUMERIC_TYPESr  r  INTERVALtarget_type
TEXT_TYPESTIME_MAPPINGr   r  r   r	   r   r   r  r   r@  rY   rY   rY   rZ   r      s    

		
!# 8r   )r@   rA   rB   r   rC   rD   )r@   rA   rB   r\   rC   rD   )r@   rA   rB   rp   rC   rD   )r@   rA   rB   r   rC   rD   )r@   rA   rB   r   rC   rD   )r@   rA   rB   r   rC   rD   )r@   rA   rB   r   rC   rD   )r@   rA   rB   r   rC   rD   )r@   rA   rB   r   rC   rD   )r   r   rC   r   )r{   r   rC   r   )N
__future__r   typingtr\  r   	functoolsr   collectionsr   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    r!   r"   r#   r$   r%   r&   sqlglot.transformsr'   r(   r)   r*   sqlglot.helperr+   sqlglot.tokensr,   sqlglot.generatorr-    sqlglot.optimizer.annotate_typesr.   rM   rb   rd   r  r  r  r'  r   r[   ro   r   r   r   r   r   r   r   r   r   r   rY   rY   rY   rZ   <module>   sT    x	





	



