L iddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZdd lm Z dd l m Z dd l m Z Gd d e jZy)) bindparam)Column)Integer)MetaData)select)String)Table)testing)text)eq_)fixturesceZdZdZdZdZedZedZdZ e jdgde jd dd gd Z d Z d Ze jddd ge jdde jj fde jj"fgdZdZdZdZe jj,dZe jj,dZy) RowCountTestztest rowcount functionality) sane_rowcountTc td|tdtddtdtdtdtd y) N employees employee_idFT autoincrement primary_keyname2 department)r rrr)clsmetadatas l/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sqlalchemy/testing/suite/test_rowcount.py define_tableszRowCountTest.define_tablessB   #   66": & < + c gdx|_}|jj}|j|j t |Dcgc]\}\}}|||dc}}}ycc}}}w)N) )AngelaA)Andrewr")Anandr")BobB)Bobetter&)Buffyr&)CharlieC)Cynthiar*)Chrisr*rrr)datatablesrexecuteinsert enumerate)r connectionr.employees_tableinds r insert_datazRowCountTest.insert_data+sr  4**..  " " $"+4  Av1!"1A>   s A(cH|jj}t|jj|jj j |jj}|j|j}t||jy)N) r/rrcrrorder_byrr0fetchallr r.)selfr3r4srowss r test_basiczRowCountTest.test_basicBsz++//     " "O$5$5$@$@ (?$$00 1 !!!$--/ D$))r statement)updatedeleter1r close_firstFc N|jj}|jj}|jr6|j |j j |dk(ddi}n|jr5|j |jj |dk(ddi}n|jr0|j |jdddddd ddd d ddg}n|jr|t|jj|jjj |jjdk(}|j |}|jn|j|rjjd vsJy) Nr*rZznone 1Xr-znone 2znone 3))r/rr:rrBr0whererCr1rrallfailcloserowcount)r=r3rArDr4rrr>s r$test_non_rowcount_scenarios_no_raisez1RowCountTest.test_non_rowcount_scenarios_no_raiseKs ++//%&&11   ""&&(..zS/@As#A  ""&&(..zS/@As#A  ""&&($&L$&L$&LA  !!&&(9(9(D(DeO%%00C78 ""1%A EEG NN   GGIzzW$$$rc|jj}|jj}|j |j j |dk(ddi}|jdk(sJy)Nr*rrFrL)r/rr:rr0rBrMrQr=r3r4rrRs rtest_update_rowcount1z"RowCountTest.test_update_rowcount1vsj++//%&&11     " " $ * *:+< = 3  zzQrc|jj}|jj}|j |j j |dk(ddi}t|jdy)Nr*rrL) r/rr:rr0rBrMr rQrUs rtest_update_rowcount2z"RowCountTest.test_update_rowcount2sh++//%&&11     " " $ * *:+< = 3   AJJrimplicit_returningdmlrBrCc |r|jj}nPtdtt dt ddt dt dt dt d d }|jj}|jrX|jj|d k(j|jjd z j}nM|jr1|jj|d k(j}n|j|j}t!|j"dy)znote this test should succeed for all RETURNING backends as of 2.0. In Idf28379f8705e403a3c6a937f6a798a042ef2540 we changed rowcount to use len(rows) when we have implicit returning rrFTrrrrr)rYr*rF)rrLN)r/rr rrrrr:rrBrMvaluesreturn_defaultsrCrOr0r rQ)r=r3rYrZr4rstmtrRs r+test_update_delete_rowcount_return_defaultsz8RowCountTest.test_update_delete_rowcount_return_defaultss$ "kk33O# !"' $  vvbz*|VAY/#( O%&&11 ::&&(zS()_..99C?@ "  ZZ&&(zS() "  HHJ   t $ AJJrcR|jd}t|jdyNz8update employees set department='Z' where department='C'rL)exec_driver_sqlr rQr=r3results rtest_raw_sql_rowcountz"RowCountTest.test_raw_sql_rowcounts%++ F  FOOQrcd|jtd}t|jdyra)r0r r rQrcs rtest_text_rowcountzRowCountTest.test_text_rowcounts+## K L  FOOQrc|jj}|jj}|j |j j |dk(}t|jdy)Nr*rL) r/rr:rr0rCrMr rQrUs rtest_delete_rowcountz!RowCountTest.test_delete_rowcounts`++//%&&11     " " $ * *:+< =  AJJrc0|jj}|jj|jj t dk(jd}|j|ddiddiddig}t|jdy)Nemp_namer*)rr%r+ nonexistent) r/rrBrMr:rrr\r0r rQr=r3r4r^rRs rtest_multi_update_rowcountz'RowCountTest.test_multi_update_rowcounts++//  " " $ U?$$))Yz-BB C VsV #    U#Y']+   AJJrc|jj}|jj|jj t dk(}|j|ddiddiddig}t|jdy)Nrkr%r+rlrm) r/rrCrMr:rrr0r rQrns rtest_multi_delete_rowcountz'RowCountTest.test_multi_delete_rowcounts++//%%'--    " "i &; ;     U#Y']+   AJJrN)__name__ __module__ __qualname____doc__ __requires__ __backend__ classmethodrr8r@r variationrSrVrXrequiresupdate_returningdelete_returningr_rergrisane_multi_rowcountrorqrrrrsB%%LK      ,W{$LMW}tUm4'%5N'%R  W+dE];W w''88 9 w''88 9 .<.`   ))*& ))*rrN) sqlalchemyrrrrrrr r r sqlalchemy.testingr r TablesTestrr~rrrs<!"'l8&&lr