While I'm a staunch opponent of fatal warnings in general, and I believe Pali has voiced concern with them as well, this is somewhat unrelated as it has nothing to do with the core warnings pragma and categories, and is simply an *option* to cause DBI to exhibit different behavior which it currently cannot. As such I think it's a fine idea.
-Dan On Thu, Jan 17, 2019 at 6:20 PM Alexander Hartmaier <a...@hartmaier.priv.at> wrote: > I didn‘t want to start a discussion about deprecation because I know the > opinion about that for most Perl 5 developers. > > But strictures and its use in Moo showed that exceptions from warnings > aren‘t welcome. > You can install a warn handler in your code without requiring any change. > Adding another option raises the number of combinations. > > As I don‘t see any benefit and no examples where given I‘m against it. > > > Am 17.01.2019 um 23:57 schrieb p...@cpan.org: > > > > Personally I do not like changing Print/Raise. It is documented, > > implementation seems to match documentation, it is without bugs and > > current behavior is usable. > > > > Anyway, back to my question about RaiseWarn. Do you think that it make > > sense to have it in DBI? > > > >> On Thursday 17 January 2019 11:02:51 Darren Duncan wrote: > >> Generally speaking, DBI is one of those things where backwards > compatibility > >> should be the highest concern after security. There is a time and > place to > >> break compatibility, and this Print/Raise thing seems way too minor to > me > >> for that. I support the version of this that is backwards-compatible > and > >> not the breaking version. -- Darren Duncan > >> > >>> On 2019-01-17 2:43 AM, p...@cpan.org wrote: > >>>> On Thursday 17 January 2019 11:06:22 Alexander Hartmaier wrote: > >>>> I'm aware of that, semantic versioning and major versions exist to > handle API breakage. > >>> > >>> Such thing is unsupported by CPAN clients. So we cannot use it. > >>> > >>> Anyway, this is question for Tim as DBI maintainer. But I guess he does > >>> not want to change API of DBI. > >>> > >>>> My question is how to detect if an exception is because of a warn or > a die when RaiseWarn is true. > >>> > >>> I guess you can use $dbh->err() method. > >>> See: https://metacpan.org/pod/DBI#err > >>> > >>> A driver may return 0 from err() to indicate a warning condition after > a > >>> method call. Similarly, a driver may return an empty string to indicate > >>> a 'success with information' condition. In both these cases the value > is > >>> false but not undef. > >>> > >>> Note that 'success with information' is not warning and therefore DBI's > >>> PrintWarn or RaiseWarn ignores them. > >>> > >>>> Best regards, Alex > >>>> > >>>>> On 2019-01-17 10:53, p...@cpan.org wrote: > >>>>> On Thursday 17 January 2019 10:23:25 Alexander Hartmaier wrote: > I > don't see the benefit, Print* should die This would break existing API of > DBI. Print just prints and Raise dies. This cannot be changed as there are > many applications which depends on this API. > and I'd personally would > release a major release and change the defaults as a breaking change: > PrintError false, RaiseError true. > Can you name a use case and how to > differ between an error and a warning at the error handling side? It is up > to the DBI driver or database server what would result in is a warning and > what in an error. > Best regards, Alex > > > On 2019-01-17 10:04, > p...@cpan.org wrote: > > Hello! What do you think about adding a new > attribute $dbh->{RaiseWarn} which cause that warnings reported by DBI > drivers would behave like errors? For errors DBI has there > $dbh->{PrintError} and $dbh->{RaiseError} attributes. First one is by > default true and second one by default false. When PrintWarn is true, the > >>>> n all er > >>>> > >>>> ror from DBI driver are passed to perl's "warn" function and when > RaiseError is true, then errors are passed to perl's "die" function. (Plus > there is ability to register own error handler function) Currently DBI has > only $dbh->{PrintWarn} attribute to control warnings. When is set to true > (by default) all warnings from DBI driver are passed to perl's "warn" > function. So I would propose to add $dbh->{RaiseWarn} attribute (off by > default) to behave like $dbh->{RaiseError}, but for warnings. I have > implemented this attribute and patch is there: > https://github.com/perl5-dbi/dbi/pull/71/files > >>>> > >>>> > >>> > >> >