6
0
mirror of https://github.com/FirebirdSQL/firebird-qa.git synced 2025-01-22 21:43:06 +01:00
firebird-qa/tests/bugs/core_3446_test.py

345 lines
19 KiB
Python

#coding:utf-8
"""
ID: issue-3807
ISSUE: 3807
TITLE: Allow conversion from/to BLOBs and others types in the API functions (XSQLVAR or blr messages)
DESCRIPTION:
We try to write varchar value into blob field and vice-versa, using execute statement
with parameters of corresp. types
JIRA: CORE-3446
FBTEST: bugs.core_3446
"""
import pytest
from firebird.qa import *
init_script = """
recreate table test( s varchar(8187) character set utf8 collate unicode_ci_ai, b blob sub_type 1 character set utf8 collate unicode_ci_ai);
commit;
insert into test (s, b )
values(
'Sur le boulevard Montmorency, au n° 53, s''élève une maison portant,
encastré dans son balcon, un profil lauré de Louis XV, en bronze
doré, qui a tout l''air d''être le médaillon, dont était décorée la
tribune de musique de la salle à manger de Luciennes, représenté dans
l''aquarelle de Moreau que l''on voit au Louvre. Cette tête, que quelques
promeneurs regardent d''un œil farouche, n''est point,--ai-je besoin de
le dire?--une affiche des opinions politiques du propriétaire, elle est
tout bonnement l''enseigne d''un des nids les plus pleins de choses du
XVIIIe siècle qui existent à Paris.
La porte noire, que surmonte un élégant dessus de grille de chapelle
jésuite en fer forgé, la porte ouverte, du bas de l''escalier, de
l''entrée du vestibule, du seuil de la maison, le visiteur est accueilli
par des terres cuites, des bronzes, des dessins, des porcelaines du
siècle aimable par excellence, mêlés à des objets de l''Extrême-Orient,
qui se trouvaient faire si bon ménage dans les collections de Madame de
Pompadour et de tous les _curieux_ et les _curiolets_ du temps.
La vie d''aujourd''hui est une vie de combattivité; elle demande dans
toutes les carrières une concentration, un effort, un travail, qui, en
son foyer enferment l''homme, dont l''existence n''est plus extérieure
comme au XVIIIe siècle, n''est plus papillonnante parmi la société
depuis ses dix-sept ans jusqu''à sa mort. De notre temps on va bien
encore dans le monde, mais toute la vie ne s''y dépense plus, et le
_chez-soi_ a cessé d''être l''hôtel garni où l''on ne faisait que coucher.
Dans cette vie assise au coin du feu, renfermée, sédentaire, la
créature humaine, et la première venue, a été poussée à vouloir les
quatre murs de son _home_ agréables, plaisants, amusants aux yeux; et
cet entour et ce décor de son intérieur, elle l''a cherché et trouvé
naturellement dans l''objet d''art pur ou dans l''objet d''art industriel,
plus accessible au goût de tous. Du même coup, ces habitudes moins
mondaines amenaient un amoindrissement du rôle de la femme dans la
pensée masculine; elle n''était plus pour nous l''occupation galante de
toute notre existence, cette occupation qui était autrefois la carrière
du plus grand nombre, et, à la suite de cette modification dans les
mœurs, il arrivait ceci: c''est que l''intérêt de l''homme, s''en allant
de l''être charmant, se reportait en grande partie sur les jolis objets
inanimés dont la passion revêt un peu de la nature et du caractère
de l''amour. Au XVIIIe siècle, il n''y a pas de _bibeloteurs_ jeunes:
c''est là la différence des deux siècles. Pour notre génération, la
_bricabracomanie_ n''est qu''un bouche-trou de la femme qui ne possède
plus l''imagination de l''homme, et j''ai fait à mon égard cette remarque,
que, lorsque par hasard mon cœur s''est trouvé occupé, l''objet d''art ne
m''était de rien.
Oui, cette passion devenue générale, ce plaisir solitaire, auquel se
livre presque toute une nation, doit son développement au vide, à
l''ennui du cœur, et aussi, il faut le reconnaître, à la tristesse
des jours actuels, à l''incertitude des lendemains, à l''enfantement,
les pieds devant, de la société nouvelle, à des soucis et à des
préoccupations qui poussent, comme à la veille d''un déluge, les désirs
et les envies à se donner la jouissance immédiate de tout ce qui les
charme, les séduit, les tente: l''oubli du moment dans l''assouvissement
artistique.
Ce sont ces causes, et incontestablement l''éducation de l''œil des
gens du XIXe siècle, et encore un sentiment tout nouveau, la tendresse
presque humaine pour les _choses_, qui font, à l''heure qu''il est, de
presque tout le monde, des collectionneurs et de moi en particulier le
plus passionné de tous les collectionneurs.
Un riant pavé en marbre blanc et en marbre rouge du Languedoc, avec,
pour revêtement aux murs et au plafond, un cuir moderne peuplé de
perroquets fantastiques dorés et peints sur un fond vert d''eau.
Sur ce cuir, dans un désordre cherché, dans un pittoresque
d''antichambre et d''atelier, toutes sortes de choses voyantes et
claquantes, de brillants cuivres découpés, des poteries dorées, des
broderies du Japon et encore des objets bizarres, inattendus, étonnant
par leur originalité, leur exotisme, et vis-à-vis d''un certain nombre
desquels je me fais un peu l''effet du bon Père Buffier quand il disait:
«Voilà des choses que je ne sais pas, il faut que je fasse un livre
dessus.»
Ça, une petite jardinière à suspension, fabriquée d''une coloquinte
excentrique, dont la tige tournante et recroquevillée est une tige de
bronze qui a la flexibilité d''une liane; cette grande planchette fruste
de bois, toute parcourue des tortils d''un feuillage de lierre, exécuté
en nacre et en écaille: le porte-éventail qui tient dans l''appartement
l''éventail ouvert contre le mur; cette petite boule de porcelaine
jaune impérial si délicatement treillagée: la cage au grillon ou à
la mouche bourdonnante, que le Chinois aime suspendre au chevet de
son lit; et cette plaque de faïence figurant une branche de pêcher en
fleur, modelée à jour dans un cadre de bois en forme d''écran, vous
représente la décoration de l''angle religieux et mystique d''une chambre
de prostituée de maison de thé, l''espèce de tableau d''autel devant
lequel elle place une fleur dans un vase.
Des broderies du Japon, ai-je dit plus haut, c''est là, dans leurs
cadres de bambous, la riche, la splendide, l''_éclairante_ décoration
des murs du vestibule et un peu de toute la maison. Ces carrés de soie
brodés appelés _fusha_ ou _foukousa_ font la chatoyante couverture
sous laquelle on a l''habitude, dans l''Empire du Lever du Soleil,
d''envoyer tout présent quelconque, et le plus minime, fût-il même de
deux œufs[1]. Les anciens _foukousas_ fabriqués à Kioto[2] sont des
produits d''un art tout particulier au Japon, et auxquels l''Europe
ne peut rien opposer: de la peinture, de vrais tableaux composés
et exécutés en soie par un brodeur, où sur les fonds aux adorables
nuances, et telles qu''en donne le satin ou le crêpe, un oiseau, un
poisson, une fleur se détache dans le haut relief d''une broderie.
Et rien là dedans du travail d''un art mécanique, du dessin bête de
vieille fille de nos broderies à nous, mais des silhouettes d''êtres
pleins de vie, avec leurs pattes d''oiseau d''un si grand style, avec
leurs nageoires de poisson d''un si puissant contournement. Quelquefois
des parties peintes, peintes à l''encre de Chine, s''associent de la
manière la plus heureuse à la broderie. Je connais, chez Mme Auguste
Sichel, une fusée de fleurs brodée dans un vase en sparterie peint ou
imprimé, qui est bien la plus harmonieuse chose qu''il soit possible
de voir. M. de Nittis a fait un écran, d''un admirable et singulier
carré, où deux grues, brodées en noir sur un fond rose saumoné, ont,
comme accompagnement et adoucissement de la broderie, des demi-teintes
doucement lavées d''encre de Chine sur l''étoffe enchanteresse. Et dans
ce vestibule, il y a, sur un fond lilas, des carpes nageant au milieu
de branchages de presle brodées en or, et dont le ventre apparaît comme
argenté par un reflet de bourbe: un effet obtenu par une réserve au
milieu du fond tout teinté et obscuré d''encre de Chine. Il est même un
certain nombre de foukousas absolument peints. J''ai coloriée, sur un
crêpe gris, dans l''orbe d''un soleil rouge comme du feu, l''échancrure
pittoresque d''un passage de sept grues, exécuté avec la science que les
Japonais possèdent du vol de l''échassier. J''ai encore, jetées sur un
fond maïs, sans aucun détail de terrain, deux grandes grues blanches,
à la petite crête rougie de vermillon, au cou, aux pattes, à la queue,
teintés d''encre de Chine. Et ne vous étonnez pas de rencontrer si
souvent sur les broderies la grue, cet oiseau qui apparaît dans le
haut du ciel aux Japonais comme un messager céleste, et qu''ils saluent
de l''appellation: _O Tsouri Sama_, Sa Seigneurie la Grue.
[1] Il n''est guère besoin de dire que le carré est toujours
rapporté à son maître par le porteur du présent.
[2] Les foukousas modernes seraient aujourd''hui fabriqués à
Togané, d''où on les expédierait à Yedo.
'
, -----------
'Sur le boulevard Montmorency, au n° 53, s''élève une maison portant,
encastré dans son balcon, un profil lauré de Louis XV, en bronze
doré, qui a tout l''air d''être le médaillon, dont était décorée la
tribune de musique de la salle à manger de Luciennes, représenté dans
l''aquarelle de Moreau que l''on voit au Louvre. Cette tête, que quelques
promeneurs regardent d''un œil farouche, n''est point,--ai-je besoin de
le dire?--une affiche des opinions politiques du propriétaire, elle est
tout bonnement l''enseigne d''un des nids les plus pleins de choses du
XVIIIe siècle qui existent à Paris.
La porte noire, que surmonte un élégant dessus de grille de chapelle
jésuite en fer forgé, la porte ouverte, du bas de l''escalier, de
l''entrée du vestibule, du seuil de la maison, le visiteur est accueilli
par des terres cuites, des bronzes, des dessins, des porcelaines du
siècle aimable par excellence, mêlés à des objets de l''Extrême-Orient,
qui se trouvaient faire si bon ménage dans les collections de Madame de
Pompadour et de tous les _curieux_ et les _curiolets_ du temps.
La vie d''aujourd''hui est une vie de combattivité; elle demande dans
toutes les carrières une concentration, un effort, un travail, qui, en
son foyer enferment l''homme, dont l''existence n''est plus extérieure
comme au XVIIIe siècle, n''est plus papillonnante parmi la société
depuis ses dix-sept ans jusqu''à sa mort. De notre temps on va bien
encore dans le monde, mais toute la vie ne s''y dépense plus, et le
_chez-soi_ a cessé d''être l''hôtel garni où l''on ne faisait que coucher.
Dans cette vie assise au coin du feu, renfermée, sédentaire, la
créature humaine, et la première venue, a été poussée à vouloir les
quatre murs de son _home_ agréables, plaisants, amusants aux yeux; et
cet entour et ce décor de son intérieur, elle l''a cherché et trouvé
naturellement dans l''objet d''art pur ou dans l''objet d''art industriel,
plus accessible au goût de tous. Du même coup, ces habitudes moins
mondaines amenaient un amoindrissement du rôle de la femme dans la
pensée masculine; elle n''était plus pour nous l''occupation galante de
toute notre existence, cette occupation qui était autrefois la carrière
du plus grand nombre, et, à la suite de cette modification dans les
mœurs, il arrivait ceci: c''est que l''intérêt de l''homme, s''en allant
de l''être charmant, se reportait en grande partie sur les jolis objets
inanimés dont la passion revêt un peu de la nature et du caractère
de l''amour. Au XVIIIe siècle, il n''y a pas de _bibeloteurs_ jeunes:
c''est là la différence des deux siècles. Pour notre génération, la
_bricabracomanie_ n''est qu''un bouche-trou de la femme qui ne possède
plus l''imagination de l''homme, et j''ai fait à mon égard cette remarque,
que, lorsque par hasard mon cœur s''est trouvé occupé, l''objet d''art ne
m''était de rien.
Oui, cette passion devenue générale, ce plaisir solitaire, auquel se
livre presque toute une nation, doit son développement au vide, à
l''ennui du cœur, et aussi, il faut le reconnaître, à la tristesse
des jours actuels, à l''incertitude des lendemains, à l''enfantement,
les pieds devant, de la société nouvelle, à des soucis et à des
préoccupations qui poussent, comme à la veille d''un déluge, les désirs
et les envies à se donner la jouissance immédiate de tout ce qui les
charme, les séduit, les tente: l''oubli du moment dans l''assouvissement
artistique.
Ce sont ces causes, et incontestablement l''éducation de l''œil des
gens du XIXe siècle, et encore un sentiment tout nouveau, la tendresse
presque humaine pour les _choses_, qui font, à l''heure qu''il est, de
presque tout le monde, des collectionneurs et de moi en particulier le
plus passionné de tous les collectionneurs.
Un riant pavé en marbre blanc et en marbre rouge du Languedoc, avec,
pour revêtement aux murs et au plafond, un cuir moderne peuplé de
perroquets fantastiques dorés et peints sur un fond vert d''eau.
Sur ce cuir, dans un désordre cherché, dans un pittoresque
d''antichambre et d''atelier, toutes sortes de choses voyantes et
claquantes, de brillants cuivres découpés, des poteries dorées, des
broderies du Japon et encore des objets bizarres, inattendus, étonnant
par leur originalité, leur exotisme, et vis-à-vis d''un certain nombre
desquels je me fais un peu l''effet du bon Père Buffier quand il disait:
«Voilà des choses que je ne sais pas, il faut que je fasse un livre
dessus.»
Ça, une petite jardinière à suspension, fabriquée d''une coloquinte
excentrique, dont la tige tournante et recroquevillée est une tige de
bronze qui a la flexibilité d''une liane; cette grande planchette fruste
de bois, toute parcourue des tortils d''un feuillage de lierre, exécuté
en nacre et en écaille: le porte-éventail qui tient dans l''appartement
l''éventail ouvert contre le mur; cette petite boule de porcelaine
jaune impérial si délicatement treillagée: la cage au grillon ou à
la mouche bourdonnante, que le Chinois aime suspendre au chevet de
son lit; et cette plaque de faïence figurant une branche de pêcher en
fleur, modelée à jour dans un cadre de bois en forme d''écran, vous
représente la décoration de l''angle religieux et mystique d''une chambre
de prostituée de maison de thé, l''espèce de tableau d''autel devant
lequel elle place une fleur dans un vase.
Des broderies du Japon, ai-je dit plus haut, c''est là, dans leurs
cadres de bambous, la riche, la splendide, l''_éclairante_ décoration
des murs du vestibule et un peu de toute la maison. Ces carrés de soie
brodés appelés _fusha_ ou _foukousa_ font la chatoyante couverture
sous laquelle on a l''habitude, dans l''Empire du Lever du Soleil,
d''envoyer tout présent quelconque, et le plus minime, fût-il même de
deux œufs[1]. Les anciens _foukousas_ fabriqués à Kioto[2] sont des
produits d''un art tout particulier au Japon, et auxquels l''Europe
ne peut rien opposer: de la peinture, de vrais tableaux composés
et exécutés en soie par un brodeur, où sur les fonds aux adorables
nuances, et telles qu''en donne le satin ou le crêpe, un oiseau, un
poisson, une fleur se détache dans le haut relief d''une broderie.
Et rien là dedans du travail d''un art mécanique, du dessin bête de
vieille fille de nos broderies à nous, mais des silhouettes d''êtres
pleins de vie, avec leurs pattes d''oiseau d''un si grand style, avec
leurs nageoires de poisson d''un si puissant contournement. Quelquefois
des parties peintes, peintes à l''encre de Chine, s''associent de la
manière la plus heureuse à la broderie. Je connais, chez Mme Auguste
Sichel, une fusée de fleurs brodée dans un vase en sparterie peint ou
imprimé, qui est bien la plus harmonieuse chose qu''il soit possible
de voir. M. de Nittis a fait un écran, d''un admirable et singulier
carré, où deux grues, brodées en noir sur un fond rose saumoné, ont,
comme accompagnement et adoucissement de la broderie, des demi-teintes
doucement lavées d''encre de Chine sur l''étoffe enchanteresse. Et dans
ce vestibule, il y a, sur un fond lilas, des carpes nageant au milieu
de branchages de presle brodées en or, et dont le ventre apparaît comme
argenté par un reflet de bourbe: un effet obtenu par une réserve au
milieu du fond tout teinté et obscuré d''encre de Chine. Il est même un
certain nombre de foukousas absolument peints. J''ai coloriée, sur un
crêpe gris, dans l''orbe d''un soleil rouge comme du feu, l''échancrure
pittoresque d''un passage de sept grues, exécuté avec la science que les
Japonais possèdent du vol de l''échassier. J''ai encore, jetées sur un
fond maïs, sans aucun détail de terrain, deux grandes grues blanches,
à la petite crête rougie de vermillon, au cou, aux pattes, à la queue,
teintés d''encre de Chine. Et ne vous étonnez pas de rencontrer si
souvent sur les broderies la grue, cet oiseau qui apparaît dans le
haut du ciel aux Japonais comme un messager céleste, et qu''ils saluent
de l''appellation: _O Tsouri Sama_, Sa Seigneurie la Grue.
[1] Il n''est guère besoin de dire que le carré est toujours
rapporté à son maître par le porteur du présent.
[2] Les foukousas modernes seraient aujourd''hui fabriqués à
Togané, d''où on les expédierait à Yedo.
'
);
commit;
"""
db = db_factory(init=init_script)
test_script = """
set list on;
set blob all;
set term ^;
execute block returns(s_new type of column test.s, b_new type of column test.b) as
declare v_char type of column test.s;
declare v_blob type of column test.b;
begin
select s, b from test rows 1 into v_char, v_blob;
execute statement ( 'select ''|'' || replace(s, :x_blob, '''') || ''|'' s_empty, ''|'' || replace( b, :x_char, '''') || ''|'' b_empty '
||' from test where s = :x_blob and b = :x_char'
-- ^ ^ ^ ^
-- char blob blob char
)
( x_char := v_char, x_blob := v_blob )
into s_new, b_new;
suspend;
end
^ set term ;^
-- 2.5.0:
-- Statement failed, SQLSTATE = 0A000
-- Dynamic SQL Error
-- -SQL error code = -303
-- -feature is not supported
-- -BLOB and array data types are not supported for move operation
-- 2.5.1 and 2.5.2: client crash, "INET/inet_error: connect errno = 10061"
-- 2.5.3 and later: works OK, but limit of varchar field is 8187 characters,
-- otherwise get exception:
-- Statement failed, SQLSTATE = 54000
-- Dynamic SQL Error
-- -SQL error code = -204
-- -Implementation limit exceeded
-- -block size exceeds implementation restriction
"""
act = isql_act('db', test_script, substitutions=[('B_NEW.*', '')])
expected_stdout = """
S_NEW ||
B_NEW 0:f
||
"""
@pytest.mark.version('>=3')
def test_1(act: Action):
act.expected_stdout = expected_stdout
act.execute()
assert act.clean_stdout == act.clean_expected_stdout