2014-09-05 11:17 GMT+02:00 Marko Tiikkaja <ma...@joh.to>:

> On 9/5/14 11:08 AM, Pavel Stehule wrote:
>
>> 2014-09-05 10:57 GMT+02:00 Marko Tiikkaja <ma...@joh.to>:
>>
>>> Oops.  I meant to type ASSERT there, instead of RAISE.  Does that make
>>> more sense?
>>>
>>
>> for me a basic limit is boolean_expr
>>
>
> I don't understand what you mean by this.
>
>  It is about semantic and conformity of proposed tools. Sure,  all can
>>>> reduced to ASSERT(expr) .. but where is some benefit against function
>>>> call
>>>>
>>>>
>>> I see several benefits:
>>>
>>>    1) Standard syntax, available anywhere
>>>    2) Since the RAISE EXCEPTION happens at the caller's site, we can
>>> provide information not available to an ordinary function, such as the
>>> values of the parameters passed to it
>>>    3) We can make the exception uncatchable
>>>    4) ASSERTs can be easily disabled (if we choose to allow that), even
>>> per-function
>>>
>>>
>> All points can be solved  by extension on PGXN ..
>>
>
> #3 probably.  Being able to satisfy #1 through PGXN is ridiculous.  #2 and
> #4 would require at least hooking into PL/PgSQL, which might be possible,
> but it's intrusive and honestly feels fragile.
>
> But perhaps more to the point, why would that criticism apply to my
> suggestion, but not yours?  Why don't we just reject any ASSERT syntax?
>
>  and your proposed syntax
>> can be better processed on Postgres level than PLpgSQL level.
>>
>
> *shrug*  Doing it in SQL would probably break more stuff.  I'm trying to
> contain the damage.  And arguably, this is mostly only useful in PL/PgSQL.
>
>    I am able to do without any change of language as plpgsql extension -
>>>
>>>> there
>>>> is no necessary to do any change for too thin proposal
>>>>
>>>>
>>> What *exactly* about my proposal is "too thin"?  What does your thing do
>>> that mine doesn't?  If you're saying your suggestion allows us to give a
>>> better error message, I disagree:
>>>
>>>
>> "Too thin" it means so there is not possibility to extensibility,
>> possibility to define dafaults, possibility to use it for static analyse.
>>
>
> Again, why does this criticism only apply to my suggestion and not yours?
>
>
There is one stronger difference - there is clean, what is targer of
assertation, because there is defined semantic.

When all is just any expression, there is nothing specified semantic


>     ( ROW_COUNT ( = | <> ) ( 1 | 0 ) |
>>>
>>> I've already addressed this: we can print the parameters and their values
>>> automatically, so printing the row count here doesn't give any additional
>>> value.
>>>
>>>
>> In this case, I can use a plpgsql parser for static analyse - I can do
>> warning, if related query has not filter PK and similar.
>>
>
> You can do that anyway, you just need to work a bit harder.  I don't see
> the problem, really.
>

bit harder, with possibility to false identification


>
>
> .marko
>

Reply via email to