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
>>>> 
>>>> 
>>> 
>> 

Reply via email to