2017-01-03 16:23 GMT+01:00 Merlin Moncure <mmonc...@gmail.com>:

> On Tue, Dec 27, 2016 at 10:09 PM, Jim Nasby <jim.na...@bluetreble.com>
> wrote:
> > On 12/27/16 4:56 PM, Merlin Moncure wrote:
> >>
> >> On Tue, Dec 27, 2016 at 1:54 AM, Pavel Stehule <pavel.steh...@gmail.com
> >
> >> wrote:
> >>>
> >>> First I describe my initial position. I am strongly against
> introduction
> >>> "new" language - plpgsql2 or new plpgsql, or any else. The trust of
> >>> developers to us is important and introduction of any not compatible or
> >>> different feature has to have really big reason. PostgreSQL is
> >>> conservative
> >>> environment, and PLpgSQL should not be a exception. More - I have not
> any
> >
> >
> > Which is why this is an external fork of plpgsql.
> >
> > ** The real problem is that we have no mechanism for allowing a PL's
> > language/syntax/API to move forward without massive backwards
> compatibility
> > problems. **
>
> Just got back from break :-).  Have some thoughts on this.  Backwards
> compatibility is really a fundamental problem.  There's really no
> solution to it other than to try and avoid using syntax to solve
> problems.  It should be obvious to everyone that plgsql cannot
> withstand a compatibility break.  Another language could be offered as
> an alternative in core (say, pl/psm or pl/v8), but pl/pgsql has to
> support old code.   Some really out there features could maybe be
> redacted (in particular, using = for assignment), but not not much.
> But I guess we're stuck with the status quo.
>
> I think we ought to avoid language features that influence the
> behavior (performance is ok) of the code (and that includes throwing
> errors).  That's a freight train headed towards javscript's 'strict'
> mode, which is thinly disguised language fork.  #option and pragma
> type syntaxes are trying to cheat the language -- hardly anyone uses
> them and it's a tricky way to try and make the language into something
> other than it is.
>
> C does it right -- dubious code is raised as warnings and it's up to
> the end user to determine which warnings are interesting and likely to
> be an error.  So, rather than hacking the language to control throwing
> and errors and such there should be some ability validate the function
> heavily and verify suspicious use of INTO or other dubious things
> (unused variables, masked assignments, etc).  The validation output
> could even be a set returning function.


> So -1 to strict mode, unless we can make a case why this can't be done
> as part of checking/validation.
>

Can be plpgsq.extra_errors and plpgsql.extra_warnings solution?

I am thinking so there is a space for improvement (in extra_* usage)

Do you know plpgsql_check https://github.com/okbob/plpgsql_check ?

>
> Other random points:
> *) Another major pain point is swapping in the input variables for
> debugging purposes.  Something that emits a script based on a set of
> arguments would be wonderful.
>

???


>
> *) Would also like to have a FINALLY block


What you can do there?


>
> *) A mechanic to manually print out a stack trace for debugging
> purposes would be helpful.
>

I had plan to develop a extension for this purpose - easy printing stack,
function parameters, and local variables. But I had a motivation to start
it. It can be usable for any PL


>
> *) COPY not being able to accept arguments as variables (in particular
> the filename) is a major headache
>

There is a patch "COPY as function"


> *) Upon error, we ought to print a few lines of context on either side
> of the error.  Not very fun to try and figure out where the errors is
> when you are working off of 'syntax error near "FROM"' etc.  This is a
> major problem throughout the platform IMO.
>

Have not idea how to fix it

>
> *) Some user visible mechanic other than forcing SQL through EXECUTE
> to be able to control plan caching would be useful.
>

fully agree.

Have you some ideas?

What about plpgsql option (function scope) -- WITHOUT-PLAN-CACHE - any non
trivial plans will not be cached - and evaluated as parametrized query only.

Regards

Pavel

>
> merlin
>

Reply via email to