ALTER TABLE support for dropping generation expression

Started by Peter Eisentrautover 6 years ago7 messageshackers
Jump to latest
#1Peter Eisentraut
peter_e@gmx.net

A small add-on to the generated columns feature: Add an ALTER TABLE
subcommand for dropping the generated property from a column, per SQL
standard.

--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Attachments:

0001-ALTER-TABLE-.-ALTER-COLUMN-.-DROP-EXPRESSION.patchtext/plain; charset=UTF-8; name=0001-ALTER-TABLE-.-ALTER-COLUMN-.-DROP-EXPRESSION.patch; x-mac-creator=0; x-mac-type=0Download+222-5
In reply to: Peter Eisentraut (#1)
Re: ALTER TABLE support for dropping generation expression

The following review has been posted through the commitfest application:
make installcheck-world: not tested
Implements feature: tested, failed
Spec compliant: not tested
Documentation: tested, passed

Hello

Patch does not apply to master. Could you rebase?

Code looks good and very similar to "ALTER TABLE ... ALTER COLUMN ... DROP IDENTITY"

I noticed one bug:

create table testdrop (i int, b int, m int GENERATED ALWAYS AS ( i*2) stored);
insert into testdrop(i,b) values (3,4);
alter table testdrop alter COLUMN m drop expression ;
alter table testdrop drop column i;

Here is no "m" column anymore. Possible due some forgotten dependency?

regards, Sergei

The new status of this patch is: Waiting on Author

#3Peter Eisentraut
peter_e@gmx.net
In reply to: Sergei Kornilov (#2)
Re: ALTER TABLE support for dropping generation expression

On 2019-12-25 12:01, Sergei Kornilov wrote:

Patch does not apply to master. Could you rebase?

done

I noticed one bug:

create table testdrop (i int, b int, m int GENERATED ALWAYS AS ( i*2) stored);
insert into testdrop(i,b) values (3,4);
alter table testdrop alter COLUMN m drop expression ;
alter table testdrop drop column i;

Here is no "m" column anymore. Possible due some forgotten dependency?

fixed -- good catch

--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Attachments:

v2-0001-ALTER-TABLE-.-ALTER-COLUMN-.-DROP-EXPRESSION.patchtext/plain; charset=UTF-8; name=v2-0001-ALTER-TABLE-.-ALTER-COLUMN-.-DROP-EXPRESSION.patch; x-mac-creator=0; x-mac-type=0Download+283-5
In reply to: Peter Eisentraut (#3)
Re: ALTER TABLE support for dropping generation expression

Hello

Thank you, but I am late: patch has another merge conflict.

Conflict seems trivial and patch looks fine for me.

regards, Sergei

#5Peter Eisentraut
peter_e@gmx.net
In reply to: Sergei Kornilov (#4)
Re: ALTER TABLE support for dropping generation expression

On 2020-01-10 13:20, Sergei Kornilov wrote:

Thank you, but I am late: patch has another merge conflict.

Conflict seems trivial and patch looks fine for me.

Here is another patch version. I have resolved the conflict and also
added a check that you don't drop the generation expression from an
inherited column.

--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Attachments:

v3-0001-ALTER-TABLE-.-ALTER-COLUMN-.-DROP-EXPRESSION.patchtext/plain; charset=UTF-8; name=v3-0001-ALTER-TABLE-.-ALTER-COLUMN-.-DROP-EXPRESSION.patch; x-mac-creator=0; x-mac-type=0Download+326-5
In reply to: Peter Eisentraut (#5)
Re: ALTER TABLE support for dropping generation expression

The following review has been posted through the commitfest application:
make installcheck-world: tested, passed
Implements feature: tested, passed
Spec compliant: not tested
Documentation: tested, passed

Thank you!
Looks good to me. I have no further comments. I'll mark as ready for committer.

The new status of this patch is: Ready for Committer

#7Peter Eisentraut
peter_e@gmx.net
In reply to: Sergei Kornilov (#6)
Re: ALTER TABLE support for dropping generation expression

On 2020-01-13 10:56, Sergei Kornilov wrote:

The following review has been posted through the commitfest application:
make installcheck-world: tested, passed
Implements feature: tested, passed
Spec compliant: not tested
Documentation: tested, passed

Thank you!
Looks good to me. I have no further comments. I'll mark as ready for committer.

The new status of this patch is: Ready for Committer

committed, thanks

--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services