Looking at this made me realize that apparently transactional DDL was more
widely supported than I had thought.
That is, SQL Server also supports it. Before I had the impression almost no one
supported it, with PostgreSQL and SQLite being exceptions, and the latter
because it was trivially easy due to being a one-writing-user-at-once system.
Looking at
https://wiki.postgresql.org/wiki/Transactional_DDL_in_PostgreSQL:_A_Competitive_Analysis
shows even more widespread support yet.
This being said, I understand that PostgreSQL still has a single notable
exception to its transactional DDL support. You can't modify an ENUM type
within a transaction, which has been the case since ENUM modify was added in 9.1.
Per http://www.postgresql.org/docs/9.4/static/sql-altertype.html :
"ALTER TYPE ... ADD VALUE (the form that adds a new value to an enum type)
cannot be executed inside a transaction block."
This struck me as a rather glaring and odd exception, and I hope it will be
fixed soon.
There's also the thing about not being able to change tablespaces in a
transaction, but that conceptually is easier to understand than the ENUM thing.
-- Darren Duncan
On 2015-01-24 12:48 PM, pk@postgresql.org wrote:
> Hello
>
> As per Db-engines.com, the PostgreSQL is the fourth popular database of the
> world. I have compiled a comparison of of PostgreSQL with other 3 top DBMSs from
> Wikipedia and I am proud to say, our PostgreSQL is full featured and competitive
> with all of them and the fourth position of PostgreSQL is just due to its less
> use, which is obviously due to learning curve and other supportive software and
> services.
>
> Please see the comparison and suggest how can we increase its use.
>
> Truy
> Malik M. Hashim
> Rehmansoft.com
> +92-300-3754107