ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ 4]c_@szdZddlZddlZddlZddlmZddlmZddlmZddlmZddlm Z dd lm Z dd lm Z dd lm Z d d lm Z d dlmZedddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdlg^ZejdmejZejdnejZdoedpdqDjdrgZejdsejZejdsejZejdtejZejduejZejdvejZidwdx6dydz6d{d|6d}d~6dd6Zi%dej6dej 6dej!6dej"6dej#6dej$6dej%6dej&6dej'6dej(6dej)6dej*6dej+6dej,6dej-6dej.6dej/6dej06dej16dej26dej36dej46dej56dej66dej76dej86dej96dej:6dej;6dej<6dej=6dej>6dej?6dej@6dejA6dejB6dejC6ZDidejE6dejF6dejG6dejH6dejI6dejJ6dejK6dejL6dejM6dejN6dejO6dejP6dejQ6dejR6ZSidd6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd6ZTide jUjV6de jUjW6de jUjX6de jUjY6de jUjZ6de jUj[6Z\de]fdYZ^dej_ej`e]fdYZade jbfdYZcde^fdYZddedfdYZede^fdYZfdeafdYZgdegfdYZhde]fdYZidS(s]Base SQL and DDL compiler implementations. Classes provided include: :class:`.compiler.SQLCompiler` - renders SQL strings :class:`.compiler.DDLCompiler` - renders DDL (data definition language) strings :class:`.compiler.GenericTypeCompiler` - renders type specification strings. To generate user-defined SQL strings, see :doc:`/ext/compiler`. iNi(tcrud(telements(t functions(t operators(tschema(t selectable(tsqltypes(tvisitorsi(texc(tutiltalltanalysetanalyzetandtanytarraytastasct asymmetrict authorizationtbetweentbinarytbothtcasetcasttchecktcollatetcolumnt constrainttcreatetcrosst current_datet current_rolet current_timetcurrent_timestampt current_usertdefaultt deferrabletdesctdistincttdotelsetendtexcepttfalsetfortforeigntfreezetfromtfulltgranttgroupthavingtiliketint initiallytinnert intersecttintotistisnulltjointleadingtlefttliketlimitt localtimetlocaltimestamptnaturaltnewtnottnotnulltnulltofftoffsettoldtontonlytortordertoutertoverlapstplacingtprimaryt referencestrighttselectt session_usertsettsimilartsomet symmetricttabletthenttottrailingttruetuniontuniquetusertusingtverbosetwhentwheres ^[A-Z0-9_$]+$s^[A-Z0-9_ $]+$cCsh|]}t|qS((tstr(t.0tx((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys s ii t$s5^(?:RESTRICT|CASCADE|SET NULL|NO ACTION|SET DEFAULT)$s^(?:DEFERRED|IMMEDIATE)$s%(? s >= s = s IS DISTINCT FROM s IS NOT DISTINCT FROM s || s MATCH s NOT MATCH s IN s NOT IN s, s FROM s AS s IS s IS NOT s COLLATE sEXISTS s DISTINCT sNOT sANY sALL s DESCs ASCs NULLS FIRSTs NULLS LASTtcoalescet CURRENT_DATEt CURRENT_TIMEtCURRENT_TIMESTAMPt CURRENT_USERt LOCALTIMEtLOCALTIMESTAMPtrandomtsysdatet SESSION_USERtUSERtCUBEtROLLUPs GROUPING SETStmonthtdaytyeartsecondthourtdoytminutetquartertdowtweektepocht millisecondst microsecondst timezone_hourttimezone_minutetUNIONs UNION ALLtEXCEPTs EXCEPT ALLt INTERSECTs INTERSECT ALLtCompiledcBseZdZd ZejZd d ejdZej dddZ dZ e dZ dZdZd d Ze d Zd Zd ZRS(sRepresent a compiled SQL or DDL expression. The ``__str__`` method of the ``Compiled`` object should produce the actual text of the statement. ``Compiled`` objects are specific to their underlying database dialect, and also may or may not be specific to the columns referenced within a particular set of bind parameters. In no case should the ``Compiled`` object be dependent on the actual values of those bind parameters, even though it may reference those values as defaults. cCs||_||_|jj|_|r?|jj||_n|dk r||_|j|_|jrx|j |_ n|j |j||_ ndS(sqConstruct a new :class:`.Compiled` object. :param dialect: :class:`.Dialect` to compile against. :param statement: :class:`.ClauseElement` to be compiled. :param bind: Optional Engine or Connection to compile this statement against. :param schema_translate_map: dictionary of schema names to be translated when forming the resultant SQL .. versionadded:: 1.1 .. seealso:: :ref:`schema_translating` :param compile_kwargs: additional kwargs that will be passed to the initial call to :meth:`.Compiled.process`. N( tdialecttbindtidentifier_preparertpreparert_with_schema_translatetNonet statementtsupports_executiont can_executet_execution_optionstexecution_optionstprocesststring(tselfRRRtschema_translate_maptcompile_kwargs((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt__init__s       s0.7sThe :meth:`.Compiled.compile` method is deprecated and will be removed in a future release. The :class:`.Compiled` object now runs its compilation within the constructor, and this method does nothing.cCsdS(sDProduce the internal string representation of this element. N((R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytcompileAs cCs2|jr|j|||Stj|jdS(N(Rt_execute_compiledRtObjectNotExecutableErrorR(Rt connectiont multiparamstparams((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt_execute_on_connectionMs cCs tdS(sReturn a Compiled that is capable of processing SQL expressions. If this compiler is one, it would likely just return 'self'. N(tNotImplementedError(R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt sql_compilerSscKs|j||S(N(t_compiler_dispatch(Rtobjtkwargs((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR]scCs |jp dS(s3Return the string text of the generated SQL or DDL.t(R(R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt__str__`scCs tdS(sReturn the bind params for this compiled object. :param params: a dict of string/object pairs whose values will override bind values compiled in to the statement. N(R(RR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytconstruct_paramsescCs |jS(s0Return the bind params for this compiled object.(R(R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRoscOs@|j}|dkr-tjdddn|j|||S(sExecute this compiled object.s>This Compiled object is not bound to any Engine or Connection.tcodet2afiN(RRRtUnboundExecutionErrorR(RRRte((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytexecutets    cOs|j||jS(sJExecute this compiled object and return the result's scalar value.(Rtscalar(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRsN(t__name__t __module__t__doc__Rt_cached_metadataR t immutabledictRRt deprecatedRRtpropertyRRRRRRR(((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRs"  )     t TypeCompilercBs&eZdZdZdZdZRS(s2Produces DDL specification for TypeEngine objects.s visit_\w+cCs ||_dS(N(R(RR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRscKs|j||S(N(R(Rttype_tkw((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRs(RRRt ensure_kwargRR(((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRs t _CompileLabelcBsMeZdZdZdZd dZedZedZdZ RS( s;lightweight label object which acts as an expression.Label.tlabeltelementtnamecCs&||_||_|f||_dS(N(RRt _alt_names(RtcolRt alt_names((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRs  cCs |jjS(N(Rt proxy_set(R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRscCs |jjS(N(Rttype(R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRscKs|S(N((RR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt self_groups(RR(( RRRt__visit_name__t __slots__RRRRR(((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRs t SQLCompilercBseZdZeZeZeZZ Z eZ dZ eZeZeZeZeZeZeZdZZdedZedZejdZejdZ dZ!ej"dZ#dZ$edZ%dded Z&ed Z'ej(d d Z)d Z*edZ+edZ,edZ-deeddZ.dZ/dedZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7deedZ8dZ9dZ:dZ;dZ<d Z=d!Z>d"Z?d#Z@d$ZAd%ZBd&ZCd'ZDdd(ZEd)ZFd*ZGd+ZHeed,d-ZId.ZJd/ZKd0ZLd1ZMd2ZNd3ZOd4ZPd5ZQd6ZRded7ZSd8ZTd9ZUd:ZVd;ZWd<ZXed=ZYd>ZZd?Z[ej"d@Z\dAZ]dBZ^dCZ_dDZ`dEZadFZbdGZcdHZddIZedJZfdKZgdLZheeedMZidNZjdOZkdPZldQZmdRZndSZodedTZpeedddUZqeeeddVZrdWZsedXZtdYZudZZvded[Zwd\Zxd]Zyd^Zzd_Z{d`Z|daZ}dbZ~ejdcefddefgZedeZeedd,ededfZdgZdhZdiZdjZdkZdlZdmZdnZdoZdpZdqZdrZeeededsZedtZduZedvZdwZdxZdyZedzZej"d{Zd|Zd}Zed~ZdZdZdZRS(ssDefault implementation of :class:`.Compiled`. Compiles :class:`.ClauseElement` objects into SQL strings. cKs9||_|pt|dt|_i|_tj|_g|_g|_ |j |_ |j rg|_ |j dk|_ nt|j |_d|_|jp|j|_tj|j|_i|_tj|||||js|js|jr|jr|j|_n|j r5|j r5|jndS(sConstruct a new :class:`.SQLCompiler` object. :param dialect: :class:`.Dialect` to be used :param statement: :class:`.ClauseElement` to be compiled :param column_keys: a list of column names to be compiled into an INSERT or UPDATE statement. :param inline: whether to generate INSERT statements as "inline", e.g. not formatted to return any generated defaults :param kwargs: additional keyword arguments to be consumed by the superclass. tinlineRpN( t column_keystgetattrtFalseRtbindsR t column_dictt bind_nameststackt_result_columnst positionalt positiontupt paramstylet_numeric_bindstBIND_TEMPLATESt bindtemplateRtctest label_lengthtmax_identifier_lengtht PopulateDictt _process_anontanon_mapttruncated_namesRRtisinserttisupdatetisdeletet _returningt returningt_apply_numbered_params(RRRRRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRs*          cCst|j|jS(N(tlisttinsert_prefetchtupdate_prefetch(R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytprefetch<scCs:tj|_i|_t|_|jr6i|_ndS(sInitialize collections related to CTEs only if a CTE is located, to save on the overhead of these collections otherwise. N(R t OrderedDictRt ctes_by_nameRtctes_recursiveRtcte_positional(R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt_init_cte_state@s    ccs|j|j}}gt|_|_z>|jrL|jd}t|diR(t itertoolstcounttretsubR(R((RsJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRfscs'tdfdjDDS(Ncss-|]#\}}|dk r||fVqdS(N(R(Ritkeytvalue((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys os c3s1|]'}j||jjjfVqdS(N(RRt_cached_bind_processorR(Rit bindparam(R(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys qs(tdictR(R((RsJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt_bind_processorsls cCst|jdkS(Ni(tlenR(R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt is_subqueryzscCs|S(N((R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR}scCs|ri}x|jD]}|j|}|j|krL||j||sc3s!|]}|jVqdS(N(R(RiRo(RR(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys ssVALUES (toperatorRR5R=tclausest _tuple_valuesRttuple_in_values(Rt clauselistRtsepRZ((RRsJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_clauselists    # cKsd}|jdk r5||jj||d7}nxI|jD]>\}}|d|j||d|j||d7}q?W|jdk r|d|jj||d7}n|d7}|S(NsCASE RysWHEN s THEN sELSE tEND(RRRtwhenstelse_(RtclauseRRjtcondR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_cases 3! cKs|jj||S(N(ttyped_expressionR(Rt type_coerceR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_type_coercescKs,d|jj|||jj||fS(NsCAST(%s AS %s)(RRRU(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_castscKs*d|dtjkrdnx|dtjkr5dn_|ddkrqd|jtjt|d|fn#d|jtj|d|f|dtjkrdnx|dtjkrdn_|ddkrd|jtjt|d|fn#d|jtj|d|ffS( Ns %s AND %sisUNBOUNDED PRECEDINGs CURRENT ROWs %s PRECEDINGs %s FOLLOWINGisUNBOUNDED FOLLOWING(RtRANGE_UNBOUNDEDt RANGE_CURRENTRtliteraltabs(Rtrange_R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt_format_frame_clauses< <c Ks|jr%d|j|j|}n+|jrJd|j|j|}nd}d|jj||djgd|jfd|jffD]@\}}|dk rt |rd||j||f^q|r|gngfS(NsRANGE BETWEEN %ssROWS BETWEEN %ss %s OVER (%s)Ryt PARTITIONtORDERs%s BY %s( RRtrowsRRRR=t partition_bytorder_byR (RtoverRRtwordR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_overs     7cKs,d|jj|||jj||fS(Ns%s WITHIN GROUP (ORDER BY %s)(RRR(Rt withingroupR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_withingroup$scKs,d|jj|||jj||fS(Ns%s FILTER (WHERE %s)(tfuncRt criterion(Rt funcfilterR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_funcfilter*scKs8|jj|j|j}d||jj||fS(NsEXTRACT(%s FROM %s)(t extract_mapRftfieldRrR(RtextractRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_extract0scKs7|dk r+||j|jd|jnt|d|jjd}|r]|||Stj|jd}|r|jr|d7}qn=|j}|j j |r|j j |n|}|d}dj g|j D]0}|j j |r|j j |n|^q|gi|j||d6SdS(Ns visit_%s_funcs%(expr)sR>Rr((RRRRtlowert FUNCTIONSRft __class__t _has_argsRt_requires_quotes_illegal_charsRBR=t packagenamestfunction_argspec(RRR8RtdispRttok((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_function7s$    $ : cKs|j|jS(N(tvisit_sequencetsequence(Rt next_valueR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_next_value_funcWscKstd|jjdS(Ns2Dialect '%s' does not support sequence increments.(RRR(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRZscKs|jj||S(N(t clause_exprR(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR`sic  sj }|rjn jd}|pG|dkoG|jdt}jji|dd6|dd6|d6|d6jj|j} d| djfdt|j D} | j |t d 7} | j |7} | |j dk s"|jdk r4j|p7d 7} jr]|r]j| } njjdr|rd | d S| SdS( NiiRdtcorrelate_fromst asfrom_fromsRRyc 3s9|]/\}}|jddtd|VqdS(RRlRkN(RR(RitiRo(RRR(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys zsRRRR(RReRfRtappendtcompound_keywordstkeywordR=t enumeratetselectstgroup_by_clauseR torder_by_clauset _limit_clauseRt_offset_clauset limit_clauseRt_render_cte_clauseR( RtcsRRlRkRRmRtneed_result_mapRRZ((RRRsJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_compound_selectcs6      "  cCs6d|j||rd|ndf}t||dS(Ns visit_%s_%s%st_R(RRR(Rt operator_t qualifier1t qualifier2tattrname((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt_get_operator_dispatchs cKs|jrr|jr$tjdn|j|jdd}|rU|||j|S|j|t|j|Snf|jr|j|jdd}|r|||j|S|j|t|j|SntjddS(NsFUnary expression does not support operator and modifier simultaneouslytunaryR{tmodifiers,Unary expression has no operator or modifier(R{RRR.Rt _generate_generic_unary_operatorR5t _generate_generic_unary_modifier(RRRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_unarys&    cKsC|js|jjr(|j|j|Sd|j|j|SdS(Ns%s = 1(t_is_implicitly_booleanRRuRR(RRR{R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_istrue_unary_operators  cKsG|js|jjr,d|j|j|Sd|j|j|SdS(NsNOT %ss%s = 0(RRRuRR(RRR{R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_isfalse_unary_operators  cKsd|j|dtjS(NsNOT %stoverride_operator(t visit_binaryRtmatch_op(RRR{R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_notmatch_op_binarys cCstjddS(NsThe IN-predicate was invoked with an empty sequence. This results in a contradiction, which nonetheless can be expensive to evaluate. Consider alternative strategies for improved performance.(R twarn(R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt_emit_empty_in_warningscKsF|jjrdS|jjr)|jn|j|j|jkSdS(Ns1 != 1(Rt_use_static_int_warn_on_empty_inRRR?(RRR{R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_empty_in_op_binarys    cKsF|jjrdS|jjr)|jn|j|j|jkSdS(Ns1 = 1(RRRRRR?(RRR{R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_empty_notin_op_binarys    cCstd|jjdS(Ns3Dialect '%s' does not support empty set expression.(RRR(Rt element_types((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_empty_set_exprscKs|jr@t|jtjr@t|jtjr@t|dsRs AS RRy(*RR2RRR3R4RRRt _restatesRRR.t _cte_aliasRRRRRat visit_ctet recursiveRRt format_aliastoriginalRtSelecttCompoundSelectRtAssertionErrorR t unique_listt inner_columnsR=RRRt _suffixest_generate_prefixest_requires_quotesRBtget_render_as_alias_suffix(RtcteRtashintt fromhintsRRtcte_namet is_new_ctetembedded_in_current_named_ctet existing_ctet pre_alias_ctetcte_pre_alias_nameRZt col_sourceRot recur_cols((RsJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR$6s                         c Ks|s |rEt|jtjr9|jd|j}qE|j}n|r^|jj||S|r|jj|dt ||j |jj||}|r||kr|j |||||}n|S|jj||SdS(NR?R( R2RRR3R4RR&R'RRR0tformat_from_hint_text( RR?RR2tiscrudR3Rt alias_nametret((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_aliass   cKst|dsc3s"|]}|j|fVqdS(N(RM(RiRo(t inner_col(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys s(R R,RttupleRf( RRVttransformed_selecttdRRtobjsttypR((R~sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt&_transform_result_map_for_nested_joinss RRc Cs|j }|r|jn |jd}|d}|d}|rk| rk|jd|j|dd}n|jd|d|}|S(NiRRtexplicit_correlate_fromstimplicit_correlate_froms((RRet_get_display_fromst difference( RRVRRARmRRRtfroms((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt_display_froms_for_selects         c  s|jo$| o$|j o$|jj } | ro|j|} |j| d|d|d|d|dt| } n|j } | r|jn |jd}| p|dkr|jdt p|jd t }| rd | kr| d =n| r |r|j || n| S|j ||||}| j }|j it d 6t d 6d } |jr|j|\}}|r| |d7} qnd}|jr| |j||j| 7} n| |j|| 7} gg|jD]-\}}|j|||||d|^qD]}|dk r |^q }|r|dk rttg|jD]\}}|^qJg|jD]\}}|^qig|jD]:\}}}}||tfd|D|f^q|_n|j| ||||| } |jr[g|jD]*\}}|d|jjfkr|^q}|r[| d|j|7} q[n|jr}| r}|j| } n|j r| d|j||j | 7} n|jj!d|s|r|rd| dS| SdS(NRRlR3Rktnested_join_translationiiRdRR8R1R sSELECT RyRc3s!|]}j||VqdS(N(Rf(Rito(t translate(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys Dst*RR("RdRRtsupports_right_nested_joinsR}t visit_selectRReRfRRt_setup_select_stacktcopyRVt_hintst_setup_select_hintsRt _prefixesR.tget_select_precolumnst_columns_plus_namesRZR RnRRt_compose_select_bodyt_statement_hintsRRcRRR-R(RRVRRlR3RkRtselect_wraps_forRARtneeds_nested_translationRRZRmRRnRRWt hint_texttbyfromRRRoR,RRRt dialect_namethtt per_dialect((RsJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRs            >%M $   c Cstg|jjD]P\\}}}|d|jjfkr||i|j|dtd6f^q}|j|}||fS(NRR2R(R RRoRRRRR`(RRVtfrom_RR^RR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRds Gc Cs|d}|d}|rE| rE|jd|j|dd}n|jd|d|}ttj|}|j|} i|d6| d6|d6} |jj| |S(NRRRRR((RRRXRt _from_objectsRaRR( RRVRRRARRRtnew_correlate_fromstall_correlate_fromst new_entry((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRss$         c Cs|dj|7}|r|d7}|jrm|djg|D]$}|j|dtd||^q<7}q|djg|D]}|j|dt|^q}7}n||j7}|jdk r|jj||}|r|d|7}qn|jjr||j ||7}n|j dk rY|j j||}|rY|d|7}qYn|j jr~||j ||7}n|j dk s|jdk r||j||7}n|jdk r||j||7}n|S(Ns, s FROM RR3s WHERE s HAVING (R=RRRRt _whereclauseRt_group_by_clauseR|Rt_havingt_order_by_clauseRRRRt_for_update_argtfor_update_clause( RRZRVR,RRRtftt((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRs:   5 /  c s9djfd|D}|r5|d7}n|S(NRyc3sE|];\}}|dks-|jjkr|jVqdS(N(RRRR(RitprefixR(RR(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys s (R=(RtstmttprefixesRR((RRsJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR.s   cCs|jrBtg|jD]}|j|^qg|j|_n|j|jd}|djg|jjD] }|^qq7}|d7}|S(NRys, s ( RtsumRRRtget_cte_preambleRR=tvalues(RR1tcte_textttxt((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRs )/ cCs|r dSdSdS(NsWITH RECURSIVEtWITH((RR%((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRscKs|jrdpdS(scCalled when building a ``SELECT`` statement, position is just before column list. s DISTINCT R(t _distinct(RRVR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRscKs+|jj||}|r#d|SdSdS(s5allow dialects to customize how GROUP BY is rendered.s GROUP BY RN(RR(RRVRtgroup_by((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRscKs+|jj||}|r#d|SdSdS(s5allow dialects to customize how ORDER BY is rendered.s ORDER BY RN(RR(RRVRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRscKsdS(Ns FOR UPDATE((RRVR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRscCstjddS(Ns@RETURNING is not supported by this dialect's statement compiler.(RR.(RRtreturning_cols((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytreturning_clausescKsd}|jdk r5|d|j|j|7}n|jdk r|jdkr`|d7}n|d|j|j|7}n|S(NRs LIMIT s LIMIT -1s OFFSET (RRRR(RRVRRZ((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR s   c Ks|s |r|jj|}|rV|rV|jj|d|jj|j} n|jj|j} |r||kr|j| ||||} n| SdSdS(NR>R(RRDRERBRR<( RR\RR=R2R3t use_schemaRRHR?((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_table s  ,cKsw|jrd}n|jr$d}nd}|jj|dt|||jj|dt|d|jj||S(Ns FULL OUTER JOIN s LEFT OUTER JOIN s JOIN Rs ON (R1tisouterR?RRRURp(RR=RRt join_type((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_join* s     cCstg|jjD]6\\}}}|d|jjfkr||f^q}|j|kr|j||j||jt}n||fS(NR(R RRoRRR\R<R(RRt table_textR\RRt dialect_hints((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt_setup_crud_hints9 s-cKs|j }|jjitd6td6|d6tj||tj|}| r|jj r|jj rt j d|jj n|j r|jj st j d|jj n|d}n|}|j}|jj}d} |jr| |j||j|7} n| d7} |j|j} |jrT|j|| \} } n| | 7} |sk| r| d d jg|D]} |j| d^q~7} n|js|jr|j||jp|j} |jr| d | 7} qnd} |jdk re|j|j|}|jrT|rT|jj rT| d |j!|f7} q| d |7} nu| r|r| d7} n[|j r| dd jd|D7} n.| dd jg|D]} | d^q7} |j"dk r|j|j"|}|r| d |7} qn| r9|j r9| d | 7} n|jrh|rh|jj rh|j!| } n|jj#d|rd| dS| SdS(NRRRsWThe '%s' dialect with current database version settings does not support empty inserts.scThe '%s' dialect with current database version settings does not support in-place multirow inserts.isINSERT sINTO s (%s)s, Rys %s%ss %ss DEFAULT VALUESs VALUES %scss,|]"}ddjd|DVqdS(s(%s)s, css|]}|dVqdS(iN((RiRo((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys sN(R=(Ritcrud_param_set((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys ss VALUES (%s)iiRR($RRRXRt_setup_crud_paramstISINSERTRtsupports_default_valuestsupports_empty_insertRR.Rt_has_multi_parameterstsupports_multivalues_insertRRR.t format_tableR\RRR=R!RRRtreturning_precedes_valuesRRVRt_insert_from_selectRtcte_follows_insertRt_post_values_clauseR(Rt insert_stmtRRRmt crud_paramstcrud_params_singleRRRZRRRoRt select_texttpost_values_clause((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_insertG s                   .    . cCsdS(s3Provide a hook for MySQL to add LIMIT to the UPDATEN(R(Rt update_stmt((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytupdate_limit_clause scKs t|d<|j|dt|S(s|Provide a hook to override the initial table clause in an UPDATE statement. MySQL overrides this. RR=(RR(RRt from_tablet extra_fromsR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytupdate_tables_clause s cKstddS(s~Provide a hook to override the generation of an UPDATE..FROM clause. MySQL and MSSQL override this. sCThis backend does not support multiple-table criteria within UPDATEN(R(RRRRt from_hintsR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytupdate_from_clause s c sj }|j}t|}|rtttj|j}g|D]}||krD|^qD} |j|} ng} |jh} jji| d6| d6|d6d} |j r| j ||j |7} nj ||j| |} t j |t j|} |jr3j|| \}} nd}| | 7} | d7} |oYj| djfd| D7} js|jrjr| dj|jp|j7} qn|rj||j| ||}|r| d|7} qn|jdk rEj|j|}|rE| d |7} qEnj|}|rk| d|7} njs}|jrj r| dj|jp|j7} njr|rj| } njjd |rd | d S| SdS( NRRRsUPDATE s SET s, c3s4|]*}|djdd|dVqdS(iRFt=iN(R(RiRo(RFR(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys  sRys WHERE iRR(Rt _extra_fromstboolRXRRR\RaRRR.RRRtISUPDATERRRt'render_table_with_column_in_update_fromR=RRRRRRRRRRR(RRRRRmRt is_multitablet main_fromsRtrender_extra_fromsRRZRRRtextra_from_textRR((RFRsJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_update s|   %                cCstj||jS(N(Rt_key_getters_for_crud_columnR(R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR6 scKstddS(sProvide a hook to override the generation of an DELETE..FROM clause. This can be used to implement DELETE..USING for example. MySQL and MSSQL override this. sCThis backend does not support multiple-table criteria within DELETEN(R(RRRRRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytdelete_extra_from_clause: s cCs|j|dtdtS(NRR=(RR(Rt delete_stmtRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytdelete_table_clauseJ sc Ks|j }tj||tj||j}|jhj|}|jji|d6|d6|d6d}|jr||j ||j|7}n|d7}|j ||j|}|j r|j ||\} }nd} ||7}|jr|jr|d|j||j7}qn|r]|j||j|| |} | r]|d| 7}q]n|jdk r|jj||} | r|d| 7}qn|jr|j r|d|j||j7}n|jr|r|j|}n|jjd|rd |d S|SdS( NRRRsDELETE sFROM Rys WHERE iRR(RRRtISDELETERR\RaRRR.RRRRRRRRRRRRR( RRRRRmRRRZRRRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_deleteM s^               cCsd|jj|S(Ns SAVEPOINT %s(Rtformat_savepoint(Rtsavepoint_stmt((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_savepoint scCsd|jj|S(NsROLLBACK TO SAVEPOINT %s(RR(RR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_rollback_to_savepoint s cCsd|jj|S(NsRELEASE SAVEPOINT %s(RR(RR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_release_savepoint s N((RRRt EXTRACT_MAPRtCOMPOUND_KEYWORDSRRRRRR`RRRRRRRgRRRRRRRRR tmemoized_instancemethodRt contextlibtcontextmanagerRRtmemoized_propertyR R RRRt dependenciesRRRR*R/R<R=RKRNRPRRRVR[RARcRpRsRvRxRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR RRRR4RRR]R$R@RBRFR0RiRZR<R`R[RaRcR}RRt frozensetReRRRRRR.RRRRRRRRRRRRRRRRRRRRRRR(((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRsF G  8  "  + '                      2                       8      v     L      ] !    6         m   f   J  tStrSQLCompilercBsVeZdZdZdZdZdZdZdZdZ dZ RS( swA :class:`.SQLCompiler` subclass which allows a small selection of non-standard SQL features to render into a string value. The :class:`.StrSQLCompiler` is invoked whenever a Core expression element is directly stringified without calling upon the :meth:`.ClauseElement.compile` method. It can render a limited set of non-standard SQL constructs to assist in basic stringification, however for more substantial custom or dialect-specific SQL constructs, it will be necessary to make use of :meth:`.ClauseElement.compile` directly. .. seealso:: :ref:`faq_sql_expression_string` cCsdS(Ns((RR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR= scKs,d|j|j||j|j|fS(Ns%s[%s](RR?RU(RRR{R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_getitem_binary scKs|j|||S(N(R(RRR{R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_json_getitem_op_binary scKs|j|||S(N(R(RRR{R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt!visit_json_path_getitem_op_binary scKsd|jj|S(Ns(Rtformat_sequence(RtseqR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR scCsHgtj|D]!}|jd|tti^q}ddj|S(Ns RETURNING s, (Rt_select_iterablesRZRRRR=(RRRRotcolumns((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR s4c s'ddjfd|DS(NsFROM s, c3s-|]#}|jdtdVqdS(RR3N(RR(RiR(RRR(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys s(R=(RRRRRR((RRRsJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR s c s'ddjfd|DS(Ns, c3s-|]#}|jdtdVqdS(RR3N(RR(RiR(RRR(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys s(R=(RRRRRR((RRRsJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR s ( RRRR=RRRRRRR(((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR s       t DDLCompilercBspeZejdZejdZd$dZdZdZ dZ dZ e dZ d$dZd Zd Zd Ze ed Zd Ze dZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&d Z'd!Z(d"Z)d#Z*RS(%cCs|jj|jdS(N(Rtstatement_compilerR(R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR scCs |jjS(N(RRT(R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRT scCsdS(N(R(RR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR scKs|j}t|jtjr|j}|j}|j|j}t|dkrk|dd}}n|d|d}}|j d||j d||j d|j |jn|j j |j |S(NiiRiR\Rtfullname(tcontextR2ttargetRtTableRRtformat_table_seqR t setdefaultRRR[R(RtddlRRRtpathR\tsch((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_ddl s   cCs|jj|j}d|S(NsCREATE SCHEMA (Rt format_schemaR(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_create_schema scCs9|jj|j}d|}|jr5|d7}n|S(Ns DROP SCHEMA s CASCADE(RR Rtcascade(RtdropRRZ((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_drop_schema s    c Cs|j}|j}d}|jr>|dj|jd7}n|d|j|d7}|j|}|r||d7}n|d7}d}t}x|jD]}|j} yb|j|d| j o| } | dk r||7}d}|d| 7}n| j rt }nWqt j k ra} tjt j tjd |j| j| jd fqXqW|j|d |j} | r||d| 7}n|d |j|7}|S( Ns CREATE RysTABLE Rs tfirst_pks, s s (in table '%s', column '%s'): %sit _include_foreign_key_constraintss )%s (RRRR=Rtcreate_table_suffixRRRt primary_keyRRRR.R traise_from_causetut descriptionRtargstcreate_table_constraintstinclude_foreign_key_constraintstpost_create_table( RRR\RRZRt separatorRt create_columnRt processedtcetconst((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_create_table sF          ) csh|j}|jrdSj|d|}djfd|jD}|rd|d|7}n|S(NRRyc3s|]}j|VqdS(N(R(RiR(R(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys E s(RtsystemRtget_column_specificationR=t constraints(RRRRRZR!((RsJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_create_column= s  csg}|jr"|j|jn|j}|dk rI|j|}n t}|jg|jD]'}||jk rb||krb|^qbdjdfd|DDS(Ns, css!|]}|dk r|VqdS(N(R(Ritp((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys e s c3s\|]R}|jdks'|jrjj sGt|dt rj|VqdS(t use_alterN(t _create_ruleRRtsupports_alterRRR(RiR(R(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys g s  ( RRtforeign_key_constraintsRRRXtextendt_sorted_constraintsR=(RR\RR%tall_fkcst omit_fkcsRo((RsJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRL s     ( cCsd|jj|jS(Ns DROP TABLE (RRR(RR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_drop_tableu scCsd|jj|jS(Ns DROP VIEW (RRR(RR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_drop_viewx scCs,|jdkr(tjd|jndS(Ns,Index '%s' is not associated with any table.(R\RRR.R(RRQ((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt_verify_index_table{ scs|j}j|j}d}|jr;|d7}n|dj|d||j|jd|djfd|jDf7}|S(NsCREATE sUNIQUE sINDEX %s ON %s (%s)tinclude_schemaRs, c3s-|]#}jj|dtdtVqdS(RFRN(RRRR(RiRr(R(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys s( RR2RRbt_prepared_index_nameRR\R=t expressions(RRR3tinclude_table_schemaRQRRZ((RsJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_create_index s      cCs |j}d|j|dtS(Ns DROP INDEX R3(RR4R(RRRQ((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_drop_index s  cCs|jdk r'|jj|j}nd}|rN|rN|jj|}nd}|jj|}|r}|d|}n|S(NR>(R\RRRDREt format_index(RRQR3RHt schema_namet index_name((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR4 s cCs,d|jj|jj|j|jfS(NsALTER TABLE %s ADD %s(RRRR\R(RR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_add_constraint scCs8d|jj|j|jj|jjtjfS(NsCOMMENT ON TABLE %s IS %s(RRRRRtcommentRtString(RR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_set_table_comment s cCsd|jj|jS(NsCOMMENT ON TABLE %s IS NULL(RRR(RR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_drop_table_comment s cCsDd|jj|jdtdt|jj|jjtjfS(NsCOMMENT ON COLUMN %s IS %st use_tableR( RR!RRRRR=RR>(RR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_set_column_comment s   cCsd|jj|jdtS(NsCOMMENT ON COLUMN %s IS NULLRA(RR!RR(RR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_drop_column_comment s cCsfd|jj|j}|jjdk rB|d|jj7}n|jjdk rk|d|jj7}n|jjdk r|d|jj7}n|jjdk r|d|jj7}n|jjdk r|d7}n|jj dk r|d7}n|jj dk r$|d|jj 7}n|jj t krC|d 7}n|jj dk rb|d 7}n|S( NsCREATE SEQUENCE %ss INCREMENT BY %ds START WITH %ds MINVALUE %ds MAXVALUE %ds NO MINVALUEs NO MAXVALUEs CACHE %ds ORDERs CYCLE(RRRt incrementRtstarttminvaluetmaxvaluet nominvaluet nomaxvaluetcacheRORtcycle(RRRZ((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_create_sequence s*      cCsd|jj|jS(NsDROP SEQUENCE %s(RRR(RR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_drop_sequence scCs|j}|jdk r-|jj|}nd}|dkrXtjd|jnd|jj|jj||j rdpdfS(Ns<Can't emit DROP CONSTRAINT for constraint %r; it has no names#ALTER TABLE %s DROP CONSTRAINT %s%ss CASCADER( RRRRtformat_constraintRR.RR\R(RRRtformatted_name((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_drop_constraint s  cKsx|jj|d|jjj|jd|}|j|}|dk r^|d|7}n|jst|d7}n|S(NRyRSs DEFAULT s NOT NULL( RR!RRTRRtget_column_default_stringRtnullable(RRRtcolspecR$((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR$ s   cCsdS(NR((RR\((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR scCsdS(NR((RR\((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR scCspt|jtjrht|jjtjrI|jj|jjt j S|jj |jjdt SndSdS(NR(R2tserver_defaultRt DefaultClausetargR t string_typesRRRRRRR(RR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRQ s  cCsd}|jdk rG|jj|}|dk rG|d|7}qGn|d|jj|jdtdt7}||j |7}|S(NRsCONSTRAINT %s s CHECK (%s)RFR( RRRRNRRR\RRtdefine_constraint_deferrability(RRRZRO((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_check_constraint s cCsd}|jdk rG|jj|}|dk rG|d|7}qGn|d|jj|jdtdt7}||j |7}|S(NRsCONSTRAINT %s s CHECK (%s)RFR( RRRRNRRR\RRRX(RRRZRO((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_column_check_constraint, s cst|dkrdSd}|jdk r]jj|}|dk r]|d|7}q]n|d7}|ddjfd|jr|jn|jD7}|j |7}|S(NiRsCONSTRAINT %s s PRIMARY KEY s(%s)s, c3s$|]}jj|jVqdS(N(RRBR(RiRo(R(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys B s( R RRRRNR=t_implicit_generatedtcolumns_autoinc_firstRRX(RRRZRO((RsJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_primary_key_constraint8 s    cs|jd}|jdk rP|jj|}|dk rP|d|7}qPnt|jdjj}|ddjfd|jD|j ||djfd|jDf7}||j |7}||j |7}||j |7}|S(NRsCONSTRAINT %s is"FOREIGN KEY(%s) REFERENCES %s (%s)s, c3s$|]}j|jjVqdS(N(RBtparentR(RiR(R(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys V sc3s$|]}j|jjVqdS(N(RBRR(RiR(R(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys \ s( RRRRNRRRR\R=tdefine_constraint_remote_tabletdefine_constraint_matchtdefine_constraint_cascadesRX(RRRZROt remote_table((RsJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_foreign_key_constraintL s$   !cCs |j|S(s=Format the remote table clause of a CREATE CONSTRAINT clause.(R(RRR\R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR_d scst|dkrdSd}|jdk rNjj|}|d|7}n|ddjfd|D7}|j|7}|S(NiRsCONSTRAINT %s s UNIQUE (%s)s, c3s$|]}jj|jVqdS(N(RRBR(RiRo(R(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys q s(R RRRRNR=RX(RRRZRO((RsJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_unique_constrainti s!cCsnd}|jdk r8|d|jj|jt7}n|jdk rj|d|jj|jt7}n|S(NRs ON DELETE %ss ON UPDATE %s(tondeleteRRtvalidate_sql_phraset FK_ON_DELETEtonupdatet FK_ON_UPDATE(RRRZ((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRav scCsnd}|jdk r8|jr+|d7}q8|d7}n|jdk rj|d|jj|jt7}n|S(NRs DEFERRABLEs NOT DEFERRABLEs INITIALLY %s(R%RR7RRft FK_INITIALLY(RRRZ((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRX s   cCs-d}|jdk r)|d|j7}n|S(NRs MATCH %s(tmatchR(RRRZ((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR` sN(+RRR RRRTRRR RRR"RR&RR0R1R2RR7R8R4R<R?R@RBRCRLRMRPR$RRRQRYRZR]RcR_RdRaRXR`(((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR sH     1  (                   tGenericTypeCompilercBseZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#Z%d$Z&d%Z'd&Z(d'Z)d(Z*d)Z+RS(*cKsdS(NtFLOAT((RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_FLOAT scKsdS(NtREAL((RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_REAL scKsT|jdkrdS|jdkr4di|jd6Sdi|jd6|jd6SdS(NtNUMERICsNUMERIC(%(precision)s)t precisions!NUMERIC(%(precision)s, %(scale)s)tscale(RrRRs(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_NUMERIC s cKsT|jdkrdS|jdkr4di|jd6Sdi|jd6|jd6SdS(NtDECIMALsDECIMAL(%(precision)s)Rrs!DECIMAL(%(precision)s, %(scale)s)Rs(RrRRs(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_DECIMAL s cKsdS(NtINTEGER((RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_INTEGER scKsdS(NtSMALLINT((RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_SMALLINT scKsdS(NtBIGINT((RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_BIGINT scKsdS(Nt TIMESTAMP((RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_TIMESTAMP scKsdS(NtDATETIME((RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_DATETIME scKsdS(NtDATE((RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_DATE scKsdS(NtTIME((RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_TIME scKsdS(NtCLOB((RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_CLOB scKsdS(NtNCLOB((RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_NCLOB scCsD|}|jr#|d|j7}n|jr@|d|j7}n|S(Ns(%d)s COLLATE "%s"(tlengthRM(RRRRZ((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt_render_string_type s   cKs|j|dS(NtCHAR(R(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_CHAR scKs|j|dS(NtNCHAR(R(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_NCHAR scKs|j|dS(NtVARCHAR(R(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_VARCHAR scKs|j|dS(NtNVARCHAR(R(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_NVARCHAR scKs|j|dS(NtTEXT(R(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_TEXT scKsdS(NtBLOB((RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_BLOB scKsd|jrd|jpdS(NtBINARYs(%d)R(R(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_BINARY scKsd|jrd|jpdS(Nt VARBINARYs(%d)R(R(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_VARBINARY scKsdS(NtBOOLEAN((RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_BOOLEAN scKs|j||S(N(R(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_large_binary scKs|j||S(N(R(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_boolean scKs|j||S(N(R(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_time scKs|j||S(N(R(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_datetime scKs|j||S(N(R(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_date scKs|j||S(N(R|(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_big_integer scKs|j||S(N(Rz(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_small_integer scKs|j||S(N(Rx(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_integer scKs|j||S(N(Rp(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_real scKs|j||S(N(Rn(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_float scKs|j||S(N(Rt(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_numeric scKs|j||S(N(R(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_string scKs|j||S(N(R(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_unicode scKs|j||S(N(R(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_text scKs|j||S(N(R(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_unicode_text scKs|j||S(N(R(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt visit_enum scKstjd|dS(NsKCan't generate DDL for %r; did you forget to specify a type on this Column?(RR.(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRs" scKs|j|j|j|S(N(Rt type_engineR(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_type_decorator) scKs |j|S(N(t get_col_spec(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_user_defined, s(,RRRnRpRtRvRxRzR|R~RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRsRR(((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRl sT                                      tStrSQLTypeCompilercBseZdZdZRS(cCs&|jdr|jSt|dS(Ntvisit_(t startswitht_visit_unknowntAttributeError(RR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt __getattr__1 scKsd|jjS(Ns%s(RR(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR7 s(RRRR(((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR0 s tIdentifierPreparercBsLeZdZeZeZeZe j dZ ddde edZdZdZdZdZdZdZd Zdd Zdd Zd Ze d ZddZddZddZejddZ dZ!e ddZ"dZ#eddedZ$e dZ%ej&dZ'dZ(RS(s@Handle quoting and case-folding of identifiers based on options.t"cCsq||_||_|p|j|_||_|jd|_||_||_i|_|jjdk|_ dS(ssConstruct a new ``IdentifierPreparer`` object. initial_quote Character that begins a delimited identifier. final_quote Character that ends a delimited identifier. Defaults to `initial_quote`. omit_schema Prevent prepending schema name. Useful for databases that do not support schemae. iRoRlN(RoRl( Rt initial_quotet final_quotet escape_quotetescape_to_quotet omit_schematquote_case_sensitive_collationst_stringsRRX(RRRRRRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRG s       cCs>|jj|j}|jj|jtj||_|S(N(Rt__new__t__dict__RVRt_schema_getterRD(RRtprep((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRk scCs:|j|j|j}|jr6|jdd}n|S(sEscape an identifier. Subclasses should override this to provide database-dependent escaping behavior. RWs%%(RYRRRX(RR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt_escape_identifierq s cCs|j|j|jS(sCanonicalize an escaped identifier. Subclasses should override this to provide database-dependent unescaping behavior that reverses _escape_identifier. (RYRR(RR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt_unescape_identifier} scCs?|dk r;|j| r;tjd||jfn|S(skeyword sequence filter. a filter for elements that are intended to represent keyword sequences, such as "INITIALLY", "INITIALLY DEFERRED", etc. no special characters should be present. .. versionadded:: 1.3 s/Unexpected SQL phrase: %r (matching against %r)N(RRkRR.tpattern(RRtreg((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRf s cCs|j|j||jS(s~Quote an identifier. Subclasses should override this to provide database-dependent quoting behavior. (RRR(RR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytquote_identifier s cCsT|j}||jkpS|d|jkpS|jjtj| pS||kS(s5Return True if the given identifier requires quoting.i(Rtreserved_wordstillegal_initial_characterstlegal_charactersRkR t text_type(RRtlc_value((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR/ s  cCs|jjtj| S(sjReturn True if the given identifier requires quoting, but not taking case convention into account.(RRkR R(RR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR scCs)|dk rtjdn|j|S(sConditionally quote a schema name. The name is quoted if it is a reserved word, contains quote-necessary characters, or is an instance of :class:`.quoted_name` which includes ``quote`` set to ``True``. Subclasses can override this to provide database-dependent quoting behavior for schema names. :param schema: string schema name :param force: unused .. deprecated:: 0.9 The :paramref:`.IdentifierPreparer.quote_schema.force` parameter is deprecated and will be removed in a future release. This flag has no effect on the behavior of the :meth:`.IdentifierPreparer.quote` method; please refer to :class:`.quoted_name`. sThe IdentifierPreparer.quote_schema.force parameter is deprecated and will be removed in a future release. This flag has no effect on the behavior of the IdentifierPreparer.quote method; please refer to quoted_name().N(RR twarn_deprecatedRB(RRtforce((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRE s  cCs|dk rtjdnt|dd}|dkr||jkrT|j|S|j|r||j||j|(RBRRDRRRE(RRRRRH((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRs  cCs|j|p|jS(N(RBR(RRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR7scCs|j|p|jS(N(RBR(RR?R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR&!scCs4|p |j}|j|r0|j|}n|S(N(RR/R(Rt savepointRR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR$sssqlalchemy.sql.namingcCs t|jtjr^|j||j}|dkrgt|jtjrOdS|j}qgn |j}t|tjr|j dkr|j j p|j j }n |j j }t ||kr|d|d!dtj|d}qn|j j||j|S(NRQiiRi(R2RRt _defer_namet_constraint_name_for_tableR\Rt_defer_none_nameR3RRtmax_index_name_lengthRR R tmd5_hextvalidate_identifierRB(RtnamingRRtmax_((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRN-s"    ,cCs |j|S(N(RN(RRQ((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR9KscCsj|dkr|j}n|j|}|j|}|j rf|rf|rf|j|d|}n|S(s'Prepare a quoted table and schema name.R>N(RRRBRDRRE(RR\RRRRH((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRNs  cCs |j|S(sPrepare a quoted schema name.(RB(RR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR [scCs|dkr|j}nt|dtsm|r]|j|jd|d|d|j|S|j|Sn.|r|j|jd|d|d|S|SdS(sPrepare a quoted column name.R@RRR>N(RRRRRR\RB(RRRARt table_nameR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR!`s  -$cCsa|j|}|j rG|rG|rG|j||j|dtfS|j|dtfSdS(s(Format table name and schema as a tuple.RN(RDRRERR(RR\RRH((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRs  cCsrg|j|j|j|jfD]}tj|^q"\}}}tjdi|d6|d6|d6}|S(NsM(?:(?:%(initial)s((?:%(escaped)s|[^%(final)s])+)%(final)s|([^\.]+))(?=\.|$))+tinitialtfinaltescaped(RRRRRR(RRzRRt escaped_finaltr((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt_r_identifierss7cCsQ|j}gg|j|D]\}}|p1|^qD]}|j|^q8S(s:Unpack 'schema.table.column'-like strings into components.(RtfindallR(Rt identifiersRtatbR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytunformat_identifierss N()RRRtRESERVED_WORDSRtLEGAL_CHARACTERSRtILLEGAL_INITIAL_CHARACTERSRRRRRDRRRRRRRfRR/RRERBRLRR7R&RR RRNR9RR R!RRRR(((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR; sF     % 2       (jRRRRRRRRRRRRRRR RXRRtIRtLEGAL_CHARACTERS_PLUS_SPACEtrangeRaRRgRiRjtUNICODERbRaRtand_tor_taddtmulRtdivtmodttruedivtnegtlttletnetgttgeteqtis_distinct_fromtisnot_distinct_fromt concat_opRt notmatch_optin_optnotin_optcomma_opRR6tis_tisnotRtexistst distinct_optinvtany_optall_optdesc_optasc_opt nullsfirst_opt nullslast_opR5RsRR!R"R#RBRCRzR{RWRctcubetrollupt grouping_setsRRR)Rt UNION_ALLRt EXCEPT_ALLRt INTERSECT_ALLRtobjectRtwith_metaclasstEnsureKWArgTypeRt VisitableRRRRRlRR(((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyts    %                                                          % =