6
0
mirror of https://github.com/FirebirdSQL/firebird-qa.git synced 2025-01-23 05:53:06 +01:00
firebird-qa/tests/bugs/core_2238_test.py

68 lines
27 KiB
Python
Raw Normal View History

2021-04-26 20:07:00 +02:00
#coding:utf-8
#
# id: bugs.core_2238
# title: UTF8 and large varchar fields, is disinct from > Implementation limit exceeded.
# decription:
# Test operates with literals of utf8 charset with length = exactly 8191 symbols.
# We insert such literal and then try to update table with another string which differs only in last character.
# Confirmed exception on 2.5:
# statement failed, sqlstate = 54000
# dynamic sql error
# -sql error code = -204
# -implementation limit exceeded
# -block size exceeds implementation restriction
#
# tracker_id: CORE-2238
# min_versions: ['3.0']
# versions: 3.0
# qmid: None
import pytest
from firebird.qa import db_factory, isql_act, Action
# version: 3.0
# resources: None
substitutions_1 = []
init_script_1 = """"""
db_1 = db_factory(charset='UTF8', sql_dialect=3, init=init_script_1)
test_script_1 = """
set bail on;
create domain dm_long_utf8 as varchar(8191) character set utf8;
create table test (long_text dm_long_utf8);
commit;
set count on;
-- Length of this literal is exact 8191 characters:
insert into test(long_text)
values(
'Kaikki neuvon-antajat ja etevimmät päälliköt ja mollat ja imamit ja kadit ja kaupungin päähenkilöt olivat suuresti hämmästyksissään. Hänen tunnettu hurskautensa vaati kaikkia äänettömyyteen, sillä välin kuin hän itse lausui pitkän rukouksen, pyytäen Allah''ta ja Profeettaa hämmentämään kaikkia häväiseviä Juutalaisia ja uskottomia ja vuodattamaan totuuden sanoja jumalisten ihmisten suuhun. Ja nyt kunnian-arvoisa sheiki kutsui esiin kaikki todistajat David Alroy''ta vastaan. Heti Kisloch, Kurdilainen, joka oli koroitettu Bagdadin kadiksi, astui esiin, veti sametti-kukkarostansa paperikääryn ja luki semmoisen todistuksen, jossa arvoisa Kisloch vakuutti, että hän ensin tutustui vangin, David Alroy''n kanssa joissakin erämaan raunioissa -- muutamain rosvojen pesässä, joita Alroy johdatti; että hän, Kisloch, oli rehellinen kauppias ja että nämät konnat olivat ryöstäneet hänen karavaninsa ja hän itse joutunut vankeuteen; että hänen vankeutensa toisena yönä Alroy oli ilmestynyt hänen eteensä leijonan muodossa ja kolmantena tuimasilmäisenä härkänä; että hänen oli tapa alinomaa muuttaa itsensä; että hän usein nosti henkiä; että viimein eräänä kauheana yönä Eblis itse tuli suurella juhlasaatolla ja antoi Alroy''lle Salomonin, Davidin pojan valtikan; ja että tämä seuraavana päivänä kohotti lippunsa ja kohta sen jälkeen kukisti Hassan Subah''n ja tämän Seldshukit useitten hirmuisten paholaisten silminnähtävällä avulla. Kalidaan, Indialaisen, Guebriläisen ja Neekerin ja muutamien muitten saman hengen lapsien todistukset vetivät täysin määrin vertoja Kisloch Kurdilaisen uhkealle kertomukselle. Hebrealaisen valloittajan vastustamaton menestys oli kieltämättömällä tavalla selitetty, Mahomettilaisten aseitten kunnia ja Moslemin uskon puhtaus olivat asetetut jälleen entiseen loistoonsa ja saastuttamattomaan maineesensa. Todeksi saatiin, että David Alroy oli Ebliin lapsi, noitamies, taikakalujen ja myrkkyjen käyttäjä. Kansa kuunteli kauhulla ja harmilla. He olisivat tunkeneet vartiaväen läpitse ja repineet hänet kappaleiksi, jolleivät olisi pelänneet Karamanialaisten sotatapparoita. Niin he lohduttivat mieltänsä sillä, että he ennen pitkää saisivat nähdä hänen kidutuksensa. Bagdadin kadi kumarsi Karamanian kuningasta ja kuiskasi soveliaan matkan päästä jotakin kuninkaalliseen korvaan. Torvet kaikkuivat, kuuluttajat vaativat äänettömyyttä ja kuninkaan huulet liikkuivat taas. "Kuule, oi kansa, ja ole viisas. Pääkadi aikoo nyt lukea kuninkaallisen prinsessan Schirenen, noiturin etevimmän uhrin todistuksen." Ja todistus luettiin, joka vakuutti, että David Alroy omisti ja kantoi lähinnä sydäntänsä erästä talismania, jonka Eblis oli antanut hänelle ja jonka voima oli niin suuri, että, jos sitä kerta painettiin naisen rintaa vastaan, tämä ei enää voinut hallita tahtoansa. Tämmöinen kova onni oli kohdannut oikeauskoisten hallitsian tytärtä. "Onko siinä niin kirjoitettu?" vanki kysyi. "On", kadi vastasi, "ja sen alla on vielä prinsessan kuninkaallinen allekirjoitus." "Se on väärennetty." Karamanian kuningas kavahti valta-istuimeltansa ja oli vihoissansa astumallaan sen portaita alas. Hänen kasvonsa olivat veripunaiset, hänen partansa kuin tulen liekki. Joku lempiministeri rohkeni vienosti pidättää häntä hänen kuninkaallisesta vaipastansa. "Tapa paikalla pois se koira", Karamanian kuningas mutisi. "Prinsessa on itse täällä", lausui kadi, "todistamassa niitä noitakeinoja, joitten alaisena hän oli, vaan joitten vaikutuksesta hän nyt Allah''n ja Profeetan voiman kautta on pääsnyt." Alroy''ta vävähti! "Astu esiin, kuninkaallinen prinsessa", kadi sanoi, "ja jos se todistus, jonka kuulit, on perustettu, nosta ylös se kuninkaallinen käsi, joka koristi sen allekirjoituksellaan." Lähellä valta-istuinta oleva eunukkien joukko teki tilaa; naishaamu, joka oli verhottu hunnulla jalkoihin saakka, astui esiin. Hän nosti ylös kätensä; koko kerääntynyt kansa tuskin hengitti miel
);
insert into test(long_text)
values(
'Kaikki neuvon-antajat ja etevimmät päälliköt ja mollat ja imamit ja kadit ja kaupungin päähenkilöt olivat suuresti hämmästyksissään. Hänen tunnettu hurskautensa vaati kaikkia äänettömyyteen, sillä välin kuin hän itse lausui pitkän rukouksen, pyytäen Allah''ta ja Profeettaa hämmentämään kaikkia häväiseviä Juutalaisia ja uskottomia ja vuodattamaan totuuden sanoja jumalisten ihmisten suuhun. Ja nyt kunnian-arvoisa sheiki kutsui esiin kaikki todistajat David Alroy''ta vastaan. Heti Kisloch, Kurdilainen, joka oli koroitettu Bagdadin kadiksi, astui esiin, veti sametti-kukkarostansa paperikääryn ja luki semmoisen todistuksen, jossa arvoisa Kisloch vakuutti, että hän ensin tutustui vangin, David Alroy''n kanssa joissakin erämaan raunioissa -- muutamain rosvojen pesässä, joita Alroy johdatti; että hän, Kisloch, oli rehellinen kauppias ja että nämät konnat olivat ryöstäneet hänen karavaninsa ja hän itse joutunut vankeuteen; että hänen vankeutensa toisena yönä Alroy oli ilmestynyt hänen eteensä leijonan muodossa ja kolmantena tuimasilmäisenä härkänä; että hänen oli tapa alinomaa muuttaa itsensä; että hän usein nosti henkiä; että viimein eräänä kauheana yönä Eblis itse tuli suurella juhlasaatolla ja antoi Alroy''lle Salomonin, Davidin pojan valtikan; ja että tämä seuraavana päivänä kohotti lippunsa ja kohta sen jälkeen kukisti Hassan Subah''n ja tämän Seldshukit useitten hirmuisten paholaisten silminnähtävällä avulla. Kalidaan, Indialaisen, Guebriläisen ja Neekerin ja muutamien muitten saman hengen lapsien todistukset vetivät täysin määrin vertoja Kisloch Kurdilaisen uhkealle kertomukselle. Hebrealaisen valloittajan vastustamaton menestys oli kieltämättömällä tavalla selitetty, Mahomettilaisten aseitten kunnia ja Moslemin uskon puhtaus olivat asetetut jälleen entiseen loistoonsa ja saastuttamattomaan maineesensa. Todeksi saatiin, että David Alroy oli Ebliin lapsi, noitamies, taikakalujen ja myrkkyjen käyttäjä. Kansa kuunteli kauhulla ja harmilla. He olisivat tunkeneet vartiaväen läpitse ja repineet hänet kappaleiksi, jolleivät olisi pelänneet Karamanialaisten sotatapparoita. Niin he lohduttivat mieltänsä sillä, että he ennen pitkää saisivat nähdä hänen kidutuksensa. Bagdadin kadi kumarsi Karamanian kuningasta ja kuiskasi soveliaan matkan päästä jotakin kuninkaalliseen korvaan. Torvet kaikkuivat, kuuluttajat vaativat äänettömyyttä ja kuninkaan huulet liikkuivat taas. "Kuule, oi kansa, ja ole viisas. Pääkadi aikoo nyt lukea kuninkaallisen prinsessan Schirenen, noiturin etevimmän uhrin todistuksen." Ja todistus luettiin, joka vakuutti, että David Alroy omisti ja kantoi lähinnä sydäntänsä erästä talismania, jonka Eblis oli antanut hänelle ja jonka voima oli niin suuri, että, jos sitä kerta painettiin naisen rintaa vastaan, tämä ei enää voinut hallita tahtoansa. Tämmöinen kova onni oli kohdannut oikeauskoisten hallitsian tytärtä. "Onko siinä niin kirjoitettu?" vanki kysyi. "On", kadi vastasi, "ja sen alla on vielä prinsessan kuninkaallinen allekirjoitus." "Se on väärennetty." Karamanian kuningas kavahti valta-istuimeltansa ja oli vihoissansa astumallaan sen portaita alas. Hänen kasvonsa olivat veripunaiset, hänen partansa kuin tulen liekki. Joku lempiministeri rohkeni vienosti pidättää häntä hänen kuninkaallisesta vaipastansa. "Tapa paikalla pois se koira", Karamanian kuningas mutisi. "Prinsessa on itse täällä", lausui kadi, "todistamassa niitä noitakeinoja, joitten alaisena hän oli, vaan joitten vaikutuksesta hän nyt Allah''n ja Profeetan voiman kautta on pääsnyt." Alroy''ta vävähti! "Astu esiin, kuninkaallinen prinsessa", kadi sanoi, "ja jos se todistus, jonka kuulit, on perustettu, nosta ylös se kuninkaallinen käsi, joka koristi sen allekirjoituksellaan." Lähellä valta-istuinta oleva eunukkien joukko teki tilaa; naishaamu, joka oli verhottu hunnulla jalkoihin saakka, astui esiin. Hän nosti ylös kätensä; koko kerääntynyt kansa tuskin hengitti miel
);
update test set long_text = null
where long_text is distinct from
'Kaikki neuvon-antajat ja etevimmät päälliköt ja mollat ja imamit ja kadit ja kaupungin päähenkilöt olivat suuresti hämmästyksissään. Hänen tunnettu hurskautensa vaati kaikkia äänettömyyteen, sillä välin kuin hän itse lausui pitkän rukouksen, pyytäen Allah''ta ja Profeettaa hämmentämään kaikkia häväiseviä Juutalaisia ja uskottomia ja vuodattamaan totuuden sanoja jumalisten ihmisten suuhun. Ja nyt kunnian-arvoisa sheiki kutsui esiin kaikki todistajat David Alroy''ta vastaan. Heti Kisloch, Kurdilainen, joka oli koroitettu Bagdadin kadiksi, astui esiin, veti sametti-kukkarostansa paperikääryn ja luki semmoisen todistuksen, jossa arvoisa Kisloch vakuutti, että hän ensin tutustui vangin, David Alroy''n kanssa joissakin erämaan raunioissa -- muutamain rosvojen pesässä, joita Alroy johdatti; että hän, Kisloch, oli rehellinen kauppias ja että nämät konnat olivat ryöstäneet hänen karavaninsa ja hän itse joutunut vankeuteen; että hänen vankeutensa toisena yönä Alroy oli ilmestynyt hänen eteensä leijonan muodossa ja kolmantena tuimasilmäisenä härkänä; että hänen oli tapa alinomaa muuttaa itsensä; että hän usein nosti henkiä; että viimein eräänä kauheana yönä Eblis itse tuli suurella juhlasaatolla ja antoi Alroy''lle Salomonin, Davidin pojan valtikan; ja että tämä seuraavana päivänä kohotti lippunsa ja kohta sen jälkeen kukisti Hassan Subah''n ja tämän Seldshukit useitten hirmuisten paholaisten silminnähtävällä avulla. Kalidaan, Indialaisen, Guebriläisen ja Neekerin ja muutamien muitten saman hengen lapsien todistukset vetivät täysin määrin vertoja Kisloch Kurdilaisen uhkealle kertomukselle. Hebrealaisen valloittajan vastustamaton menestys oli kieltämättömällä tavalla selitetty, Mahomettilaisten aseitten kunnia ja Moslemin uskon puhtaus olivat asetetut jälleen entiseen loistoonsa ja saastuttamattomaan maineesensa. Todeksi saatiin, että David Alroy oli Ebliin lapsi, noitamies, taikakalujen ja myrkkyjen käyttäjä. Kansa kuunteli kauhulla ja harmilla. He olisivat tunkeneet vartiaväen läpitse ja repineet hänet kappaleiksi, jolleivät olisi pelänneet Karamanialaisten sotatapparoita. Niin he lohduttivat mieltänsä sillä, että he ennen pitkää saisivat nähdä hänen kidutuksensa. Bagdadin kadi kumarsi Karamanian kuningasta ja kuiskasi soveliaan matkan päästä jotakin kuninkaalliseen korvaan. Torvet kaikkuivat, kuuluttajat vaativat äänettömyyttä ja kuninkaan huulet liikkuivat taas. "Kuule, oi kansa, ja ole viisas. Pääkadi aikoo nyt lukea kuninkaallisen prinsessan Schirenen, noiturin etevimmän uhrin todistuksen." Ja todistus luettiin, joka vakuutti, että David Alroy omisti ja kantoi lähinnä sydäntänsä erästä talismania, jonka Eblis oli antanut hänelle ja jonka voima oli niin suuri, että, jos sitä kerta painettiin naisen rintaa vastaan, tämä ei enää voinut hallita tahtoansa. Tämmöinen kova onni oli kohdannut oikeauskoisten hallitsian tytärtä. "Onko siinä niin kirjoitettu?" vanki kysyi. "On", kadi vastasi, "ja sen alla on vielä prinsessan kuninkaallinen allekirjoitus." "Se on väärennetty." Karamanian kuningas kavahti valta-istuimeltansa ja oli vihoissansa astumallaan sen portaita alas. Hänen kasvonsa olivat veripunaiset, hänen partansa kuin tulen liekki. Joku lempiministeri rohkeni vienosti pidättää häntä hänen kuninkaallisesta vaipastansa. "Tapa paikalla pois se koira", Karamanian kuningas mutisi. "Prinsessa on itse täällä", lausui kadi, "todistamassa niitä noitakeinoja, joitten alaisena hän oli, vaan joitten vaikutuksesta hän nyt Allah''n ja Profeetan voiman kautta on pääsnyt." Alroy''ta vävähti! "Astu esiin, kuninkaallinen prinsessa", kadi sanoi, "ja jos se todistus, jonka kuulit, on perustettu, nosta ylös se kuninkaallinen käsi, joka koristi sen allekirjoituksellaan." Lähellä valta-istuinta oleva eunukkien joukko teki tilaa; naishaamu, joka oli verhottu hunnulla jalkoihin saakka, astui esiin. Hän nosti ylös kätensä; koko kerääntynyt kansa tuskin hengitti miel
;
2021-12-22 20:23:11 +01:00
"""
2021-04-26 20:07:00 +02:00
act_1 = isql_act('db_1', test_script_1, substitutions=substitutions_1)
expected_stdout_1 = """
Records affected: 1
Records affected: 1
Records affected: 1
2021-12-22 20:23:11 +01:00
"""
2021-04-26 20:07:00 +02:00
@pytest.mark.version('>=3.0')
2021-04-28 12:42:11 +02:00
def test_1(act_1: Action):
2021-04-26 20:07:00 +02:00
act_1.expected_stdout = expected_stdout_1
act_1.execute()
2021-12-22 20:23:11 +01:00
assert act_1.clean_stdout == act_1.clean_expected_stdout
2021-04-26 20:07:00 +02:00