2017-01-09 0:37 GMT+01:00 Jim Nasby <jim.na...@bluetreble.com>:

> On 1/8/17 2:52 AM, Joel Jacobson wrote:
>> And please kill all these GUCs ideas. The best thing with PostgreSQL
>> is the natural expected behaviour of the default configuration.
>> Contrary to MySQL where you have to enable lots and lots of
>> configuration options just to get a behaviour you expect as a novice
>> user.
> The only reason to use GUCs or some other kind of backwards compatibility
> setting would be to allow the current plpgsql itself to move forwards. If
> you think that's a dead end (which I can certainly understand) then they
> make no sense at all.
> It's much better to just come together and agree on whatever we have
>> learned during the last 15 years of PL/pgSQL1, and sample all ideas
>> during a year maybe, and decide what to put into PL/pgSQL2. To make it
>> useful, we should aim to not break compatibility for _most_ code, but
>> accept some necessary rewrites of functions with deprecated
>> anti-patterns.
> If we're going to create a brand new language then I think it would be
> extremely foolish to keep *any* of the current pain points around. Off the
> top of my head:
> - variables must have an identifier (what $ in most languages does). The
> steps you have to go through to avoid simple naming collisions are insane.

just note - from 9.0 the collisions are not a issue

> - Support for composite types needs to be stronger. Off the top of my
> head, you need to be able to reference an element name via a variable. OR,
> maybe it'd be better to just provide a plpgsql equivalent to a dict.

This point self needs significant code refactoring - maybe total rewriting
PL executor - it allows to change expression result data type in cycle. It
doesn't mean so I fully disagree with this point, but it is not easy to
implement it in type strict environment - C, C++, Pascal, Ada - hasn't any
similar - maybe it is possible with some libraries.

> - GET DIAGNOSTICS and their ilk need to die. There needs to be an easier
> way to get that kind of info back (perhaps via an automatic
> composite/record/dict).

It is about performance - probably you wouldn't to fill all dict fields
after any statement.

> - There needs to be real support for dealing with exceptions. IE: get a
> composite of all exception deatils, modify parts of it, then re-raise with
> the new info.
> - Real support for using variables as identifiers / nothing restricted to
> only accepting a Const.

second point that enforces new PL environment - writing from scratch - and
it hides  the cost of dynamic SQL

> - Support for the notion of a variable being unset (which is NOT the same
> thing as NULL).
> That said, I'll bet we still get some of that wrong, so there better be
> some way of fixing those issues down the road...

With these requests you have to specify first, how much close will be your
ideal language with PostgreSQL. Currently PL/pgSQL is pretty close - with
some impacts. Your mentioned features can requires more independent
environment from Postgres.

What is really weak in plpgsql is a left side of assign statement and
missing some global/module/extensions variables.

Maybe if we integrate more PLLua or PLPython, PLPerl it can be better for
these requests.

I am not sure about benefit new only PostgreSQL specific language. What do
you think about Lua - it is light, pretty fast, dynamic, fast dictionary
API that can mask lot of internals.



> --
> Jim Nasby, Data Architect, Blue Treble Consulting, Austin TX
> Experts in Analytics, Data Architecture and PostgreSQL
> Data in Trouble? Get it in Treble! http://BlueTreble.com
> 855-TREBLE2 (855-873-2532)

Reply via email to