id*@ddlZddlmZddlmZddlmZddlmZddlmZddlm Z dd lm Z d d lm Z d d lm Z d d lm Z d dlmZd dlmZd dlmZd dlmZd dlmZGddejZGddejZGddejejZdS)N)config)engines)fixtures)eq_) requirements)Column)Table)DateTime)func)Integer)select)sql)String)testing)textcveZdZdZedZedZdZdZdZ e j dZ dZ d S) RowFetchTestTc td|tdtdtdtdtd|tdtdtdtdS) Nplain_pkidT primary_keydata2 has_datestoday)r r rrr clsmetadatas Z/opt/cloudlinux/venv/lib/python3.11/site-packages/sqlalchemy/testing/suite/test_results.py define_tableszRowFetchTest.define_tabless   4d 3 3 3 66":: & &       4d 3 3 3 7H % %      c ||jjdddddddddg||jjdt jdd d d d d d gdS) Nd1)rrrd2r d3 r)rr)executetablesrinsertrdatetime)r connections r" insert_datazRowFetchTest.insert_data&s J  & & ( ($''$''$''      J ' ' ) ) 1$2r1a H H I I J     r$cFtj|jj|jjjj }t|ddt|dddS)Nrr&rr' rdbr-r.rrorder_bycrfirstrselfrows r"test_via_stringzRowFetchTest.test_via_string6si K ' ' ) ) 2 24;3G3I3L M M  %''  CIq CKr$cFtj|jj|jjjj }t|ddt|dddS)Nrr&r'r4r9s r" test_via_intzRowFetchTest.test_via_int>si K ' ' ) ) 2 24;3G3I3L M M  %''  CFA CFDr$ctj|jj|jjjj }t||jjjjdt||jjjj ddS)Nr&r') rr5r-r.rrr6r7rr8rrr9s r"test_via_col_objectz RowFetchTest.test_via_col_objectFsi K ' ' ) ) 2 24;3G3I3L M M  %''  C $&) *A... C $&+ ,d33333r$ctjt|jjjj|jjjjdg |jjjj }| }t| ddgt|ddS)Nr)r'r')rr5r-rr.rr7rlabelr6rr8rkeys)r:resultr;s r"test_row_with_dupe_namesz%RowFetchTest.test_row_with_dupe_namesNs"" K(*/K(*/55f==   ht{+-011   llnn FKKMMFF+,,, Cr$c |jj}t|djjg}t|jj|dg}tj | }t|dtjdddddddS)ztest that a scalar select as a column is returned as such and that type conversion works OK. (this is half a SQLAlchemy Core test and half to catch database backends that may have unusual behavior with scalar selects.) x somelabelr*r+r,rN)r.rraliasr7r as_scalarrrBrr5r-r8rr0)r: datetabless2r;s r"test_row_w_scalar_selectz%RowFetchTest.test_row_w_scalar_select\sK) IOOC((*01 2 2 < < > > Y[^QWW[%9%9: ; ;i##))++ C h/aRAFFGGGGGr$N)__name__ __module__ __qualname__ __backend__ classmethodr#r2r<r>r@r%duplicate_names_in_cursor_descriptionrErNr$r"rrsK   [     [  4447  87  H H H H Hr$rcBeZdZdZdZdZedZdZdZ dZ dS) PercentSchemaNamesTestztests using percent signs, spaces in table and column names. This is a very fringe use case, doesn't work for MySQL or PostgreSQL. the requirement, "percent_schema_names", is marked "skip" by default. )percent_schema_namesTc td|tdttdt|j_t jdt jdt jd|j_dS)Nz percent%tablepercent%spaces % more spaces) r r rr. percent_tablertablecolumnlightweight_percent_tablers r"r#z$PercentSchemaNamesTest.define_tablesyss#(   :w ' ' )7 3 3 $ $   03y  Jz " " J- . .0 0  ,,,r$c|jj}ddddddddddddfD]4}tj||5|dSNr+r,)rZr[ r.r\rr5r-r/ _assert_table)r:r\paramss r"test_single_roundtripz,PercentSchemaNamesTest.test_single_roundtrips 1 B 7 7B 7 7B 7 7Q 7 7   > >F I  m2244f = = = = r$c,|jj}tj|dddtj|dddddddddg|dSrarf)r:r\s r"test_executemany_roundtripz1PercentSchemaNamesTest.test_executemany_roundtrips 1    " "B$O$O       " ";;;;;;     r$c |jj}|jj}||||fD]}t t t j| |j dgdt t t j| |j d ddg |j dddgt j| |j d}t |ddt |dd t ||j ddt ||j dd t j||j dd it t t j| |j dgd dS) NrZ))r+r,)rbrcrdrercrdr[rdrermrnr+r,))r+ro)rbro)rdro)rcro)r.r\r_rIrlistrr5r-rr6r7wherein_r8updatevalues)r:r\r_r]r;s r"rgz$PercentSchemaNamesTest._assert_tables 1 $(K$I!     ! ! % % + + - -  ! :! :E I%% // 0CDD 544     I%% uw'=>BBAr7KKLL!%'*"566'"   )## '' (;<<egg  J # # # *+R 0 0 0 EGJ'(! , , , EG234b 9 9 9 9   " " ) )!78"=      !!!((**33% 3   2 1 1 r$N) rOrPrQ__doc__ __requires__rRrSr#rirkrgrUr$r"rWrWlsp-LK   [        6 6 6 6 6 r$rWceZdZdZdZdZdZdZej ddde ddfd de d gdfd d e dd fd d e d g ddfdde d g d d fdde d g dfddd e dd fdd e d ddfdd dZdZdZdZejdZdS)ServerSideCursorsTest)server_side_cursorsTcP|jjjdkrt|jS|jjjdkr)t djj}t||S|jjjdkr)t djj}t||SdS)Npsycopg2pymysqlzpymysql.cursorsmysqldbzMySQLdb.cursorsF) enginedialectdriverboolname __import__cursorsSSCursor isinstance)r:cursorsscursors r"_is_server_sidez%ServerSideCursorsTest._is_server_sides ;  % 3 3 $$ $ [ '9 4 4!"344<EHfh// / [ '9 4 4!"344<EHfh// /5r$cHtjd|i|_|jS)Nry)options)rtesting_enginer~)r:rys r"_fixturezServerSideCursorsTest._fixtures.,*,?@    {r$cttj|jdSN)rtesting_reaper close_allr~dispose)r:s r"tearDownzServerSideCursorsTest.tearDowns1((*** r$) global_stringTselect 1T global_textr global_exprr&global_off_explicitF stmt_optionstream_resultsstmt_option_disabledfor_update_expr)for_update_stringTzSELECT 1 FOR UPDATET text_no_ssz select 42text_ss_optioniaaaz*engine_ss_arg, statement, cursor_ss_status)id_argnamesc,||}|5}||}t||j||ddddS#1swxYwYdSr)rbeginr-rrrclose)r: engine_ss_arg statementcursor_ss_statusr~connrDs r"test_ss_cursor_statusz+ServerSideCursorsTest.test_ss_cursor_statuss@}-- \\^^ t\\),,F $$V]335E F F F LLNNN                  sAB  B B c|d}|dd}dS)NFTrr)rconnectexecution_optionsr-)r:r~rDs r"test_conn_optionz&ServerSideCursorsTest.test_conn_optionsIu%% NN    d  3 3 WZ  r$c|d}tdgd}|d|}dS)NFr&Tr)rrrrr-)r:r~rLrDs r"&test_stmt_enabled_conn_option_disabledz > NN   . .e . D D L LQ O O r$c|d}tdgd}|5}||}|dddn #1swxYwYtdg|}|5}||}|ddddS#1swxYwYdS)NFr&Tr)from_obj)rrrrIrr-r)r:r~s1rrDrMs r"test_aliases_and_ssz)ServerSideCursorsTest.test_aliases_and_ss4s^u%% QC[[ * *$ * ? ? E E G G \\^^ t\\"%%F LLNNN               QC" % % % \\^^ t\\"%%F LLNNN                  s$ *BBB*C>>DDc |j}|dtd|tdtdtdt d}|d|d |d t| |j j d d g||j j d k|j jdz t| |j j d dg|ttt)jdg|ddS)NT test_tablerrrr) checkfirstdata1)rdata2)r&r)rrrz updated)rz data2 updated*r)r!rr r rrcreater/r-rrr6r7rfetchallrsrqrtrdeleter count select_fromscalar)r:mdrs r"test_roundtripz$ServerSideCursorsTest.test_roundtripDs ] d   4d 3 3 3 66":: & &   T***###111###111      ( ( 9 9 A A C C L L N N < (    !!*,/Q"677>>"Z/ ?  ')))      ( ( 9 9 A A C C L L N N / 0    ##%%% FDJsOO$ % % 1 1* = = D D F FJJJJJr$N)rOrPrQrvrRrrrr combinationsrrrwith_for_updaterrrrprovide_metadatarrUr$r"rxrxs,LK    W1 dd:..5 ffaSkk40 ttJ'7'7?   FA3KK ) ) ) > >    #  FA3KK ) ) ) ? ?   D&&!++"="="?"?F@ udd;//7   D   / /t / D D   =7:;: 3 3 3 7 7 7  KKKKKr$rx)r0rrr assertionsrrschemar r r r rrrrrr TablesTestrrWTestBaseAssertsExecutionResultsrxrUr$r"rs!!!!!!UHUHUHUHUH8&UHUHUHpk k k k k X0k k k \DKDKDKDKDK w6DKDKDKDKDKr$