Hallo,
ich betreibe openSUSE 13.2 auf meinem Desktop-Rechner.
Das System erfährt über die automatische Aktualisierung regelmäßige Updates.
Auf dem Rechner betreibe ich seit vielen Jahren ein unter Qt entwickeltes und selbst geschriebenes Programm. Das funktioniert ebenso seit vielen Jahren einwandfrei. Ich mußte natürlich das Programm immer mal wieder auf eine andere Platform, eine neuere Qt-Version, eine neuere Version von openSUSE umziehen, aber das hat immer funktioniert.
Das Programm selbst liest gewisse Bildschirmeinstellungen aus einer MySql-Datenbank, weil sich damit geschmackliche Einstellungen schneller und besser anpassen lassen. Ich verwende dazu Qt-Stylesheets.
Am 09.12. kam über den Aktialisierungsdienst eine neue Version des Mariadb-Servers und des Clients. Ich habe jetzt die Version Mariadb 10.0.22-2.18.1. Seither gibt es Probleme mindestens mit einem der Stored Procedures. Der nachfolgend dargestellte Code zeigt die verwendete Stored Procedure.
DROP FUNCTION SETTINGS_VALUE;
DELIMITER //
CREATE FUNCTION SETTINGS_VALUE(screen_name VARCHAR(25), set_type VARCHAR(20)) RETURNS TEXT NOT DETERMINISTIC
BEGIN
DECLARE SET_VALUE TEXT;
SELECT setvalue INTO SET_VALUE
FROM SETTINGS AS t1
WHERE t1.screenname = screen_name AND
t1.settype = set_type;
RETURN SET_VALUE;
END //
DELIMITER ;
Alles anzeigen
Stylesheets sind leider länglich, d.h. der angeforderte Text kann auch mal 500 Zeichen beinhalten. Wenn ich die Abfrage händisch absetze, dann erhalte ich:
MariaDB [kquicken]> select setvalue from SETTINGS where screenname = "MAINDIALOG" and settype="STYLESHEET";
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| setvalue |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| QLabel#uhrzeit {border: 0px solid black; font-family:'Arial'; font-size:12px; font-weight:Bold; } QTableView::item {margin-left:0px;padding-right:0px; padding-left:5 px; padding-top:0px; padding-bottom:0px; height:20px;} QLabel#LogoLabel {background-image:url(kuicken.jpeg); background-origin:content; background-position:center ;max-width:160px; min-width:160px;max-height:110px; min-height:110px; border: 1px solid black;} |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
Wenn ich hingegen die Stored Procedure verwende, dann erhalte ich:
MariaDB [kquicken]> select SETTINGS_VALUE("MAINDIALOG","STYLESHEET");
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| SETTINGS_VALUE("MAINDIALOG","STYLESHEET") |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| QLabel#uhrzeit {border: 0px solid black; font-family:'Arial'; font-size:12px; font-weight:Bold; } QTableView::item {margin-leÅ ° QLabel#uhrzeit {border: 0px solid black; font-family:'Arial'; font-size:12px; font-weight:Bold; } QTableView::item {margin-leÅ ° QLabel#uhrzeit {border: 0px solid black; font-family:'Arial'; font-size:12px; font-weight:Bo110px; min-height:110px; border: 1px solid black;} |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)
d.h. die Stored Procedure liefert nach ca. 122 Zeichen einige Schrottzeichen (mit denen Qt natürlich nichts anfangen kann) und dahinter dann wieder den regulären Text.
Ich habe einige Zeit gebraucht, bis ich den Verursacher herausgefunden habe. Ich habe einiges an der Stored Procedure rumprobiert (NOT DETERMINISTIC, DETERMINISTIC oder gar nichts): Das Ergebnis war jedesmal das gleiche.
Meiner Meinung enthält hat die ausgelieferte Version von Mariadb einen Fehler.
Ist da was bekannt?