[pgadmin-hackers] Re: [pgAdmin 4 - Bug #2274] Row Deletion Against Tables With PKs Notat Ordinal 0 Position Fail - Mailing list pgadmin-hackers

From Harshal Dhumal
Subject [pgadmin-hackers] Re: [pgAdmin 4 - Bug #2274] Row Deletion Against Tables With PKs Notat Ordinal 0 Position Fail
Date
Msg-id CAFiP3vzz2_==Jnb_nDArRqd+G3wyqK9+6Ny+QUop55F5NaS0Dw@mail.gmail.com
Whole thread Raw
Responses Re: Re: [pgAdmin 4 - Bug #2274] Row DeletionAgainst Tables With PKs Not at Ordinal 0 Position Fail  (Dave Page <dpage@pgadmin.org>)
List 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@postgresql.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

  • 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

pgadmin-hackers by date:

Previous
From: Ashesh Vashi
Date:
Subject: Re: [pgadmin-hackers] Re-vamping the history tab
Next
From: Akshay Joshi
Date:
Subject: [pgadmin-hackers] pgAdmin 4 commit: Added timeout in _wait_timeout function in ourpsycop