Thread: BUG #14265: inserting multiple rows via array notation gives error

BUG #14265: inserting multiple rows via array notation gives error

From
ganuri@gmail.com
Date:
VGhlIGZvbGxvd2luZyBidWcgaGFzIGJlZW4gbG9nZ2VkIG9uIHRoZSB3ZWJz
aXRlOgoKQnVnIHJlZmVyZW5jZTogICAgICAxNDI2NQpMb2dnZWQgYnk6ICAg
ICAgICAgIE51cmkgQm9hcmRtYW4KRW1haWwgYWRkcmVzczogICAgICBnYW51
cmlAZ21haWwuY29tClBvc3RncmVTUUwgdmVyc2lvbjogOS40LjUKT3BlcmF0
aW5nIHN5c3RlbTogICBXaW5kb3dzIDcgLSA2NApEZXNjcmlwdGlvbjogICAg
ICAgIAoKZ2l2ZW4gYSB0YWJsZToNCmNyZWF0ZSB0YWJsZSB0ZXN0ICggdGVz
dGFycmF5IGludFtdKTsNCg0KdGhpcyBjb21wbGV0ZXMgYXMgaSB3b3VsZCBl
eHBlY3QNCmluc2VydCBpbnRvIHRlc3QgKHRlc3RhcnJheVsxXSwgdGVzdGFy
cmF5WzJdKSB2YWx1ZXMgKDEsMikNCg0KdGhpcyBnaXZlcyBhbiBlcnJvcg0K
aW5zZXJ0IGludG8gdGVzdCAodGVzdGFycmF5WzFdLCB0ZXN0YXJyYXlbMl0p
IHZhbHVlcyAoMSwyKSwoMyw0KQ0KRVJST1I6ICBtdWx0aXBsZSBhc3NpZ25t
ZW50cyB0byBzYW1lIGNvbHVtbiAidGVzdGFycmF5Ig0KDQpJJ20gbm90IHN1
cmUgaWYgdGhpcyBpcyBzdXBwb3J0ZWQgb3Igbm90LCBhcyBpIGRpZG4ndCBz
ZWUgYW55IGRvY3VtZW50YXRpb24KYWJvdXQgaXQuDQoKCg==
ganuri@gmail.com writes:
> given a table:
> create table test ( testarray int[]);
> this gives an error
> insert into test (testarray[1], testarray[2]) values (1,2),(3,4)
> ERROR:  multiple assignments to same column "testarray"

Yeah, that ought to work, but fixing it is nontrivial --- see
https://www.postgresql.org/message-id/9578.1469645245%40sss.pgh.pa.us

In the meantime, it works to do it with INSERT/SELECT, eg

insert into test (testarray[1], testarray[2])
  select 1,2 union all select 3,4;

or even

insert into test (testarray[1], testarray[2])
  select * from (values (1,2),(3,4)) v;


            regards, tom lane