a cæh®Gã@s ddlZddlZddlZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zd d!„ZGd"d#„d#ƒZGd$d%„d%ƒZGd&d'„d'ƒZGd(d)„d)ƒZGd*d+„d+ƒZGd,d-„d-ƒZGd.d/„d/ƒZGd0d1„d1ƒZGd2d3„d3ƒZGd4d5„d5ejƒZGd6d7„d7ejƒZGd8d9„d9ejƒZ Gd:d;„d;e ƒZ!Gdd?„d?e ƒZ#d@dA„Z$dBdC„Z%e&dDkrœe%ƒdS)EéNcCsdS)NÚfoo©rrrú;/opt/imh-python/lib/python3.9/sqlite3/test/userfunctions.pyÚfunc_returntextsrcCsdS)Nú12rrrrrÚfunc_returntextwithnullsrcCsdS)NÚbarrrrrrÚfunc_returnunicode sr cCsdS©Né*rrrrrÚfunc_returnint"sr cCsdS)Nç…ëQ¸ @rrrrrÚfunc_returnfloat$srcCsdS©NrrrrrÚfunc_returnnull&srcCsdS)NóblobrrrrrÚfunc_returnblob(srcCsdS©NìrrrrrÚfunc_returnlonglong*srcCs dddS©NérrrrrrÚfunc_raiseexception,srcCs t|ƒtuSr)ÚtypeÚstr©ÚvrrrÚ func_isstring/srcCs t|ƒtuSr)rÚintrrrrÚ func_isint1srcCs t|ƒtuSr)rÚfloatrrrrÚ func_isfloat3sr!cCst|ƒtdƒuSr)rrrrrÚ func_isnone5sr"cCst|ttfƒSr)Ú isinstanceÚbytesÚ memoryviewrrrrÚ func_isblob7sr&cCst|tƒo|dkSr)r#rrrrrÚfunc_islonglong9sr'cGst|ƒSr)Úlen)ÚargsrrrÚfunc<sr*c@seZdZdd„Zdd„ZdS)Ú AggrNoStepcCsdSrr©ÚselfrrrÚ__init__@szAggrNoStep.__init__cCsdS©Nérr,rrrÚfinalizeCszAggrNoStep.finalizeN)Ú__name__Ú __module__Ú __qualname__r.r1rrrrr+?sr+c@seZdZdd„Zdd„ZdS)ÚAggrNoFinalizecCsdSrrr,rrrr.GszAggrNoFinalize.__init__cCsdSrr©r-ÚxrrrÚstepJszAggrNoFinalize.stepN)r2r3r4r.r8rrrrr5Fsr5c@s$eZdZdd„Zdd„Zdd„ZdS)ÚAggrExceptionInInitcCs dddSrrr,rrrr.NszAggrExceptionInInit.__init__cCsdSrrr6rrrr8QszAggrExceptionInInit.stepcCsdSrrr,rrrr1TszAggrExceptionInInit.finalizeN©r2r3r4r.r8r1rrrrr9Msr9c@s$eZdZdd„Zdd„Zdd„ZdS)ÚAggrExceptionInStepcCsdSrrr,rrrr.XszAggrExceptionInStep.__init__cCs dddSrrr6rrrr8[szAggrExceptionInStep.stepcCsdSr rr,rrrr1^szAggrExceptionInStep.finalizeNr:rrrrr;Wsr;c@s$eZdZdd„Zdd„Zdd„ZdS)ÚAggrExceptionInFinalizecCsdSrrr,rrrr.bsz AggrExceptionInFinalize.__init__cCsdSrrr6rrrr8eszAggrExceptionInFinalize.stepcCs dddSrrr,rrrr1hsz AggrExceptionInFinalize.finalizeNr:rrrrr<asr<c@s$eZdZdd„Zdd„Zdd„ZdS)Ú AggrCheckTypecCs d|_dSr©Úvalr,rrrr.lszAggrCheckType.__init__cCs.ttttdƒtdœ}t||t|ƒuƒ|_dS©N)rrr ÚNoneZblob©rrr rr$r?)r-Ú whichTyper?ÚtheTyperrrr8os ÿzAggrCheckType.stepcCs|jSrr>r,rrrr1tszAggrCheckType.finalizeNr:rrrrr=ksr=c@s$eZdZdd„Zdd„Zdd„ZdS)ÚAggrCheckTypescCs d|_dS)Nrr>r,rrrr.xszAggrCheckTypes.__init__cGs@ttttdƒtdœ}|D]"}|jt||t|ƒuƒ7_qdSr@rB)r-rCZvalsrDr?rrrr8{s  ÿzAggrCheckTypes.stepcCs|jSrr>r,rrrr1szAggrCheckTypes.finalizeNr:rrrrrEwsrEc@s$eZdZdd„Zdd„Zdd„ZdS)ÚAggrSumcCs d|_dS)Nçr>r,rrrr.…szAggrSum.__init__cCs|j|7_dSrr>)r-r?rrrr8ˆsz AggrSum.stepcCs|jSrr>r,rrrr1‹szAggrSum.finalizeNr:rrrrrF„srFc@s$eZdZdd„Zdd„Zdd„ZdS)ÚAggrTextcCs d|_dS)NÚ©Útxtr,rrrr.szAggrText.__init__cCs|j||_dSrrJ)r-rKrrrr8‘sz AggrText.stepcCs|jSrrJr,rrrr1“szAggrText.finalizeNr:rrrrrHŽsrHc@seZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Ze ejd)kd*¡d+d,„ƒZe ejd)kd*¡d-d.„ƒZe ejd)kd/¡d0d1„ƒZd2d3„Zd4S)5Ú FunctionTestscCst d¡|_|j ddt¡|j ddt¡|j ddt¡|j ddt¡|j ddt¡|j ddt ¡|j d dt ¡|j d dt ¡|j d dt ¡|j d d t ¡|j dd t¡|j dd t¡|j dd t¡|j dd t¡|j dd t¡|j ddt¡|j d¡dS)Nú:memory:Z returntextrZreturntextwithnullZ returnunicodeZ returnintZ returnfloatZ returnnullZ returnblobZreturnlonglongZraiseexceptionÚisstringr0ZisintZisfloatZisnoneZisblobZ islonglongZspaméÿÿÿÿzcreate table test(t text))ÚsqliteÚconnectÚconÚcreate_functionrrr r rrrrrrrr!r"r&r'r*Úexecuter,rrrÚsetUp˜s$ zFunctionTests.setUpcCs|j ¡dSr)rRÚcloser,rrrÚtearDown®szFunctionTests.tearDowncCsD| tj¡$|j dddd„¡Wdƒn1s60YdS)NÚblaéœÿÿÿcSsd|S)Nér)r7rrrÚ³óz6FunctionTests.CheckFuncErrorOnCreate..)Ú assertRaisesrPÚOperationalErrorrRrSr,rrrÚCheckFuncErrorOnCreate±sz$FunctionTests.CheckFuncErrorOnCreatecCs@dd„}|ƒ}|tƒd<|j dd|¡|j ¡}| d¡dS)NcSs dd„}|S)NcSsdSr/rrrrrÚf·sz;FunctionTests.CheckFuncRefCount..getfunc..fr)r`rrrÚgetfunc¶sz0FunctionTests.CheckFuncRefCount..getfuncrZreftestrzselect reftest())ÚglobalsrRrSÚcursorrT)r-rar`ÚcurrrrÚCheckFuncRefCountµs   zFunctionTests.CheckFuncRefCountcCs@|j ¡}| d¡| ¡d}| t|ƒt¡| |d¡dS)Nzselect returntext()rr©rRrcrTÚfetchoneÚ assertEqualrr©r-rdr?rrrÚCheckFuncReturnTextÁs    z!FunctionTests.CheckFuncReturnTextcCs<|j ¡}| d¡ ¡d}| t|ƒt¡| |d¡dS)Nzselect returntextwithnull()rrrf)r-rdÚresrrrÚCheckFuncReturnTextWithNullCharÈs z-FunctionTests.CheckFuncReturnTextWithNullCharcCs@|j ¡}| d¡| ¡d}| t|ƒt¡| |d¡dS)Nzselect returnunicode()rrrfrirrrÚCheckFuncReturnUnicodeÎs    z$FunctionTests.CheckFuncReturnUnicodecCs@|j ¡}| d¡| ¡d}| t|ƒt¡| |d¡dS)Nzselect returnint()rr )rRrcrTrgrhrrrirrrÚCheckFuncReturnIntÕs    z FunctionTests.CheckFuncReturnIntcCsN|j ¡}| d¡| ¡d}| t|ƒt¡|dks@|dkrJ| d¡dS)Nzselect returnfloat()rgé&1¬ @gTã¥›Ä @z wrong value)rRrcrTrgrhrr ÚfailrirrrÚCheckFuncReturnFloatÜs    z"FunctionTests.CheckFuncReturnFloatcCsD|j ¡}| d¡| ¡d}| t|ƒtdƒ¡| |d¡dS)Nzselect returnnull()r)rRrcrTrgrhrrirrrÚCheckFuncReturnNulläs    z!FunctionTests.CheckFuncReturnNullcCs@|j ¡}| d¡| ¡d}| t|ƒt¡| |d¡dS)Nzselect returnblob()rr)rRrcrTrgrhrr$rirrrÚCheckFuncReturnBlobës    z!FunctionTests.CheckFuncReturnBlobcCs0|j ¡}| d¡| ¡d}| |d¡dS)Nzselect returnlonglong()rr©rRrcrTrgrhrirrrÚCheckFuncReturnLongLongòs   z%FunctionTests.CheckFuncReturnLongLongcCs^|j ¡}| tj¡"}| d¡| ¡Wdƒn1s>0Y| t|j ƒd¡dS)Nzselect raiseexception()z&user-defined function raised exception© rRrcr]rPr^rTrgrhrÚ exception©r-rdÚcmrrrÚCheckFuncExceptionøs   &z FunctionTests.CheckFuncExceptionc Csp|j ¡}dtƒfD]V}|j|d6| d|f¡| ¡d}| |d¡Wdƒq1s`0YqdS)Nr)Útextzselect isstring(?)rr0)rRrcrÚsubTestrTrgrh)r-rdrzr?rrrÚCheckParamStringÿs   zFunctionTests.CheckParamStringcCs2|j ¡}| dd¡| ¡d}| |d¡dS)Nzselect isint(?)©r rr0rsrirrrÚ CheckParamInts   zFunctionTests.CheckParamIntcCs2|j ¡}| dd¡| ¡d}| |d¡dS)Nzselect isfloat(?)©r rr0rsrirrrÚCheckParamFloat s   zFunctionTests.CheckParamFloatcCs2|j ¡}| dd¡| ¡d}| |d¡dS)Nzselect isnone(?)rrr0rsrirrrÚCheckParamNones   zFunctionTests.CheckParamNonecCs8|j ¡}| dtdƒf¡| ¡d}| |d¡dS)Nzselect isblob(?)rrr0©rRrcrTr%rgrhrirrrÚCheckParamBlobs  zFunctionTests.CheckParamBlobcCs2|j ¡}| dd¡| ¡d}| |d¡dS)Nzselect islonglong(?))lrr0rsrirrrÚCheckParamLongLongs   z FunctionTests.CheckParamLongLongcCs2|j ¡}| dd¡| ¡d}| |d¡dS)Nzselect spam(?, ?))r0rZrrZrsrirrrÚCheckAnyArguments%s   zFunctionTests.CheckAnyArguments)éér†zRequires SQLite 3.8.3 or highercCs„tjjdd}|jjdd|ddtjdkrH|j d¡| |j d¡n8|  tj ¡|j d ¡Wdƒn1sv0YdS) N©Z return_valueZnondeterministicrF©Ú deterministic©r†érz.select nondeterministic() = nondeterministic()rZz>create index t on test(t) where nondeterministic() is not null) ÚunittestÚmockÚMockrRrSrPÚsqlite_version_inforTrhÚ call_countr]r^©r-rŽrrrÚCheckFuncNonDeterministic2s  z'FunctionTests.CheckFuncNonDeterministiccCs|tjjdd}|jjdd|ddtjdkrH|j d¡| |j d¡n0z|j d ¡Wntj yv|  d ¡Yn0dS) NrˆrŠrTr‰r‹z(select deterministic() = deterministic()r0z;create index t on test(t) where deterministic() is not nullz/Unexpected failure while creating partial index) rrŽrrRrSrPrrTrhr‘r^ror’rrrÚCheckFuncDeterministic=s  z$FunctionTests.CheckFuncDeterministiczSQLite < 3.8.3 neededcCsD| tj¡$|jjddtddWdƒn1s60YdS)NrŠrTr‰)r]rPZNotSupportedErrorrRrSrr,rrrÚ"CheckFuncDeterministicNotSupportedJsz0FunctionTests.CheckFuncDeterministicNotSupportedcCs@| t¡"|j ddtd¡Wdƒn1s20YdS)NrŠrT)r]Ú TypeErrorrRrSrr,rrrÚ!CheckFuncDeterministicKeywordOnlyOs z/FunctionTests.CheckFuncDeterministicKeywordOnlyN)r2r3r4rUrWr_rerjrlrmrnrprqrrrtryr|r~r€rrƒr„r…rZskipIfrPrr“r”r•r—rrrrrL—s6     rLc@sŒeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!S)"ÚAggregateTestsc CsÎt d¡|_|j ¡}| d¡| dddddtdƒf¡|j dd t¡|j d d t¡|j d d t ¡|j d d t ¡|j d d t ¡|j ddt ¡|j ddt ¡|j dd t¡|j dd t¡dS)NrMz´ create table test( t text, i integer, f float, n, b blob ) z6insert into test(t, i, f, n, b) values (?, ?, ?, ?, ?)rrr rZnostepr0Z nofinalizeZexcInitZexcStepZ excFinalizeZ checkTyperZZ checkTypesrOZmysumZaggtxt)rPrQrRrcrTr%Zcreate_aggregater+r5r9r;r<r=rErFrH)r-rdrrrrUUs   ÿzAggregateTests.setUpcCsdSrrr,rrrrWnszAggregateTests.tearDowncCs@| tj¡ |j ddt¡Wdƒn1s20YdS)NrXrY)r]rPr^rRrSrFr,rrrÚCheckAggrErrorOnCreatessz%AggregateTests.CheckAggrErrorOnCreatecCsT|j ¡}| t¡}| d¡Wdƒn1s40Y| t|jƒd¡dS)Nzselect nostep(t) from testz+'AggrNoStep' object has no attribute 'step')rRrcr]ÚAttributeErrorrTrhrrvrwrrrÚCheckAggrNoStepws  (zAggregateTests.CheckAggrNoStepcCsb|j ¡}| tj¡&}| d¡| ¡d}Wdƒn1sB0Y| t|j ƒd¡dS)Nzselect nofinalize(t) from testrú7user-defined aggregate's 'finalize' method raised errorru©r-rdrxr?rrrÚCheckAggrNoFinalize}s   *z"AggregateTests.CheckAggrNoFinalizecCsb|j ¡}| tj¡&}| d¡| ¡d}Wdƒn1sB0Y| t|j ƒd¡dS)Nzselect excInit(t) from testrz7user-defined aggregate's '__init__' method raised errorrurrrrÚCheckAggrExceptionInInit„s   *z'AggregateTests.CheckAggrExceptionInInitcCsb|j ¡}| tj¡&}| d¡| ¡d}Wdƒn1sB0Y| t|j ƒd¡dS)Nzselect excStep(t) from testrz3user-defined aggregate's 'step' method raised errorrurrrrÚCheckAggrExceptionInStep‹s   *z'AggregateTests.CheckAggrExceptionInStepcCsb|j ¡}| tj¡&}| d¡| ¡d}Wdƒn1sB0Y| t|j ƒd¡dS)Nzselect excFinalize(t) from testrrœrurrrrÚCheckAggrExceptionInFinalize’s   *z+AggregateTests.CheckAggrExceptionInFinalizecCs8|j ¡}| ddtƒf¡| ¡d}| |d¡dS)Nzselect checkTypes('str', ?, ?)rrrZ)rRrcrTrrgrhrirrrÚCheckAggrCheckParamStr™s  z%AggregateTests.CheckAggrCheckParamStrcCs2|j ¡}| dd¡| ¡d}| |d¡dS)Nzselect checkType('int', ?)r}rr0rsrirrrÚCheckAggrCheckParamIntŸs   z%AggregateTests.CheckAggrCheckParamIntcCs2|j ¡}| dd¡| ¡d}| |d¡dS)Nzselect checkTypes('int', ?, ?))r érrZrsrirrrÚCheckAggrCheckParamsInt¥s   z&AggregateTests.CheckAggrCheckParamsIntcCs2|j ¡}| dd¡| ¡d}| |d¡dS)Nzselect checkType('float', ?)rrr0rsrirrrÚCheckAggrCheckParamFloat«s   z'AggregateTests.CheckAggrCheckParamFloatcCs2|j ¡}| dd¡| ¡d}| |d¡dS)Nzselect checkType('None', ?)rrr0rsrirrrÚCheckAggrCheckParamNone±s   z&AggregateTests.CheckAggrCheckParamNonecCs8|j ¡}| dtdƒf¡| ¡d}| |d¡dS)Nzselect checkType('blob', ?)rrr0r‚rirrrÚCheckAggrCheckParamBlob·s  z&AggregateTests.CheckAggrCheckParamBlobcCsJ|j ¡}| d¡| dgd¢¡| d¡| ¡d}| |d¡dS)Nzdelete from testzinsert into test(i) values (?)))é )é)ézselect mysum(i) from testré<)rRrcrTZ executemanyrgrhrirrrÚCheckAggrCheckAggrSum½s     z$AggregateTests.CheckAggrCheckAggrSumc Csj|j ¡}dD]V}|j|d6| d|f¡| ¡d}| ||¡Wdƒq1sZ0YqdS)N)rrrJzselect aggtxt(?) from testr)rRrcr{rTrgrh)r-rdrKr?rrrÚ CheckAggrTextÅs   zAggregateTests.CheckAggrTextN)r2r3r4rUrWr™r›ržrŸr r¡r¢r£r¥r¦r§r¨r­r®rrrrr˜Ts r˜c@s8eZdZedd„ƒZdd„Zdd„Zdd„Zd d „Zd S) ÚAuthorizerTestscCs,|tjkrtjS|dks |dkr&tjStjS©NÚc2Út2)rPÚ SQLITE_SELECTZ SQLITE_DENYÚ SQLITE_OK©ÚactionZarg1Zarg2ZdbnameÚsourcerrrÚ authorizer_cbÏs  zAuthorizerTests.authorizer_cbcCs6t d¡|_|j d¡|j d¡|j |j¡dS)NrMz¿ create table t1 (c1, c2); create table t2 (c1, c2); insert into t1 (c1, c2) values (1, 2); insert into t2 (c1, c2) values (4, 5); zselect c2 from t2)rPrQrRZ executescriptrTZset_authorizerr¸r,rrrrU×s   zAuthorizerTests.setUpcCsdSrrr,rrrrWåszAuthorizerTests.tearDowncCsN| tj¡}|j d¡Wdƒn1s.0Y| dt|jƒ¡dS)Nzselect * from t2Ú prohibited©r]rPZ DatabaseErrorrRrTZassertInrrv©r-rxrrrÚtest_table_accessès*z!AuthorizerTests.test_table_accesscCsN| tj¡}|j d¡Wdƒn1s.0Y| dt|jƒ¡dS)Nzselect c2 from t1r¹rºr»rrrÚtest_column_accessís*z"AuthorizerTests.test_column_accessN) r2r3r4Ú staticmethodr¸rUrWr¼r½rrrrr¯Îs  r¯c@seZdZedd„ƒZdS)ÚAuthorizerRaiseExceptionTestscCs(|tjkrt‚|dks|dkr"t‚tjSr°)rPr³Ú ValueErrorr´rµrrrr¸ós  z+AuthorizerRaiseExceptionTests.authorizer_cbN©r2r3r4r¾r¸rrrrr¿òsr¿c@seZdZedd„ƒZdS)ÚAuthorizerIllegalTypeTestscCs(|tjkrdS|dks|dkr"dStjS)NrGr±r²©rPr³r´rµrrrr¸üs  z(AuthorizerIllegalTypeTests.authorizer_cbNrÁrrrrrÂûsrÂc@seZdZedd„ƒZdS)ÚAuthorizerLargeIntegerTestscCs(|tjkrdS|dks|dkr"dStjS)Nlr±r²rÃrµrrrr¸s  z)AuthorizerLargeIntegerTests.authorizer_cbNrÁrrrrrÄsrÄc CsJt td¡}t td¡}t t¡}t |||t t¡t t¡t t¡f¡S)NZCheck) rZ makeSuiterLr˜r¯Z TestSuiter¿rÂrÄ)Zfunction_suiteZaggregate_suiteZauthorizer_suiterrrÚsuites   úrÅcCst ¡}| tƒ¡dSr)rZTextTestRunnerÚrunrÅ)ZrunnerrrrÚtestsrÇÚ__main__)'rZ unittest.mockZsqlite3rPrrr r rrrrrrrr!r"r&r'r*r+r5r9r;r<r=rErFrHZTestCaserLr˜r¯r¿rÂrÄrÅrÇr2rrrrÚsL       >z$