diff --git a/Make.bat b/Make.bat index 5ca7a6fbff3..ae30be3fa6a 100644 --- a/Make.bat +++ b/Make.bat @@ -233,6 +233,8 @@ REM Main build sequence Ends RD /Q /S "%BUILDROOT%\web\regression" 1> nul 2>&1 ECHO Removing tools... RD /Q /S "%BUILDROOT%\web\tools" 1> nul 2>&1 + ECHO Removing yarn cache... + RD /Q /S "%BUILDROOT%\web\.yarn" 1> nul 2>&1 ECHO Removing any existing configurations... DEL /q "%BUILDROOT%\web\pgadmin4.db" 1> nul 2>&1 DEL /q "%BUILDROOT%\web\config_local.py" 1> nul 2>&1 diff --git a/docs/en_US/images/preferences_browser_breadcrumbs.png b/docs/en_US/images/preferences_browser_breadcrumbs.png index 8257207b52f..196b75a2947 100644 Binary files a/docs/en_US/images/preferences_browser_breadcrumbs.png and b/docs/en_US/images/preferences_browser_breadcrumbs.png differ diff --git a/docs/en_US/images/preferences_browser_display.png b/docs/en_US/images/preferences_browser_display.png index 52e4cc55d65..69a1d94214c 100644 Binary files a/docs/en_US/images/preferences_browser_display.png and b/docs/en_US/images/preferences_browser_display.png differ diff --git a/docs/en_US/images/preferences_browser_keyboard_shortcuts.png b/docs/en_US/images/preferences_browser_keyboard_shortcuts.png index f73406b782d..ac2885cd5e5 100644 Binary files a/docs/en_US/images/preferences_browser_keyboard_shortcuts.png and b/docs/en_US/images/preferences_browser_keyboard_shortcuts.png differ diff --git a/docs/en_US/images/preferences_browser_nodes.png b/docs/en_US/images/preferences_browser_nodes.png index 00d06cd04d9..984b31c0a1c 100644 Binary files a/docs/en_US/images/preferences_browser_nodes.png and b/docs/en_US/images/preferences_browser_nodes.png differ diff --git a/docs/en_US/images/preferences_browser_processes.png b/docs/en_US/images/preferences_browser_processes.png index 6b6ca1712a6..4fb38844021 100644 Binary files a/docs/en_US/images/preferences_browser_processes.png and b/docs/en_US/images/preferences_browser_processes.png differ diff --git a/docs/en_US/images/preferences_browser_properties.png b/docs/en_US/images/preferences_browser_properties.png index a2094b52360..0c16cb577c5 100644 Binary files a/docs/en_US/images/preferences_browser_properties.png and b/docs/en_US/images/preferences_browser_properties.png differ diff --git a/docs/en_US/images/preferences_browser_tab_settings.png b/docs/en_US/images/preferences_browser_tab_settings.png index 16f2bd11083..b15d73e78e0 100644 Binary files a/docs/en_US/images/preferences_browser_tab_settings.png and b/docs/en_US/images/preferences_browser_tab_settings.png differ diff --git a/docs/en_US/images/preferences_dashboard_display.png b/docs/en_US/images/preferences_dashboard_display.png index 2d0a6b99f18..39f31c794f6 100644 Binary files a/docs/en_US/images/preferences_dashboard_display.png and b/docs/en_US/images/preferences_dashboard_display.png differ diff --git a/docs/en_US/images/preferences_dashboard_graphs.png b/docs/en_US/images/preferences_dashboard_graphs.png index bcff2963b10..4fbf34fb743 100644 Binary files a/docs/en_US/images/preferences_dashboard_graphs.png and b/docs/en_US/images/preferences_dashboard_graphs.png differ diff --git a/docs/en_US/images/preferences_dashboard_refresh.png b/docs/en_US/images/preferences_dashboard_refresh.png index 2694ffbbf58..5a2e0b7d9f2 100644 Binary files a/docs/en_US/images/preferences_dashboard_refresh.png and b/docs/en_US/images/preferences_dashboard_refresh.png differ diff --git a/docs/en_US/images/preferences_debugger_keyboard_shortcuts.png b/docs/en_US/images/preferences_debugger_keyboard_shortcuts.png index ec76b8ee273..10ec903df6b 100644 Binary files a/docs/en_US/images/preferences_debugger_keyboard_shortcuts.png and b/docs/en_US/images/preferences_debugger_keyboard_shortcuts.png differ diff --git a/docs/en_US/images/preferences_erd_keyboard_shortcuts.png b/docs/en_US/images/preferences_erd_keyboard_shortcuts.png index f76f6b7ee3e..3fda01a16fd 100644 Binary files a/docs/en_US/images/preferences_erd_keyboard_shortcuts.png and b/docs/en_US/images/preferences_erd_keyboard_shortcuts.png differ diff --git a/docs/en_US/images/preferences_erd_options.png b/docs/en_US/images/preferences_erd_options.png index 8bb55273be5..6f8b6878b20 100644 Binary files a/docs/en_US/images/preferences_erd_options.png and b/docs/en_US/images/preferences_erd_options.png differ diff --git a/docs/en_US/images/preferences_graph_visualiser.png b/docs/en_US/images/preferences_graph_visualiser.png index 60a5bbfec20..92436ef5833 100644 Binary files a/docs/en_US/images/preferences_graph_visualiser.png and b/docs/en_US/images/preferences_graph_visualiser.png differ diff --git a/docs/en_US/images/preferences_misc_themes.png b/docs/en_US/images/preferences_misc_themes.png index 770fbf6cead..3b24296177f 100644 Binary files a/docs/en_US/images/preferences_misc_themes.png and b/docs/en_US/images/preferences_misc_themes.png differ diff --git a/docs/en_US/images/preferences_misc_user_language.png b/docs/en_US/images/preferences_misc_user_language.png index 932454f8732..9020a280b39 100644 Binary files a/docs/en_US/images/preferences_misc_user_language.png and b/docs/en_US/images/preferences_misc_user_language.png differ diff --git a/docs/en_US/images/preferences_paths_binary.png b/docs/en_US/images/preferences_paths_binary.png index ccab4f465cf..a76160284ef 100644 Binary files a/docs/en_US/images/preferences_paths_binary.png and b/docs/en_US/images/preferences_paths_binary.png differ diff --git a/docs/en_US/images/preferences_paths_help.png b/docs/en_US/images/preferences_paths_help.png index 18814c47874..bec54f9acf1 100644 Binary files a/docs/en_US/images/preferences_paths_help.png and b/docs/en_US/images/preferences_paths_help.png differ diff --git a/docs/en_US/images/preferences_schema_diff.png b/docs/en_US/images/preferences_schema_diff.png index 74567e46489..33685849414 100644 Binary files a/docs/en_US/images/preferences_schema_diff.png and b/docs/en_US/images/preferences_schema_diff.png differ diff --git a/docs/en_US/images/preferences_sql_auto_completion.png b/docs/en_US/images/preferences_sql_auto_completion.png index 09b1a763df6..e5bb3869e6c 100644 Binary files a/docs/en_US/images/preferences_sql_auto_completion.png and b/docs/en_US/images/preferences_sql_auto_completion.png differ diff --git a/docs/en_US/images/preferences_sql_csv_output.png b/docs/en_US/images/preferences_sql_csv_output.png index e2a6e049645..1cd645dafaf 100644 Binary files a/docs/en_US/images/preferences_sql_csv_output.png and b/docs/en_US/images/preferences_sql_csv_output.png differ diff --git a/docs/en_US/images/preferences_sql_display.png b/docs/en_US/images/preferences_sql_display.png index f81b6451d24..574e82184ae 100644 Binary files a/docs/en_US/images/preferences_sql_display.png and b/docs/en_US/images/preferences_sql_display.png differ diff --git a/docs/en_US/images/preferences_sql_editor.png b/docs/en_US/images/preferences_sql_editor.png index d47dcfc7d12..19416bd29ea 100644 Binary files a/docs/en_US/images/preferences_sql_editor.png and b/docs/en_US/images/preferences_sql_editor.png differ diff --git a/docs/en_US/images/preferences_sql_explain.png b/docs/en_US/images/preferences_sql_explain.png index d23026d6246..3709ca65965 100644 Binary files a/docs/en_US/images/preferences_sql_explain.png and b/docs/en_US/images/preferences_sql_explain.png differ diff --git a/docs/en_US/images/preferences_sql_formatting.png b/docs/en_US/images/preferences_sql_formatting.png index 9cd3a4f5a66..d121993b6da 100644 Binary files a/docs/en_US/images/preferences_sql_formatting.png and b/docs/en_US/images/preferences_sql_formatting.png differ diff --git a/docs/en_US/images/preferences_sql_keyboard_shortcuts.png b/docs/en_US/images/preferences_sql_keyboard_shortcuts.png index 8f3a9894b50..de61d4fa9c9 100644 Binary files a/docs/en_US/images/preferences_sql_keyboard_shortcuts.png and b/docs/en_US/images/preferences_sql_keyboard_shortcuts.png differ diff --git a/docs/en_US/images/preferences_sql_options.png b/docs/en_US/images/preferences_sql_options.png index a61563f6c39..547dd7e7c4f 100644 Binary files a/docs/en_US/images/preferences_sql_options.png and b/docs/en_US/images/preferences_sql_options.png differ diff --git a/docs/en_US/images/preferences_sql_results_grid.png b/docs/en_US/images/preferences_sql_results_grid.png index a3c8d23e74e..6c4a64a7c45 100644 Binary files a/docs/en_US/images/preferences_sql_results_grid.png and b/docs/en_US/images/preferences_sql_results_grid.png differ diff --git a/docs/en_US/images/preferences_storage_options.png b/docs/en_US/images/preferences_storage_options.png index 3cbd0e15bd8..75aa5ddf849 100644 Binary files a/docs/en_US/images/preferences_storage_options.png and b/docs/en_US/images/preferences_storage_options.png differ diff --git a/docs/en_US/preferences.rst b/docs/en_US/preferences.rst index c2d6105fff8..6ffa959e8f5 100644 --- a/docs/en_US/preferences.rst +++ b/docs/en_US/preferences.rst @@ -11,9 +11,7 @@ The left pane of the *Preferences* dialog displays a tree control; each node of the tree control provides access to options that are related to the node under which they are displayed. -* Use the plus sign (+) to the left of a node name to expand a segment of the - tree control. -* Use the minus sign (-) to the left of a node name to close that node. +* Click the *Reset all preferences* button to restore all preferences to their default values. The Browser Node **************** diff --git a/docs/en_US/release_notes_8_12.rst b/docs/en_US/release_notes_8_12.rst index f027c462e81..3fc03d70dde 100644 --- a/docs/en_US/release_notes_8_12.rst +++ b/docs/en_US/release_notes_8_12.rst @@ -20,7 +20,8 @@ Bundled PostgreSQL Utilities New features ************ - | `Issue #7293 `_ - Allow running non-continuous selected SQL code blocks in the query tool. + | `Issue #1900 `_ - Added feature to restore preferences to their default values. + | `Issue #7293 `_ - Allow running non-continuous selected SQL code blocks in the query tool. Housekeeping ************ @@ -29,4 +30,5 @@ Housekeeping Bug fixes ********* - | `Issue #7076 `_ - Revamp the current password saving implementation to a keyring and reduce repeated OS user password prompts. \ No newline at end of file + | `Issue #7076 `_ - Revamp the current password saving implementation to a keyring and reduce repeated OS user password prompts. + | `Issue #7571 `_ - Fixed an issue where users could not use pgAdmin if they did not have access to the management database. \ No newline at end of file diff --git a/pkg/linux/build-functions.sh b/pkg/linux/build-functions.sh index 5944ca6540e..586aee22066 100644 --- a/pkg/linux/build-functions.sh +++ b/pkg/linux/build-functions.sh @@ -180,6 +180,8 @@ _build_runtime() { yarn plugin import workspace-tools yarn workspaces focus --production + # remove the yarn cache + rm -rf .yarn .yarn* popd > /dev/null || exit # Create the icon @@ -232,7 +234,7 @@ _copy_code() { cp "${SOURCEDIR}/pkg/linux/config_distro.py" "${SERVERROOT}/usr/${APP_NAME}/web/" cd "${SERVERROOT}/usr/${APP_NAME}/web/" || exit rm -f pgadmin4.db config_local.* - rm -rf jest.config.js babel.* package.json node_modules/ regression/ tools/ pgadmin/static/js/generated/.cache + rm -rf jest.config.js babel.* package.json .yarn* yarn* .editorconfig .eslint* node_modules/ regression/ tools/ pgadmin/static/js/generated/.cache find . -name "tests" -type d -print0 | xargs -0 rm -rf find . -name "feature_tests" -type d -print0 | xargs -0 rm -rf find . -name "__pycache__" -type d -print0 | xargs -0 rm -rf diff --git a/pkg/mac/build-functions.sh b/pkg/mac/build-functions.sh index 5cca43a0f16..454744a569d 100644 --- a/pkg/mac/build-functions.sh +++ b/pkg/mac/build-functions.sh @@ -62,6 +62,8 @@ _build_runtime() { yarn plugin import workspace-tools yarn workspaces focus --production + # remove the yarn cache + rm -rf .yarn .yarn* popd > /dev/null || exit } diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/default/variables.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/default/variables.sql index c75e5b47f0f..0f777b0c098 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/default/variables.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/default/variables.sql @@ -1,6 +1,6 @@ SELECT name, vartype, min_val, max_val, enumvals FROM - pg_catalog.pg_settings + pg_catalog.pg_show_all_settings() WHERE context in ('user', 'superuser'); diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/variables.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/variables.sql index c75e5b47f0f..0f777b0c098 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/variables.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/variables.sql @@ -1,6 +1,6 @@ SELECT name, vartype, min_val, max_val, enumvals FROM - pg_catalog.pg_settings + pg_catalog.pg_show_all_settings() WHERE context in ('user', 'superuser'); diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/11_plus/variables.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/11_plus/variables.sql index c75e5b47f0f..0f777b0c098 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/11_plus/variables.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/11_plus/variables.sql @@ -1,6 +1,6 @@ SELECT name, vartype, min_val, max_val, enumvals FROM - pg_catalog.pg_settings + pg_catalog.pg_show_all_settings() WHERE context in ('user', 'superuser'); diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/default/variables.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/default/variables.sql index c75e5b47f0f..0f777b0c098 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/default/variables.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/default/variables.sql @@ -1,6 +1,6 @@ SELECT name, vartype, min_val, max_val, enumvals FROM - pg_catalog.pg_settings + pg_catalog.pg_show_all_settings() WHERE context in ('user', 'superuser'); diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/default/variables.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/default/variables.sql index c75e5b47f0f..0f777b0c098 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/default/variables.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/default/variables.sql @@ -1,6 +1,6 @@ SELECT name, vartype, min_val, max_val, enumvals FROM - pg_catalog.pg_settings + pg_catalog.pg_show_all_settings() WHERE context in ('user', 'superuser'); diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/default/variables.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/default/variables.sql index c75e5b47f0f..0f777b0c098 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/default/variables.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/default/variables.sql @@ -1,6 +1,6 @@ SELECT name, vartype, min_val, max_val, enumvals FROM - pg_catalog.pg_settings + pg_catalog.pg_show_all_settings() WHERE context in ('user', 'superuser'); diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/partitions/sql/pg/12_plus/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/partitions/sql/pg/12_plus/properties.sql index b4c1b907d7f..c46854f1106 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/partitions/sql/pg/12_plus/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/partitions/sql/pg/12_plus/properties.sql @@ -49,7 +49,7 @@ SELECT rel.oid, rel.relname AS name, rel.reltablespace AS spcoid,rel.relacl AS r substring(pg_catalog.array_to_string(tst.reloptions, ',') FROM 'autovacuum_freeze_table_age=([0-9]*)') AS toast_autovacuum_freeze_table_age, rel.reloptions AS reloptions, tst.reloptions AS toast_reloptions, rel.reloftype, typ.typname, typ.typrelid AS typoid, am.amname, - (SELECT st.setting from pg_catalog.pg_settings st WHERE st.name = 'default_table_access_method') as default_amname, + (SELECT st.setting from pg_catalog.pg_show_all_settings() st WHERE st.name = 'default_table_access_method') as default_amname, (CASE WHEN rel.reltoastrelid = 0 THEN false ELSE true END) AS hastoasttable, (SELECT pg_catalog.array_agg(provider || '=' || label) FROM pg_catalog.pg_seclabels sl1 WHERE sl1.objoid=rel.oid AND sl1.objsubid=0) AS seclabels, (CASE WHEN rel.oid <= {{ datlastsysoid}}::oid THEN true ElSE false END) AS is_sys_table, diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/partitions/sql/ppas/12_plus/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/partitions/sql/ppas/12_plus/properties.sql index db03b0310a8..e7ec8e3b271 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/partitions/sql/ppas/12_plus/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/partitions/sql/ppas/12_plus/properties.sql @@ -49,7 +49,7 @@ SELECT rel.oid, rel.relname AS name, rel.reltablespace AS spcoid,rel.relacl AS r substring(pg_catalog.array_to_string(tst.reloptions, ',') FROM 'autovacuum_freeze_table_age=([0-9]*)') AS toast_autovacuum_freeze_table_age, rel.reloptions AS reloptions, tst.reloptions AS toast_reloptions, rel.reloftype, typ.typname, typ.typrelid AS typoid, am.amname, - (SELECT st.setting from pg_catalog.pg_settings st WHERE st.name = 'default_table_access_method') as default_amname, + (SELECT st.setting from pg_catalog.pg_show_all_settings() st WHERE st.name = 'default_table_access_method') as default_amname, (CASE WHEN rel.reltoastrelid = 0 THEN false ELSE true END) AS hastoasttable, (SELECT pg_catalog.array_agg(provider || '=' || label) FROM pg_catalog.pg_seclabels sl1 WHERE sl1.objoid=rel.oid AND sl1.objsubid=0) AS seclabels, (CASE WHEN rel.oid <= {{ datlastsysoid}}::oid THEN true ElSE false END) AS is_sys_table, diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/properties.sql index ea420a44f34..99a4b51b539 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/properties.sql @@ -32,7 +32,7 @@ SELECT rel.oid, rel.relname AS name, rel.reltablespace AS spcoid,rel.relacl AS r JOIN pg_catalog.pg_namespace n ON n.oid=c.relnamespace WHERE i.inhrelid = rel.oid) AS inherited_tables_cnt, (CASE WHEN rel.relpersistence = 'u' THEN true ELSE false END) AS relpersistence, - (SELECT st.setting from pg_catalog.pg_settings st WHERE st.name = 'default_table_access_method') as default_amname, + (SELECT st.setting from pg_catalog.pg_show_all_settings() st WHERE st.name = 'default_table_access_method') as default_amname, substring(pg_catalog.array_to_string(rel.reloptions, ',') FROM 'fillfactor=([0-9]*)') AS fillfactor, substring(pg_catalog.array_to_string(rel.reloptions, ',') FROM 'parallel_workers=([0-9]*)') AS parallel_workers, substring(pg_catalog.array_to_string(rel.reloptions, ',') FROM 'toast_tuple_target=([0-9]*)') AS toast_tuple_target, diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/vacuum_settings/sql/vacuum_defaults.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/vacuum_settings/sql/vacuum_defaults.sql index 67e768abce5..7993fe697fb 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/vacuum_settings/sql/vacuum_defaults.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/vacuum_settings/sql/vacuum_defaults.sql @@ -1,2 +1,2 @@ {# ============= Fetch list of default values for autovacuum parameters =============== #} -SELECT name, setting::numeric AS setting FROM pg_catalog.pg_settings WHERE name IN({{ columns }}) ORDER BY name +SELECT name, setting::numeric AS setting FROM pg_catalog.pg_show_all_settings() WHERE name IN({{ columns }}) ORDER BY name diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/pg/12_plus/sql/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/pg/12_plus/sql/properties.sql index 96f4fda4abc..03472ec886f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/pg/12_plus/sql/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/pg/12_plus/sql/properties.sql @@ -11,7 +11,7 @@ SELECT JOIN pg_catalog.pg_tablespace sp ON dtb.dattablespace=sp.oid WHERE dtb.oid = {{ did }}::oid) END as spcname, - (SELECT st.setting from pg_catalog.pg_settings st + (SELECT st.setting from pg_catalog.pg_show_all_settings() st WHERE st.name = 'default_table_access_method') as default_amname, c.relacl, nsp.nspname as schema, diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/ppas/12_plus/sql/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/ppas/12_plus/sql/properties.sql index c69930da1cd..ae8df20fa0f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/ppas/12_plus/sql/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/ppas/12_plus/sql/properties.sql @@ -11,7 +11,7 @@ SELECT JOIN pg_catalog.pg_tablespace sp ON dtb.dattablespace=sp.oid WHERE dtb.oid = {{ did }}::oid) END as spcname, - (SELECT st.setting from pg_catalog.pg_settings st + (SELECT st.setting from pg_catalog.pg_show_all_settings() st WHERE st.name = 'default_table_access_method') as default_amname, c.relacl, nsp.nspname as schema, diff --git a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/variables.sql b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/variables.sql index ff30cb70557..696d9139f9a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/variables.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/variables.sql @@ -1,2 +1,2 @@ SELECT name, vartype, min_val, max_val, enumvals -FROM pg_catalog.pg_settings WHERE context in ('user', 'superuser') +FROM pg_catalog.pg_show_all_settings() WHERE context in ('user', 'superuser') diff --git a/web/pgadmin/browser/server_groups/servers/roles/__init__.py b/web/pgadmin/browser/server_groups/servers/roles/__init__.py index 98554b33eb3..b2ef88389a2 100644 --- a/web/pgadmin/browser/server_groups/servers/roles/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/roles/__init__.py @@ -1261,7 +1261,7 @@ def voptions(self, gid, sid): name, vartype, min_val::numeric AS min_val, max_val::numeric AS max_val, enumvals FROM - pg_settings + pg_show_all_settings() WHERE context in ('user', 'superuser') ) a""") diff --git a/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/variables.sql b/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/variables.sql index 72fd0bf07eb..cd05afb203e 100644 --- a/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/variables.sql +++ b/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/variables.sql @@ -1,4 +1,4 @@ {### SQL to fetch tablespace object options ###} SELECT name, vartype, min_val, max_val, enumvals -FROM pg_catalog.pg_settings +FROM pg_catalog.pg_show_all_settings() WHERE name IN ('seq_page_cost', 'random_page_cost', 'effective_io_concurrency'); diff --git a/web/pgadmin/dashboard/templates/dashboard/sql/default/config.sql b/web/pgadmin/dashboard/templates/dashboard/sql/default/config.sql index 68bdfab3a86..6310921bf54 100644 --- a/web/pgadmin/dashboard/templates/dashboard/sql/default/config.sql +++ b/web/pgadmin/dashboard/templates/dashboard/sql/default/config.sql @@ -6,6 +6,6 @@ SELECT unit, short_desc FROM - pg_catalog.pg_settings + pg_catalog.pg_show_all_settings() ORDER BY category diff --git a/web/pgadmin/preferences/__init__.py b/web/pgadmin/preferences/__init__.py index 8ec7c259cdd..bfd1125b713 100644 --- a/web/pgadmin/preferences/__init__.py +++ b/web/pgadmin/preferences/__init__.py @@ -320,3 +320,17 @@ def update(): data={'data': 'Success'}, status=200 ) + + +@blueprint.route("/", methods=['DELETE'], endpoint="reset_prefs") +@pga_login_required +def reset(): + """ + Reset preferences to default + """ + res, msg = Preferences.reset() + + if not res: + return internal_server_error(errormsg=msg) + + return success_return() diff --git a/web/pgadmin/preferences/static/js/components/PreferencesComponent.jsx b/web/pgadmin/preferences/static/js/components/PreferencesComponent.jsx index fe8e5115d70..4aa5af6d149 100644 --- a/web/pgadmin/preferences/static/js/components/PreferencesComponent.jsx +++ b/web/pgadmin/preferences/static/js/components/PreferencesComponent.jsx @@ -20,6 +20,7 @@ import getApiInstance from '../../../../static/js/api_instance'; import CloseSharpIcon from '@mui/icons-material/CloseSharp'; import HelpIcon from '@mui/icons-material/HelpRounded'; import SaveSharpIcon from '@mui/icons-material/SaveSharp'; +import SettingsBackupRestoreIcon from'@mui/icons-material/SettingsBackupRestore'; import pgAdmin from 'sources/pgadmin'; import { DefaultButton, PgIconButton, PrimaryButton } from '../../../../static/js/components/Buttons'; import BaseUISchema from 'sources/SchemaView/base_schema.ui'; @@ -602,6 +603,64 @@ export default function PreferencesComponent({ ...props }) { window.open(url_for('help.static', { 'filename': 'preferences.html' }), 'pgadmin_help'); }; + const reset = () => { + pgAdmin.Browser.notifier.confirm( + gettext('Reset all preferences'), + `${gettext('All preferences will be reset to their default values.')}

${gettext('Do you want to proceed?')}

+ ${gettext('Note:')}
  • ${gettext('The object explorer tree will be refreshed automatically to reflect the changes.')}
  • +
  • ${gettext('If the application language changes, a reload of the application will be required. You can choose to reload later at your convenience.')}
`, + function () {}, + function () {}, + '', + 'Cancel', + function (closeModal) { + return [ + { + type: 'default', + icon: , + label: gettext('Save & Reload'), + onclick: () => { + resetPrefsToDefault(true); + closeModal(); + } + }, { + type: 'primary', + icon: , + label: gettext('Save & Reload Later'), + onclick: () => { + resetPrefsToDefault(false); + closeModal(); + } + } + ]; + } + ); + }; + + const resetPrefsToDefault = (refresh = false) => { + api({ + url: url_for('preferences.index'), + method: 'DELETE' + }).then(()=>{ + if (refresh){ + location.reload(); + return true; + } + preferencesStore.cache(); + pgAdmin.Browser.tree.destroy().then( + () => { + pgAdmin.Browser.Events.trigger( + 'pgadmin-browser:tree:destroyed', undefined, undefined + ); + return true; + } + ); + props.closeModal(); + }).catch((err) => { + pgAdmin.Browser.notifier.alert(err.response.data); + }); + }; + return ( @@ -639,6 +698,10 @@ export default function PreferencesComponent({ ...props }) { /> + }> + {gettext('Reset all preferences')} + + { props.closeModal();}} startIcon={ { props.closeModal();}} />}> { props.closeModal();}} startIcon={ diff --git a/web/pgadmin/static/js/helpers/ModalProvider.jsx b/web/pgadmin/static/js/helpers/ModalProvider.jsx index 1f114b18cba..eff6eb73309 100644 --- a/web/pgadmin/static/js/helpers/ModalProvider.jsx +++ b/web/pgadmin/static/js/helpers/ModalProvider.jsx @@ -41,7 +41,18 @@ export function useModal() { return React.useContext(ModalContext); } -function AlertContent({ text, confirm, okLabel = gettext('OK'), cancelLabel = gettext('Cancel'), onOkClick, onCancelClick }) { +function renderExtraButtons(button) { + switch(button.type) { + case 'primary': + return {button.label}; + case 'default': + return {button.label}; + default: + return {button.label}; + }; +} + +function AlertContent({ text, confirm, okLabel = gettext('OK'), cancelLabel = gettext('Cancel'), onOkClick, onCancelClick, extraButtons }) { return ( {typeof (text) == 'string' ? HTMLReactParser(text) : text} @@ -49,7 +60,12 @@ function AlertContent({ text, confirm, okLabel = gettext('OK'), cancelLabel = ge {confirm && } onClick={onCancelClick} >{cancelLabel} } - } onClick={onOkClick} autoFocus={true} >{okLabel} + { + extraButtons?.length ? + extraButtons.map(button=>renderExtraButtons(button)) + : + } onClick={onOkClick} autoFocus={true} >{okLabel} + } ); @@ -61,6 +77,7 @@ AlertContent.propTypes = { onCancelClick: PropTypes.func, okLabel: PropTypes.string, cancelLabel: PropTypes.string, + extraButtons: PropTypes.array }; function alert(title, text, onOkClick, okLabel = gettext('OK')) { @@ -76,7 +93,7 @@ function alert(title, text, onOkClick, okLabel = gettext('OK')) { }); } -function confirm(title, text, onOkClick, onCancelClick, okLabel = gettext('Yes'), cancelLabel = gettext('No')) { +function confirm(title, text, onOkClick, onCancelClick, okLabel = gettext('Yes'), cancelLabel = gettext('No'), extras = null) { // bind the modal provider before calling this.showModal(title, (closeModal) => { const onCancelClickClose = () => { @@ -87,8 +104,9 @@ function confirm(title, text, onOkClick, onCancelClick, okLabel = gettext('Yes') onOkClick?.(); closeModal(); }; + const extraButtons = extras?.(closeModal); return ( - + ); }); } diff --git a/web/pgadmin/static/js/helpers/Notifier.jsx b/web/pgadmin/static/js/helpers/Notifier.jsx index c502839bfee..0839708be28 100644 --- a/web/pgadmin/static/js/helpers/Notifier.jsx +++ b/web/pgadmin/static/js/helpers/Notifier.jsx @@ -175,10 +175,10 @@ class Notifier { this.modal.alert(title, text, onOkClick, okLabel); } - confirm(title, text, onOkClick, onCancelClick, okLabel=gettext('Yes'), cancelLabel=gettext('No')) { + confirm(title, text, onOkClick, onCancelClick, okLabel=gettext('Yes'), cancelLabel=gettext('No'), extras=null) { /* Use this if you want to use pgAdmin global notifier. Or else, if you want to use modal inside iframe only then use ModalProvider eg- query tool */ - this.modal.confirm(title, text, onOkClick, onCancelClick, okLabel, cancelLabel); + this.modal.confirm(title, text, onOkClick, onCancelClick, okLabel, cancelLabel, extras); } showModal(title, content, modalOptions) { diff --git a/web/pgadmin/utils/driver/psycopg3/connection.py b/web/pgadmin/utils/driver/psycopg3/connection.py index a81c277b388..2e66b603995 100644 --- a/web/pgadmin/utils/driver/psycopg3/connection.py +++ b/web/pgadmin/utils/driver/psycopg3/connection.py @@ -515,7 +515,8 @@ def _initialize(self, conn_id, **kwargs): cur, "SET DateStyle=ISO; " "SET client_min_messages=notice; " - "SELECT set_config('bytea_output','hex',false) FROM pg_settings" + "SELECT set_config('bytea_output','hex',false)" + " FROM pg_show_all_settings()" " WHERE name = 'bytea_output'; " "SET client_encoding='{0}';".format(postgres_encoding) ) diff --git a/web/pgadmin/utils/preferences.py b/web/pgadmin/utils/preferences.py index 3416c1a78fd..a8432f1ac13 100644 --- a/web/pgadmin/utils/preferences.py +++ b/web/pgadmin/utils/preferences.py @@ -694,3 +694,20 @@ def migrate_user_preferences(self, pid, converter_func): pref.value = converter_func(pref.value) db.session.commit() + + @classmethod + def reset(cls): + """ + reset + Reset the preferences for the current user in the configuration table. + """ + try: + db.session.query(UserPrefTable).filter( + UserPrefTable.uid == current_user.id).delete() + db.session.commit() + except Exception as e: + db.session.rollback() + current_app.logger.exception(e) + return False, str(e) + + return True, None