Re: [pgAdmin 4 - Bug #2274] Row Deletion Against Tables With PKs Not at Ordinal 0 Position Fail

From: Harshal Dhumal <harshal(dot)dhumal(at)enterprisedb(dot)com>
To: pgadmin-hackers <pgadmin-hackers(at)postgresql(dot)org>
Cc: waynewinchjr(at)earthlink(dot)net
Subject: Re: [pgAdmin 4 - Bug #2274] Row Deletion Against Tables With PKs Not at Ordinal 0 Position Fail
Date: 2017-03-24 07:51:04
Message-ID: CAFiP3vzz2_==Jnb_nDArRqd+G3wyqK9+6Ny+QUop55F5NaS0Dw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgadmin-hackers

Hi,

Here is patch for RM2274 (patch credits to Wayne Winch Jr)

I tested this patch with below scenarios and all are working fine:

1. Table with 2 columns with 2nd col as primary key.
2. Table with 3 columns with 3rd and 2nd cols as primary key.
3. Table with 4 columns with 3rd and 2nd and 4th cols as primary key.
4. Table with 4 columns with 2nd and 4th cols as primary key.
5. Table with 4 columns with 4th col as primary key.
6. Table with 4 columns with 1st col as primary key.

--
*Harshal Dhumal*
*Software Engineer*

EnterpriseDB India: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

On Wed, Mar 22, 2017 at 3:27 PM, <redmine(at)postgresql(dot)org> wrote:

> Issue #2274 has been updated by Dave Page.
>
> - *Priority* changed from *Normal* to *Urgent*
> - *Target version* set to *1.4*
>
> ------------------------------
> Bug #2274: Row Deletion Against Tables With PKs Not at Ordinal 0 Position
> Fail <https://redmine.postgresql.org/issues/2274#change-6260>
>
> - Author: Wayne Winch Jr
> - Status: New
> - Priority: Urgent
> - Assignee:
> - Category:
> - Target version: 1.4
> - Platform:
> - Area: User Interface
>
> If pgAdmin4 is used to delete one or more rows for tables having primary
> keys that do not occupy the first column(s) of said table, the deletion
> will fail with Python error --
>
> File "/usr/lib/python3.5/site-packages/pgadmin4-web/pgadmin/tools/sqleditor/command.py",
> line 499, in save
> row[keys[int(k)]] = v
> IndexError: list index out of range
>
> SIDE NOTE: A separate problem exists whereby pgAdmin4 does not adequately
> indicate that an internal error (as listed above) has occurred as it merely
> switches from the Data Output tab to the Messages tab whereby an old
> message unrelated to the current or any exception is unhelpfully shown.
>
> The row deletion problem is caused by faulty logic within the command.py
> file, TableCommand class, save() method in the 'deleted' operation branch
> (Line 499) as indicated in the stack trace:
>
> row[keys[int(k)]] = v
>
> By changing this line to the following, the index mapping is performed
> correctly (by bypassing keys list) for tables with non-ordinal, zero-based
> PK column(s):
>
> row[changed_data['columns'][int(k)]['name']] = v
>
> This problem seems to have been introduced in pgAdmin4v1.3.
> ------------------------------
>
> You have received this notification because you have either subscribed to
> it, or are involved in it.
> To change your notification preferences, please click here:
> https://redmine.postgresql.org/my/account
>

Attachment Content-Type Size
RM2274.patch text/x-patch 707 bytes

Responses

Browse pgadmin-hackers by date

  From Date Subject
Next Message Akshay Joshi 2017-03-24 08:33:32 pgAdmin 4 commit: Added timeout in _wait_timeout function in our psycop
Previous Message Ashesh Vashi 2017-03-24 06:46:34 Re: Re-vamping the history tab