Skip to content

Commit bf69b16

Browse files
committed
1) Added the MAINTAIN privilege for PostgreSQL version 17 and above. #8332
2) Updated JavaScript Dependecies.
1 parent 36df6d5 commit bf69b16

File tree

45 files changed

+1769
-302
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+1769
-302
lines changed

docs/en_US/release_notes_9_0.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ New features
2222

2323
| `Issue #6513 <https://github.com/pgadmin-org/pgadmin4/issues/6513>`_ - Change button labels and color in delete confirmation dialog for all objects to improve UX.
2424
| `Issue #7708 <https://github.com/pgadmin-org/pgadmin4/issues/7708>`_ - Enhanced pgAdmin 4 with support for Workspace layouts.
25+
| `Issue #8332 <https://github.com/pgadmin-org/pgadmin4/issues/8332>`_ - Added the MAINTAIN privilege for PostgreSQL version 17 and above.
2526
2627
Housekeeping
2728
************
@@ -35,6 +36,7 @@ Bug fixes
3536
| `Issue #8072 <https://github.com/pgadmin-org/pgadmin4/issues/8072>`_ - Fixed an issue where Schema Diff not produce difference script for Index definition with where condition.
3637
| `Issue #8142 <https://github.com/pgadmin-org/pgadmin4/issues/8142>`_ - Correct the documentation for the MFA configuration.
3738
| `Issue #8165 <https://github.com/pgadmin-org/pgadmin4/issues/8165>`_ - Fixed an issue where error message from the database server need space between two sentences.
39+
| `Issue #8199 <https://github.com/pgadmin-org/pgadmin4/issues/8199>`_ - Fixed an issue where query tool throws utf-8 decode error when using cursor with binary data.
3840
| `Issue #8208 <https://github.com/pgadmin-org/pgadmin4/issues/8208>`_ - Allow deleting the entry while creating/adding new label to enumeration type.
3941
| `Issue #8209 <https://github.com/pgadmin-org/pgadmin4/issues/8209>`_ - Fixed an issue where properties dialog throwing an error for Materialized View.
4042
| `Issue #8254 <https://github.com/pgadmin-org/pgadmin4/issues/8254>`_ - Fix a formatting issue in View/Edit tool generated SQL where some filters are applied.
@@ -43,3 +45,4 @@ Bug fixes
4345
| `Issue #8273 <https://github.com/pgadmin-org/pgadmin4/issues/8273>`_ - Fixed an issue where copying query tool output cell is not working if any SQL text is selected.
4446
| `Issue #8299 <https://github.com/pgadmin-org/pgadmin4/issues/8299>`_ - Ensure master password pop up is not shown on setting MASTER_PASSWORD_REQUIRED to false.
4547
| `Issue #8309 <https://github.com/pgadmin-org/pgadmin4/issues/8309>`_ - Remove the option "With no data (concurrently)" from Refresh MATERIALIZED VIEW context menu.
48+
| `Issue #8320 <https://github.com/pgadmin-org/pgadmin4/issues/8320>`_ - Fix an issue where wrong information is shown after using the filter on the Dashboard> State tab.

runtime/yarn.lock

Lines changed: 37 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,12 @@ __metadata:
5353
languageName: node
5454
linkType: hard
5555

56-
"@eslint/core@npm:^0.9.0":
57-
version: 0.9.1
58-
resolution: "@eslint/core@npm:0.9.1"
56+
"@eslint/core@npm:^0.10.0":
57+
version: 0.10.0
58+
resolution: "@eslint/core@npm:0.10.0"
5959
dependencies:
6060
"@types/json-schema": ^7.0.15
61-
checksum: 33c8159842cc3a646caa267c008cb567ca60e0220bcdcf6e426128409953b8f6a9b142246db616c71d06331edf769c192d7e2792b3f19c2a6b8179e491512d89
61+
checksum: 851fa099b3fef00e7ff8ece14523aff0822d3e1b47b047ab0a0d898e80c1362a22aa8b7778727231c383246932ecb63de79b4448ec1e500901c578580b087573
6262
languageName: node
6363
linkType: hard
6464

@@ -79,10 +79,10 @@ __metadata:
7979
languageName: node
8080
linkType: hard
8181

82-
"@eslint/js@npm:9.17.0":
83-
version: 9.17.0
84-
resolution: "@eslint/js@npm:9.17.0"
85-
checksum: b68a14ff518ffa12e3b85fa9c72b818faeff092285acfbf02da2d0fb12a681b76651638881e98845f2df2ed346ed0d33faeb1d9caac163daf232c223b7efe89c
82+
"@eslint/js@npm:9.18.0":
83+
version: 9.18.0
84+
resolution: "@eslint/js@npm:9.18.0"
85+
checksum: a47cfcc684f87094992fe4a5c5e54018393231d8d42bd2150a08eb167813a6bf8d7c7ccbc9611933e5f782ff3b96a06c9be8d19342965cadd4530a45521b8981
8686
languageName: node
8787
linkType: hard
8888

@@ -93,12 +93,13 @@ __metadata:
9393
languageName: node
9494
linkType: hard
9595

96-
"@eslint/plugin-kit@npm:^0.2.3":
97-
version: 0.2.4
98-
resolution: "@eslint/plugin-kit@npm:0.2.4"
96+
"@eslint/plugin-kit@npm:^0.2.5":
97+
version: 0.2.5
98+
resolution: "@eslint/plugin-kit@npm:0.2.5"
9999
dependencies:
100+
"@eslint/core": ^0.10.0
100101
levn: ^0.4.1
101-
checksum: 5693465dca5fc6f27b090f987b51bc738f48c6a6b5678dcc1791522921834206388b462578edd362d458e8de6dcd21cce1a2e8cff47d1512411ba0389112c231
102+
checksum: 423db33e67ff16f6db71bf8bfc8d5b0c2c4fe6f2209131e5886a573bf994bfc72ab4f825068d6521f186247731d4c9d48eb42a5e5ce389c6faa275752c0e9459
102103
languageName: node
103104
linkType: hard
104105

@@ -199,20 +200,20 @@ __metadata:
199200
linkType: hard
200201

201202
"@types/node@npm:*":
202-
version: 22.10.2
203-
resolution: "@types/node@npm:22.10.2"
203+
version: 22.10.6
204+
resolution: "@types/node@npm:22.10.6"
204205
dependencies:
205206
undici-types: ~6.20.0
206-
checksum: b22401e6e7d1484e437d802c72f5560e18100b1257b9ad0574d6fe05bebe4dbcb620ea68627d1f1406775070d29ace8b6b51f57e7b1c7b8bafafe6da7f29c843
207+
checksum: 3bf26c7df8b7f0085f7a53d1f4ee124f8af01c7e4c072c3c10ec0ba91a03611fce124fed279f512b1ff259835bee5589e02f1ba0914ca6b372a7f99aef5faa3c
207208
languageName: node
208209
linkType: hard
209210

210211
"@types/node@npm:^20.9.0":
211-
version: 20.17.10
212-
resolution: "@types/node@npm:20.17.10"
212+
version: 20.17.12
213+
resolution: "@types/node@npm:20.17.12"
213214
dependencies:
214215
undici-types: ~6.19.2
215-
checksum: 44cfa7cd9a4ebb8f74efa4b89cf963ca0e522121a7d24d8121d40872bbcfd607eaccdc203c4fe92c8b587125be9ca7b071fe4f9b356f263434b8a8512dbebef0
216+
checksum: 0c0dbeb4e1480a23071ec38e97bb3d776e0ae9828174bf45f9edcf277caa955945cb10d31d84f7a73c66aaf92ae2e022be6331bd00a4bed1f2ad9639a411d17e
216217
languageName: node
217218
linkType: hard
218219

@@ -626,15 +627,15 @@ __metadata:
626627
linkType: hard
627628

628629
"electron@npm:latest":
629-
version: 33.2.1
630-
resolution: "electron@npm:33.2.1"
630+
version: 33.3.1
631+
resolution: "electron@npm:33.3.1"
631632
dependencies:
632633
"@electron/get": ^2.0.0
633634
"@types/node": ^20.9.0
634635
extract-zip: ^2.0.1
635636
bin:
636637
electron: cli.js
637-
checksum: c5b7d5fe56f831da5d14be9d24d0a29fdb392d5b4e593b31200a9c01e6260d87bba1216c4cc17297b2f4838e0893428464b9e2ca71c3eaff499dbff1981c0670
638+
checksum: 338b0ae0984b004ba9b387d27c39b146a04689b2afd7e19260599464c67f597a7ea87d0e46b86ffedafc5f66aa4423c0c0dddfa69873379608c447ea232a0acc
638639
languageName: node
639640
linkType: hard
640641

@@ -735,16 +736,16 @@ __metadata:
735736
linkType: hard
736737

737738
"eslint@npm:^9.17.0":
738-
version: 9.17.0
739-
resolution: "eslint@npm:9.17.0"
739+
version: 9.18.0
740+
resolution: "eslint@npm:9.18.0"
740741
dependencies:
741742
"@eslint-community/eslint-utils": ^4.2.0
742743
"@eslint-community/regexpp": ^4.12.1
743744
"@eslint/config-array": ^0.19.0
744-
"@eslint/core": ^0.9.0
745+
"@eslint/core": ^0.10.0
745746
"@eslint/eslintrc": ^3.2.0
746-
"@eslint/js": 9.17.0
747-
"@eslint/plugin-kit": ^0.2.3
747+
"@eslint/js": 9.18.0
748+
"@eslint/plugin-kit": ^0.2.5
748749
"@humanfs/node": ^0.16.6
749750
"@humanwhocodes/module-importer": ^1.0.1
750751
"@humanwhocodes/retry": ^0.4.1
@@ -779,7 +780,7 @@ __metadata:
779780
optional: true
780781
bin:
781782
eslint: bin/eslint.js
782-
checksum: 0caae58c53bf4dc9b4893d75e62339e4c40fe5589652a3cb63f30a15bad1f34f8f784ca4fca471bbffedabee516a9f9620ebc33818b55e1b715e8f000865c851
783+
checksum: 5e05ae9d25a42ae8cad86a0118ea45107b42446f3614cd0ba822affa3eb85d746e0820529b1fde72820f24aa3c3447d3260505a5ee5e95be1b8b7455740a2256
783784
languageName: node
784785
linkType: hard
785786

@@ -884,9 +885,9 @@ __metadata:
884885
linkType: hard
885886

886887
"fast-uri@npm:^3.0.1":
887-
version: 3.0.3
888-
resolution: "fast-uri@npm:3.0.3"
889-
checksum: c52e6c86465f5c240e84a4485fb001088cc743d261a4b54b0050ce4758b1648bdbe53da1328ef9620149dca1435e3de64184f226d7c0a3656cb5837b3491e149
888+
version: 3.0.5
889+
resolution: "fast-uri@npm:3.0.5"
890+
checksum: b56cda8e7355bad9adcc3c2eacd94cb592eaa9536497a4779a9527784f4f95a3755f30525c63583bd85807c493b396ac89926c970f19a60905ed875121ca78fd
890891
languageName: node
891892
linkType: hard
892893

@@ -1696,9 +1697,9 @@ __metadata:
16961697
linkType: hard
16971698

16981699
"type-fest@npm:^4.18.2, type-fest@npm:^4.20.0":
1699-
version: 4.30.2
1700-
resolution: "type-fest@npm:4.30.2"
1701-
checksum: 861f7ae761fa11194743318a486c04b369f6f39060c8c24a099880478efa5c7562b72ad88c38fb7d7dc57111fb378b8922fceddaff363cfc002c6005a99d6bb6
1700+
version: 4.32.0
1701+
resolution: "type-fest@npm:4.32.0"
1702+
checksum: 0010e2fbe040e46f9d3a76a97e8917e5f0c9a5d7883529a3916fac5c2d2638429864b7dfc083d2c7883894e3c8cee026f91d0301c64fa74c1c0c2dafb488e3c6
17021703
languageName: node
17031704
linkType: hard
17041705

@@ -1750,9 +1751,9 @@ __metadata:
17501751
linkType: hard
17511752

17521753
"when-exit@npm:^2.1.1":
1753-
version: 2.1.3
1754-
resolution: "when-exit@npm:2.1.3"
1755-
checksum: d4242a15148df89e08e518b4c372580516d45a6ab527f14643a3789c6edb9ccfc788b1d717728c1a33c85dc53badefb511a3ee704ea61c4e86f693f3bf7666f2
1754+
version: 2.1.4
1755+
resolution: "when-exit@npm:2.1.4"
1756+
checksum: d77635a0ed43bb63b3b41930637db16fb1e4e8630f5c6efd4aa669322c32b36ba750b7484991f806d3ac56f4e21cdf3925f82fff289b90706cc21e6745038a26
17561757
languageName: node
17571758
linkType: hard
17581759

web/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"license": "PostgreSQL",
99
"devDependencies": {
1010
"@babel/core": "^7.10.2",
11-
"@babel/eslint-parser": "^7.24.7",
11+
"@babel/eslint-parser": "^7.26.5",
1212
"@babel/eslint-plugin": "^7.24.7",
1313
"@babel/plugin-proposal-object-rest-spread": "^7.10.1",
1414
"@babel/plugin-syntax-jsx": "^7.16.0",
@@ -85,7 +85,7 @@
8585
"@projectstorm/react-diagrams": "^7.0.4",
8686
"@simonwep/pickr": "^1.5.1",
8787
"@szhsin/react-menu": "^4.2.2",
88-
"@tanstack/react-query": "5.62.15",
88+
"@tanstack/react-query": "5.64.0",
8989
"@tanstack/react-table": "^8.16.0",
9090
"@tanstack/react-virtual": "^3.8.4",
9191
"@types/classnames": "^2.3.4",
@@ -151,7 +151,7 @@
151151
"uplot-react": "^1.1.4",
152152
"valid-filename": "^4.0.0",
153153
"wkx": "^0.5.0",
154-
"zustand": "^5.0.1"
154+
"zustand": "^5.0.3"
155155
},
156156
"resolutions": {
157157
"rc-resize-observer": "1.4.0"

web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/__init__.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,11 @@ def wrap(*args, **kwargs):
420420
'triggers/sql/{0}/#{1}#'.format(self.manager.server_type,
421421
self.manager.version)
422422

423+
self.allowed_privileges = ["a", "r", "w", "d", "D", "x", "t"]
424+
if self.manager.version >= 170000:
425+
self.allowed_privileges = \
426+
["a", "r", "w", "d", "D", "x", "t", "m"]
427+
423428
return f(*args, **kwargs)
424429

425430
return wrap
@@ -914,7 +919,7 @@ def sql(self, gid, sid, did, scid, foid=None, **kwargs):
914919
# Parse Privileges
915920
if 'relacl' in data:
916921
data['relacl'] = parse_priv_to_db(data['relacl'],
917-
["a", "r", "w", "x"])
922+
self.allowed_privileges)
918923

919924
SQL = render_template("/".join([self.template_path,
920925
self._CREATE_SQL]),
@@ -991,21 +996,21 @@ def msql(self, gid, sid, did, scid, foid=None):
991996
return internal_server_error(errormsg=str(e))
992997

993998
@staticmethod
994-
def _parse_privileges(data):
999+
def _parse_privileges(data, allowed_privileges):
9951000
"""
9961001
Parser privilege data as per type.
9971002
:param data: Data.
9981003
:return:
9991004
"""
10001005
if 'relacl' in data and 'added' in data['relacl']:
10011006
data['relacl']['added'] = parse_priv_to_db(
1002-
data['relacl']['added'], ["a", "r", "w", "x"])
1007+
data['relacl']['added'], allowed_privileges)
10031008
if 'relacl' in data and 'changed' in data['relacl']:
10041009
data['relacl']['changed'] = parse_priv_to_db(
1005-
data['relacl']['changed'], ["a", "r", "w", "x"])
1010+
data['relacl']['changed'], allowed_privileges)
10061011
if 'relacl' in data and 'deleted' in data['relacl']:
10071012
data['relacl']['deleted'] = parse_priv_to_db(
1008-
data['relacl']['deleted'], ["a", "r", "w", "x"])
1013+
data['relacl']['deleted'], allowed_privileges)
10091014

10101015
@staticmethod
10111016
def _check_old_col_ops(old_col_frmt_options, option, col):
@@ -1120,7 +1125,7 @@ def get_sql(self, **kwargs):
11201125
data['schema'] = old_data['basensp']
11211126

11221127
# Parse Privileges
1123-
ForeignTableView._parse_privileges(data)
1128+
ForeignTableView._parse_privileges(data, self.allowed_privileges)
11241129

11251130
# If ftsrvname is changed while comparing two schemas
11261131
# then we need to drop foreign table and recreate it
@@ -1175,7 +1180,7 @@ def get_sql(self, **kwargs):
11751180
# Parse Privileges
11761181
if 'relacl' in data:
11771182
data['relacl'] = parse_priv_to_db(data['relacl'],
1178-
["a", "r", "w", "x"])
1183+
self.allowed_privileges)
11791184

11801185
sql = render_template("/".join([self.template_path,
11811186
self._CREATE_SQL]), data=data,

web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/static/js/foreign_table.ui.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import VariableSchema from 'top/browser/server_groups/servers/static/js/variable
1717
import _ from 'lodash';
1818
import { getNodePrivilegeRoleSchema } from '../../../../../static/js/privilege.ui';
1919
import { getNodeAjaxOptions } from '../../../../../../../static/js/node_ajax';
20+
import { getPrivilegesForTableAndLikeObjects } from '../../../tables/static/js/table.ui';
2021

2122

2223
export default class ForeignTableSchema extends BaseUISchema {
@@ -50,6 +51,7 @@ export default class ForeignTableSchema extends BaseUISchema {
5051
nodeInfo: null,
5152
...fieldOptions,
5253
};
54+
this.nodeInfo = this.fieldOptions.nodeInfo;
5355

5456
this.columnsObj = getNodeColumnSchema(this.fieldOptions.nodeInfo, this.fieldOptions.nodeData, this.fieldOptions.pgBrowser);
5557
}
@@ -222,7 +224,7 @@ export default class ForeignTableSchema extends BaseUISchema {
222224
},
223225
{
224226
id: 'relacl', label: gettext('Privileges'), type: 'collection',
225-
schema: this.getPrivilegeRoleSchema(['a','r','w','x']),
227+
schema: this.getPrivilegeRoleSchema(getPrivilegesForTableAndLikeObjects(obj.getServerVersion())),
226228
uniqueCol : ['grantee', 'grantor'],
227229
editable: false,
228230
group: gettext('Security'), mode: ['edit', 'create'],

web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/default/acl.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ FROM
1111
WHEN 'DELETE' THEN 'd'
1212
WHEN 'EXECUTE' THEN 'X'
1313
WHEN 'INSERT' THEN 'a'
14+
WHEN 'MAINTAIN' THEN 'm'
1415
WHEN 'REFERENCES' THEN 'x'
1516
WHEN 'SELECT' THEN 'r'
1617
WHEN 'TEMPORARY' THEN 'T'

0 commit comments

Comments
 (0)