XׯdddlZddlZdZejejzdzZegdZegdZegdZ edgZ d*dZ d Z Gd d Z d Zd+dZd+dZd+dZdZdZdZdZdZdZdZdZdZdZd,dZdZGdd ZGd!d"eZGd#d$eZ Gd%d&eZ!Gd'd(eZ"d)Z#dS)-Nz _(FACCESSIBLE_SYMACTIONADD ADDDATE_SYM AFTER_SYMAGAINST AGGREGATE_SYM ALGORITHM_SYMALLALTER ANALYZE_SYM AND_AND_SYMAND_SYMANY_SYMASASC ASCII_SYMAT_SYM AUTHORS_SYMAUTOEXTEND_SIZE_SYMAUTO_INCAVG_ROW_LENGTHAVG_SYM BACKUP_SYM BEFORE_SYM BEGIN_SYM BETWEEN_SYMBIGINTBINARY BINLOG_SYMBIN_NUMBIT_ANDBIT_ORBIT_SYMBIT_XORBLOB_SYM BLOCK_SYM BOOLEAN_SYMBOOL_SYMBOTH BTREE_SYMBYBYTE_SYM CACHE_SYMCALL_SYMCASCADECASCADEDCASE_SYMCAST_SYMCATALOG_NAME_SYM CHAIN_SYMCHANGECHANGEDCHARSETCHAR_SYM CHECKSUM_SYM CHECK_SYM CIPHER_SYMCLASS_ORIGIN_SYM CLIENT_SYM CLOSE_SYMCOALESCECODE_SYM COLLATE_SYM COLLATION_SYMCOLUMNSCOLUMN_NAME_SYM COLUMN_SYM COMMENT_SYM COMMITTED_SYM COMMIT_SYM COMPACT_SYMCOMPLETION_SYMCOMPRESSED_SYM CONCURRENT CONDITION_SYMCONNECTION_SYMCONSISTENT_SYM CONSTRAINTCONSTRAINT_CATALOG_SYMCONSTRAINT_NAME_SYMCONSTRAINT_SCHEMA_SYM CONTAINS_SYM CONTEXT_SYM CONTINUE_SYMCONTRIBUTORS_SYM CONVERT_SYM COUNT_SYMCPU_SYMCREATECROSSCUBE_SYMCURDATE CURRENT_USERCURSOR_NAME_SYM CURSOR_SYMCURTIMEDATABASE DATABASES DATAFILE_SYMDATA_SYMDATETIMEDATE_ADD_INTERVALDATE_SUB_INTERVALDATE_SYM DAY_HOUR_SYMDAY_MICROSECOND_SYMDAY_MINUTE_SYMDAY_SECOND_SYMDAY_SYMDEALLOCATE_SYM DECIMAL_NUM DECIMAL_SYM DECLARE_SYMDEFAULT DEFINER_SYM DELAYED_SYMDELAY_KEY_WRITE_SYM DELETE_SYMDESCDESCRIBE DES_KEY_FILEDETERMINISTIC_SYM DIRECTORY_SYM DISABLE_SYMDISCARDDISK_SYMDISTINCTDIV_SYM DOUBLE_SYMDO_SYMDROPDUAL_SYMDUMPFILE DUPLICATE_SYM DYNAMIC_SYMEACH_SYMEDIT_SYMELSE ELSEIF_SYM ENABLE_SYMENCLOSEDENDENDS_SYM END_OF_INPUT ENGINES_SYM ENGINE_SYMENUMEQ EQUAL_SYMERRORS ERROR_SYMESCAPED ESCAPE_SYM EVENTS_SYM EVENT_SYM EVERY_SYM EXECUTE_SYMEXISTSEXIT_SYM EXPANSION_SYM EXTENDED_SYMEXTENT_SIZE_SYM EXTRACT_SYM FALSE_SYMFAST_SYM FAULTS_SYM FETCH_SYMFILE_SYM FIRST_SYM FIXED_SYM FLOAT_NUM FLOAT_SYM FLUSH_SYM FORCE_SYMFOREIGNFOR_SYM FOUND_SYMFROMFULL FULLTEXT_SYM FUNCTION_SYMGEGENERALGEOMETRYCOLLECTION GEOMETRY_SYM GET_FORMAT GLOBAL_SYMGRANTGRANTSGROUP_CONCAT_SYM GROUP_SYMGT_SYM HANDLER_SYMHASH_SYMHAVINGHELP_SYMHEX_NUM HIGH_PRIORITY HOSTS_SYMHOST_SYMHOUR_MICROSECOND_SYMHOUR_MINUTE_SYMHOUR_SECOND_SYMHOUR_SYMIDENTIDENTIFIED_SYM IDENT_QUOTEDIFIGNORE_SERVER_IDS_SYM IGNORE_SYMIMPORTINDEXES INDEX_SYMINFILEINITIAL_SIZE_SYM INNER_SYM INOUT_SYMINSERT INSERT_METHOD INSTALL_SYM INTERVAL_SYMINTOINT_SYM INVOKER_SYMIN_SYMIO_SYMIPC_SYMIS ISOLATION ISSUER_SYM ITERATE_SYMJOIN_SYMKEYSKEY_BLOCK_SIZEKEY_SYMKILL_SYM LANGUAGE_SYMLAST_SYMLELEADINGLEAVES LEAVE_SYMLEFTLESS_SYM LEVEL_SYM LEX_HOSTNAMELIKELIMIT LINEAR_SYMLINES LINESTRINGLIST_SYMLOAD LOCAL_SYM LOCKS_SYMLOCK_SYM LOGFILE_SYMLOGS_SYMLONGBLOBLONGTEXTLONG_NUMLONG_SYMLOOP_SYM LOW_PRIORITYLTMASTER_CONNECT_RETRY_SYMMASTER_HEARTBEAT_PERIOD_SYMMASTER_HOST_SYMMASTER_LOG_FILE_SYMMASTER_LOG_POS_SYMMASTER_PASSWORD_SYMMASTER_PORT_SYMMASTER_SERVER_ID_SYMMASTER_SSL_CAPATH_SYMMASTER_SSL_CA_SYMMASTER_SSL_CERT_SYMMASTER_SSL_CIPHER_SYMMASTER_SSL_KEY_SYMMASTER_SSL_SYM!MASTER_SSL_VERIFY_SERVER_CERT_SYM MASTER_SYMMASTER_USER_SYMMATCHMAX_CONNECTIONS_PER_HOURMAX_QUERIES_PER_HOURMAX_ROWS MAX_SIZE_SYMMAX_SYMMAX_UPDATES_PER_HOURMAX_USER_CONNECTIONS_SYM MAX_VALUE_SYM MEDIUMBLOB MEDIUMINT MEDIUMTEXT MEDIUM_SYM MEMORY_SYM MERGE_SYMMESSAGE_TEXT_SYMMICROSECOND_SYM MIGRATE_SYMMINUTE_MICROSECOND_SYMMINUTE_SECOND_SYM MINUTE_SYMMIN_ROWSMIN_SYMMODE_SYM MODIFIES_SYM MODIFY_SYMMOD_SYM MONTH_SYMMULTILINESTRING MULTIPOINT MULTIPOLYGON MUTEX_SYMMYSQL_ERRNO_SYM NAMES_SYMNAME_SYM NATIONAL_SYMNATURAL NCHAR_STRING NCHAR_SYMNDBCLUSTER_SYMNENEGNEW_SYMNEXT_SYM NODEGROUP_SYMNONE_SYMNOT2_SYMNOT_SYMNOW_SYMNO_SYM NO_WAIT_SYMNO_WRITE_TO_BINLOGNULL_SYMNUM NUMERIC_SYM NVARCHAR_SYM OFFSET_SYM OLD_PASSWORDON ONE_SHOT_SYMONE_SYMOPEN_SYMOPTIMIZEOPTION OPTIONALLY OPTIONS_SYMOR2_SYM ORDER_SYM OR_OR_SYMOR_SYMOUTEROUTFILEOUT_SYM OWNER_SYM PACK_KEYS_SYMPAGE_SYM PARAM_MARKER PARSER_SYMPARTIALPARTITIONING_SYMPARTITIONS_SYM PARTITION_SYMPASSWORD PHASE_SYM PLUGINS_SYM PLUGIN_SYM POINT_SYMPOLYGONPORT_SYM POSITION_SYM PRECISION PREPARE_SYM PRESERVE_SYMPREV_SYM PRIMARY_SYM PRIVILEGES PROCEDURE_SYMPROCESSPROCESSLIST_SYM PROFILES_SYM PROFILE_SYMPURGE QUARTER_SYM QUERY_SYMQUICK RANGE_SYM READS_SYM READ_ONLY_SYMREAD_SYMREAD_WRITE_SYMREAL REBUILD_SYM RECOVER_SYM REDOFILE_SYMREDO_BUFFER_SIZE_SYM REDUNDANT_SYM REFERENCESREGEXPRELAY RELAYLOG_SYMRELAY_LOG_FILE_SYMRELAY_LOG_POS_SYM RELAY_THREAD RELEASE_SYMRELOAD REMOVE_SYMRENAMEREORGANIZE_SYMREPAIRREPEATABLE_SYM REPEAT_SYMREPLACE REPLICATION REQUIRE_SYM RESET_SYM RESIGNAL_SYM RESOURCES RESTORE_SYMRESTRICT RESUME_SYM RETURNS_SYM RETURN_SYMREVOKERIGHT ROLLBACK_SYM ROLLUP_SYM ROUTINE_SYMROWS_SYMROW_FORMAT_SYMROW_SYM RTREE_SYM SAVEPOINT_SYM SCHEDULE_SYMSCHEMA_NAME_SYMSECOND_MICROSECOND_SYM SECOND_SYM SECURITY_SYM SELECT_SYM SEPARATOR_SYMSERIALIZABLE_SYM SERIAL_SYM SERVER_SYM SESSION_SYMSETSET_VAR SHARE_SYM SHIFT_LEFT SHIFT_RIGHTSHOWSHUTDOWN SIGNAL_SYM SIGNED_SYM SIMPLE_SYMSLAVESLOWSMALLINT SNAPSHOT_SYM SOCKET_SYM SONAME_SYM SOUNDS_SYM SOURCE_SYM SPATIAL_SYMSQLEXCEPTION_SYM SQLSTATE_SYMSQLWARNING_SYMSQL_BIG_RESULTSQL_BUFFER_RESULT SQL_CACHE_SYMSQL_CALC_FOUND_ROWSSQL_NO_CACHE_SYMSQL_SMALL_RESULTSQL_SYM SQL_THREADSSL_SYMSTARTING STARTS_SYM START_SYM STATUS_SYMSTDDEV_SAMP_SYMSTD_SYMSTOP_SYM STORAGE_SYM STRAIGHT_JOIN STRING_SYMSUBCLASS_ORIGIN_SYM SUBDATE_SYM SUBJECT_SYMSUBPARTITIONS_SYMSUBPARTITION_SYM SUBSTRINGSUM_SYM SUPER_SYM SUSPEND_SYM SWAPS_SYM SWITCHES_SYMSYSDATETABLES TABLESPACETABLE_CHECKSUM_SYMTABLE_NAME_SYMTABLE_REF_PRIORITY TABLE_SYM TEMPORARY TEMPTABLE_SYM TERMINATED TEXT_STRINGTEXT_SYMTHAN_SYMTHEN_SYM TIMESTAMP TIMESTAMP_ADDTIMESTAMP_DIFFTIME_SYMTINYBLOBTINYINTTINYTEXTTO_SYMTRAILINGTRANSACTION_SYM TRIGGERS_SYM TRIGGER_SYMTRIMTRUE_SYM TRUNCATE_SYM TYPES_SYMTYPE_SYMUDF_RETURNS_SYM ULONGLONG_NUMUNCOMMITTED_SYM UNDEFINED_SYMUNDERSCORE_CHARSET UNDOFILE_SYMUNDO_BUFFER_SIZE_SYM UNICODE_SYM UNINSTALL_SYM UNION_SYM UNIQUE_SYM UNKNOWN_SYM UNLOCK_SYMUNSIGNED UNTIL_SYM UPDATE_SYM UPGRADE_SYMUSAGEUSERUSE_FRMUSE_SYMUSING UTC_DATE_SYMUTC_TIMESTAMP_SYM UTC_TIME_SYMVALUES VALUE_SYM VARBINARYVARCHAR VARIABLES VARIANCE_SYMVARYING VAR_SAMP_SYMVIEW_SYMWAIT_SYMWARNINGSWEEK_SYMWHEN_SYMWHERE WHILE_SYMWITH WITH_CUBE_SYMWITH_ROLLUP_SYMWORK_SYM WRAPPER_SYM WRITE_SYMX509_SYMXA_SYMXML_SYMXORYEAR_MONTH_SYMYEAR_SYMZEROFILL)sp_opt_fetch_noiseinsert_lock_optionopt_var_ident_type trg_event opt_ignore opt_ev_status remember_endopt_ignore_leaves param_markeropt_wildshow_engine_param profile_def opt_distinctview_algorithm IDENT_sysopt_query_expansionTEXT_STRING_systext_or_passwordinterval_time_stampopt_natural_language_modeudf_typefulltext opt_one_phase spatial_type opt_chainnvarcharopt_match_clauseev_on_completionascii opt_localcharset view_suid keys_or_indexolap_optopt_with_read_lock no_definer union_option opt_outer opt_defaultview_check_optionopt_fullnotts_access_mode opt_migratebtree_or_rtree opt_temporaryopt_no_write_to_binlogsp_suid reset_optiondescribe_command NUM_literalslave_thread_opt option_type2opt_join_or_resume delete_optionhandler_scan_function keyword_spand remember_name opt_bin_modopt_checksum_typeopt_allquery_expression_optionrequire_list_elementnot2 data_or_xml lines_or_rowspart_value_itemcomp_opinit_key_optionsopt_privileges opt_table_sym subselect_endhave_partitioningtable_or_tables opt_storage row_types table_aliasopt_asget_select_lex opt_var_type normal_join opt_linearTEXT_STRING_literal opt_primaryequalnchardec_nummaster_or_binary real_type field_length mi_check_type ulonglong_numopt_andtrg_action_time precisionload_data_lockTEXT_STRING_filesystemisolation_types opt_release sp_init_param&signal_condition_information_item_name opt_tableselect_derived_initopt_extended_describe from_or_ints_waitunicodeopt_workmerge_insert_typesopt_profile_argssp_handler_type opt_uniquemi_repair_typeselect_lock_type opt_columndeallocate_or_dropint_type table_optionstart_transaction_opts if_exists all_or_anyclear_privilegesdate_time_typeor order_dir opt_option field_option opt_savepoint lock_option ulong_numopt_low_priorityoptional_braces flush_optionindex_hint_clauseremove_partitioningopt_delete_option view_replace key_or_indexsubselect_startopt_tocharindex_hint_typespatial opt_value opt_duplicate sp_opt_inout kill_option opt_restrictbegin_or_starthandler_rkey_modeopt_end_of_input)ident ident_or_textr text_stringrrrZ part_namenowc6|d|d|d}}}|r]|d|zd|d|d|D]}t|||dz|d|zd|d|ddS|d|zd|d|d dS) Nrz <, z> z )write dump_tree)fastdepthsymvaluechildrencs ..\modules\sql_reformatter.pyrr)sq63q63q6C< $u***ccc5559::: % %A aE!G $ $ $ $ 4:::sssEEE:;;;;; 4:::sssEEE:;;;;;c8ddl}t|j|dSNr)sysrstdout)rrs rdumpr5s#JJJ cj#rceZdZdZdZdS) ASTHelperc.t||_dSN)len max_range)selftexts r__init__zASTHelper.__init__;sTrc|d}|d |d|zn|j}|d |d|znd}|dD]:}||\}}t||}t||};||fS)Nrr)r get_ast_rangeminmax)rroffsetberb_e_s rr zASTHelper.get_ast_range>sQ V/CF6MMT^ V/CF6MMQQ  A''**FBB AB AA!t rN)__name__ __module__ __qualname__rr rrrr:s2###rrc|d}|d}|d}g}|D]$}|t|%|||fSNrrr)appendtrim_ast)nodesvrlis rrrHsX QA QA QA A  ! q!9rrc~t|zdt|zz|dzSN  INDENTATIONjoinsplitrcounts rindentr'Qs6 u k%&7 8>>tzz$?O?OPP PPrct|z|zSr)r"r%s r indent_headr)Ts u t ##rchdt|zz|dSrr!r%s r indent_tailr+Ws, +e# $ * *4::d+;+; < <z'flatten_node_spaced..\s*UUUjQSnnUjnnUUUrr# node_childrenrs rflatten_node_spacedr8[s+ HHUU}T/B/BUUU V VWrcZddt|DS)NcJg|] }t|t|!Srr/r1s rr4z)flatten_node_unspaced.._s*TTTZPR^^TZ^^TTTrr5r7s rflatten_node_unspacedr<^s+ GGTTmD.A.ATTT U UVrcfdg}|d||r-|dr%|dddkr|ddd|d<d|S)Nc|\}}}|\}}}||tvs |tvrm|r"|ddkr||n|tvs |tvs|s||dznj|d|zdznN|r7|dr/|dddvr|dkr|d|zn||d} |D]}  | | || } dS)N(r- ()NNN)KEYWORD_TOKENSKEYWORD_ONLY_NODESr) rpnodeoutpspnpcrnrprflattenificates rrMz$flatten_node..flattenificatebs8 B1a =N""a+=&=&=."R&C--JJqMMMM^++r5G/G/Gs/G 1S5)))) 3q59----"3r7"s2wr{('B'BqCxxJJs1u%%%%JJqMMM   A N1a % % %AA  rrCr?r-r:r#)rrrMs @r flatten_noderOas0 AN4+Q///QrUquRyC''"crc " 771::rc|r;|d|d|d}}}||kr|S|D]}t||}|r|cSdSr)find_child_node)rsymbolrrKrchildfounds rrQrQsj q'47DGa1 ;;K  E#E622E    4rcg}|rK|d|d|d}}}||kr|||D]}|t||z }|Sr)rfind_child_nodes)rrRmatchesrrKrrSs rrVrVsnG 7q'47DGa1 ;; NN4  7 7E 'v66 6GG Nrc|dSrrr7s r node_symbolrY 7Nrc|r|dndS)Nrr:rr7s rr0r0s "477"rc|dSNrrr7s rr6r6rZrcT|t|dkrdS|d|Sr])r)rrs rnode_direct_childr_s*CQLLt 71:rcJ|dD]}t||kr|cSdSr])rY)rnamer3s rnode_direct_child_namedrbs91g r??d " "III # 4rr:FcXfdg}||||S)Nc>|\}}}|r|dkr.r|dnd|dnN|r7|dr/|dddvr|dkr|d|zn|||D]}||dS)N,, rr?rArBr-)r) expr_noderGrrKrrflattennewline_on_commas rrhz'flatten_comma_sep_node..flattens1a "Cxx#%JJu%%%%JJt$$$$"3r7"s2wr{('B'BqCxxJJs1u%%%%JJqMMM  A GAsOOOO  rrN)rseprirGrhs ` @rflatten_comma_sep_noderksK C GD# 88C==rcd}d}t|D]b}t|}|dkr|dz }d}|r |tt|z }n|t t|z }d}c|S)Nr:FrerfT)r6r0r'rOr+)rrafter_nlr3rs r flatten_comma_sep_node_multilinerns DHD!!   rNN 88 EMDHH 6|B//000 L$4$4555HH KrceZdZdZdZdZdZdZdZdZ dZ dZ dZ dZ dZd Zd Zd Zd ZeZeZeZeZd ZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$e$Z%dZ&dZ'dZ(dZ)dZ*d Z+d!Z,d"Z-d#Z.e.Z/d$Z0e0Z1e0Z2e0Z3e0Z4d%Z5d&Z6d'Z7d(Z8d)Z9d*Z:d+Z;d,Zd/Z?d0Z@d1ZAd2ZBd3ZCd4ZDd5ZEd6ZFd7ZGeGZHd8ZId9ZJd:S); SQLPrettifierF(P<c||_g|_tjjjjddr|||_||j|_dS)Nz&DbSqlEditor:Reformatter:UpcaseKeywordsr) rparentgrtrootwboptionsgetupcasify_keywords strip_ast)rrs rrzSQLPrettifier.__init__sb 8;  & * *+SUV W W 3--c22DH>>$(++rc|\}}}t|dkrst|dtvrWt|dr-t jddt |dz|St|d}g}|D].}||}|r| |/|||fS)Nrr Reformatterz"Node unexpectedly has a value: %s ) rrY STRIP_TOKENSr0rv log_warningreprr6r|r)rrrRrr new_childrenprocessed_nodes rr|zSQLPrettifier.strip_asts"&x x==A  +hqk":":l"J"J(1+&&  /TW[\def\gWhWh/hiii $Xa[11H  4 4D!^^D11N 4##N333ul**rc6|\}}}|}|rV|tvrM|dkr d|ddz}n|}n|}g}|D].}||}|r||/|||fS)Nr0xr)NON_KEYWORD_TOKENSupperr{r) rrrRrr new_symbol new_valuerrs rr{zSQLPrettifier.upcasify_keywordss"&x  V#555||~~** 59??#4#44 !KKMM I  4 4D!33D99N 4##N3339l22rcj||jggdS)Nr)traverserrstrip)rs rrunzSQLPrettifier.runs+}}TXr2..q188:::rc\|\}}}|}|}g} t|D]B\} } || || dzd||gz} | r| | C||_t |d|zd} | r| ||| f}nd}||||| f}g} ||| fS)Nrsym_) enumeraterr current_pathgetattrdefault_handler)rrsiblingspathrRrrrrrrrrhandlers rrzSQLPrettifier.traverses"%x    ** 4 4GAt!]]4!A#$$QQN 4##N333!$v t44  Y EFFIII  ,,j%-NOOI 9l22rc t|SrrOrrs rrzSQLPrettifier.default_handler4D!!!rc t|Srr<rs rsym_text_literalzSQLPrettifier.sym_text_literal8$T***rcZt|}|d}d|ddzS)Nr:z'%s''z\')r0replace)rrrs rsym_TEXT_STRINGzSQLPrettifier.sym_TEXT_STRING;s2 t   9A #u----rcpt|}|r$|ddkr |ddks |jrd|zS|S)Nr`r?z`%s`)r0opt_always_quote_identifiers)rrrs r sym_identzSQLPrettifier.sym_identEsE4    %(c//eBinn$BcnE> !Lrc t|Srrrs rsym_simple_ident_qz SQLPrettifier.sym_simple_ident_qLrrc t|Srrrs rsym_table_identzSQLPrettifier.sym_table_identOrrc t|Srrrs rsym_table_wildzSQLPrettifier.sym_table_wildRrrc t|Srrrs r sym_variablezSQLPrettifier.sym_variableUrrc t|Srrrs rsym_variable_auxzSQLPrettifier.sym_variable_auxXrrc t|Srrrs rsym_select_var_identz"SQLPrettifier.sym_select_var_ident[rrct|d}t|dkrAt|d|d|dddf}t|dz|zSdS)Nrrrrr-)r_rYrOr0)rrselectrests rsym_select_initzSQLPrettifier.sym_select_init_sl"4++ v  , . .a$q'47122; ?@@Df%%c)$. . / .rc t|Srrrs rsym_select_init2zSQLPrettifier.sym_select_init2errc2d||zSrrrs rsym_union_clausezSQLPrettifier.sym_union_clausehsD((....rc t|Srr8rs rsym_select_option_listz$SQLPrettifier.sym_select_option_listk"4(((rc|t|d}t|d}t|d}t|d}t|}d|vr|S|rt|}nd}|r"|dtt|zz }|r|dt|zz }|r|dt|zz }|S)Nselect_optionsselect_item_list select_intorr r:)rbr8r0r))rrrrrrflatrs rsym_select_part2zSQLPrettifier.sym_select_part2ns07GHH249KLL-dMBB 249KLL"4(( t  K  n--DDD  C DZ0@%A%ABBB BD  1 DK000 0D  6 D$4555 5D rcFt||Sr)r+rrs r sym_subselectzSQLPrettifier.sym_subselects4//55666rct|d}t|d}t|d}t|d}t|d}t|}d|vr|Sd}|r|t|z }|r|t|z }|r"|dtt|zz }|r|dt|zz }|r|dt|zz }|S)Nopt_query_expression_optionsrropt_select_fromrr r:)rbr8r0r') rrselect_expr_optionsrr select_fromrrrs rsym_select_part2_derivedz&SQLPrettifier.sym_select_part2_deriveds5d D +; < <=== =D  1 DK000 0D  6 D$4555 5D rc t|Srrrs rsym_select_itemzSQLPrettifier.sym_select_itemrrct|}|j}|sd|vst||jkrd}|rt |}|S)Nr T)rkopt_always_break_select_itemsropt_max_select_item_list_lengthrn)rrrone_item_per_lines rsym_select_item_listz"SQLPrettifier.sym_select_item_lists\%d++ >  )t||s4yy4+OOO$(!  :3D99D rcJt|}|rt|ddkrxt|d}|d}|dztzt|zdz}|ddD]}|t|dzz }|d}|SdSdS)Nrrrr r)r6rYr0r"r)rrrfrom_kwdjoin_table_listrr3s rsym_select_fromzSQLPrettifier.sym_select_froms &&   HQK00J>>!(1+..H&qkOD=,Z-H-HHMDqrrl , , 2t++;;t$$DK  >>rctt|d}t|dd}g}tt |D]D}t ||}|dvr)|t||Dd|}d|jvr|dt|zdzz }n |d|zdzz }|tt||dzz }t|d}t|d}|r&tt|d } |d | zz }n'|r%tt|d } |d | zz }|S) Nrr)rrrrCrrorrr-select_derived_unionr rYr*exprz ON %s using_listz USING (%s)) r0r_r6rangerrYrr#rr'rb) rrrr join_typerronusingrrs rsym_join_tablezSQLPrettifier.sym_join_tables+D!4455 &&qrr* s8}}%%  Ahqk**C|||  HQK!8!89999HHY'' !): : : D ***4/ /DD DN3& &D ,T1Q377888 $T4 0 0'g66  /5dFCCDDD HtO #DD  /#$;D,$O$OPPJ MJ. .D rc t|Srrrs rsym_normal_joinzSQLPrettifier.sym_normal_joinrrctt|ddkrIdtt|dz}t|d}|r|dt|zz }|Stt|ddkr`t t |dkrBtt|ddztt|d z}|SdSdS) Nrr@(%s)ropt_table_aliasr- table_identrr)r0r_rbrYrr6)rrraliass rsym_table_factorzSQLPrettifier.sym_table_factors 'a00 1 1S 8 8:&=dDZ&[&[\\]D+D2CDDE .Ju----K *433 4 4 E E#m\`NaNaJbJbfgJgJg/a8899C?*M^_cefMgMgBhBhhDKF EJgJgrcPd|jvrt|St|S)Nr)rrnrkrs rsym_derived_table_listz$SQLPrettifier.sym_derived_table_lists, !): : :3D99 9)$// /rct|}t|ddztt|dzS)Nrr r)r6r0r')rrrs rsym_where_clausezSQLPrettifier.sym_where_clauses? &&(1+&&-z(1+7N7N0O0OOOrct|}d|jvrl |jst||jksd|vrt |}n8#t $r+}td|zt|Yd}~nd}~wwxYw|S)Nrr zError formatting: %s)rkropt_func_arg_per_lineropt_expr_length_per_linern Exceptionprint)rr flattenedexcs rsym_udf_expr_listzSQLPrettifier.sym_udf_expr_lists*400 !): : : -GY$B_1_1_cgktctct @ F FI   ,S0111d  s2A B!A==Bct|}t|ddkrft|ddkrMt|ddkr4t|ddzt|dz}|dd=nt|d}|d=|}|t|z }d|jvr |jst ||jksd |vr%|}|tt|d z }|}n8#t$r+}td |zt|Yd}~nd}~wwxYw|S) Nrrr46r.rrr T)rizError formatting function: %s) r6rYr0rkrrrrr+rr)rrrrheadtmprs rsym_function_call_genericz'SQLPrettifier.sym_function_call_genericst && x{ # #w . .;x{3K3Kt3S3SXcdlmndoXpXpt{X{X{"8A;//3Jx{4K4KKI1 "8A;//I +D111 !): : : -$Y$B_1_1_cgktctctC;'=dUY'Z'Z'Z[[[C #I   5c9:::d  sAD E!D>>Ecp||x}} t||jkrt|}t |d}d}|t|dz krct ||}t ||dz}|dt |zdz|zz }|dz }|t|dz kc|t|kr|dt |dzz }n7#t jdd|zddl}| YnxYw|S) Nrrr r-rr?SQLReformatterzError formatting expression: %s) rrrr6r0r'rv log_error traceback print_exc) rrotextrrroperrrs rsym_exprzSQLPrettifier.sym_exprsK++D111 "4yy4888(..!(1+..#h--/))%hqk22D&x!}55ED6$<</#5==DFA #h--/)) s8}}$$C 8B< 8 888D " M*,MPU,U V V V        ! ! ! ! ! s C%C??2D3ct|} t|ddkrDt|dt|dz}tt|d|jkr}|t t|ddzz }|t t|ddzt|dzt|d zz }no|t t|ddzz }|t|ddzt|dzt|d zz }|St|dd krt|d }t|d }t|d }|r,t|ddzt|zdz}nt|ddz}|r"|t t|dzz }|r"|t t|dzz }|t|dz }|Sn(#t$rddl }| YnwxYwt|dkr3t|ddkr|d\}} } || dz| f|d<|d=t| S)Nrr4rrr rr-rrr3opt_expr when_listopt_elser?r@) r6rYr0rrr+r'rbrrrrOstrip) rrrrrrrrrrrs rsym_simple_exprzSQLPrettifier.sym_simple_expr-s && "8A;'':55!(1+..z(1+/F/FFz(1+..//$2OOOK 8A;(?(?@@4GGDF:hqk#:#:S#@*XVW[BYBY#Y\fgopqgr\s\s#stttDDK 8A;(?(?@@3FFDJx{33c9:hqk;R;RRU_`hij`kUlUlllD Xa[))Z7724DD3D+FF 24DD8%hqk2236z(7K7KKDPDD%hqk2247D?F:i#8#899$>>D>F:h#7#788==D 8B<000 %8& " " "        ! ! ! ! ! " x==1  HQK!8!8C!?!?qkGAq!QsUA+HQK D!!'')))sEI!/C0I!!"JJc t|Srrrs r sym_bit_exprzSQLPrettifier.sym_bit_exprYrrclt|}d}g}|t|krt||dz}t||dz}d|vsd|vrXt||dzt|zdzt||dzzdzt|z}n=t||dz|zdzt||dzzdz|z}|dz }|||t|kd|S)Nrrrr rr-r)r6rr0r'rr#)rrrrrexpr1expr2lines r sym_when_listzSQLPrettifier.sym_when_list\s= &&  #h--x!}--Ex!}--Eu}} !(1+..t3F5MMA$FzRZ[\]^[^R_G`G``aeeflmrfsfss!(1+..s258(JKK KD Jx|,, ,DKrcFdtt|zdzSr)r)rnrs rsym_field_listzSQLPrettifier.sym_field_lists#K @ F FGGGLLrc t|Srrrs rsym_column_defzSQLPrettifier.sym_column_defrrct|d}|rt|d}t|d}t|d}t|d}t|}|r|dt|zz }|r$t|r|dt|zz }|dt|zz }|r|dt|zz }|St|d}t|d } t|d } | r| rt|d}t|d } |rt|dz}nd }|t| dt| d t|dz }|tt| z }|St|d} | rt|d}t|d}t|d}t|d}|rt|dz}nd }|t| z }|r|dt|zz }|r$t|r|dt|zz }|dt|zz }|r|dt|zz }|St|S)Nnormal_key_type opt_identkey_algkey_listnormal_key_optionsr-z (%s)opt_constraintrr referencesr:z (z) constraint_key_type)rbr0r'r8) rrrrrrrrr foreignkeyr!r"s r sym_key_defzSQLPrettifier.sym_key_defs1$8IJJ  /kBBI-dI>>G.tZ@@H!8?S!T!T o..D 2Jy1111 0:g.. 0Jw//// Gj222 2D! ;J'9::::K17GHH)$ ::%dI66  s .tZ@@H0|DDJ !.11#5 j&9&9&9&9:c????JW_L`L`L`L`a aD F:j1122 2DK5d>G.tZ@@H!8?S!T!T  !.11#5 J233 3D 2Jy1111 0:g.. 0Jw//// Gj222 2D! ;J'9::::K #4(((rc t|Srrrs rsym_opt_constraintz SQLPrettifier.sym_opt_constraintrrcltt|ddztt|dz}t|d}t|d}t|d}|r|dt|zz }|r|dt|zz }|r|dt|zz }|S)Nrr-r opt_ref_listrdopt_on_update_deleter r0rb)rrrref_list match_clauseon_upds rsym_referenceszSQLPrettifier.sym_referencess1$ EEFFLZXoptwDYEYENFNFF*4@@.t5GHH (/EFF  - C 8,,, ,D  2 DL111 1D  , DF+++ +D rcBdtt|dzS)Nrr,r+rs rsym_opt_ref_listzSQLPrettifier.sym_opt_ref_lists j!8z!J!JKKKKrc t|Srrrs rsym_field_speczSQLPrettifier.sym_field_specrrc t|Srrrs rsym_typezSQLPrettifier.sym_typerrc t|Srrrs rsym_field_lengthzSQLPrettifier.sym_field_lengthrrc t|Srrkrs rsym_float_optionszSQLPrettifier.sym_float_options%d+++rc&dt|zSNr-rrs rsym_field_opt_listz SQLPrettifier.sym_field_opt_lists&t,,,,rc t|Srr9rs rsym_string_listzSQLPrettifier.sym_string_listr;rc t|Srrrs rsym_opt_attribute_listz$SQLPrettifier.sym_opt_attribute_listrrcZtt|dkr}g}g}|}t|D]:}t|dkr|}|t |;d|dd|St |S)Nr opt_equalr-=)rr6rYrr0r#)rrrarrr3s rsym_create_table_optionz%SQLPrettifier.sym_create_table_options }T"" # #a ' 'DEA#D)) - -r??k11AAHHZ^^,,,, XXd^^^^SXXe___= =d## #rc2t|}|rd|zSdSr=rrrrs rsym_create_table_optionsz&SQLPrettifier.sym_create_table_options s*"4((  t8O  rc t|Srrrs rsym_userzSQLPrettifier.sym_userrrN)Krrrrropt_max_statement_lengthopt_max_subselect_lengthropt_always_break_select_partsrrrr|r{rrrrrsym_text_stringsym_TEXT_STRING_filesystemsym_TEXT_STRING_literalsym_TEXT_STRING_sysrrrrrrrrrrrrrrsym_select_derived2rrrrrrrrr sym_expr_listrsym_function_call_keywordsym_function_call_conflictsym_geometry_functionsym_function_call_nonkeywordrr r rrrrr%r'r/r1r3r5r7r:r>r@rBrFsym_default_charsetrIrKrrrrprps!!!!&(#$)!$)!#( ,,,+++(333,;;;3338"""+++... &O!0-)++++++++++++++++++/// """///))),777.3)))      6)))   000PPP   &M,!:!:5#< (******X)))   FMMM))):):):)x)))   LLL)))+++""",,,---,,,))) $ $ $2 +++++rrpc eZdZdZdZdZdS)UpdateSQLPrettifierc&dt|zSrr/rs rsym_SETzUpdateSQLPrettifier.sym_SETsJt$$$$rcd}t|D]P}t|dkr)|dt||zz }>|t |z }Q|dzS)Nr: update_elemr )r6rYr'rr0)rrrr3s rsym_update_listz#UpdateSQLPrettifier.sym_update_listsr%% ' 'B2-//VD$8$8$<$<==== 2&Dyrc tt|ddz}|t|t|dz }|S)Nr;r rr0rbr'rrHs rrz$UpdateSQLPrettifier.sym_where_clausesO1$@@AA$F t++,CD&,Q,QRRSSS rN)rrrr]r`rrrrr[r[sA%%%rr[ceZdZdZdS)DeleteSQLPrettifiercdtt|dzdz}|td|t|dzz }|S)Nr r;r:rrbrHs rrz$DeleteSQLPrettifier.sym_where_clause&sWJ6tWEEFFFtK r 4//0Gf0U0UVVVV rN)rrrrrrrrdrd%s#rrdc&eZdZdZdZdZdZdS)TriggerSQLPrettifiercLdt||zSrr'rrs rsym_TRIGGER_SYMz$TriggerSQLPrettifier.sym_TRIGGER_SYM,#F4//556666rc8d||zdzS)Nr-r rrs r sym_sp_namez TriggerSQLPrettifier.sym_sp_name/s T))$///$66rcZd|_dt||zSNTr  _has_argsr'rrs r sym_definerz TriggerSQLPrettifier.sym_definer2*F4//556666rcLdt||zSrrirs rsym_sp_proc_stmtz%TriggerSQLPrettifier.sym_sp_proc_stmt6rkrN)rrrrjrmrrrurrrrgrg+sP77777777777777rrgc$eZdZdZdZdZdZdS)ViewSQLPrettifierFcZd|_dt||zSrorprs rsym_view_algorithmz$ViewSQLPrettifier.sym_view_algorithm<rsrcZd|_dt||zSrorprs rrrzViewSQLPrettifier.sym_definer@rsrczt|d}|r7|jr dtt|z}nt|}nd}|js|r|dz }|tt|dz }|dtt|dzz }t|dr#|dtt|dzz }|dtt|dzz }tt|d }d|vs |js|r|dt|zz }n|d|zz }|S) Nrir r:r6r-r view_list_optr view_select)rbrqr'r0)rrsuidrr}s r sym_view_tailzViewSQLPrettifier.sym_view_tailDs^&t[99  ~ (F:d#3#3444!$''D > T  DLD 24DDEEE J6t]KKLLLL "4 9 9 S C #:4#Q#QRRR RD J6tTBBCCCC !8}!M!MNN ;  $. D  D ,,, ,DD C O #D rN)rrrrqryrrrrrrrwrw9sFI777777rrwc|dddd}|ddkrtS|ddkrtS|ddkrtS|ddkr[|dd}|ddkrtS|dd kr0t|d rtSt|d r t SdSdSdS) Nrrrupdatedeletecreaterrview_or_trigger_or_sp_or_eventr6r)rpr[rdrQrwrg)r statementobjects rformatter_for_statement_astr]sAq ! QI|x 1 ! !"" 1 ! !"" 1 ! !1a !9 # # AY: : :vz22 )((v}55 ,++ " ! ; : , ,r)r)r)r:F)$stringrvr" ascii_lettersdigits IDENT_CHARSsetrDrErrrrrrr'r)r+r8r<rOrQrVrYr0r6r_rbrkrnrpr[rdrgrwrrrrrs,  "V]2S8 e@e@e@g@g@SB(B(B(D(D(S:::;;sE7||  < < < <        QQQQ$$$$====XXXWWW@   ### ,&y+y+y+y+y+y+y+y+x-&- 7 7 7 7 7= 7 7 7!!!!! !!!H,,,,,r