Rocksolid Light

groups  faq  privacy  How to post  login

Message-ID:  

Good day to deal with people in high places; particularly lonely stewardesses.


rocksolid / de.comp.lang.perl / DBD::Pg-Fehlermeldungen von „RAISE“-Benachrichtungen unterscheiden?

SubjectAuthor
* DBD::Pg-Fehlermeldungen von „RAISE“-Benachrichtungen unterscheiden?Tim Landscheidt
+- Re: DBD::Pg-Fehlermeldungen von „RAISE“-Benachrichtungen unterscheiden?Peter J. Holzer
`- Re: DBD::Pg-Fehlermeldungen von „RAISE“-Benachrichtungen unterscheiden?Thomas Dorner

1
Subject: DBD::Pg-Fehlermeldungen von „RAISE“-Benachrichtungen unterscheiden?
From: Tim Landscheidt
Newsgroups: de.comp.lang.perl
Organization: https://www.tim-landscheidt.de/
Date: Tue, 21 May 2024 08:56 UTC
Path: i2pn2.org!i2pn.org!usenet.goja.nl.eu.org!3.eu.feeder.erje.net!feeder.erje.net!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail
From: tim...@tim-landscheidt.de (Tim Landscheidt)
Newsgroups: de.comp.lang.perl
Subject: DBD::Pg-Fehlermeldungen von „RAISE“-Ben
achrichtungen unterscheiden?
Date: Tue, 21 May 2024 08:56:54 +0000
Organization: https://www.tim-landscheidt.de/
Lines: 53
Message-ID: <8734qbilux.fsf@vagabond.tim-landscheidt.de>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Trace: individual.net UvYnvIwJNuFMQarlVyihmwzYdF1HgKKCXk4CynN7sLr2jkFP1g
Cancel-Lock: sha1:31G3c+ksn/YAq9z4/uXU1rA8uNg= sha1:/SNdoi4I/wikCohCaRc8NVNZsJY= sha256:DAjjWPgHVffWsxZYBAuJENipGUL/Z47VRNZvjmBdhQU=
User-Agent: Gnus/5.13 (Gnus v5.13)
View all headers

Hi,

ich habe Wartungs-Perl-Scripts in einer de_DE.UTF-8-Locale,
die sich mit einer PostgreSQL-Datenbank
(perl-DBD-Pg-3.16.3-1.fc38.x86_64/
postgresql-server-15.4-1.fc38.x86_64) verbinden und dort
„RAISE“-Benachrichtungen auslösen, die per PrintWarn => 1
automatisch ausgegeben werden. Beispiel:

| my $DB = DBI->connect ('dbi:Pg:dbname=[…]', undef, undef, { AutoCommit => 0, PrintWarn => 1 }) or die (DBI->errstr ());

| $DB->do (q!DO LANGUAGE plpgsql $$BEGIN RAISE NOTICE '%', TO_CHAR('2024-03-01'::DATE, 'TMMonth'); END;$$!) or die ($DB->errstr ());

Das gibt leider:

| HINWEIS: März

aus. Die Dokumentation erläutert etwas versteckt, dass man
die Warnungen mit dem Signal-Handler bearbeiten kann. Ein:

| $SIG{__WARN__} = sub {
| print STDERR decode ('UTF-8', $_ [0], Encode::FB_CROAK | Encode::LEAVE_SRC);
| };

führt dann auch zu der gewünschten Ausgabe:

| HINWEIS: März

Aber: Wenn jetzt DBD::Pg selbst Fehlermeldungen erzeugt:

| $DB->do (q!TUE ETWAS;!) or die ($DB->errstr ());

führt dies zu einem Dekodierungsfehler:

| UTF-8 "\xBB" does not map to Unicode at […] line 15.
| Issuing rollback() due to DESTROY without explicit disconnect() of DBD::Pg::db handle dbname=[…] at […] line 21.

In dem Signal-Handler enthält @_ ausschließlich ein Element
mit der „RAISE“-Benachrichtung oder der Fehlermeldung und
kann damit nicht zu der Unterscheidung, woher die Warnung
kommt, benutzt werden. caller ist auch in beiden Fällen
„main“.

Gibt es sonst eine Möglichkeit, zwischen den DBD::Pg-Fehler-
meldungen und den „RAISE“-Benachrichtungen zu unterscheiden?

(Man könnte (und vielleicht werde ich das auch tun) probie-
ren zu dekodieren und bei einem Fehler die ursprüngliche
Warnung ausgeben; aber das fühlt sich doch sehr nach Grobmo-
torik an.)

TIA,
Tim

Subject: Re: DBD::Pg-Fehlermeldungen von „RAISE“-Benachrichtungen unterscheiden?
From: Peter J. Holzer
Newsgroups: de.comp.lang.perl
Organization: LUGA
Date: Tue, 21 May 2024 15:31 UTC
References: 1
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!newsfeed.xs3.de!tahina.priv.at!news.luga.at!.POSTED.212.17.106.130!not-for-mail
From: hjp-usen...@hjp.at (Peter J. Holzer)
Newsgroups: de.comp.lang.perl
Subject: Re: DBD::Pg-Fehlermeldungen von
„RAISE“-Benachrichtungen unterscheiden?
Date: Tue, 21 May 2024 17:31:16 +0200
Organization: LUGA
Message-ID: <slrnv4pfi9.1ejs7.hjp-usenet4@trintignant.hjp.at>
References: <8734qbilux.fsf@vagabond.tim-landscheidt.de>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
Injection-Info: vinge.luga.at; posting-host="212.17.106.130";
logging-data="32603"; mail-complaints-to="usenet@vinge.luga.at"
User-Agent: slrn/1.0.3 (Linux)
Cancel-Lock: sha1:vxPaSlXimDP8ytXC+EgXQz9tT5A=
View all headers

On 2024-05-21 08:56, Tim Landscheidt <tim@tim-landscheidt.de> wrote:
> ich habe Wartungs-Perl-Scripts in einer de_DE.UTF-8-Locale,
> die sich mit einer PostgreSQL-Datenbank
> (perl-DBD-Pg-3.16.3-1.fc38.x86_64/
> postgresql-server-15.4-1.fc38.x86_64) verbinden und dort
> „RAISE“-Benachrichtungen auslösen, die per PrintWarn => 1
> automatisch ausgegeben werden. Beispiel:
>
>| my $DB = DBI->connect ('dbi:Pg:dbname=[…]', undef, undef, { AutoCommit => 0, PrintWarn => 1 }) or die (DBI->errstr ());
>
>| $DB->do (q!DO LANGUAGE plpgsql $$BEGIN RAISE NOTICE '%', TO_CHAR('2024-03-01'::DATE, 'TMMonth'); END;$$!) or die ($DB->errstr ());
>
> Das gibt leider:
>
>| HINWEIS: März
>
> aus.

Bei mir[1] gibt das

NOTICE: März
Issuing rollback() due to DESTROY without explicit disconnect() of DBD::Pg::db handle dbname=hjp.

aus.

Bitte poste ein vollständiges minimales Script, das das beschriebene
Verhalten zeigt. Ich vermute, dass in Deiner Beschreibung etwas
Wichtiges fehlt.

hp

[1] Ubuntu 22.04
||/ Name Version Architektur Beschreibung
+++-====================-=================-============-=====================================================
ii libdbd-pg-perl:amd64 3.15.1-1 amd64 Perl DBI driver for the PostgreSQL database server
ii perl 5.34.0-3ubuntu1.3 amd64 Larry Wall's Practical Extraction and Report Language

Subject: Re: DBD::Pg-Fehlermeldungen von „RAISE“-Benachrichtungen unterscheiden?
From: Thomas Dorner
Newsgroups: de.comp.lang.perl
Date: Tue, 21 May 2024 16:39 UTC
References: 1
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!reader5.news.weretis.net!news.solani.org!.POSTED!umbra.opacus!not-for-mail
From: dclp2405...@spamgourmet.com (Thomas Dorner)
Newsgroups: de.comp.lang.perl
Subject: Re: DBD::Pg-Fehlermeldungen von „RAISE“
-Benachrichtungen unterscheiden?
Date: Tue, 21 May 2024 18:39:04 +0200
Message-ID: <6ejzjnnmqf.fsf@th-dorner.de>
References: <8734qbilux.fsf@vagabond.tim-landscheidt.de>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
Injection-Info: solani.org;
logging-data="638354"; mail-complaints-to="abuse@news.solani.org"
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux)
Cancel-Lock: sha1:CSJDKamp7bALLuBMzA7IZZNxx/Q= sha1:+weNeSTb5narN5tTFi9UTI76llE=
X-User-ID: eJwFwYEBwDAEBMCVSvxjHCT2H6F3OBSOG0HDYm9NH66GhltpvuzeIG7BXHR9BZbjbH2K9/0kbRER
View all headers

Tim Landscheidt <tim@tim-landscheidt.de> writes:
> Das gibt leider:
>
> | HINWEIS: März

Sowas sollte eigentlich mit neueren Perl Versionen nicht passieren, wenn
man denn UTF entsprechend eingestellt hat. Verwendest Du schon das
Dreigestirn
|use open ':encoding(utf8)';
|binmode(STDOUT, ':utf8');
|binmode(STDERR, ':utf8');
?

Viele Grüße, Thomas
--
Adresse gilt nur kurzzeitig!


rocksolid / de.comp.lang.perl / DBD::Pg-Fehlermeldungen von „RAISE“-Benachrichtungen unterscheiden?

1
server_pubkey.txt

rocksolid light 0.9.136
clearnet tor