[Jc@su dZddkZddkZddklZlZlZlZddkl Z l Z ddk l Z l Z ddklZddklZddklZlZlZdd klZlZlZlZlZd d d d dddddddddddddddddgZedd 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`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddgZeZedeededeedeedededededeZedeededeed eded eeded eZ ed eed edeedeeei!i"edededededededeedeee i!i#edeedNeede Z$edeedeeei!i"deededeedeeei!i"Z%edeedeee$i!i"deedeee%i!i&deedeee$i!i'deedeZ(dei)fdYZ*dei+fdYZ,d ei-e,fd YZ.d eifd!YZ/d e/fd"YZ0de/fd#YZ1de/fd$YZ2dei3fd%YZ4dei3fd&YZ5dei6fd'YZ7dei6fd(YZ8dei9fd)YZ:dei9fd*YZ;dei<fd+YZ=deifd,YZ>deifd-YZ?dei@fd.YZAdeiBfd/YZCdeiDfd0YZEdei)fd1YZFdeFfd2YZGdei)fd3YZHd4e iIfd5YZJd6eJfd7YZKd8eJfd9YZLd:e iMfd;YZNd<eNfd=YZOd>eNfd?YZPheOd@6ZQdAe iRfdBYZSdCe iTfdDYZUdEe iVfdFYZWdGe iXfdHYZYdIe iZfdJYZ[eNZ\eSe\_]eUe\_^eWe\__e[e\_`eYe\_adS(Ks Sybase database backend. Known issues / TODO: * Uses the mx.ODBC driver from egenix (version 2.1.0) * The current version of sqlalchemy.databases.sybase only supports mx.ODBC.Windows (other platforms such as mx.ODBC.unixODBC still need some development) * Support for pyodbc has been built in but is not yet complete (needs further development) * Results of running tests/alltests.py: Ran 934 tests in 287.032s FAILED (failures=3, errors=1) * Tested on 'Adaptive Server Anywhere 9' (version 9.0.1.1751) iN(tutiltsqltschematexc(tcompilert expression(tdefaulttbase(ttypes(t operators(tMetaDatatTabletColumn(tStringtIntegertSMALLINTtCHARt ForeignKeytSybaseTypeErrorSybaseNumerict SybaseFloatt SybaseIntegertSybaseBigIntegertSybaseTinyIntegertSybaseSmallIntegertSybaseDateTime_mxodbctSybaseDateTime_pyodbctSybaseDate_mxodbctSybaseDate_pyodbctSybaseTime_mxodbctSybaseTime_pyodbct SybaseTextt SybaseStringt SybaseChart SybaseBinaryt SybaseBooleantSybaseTimeStampt SybaseMoneytSybaseSmallMoneytSybaseUniqueIdentifiertaddtalltaltertandtanytastasctbackuptbegintbetweentbiginttbinarytbittbottomtbreaktbytcallt capabilitytcascadetcasetcasttchart char_convertt charactertcheckt checkpointtclosetcommenttcommittconnectt constrainttcontainstcontinuetconverttcreatetcrosstcubetcurrenttcurrent_timestampt current_usertcursortdatetdbspacet deallocatetdectdecimaltdeclareRtdeletetdeletingtdesctdistincttdotdoubletdroptdynamictelsetelseift encryptedtendtendiftescapetexceptt exceptiontexectexecutetexistingtexistst externlogintfetchtfirsttfloattfortforcetforeigntforwardtfromtfulltgototgranttgroupthavingtholdlockt identifiedtiftintindext index_lparentinnertinoutt insensitivetinsertt insertingtinstalltinsteadtinttintegert integratedt intersecttintotiqtist isolationtjointkeytlateraltlefttliketlocktlogintlongtmatcht membershiptmessagetmodetmodifytnaturaltnewtnot noholdlocktnottnotifytnulltnumerictoftofftontopentoptiontoptionstortordertotherstouttoutertovert passthrought precisiontpreparetprimarytprintt privilegestproct proceduret publicationt raiserrortreadtexttrealt referencet referencestreleasetremotetremovetrenamet reorganizetresourcetrestoretrestricttreturntrevoketrighttrollbacktrolluptsavet savepointtscrolltselectt sensitivetsessiontsettsetusertsharetsmallinttsometsqlcodetsqlstatetstarttstoptsubtranstsubtransactiont synchronizet syntax_errorttablet temporarytthenttimet timestampttinyintttottopttranttriggerttruncatettsequalt unboundedtuniontuniquetunknowntunsignedtupdatetupdatingtusertusingtvalidatetvaluest varbinarytvarchartvariabletvaryingtviewtwaittwaitfortwhentwheretwhiletwindowtwitht with_cubet with_lparent with_rolluptwithintworkt writetexttSYSTABLEttable_idt primary_keytfile_idt table_nameit table_typei tcreatort SYSDOMAINt domain_idt domain_namettype_idtquotet SYSCOLUMNt column_idtpkeyit column_nametnullstwidtht max_identitytscalet SYSFOREIGNKEYtforeign_table_idtforeign_key_idtprimary_table_idtSYSFKCOLtforeign_column_idtprimary_column_idtSybaseTypeErrorcBs#eZdZdZdZRS(cCsdS(N(tNone(tselftdialect((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pytresult_processorscCs d}|S(NcSstid|gdS(NsData type not supported(RtInvalidRequestError(tvalue((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pytprocesss((R"R#R'((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pytbind_processors cCstiddS(NsData type not supported(Rt CompileError(R"((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyt get_col_specs(t__name__t __module__R$R(R*(((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR s  t SybaseNumericcBseZdZRS(cCs[|idjo+|idjodSdh|id6Sndh|id6|id6SdS(NtNUMERICsNUMERIC(%(precision)s)Rs!NUMERIC(%(precision)s, %(scale)s)R(RR!R(R"((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR*s (R+R,R*(((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR-scBs,eZdeddZdZdZRS(i icKs,tti|i|||||_dS(N(tsupertsqltypestFLOATt__init__R(R"Rt asdecimalRtkwargs((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR2scCsC|ioti|S|idjodSdh|id6SdS(NR1sFLOAT(%(precision)s)R(R3R-R*RR!(R"((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR*s  cCs(d}|ioti||S|S(NcSs|djodSt|S(N(R!Rm(R&((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR's (R3R-R$(R"R#R'((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR$s  (R+R,tFalseR2R*R$(((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyRs cBseZdZRS(cCsdS(NtINTEGER((R"((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR*s(R+R,R*(((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyRscBseZdZRS(cCsdS(NtBIGINT((R"((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR*s(R+R,R*(((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyRscBseZdZRS(cCsdS(NtTINYINT((R"((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR*s(R+R,R*(((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyRscBseZdZRS(cCsdS(NR((R"((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR*s(R+R,R*(((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyRscBseZdZdZRS(cOstt|itdS(N(R/RR2R5(R"tatkw((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR2scCsdS(NtDATETIME((R"((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR*s(R+R,R2R*(((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyRs cBs,eZdZdZdZdZRS(cOstt|itdS(N(R/RR2R5(R"R9R:((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR2scCsdS(NR;((R"((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR*scCs d}|S(NcSs|djodS|S(N(R!(R&((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR's ((R"R#R'((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR$s cCs d}|S(NcSs|djodS|S(N(R!(R&((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR's ((R"R#R'((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR(s (R+R,R2R*R$R((((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyRs   cBseZdZdZRS(cOstt|itdS(N(R/RR2R5(R"R9R:((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR2scCsdS(NtDATE((R"((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR*s(R+R,R2R*(((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyRs cBseZdZdZRS(cOstt|itdS(N(R/RR2R5(R"R9R:((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR2scCsdS(NR<((R"((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR*s(R+R,R2R*(((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyRs cBs#eZdZdZdZRS(cOstt|itdS(N(R/RR2R5(R"R9R:((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR2scCsdS(NR;((R"((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR* scCs d}|S(NcSs4|djodSti|i|i|i|iS(N(R!tdatetimeRthourtminutetsecondt microsecond(R&((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR' s ((R"R#R'((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR$ s (R+R,R2R*R$(((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyRs  cBs,eZdZdZdZdZRS(cOstt|itdS(N(R/RR2R5(R"R9R:((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR2scCsdS(NR;((R"((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR*scCs d}|S(NcSs4|djodSti|i|i|i|iS(N(R!R=RR>R?R@RA(R&((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR's ((R"R#R'((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR$s cCs d}|S(NcSs=|djodStiddd|i|i|i|iS(Nii(R!R=R>R?R@RA(R&((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR'$s ((R"R#R'((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR(#s (R+R,R2R*R$R((((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyRs   cBseZdZRS(cCsdS(NtTEXT((R"((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR*+s(R+R,R*(((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR*scBseZdZRS(cCsdh|id6S(NsVARCHAR(%(length)s)tlength(RC(R"((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR*/s(R+R,R*(((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR.scBseZdZRS(cCsdh|id6S(NsCHAR(%(length)s)RC(RC(R"((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR*3s(R+R,R*(((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR 2scBseZdZRS(cCsdS(NtIMAGE((R"((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR*7s(R+R,R*(((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR!6scBs#eZdZdZdZRS(cCsdS(NtBIT((R"((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR*;scCs d}|S(NcSs$|djodS|otptS(N(R!tTrueR5(R&((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR'?s ((R"R#R'((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR$>s cCs d}|S(NcSsL|tjodS|tjodS|djodS|otptSdS(Nii(RFR5R!(R&((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR'Fs   ((R"R#R'((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR(Es (R+R,R*R$R((((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR":s  cBseZdZRS(cCsdS(Nt TIMESTAMP((R"((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR*Rs(R+R,R*(((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR#QscBseZdZRS(cCsdS(NtMONEY((R"((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR*Vs(R+R,R*(((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR$UscBseZdZRS(cCsdS(Nt SMALLMONEY((R"((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR*Zs(R+R,R*(((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR%YscBseZdZRS(cCsdS(NtUNIQUEIDENTIFIER((R"((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR*^s(R+R,R*(((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR&]stSybaseSQLExecutionContextcBseZRS((R+R,(((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyRKast SybaseSQLExecutionContext_mxodbccBs,eZddddZdZdZRS(cCs&tt|i|||||dS(N(R/RLR2(R"R#t connectiontcompiledt statementt parameters((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR2fscCstt|idS(N(R/RLtpre_exec(R"((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyRQiscCs|iio|iii}|iid|ii}t|d}|djoLt|d p|i djo|g|_ q|g|i d|_ qnt t |i dS(NsSELECT @@identity AS lastrowidit_last_inserted_idsi(RNtisinsertRORRORgtfetchoneRthasattrRRR!R/RLt post_exec(R"Rtrowt lastrowid((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyRVls  !N(R+R,R!R2RQRV(((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyRLds t SybaseSQLExecutionContext_pyodbccBs,eZddddZdZdZRS(cCs&tt|i|||||dS(N(R/RYR2(R"R#RMRNRORP((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR2scCstt|idS(N(R/RYRQ(R"((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyRQscCs|iio|iii}|iid|ii}t|d}|djoLt|d p|i djo|g|_ q|g|i d|_ qnt t |i dS(NsSELECT @@identity AS lastrowidiRRi(RNRSRORRORgRTRRURRR!R/RYRV(R"RRWRX((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyRVs  !N(R+R,R!R2RQRV(((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyRY~s tSybaseSQLDialectcBseZh eei6eei6eei6e ei 6e ei 6e ei6eei6eei6eei6eei6e ei6Zhed6ed6ed6ed6ed6ed6ed6e d6ed6ed 6ed 6ed 6e d 6e d 6e d6e d6e d6ed6e d6ed6ed6ed6ed6ed6ed6ZdZ e!Z"e!Z#e!Z$e%Z&d&dZ(dZ)d&dZ*e+e*Z*dZ,dZ-dZ.d Z/d!Z0d"Z1d#Z2d&d$Z3d%Z4RS('Rs unsigned intsunsigned smallintsunsigned bigintR1RRRs long varcharR<RTRRmR[R2s long binaryRR3timageRtmoneyt smallmoneytuniqueidentifiersjava.lang.Objectsjava serializationtsybasecOsp|tjott|i|||S|o(|iGHti|i}|||Sti|||SdS(N(RZR/t__new__R+tdialect_mappingtgettobject(tclstdbapitargsR4R#((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR`s cKs0tt|i|t|_|iddS(Ntdba(R/RZR2R5ttext_as_varchartset_default_schema_name(R"tparams((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR2s cCs|owyt|}|iSWqtj oLtiddig}tiD] }||qP~d|qXnJxFtiD],}y|iSWqtj o }qXqWtddS(Ns5Unsupported SybaseSQL module '%s' requested (must be s or t)s>No DBAPI module detected for SybaseSQL - please install mxodbc( Rat import_dbapitKeyErrorRR%RtkeysRt ImportError(Rdt module_namet dialect_clst_[1]txte((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyRes N  cCsti||i}|S(N(R0t adapt_typetcolspecs(R"ttypeobjtnewobj((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyttype_descriptorscCs |iiS(N(tcontexttlast_inserted_ids(R"((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR{scCs|iS(N(t schema_name(R"RM((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pytget_default_schema_namescCs ||_dS(N(R|(R"R|((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyRiscKs/t|}tt|i||||dS(N(ttupleR/RZt do_execute(R"RORORjR4((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyRs cCswyC|hjo d}n|i|||i|i_d|_Wn-tj o!}tii|||nXdS(NtY((RgtrowcountRztDBPROP_COMMITPRESERVEt ExceptionRt DBAPIErrortinstance(R"tcRORPRt((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyt_executes   cCs~titiigtitiiidotiidj}|i|}g}|i D]}||dqf~S(s*Ignore the schema and the charset for now.sSYS%idi( RRttablesRR tnot_RR Rgtfetchall(R"RMRtstrpRrRW((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyt table_names s cCsotitiigtii|j}|i|}|i}d|dtt|dj GH|dj S(Ns has_table: s: ( RRRRR RgRTtstrtboolR!(R"RMt tablenameRRRRW((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyt has_tables ' #c Cs}|idj o |i}n|i|}tittgtii |i jdti ti tgdtii g}|i |}t}xto|i}|djoPnt}|tii|tii|tiidj|tii|tii|tii|tii|tiidj|tii|tii|tii f \ } } } } } }}}}}}|o| |joqn|djo d}ng}x5| | |fD]$}|dj o|i|qqW|ii| d}|tjo| djo t}n>|djo$t i!d| | ft"i#}n||}g}|dj o#|iti$ti%|nti&| |d| d||}t'|djo8ti(| d |_)t'||i)_*d |i)_+n|i,|qWd h|i d 6}|i |}h}xto|i}|djoPn|d|d |d |df\}}}}||i-jo(d|gd||fgg||st dayofyeartdoytweekdaytdowt millisecondt millisecondscCs@tt|i|}|iidod|}n|S(Ntliterals STRING(%s)(R/Rtbindparam_stringtlowert startswith(R"Rtres((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyRscCs{|iodpd}|io|d|if7}n|io4|ip|d7}n|d|idf7}n|S(Ns DISTINCT tsTOP %s s TOP 1000000 s START AT %s i(t _distinctt_limitt_offset(R"RR((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pytget_select_precolumnss   cCsdS(NR((R"R((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyt limit_clausescCsit|itio9|itijo&|iti|i|i|iSt t |i |SdS(sKMove bind parameters to the right-hand side of an operator, where possible.N( t isinstanceRRt_BindParamClausetoperatorteqR't_BinaryExpressionRR/Rt visit_binary(R"R2((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyRs)&cCsAt|tio|idStt|i|||SdS(N(RRtFunctiontlabelR!R/Rtlabel_select_column(R"Rtcolumntasfrom((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR sRt current_datecCs|ii|i|i|_tt|i|}|iidjo2ti|t }d||i |i f}n|S(NRsCAST(%s AS %s)( tfunction_rewritesRbRR/Rtvisit_functionRRt_CastRR't typeclause(R"tfuncRR;((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyRs  cCs5|ii|i|i}d||i|ifS(NsDATEPART("%s", %s)(t extract_mapRbtfieldR'texpr(R"textractR((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyt visit_extractscCsdS(NR((R"R((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pytfor_update_clause!scCsB|i|i}|o!|i p |io d|SdSdS(Ns ORDER BY R(R't_order_by_clauset is_subqueryR(R"RR((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pytorder_by_clause%s (R+R,RtDefaultCompilerR RRt sql_operatorstmodRRRRRRRRRR R (((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyRs$           tSybaseSQLSchemaGeneratorcBseZdZRS(cKs>|ii|}t|idt o~|iot|iojt|it i oT|i djp#t|i t io*|i iot i|id|_qnt|do||i_|d7}n$|d|ii|ii7}|ip|d7}n|i|}|dj o|d|7}n|S(Nt has_sequencet_seqRs Integer IDENTITYt s NOT NULLs DEFAULT (tpreparert format_columntgetattrRR5Rt autoincrementRRR0RRR!RRtoptionalRRRURt dialect_implR#R*Rtget_column_default_string(R"RR4tcolspecR((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pytget_column_specification0s! 3! #  (R+R,R(((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR/stSybaseSQLSchemaDroppercBseZdZRS(cCsX|id|ii|ii|ii|i|it|if|idS(Ns DROP INDEX %s.%s( RRtquote_identifierRRRt_validate_identifierR5Rg(R"R|((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyt visit_indexKs ,(R+R,R (((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyRJstSybaseSQLDefaultRunnercBseZRS((R+R,(((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR!SstSybaseSQLIdentifierPreparercBs)eZeZdZdZdZRS(cCstt|i|dS(N(R/R"R2(R"R#((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR2ZscCs|S(N((R"R&((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyt_escape_identifier]scCs|S(N((R"R&((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyt_fold_identifier_caseas(R+R,tRESERVED_WORDStreserved_wordsR2R#R$(((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyR"Ws  (bt__doc__R=Rt sqlalchemyRRRRtsqlalchemy.sqlRRtsqlalchemy.engineRRRR0R RR R R R RRRRt__all__RR%tischemaRFRRRRR Rt foreignkeysRRtfkcolst TypeEngineR RR-R1RRRRRRRRRRRRRRRRRR RR!RR"RGR#R$R%R&tDefaultExecutionContextRKRLRYtDefaultDialectRZRRRaR RtSchemaGeneratorRt SchemaDropperRt DefaultRunnerR!tIdentifierPreparerR"R#tstatement_compilertschemageneratort schemadropperRt defaultrunner(((s?/usr/lib/python2.6/site-packages/sqlalchemy/databases/sybase.pyts&"(                                                                     !! !!!  .2 U