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.
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